{"version":3,"file":"js/81-a253b9d5d9a9763b30b6.js","mappings":"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AAEqpO,YAAY,EAAMC,cAAc,EAAMC,UAAU,EAAMrrO,UAAWkrO,EAAIppO,GAAO9B,EAgBnJ,MAAMyyJ,EAAa,CACxBxsD,wBAAyB,CACvB,CACE/pG,GAAI,YACJyD,MAAO,YACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,QACJyD,MAAO,QACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,eACJyD,MAAO,YACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,aACJyD,MAAO,UACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,aACJyD,MAAO,SACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,qBACJyD,MAAO,eACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,QACJyD,MAAO,QACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,SACJyD,MAAO,SACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,SACJyD,MAAO,SACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,WACJyD,MAAO,WACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,gBACJyD,MAAO,gBACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,sBACJyD,MAAO,UACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,GAEX,CACElc,GAAI,EAAAwkL,iBAAiBC,MACrBhhL,MAAO,QACP21C,UAAU,EACVC,WAAW,EACXn9B,SAAS,IAGbta,QAAS,CACP,CACE2H,KAAM,YACN9F,MAAO,aAET,CACE8F,KAAM,QACN9F,MAAO,SAET,CACE8F,KAAM,eACN9F,MAAO,aAET,CACE8F,KAAM,aACN9F,MAAO,WAET,CACE8F,KAAM,aACN9F,MAAO,UAET,CACE8F,KAAM,qBACN9F,MAAO,gBAET,CACE8F,KAAM,QACN9F,MAAO,SAET,CACE8F,KAAM,SACN9F,MAAO,UAET,CACE8F,KAAM,SACN9F,MAAO,UAET,CACE8F,KAAM,WACN9F,MAAO,YAET,CACE8F,KAAM,gBACN9F,MAAO,iBAET,CACE8F,KAAM,sBACN9F,MAAO,WAET,CACE8F,KAAM,QACN9F,MAAO,UAGX4hQ,gBAAiB,CACf,CACE97P,KAAM,YACN9F,MAAO,aAET,CACE8F,KAAM,QACN9F,MAAO,SAET,CACE8F,KAAM,eACN9F,MAAO,aAET,CACE8F,KAAM,aACN9F,MAAO,WAET,CACE8F,KAAM,aACN9F,MAAO,UAET,CACE8F,KAAM,qBACN9F,MAAO,gBAET,CACE8F,KAAM,QACN9F,MAAO,SAET,CACE8F,KAAM,SACN9F,MAAO,UAET,CACE8F,KAAM,WACN9F,MAAO,YAET,CACE8F,KAAM,gBACN9F,MAAO,iBAET,CACE8F,KAAM,sBACN9F,MAAO,YAGX0tC,gBAAiB,CACf,CACE5nC,KAAM,eACN9F,MAAO,aAET,CACE8F,KAAM,aACN9F,MAAO,WAET,CACE8F,KAAM,aACN9F,MAAO,UAET,CACE8F,KAAM,qBACN9F,MAAO,gBAET,CACE8F,KAAM,QACN9F,MAAO,SAET,CACE8F,KAAM,SACN9F,MAAO,UAET,CACE8F,KAAM,SACN9F,MAAO,UAET,CACE8F,KAAM,WACN9F,MAAO,YAET,CACE8F,KAAM,gBACN9F,MAAO,iBAET,CACE8F,KAAM,sBACN9F,MAAO,WAET,CACE8F,KAAM,QACN9F,MAAO,UAGX6hQ,wBAAyB,CACvB,CACE/7P,KAAM,eACN9F,MAAO,aAET,CACE8F,KAAM,aACN9F,MAAO,WAET,CACE8F,KAAM,aACN9F,MAAO,UAET,CACE8F,KAAM,qBACN9F,MAAO,gBAET,CACE8F,KAAM,QACN9F,MAAO,SAET,CACE8F,KAAM,SACN9F,MAAO,UAET,CACE8F,KAAM,WACN9F,MAAO,YAET,CACE8F,KAAM,gBACN9F,MAAO,iBAET,CACE8F,KAAM,sBACN9F,MAAO,YAGX8hQ,qBAAsB,CACpBhkE,cAAc,EACdp5J,YAAY,EACZurI,YAAY,EACZ6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","sources":["webpack://Scout/./app/javascript/components/ sync ^\\.\\/.*$","webpack://Scout/./app/javascript/components/AIStudio/AIInterviewModal/AIInterviewModal.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIInterviewModal/components/LoadingMessage.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIInterviewModal/components/ResponseMessage.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/AIStudioModal.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/AIStudioTeaserModal.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Buttons/OptionalInput.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/FelixNotification.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Footers/DisplayResponseFooter.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Steps/DisplayResponse.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Steps/JobDescriptionInput.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Steps/OptionalInput.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Steps/QuestionsInput.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/Steps/WelcomePage.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/config.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioQuestions/AIStudioForm.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioQuestions/AIStudioQuestions.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioQuestions/AIStudioResponse.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioQuestions/Footers/ResponseFooter.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Footers/ResponseFooter.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Footers/WelcomeFooter.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Graphics/buttonSVGs.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Inputs/JobDescription.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/SmartShare.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Steps/DisplayDescription.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Steps/JobBoardInput.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Steps/ResponseStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Steps/SocialInputStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Steps/SocialMediaPreview.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/Steps/WelcomePage.tsx","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/config.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/ExpandedSummaryModal.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/Inputs/Inclusions.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/InsightsModal/InputStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/InsightsModal/InsightsModal.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/InsightsModal/ResponseStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/EditStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/FollowUpEmail.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/InputStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/HomeStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/InputTab.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/SavedQuestionsTab.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/InterviewQuestions.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/QuestionsModal/ResponseStep.tsx","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/SummaryPopover.tsx","webpack://Scout/./app/javascript/components/AIStudio/NewJobIntegration/AIStudioNewJob.tsx","webpack://Scout/./app/javascript/components/AIStudio/NewJobIntegration/QuestionsPreview.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Buttons/EmailButton.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Buttons/ExportButton.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Buttons/ToggleButtons.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/CopyableQuestions.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/DisplayHTMLCollapsible.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/DisplayHTMLViewOnly.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Footers/DynamicFooter.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Graphics/FelixSVG.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Inputs/PositionTitle.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Inputs/PreferredSkills.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Inputs/StyledDropdown.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Inputs/Switch.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/SelectableCopyableQuestions.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/StaticQuestionsPreview.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Steps/ErrorScreen.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Steps/LoadingResponse.tsx","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/sharedConfig.tsx","webpack://Scout/./app/javascript/components/Calendly/AddToCalendlyEventModal/index.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/Modal.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/CompleteModal/index.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step1/Step1.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step2/EventType.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step2/Step2.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step3/Step3.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step4/OverviewItem.tsx","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step4/Step4.tsx","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/BadAPIModal.tsx","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/ScheduledEvents.tsx","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/components/EventItem/index.tsx","webpack://Scout/./app/javascript/components/CareersPortalReport/index.tsx","webpack://Scout/./app/javascript/components/CareersPortalSocialPreview/index.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/EngageAISearch.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/EngageSearchBar.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/EngageSearchTableActions.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/EngageSearchTableRows.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/EngageTableActionComponents.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/Modals/ActionDrawer/ActionDrawerModals.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/Modals/ActionDrawer/AddToCandidatePool.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/Modals/AddCurrentSearch.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/Modals/TLPMatchModal/EditBooleanStep.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/Modals/TLPMatchModal/SelectTLPStep.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/Modals/TLPMatchModal/TLPMatchModal.tsx","webpack://Scout/./app/javascript/components/NewEngage/AISearch/SearchFilters.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/Analytics/Analytics.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/Analytics/OpenEmailStatistics.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/Analytics/StatusStatistics.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/Applications/ApplicationTableRows.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/Applications/Applications.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/Applications/config.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/CandidatePoolAnalytics.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePoolAnalytics/EmailTemplates/EmailTemplates.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/CandidatePools.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/CandidatePoolsActionComponents.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/CandidatePoolsTableRows.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/ActionDrawerModals.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/CandidatePoolsTableRows.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/CandidateTabTableActionComponents.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/CandidatesTab.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/EmailTab.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/EmailsTableRows.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/IndividualCandidatePoolModal.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/candidatesConfig.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CandidatePool/emailConfig.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CreateNewPoolButton.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/Modals/CreateNewPoolModal.tsx","webpack://Scout/./app/javascript/components/NewEngage/CandidatePools/config.tsx","webpack://Scout/./app/javascript/components/NewEngage/Engage.tsx","webpack://Scout/./app/javascript/components/NewEngage/Graphics/SelectJobSVG.tsx","webpack://Scout/./app/javascript/components/NewEngage/SharedComponents/AndOrToggle.tsx","webpack://Scout/./app/javascript/components/NewEngage/SharedComponents/BooleanEditor.tsx","webpack://Scout/./app/javascript/components/NewEngage/SharedComponents/Modals/EmailCandidate.tsx","webpack://Scout/./app/javascript/components/NewEngage/SharedComponents/Modals/ExternalEmail.tsx","webpack://Scout/./app/javascript/components/NewEngage/Tabs/TabPanel.tsx","webpack://Scout/./app/javascript/components/NewEngage/Tabs/TabSelector.tsx","webpack://Scout/./app/javascript/components/NewEngage/config.tsx","webpack://Scout/./app/javascript/components/NewLogin/NewLogin.tsx","webpack://Scout/./app/javascript/components/NewLogin/utils/FadeChildrenVisibility.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Application.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/ApplicationBetaButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/ApplicationHeader.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/ApplicationStatusPopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/ExportButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Logos/Logos.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/AlayaCare.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/AlreadyExportedModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Cognology/Cognology.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyAfterApprovalModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyApprovalDetails.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyStep1.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Cognology/CognologySummary.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyWaitingForApprovalModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Fit2Work.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/FoundU.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Hronboard.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Mvs.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/OnboardExpress.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Referoo.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Roubler.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/SparkHire.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/Testgrid.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/UnusualActivity.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Modals/XRef.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/OldIntegrationsLink.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/Fit2WorkRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/FoundURecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/MvsRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/ReferooRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/SparkHireRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/TestgridRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/Records/XrefRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/UpdateStatusIcon.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/AddEditTask.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/AddForm.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/AddToEvent.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/AttachmentPreviewModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/EmailBodyComponent.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/EmailsDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/FormResponseInfo.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/FormsDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/NotificationOptionsSwitch.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/TimestampTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/TimestampTableForm.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/Components/TimestampTableRow.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/CreateApproval.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/DeleteApplication.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/DeleteAttachment.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/DeleteFormResponse.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/EditFormResponseModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/EmailExternal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/ExitConfirmationModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/ExportToOnboard.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/InviteToTimeslot.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/MissingPlaceholdersConfirmationModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/MoveApplicationModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/SearchIndex.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/SendEmail.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/SendForm.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/SendSms.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/TaskWorkflow.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/MoreOptionsPopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/AISummary.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/AISummaryNoAccess.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Actions.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/AdditionalInfo.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/AudioPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/ImagePreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/PdfPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/TextPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/VideoPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/WordPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Attachments/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Icons.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Questionnaire.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/QuestionsAndRatings.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Rating.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/RatingCard.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Ratings.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Responses.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/Section/Section.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/SortableSection.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/OverviewTab/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/SmartFormsTab/FormResponseActions.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/SmartFormsTab/FormResponseDetails.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/SmartFormsTab/SmartFormsTab.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/TasksAndEventsTab/Tasks/Task.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/TasksAndEventsTab/Tasks/TasksTab.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/TasksAndEventsTab/Tasks/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/TasksAndEventsTab/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Application/index.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/ActionModal.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/AnswersView.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/ApprovalForm.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/ApprovalFormPage.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/ApproversTable.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/AvailabilityAnswer.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/DocumentViewer.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/EditApproverModal.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForms.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalFormsTab.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalFormsTable.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalManagers/ApprovalManagers.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalManagers/ApprovalManagersTable.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalManagers/NewApprovalManager.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalManagers/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLink.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLinks.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLinksTable.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplate/ApprovalTemplateFields.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/AdvancedTab.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/ApprovalTemplateSettings.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/ApproversListAutoComplete.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/ApproversListText.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/DefaultApproversTab.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/FormTitleTab.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/TemplateTitleTab.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/ApprovalTemplates.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/ApprovalTemplatesTable.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/FilterDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/MoveApprovalTemplate.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/NotePopover.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ArchivedFormsAndTemplates/ArchivedFormsAndTemplates.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Dropdowns/DndFieldDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Dropdowns/FieldDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Dropdowns/FilterDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Dropdowns/SortableField.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NewApproval/NewApproval.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NewApproval/NewApprovalModal.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NewApproval/NewApprovalModalFromCandidate.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NewApprovalPublicLink/NewApprovalPublicLinkModal.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NotePopover.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Modals/AddSystemField.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Modals/AvailabilityPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Modals/BooleanFieldSwitch.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Modals/NewEmailTemplateField.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Modals/NewField.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Modals/SortableChoice.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/NewSystemFieldSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/QuestionCardSensor.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/Questions.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/SortableItem.tsx","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/ActivitiesTab.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/AddRecord.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/Candidate.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateApplicationsTableRows.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateIcon.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTags.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTasks/AddEditTaskModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTasks/CandidateTask.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTasks/CandidateTasksTab.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTasks/EmptyTab.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTasks/TaskWorkflowModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/CandidateTasks/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/MergeCandidates.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/Notepad.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/ProfileTab.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/config.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidate/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidates/Candidates.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidates/CandidatesTableRows.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidates/DeleteCandidate.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidates/EditCandidate.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidates/config.tsx","webpack://Scout/./app/javascript/components/NewUI/Candidates/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Buttons/BetaButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Buttons/CreateButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Buttons/LoadingButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Buttons/StepperLeftButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Buttons/StepperRightButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Charts/DonutChart.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Charts/LineChart.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/AddressInput.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/AttachmentSelectorAndPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/AttachmentsPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/AutocompleteInput.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/AvailabilityFieldQuestion.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/CircularProgressWithLabel.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/EmptyState.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormCheckboxGroup.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormRadioButtonGroup.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormRadioButtonWithTextInputGroup.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormRankField.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormSelectField.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormSelectWithIconField.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/FormTextField.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/InfoBox.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/JobAdSuccessDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/MultiSelect.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/MultiSelectWithCreate.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/MultiTagInput.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/MultipleDatesPicker.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/SelectField.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/SingleDatePicker.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/SmsTemplateComponent.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/StyledSnackbar.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/TagList/TagList.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/TextEditor.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/VirtualizedAutocomplete.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/VirtualizedGroupedAutocomplete.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericModal/ModalFooterButtons.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericModal/StyledModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Dropdowns/ColumnSettings.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Dropdowns/Filters.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Dropdowns/SortableField.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/ExportCsvButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Filters/DateRangeFilter.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Filters/MultiSelectFilter.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Filters/RadiusSearchFilter.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/GenericTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/GenericTableActions.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/GenericTableBody.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/GenericTableHead.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/GenericTablePagination.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/ItemActionsDrawer.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/LoadingTableItems.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/NoItemsMessage.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/SearchInput.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TableArrows.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TableCells/ExpandableLinkedTags.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TableCells/FormattedDate.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TableCells/NotesWithSubjectLine.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TablePopovers/AddNoteWithSubjectLine.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TablePopovers/AttachmentsList.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TablePopovers/MoreOptionsList.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TotalSelectedIndicator.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/TotalSelectedIndicatorWithActions.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/genericTableReducer.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Graphics/FileTickSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Graphics/UploadSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Icons/Icons.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Modals/ConfirmationDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Modals/DownloadModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Modals/FilePreviewModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Modals/GenericDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Modals/WarningDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ActionButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ActionPopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/AdTypePopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Broadbean/AdTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Broadbean/BroadbeanAds.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/CouncilJobs/AdTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/CouncilJobs/ApproveSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/CouncilJobs/CouncilJobsAd.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/CouncilJobs/CouncilJobsAds.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/CouncilJobs/NewCouncilJobsAd/NewCouncilJobsAd.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ExpiryDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ExpiryPopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/FilterButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/GenericDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Idibu/IdibuAds.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Indeed/AdTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Indeed/IndeedAds.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Seek/AdTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Seek/CopyAdIdButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Seek/CreateAdDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Seek/SeekAds.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/TableSkeleton.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/AdTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/ViewJobsAds.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/OptionToggleGroup/OptionToggleGroup.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/PreviewTable/TableBody.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/PreviewTable/TableHeader.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/PreviewTable/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/AttachmentAndGoogleDriveSelector.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/AttachmentSelector.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/DebounceInput.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/DocTypeIcon.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/HtmlEditor.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/QuestionFieldGenerator.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/QuestionFieldViewer.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/RequisitionInfoViewer.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/SingleAttachmentSelector.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/formatUserPermissions.tsx","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/useWebSockets.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/Dashboard.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/assets/Banner.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/assets/EventCircle.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/KpiBanner.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/KpiItem.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/Loader.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/NewApplicants.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/PinnedJobs.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/TasksDashboard/TaskItem/TaskItem.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/TasksDashboard/TasksDashboard.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/TasksDashboard/components/TaskItem.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/UpcomingEvents/UpcomingEvents.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/UpcomingEvents/components/AttendeeList.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/UpcomingEvents/components/EventItem.tsx","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/UpcomingEvents/copyEventLinks.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/AIStudio/AIStudioSettings.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/AIStudio/QuestionsList.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/GoogleConversionScript/GoogleScript.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/PanelWorkflow/PanelWorkflow.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/RequisitionInfo/RequisitionInfo.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/Revolve/Revolve.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/TestGrid/NoTests.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/TestGrid/TestGrid.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/TestGrid/TestGridModal.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoForward/AutoForward.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoForward/NewAutoForward.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoReply/AutoReply.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoReply/NewAutoReply.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoSMSForward/AutoSMSForward.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoSMSForward/NewAutoSMSForward.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoSMSReply/AutoSMSReply.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoSMSReply/NewAutoSMSReply.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoStatuses/AutoStatuses.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoStatuses/NoAutoStatusSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoStatuses/QuestionBased.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/AutoStatuses/RatingBased.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/StatusTransitions/TimeBased.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/helpers/getBodyFromSmsTemplateValue.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/shared/CancelButton.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/shared/DelaySelect.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/shared/DelaySelectWrapper.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/shared/ImmediateChangesNotice.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Description/Description.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/EditJob.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/EditJobToggleLeftSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/EditJobToggleRightSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/General/Classifications/Classifications.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/General/General.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/HRQuestions.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/Modals/AddSystemField.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/Modals/NewField.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/NewSystemFieldSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/NoQuestionSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/QuestionCardSensor.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/SortableItem.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/Modals/AddSystemField.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/Modals/NewField.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/Modals/SortableChoice.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/NewSystemFieldSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/NoQuestionArrowSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/NoQuestionSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/QuestionCardSensor.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/QuestionList.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/Questions.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/SortableItem.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Sources/AccountClockIcon.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Sources/Sources.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Sources/SourcesIconSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/Template/Template.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/index.tsx","webpack://Scout/./app/javascript/components/NewUI/EditJob/shared/SkeletonTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/AddTask/AddTasks.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/CeridianDayforce/CeridianDayforce.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/MoveJob/MoveJob.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/RatingSet/RatingSet.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/Revisions/Revisions.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/StartWorkflow/StartWorkFlow.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Applications.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/ApplicationsActionsPanel.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/ApplicationsTable.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/CustomIcons.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Dropdowns/FieldDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Dropdowns/FilterDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Dropdowns/SortableField.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/EditableNote.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/AddToEvent.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/CSVExport.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/ChangeStatus.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/EmailCandidates.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/ExportFoundu.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/ExportPDF.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/ExportToOnboard.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/ExternalEmail.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/InviteToTimeslot.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/MoveApplications.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/NewApplication.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/SMSCandidates.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Modals/TempCSVExport.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/NotePopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/SelectedApplicants.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Attachments/Attachments.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/CandidateAttachments/CandidateAttachments.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/CandidateAttachments/SortableRow.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/ClicksNoBackgroundSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/EmailPreviewModal.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/EmailStatus.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/NoEmailStatusSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/StatusTypeIcon.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/BouncedSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/ClicksSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/DeliveredSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/OpenedSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/Statistics.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/UnsubscribedSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Graphs/ChartWidget.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Graphs/DatePicker.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Job.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Multiposter.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Notes/NoteList.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Notes/Notes.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Notes/SadNoteSVG.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Widgets/ApplicationsAndViews.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Widgets/CreationExpiry.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Widgets/JobInformation.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/Widgets/Subcontainer.tsx","webpack://Scout/./app/javascript/components/NewUI/Job/index.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/Dropdowns/Export.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/Dropdowns/FieldDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/Dropdowns/FilterDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/Dropdowns/SortableField.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/Jobs.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/ArchivedJobs.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/CurrentJobs.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/CurrentJobsTableHeader.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/CurrentJobsTableRow.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/NoJobs.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/NotesPopover.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/TableSkeleton.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/NewJob/Attachment/Attachments.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/NewJob/NewJob.tsx","webpack://Scout/./app/javascript/components/NewUI/Jobs/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Components/Breadcrumbs.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Components/ProfileDropdown/ProfileDropdown.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Components/ProfileDropdown/ProfileDropdownPopper.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Components/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Components/ShowRightMenu.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Components/SwitchEntityDialog.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/Header.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Assets/AppsIcon.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/AppMenu/AppMenu.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/AppMenu/AppMenuItems.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/ExpandCollapseButton.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/NavigationItems/CollapsedNavigationChildren.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/NavigationItems/NavigationChildren.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/NavigationItems/NavigationItems.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Components/NavigationItems/NavigationParent.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/Navbar.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/ActivityFeed/ActivityFeed.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/ActivityFeed/ActivityFeedItem.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/RecentlyViewed/RecentlyViewed.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/RecentlyViewed/RecentlyViewedItem.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/Widgetsbar.tsx","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/WidgetsbarWrapper.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/EditFormPage.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Questions/Modals/AddSystemField.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Questions/Modals/ImportFields.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Questions/Modals/NewField.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Questions/Questions.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Questions/SortableItem.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Sample/ListItem.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Sample/SampleList.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Search.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/SmartFormFields.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/SmartFormModal.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/SmartFormPreview.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/SmartFormPreviewPage.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/SmartForms.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/SmartFormsTable.tsx","webpack://Scout/./app/javascript/components/NewUI/SmartForms/index.tsx","webpack://Scout/./app/javascript/components/NewUI/utils/scroll-to-element.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/CreateEvent.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/EventProgress/DateDisplay.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/EventProgress/FirstStep.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/EventProgress/GroupedAvatars.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/EventProgress/ReviewStep.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/EventProgress/SecondStep.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/EventCreated.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/ListView.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/ScoutCalendar.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/Settings.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/ViewEvent/ActionButtons.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/ViewEvent/ActionModal.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/ViewEvent/SelectedCandidatesTable.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/ViewEvent/index.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/helper.tsx","webpack://Scout/./app/javascript/components/ScoutCalendar/index.tsx","webpack://Scout/./app/javascript/components/TestActionCable.tsx","webpack://Scout/./app/javascript/components/ThemeContext/ThemeContext.tsx","webpack://Scout/./app/javascript/components/WorkatoNotification.tsx","webpack://Scout/./app/javascript/components/Xref/XrefDialogue.tsx","webpack://Scout/./app/javascript/components/Xref/XrefDialogueButton.tsx","webpack://Scout/./app/javascript/components/Xref/index.tsx","webpack://Scout/./app/javascript/components/admin/integrations/api.jsx","webpack://Scout/./app/javascript/components/admin/integrations/index.jsx","webpack://Scout/./app/javascript/components/admin/integrations/info/show.jsx","webpack://Scout/./app/javascript/components/admin/integrations/new.jsx","webpack://Scout/./app/javascript/components/admin/integrations/show.jsx","webpack://Scout/./app/javascript/components/admin/menu.jsx","webpack://Scout/./app/javascript/components/admin/paying_users/index.jsx","webpack://Scout/./app/javascript/components/admin/services/api.jsx","webpack://Scout/./app/javascript/components/admin/services/index.jsx","webpack://Scout/./app/javascript/components/admin/services/show.jsx","webpack://Scout/./app/javascript/components/admin/services/subservices/show.jsx","webpack://Scout/./app/javascript/components/admin/submenu.jsx","webpack://Scout/./app/javascript/components/admin/video_interview/index.jsx","webpack://Scout/./app/javascript/components/admin/video_interview/upload.jsx","webpack://Scout/./app/javascript/components/admin/video_interview/video_bookmarks_helper.jsx","webpack://Scout/./app/javascript/components/admin/video_interview/video_interview_helper.jsx","webpack://Scout/./app/javascript/components/custom_integrations/integration_settings.jsx","webpack://Scout/./app/javascript/components/custom_integrations/integrations.jsx","webpack://Scout/./app/javascript/components/mvs_request_test.jsx","webpack://Scout/./app/javascript/components/saved_search/item.jsx","webpack://Scout/./app/javascript/components/saved_search/table.jsx","webpack://Scout/./app/javascript/components/scout-trainings/index.jsx","webpack://Scout/./app/javascript/components/scout-trainings/portal-button.jsx","webpack://Scout/./app/javascript/components/scout-trainings/table.jsx","webpack://Scout/./app/javascript/components/scout/EventStatusSelect.tsx","webpack://Scout/./app/javascript/components/scout/add_button.jsx","webpack://Scout/./app/javascript/components/scout/autocomplete.jsx","webpack://Scout/./app/javascript/components/scout/nested_autocomplete.jsx","webpack://Scout/./app/javascript/components/scout/select.jsx","webpack://Scout/./app/javascript/components/scout/table/fields/control/link_control.jsx","webpack://Scout/./app/javascript/components/scout/table/fields/custom_control.jsx","webpack://Scout/./app/javascript/components/scout/table/fields/data.jsx","webpack://Scout/./app/javascript/components/scout/table/fields/inplace_input_editor.jsx","webpack://Scout/./app/javascript/components/scout/table/fields/link.jsx","webpack://Scout/./app/javascript/components/scout/table/filter.jsx","webpack://Scout/./app/javascript/components/scout/table/headers/callback.jsx","webpack://Scout/./app/javascript/components/scout/table/headers/data.jsx","webpack://Scout/./app/javascript/components/scout/table/pagination.jsx","webpack://Scout/./app/javascript/components/scout/table/row.jsx","webpack://Scout/./app/javascript/components/scout/table/table.jsx","webpack://Scout/./app/javascript/components/scout/tags.jsx","webpack://Scout/./app/javascript/components/search_results/filtering_options_table.jsx","webpack://Scout/./app/javascript/components/search_results/header.jsx","webpack://Scout/./app/javascript/components/search_results/header_row.jsx","webpack://Scout/./app/javascript/components/search_results/item.jsx","webpack://Scout/./app/javascript/components/search_results/pagination.jsx","webpack://Scout/./app/javascript/components/search_results/search_box.jsx","webpack://Scout/./app/javascript/components/search_results/table.jsx","webpack://Scout/./app/javascript/components/search_results/table_with_spinner.jsx","webpack://Scout/./app/javascript/components/shared/accordion.jsx","webpack://Scout/./app/javascript/components/shared/commonStyles.jsx","webpack://Scout/./app/javascript/components/ActivityFeed/ActivityFeed.js","webpack://Scout/./app/javascript/components/ActivityFeed/index.js","webpack://Scout/./app/javascript/components/ActivityFeed/styles.js","webpack://Scout/./app/javascript/components/CareersPortalSocialPreview/useStyles.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdEditor/AdEditor.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdEditor/Steps/Step1.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdEditor/Steps/Step2.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdEditor/Steps/Step3.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdEditor/index.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdEditor/useStyles.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdList/AdList.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdList/index.js","webpack://Scout/./app/javascript/components/IndeedIntegration/AdList/useStyles.js","webpack://Scout/./app/javascript/components/IndeedIntegration/SponsoredJobEditor/SponsoredJobEditor.js","webpack://Scout/./app/javascript/components/IndeedIntegration/SponsoredJobEditor/index.js","webpack://Scout/./app/javascript/components/IndeedIntegration/components/AdTable/AdTable.js","webpack://Scout/./app/javascript/components/IndeedIntegration/components/AdTable/index.js","webpack://Scout/./app/javascript/components/IndeedIntegration/components/AdTable/useStyles.js","webpack://Scout/./app/javascript/components/IndeedIntegration/components/GenericDialog/GenericDialog.js","webpack://Scout/./app/javascript/components/IndeedIntegration/components/GenericDialog/index.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiCard/KpiCard.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiCard/index.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiCard/styles.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiDashboard.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiSettings/KpiSettings.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiSettings/KpiSettingsCard/KpiSettingsCard.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiSettings/KpiSettingsCard/index.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiSettings/index.js","webpack://Scout/./app/javascript/components/KpiDashboard/KpiSettings/styles.js","webpack://Scout/./app/javascript/components/KpiDashboard/index.js","webpack://Scout/./app/javascript/components/KpiDashboard/styles.js","webpack://Scout/./app/javascript/components/NewUI/Components/Charts/DonutTooltip.js","webpack://Scout/./app/javascript/components/NewUI/Components/Charts/LineTooltip.js","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/StepperComponent.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/AdEditor.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/Steps/Step1.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/Steps/Step2.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/Steps/Step3.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/ViewJobs/useStyles.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/handleDraftValue.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/handleNext.js","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/salaryHelper.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/AdEditor.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/AdProductSelection.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/AdSelection.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/ExitConfirmationDialog.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/ExitExistingDialogContent.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/ExitNewDialogContent.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/PayDetails.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/SeekBillingReference.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Components/WorkTypes.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Steps/Step1.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Steps/Step2.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Steps/Step3.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/Steps/Step4.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/UtilComponents/TextAreaWithCounter.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/index.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/useDialogStyles.js","webpack://Scout/./app/javascript/components/SeekAd/AdEditor/useStyles.js","webpack://Scout/./app/javascript/components/SeekAd/SeekAd.js","webpack://Scout/./app/javascript/components/SeekAd/index.js","webpack://Scout/./app/javascript/components/StatusCategories/API.js","webpack://Scout/./app/javascript/components/StatusCategories/CategoryDeck.js","webpack://Scout/./app/javascript/components/StatusCategories/StatusCategories.js","webpack://Scout/./app/javascript/components/StatusCategories/index.js","webpack://Scout/./app/javascript/components/StatusCategories/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/TextUsModal.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/Messenger.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateDetails/CandidateDetails.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateDetails/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateDetails/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateFilter/CandidateFilter.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateFilter/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateFilter/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateListItem/CandidateListItem.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateListItem/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/CandidateListItem/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatBox/ChatBox.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatBox/components/SignatureToggle.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatBox/components/TagPicker.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatBox/components/TemplatePicker.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatBox/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatBox/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatWindow/ChatWindow.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatWindow/components/ChatItem.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatWindow/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/components/ChatWindow/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/Messenger/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/components/SelectRecipients/SelectRecipients.js","webpack://Scout/./app/javascript/components/TextUsModal/components/SelectRecipients/index.js","webpack://Scout/./app/javascript/components/TextUsModal/components/SelectRecipients/useStyles.js","webpack://Scout/./app/javascript/components/TextUsModal/index.js","webpack://Scout/./app/javascript/components/TextUsModal/useStyles.js","webpack://Scout/./app/javascript/components/admin/data-source.js","webpack://Scout/./app/javascript/components/inputs/Checkbox/Checkbox.js","webpack://Scout/./app/javascript/components/inputs/Checkbox/index.js","webpack://Scout/./app/javascript/components/inputs/Select/Select.js","webpack://Scout/./app/javascript/components/inputs/Select/index.js","webpack://Scout/./app/javascript/components/inputs/TextInput/TextInput.js","webpack://Scout/./app/javascript/components/inputs/TextInput/index.js","webpack://Scout/./app/javascript/components/scout/service-interface-client.js","webpack://Scout/./app/javascript/lib/Api.js","webpack://Scout/./app/javascript/server_rendering.js","webpack://Scout/./app/javascript/components/AIStudio/AIInterviewModal/constants.ts","webpack://Scout/./app/javascript/components/AIStudio/AIInterviewModal/styles.ts","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/reducer.ts","webpack://Scout/./app/javascript/components/AIStudio/AIStudioModal/styles.ts","webpack://Scout/./app/javascript/components/AIStudio/AIStudioQuestions/styles.ts","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/API.ts","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/reducer.ts","webpack://Scout/./app/javascript/components/AIStudio/AIStudioSmartShare/styles.ts","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/config.ts","webpack://Scout/./app/javascript/components/AIStudio/ApplicationSummaries/styles.ts","webpack://Scout/./app/javascript/components/AIStudio/NewJobIntegration/styles.ts","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Utility/dismissNotification.ts","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/Utility/questionStringToArray.ts","webpack://Scout/./app/javascript/components/AIStudio/SharedComponents/styles.ts","webpack://Scout/./app/javascript/components/Calendly/API.ts","webpack://Scout/./app/javascript/components/Calendly/AddToCalendlyEventModal/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/components/CompleteModal/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step1/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step2/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step3/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/components/Steps/Step4/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/index.ts","webpack://Scout/./app/javascript/components/Calendly/Modal/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/components/EventItem/useStyles.ts","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/constants.ts","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/index.ts","webpack://Scout/./app/javascript/components/Calendly/ScheduledEvents/useStyles.ts","webpack://Scout/./app/javascript/components/CareersPortalReport/styles.ts","webpack://Scout/./app/javascript/components/NewEngage/SharedComponents/booleanQueryParser.ts","webpack://Scout/./app/javascript/components/NewEngage/SharedComponents/styles.ts","webpack://Scout/./app/javascript/components/NewEngage/helper.ts","webpack://Scout/./app/javascript/components/NewEngage/reducer.ts","webpack://Scout/./app/javascript/components/NewEngage/styles.ts","webpack://Scout/./app/javascript/components/NewLogin/API.ts","webpack://Scout/./app/javascript/components/NewLogin/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Application/API.ts","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/helper.ts","webpack://Scout/./app/javascript/components/NewUI/Application/IntegrationsTab/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Application/Modals/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Application/SmartFormsTab/get-answer-attributes.ts","webpack://Scout/./app/javascript/components/NewUI/Application/SmartFormsTab/get-answer-value.ts","webpack://Scout/./app/javascript/components/NewUI/Application/SmartFormsTab/validate-form-submission.ts","webpack://Scout/./app/javascript/components/NewUI/Application/config.ts","webpack://Scout/./app/javascript/components/NewUI/Application/constants/zoomSettings.ts","webpack://Scout/./app/javascript/components/NewUI/Application/helper.ts","webpack://Scout/./app/javascript/components/NewUI/Application/reducer.ts","webpack://Scout/./app/javascript/components/NewUI/Application/styles.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/API.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalForm/styles.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplateSettings/styles.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/ApprovalTemplates/config.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NewApproval/styles.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/NewApprovalPublicLink/styles.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/Questions/styles.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/config.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/helper.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/index.ts","webpack://Scout/./app/javascript/components/NewUI/ApprovalForms/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Candidate/API.ts","webpack://Scout/./app/javascript/components/NewUI/Candidate/reducer.ts","webpack://Scout/./app/javascript/components/NewUI/Candidate/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Candidates/API.ts","webpack://Scout/./app/javascript/components/NewUI/Candidates/reducer.ts","webpack://Scout/./app/javascript/components/NewUI/Candidates/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Charts/helper.ts","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/TagList/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/CustomUIElements/sharedClasses.ts","webpack://Scout/./app/javascript/components/NewUI/Components/GenericModal/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/Dropdowns/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/tableHelper.ts","webpack://Scout/./app/javascript/components/NewUI/Components/GenericTable/utilities.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Modals/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/CouncilJobs/NewCouncilJobsAd/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/Seek/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Multiposter/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/PreviewTable/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/HtmlEditorFonts.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/callAPI.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/data/index.spec.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/diff/diff.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/case.spec.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/case.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/translate.spec.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/translate.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/translateCase.spec.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/translateCase.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/translateWord.spec.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/convertToLocalEnglish/internals/translateWord.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/copyToClipboard.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/countryParser.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/emailIsValid.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/handleAPIRequest.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/handleRichCopy.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/humanFileSize.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/immutableRemove.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/secondsToString.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/stringToSeconds.ts","webpack://Scout/./app/javascript/components/NewUI/Components/Utilities/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Dashboard/API.ts","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/TasksDashboard/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Dashboard/components/UpcomingEvents/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Dashboard/index.ts","webpack://Scout/./app/javascript/components/NewUI/Dashboard/styles.ts","webpack://Scout/./app/javascript/components/NewUI/EditJob/Advanced/styles.ts","webpack://Scout/./app/javascript/components/NewUI/EditJob/Automation/styles.ts","webpack://Scout/./app/javascript/components/NewUI/EditJob/HRQuestions/styles.ts","webpack://Scout/./app/javascript/components/NewUI/EditJob/Questions/styles.ts","webpack://Scout/./app/javascript/components/NewUI/EditJob/styles.ts","webpack://Scout/./app/javascript/components/NewUI/EditJob/tabIndexUtils.ts","webpack://Scout/./app/javascript/components/NewUI/Job/API.ts","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/AddTask/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/CeridianDayforce/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/MoveJob/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/RatingSet/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/Revisions/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/ActionModals/StartWorkflow/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/config.ts","webpack://Scout/./app/javascript/components/NewUI/Job/Applications/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/Attachments/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/CandidateAttachments/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/Widgets/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/EmailStatus/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/Graphs/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/Notes/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/Widgets/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Job/types.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/API.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/Dropdowns/useStyles.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/JobsTable/useStyles.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/NewJob/Attachment/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/NewJob/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/config.ts","webpack://Scout/./app/javascript/components/NewUI/Jobs/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Layout/Header/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/config.ts","webpack://Scout/./app/javascript/components/NewUI/Layout/Navbar/styles.ts","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/config.ts","webpack://Scout/./app/javascript/components/NewUI/Layout/Widgetsbar/styles.ts","webpack://Scout/./app/javascript/components/NewUI/SmartForms/API.ts","webpack://Scout/./app/javascript/components/NewUI/SmartForms/Questions/styles.ts","webpack://Scout/./app/javascript/components/NewUI/SmartForms/config.ts","webpack://Scout/./app/javascript/components/NewUI/SmartForms/reducer.ts","webpack://Scout/./app/javascript/components/NewUI/SmartForms/styles.ts","webpack://Scout/./app/javascript/components/NewUI/SmartForms/types.ts","webpack://Scout/./app/javascript/components/NewUI/constants.ts","webpack://Scout/./app/javascript/components/NewUI/helpers/uiPreferencesHelpers.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useApplicationsForTask.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useDispatch.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useDragScroll.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useEmailTemplatesOptions.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useEvents.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useFieldChoiceList.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useInputValidation.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useIsOverflow.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useJobsForTask.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/usePlaceholders.ts","webpack://Scout/./app/javascript/components/NewUI/hooks/useThrottle.ts","webpack://Scout/./app/javascript/components/NewUI/shared/commonStyles.ts","webpack://Scout/./app/javascript/components/NewUI/shared/styleClasses.ts","webpack://Scout/./app/javascript/components/NewUI/utils/attachment-type.ts","webpack://Scout/./app/javascript/components/NewUI/utils/device-detect.ts","webpack://Scout/./app/javascript/components/NewUI/utils/emoji-checker.ts","webpack://Scout/./app/javascript/components/NewUI/utils/formatToUserTimeZone.ts","webpack://Scout/./app/javascript/components/NewUI/utils/local-storage.ts","webpack://Scout/./app/javascript/components/NewUI/utils/sortable-column.ts","webpack://Scout/./app/javascript/components/RecruitApiClient.ts","webpack://Scout/./app/javascript/components/ScoutCalendar/API.ts","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/EventProgress/styles.ts","webpack://Scout/./app/javascript/components/ScoutCalendar/CreateEvent/styles.ts","webpack://Scout/./app/javascript/components/ScoutCalendar/ViewEvent/styles.ts","webpack://Scout/./app/javascript/components/ScoutCalendar/reducer.ts","webpack://Scout/./app/javascript/components/ScoutCalendar/styles.ts","webpack://Scout/./app/javascript/components/SeekAd/hooks/useInitSeekAd.ts","webpack://Scout/./app/javascript/components/SeekAd/hooks/usePreviewSeekAd.ts","webpack://Scout/./app/javascript/components/SeekAd/hooks/useSeekAccounts.ts","webpack://Scout/./app/javascript/components/SeekAd/hooks/useSeekCurrencies.ts","webpack://Scout/./app/javascript/components/SeekAd/hooks/useSeekGlobalData.ts","webpack://Scout/./app/javascript/components/SeekAd/hooks/useSeekPayTypes.ts","webpack://Scout/./app/javascript/components/TableStyles.ts","webpack://Scout/./app/javascript/components/ThemeContext/ThemeObject.ts","webpack://Scout/./app/javascript/components/ThemeContext/constants.ts","webpack://Scout/./app/javascript/components/shared/permissionHelpers.ts","webpack://Scout/./node_modules/moment/locale/ sync ^\\.\\/.*$"],"sourcesContent":["var map = {\n\t\"./AIStudio/AIInterviewModal/AIInterviewModal\": 917,\n\t\"./AIStudio/AIInterviewModal/AIInterviewModal.tsx\": 917,\n\t\"./AIStudio/AIInterviewModal/components\": 82154,\n\t\"./AIStudio/AIInterviewModal/components/\": 82154,\n\t\"./AIStudio/AIInterviewModal/components/LoadingMessage\": 65089,\n\t\"./AIStudio/AIInterviewModal/components/LoadingMessage.tsx\": 65089,\n\t\"./AIStudio/AIInterviewModal/components/ResponseMessage\": 13120,\n\t\"./AIStudio/AIInterviewModal/components/ResponseMessage.tsx\": 13120,\n\t\"./AIStudio/AIInterviewModal/components/index\": 82154,\n\t\"./AIStudio/AIInterviewModal/components/index.ts\": 82154,\n\t\"./AIStudio/AIInterviewModal/constants\": 49120,\n\t\"./AIStudio/AIInterviewModal/constants.ts\": 49120,\n\t\"./AIStudio/AIInterviewModal/styles\": 8871,\n\t\"./AIStudio/AIInterviewModal/styles.ts\": 8871,\n\t\"./AIStudio/AIStudioModal/AIStudioModal\": 26091,\n\t\"./AIStudio/AIStudioModal/AIStudioModal.tsx\": 26091,\n\t\"./AIStudio/AIStudioModal/AIStudioTeaserModal\": 82487,\n\t\"./AIStudio/AIStudioModal/AIStudioTeaserModal.tsx\": 82487,\n\t\"./AIStudio/AIStudioModal/Buttons/OptionalInput\": 82470,\n\t\"./AIStudio/AIStudioModal/Buttons/OptionalInput.tsx\": 82470,\n\t\"./AIStudio/AIStudioModal/FelixNotification\": 47271,\n\t\"./AIStudio/AIStudioModal/FelixNotification.tsx\": 47271,\n\t\"./AIStudio/AIStudioModal/Footers/DisplayResponseFooter\": 13859,\n\t\"./AIStudio/AIStudioModal/Footers/DisplayResponseFooter.tsx\": 13859,\n\t\"./AIStudio/AIStudioModal/Steps/DisplayResponse\": 56663,\n\t\"./AIStudio/AIStudioModal/Steps/DisplayResponse.tsx\": 56663,\n\t\"./AIStudio/AIStudioModal/Steps/JobDescriptionInput\": 29471,\n\t\"./AIStudio/AIStudioModal/Steps/JobDescriptionInput.tsx\": 29471,\n\t\"./AIStudio/AIStudioModal/Steps/OptionalInput\": 21756,\n\t\"./AIStudio/AIStudioModal/Steps/OptionalInput.tsx\": 21756,\n\t\"./AIStudio/AIStudioModal/Steps/QuestionsInput\": 30431,\n\t\"./AIStudio/AIStudioModal/Steps/QuestionsInput.tsx\": 30431,\n\t\"./AIStudio/AIStudioModal/Steps/WelcomePage\": 46533,\n\t\"./AIStudio/AIStudioModal/Steps/WelcomePage.tsx\": 46533,\n\t\"./AIStudio/AIStudioModal/config\": 41508,\n\t\"./AIStudio/AIStudioModal/config.tsx\": 41508,\n\t\"./AIStudio/AIStudioModal/reducer\": 70004,\n\t\"./AIStudio/AIStudioModal/reducer.ts\": 70004,\n\t\"./AIStudio/AIStudioModal/styles\": 33684,\n\t\"./AIStudio/AIStudioModal/styles.ts\": 33684,\n\t\"./AIStudio/AIStudioQuestions/AIStudioForm\": 71296,\n\t\"./AIStudio/AIStudioQuestions/AIStudioForm.tsx\": 71296,\n\t\"./AIStudio/AIStudioQuestions/AIStudioQuestions\": 43487,\n\t\"./AIStudio/AIStudioQuestions/AIStudioQuestions.tsx\": 43487,\n\t\"./AIStudio/AIStudioQuestions/AIStudioResponse\": 73403,\n\t\"./AIStudio/AIStudioQuestions/AIStudioResponse.tsx\": 73403,\n\t\"./AIStudio/AIStudioQuestions/Footers/ResponseFooter\": 47497,\n\t\"./AIStudio/AIStudioQuestions/Footers/ResponseFooter.tsx\": 47497,\n\t\"./AIStudio/AIStudioQuestions/styles\": 48480,\n\t\"./AIStudio/AIStudioQuestions/styles.ts\": 48480,\n\t\"./AIStudio/AIStudioSmartShare/API\": 26279,\n\t\"./AIStudio/AIStudioSmartShare/API.ts\": 26279,\n\t\"./AIStudio/AIStudioSmartShare/Footers/ResponseFooter\": 56182,\n\t\"./AIStudio/AIStudioSmartShare/Footers/ResponseFooter.tsx\": 56182,\n\t\"./AIStudio/AIStudioSmartShare/Footers/WelcomeFooter\": 93701,\n\t\"./AIStudio/AIStudioSmartShare/Footers/WelcomeFooter.tsx\": 93701,\n\t\"./AIStudio/AIStudioSmartShare/Graphics/buttonSVGs\": 97405,\n\t\"./AIStudio/AIStudioSmartShare/Graphics/buttonSVGs.tsx\": 97405,\n\t\"./AIStudio/AIStudioSmartShare/Inputs/JobDescription\": 12926,\n\t\"./AIStudio/AIStudioSmartShare/Inputs/JobDescription.tsx\": 12926,\n\t\"./AIStudio/AIStudioSmartShare/SmartShare\": 8985,\n\t\"./AIStudio/AIStudioSmartShare/SmartShare.tsx\": 8985,\n\t\"./AIStudio/AIStudioSmartShare/Steps/DisplayDescription\": 58989,\n\t\"./AIStudio/AIStudioSmartShare/Steps/DisplayDescription.tsx\": 58989,\n\t\"./AIStudio/AIStudioSmartShare/Steps/JobBoardInput\": 75388,\n\t\"./AIStudio/AIStudioSmartShare/Steps/JobBoardInput.tsx\": 75388,\n\t\"./AIStudio/AIStudioSmartShare/Steps/ResponseStep\": 74294,\n\t\"./AIStudio/AIStudioSmartShare/Steps/ResponseStep.tsx\": 74294,\n\t\"./AIStudio/AIStudioSmartShare/Steps/SocialInputStep\": 67424,\n\t\"./AIStudio/AIStudioSmartShare/Steps/SocialInputStep.tsx\": 67424,\n\t\"./AIStudio/AIStudioSmartShare/Steps/SocialMediaPreview\": 44116,\n\t\"./AIStudio/AIStudioSmartShare/Steps/SocialMediaPreview.tsx\": 44116,\n\t\"./AIStudio/AIStudioSmartShare/Steps/WelcomePage\": 98152,\n\t\"./AIStudio/AIStudioSmartShare/Steps/WelcomePage.tsx\": 98152,\n\t\"./AIStudio/AIStudioSmartShare/config\": 41971,\n\t\"./AIStudio/AIStudioSmartShare/config.tsx\": 41971,\n\t\"./AIStudio/AIStudioSmartShare/reducer\": 27119,\n\t\"./AIStudio/AIStudioSmartShare/reducer.ts\": 27119,\n\t\"./AIStudio/AIStudioSmartShare/styles\": 35349,\n\t\"./AIStudio/AIStudioSmartShare/styles.ts\": 35349,\n\t\"./AIStudio/ApplicationSummaries/ExpandedSummaryModal\": 90707,\n\t\"./AIStudio/ApplicationSummaries/ExpandedSummaryModal.tsx\": 90707,\n\t\"./AIStudio/ApplicationSummaries/Inputs/Inclusions\": 6424,\n\t\"./AIStudio/ApplicationSummaries/Inputs/Inclusions.tsx\": 6424,\n\t\"./AIStudio/ApplicationSummaries/InsightsModal/InputStep\": 2998,\n\t\"./AIStudio/ApplicationSummaries/InsightsModal/InputStep.tsx\": 2998,\n\t\"./AIStudio/ApplicationSummaries/InsightsModal/InsightsModal\": 39346,\n\t\"./AIStudio/ApplicationSummaries/InsightsModal/InsightsModal.tsx\": 39346,\n\t\"./AIStudio/ApplicationSummaries/InsightsModal/ResponseStep\": 4433,\n\t\"./AIStudio/ApplicationSummaries/InsightsModal/ResponseStep.tsx\": 4433,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/EditStep\": 90687,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/EditStep.tsx\": 90687,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/FollowUpEmail\": 83685,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/FollowUpEmail.tsx\": 83685,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/InputStep\": 967,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/FollowUpEmail/InputStep.tsx\": 967,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/HomeStep\": 8797,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/HomeStep.tsx\": 8797,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/InputTab\": 1535,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/InputTab.tsx\": 1535,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/SavedQuestionsTab\": 12825,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/HomeStep/SavedQuestionsTab.tsx\": 12825,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/InterviewQuestions\": 31314,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/InterviewQuestions.tsx\": 31314,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/ResponseStep\": 19513,\n\t\"./AIStudio/ApplicationSummaries/QuestionsModal/ResponseStep.tsx\": 19513,\n\t\"./AIStudio/ApplicationSummaries/SummaryPopover\": 4484,\n\t\"./AIStudio/ApplicationSummaries/SummaryPopover.tsx\": 4484,\n\t\"./AIStudio/ApplicationSummaries/config\": 50979,\n\t\"./AIStudio/ApplicationSummaries/config.ts\": 50979,\n\t\"./AIStudio/ApplicationSummaries/styles\": 95839,\n\t\"./AIStudio/ApplicationSummaries/styles.ts\": 95839,\n\t\"./AIStudio/ApplicationSummaries/types\": 40540,\n\t\"./AIStudio/ApplicationSummaries/types.ts\": 40540,\n\t\"./AIStudio/NewJobIntegration/AIStudioNewJob\": 88073,\n\t\"./AIStudio/NewJobIntegration/AIStudioNewJob.tsx\": 88073,\n\t\"./AIStudio/NewJobIntegration/QuestionsPreview\": 76611,\n\t\"./AIStudio/NewJobIntegration/QuestionsPreview.tsx\": 76611,\n\t\"./AIStudio/NewJobIntegration/styles\": 92968,\n\t\"./AIStudio/NewJobIntegration/styles.ts\": 92968,\n\t\"./AIStudio/SharedComponents/Buttons/EmailButton\": 33032,\n\t\"./AIStudio/SharedComponents/Buttons/EmailButton.tsx\": 33032,\n\t\"./AIStudio/SharedComponents/Buttons/ExportButton\": 36616,\n\t\"./AIStudio/SharedComponents/Buttons/ExportButton.tsx\": 36616,\n\t\"./AIStudio/SharedComponents/Buttons/ToggleButtons\": 86723,\n\t\"./AIStudio/SharedComponents/Buttons/ToggleButtons.tsx\": 86723,\n\t\"./AIStudio/SharedComponents/CopyableQuestions\": 43228,\n\t\"./AIStudio/SharedComponents/CopyableQuestions.tsx\": 43228,\n\t\"./AIStudio/SharedComponents/DisplayHTMLCollapsible\": 1151,\n\t\"./AIStudio/SharedComponents/DisplayHTMLCollapsible.tsx\": 1151,\n\t\"./AIStudio/SharedComponents/DisplayHTMLViewOnly\": 70586,\n\t\"./AIStudio/SharedComponents/DisplayHTMLViewOnly.tsx\": 70586,\n\t\"./AIStudio/SharedComponents/Footers/DynamicFooter\": 63997,\n\t\"./AIStudio/SharedComponents/Footers/DynamicFooter.tsx\": 63997,\n\t\"./AIStudio/SharedComponents/Graphics/FelixSVG\": 29992,\n\t\"./AIStudio/SharedComponents/Graphics/FelixSVG.tsx\": 29992,\n\t\"./AIStudio/SharedComponents/Graphics/felix-loading.json\": 47279,\n\t\"./AIStudio/SharedComponents/Inputs/PositionTitle\": 86827,\n\t\"./AIStudio/SharedComponents/Inputs/PositionTitle.tsx\": 86827,\n\t\"./AIStudio/SharedComponents/Inputs/PreferredSkills\": 38547,\n\t\"./AIStudio/SharedComponents/Inputs/PreferredSkills.tsx\": 38547,\n\t\"./AIStudio/SharedComponents/Inputs/StyledDropdown\": 74742,\n\t\"./AIStudio/SharedComponents/Inputs/StyledDropdown.tsx\": 74742,\n\t\"./AIStudio/SharedComponents/Inputs/Switch\": 47652,\n\t\"./AIStudio/SharedComponents/Inputs/Switch.tsx\": 47652,\n\t\"./AIStudio/SharedComponents/SelectableCopyableQuestions\": 8388,\n\t\"./AIStudio/SharedComponents/SelectableCopyableQuestions.tsx\": 8388,\n\t\"./AIStudio/SharedComponents/StaticQuestionsPreview\": 3519,\n\t\"./AIStudio/SharedComponents/StaticQuestionsPreview.tsx\": 3519,\n\t\"./AIStudio/SharedComponents/Steps/ErrorScreen\": 65124,\n\t\"./AIStudio/SharedComponents/Steps/ErrorScreen.tsx\": 65124,\n\t\"./AIStudio/SharedComponents/Steps/LoadingResponse\": 8751,\n\t\"./AIStudio/SharedComponents/Steps/LoadingResponse.tsx\": 8751,\n\t\"./AIStudio/SharedComponents/Utility/dismissNotification\": 19410,\n\t\"./AIStudio/SharedComponents/Utility/dismissNotification.ts\": 19410,\n\t\"./AIStudio/SharedComponents/Utility/questionStringToArray\": 72216,\n\t\"./AIStudio/SharedComponents/Utility/questionStringToArray.ts\": 72216,\n\t\"./AIStudio/SharedComponents/sharedConfig\": 88885,\n\t\"./AIStudio/SharedComponents/sharedConfig.tsx\": 88885,\n\t\"./AIStudio/SharedComponents/styles\": 52870,\n\t\"./AIStudio/SharedComponents/styles.ts\": 52870,\n\t\"./AIStudio/SharedComponents/types\": 59443,\n\t\"./AIStudio/SharedComponents/types.ts\": 59443,\n\t\"./ActivityFeed\": 13854,\n\t\"./ActivityFeed/\": 13854,\n\t\"./ActivityFeed/ActivityFeed\": 15697,\n\t\"./ActivityFeed/ActivityFeed.js\": 15697,\n\t\"./ActivityFeed/index\": 13854,\n\t\"./ActivityFeed/index.js\": 13854,\n\t\"./ActivityFeed/styles\": 87218,\n\t\"./ActivityFeed/styles.js\": 87218,\n\t\"./Calendly/API\": 48864,\n\t\"./Calendly/API.ts\": 48864,\n\t\"./Calendly/AddToCalendlyEventModal\": 42198,\n\t\"./Calendly/AddToCalendlyEventModal/\": 42198,\n\t\"./Calendly/AddToCalendlyEventModal/index\": 42198,\n\t\"./Calendly/AddToCalendlyEventModal/index.tsx\": 42198,\n\t\"./Calendly/AddToCalendlyEventModal/useStyles\": 50707,\n\t\"./Calendly/AddToCalendlyEventModal/useStyles.ts\": 50707,\n\t\"./Calendly/Modal\": 99814,\n\t\"./Calendly/Modal/\": 99814,\n\t\"./Calendly/Modal/Modal\": 25853,\n\t\"./Calendly/Modal/Modal.tsx\": 25853,\n\t\"./Calendly/Modal/components/CompleteModal\": 16668,\n\t\"./Calendly/Modal/components/CompleteModal/\": 16668,\n\t\"./Calendly/Modal/components/CompleteModal/index\": 16668,\n\t\"./Calendly/Modal/components/CompleteModal/index.tsx\": 16668,\n\t\"./Calendly/Modal/components/CompleteModal/useStyles\": 39149,\n\t\"./Calendly/Modal/components/CompleteModal/useStyles.ts\": 39149,\n\t\"./Calendly/Modal/components/Steps/Step1/Step1\": 26556,\n\t\"./Calendly/Modal/components/Steps/Step1/Step1.tsx\": 26556,\n\t\"./Calendly/Modal/components/Steps/Step1/useStyles\": 4124,\n\t\"./Calendly/Modal/components/Steps/Step1/useStyles.ts\": 4124,\n\t\"./Calendly/Modal/components/Steps/Step2/EventType\": 49200,\n\t\"./Calendly/Modal/components/Steps/Step2/EventType.tsx\": 49200,\n\t\"./Calendly/Modal/components/Steps/Step2/Step2\": 22752,\n\t\"./Calendly/Modal/components/Steps/Step2/Step2.tsx\": 22752,\n\t\"./Calendly/Modal/components/Steps/Step2/useStyles\": 29409,\n\t\"./Calendly/Modal/components/Steps/Step2/useStyles.ts\": 29409,\n\t\"./Calendly/Modal/components/Steps/Step3/Step3\": 25368,\n\t\"./Calendly/Modal/components/Steps/Step3/Step3.tsx\": 25368,\n\t\"./Calendly/Modal/components/Steps/Step3/useStyles\": 55938,\n\t\"./Calendly/Modal/components/Steps/Step3/useStyles.ts\": 55938,\n\t\"./Calendly/Modal/components/Steps/Step4/OverviewItem\": 46772,\n\t\"./Calendly/Modal/components/Steps/Step4/OverviewItem.tsx\": 46772,\n\t\"./Calendly/Modal/components/Steps/Step4/Step4\": 29084,\n\t\"./Calendly/Modal/components/Steps/Step4/Step4.tsx\": 29084,\n\t\"./Calendly/Modal/components/Steps/Step4/useStyles\": 28335,\n\t\"./Calendly/Modal/components/Steps/Step4/useStyles.ts\": 28335,\n\t\"./Calendly/Modal/index\": 99814,\n\t\"./Calendly/Modal/index.ts\": 99814,\n\t\"./Calendly/Modal/useStyles\": 19115,\n\t\"./Calendly/Modal/useStyles.ts\": 19115,\n\t\"./Calendly/ScheduledEvents\": 43317,\n\t\"./Calendly/ScheduledEvents/\": 43317,\n\t\"./Calendly/ScheduledEvents/BadAPIModal\": 46445,\n\t\"./Calendly/ScheduledEvents/BadAPIModal.tsx\": 46445,\n\t\"./Calendly/ScheduledEvents/ScheduledEvents\": 49665,\n\t\"./Calendly/ScheduledEvents/ScheduledEvents.tsx\": 49665,\n\t\"./Calendly/ScheduledEvents/components/EventItem\": 10606,\n\t\"./Calendly/ScheduledEvents/components/EventItem/\": 10606,\n\t\"./Calendly/ScheduledEvents/components/EventItem/index\": 10606,\n\t\"./Calendly/ScheduledEvents/components/EventItem/index.tsx\": 10606,\n\t\"./Calendly/ScheduledEvents/components/EventItem/useStyles\": 63667,\n\t\"./Calendly/ScheduledEvents/components/EventItem/useStyles.ts\": 63667,\n\t\"./Calendly/ScheduledEvents/constants\": 29188,\n\t\"./Calendly/ScheduledEvents/constants.ts\": 29188,\n\t\"./Calendly/ScheduledEvents/index\": 43317,\n\t\"./Calendly/ScheduledEvents/index.ts\": 43317,\n\t\"./Calendly/ScheduledEvents/useStyles\": 54132,\n\t\"./Calendly/ScheduledEvents/useStyles.ts\": 54132,\n\t\"./Calendly/types\": 7697,\n\t\"./Calendly/types.ts\": 7697,\n\t\"./CareersPortalReport\": 77511,\n\t\"./CareersPortalReport/\": 77511,\n\t\"./CareersPortalReport/index\": 77511,\n\t\"./CareersPortalReport/index.tsx\": 77511,\n\t\"./CareersPortalReport/styles\": 48519,\n\t\"./CareersPortalReport/styles.ts\": 48519,\n\t\"./CareersPortalSocialPreview\": 88796,\n\t\"./CareersPortalSocialPreview/\": 88796,\n\t\"./CareersPortalSocialPreview/index\": 88796,\n\t\"./CareersPortalSocialPreview/index.tsx\": 88796,\n\t\"./CareersPortalSocialPreview/useStyles\": 3080,\n\t\"./CareersPortalSocialPreview/useStyles.js\": 3080,\n\t\"./IndeedIntegration/AdEditor\": 86005,\n\t\"./IndeedIntegration/AdEditor/\": 86005,\n\t\"./IndeedIntegration/AdEditor/AdEditor\": 61809,\n\t\"./IndeedIntegration/AdEditor/AdEditor.js\": 61809,\n\t\"./IndeedIntegration/AdEditor/Steps\": 5461,\n\t\"./IndeedIntegration/AdEditor/Steps/\": 5461,\n\t\"./IndeedIntegration/AdEditor/Steps/Step1\": 56956,\n\t\"./IndeedIntegration/AdEditor/Steps/Step1.js\": 56956,\n\t\"./IndeedIntegration/AdEditor/Steps/Step2\": 86693,\n\t\"./IndeedIntegration/AdEditor/Steps/Step2.js\": 86693,\n\t\"./IndeedIntegration/AdEditor/Steps/Step3\": 84774,\n\t\"./IndeedIntegration/AdEditor/Steps/Step3.js\": 84774,\n\t\"./IndeedIntegration/AdEditor/Steps/index\": 5461,\n\t\"./IndeedIntegration/AdEditor/Steps/index.js\": 5461,\n\t\"./IndeedIntegration/AdEditor/index\": 86005,\n\t\"./IndeedIntegration/AdEditor/index.js\": 86005,\n\t\"./IndeedIntegration/AdEditor/useStyles\": 14800,\n\t\"./IndeedIntegration/AdEditor/useStyles.js\": 14800,\n\t\"./IndeedIntegration/AdList\": 72308,\n\t\"./IndeedIntegration/AdList/\": 72308,\n\t\"./IndeedIntegration/AdList/AdList\": 70531,\n\t\"./IndeedIntegration/AdList/AdList.js\": 70531,\n\t\"./IndeedIntegration/AdList/index\": 72308,\n\t\"./IndeedIntegration/AdList/index.js\": 72308,\n\t\"./IndeedIntegration/AdList/useStyles\": 70381,\n\t\"./IndeedIntegration/AdList/useStyles.js\": 70381,\n\t\"./IndeedIntegration/SponsoredJobEditor\": 93702,\n\t\"./IndeedIntegration/SponsoredJobEditor/\": 93702,\n\t\"./IndeedIntegration/SponsoredJobEditor/SponsoredJobEditor\": 16011,\n\t\"./IndeedIntegration/SponsoredJobEditor/SponsoredJobEditor.js\": 16011,\n\t\"./IndeedIntegration/SponsoredJobEditor/index\": 93702,\n\t\"./IndeedIntegration/SponsoredJobEditor/index.js\": 93702,\n\t\"./IndeedIntegration/components/AdTable\": 57261,\n\t\"./IndeedIntegration/components/AdTable/\": 57261,\n\t\"./IndeedIntegration/components/AdTable/AdTable\": 65566,\n\t\"./IndeedIntegration/components/AdTable/AdTable.js\": 65566,\n\t\"./IndeedIntegration/components/AdTable/index\": 57261,\n\t\"./IndeedIntegration/components/AdTable/index.js\": 57261,\n\t\"./IndeedIntegration/components/AdTable/useStyles\": 34424,\n\t\"./IndeedIntegration/components/AdTable/useStyles.js\": 34424,\n\t\"./IndeedIntegration/components/GenericDialog\": 6615,\n\t\"./IndeedIntegration/components/GenericDialog/\": 6615,\n\t\"./IndeedIntegration/components/GenericDialog/GenericDialog\": 41566,\n\t\"./IndeedIntegration/components/GenericDialog/GenericDialog.js\": 41566,\n\t\"./IndeedIntegration/components/GenericDialog/index\": 6615,\n\t\"./IndeedIntegration/components/GenericDialog/index.js\": 6615,\n\t\"./KpiDashboard\": 65117,\n\t\"./KpiDashboard/\": 65117,\n\t\"./KpiDashboard/KpiCard\": 66534,\n\t\"./KpiDashboard/KpiCard/\": 66534,\n\t\"./KpiDashboard/KpiCard/KpiCard\": 32186,\n\t\"./KpiDashboard/KpiCard/KpiCard.js\": 32186,\n\t\"./KpiDashboard/KpiCard/index\": 66534,\n\t\"./KpiDashboard/KpiCard/index.js\": 66534,\n\t\"./KpiDashboard/KpiCard/styles\": 3002,\n\t\"./KpiDashboard/KpiCard/styles.js\": 3002,\n\t\"./KpiDashboard/KpiDashboard\": 70495,\n\t\"./KpiDashboard/KpiDashboard.js\": 70495,\n\t\"./KpiDashboard/KpiSettings\": 16065,\n\t\"./KpiDashboard/KpiSettings/\": 16065,\n\t\"./KpiDashboard/KpiSettings/KpiSettings\": 13318,\n\t\"./KpiDashboard/KpiSettings/KpiSettings.js\": 13318,\n\t\"./KpiDashboard/KpiSettings/KpiSettingsCard\": 55035,\n\t\"./KpiDashboard/KpiSettings/KpiSettingsCard/\": 55035,\n\t\"./KpiDashboard/KpiSettings/KpiSettingsCard/KpiSettingsCard\": 31614,\n\t\"./KpiDashboard/KpiSettings/KpiSettingsCard/KpiSettingsCard.js\": 31614,\n\t\"./KpiDashboard/KpiSettings/KpiSettingsCard/index\": 55035,\n\t\"./KpiDashboard/KpiSettings/KpiSettingsCard/index.js\": 55035,\n\t\"./KpiDashboard/KpiSettings/index\": 16065,\n\t\"./KpiDashboard/KpiSettings/index.js\": 16065,\n\t\"./KpiDashboard/KpiSettings/styles\": 48683,\n\t\"./KpiDashboard/KpiSettings/styles.js\": 48683,\n\t\"./KpiDashboard/index\": 65117,\n\t\"./KpiDashboard/index.js\": 65117,\n\t\"./KpiDashboard/styles\": 36831,\n\t\"./KpiDashboard/styles.js\": 36831,\n\t\"./NewEngage/AISearch/EngageAISearch\": 93391,\n\t\"./NewEngage/AISearch/EngageAISearch.tsx\": 93391,\n\t\"./NewEngage/AISearch/EngageSearchBar\": 58526,\n\t\"./NewEngage/AISearch/EngageSearchBar.tsx\": 58526,\n\t\"./NewEngage/AISearch/EngageSearchTableActions\": 12639,\n\t\"./NewEngage/AISearch/EngageSearchTableActions.tsx\": 12639,\n\t\"./NewEngage/AISearch/EngageSearchTableRows\": 35126,\n\t\"./NewEngage/AISearch/EngageSearchTableRows.tsx\": 35126,\n\t\"./NewEngage/AISearch/EngageTableActionComponents\": 75043,\n\t\"./NewEngage/AISearch/EngageTableActionComponents.tsx\": 75043,\n\t\"./NewEngage/AISearch/Modals/ActionDrawer/ActionDrawerModals\": 63508,\n\t\"./NewEngage/AISearch/Modals/ActionDrawer/ActionDrawerModals.tsx\": 63508,\n\t\"./NewEngage/AISearch/Modals/ActionDrawer/AddToCandidatePool\": 24964,\n\t\"./NewEngage/AISearch/Modals/ActionDrawer/AddToCandidatePool.tsx\": 24964,\n\t\"./NewEngage/AISearch/Modals/AddCurrentSearch\": 92303,\n\t\"./NewEngage/AISearch/Modals/AddCurrentSearch.tsx\": 92303,\n\t\"./NewEngage/AISearch/Modals/TLPMatchModal/EditBooleanStep\": 58290,\n\t\"./NewEngage/AISearch/Modals/TLPMatchModal/EditBooleanStep.tsx\": 58290,\n\t\"./NewEngage/AISearch/Modals/TLPMatchModal/SelectTLPStep\": 80942,\n\t\"./NewEngage/AISearch/Modals/TLPMatchModal/SelectTLPStep.tsx\": 80942,\n\t\"./NewEngage/AISearch/Modals/TLPMatchModal/TLPMatchModal\": 85270,\n\t\"./NewEngage/AISearch/Modals/TLPMatchModal/TLPMatchModal.tsx\": 85270,\n\t\"./NewEngage/AISearch/SearchFilters\": 15095,\n\t\"./NewEngage/AISearch/SearchFilters.tsx\": 15095,\n\t\"./NewEngage/CandidatePoolAnalytics/Analytics/Analytics\": 54990,\n\t\"./NewEngage/CandidatePoolAnalytics/Analytics/Analytics.tsx\": 54990,\n\t\"./NewEngage/CandidatePoolAnalytics/Analytics/OpenEmailStatistics\": 11419,\n\t\"./NewEngage/CandidatePoolAnalytics/Analytics/OpenEmailStatistics.tsx\": 11419,\n\t\"./NewEngage/CandidatePoolAnalytics/Analytics/StatusStatistics\": 11071,\n\t\"./NewEngage/CandidatePoolAnalytics/Analytics/StatusStatistics.tsx\": 11071,\n\t\"./NewEngage/CandidatePoolAnalytics/Applications/ApplicationTableRows\": 97658,\n\t\"./NewEngage/CandidatePoolAnalytics/Applications/ApplicationTableRows.tsx\": 97658,\n\t\"./NewEngage/CandidatePoolAnalytics/Applications/Applications\": 51482,\n\t\"./NewEngage/CandidatePoolAnalytics/Applications/Applications.tsx\": 51482,\n\t\"./NewEngage/CandidatePoolAnalytics/Applications/config\": 13237,\n\t\"./NewEngage/CandidatePoolAnalytics/Applications/config.tsx\": 13237,\n\t\"./NewEngage/CandidatePoolAnalytics/CandidatePoolAnalytics\": 24760,\n\t\"./NewEngage/CandidatePoolAnalytics/CandidatePoolAnalytics.tsx\": 24760,\n\t\"./NewEngage/CandidatePoolAnalytics/EmailTemplates/EmailTemplates\": 45162,\n\t\"./NewEngage/CandidatePoolAnalytics/EmailTemplates/EmailTemplates.tsx\": 45162,\n\t\"./NewEngage/CandidatePools/CandidatePools\": 54078,\n\t\"./NewEngage/CandidatePools/CandidatePools.tsx\": 54078,\n\t\"./NewEngage/CandidatePools/CandidatePoolsActionComponents\": 22204,\n\t\"./NewEngage/CandidatePools/CandidatePoolsActionComponents.tsx\": 22204,\n\t\"./NewEngage/CandidatePools/CandidatePoolsTableRows\": 40651,\n\t\"./NewEngage/CandidatePools/CandidatePoolsTableRows.tsx\": 40651,\n\t\"./NewEngage/CandidatePools/Modals/ActionDrawerModals\": 50406,\n\t\"./NewEngage/CandidatePools/Modals/ActionDrawerModals.tsx\": 50406,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/CandidatePoolsTableRows\": 10206,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/CandidatePoolsTableRows.tsx\": 10206,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/CandidateTabTableActionComponents\": 40239,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/CandidateTabTableActionComponents.tsx\": 40239,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/CandidatesTab\": 36214,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/CandidatesTab.tsx\": 36214,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/EmailTab\": 45560,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/EmailTab.tsx\": 45560,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/EmailsTableRows\": 84075,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/EmailsTableRows.tsx\": 84075,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/IndividualCandidatePoolModal\": 30164,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/IndividualCandidatePoolModal.tsx\": 30164,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/candidatesConfig\": 35225,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/candidatesConfig.tsx\": 35225,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/emailConfig\": 52167,\n\t\"./NewEngage/CandidatePools/Modals/CandidatePool/emailConfig.tsx\": 52167,\n\t\"./NewEngage/CandidatePools/Modals/CreateNewPoolButton\": 56393,\n\t\"./NewEngage/CandidatePools/Modals/CreateNewPoolButton.tsx\": 56393,\n\t\"./NewEngage/CandidatePools/Modals/CreateNewPoolModal\": 2470,\n\t\"./NewEngage/CandidatePools/Modals/CreateNewPoolModal.tsx\": 2470,\n\t\"./NewEngage/CandidatePools/config\": 70432,\n\t\"./NewEngage/CandidatePools/config.tsx\": 70432,\n\t\"./NewEngage/Engage\": 76060,\n\t\"./NewEngage/Engage.tsx\": 76060,\n\t\"./NewEngage/Graphics/SelectJobSVG\": 94882,\n\t\"./NewEngage/Graphics/SelectJobSVG.tsx\": 94882,\n\t\"./NewEngage/SharedComponents/AndOrToggle\": 54755,\n\t\"./NewEngage/SharedComponents/AndOrToggle.tsx\": 54755,\n\t\"./NewEngage/SharedComponents/BooleanEditor\": 17760,\n\t\"./NewEngage/SharedComponents/BooleanEditor.tsx\": 17760,\n\t\"./NewEngage/SharedComponents/Modals/EmailCandidate\": 93241,\n\t\"./NewEngage/SharedComponents/Modals/EmailCandidate.tsx\": 93241,\n\t\"./NewEngage/SharedComponents/Modals/ExternalEmail\": 4271,\n\t\"./NewEngage/SharedComponents/Modals/ExternalEmail.tsx\": 4271,\n\t\"./NewEngage/SharedComponents/booleanQueryParser\": 50694,\n\t\"./NewEngage/SharedComponents/booleanQueryParser.ts\": 50694,\n\t\"./NewEngage/SharedComponents/styles\": 87723,\n\t\"./NewEngage/SharedComponents/styles.ts\": 87723,\n\t\"./NewEngage/Tabs/TabPanel\": 18915,\n\t\"./NewEngage/Tabs/TabPanel.tsx\": 18915,\n\t\"./NewEngage/Tabs/TabSelector\": 1722,\n\t\"./NewEngage/Tabs/TabSelector.tsx\": 1722,\n\t\"./NewEngage/config\": 28839,\n\t\"./NewEngage/config.tsx\": 28839,\n\t\"./NewEngage/helper\": 59307,\n\t\"./NewEngage/helper.ts\": 59307,\n\t\"./NewEngage/reducer\": 94243,\n\t\"./NewEngage/reducer.ts\": 94243,\n\t\"./NewEngage/styles\": 27193,\n\t\"./NewEngage/styles.ts\": 27193,\n\t\"./NewEngage/types\": 50918,\n\t\"./NewEngage/types.ts\": 50918,\n\t\"./NewLogin/API\": 13881,\n\t\"./NewLogin/API.ts\": 13881,\n\t\"./NewLogin/NewLogin\": 28778,\n\t\"./NewLogin/NewLogin.tsx\": 28778,\n\t\"./NewLogin/styles\": 28531,\n\t\"./NewLogin/styles.ts\": 28531,\n\t\"./NewLogin/utils/FadeChildrenVisibility\": 22050,\n\t\"./NewLogin/utils/FadeChildrenVisibility.tsx\": 22050,\n\t\"./NewUI/Application\": 90777,\n\t\"./NewUI/Application/\": 90777,\n\t\"./NewUI/Application/API\": 37231,\n\t\"./NewUI/Application/API.ts\": 37231,\n\t\"./NewUI/Application/Application\": 58983,\n\t\"./NewUI/Application/Application.tsx\": 58983,\n\t\"./NewUI/Application/ApplicationBetaButton\": 88101,\n\t\"./NewUI/Application/ApplicationBetaButton.tsx\": 88101,\n\t\"./NewUI/Application/ApplicationHeader\": 96752,\n\t\"./NewUI/Application/ApplicationHeader.tsx\": 96752,\n\t\"./NewUI/Application/ApplicationStatusPopover\": 89266,\n\t\"./NewUI/Application/ApplicationStatusPopover.tsx\": 89266,\n\t\"./NewUI/Application/IntegrationsTab\": 91350,\n\t\"./NewUI/Application/IntegrationsTab/\": 91350,\n\t\"./NewUI/Application/IntegrationsTab/ExportButton\": 90022,\n\t\"./NewUI/Application/IntegrationsTab/ExportButton.tsx\": 90022,\n\t\"./NewUI/Application/IntegrationsTab/Logos/AlayaCareLogo.png\": 88981,\n\t\"./NewUI/Application/IntegrationsTab/Logos/CognologyLogo.png\": 59623,\n\t\"./NewUI/Application/IntegrationsTab/Logos/Fit2WorkLogo.png\": 51086,\n\t\"./NewUI/Application/IntegrationsTab/Logos/FoundULogo.png\": 74893,\n\t\"./NewUI/Application/IntegrationsTab/Logos/HronboardLogo.png\": 83843,\n\t\"./NewUI/Application/IntegrationsTab/Logos/Logos\": 41459,\n\t\"./NewUI/Application/IntegrationsTab/Logos/Logos.tsx\": 41459,\n\t\"./NewUI/Application/IntegrationsTab/Logos/MvsLogo.png\": 85620,\n\t\"./NewUI/Application/IntegrationsTab/Logos/OnboardExpressLogo.png\": 19075,\n\t\"./NewUI/Application/IntegrationsTab/Logos/ReferooLogo.png\": 21452,\n\t\"./NewUI/Application/IntegrationsTab/Logos/RoublerLogo.png\": 88781,\n\t\"./NewUI/Application/IntegrationsTab/Logos/SparkHireLogo.png\": 31185,\n\t\"./NewUI/Application/IntegrationsTab/Logos/TestgridLogo.png\": 95144,\n\t\"./NewUI/Application/IntegrationsTab/Logos/XrefLogo.png\": 49519,\n\t\"./NewUI/Application/IntegrationsTab/Modals/AlayaCare\": 96046,\n\t\"./NewUI/Application/IntegrationsTab/Modals/AlayaCare.tsx\": 96046,\n\t\"./NewUI/Application/IntegrationsTab/Modals/AlreadyExportedModal\": 4639,\n\t\"./NewUI/Application/IntegrationsTab/Modals/AlreadyExportedModal.tsx\": 4639,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/Cognology\": 94430,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/Cognology.tsx\": 94430,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyAfterApprovalModal\": 14352,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyAfterApprovalModal.tsx\": 14352,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyApprovalDetails\": 67525,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyApprovalDetails.tsx\": 67525,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyStep1\": 80659,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyStep1.tsx\": 80659,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologySummary\": 53452,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologySummary.tsx\": 53452,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyWaitingForApprovalModal\": 42898,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Cognology/CognologyWaitingForApprovalModal.tsx\": 42898,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Fit2Work\": 57769,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Fit2Work.tsx\": 57769,\n\t\"./NewUI/Application/IntegrationsTab/Modals/FoundU\": 59270,\n\t\"./NewUI/Application/IntegrationsTab/Modals/FoundU.tsx\": 59270,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Hronboard\": 60092,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Hronboard.tsx\": 60092,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Mvs\": 58011,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Mvs.tsx\": 58011,\n\t\"./NewUI/Application/IntegrationsTab/Modals/OnboardExpress\": 39464,\n\t\"./NewUI/Application/IntegrationsTab/Modals/OnboardExpress.tsx\": 39464,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Referoo\": 86087,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Referoo.tsx\": 86087,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Roubler\": 17278,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Roubler.tsx\": 17278,\n\t\"./NewUI/Application/IntegrationsTab/Modals/SparkHire\": 28250,\n\t\"./NewUI/Application/IntegrationsTab/Modals/SparkHire.tsx\": 28250,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Testgrid\": 29175,\n\t\"./NewUI/Application/IntegrationsTab/Modals/Testgrid.tsx\": 29175,\n\t\"./NewUI/Application/IntegrationsTab/Modals/UnusualActivity\": 79853,\n\t\"./NewUI/Application/IntegrationsTab/Modals/UnusualActivity.tsx\": 79853,\n\t\"./NewUI/Application/IntegrationsTab/Modals/XRef\": 82780,\n\t\"./NewUI/Application/IntegrationsTab/Modals/XRef.tsx\": 82780,\n\t\"./NewUI/Application/IntegrationsTab/OldIntegrationsLink\": 99972,\n\t\"./NewUI/Application/IntegrationsTab/OldIntegrationsLink.tsx\": 99972,\n\t\"./NewUI/Application/IntegrationsTab/Records/Fit2WorkRecord\": 9612,\n\t\"./NewUI/Application/IntegrationsTab/Records/Fit2WorkRecord.tsx\": 9612,\n\t\"./NewUI/Application/IntegrationsTab/Records/FoundURecord\": 83927,\n\t\"./NewUI/Application/IntegrationsTab/Records/FoundURecord.tsx\": 83927,\n\t\"./NewUI/Application/IntegrationsTab/Records/MvsRecord\": 26122,\n\t\"./NewUI/Application/IntegrationsTab/Records/MvsRecord.tsx\": 26122,\n\t\"./NewUI/Application/IntegrationsTab/Records/ReferooRecord\": 27786,\n\t\"./NewUI/Application/IntegrationsTab/Records/ReferooRecord.tsx\": 27786,\n\t\"./NewUI/Application/IntegrationsTab/Records/SparkHireRecord\": 94907,\n\t\"./NewUI/Application/IntegrationsTab/Records/SparkHireRecord.tsx\": 94907,\n\t\"./NewUI/Application/IntegrationsTab/Records/TestgridRecord\": 81486,\n\t\"./NewUI/Application/IntegrationsTab/Records/TestgridRecord.tsx\": 81486,\n\t\"./NewUI/Application/IntegrationsTab/Records/XrefRecord\": 20753,\n\t\"./NewUI/Application/IntegrationsTab/Records/XrefRecord.tsx\": 20753,\n\t\"./NewUI/Application/IntegrationsTab/UpdateStatusIcon\": 2454,\n\t\"./NewUI/Application/IntegrationsTab/UpdateStatusIcon.tsx\": 2454,\n\t\"./NewUI/Application/IntegrationsTab/helper\": 28304,\n\t\"./NewUI/Application/IntegrationsTab/helper.ts\": 28304,\n\t\"./NewUI/Application/IntegrationsTab/index\": 91350,\n\t\"./NewUI/Application/IntegrationsTab/index.tsx\": 91350,\n\t\"./NewUI/Application/IntegrationsTab/styles\": 1218,\n\t\"./NewUI/Application/IntegrationsTab/styles.ts\": 1218,\n\t\"./NewUI/Application/Modals/AddEditTask\": 60616,\n\t\"./NewUI/Application/Modals/AddEditTask.tsx\": 60616,\n\t\"./NewUI/Application/Modals/AddForm\": 25197,\n\t\"./NewUI/Application/Modals/AddForm.tsx\": 25197,\n\t\"./NewUI/Application/Modals/AddToEvent\": 99102,\n\t\"./NewUI/Application/Modals/AddToEvent.tsx\": 99102,\n\t\"./NewUI/Application/Modals/AttachmentPreviewModal\": 42760,\n\t\"./NewUI/Application/Modals/AttachmentPreviewModal.tsx\": 42760,\n\t\"./NewUI/Application/Modals/Components/EmailBodyComponent\": 94492,\n\t\"./NewUI/Application/Modals/Components/EmailBodyComponent.tsx\": 94492,\n\t\"./NewUI/Application/Modals/Components/EmailsDropdown\": 34601,\n\t\"./NewUI/Application/Modals/Components/EmailsDropdown.tsx\": 34601,\n\t\"./NewUI/Application/Modals/Components/FormResponseInfo\": 47326,\n\t\"./NewUI/Application/Modals/Components/FormResponseInfo.tsx\": 47326,\n\t\"./NewUI/Application/Modals/Components/FormsDropdown\": 36143,\n\t\"./NewUI/Application/Modals/Components/FormsDropdown.tsx\": 36143,\n\t\"./NewUI/Application/Modals/Components/NotificationOptionsSwitch\": 87528,\n\t\"./NewUI/Application/Modals/Components/NotificationOptionsSwitch.tsx\": 87528,\n\t\"./NewUI/Application/Modals/Components/TimestampTable\": 28905,\n\t\"./NewUI/Application/Modals/Components/TimestampTable.tsx\": 28905,\n\t\"./NewUI/Application/Modals/Components/TimestampTableForm\": 2423,\n\t\"./NewUI/Application/Modals/Components/TimestampTableForm.tsx\": 2423,\n\t\"./NewUI/Application/Modals/Components/TimestampTableRow\": 22925,\n\t\"./NewUI/Application/Modals/Components/TimestampTableRow.tsx\": 22925,\n\t\"./NewUI/Application/Modals/CreateApproval\": 19361,\n\t\"./NewUI/Application/Modals/CreateApproval.tsx\": 19361,\n\t\"./NewUI/Application/Modals/DeleteApplication\": 23599,\n\t\"./NewUI/Application/Modals/DeleteApplication.tsx\": 23599,\n\t\"./NewUI/Application/Modals/DeleteAttachment\": 90582,\n\t\"./NewUI/Application/Modals/DeleteAttachment.tsx\": 90582,\n\t\"./NewUI/Application/Modals/DeleteFormResponse\": 15978,\n\t\"./NewUI/Application/Modals/DeleteFormResponse.tsx\": 15978,\n\t\"./NewUI/Application/Modals/EditFormResponseModal\": 69916,\n\t\"./NewUI/Application/Modals/EditFormResponseModal.tsx\": 69916,\n\t\"./NewUI/Application/Modals/EmailExternal\": 51659,\n\t\"./NewUI/Application/Modals/EmailExternal.tsx\": 51659,\n\t\"./NewUI/Application/Modals/ExitConfirmationModal\": 92688,\n\t\"./NewUI/Application/Modals/ExitConfirmationModal.tsx\": 92688,\n\t\"./NewUI/Application/Modals/ExportToOnboard\": 70736,\n\t\"./NewUI/Application/Modals/ExportToOnboard.tsx\": 70736,\n\t\"./NewUI/Application/Modals/InviteToTimeslot\": 10371,\n\t\"./NewUI/Application/Modals/InviteToTimeslot.tsx\": 10371,\n\t\"./NewUI/Application/Modals/MissingPlaceholdersConfirmationModal\": 35944,\n\t\"./NewUI/Application/Modals/MissingPlaceholdersConfirmationModal.tsx\": 35944,\n\t\"./NewUI/Application/Modals/MoveApplicationModal\": 69802,\n\t\"./NewUI/Application/Modals/MoveApplicationModal.tsx\": 69802,\n\t\"./NewUI/Application/Modals/SearchIndex\": 51206,\n\t\"./NewUI/Application/Modals/SearchIndex.tsx\": 51206,\n\t\"./NewUI/Application/Modals/SendEmail\": 93712,\n\t\"./NewUI/Application/Modals/SendEmail.tsx\": 93712,\n\t\"./NewUI/Application/Modals/SendForm\": 40128,\n\t\"./NewUI/Application/Modals/SendForm.tsx\": 40128,\n\t\"./NewUI/Application/Modals/SendSms\": 24431,\n\t\"./NewUI/Application/Modals/SendSms.tsx\": 24431,\n\t\"./NewUI/Application/Modals/TaskWorkflow\": 420,\n\t\"./NewUI/Application/Modals/TaskWorkflow.tsx\": 420,\n\t\"./NewUI/Application/Modals/styles\": 70182,\n\t\"./NewUI/Application/Modals/styles.ts\": 70182,\n\t\"./NewUI/Application/MoreOptionsPopover\": 79044,\n\t\"./NewUI/Application/MoreOptionsPopover.tsx\": 79044,\n\t\"./NewUI/Application/OverviewTab\": 61234,\n\t\"./NewUI/Application/OverviewTab/\": 61234,\n\t\"./NewUI/Application/OverviewTab/AISummary\": 5676,\n\t\"./NewUI/Application/OverviewTab/AISummary.tsx\": 5676,\n\t\"./NewUI/Application/OverviewTab/AISummaryNoAccess\": 47967,\n\t\"./NewUI/Application/OverviewTab/AISummaryNoAccess.tsx\": 47967,\n\t\"./NewUI/Application/OverviewTab/Actions\": 68475,\n\t\"./NewUI/Application/OverviewTab/Actions.tsx\": 68475,\n\t\"./NewUI/Application/OverviewTab/AdditionalInfo\": 1895,\n\t\"./NewUI/Application/OverviewTab/AdditionalInfo.tsx\": 1895,\n\t\"./NewUI/Application/OverviewTab/Attachments\": 74393,\n\t\"./NewUI/Application/OverviewTab/Attachments/\": 74393,\n\t\"./NewUI/Application/OverviewTab/Attachments/AudioPreview\": 93295,\n\t\"./NewUI/Application/OverviewTab/Attachments/AudioPreview.tsx\": 93295,\n\t\"./NewUI/Application/OverviewTab/Attachments/ImagePreview\": 28524,\n\t\"./NewUI/Application/OverviewTab/Attachments/ImagePreview.tsx\": 28524,\n\t\"./NewUI/Application/OverviewTab/Attachments/PdfPreview\": 21083,\n\t\"./NewUI/Application/OverviewTab/Attachments/PdfPreview.tsx\": 21083,\n\t\"./NewUI/Application/OverviewTab/Attachments/TextPreview\": 91034,\n\t\"./NewUI/Application/OverviewTab/Attachments/TextPreview.tsx\": 91034,\n\t\"./NewUI/Application/OverviewTab/Attachments/VideoPreview\": 47674,\n\t\"./NewUI/Application/OverviewTab/Attachments/VideoPreview.tsx\": 47674,\n\t\"./NewUI/Application/OverviewTab/Attachments/WordPreview\": 56789,\n\t\"./NewUI/Application/OverviewTab/Attachments/WordPreview.tsx\": 56789,\n\t\"./NewUI/Application/OverviewTab/Attachments/index\": 74393,\n\t\"./NewUI/Application/OverviewTab/Attachments/index.tsx\": 74393,\n\t\"./NewUI/Application/OverviewTab/Icons\": 48612,\n\t\"./NewUI/Application/OverviewTab/Icons.tsx\": 48612,\n\t\"./NewUI/Application/OverviewTab/Questionnaire\": 90677,\n\t\"./NewUI/Application/OverviewTab/Questionnaire.tsx\": 90677,\n\t\"./NewUI/Application/OverviewTab/QuestionsAndRatings\": 18730,\n\t\"./NewUI/Application/OverviewTab/QuestionsAndRatings.tsx\": 18730,\n\t\"./NewUI/Application/OverviewTab/Rating\": 50631,\n\t\"./NewUI/Application/OverviewTab/Rating.tsx\": 50631,\n\t\"./NewUI/Application/OverviewTab/RatingCard\": 90993,\n\t\"./NewUI/Application/OverviewTab/RatingCard.tsx\": 90993,\n\t\"./NewUI/Application/OverviewTab/Ratings\": 91532,\n\t\"./NewUI/Application/OverviewTab/Ratings.tsx\": 91532,\n\t\"./NewUI/Application/OverviewTab/Responses\": 88622,\n\t\"./NewUI/Application/OverviewTab/Responses.tsx\": 88622,\n\t\"./NewUI/Application/OverviewTab/Section\": 92758,\n\t\"./NewUI/Application/OverviewTab/Section/\": 92758,\n\t\"./NewUI/Application/OverviewTab/Section/Section\": 79735,\n\t\"./NewUI/Application/OverviewTab/Section/Section.tsx\": 79735,\n\t\"./NewUI/Application/OverviewTab/Section/index\": 92758,\n\t\"./NewUI/Application/OverviewTab/Section/index.ts\": 92758,\n\t\"./NewUI/Application/OverviewTab/Section/types\": 8607,\n\t\"./NewUI/Application/OverviewTab/Section/types.ts\": 8607,\n\t\"./NewUI/Application/OverviewTab/SortableSection\": 51527,\n\t\"./NewUI/Application/OverviewTab/SortableSection.tsx\": 51527,\n\t\"./NewUI/Application/OverviewTab/index\": 61234,\n\t\"./NewUI/Application/OverviewTab/index.tsx\": 61234,\n\t\"./NewUI/Application/SmartFormsTab/FormResponseActions\": 99673,\n\t\"./NewUI/Application/SmartFormsTab/FormResponseActions.tsx\": 99673,\n\t\"./NewUI/Application/SmartFormsTab/FormResponseDetails\": 74994,\n\t\"./NewUI/Application/SmartFormsTab/FormResponseDetails.tsx\": 74994,\n\t\"./NewUI/Application/SmartFormsTab/SmartFormsTab\": 66716,\n\t\"./NewUI/Application/SmartFormsTab/SmartFormsTab.tsx\": 66716,\n\t\"./NewUI/Application/SmartFormsTab/get-answer-attributes\": 96782,\n\t\"./NewUI/Application/SmartFormsTab/get-answer-attributes.ts\": 96782,\n\t\"./NewUI/Application/SmartFormsTab/get-answer-value\": 48754,\n\t\"./NewUI/Application/SmartFormsTab/get-answer-value.ts\": 48754,\n\t\"./NewUI/Application/SmartFormsTab/validate-form-submission\": 42281,\n\t\"./NewUI/Application/SmartFormsTab/validate-form-submission.ts\": 42281,\n\t\"./NewUI/Application/TasksAndEventsTab\": 83903,\n\t\"./NewUI/Application/TasksAndEventsTab/\": 83903,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks\": 51268,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/\": 51268,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/Task\": 29149,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/Task.tsx\": 29149,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/TasksTab\": 17597,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/TasksTab.tsx\": 17597,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/index\": 51268,\n\t\"./NewUI/Application/TasksAndEventsTab/Tasks/index.tsx\": 51268,\n\t\"./NewUI/Application/TasksAndEventsTab/index\": 83903,\n\t\"./NewUI/Application/TasksAndEventsTab/index.tsx\": 83903,\n\t\"./NewUI/Application/config\": 1805,\n\t\"./NewUI/Application/config.ts\": 1805,\n\t\"./NewUI/Application/constants\": 38001,\n\t\"./NewUI/Application/constants/\": 38001,\n\t\"./NewUI/Application/constants/index\": 38001,\n\t\"./NewUI/Application/constants/index.ts\": 38001,\n\t\"./NewUI/Application/constants/zoomSettings\": 54067,\n\t\"./NewUI/Application/constants/zoomSettings.ts\": 54067,\n\t\"./NewUI/Application/helper\": 41119,\n\t\"./NewUI/Application/helper.ts\": 41119,\n\t\"./NewUI/Application/index\": 90777,\n\t\"./NewUI/Application/index.tsx\": 90777,\n\t\"./NewUI/Application/reducer\": 24871,\n\t\"./NewUI/Application/reducer.ts\": 24871,\n\t\"./NewUI/Application/styles\": 89373,\n\t\"./NewUI/Application/styles.ts\": 89373,\n\t\"./NewUI/Application/types\": 62506,\n\t\"./NewUI/Application/types.ts\": 62506,\n\t\"./NewUI/ApprovalForms\": 21203,\n\t\"./NewUI/ApprovalForms/\": 21203,\n\t\"./NewUI/ApprovalForms/API\": 71307,\n\t\"./NewUI/ApprovalForms/API.ts\": 71307,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ActionModal\": 98138,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ActionModal.tsx\": 98138,\n\t\"./NewUI/ApprovalForms/ApprovalForm/AnswersView\": 35449,\n\t\"./NewUI/ApprovalForms/ApprovalForm/AnswersView.tsx\": 35449,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ApprovalForm\": 76964,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ApprovalForm.tsx\": 76964,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ApprovalFormPage\": 80141,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ApprovalFormPage.tsx\": 80141,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ApproversTable\": 97933,\n\t\"./NewUI/ApprovalForms/ApprovalForm/ApproversTable.tsx\": 97933,\n\t\"./NewUI/ApprovalForms/ApprovalForm/AvailabilityAnswer\": 6632,\n\t\"./NewUI/ApprovalForms/ApprovalForm/AvailabilityAnswer.tsx\": 6632,\n\t\"./NewUI/ApprovalForms/ApprovalForm/DocumentViewer\": 40978,\n\t\"./NewUI/ApprovalForms/ApprovalForm/DocumentViewer.tsx\": 40978,\n\t\"./NewUI/ApprovalForms/ApprovalForm/EditApproverModal\": 32089,\n\t\"./NewUI/ApprovalForms/ApprovalForm/EditApproverModal.tsx\": 32089,\n\t\"./NewUI/ApprovalForms/ApprovalForm/styles\": 28907,\n\t\"./NewUI/ApprovalForms/ApprovalForm/styles.ts\": 28907,\n\t\"./NewUI/ApprovalForms/ApprovalForms\": 6419,\n\t\"./NewUI/ApprovalForms/ApprovalForms.tsx\": 6419,\n\t\"./NewUI/ApprovalForms/ApprovalFormsTab\": 80722,\n\t\"./NewUI/ApprovalForms/ApprovalFormsTab.tsx\": 80722,\n\t\"./NewUI/ApprovalForms/ApprovalFormsTable\": 19855,\n\t\"./NewUI/ApprovalForms/ApprovalFormsTable.tsx\": 19855,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/ApprovalManagers\": 83496,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/ApprovalManagers.tsx\": 83496,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/ApprovalManagersTable\": 53238,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/ApprovalManagersTable.tsx\": 53238,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/NewApprovalManager\": 39357,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/NewApprovalManager.tsx\": 39357,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/Search\": 38833,\n\t\"./NewUI/ApprovalForms/ApprovalManagers/Search.tsx\": 38833,\n\t\"./NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLink\": 56435,\n\t\"./NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLink.tsx\": 56435,\n\t\"./NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLinks\": 83040,\n\t\"./NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLinks.tsx\": 83040,\n\t\"./NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLinksTable\": 36302,\n\t\"./NewUI/ApprovalForms/ApprovalPublicLinks/ApprovalPublicLinksTable.tsx\": 36302,\n\t\"./NewUI/ApprovalForms/ApprovalTemplate/ApprovalTemplateFields\": 77019,\n\t\"./NewUI/ApprovalForms/ApprovalTemplate/ApprovalTemplateFields.tsx\": 77019,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/AdvancedTab\": 6195,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/AdvancedTab.tsx\": 6195,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/ApprovalTemplateSettings\": 60902,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/ApprovalTemplateSettings.tsx\": 60902,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/ApproversListAutoComplete\": 274,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/ApproversListAutoComplete.tsx\": 274,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/ApproversListText\": 37679,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/ApproversListText.tsx\": 37679,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/DefaultApproversTab\": 49916,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/DefaultApproversTab.tsx\": 49916,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/FormTitleTab\": 2235,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/FormTitleTab.tsx\": 2235,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/TemplateTitleTab\": 80899,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/TemplateTitleTab.tsx\": 80899,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/styles\": 99804,\n\t\"./NewUI/ApprovalForms/ApprovalTemplateSettings/styles.ts\": 99804,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/ApprovalTemplates\": 61132,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/ApprovalTemplates.tsx\": 61132,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/ApprovalTemplatesTable\": 80170,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/ApprovalTemplatesTable.tsx\": 80170,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/FilterDropdown\": 70657,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/FilterDropdown.tsx\": 70657,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/MoveApprovalTemplate\": 39608,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/MoveApprovalTemplate.tsx\": 39608,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/NotePopover\": 20365,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/NotePopover.tsx\": 20365,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/Search\": 39164,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/Search.tsx\": 39164,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/config\": 25078,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/config.ts\": 25078,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/types\": 9883,\n\t\"./NewUI/ApprovalForms/ApprovalTemplates/types.ts\": 9883,\n\t\"./NewUI/ApprovalForms/ArchivedFormsAndTemplates/ArchivedFormsAndTemplates\": 76300,\n\t\"./NewUI/ApprovalForms/ArchivedFormsAndTemplates/ArchivedFormsAndTemplates.tsx\": 76300,\n\t\"./NewUI/ApprovalForms/Dropdowns/DndFieldDropdown\": 29457,\n\t\"./NewUI/ApprovalForms/Dropdowns/DndFieldDropdown.tsx\": 29457,\n\t\"./NewUI/ApprovalForms/Dropdowns/FieldDropdown\": 77757,\n\t\"./NewUI/ApprovalForms/Dropdowns/FieldDropdown.tsx\": 77757,\n\t\"./NewUI/ApprovalForms/Dropdowns/FilterDropdown\": 50781,\n\t\"./NewUI/ApprovalForms/Dropdowns/FilterDropdown.tsx\": 50781,\n\t\"./NewUI/ApprovalForms/Dropdowns/SortableField\": 12854,\n\t\"./NewUI/ApprovalForms/Dropdowns/SortableField.tsx\": 12854,\n\t\"./NewUI/ApprovalForms/NewApproval/NewApproval\": 71716,\n\t\"./NewUI/ApprovalForms/NewApproval/NewApproval.tsx\": 71716,\n\t\"./NewUI/ApprovalForms/NewApproval/NewApprovalModal\": 29765,\n\t\"./NewUI/ApprovalForms/NewApproval/NewApprovalModal.tsx\": 29765,\n\t\"./NewUI/ApprovalForms/NewApproval/NewApprovalModalFromCandidate\": 81686,\n\t\"./NewUI/ApprovalForms/NewApproval/NewApprovalModalFromCandidate.tsx\": 81686,\n\t\"./NewUI/ApprovalForms/NewApproval/styles\": 88487,\n\t\"./NewUI/ApprovalForms/NewApproval/styles.ts\": 88487,\n\t\"./NewUI/ApprovalForms/NewApprovalPublicLink/NewApprovalPublicLinkModal\": 94105,\n\t\"./NewUI/ApprovalForms/NewApprovalPublicLink/NewApprovalPublicLinkModal.tsx\": 94105,\n\t\"./NewUI/ApprovalForms/NewApprovalPublicLink/styles\": 62948,\n\t\"./NewUI/ApprovalForms/NewApprovalPublicLink/styles.ts\": 62948,\n\t\"./NewUI/ApprovalForms/NotePopover\": 82978,\n\t\"./NewUI/ApprovalForms/NotePopover.tsx\": 82978,\n\t\"./NewUI/ApprovalForms/Questions/Modals/AddSystemField\": 92788,\n\t\"./NewUI/ApprovalForms/Questions/Modals/AddSystemField.tsx\": 92788,\n\t\"./NewUI/ApprovalForms/Questions/Modals/AvailabilityPreview\": 8535,\n\t\"./NewUI/ApprovalForms/Questions/Modals/AvailabilityPreview.tsx\": 8535,\n\t\"./NewUI/ApprovalForms/Questions/Modals/BooleanFieldSwitch\": 97050,\n\t\"./NewUI/ApprovalForms/Questions/Modals/BooleanFieldSwitch.tsx\": 97050,\n\t\"./NewUI/ApprovalForms/Questions/Modals/NewEmailTemplateField\": 30980,\n\t\"./NewUI/ApprovalForms/Questions/Modals/NewEmailTemplateField.tsx\": 30980,\n\t\"./NewUI/ApprovalForms/Questions/Modals/NewField\": 63232,\n\t\"./NewUI/ApprovalForms/Questions/Modals/NewField.tsx\": 63232,\n\t\"./NewUI/ApprovalForms/Questions/Modals/SortableChoice\": 5627,\n\t\"./NewUI/ApprovalForms/Questions/Modals/SortableChoice.tsx\": 5627,\n\t\"./NewUI/ApprovalForms/Questions/NewSystemFieldSVG\": 43432,\n\t\"./NewUI/ApprovalForms/Questions/NewSystemFieldSVG.tsx\": 43432,\n\t\"./NewUI/ApprovalForms/Questions/QuestionCardSensor\": 15107,\n\t\"./NewUI/ApprovalForms/Questions/QuestionCardSensor.tsx\": 15107,\n\t\"./NewUI/ApprovalForms/Questions/Questions\": 23912,\n\t\"./NewUI/ApprovalForms/Questions/Questions.tsx\": 23912,\n\t\"./NewUI/ApprovalForms/Questions/SortableItem\": 93597,\n\t\"./NewUI/ApprovalForms/Questions/SortableItem.tsx\": 93597,\n\t\"./NewUI/ApprovalForms/Questions/styles\": 10507,\n\t\"./NewUI/ApprovalForms/Questions/styles.ts\": 10507,\n\t\"./NewUI/ApprovalForms/Search\": 38225,\n\t\"./NewUI/ApprovalForms/Search.tsx\": 38225,\n\t\"./NewUI/ApprovalForms/config\": 78353,\n\t\"./NewUI/ApprovalForms/config.ts\": 78353,\n\t\"./NewUI/ApprovalForms/helper\": 6907,\n\t\"./NewUI/ApprovalForms/helper.ts\": 6907,\n\t\"./NewUI/ApprovalForms/index\": 21203,\n\t\"./NewUI/ApprovalForms/index.ts\": 21203,\n\t\"./NewUI/ApprovalForms/styles\": 65993,\n\t\"./NewUI/ApprovalForms/styles.ts\": 65993,\n\t\"./NewUI/ApprovalForms/types\": 630,\n\t\"./NewUI/ApprovalForms/types.ts\": 630,\n\t\"./NewUI/Candidate\": 45692,\n\t\"./NewUI/Candidate/\": 45692,\n\t\"./NewUI/Candidate/API\": 35488,\n\t\"./NewUI/Candidate/API.ts\": 35488,\n\t\"./NewUI/Candidate/ActivitiesTab\": 77836,\n\t\"./NewUI/Candidate/ActivitiesTab.tsx\": 77836,\n\t\"./NewUI/Candidate/AddRecord\": 51530,\n\t\"./NewUI/Candidate/AddRecord.tsx\": 51530,\n\t\"./NewUI/Candidate/Candidate\": 11451,\n\t\"./NewUI/Candidate/Candidate.tsx\": 11451,\n\t\"./NewUI/Candidate/CandidateApplicationsTableRows\": 94511,\n\t\"./NewUI/Candidate/CandidateApplicationsTableRows.tsx\": 94511,\n\t\"./NewUI/Candidate/CandidateIcon\": 73920,\n\t\"./NewUI/Candidate/CandidateIcon.tsx\": 73920,\n\t\"./NewUI/Candidate/CandidateTags\": 12248,\n\t\"./NewUI/Candidate/CandidateTags.tsx\": 12248,\n\t\"./NewUI/Candidate/CandidateTasks\": 63844,\n\t\"./NewUI/Candidate/CandidateTasks/\": 63844,\n\t\"./NewUI/Candidate/CandidateTasks/AddEditTaskModal\": 8599,\n\t\"./NewUI/Candidate/CandidateTasks/AddEditTaskModal.tsx\": 8599,\n\t\"./NewUI/Candidate/CandidateTasks/CandidateTask\": 46724,\n\t\"./NewUI/Candidate/CandidateTasks/CandidateTask.tsx\": 46724,\n\t\"./NewUI/Candidate/CandidateTasks/CandidateTasksTab\": 98776,\n\t\"./NewUI/Candidate/CandidateTasks/CandidateTasksTab.tsx\": 98776,\n\t\"./NewUI/Candidate/CandidateTasks/EmptyTab\": 7238,\n\t\"./NewUI/Candidate/CandidateTasks/EmptyTab.tsx\": 7238,\n\t\"./NewUI/Candidate/CandidateTasks/TaskWorkflowModal\": 67507,\n\t\"./NewUI/Candidate/CandidateTasks/TaskWorkflowModal.tsx\": 67507,\n\t\"./NewUI/Candidate/CandidateTasks/index\": 63844,\n\t\"./NewUI/Candidate/CandidateTasks/index.tsx\": 63844,\n\t\"./NewUI/Candidate/MergeCandidates\": 48222,\n\t\"./NewUI/Candidate/MergeCandidates.tsx\": 48222,\n\t\"./NewUI/Candidate/Notepad\": 2411,\n\t\"./NewUI/Candidate/Notepad.tsx\": 2411,\n\t\"./NewUI/Candidate/ProfileTab\": 41162,\n\t\"./NewUI/Candidate/ProfileTab.tsx\": 41162,\n\t\"./NewUI/Candidate/config\": 61396,\n\t\"./NewUI/Candidate/config.tsx\": 61396,\n\t\"./NewUI/Candidate/index\": 45692,\n\t\"./NewUI/Candidate/index.tsx\": 45692,\n\t\"./NewUI/Candidate/reducer\": 72964,\n\t\"./NewUI/Candidate/reducer.ts\": 72964,\n\t\"./NewUI/Candidate/styles\": 51876,\n\t\"./NewUI/Candidate/styles.ts\": 51876,\n\t\"./NewUI/Candidate/types\": 23217,\n\t\"./NewUI/Candidate/types.ts\": 23217,\n\t\"./NewUI/Candidates\": 15219,\n\t\"./NewUI/Candidates/\": 15219,\n\t\"./NewUI/Candidates/API\": 50785,\n\t\"./NewUI/Candidates/API.ts\": 50785,\n\t\"./NewUI/Candidates/Candidates\": 35933,\n\t\"./NewUI/Candidates/Candidates.tsx\": 35933,\n\t\"./NewUI/Candidates/CandidatesTableRows\": 78786,\n\t\"./NewUI/Candidates/CandidatesTableRows.tsx\": 78786,\n\t\"./NewUI/Candidates/DeleteCandidate\": 95955,\n\t\"./NewUI/Candidates/DeleteCandidate.tsx\": 95955,\n\t\"./NewUI/Candidates/EditCandidate\": 78780,\n\t\"./NewUI/Candidates/EditCandidate.tsx\": 78780,\n\t\"./NewUI/Candidates/config\": 95393,\n\t\"./NewUI/Candidates/config.tsx\": 95393,\n\t\"./NewUI/Candidates/index\": 15219,\n\t\"./NewUI/Candidates/index.tsx\": 15219,\n\t\"./NewUI/Candidates/reducer\": 80101,\n\t\"./NewUI/Candidates/reducer.ts\": 80101,\n\t\"./NewUI/Candidates/styles\": 30459,\n\t\"./NewUI/Candidates/styles.ts\": 30459,\n\t\"./NewUI/Candidates/types\": 23384,\n\t\"./NewUI/Candidates/types.ts\": 23384,\n\t\"./NewUI/Components/Buttons/BetaButton\": 83693,\n\t\"./NewUI/Components/Buttons/BetaButton.tsx\": 83693,\n\t\"./NewUI/Components/Buttons/CreateButton\": 89455,\n\t\"./NewUI/Components/Buttons/CreateButton.tsx\": 89455,\n\t\"./NewUI/Components/Buttons/LoadingButton\": 29135,\n\t\"./NewUI/Components/Buttons/LoadingButton.tsx\": 29135,\n\t\"./NewUI/Components/Buttons/StepperLeftButton\": 12655,\n\t\"./NewUI/Components/Buttons/StepperLeftButton.tsx\": 12655,\n\t\"./NewUI/Components/Buttons/StepperRightButton\": 37768,\n\t\"./NewUI/Components/Buttons/StepperRightButton.tsx\": 37768,\n\t\"./NewUI/Components/Charts/DonutChart\": 56583,\n\t\"./NewUI/Components/Charts/DonutChart.tsx\": 56583,\n\t\"./NewUI/Components/Charts/DonutTooltip\": 58791,\n\t\"./NewUI/Components/Charts/DonutTooltip.js\": 58791,\n\t\"./NewUI/Components/Charts/LineChart\": 22461,\n\t\"./NewUI/Components/Charts/LineChart.tsx\": 22461,\n\t\"./NewUI/Components/Charts/LineTooltip\": 11887,\n\t\"./NewUI/Components/Charts/LineTooltip.js\": 11887,\n\t\"./NewUI/Components/Charts/helper\": 82133,\n\t\"./NewUI/Components/Charts/helper.ts\": 82133,\n\t\"./NewUI/Components/Charts/types\": 6524,\n\t\"./NewUI/Components/Charts/types.ts\": 6524,\n\t\"./NewUI/Components/CustomUIElements/AddressInput\": 33506,\n\t\"./NewUI/Components/CustomUIElements/AddressInput.tsx\": 33506,\n\t\"./NewUI/Components/CustomUIElements/AttachmentSelectorAndPreview\": 23555,\n\t\"./NewUI/Components/CustomUIElements/AttachmentSelectorAndPreview.tsx\": 23555,\n\t\"./NewUI/Components/CustomUIElements/AttachmentsPreview\": 87440,\n\t\"./NewUI/Components/CustomUIElements/AttachmentsPreview.tsx\": 87440,\n\t\"./NewUI/Components/CustomUIElements/AutocompleteInput\": 38116,\n\t\"./NewUI/Components/CustomUIElements/AutocompleteInput.tsx\": 38116,\n\t\"./NewUI/Components/CustomUIElements/AvailabilityFieldQuestion\": 85671,\n\t\"./NewUI/Components/CustomUIElements/AvailabilityFieldQuestion.tsx\": 85671,\n\t\"./NewUI/Components/CustomUIElements/CircularProgressWithLabel\": 12364,\n\t\"./NewUI/Components/CustomUIElements/CircularProgressWithLabel.tsx\": 12364,\n\t\"./NewUI/Components/CustomUIElements/EmptyState\": 49228,\n\t\"./NewUI/Components/CustomUIElements/EmptyState.tsx\": 49228,\n\t\"./NewUI/Components/CustomUIElements/FormCheckboxGroup\": 16578,\n\t\"./NewUI/Components/CustomUIElements/FormCheckboxGroup.tsx\": 16578,\n\t\"./NewUI/Components/CustomUIElements/FormRadioButtonGroup\": 19290,\n\t\"./NewUI/Components/CustomUIElements/FormRadioButtonGroup.tsx\": 19290,\n\t\"./NewUI/Components/CustomUIElements/FormRadioButtonWithTextInputGroup\": 4963,\n\t\"./NewUI/Components/CustomUIElements/FormRadioButtonWithTextInputGroup.tsx\": 4963,\n\t\"./NewUI/Components/CustomUIElements/FormRankField\": 83980,\n\t\"./NewUI/Components/CustomUIElements/FormRankField.tsx\": 83980,\n\t\"./NewUI/Components/CustomUIElements/FormSelectField\": 83750,\n\t\"./NewUI/Components/CustomUIElements/FormSelectField.tsx\": 83750,\n\t\"./NewUI/Components/CustomUIElements/FormSelectWithIconField\": 29351,\n\t\"./NewUI/Components/CustomUIElements/FormSelectWithIconField.tsx\": 29351,\n\t\"./NewUI/Components/CustomUIElements/FormTextField\": 98821,\n\t\"./NewUI/Components/CustomUIElements/FormTextField.tsx\": 98821,\n\t\"./NewUI/Components/CustomUIElements/InfoBox\": 44979,\n\t\"./NewUI/Components/CustomUIElements/InfoBox.tsx\": 44979,\n\t\"./NewUI/Components/CustomUIElements/JobAdSuccessDialog\": 75177,\n\t\"./NewUI/Components/CustomUIElements/JobAdSuccessDialog.tsx\": 75177,\n\t\"./NewUI/Components/CustomUIElements/MultiSelect\": 44831,\n\t\"./NewUI/Components/CustomUIElements/MultiSelect.tsx\": 44831,\n\t\"./NewUI/Components/CustomUIElements/MultiSelectWithCreate\": 56859,\n\t\"./NewUI/Components/CustomUIElements/MultiSelectWithCreate.tsx\": 56859,\n\t\"./NewUI/Components/CustomUIElements/MultiTagInput\": 46523,\n\t\"./NewUI/Components/CustomUIElements/MultiTagInput.tsx\": 46523,\n\t\"./NewUI/Components/CustomUIElements/MultipleDatesPicker\": 36097,\n\t\"./NewUI/Components/CustomUIElements/MultipleDatesPicker.tsx\": 36097,\n\t\"./NewUI/Components/CustomUIElements/SelectField\": 1060,\n\t\"./NewUI/Components/CustomUIElements/SelectField.tsx\": 1060,\n\t\"./NewUI/Components/CustomUIElements/SingleDatePicker\": 19772,\n\t\"./NewUI/Components/CustomUIElements/SingleDatePicker.tsx\": 19772,\n\t\"./NewUI/Components/CustomUIElements/SmsTemplateComponent\": 93500,\n\t\"./NewUI/Components/CustomUIElements/SmsTemplateComponent.tsx\": 93500,\n\t\"./NewUI/Components/CustomUIElements/StepperComponent\": 32639,\n\t\"./NewUI/Components/CustomUIElements/StepperComponent.js\": 32639,\n\t\"./NewUI/Components/CustomUIElements/StyledSnackbar\": 15846,\n\t\"./NewUI/Components/CustomUIElements/StyledSnackbar.tsx\": 15846,\n\t\"./NewUI/Components/CustomUIElements/TagList/TagList\": 47225,\n\t\"./NewUI/Components/CustomUIElements/TagList/TagList.tsx\": 47225,\n\t\"./NewUI/Components/CustomUIElements/TagList/styles\": 41549,\n\t\"./NewUI/Components/CustomUIElements/TagList/styles.ts\": 41549,\n\t\"./NewUI/Components/CustomUIElements/TextEditor\": 14708,\n\t\"./NewUI/Components/CustomUIElements/TextEditor.tsx\": 14708,\n\t\"./NewUI/Components/CustomUIElements/VirtualizedAutocomplete\": 12035,\n\t\"./NewUI/Components/CustomUIElements/VirtualizedAutocomplete.tsx\": 12035,\n\t\"./NewUI/Components/CustomUIElements/VirtualizedGroupedAutocomplete\": 78365,\n\t\"./NewUI/Components/CustomUIElements/VirtualizedGroupedAutocomplete.tsx\": 78365,\n\t\"./NewUI/Components/CustomUIElements/sharedClasses\": 75151,\n\t\"./NewUI/Components/CustomUIElements/sharedClasses.ts\": 75151,\n\t\"./NewUI/Components/GenericModal/ModalFooterButtons\": 70589,\n\t\"./NewUI/Components/GenericModal/ModalFooterButtons.tsx\": 70589,\n\t\"./NewUI/Components/GenericModal/StyledModal\": 15385,\n\t\"./NewUI/Components/GenericModal/StyledModal.tsx\": 15385,\n\t\"./NewUI/Components/GenericModal/styles\": 37518,\n\t\"./NewUI/Components/GenericModal/styles.ts\": 37518,\n\t\"./NewUI/Components/GenericTable/Dropdowns/ColumnSettings\": 71293,\n\t\"./NewUI/Components/GenericTable/Dropdowns/ColumnSettings.tsx\": 71293,\n\t\"./NewUI/Components/GenericTable/Dropdowns/Filters\": 94899,\n\t\"./NewUI/Components/GenericTable/Dropdowns/Filters.tsx\": 94899,\n\t\"./NewUI/Components/GenericTable/Dropdowns/SortableField\": 30690,\n\t\"./NewUI/Components/GenericTable/Dropdowns/SortableField.tsx\": 30690,\n\t\"./NewUI/Components/GenericTable/Dropdowns/styles\": 66078,\n\t\"./NewUI/Components/GenericTable/Dropdowns/styles.ts\": 66078,\n\t\"./NewUI/Components/GenericTable/ExportCsvButton\": 72523,\n\t\"./NewUI/Components/GenericTable/ExportCsvButton.tsx\": 72523,\n\t\"./NewUI/Components/GenericTable/Filters/DateRangeFilter\": 11300,\n\t\"./NewUI/Components/GenericTable/Filters/DateRangeFilter.tsx\": 11300,\n\t\"./NewUI/Components/GenericTable/Filters/MultiSelectFilter\": 76356,\n\t\"./NewUI/Components/GenericTable/Filters/MultiSelectFilter.tsx\": 76356,\n\t\"./NewUI/Components/GenericTable/Filters/RadiusSearchFilter\": 24333,\n\t\"./NewUI/Components/GenericTable/Filters/RadiusSearchFilter.tsx\": 24333,\n\t\"./NewUI/Components/GenericTable/GenericTable\": 1848,\n\t\"./NewUI/Components/GenericTable/GenericTable.tsx\": 1848,\n\t\"./NewUI/Components/GenericTable/GenericTableActions\": 65491,\n\t\"./NewUI/Components/GenericTable/GenericTableActions.tsx\": 65491,\n\t\"./NewUI/Components/GenericTable/GenericTableBody\": 70152,\n\t\"./NewUI/Components/GenericTable/GenericTableBody.tsx\": 70152,\n\t\"./NewUI/Components/GenericTable/GenericTableHead\": 5826,\n\t\"./NewUI/Components/GenericTable/GenericTableHead.tsx\": 5826,\n\t\"./NewUI/Components/GenericTable/GenericTablePagination\": 35020,\n\t\"./NewUI/Components/GenericTable/GenericTablePagination.tsx\": 35020,\n\t\"./NewUI/Components/GenericTable/ItemActionsDrawer\": 62256,\n\t\"./NewUI/Components/GenericTable/ItemActionsDrawer.tsx\": 62256,\n\t\"./NewUI/Components/GenericTable/LoadingTableItems\": 20785,\n\t\"./NewUI/Components/GenericTable/LoadingTableItems.tsx\": 20785,\n\t\"./NewUI/Components/GenericTable/NoItemsMessage\": 60813,\n\t\"./NewUI/Components/GenericTable/NoItemsMessage.tsx\": 60813,\n\t\"./NewUI/Components/GenericTable/SearchInput\": 41537,\n\t\"./NewUI/Components/GenericTable/SearchInput.tsx\": 41537,\n\t\"./NewUI/Components/GenericTable/TableArrows\": 6527,\n\t\"./NewUI/Components/GenericTable/TableArrows.tsx\": 6527,\n\t\"./NewUI/Components/GenericTable/TableCells/ExpandableLinkedTags\": 31643,\n\t\"./NewUI/Components/GenericTable/TableCells/ExpandableLinkedTags.tsx\": 31643,\n\t\"./NewUI/Components/GenericTable/TableCells/FormattedDate\": 10511,\n\t\"./NewUI/Components/GenericTable/TableCells/FormattedDate.tsx\": 10511,\n\t\"./NewUI/Components/GenericTable/TableCells/NotesWithSubjectLine\": 48692,\n\t\"./NewUI/Components/GenericTable/TableCells/NotesWithSubjectLine.tsx\": 48692,\n\t\"./NewUI/Components/GenericTable/TablePopovers/AddNoteWithSubjectLine\": 74481,\n\t\"./NewUI/Components/GenericTable/TablePopovers/AddNoteWithSubjectLine.tsx\": 74481,\n\t\"./NewUI/Components/GenericTable/TablePopovers/AttachmentsList\": 63668,\n\t\"./NewUI/Components/GenericTable/TablePopovers/AttachmentsList.tsx\": 63668,\n\t\"./NewUI/Components/GenericTable/TablePopovers/MoreOptionsList\": 40801,\n\t\"./NewUI/Components/GenericTable/TablePopovers/MoreOptionsList.tsx\": 40801,\n\t\"./NewUI/Components/GenericTable/TotalSelectedIndicator\": 13977,\n\t\"./NewUI/Components/GenericTable/TotalSelectedIndicator.tsx\": 13977,\n\t\"./NewUI/Components/GenericTable/TotalSelectedIndicatorWithActions\": 83676,\n\t\"./NewUI/Components/GenericTable/TotalSelectedIndicatorWithActions.tsx\": 83676,\n\t\"./NewUI/Components/GenericTable/genericTableReducer\": 37534,\n\t\"./NewUI/Components/GenericTable/genericTableReducer.tsx\": 37534,\n\t\"./NewUI/Components/GenericTable/styles\": 10605,\n\t\"./NewUI/Components/GenericTable/styles.ts\": 10605,\n\t\"./NewUI/Components/GenericTable/tableHelper\": 48795,\n\t\"./NewUI/Components/GenericTable/tableHelper.ts\": 48795,\n\t\"./NewUI/Components/GenericTable/types\": 44890,\n\t\"./NewUI/Components/GenericTable/types.ts\": 44890,\n\t\"./NewUI/Components/GenericTable/utilities\": 59047,\n\t\"./NewUI/Components/GenericTable/utilities.ts\": 59047,\n\t\"./NewUI/Components/Graphics/FileTickSVG\": 12882,\n\t\"./NewUI/Components/Graphics/FileTickSVG.tsx\": 12882,\n\t\"./NewUI/Components/Graphics/UploadSVG\": 58932,\n\t\"./NewUI/Components/Graphics/UploadSVG.tsx\": 58932,\n\t\"./NewUI/Components/Icons\": 54266,\n\t\"./NewUI/Components/Icons/\": 54266,\n\t\"./NewUI/Components/Icons/Icons\": 36372,\n\t\"./NewUI/Components/Icons/Icons.tsx\": 36372,\n\t\"./NewUI/Components/Icons/index\": 54266,\n\t\"./NewUI/Components/Icons/index.ts\": 54266,\n\t\"./NewUI/Components/Modals/ConfirmationDialog\": 19927,\n\t\"./NewUI/Components/Modals/ConfirmationDialog.tsx\": 19927,\n\t\"./NewUI/Components/Modals/DownloadModal\": 80593,\n\t\"./NewUI/Components/Modals/DownloadModal.tsx\": 80593,\n\t\"./NewUI/Components/Modals/FilePreviewModal\": 4925,\n\t\"./NewUI/Components/Modals/FilePreviewModal.tsx\": 4925,\n\t\"./NewUI/Components/Modals/GenericDialog\": 49841,\n\t\"./NewUI/Components/Modals/GenericDialog.tsx\": 49841,\n\t\"./NewUI/Components/Modals/WarningDialog\": 51553,\n\t\"./NewUI/Components/Modals/WarningDialog.tsx\": 51553,\n\t\"./NewUI/Components/Modals/styles\": 73858,\n\t\"./NewUI/Components/Modals/styles.ts\": 73858,\n\t\"./NewUI/Components/Multiposter/ActionButton\": 24948,\n\t\"./NewUI/Components/Multiposter/ActionButton.tsx\": 24948,\n\t\"./NewUI/Components/Multiposter/ActionPopover\": 72213,\n\t\"./NewUI/Components/Multiposter/ActionPopover.tsx\": 72213,\n\t\"./NewUI/Components/Multiposter/AdTypePopover\": 15490,\n\t\"./NewUI/Components/Multiposter/AdTypePopover.tsx\": 15490,\n\t\"./NewUI/Components/Multiposter/Broadbean/AdTable\": 9814,\n\t\"./NewUI/Components/Multiposter/Broadbean/AdTable.tsx\": 9814,\n\t\"./NewUI/Components/Multiposter/Broadbean/BroadbeanAds\": 20551,\n\t\"./NewUI/Components/Multiposter/Broadbean/BroadbeanAds.tsx\": 20551,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/AdTable\": 2841,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/AdTable.tsx\": 2841,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/ApproveSVG\": 39293,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/ApproveSVG.tsx\": 39293,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/CouncilJobsAd\": 17334,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/CouncilJobsAd.tsx\": 17334,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/CouncilJobsAds\": 89243,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/CouncilJobsAds.tsx\": 89243,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/NewCouncilJobsAd/NewCouncilJobsAd\": 31879,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/NewCouncilJobsAd/NewCouncilJobsAd.tsx\": 31879,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/NewCouncilJobsAd/styles\": 37579,\n\t\"./NewUI/Components/Multiposter/CouncilJobs/NewCouncilJobsAd/styles.ts\": 37579,\n\t\"./NewUI/Components/Multiposter/ExpiryDialog\": 52827,\n\t\"./NewUI/Components/Multiposter/ExpiryDialog.tsx\": 52827,\n\t\"./NewUI/Components/Multiposter/ExpiryPopover\": 96228,\n\t\"./NewUI/Components/Multiposter/ExpiryPopover.tsx\": 96228,\n\t\"./NewUI/Components/Multiposter/FilterButton\": 85344,\n\t\"./NewUI/Components/Multiposter/FilterButton.tsx\": 85344,\n\t\"./NewUI/Components/Multiposter/GenericDialog\": 63911,\n\t\"./NewUI/Components/Multiposter/GenericDialog.tsx\": 63911,\n\t\"./NewUI/Components/Multiposter/Idibu/IdibuAds\": 82615,\n\t\"./NewUI/Components/Multiposter/Idibu/IdibuAds.tsx\": 82615,\n\t\"./NewUI/Components/Multiposter/Indeed/AdTable\": 80133,\n\t\"./NewUI/Components/Multiposter/Indeed/AdTable.tsx\": 80133,\n\t\"./NewUI/Components/Multiposter/Indeed/IndeedAds\": 74443,\n\t\"./NewUI/Components/Multiposter/Indeed/IndeedAds.tsx\": 74443,\n\t\"./NewUI/Components/Multiposter/Seek/AdTable\": 64450,\n\t\"./NewUI/Components/Multiposter/Seek/AdTable.tsx\": 64450,\n\t\"./NewUI/Components/Multiposter/Seek/CopyAdIdButton\": 68064,\n\t\"./NewUI/Components/Multiposter/Seek/CopyAdIdButton.tsx\": 68064,\n\t\"./NewUI/Components/Multiposter/Seek/CreateAdDialog\": 21476,\n\t\"./NewUI/Components/Multiposter/Seek/CreateAdDialog.tsx\": 21476,\n\t\"./NewUI/Components/Multiposter/Seek/SeekAds\": 87961,\n\t\"./NewUI/Components/Multiposter/Seek/SeekAds.tsx\": 87961,\n\t\"./NewUI/Components/Multiposter/Seek/styles\": 71055,\n\t\"./NewUI/Components/Multiposter/Seek/styles.ts\": 71055,\n\t\"./NewUI/Components/Multiposter/TableSkeleton\": 73845,\n\t\"./NewUI/Components/Multiposter/TableSkeleton.tsx\": 73845,\n\t\"./NewUI/Components/Multiposter/ViewJobs/AdEditor\": 84315,\n\t\"./NewUI/Components/Multiposter/ViewJobs/AdEditor.js\": 84315,\n\t\"./NewUI/Components/Multiposter/ViewJobs/AdTable\": 6905,\n\t\"./NewUI/Components/Multiposter/ViewJobs/AdTable.tsx\": 6905,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps\": 25667,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/\": 25667,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/Step1\": 2794,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/Step1.js\": 2794,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/Step2\": 87895,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/Step2.js\": 87895,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/Step3\": 98176,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/Step3.js\": 98176,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/index\": 25667,\n\t\"./NewUI/Components/Multiposter/ViewJobs/Steps/index.js\": 25667,\n\t\"./NewUI/Components/Multiposter/ViewJobs/ViewJobsAds\": 9563,\n\t\"./NewUI/Components/Multiposter/ViewJobs/ViewJobsAds.tsx\": 9563,\n\t\"./NewUI/Components/Multiposter/ViewJobs/useStyles\": 49274,\n\t\"./NewUI/Components/Multiposter/ViewJobs/useStyles.js\": 49274,\n\t\"./NewUI/Components/Multiposter/handleDraftValue\": 99067,\n\t\"./NewUI/Components/Multiposter/handleDraftValue.js\": 99067,\n\t\"./NewUI/Components/Multiposter/handleNext\": 22710,\n\t\"./NewUI/Components/Multiposter/handleNext.js\": 22710,\n\t\"./NewUI/Components/Multiposter/salaryHelper\": 80627,\n\t\"./NewUI/Components/Multiposter/salaryHelper.js\": 80627,\n\t\"./NewUI/Components/Multiposter/styles\": 72448,\n\t\"./NewUI/Components/Multiposter/styles.ts\": 72448,\n\t\"./NewUI/Components/Multiposter/types\": 7213,\n\t\"./NewUI/Components/Multiposter/types.ts\": 7213,\n\t\"./NewUI/Components/OptionToggleGroup\": 296,\n\t\"./NewUI/Components/OptionToggleGroup/\": 296,\n\t\"./NewUI/Components/OptionToggleGroup/OptionToggleGroup\": 44820,\n\t\"./NewUI/Components/OptionToggleGroup/OptionToggleGroup.tsx\": 44820,\n\t\"./NewUI/Components/OptionToggleGroup/index\": 296,\n\t\"./NewUI/Components/OptionToggleGroup/index.ts\": 296,\n\t\"./NewUI/Components/PreviewTable\": 54324,\n\t\"./NewUI/Components/PreviewTable/\": 54324,\n\t\"./NewUI/Components/PreviewTable/TableBody\": 87048,\n\t\"./NewUI/Components/PreviewTable/TableBody.tsx\": 87048,\n\t\"./NewUI/Components/PreviewTable/TableHeader\": 6431,\n\t\"./NewUI/Components/PreviewTable/TableHeader.tsx\": 6431,\n\t\"./NewUI/Components/PreviewTable/index\": 54324,\n\t\"./NewUI/Components/PreviewTable/index.tsx\": 54324,\n\t\"./NewUI/Components/PreviewTable/styles\": 96860,\n\t\"./NewUI/Components/PreviewTable/styles.ts\": 96860,\n\t\"./NewUI/Components/PreviewTable/types\": 95497,\n\t\"./NewUI/Components/PreviewTable/types.ts\": 95497,\n\t\"./NewUI/Components/Utilities/AttachmentAndGoogleDriveSelector\": 75036,\n\t\"./NewUI/Components/Utilities/AttachmentAndGoogleDriveSelector.tsx\": 75036,\n\t\"./NewUI/Components/Utilities/AttachmentSelector\": 97358,\n\t\"./NewUI/Components/Utilities/AttachmentSelector.tsx\": 97358,\n\t\"./NewUI/Components/Utilities/DebounceInput\": 70943,\n\t\"./NewUI/Components/Utilities/DebounceInput.tsx\": 70943,\n\t\"./NewUI/Components/Utilities/DocTypeIcon\": 16237,\n\t\"./NewUI/Components/Utilities/DocTypeIcon.tsx\": 16237,\n\t\"./NewUI/Components/Utilities/HtmlEditor\": 60522,\n\t\"./NewUI/Components/Utilities/HtmlEditor.tsx\": 60522,\n\t\"./NewUI/Components/Utilities/HtmlEditorFonts\": 97962,\n\t\"./NewUI/Components/Utilities/HtmlEditorFonts.ts\": 97962,\n\t\"./NewUI/Components/Utilities/QuestionFieldGenerator\": 21741,\n\t\"./NewUI/Components/Utilities/QuestionFieldGenerator.tsx\": 21741,\n\t\"./NewUI/Components/Utilities/QuestionFieldViewer\": 37014,\n\t\"./NewUI/Components/Utilities/QuestionFieldViewer.tsx\": 37014,\n\t\"./NewUI/Components/Utilities/RequisitionInfoViewer\": 67958,\n\t\"./NewUI/Components/Utilities/RequisitionInfoViewer.tsx\": 67958,\n\t\"./NewUI/Components/Utilities/SingleAttachmentSelector\": 99910,\n\t\"./NewUI/Components/Utilities/SingleAttachmentSelector.tsx\": 99910,\n\t\"./NewUI/Components/Utilities/callAPI\": 57220,\n\t\"./NewUI/Components/Utilities/callAPI.ts\": 57220,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish\": 9047,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish.ts\": 9047,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/\": 61760,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data\": 62633,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/\": 62633,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/american_spellings.json\": 23869,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/british_spellings.json\": 51758,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/index\": 62633,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/index.spec\": 76700,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/index.spec.ts\": 76700,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/data/index.ts\": 62633,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff\": 1818,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/\": 1818,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/diff\": 20603,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/diff.ts\": 20603,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/index\": 1818,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/index.ts\": 1818,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/interface\": 59897,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/diff/interface.ts\": 59897,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/index\": 61760,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/index.ts\": 61760,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/case\": 62985,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/case.spec\": 2940,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/case.spec.ts\": 2940,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/case.ts\": 62985,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/interface\": 25102,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/interface.ts\": 25102,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translate\": 24755,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translate.spec\": 72022,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translate.spec.ts\": 72022,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translate.ts\": 24755,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateCase\": 98559,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateCase.spec\": 73818,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateCase.spec.ts\": 73818,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateCase.ts\": 98559,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateWord\": 95335,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateWord.spec\": 93570,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateWord.spec.ts\": 93570,\n\t\"./NewUI/Components/Utilities/convertToLocalEnglish/internals/translateWord.ts\": 95335,\n\t\"./NewUI/Components/Utilities/copyToClipboard\": 32234,\n\t\"./NewUI/Components/Utilities/copyToClipboard.ts\": 32234,\n\t\"./NewUI/Components/Utilities/countryParser\": 98169,\n\t\"./NewUI/Components/Utilities/countryParser.ts\": 98169,\n\t\"./NewUI/Components/Utilities/emailIsValid\": 64776,\n\t\"./NewUI/Components/Utilities/emailIsValid.ts\": 64776,\n\t\"./NewUI/Components/Utilities/formatUserPermissions\": 35832,\n\t\"./NewUI/Components/Utilities/formatUserPermissions.tsx\": 35832,\n\t\"./NewUI/Components/Utilities/handleAPIRequest\": 33949,\n\t\"./NewUI/Components/Utilities/handleAPIRequest.ts\": 33949,\n\t\"./NewUI/Components/Utilities/handleRichCopy\": 99147,\n\t\"./NewUI/Components/Utilities/handleRichCopy.ts\": 99147,\n\t\"./NewUI/Components/Utilities/humanFileSize\": 70042,\n\t\"./NewUI/Components/Utilities/humanFileSize.ts\": 70042,\n\t\"./NewUI/Components/Utilities/immutableRemove\": 70656,\n\t\"./NewUI/Components/Utilities/immutableRemove.ts\": 70656,\n\t\"./NewUI/Components/Utilities/secondsToString\": 49249,\n\t\"./NewUI/Components/Utilities/secondsToString.ts\": 49249,\n\t\"./NewUI/Components/Utilities/stringToSeconds\": 81861,\n\t\"./NewUI/Components/Utilities/stringToSeconds.ts\": 81861,\n\t\"./NewUI/Components/Utilities/styles\": 72424,\n\t\"./NewUI/Components/Utilities/styles.ts\": 72424,\n\t\"./NewUI/Components/Utilities/useWebSockets\": 13113,\n\t\"./NewUI/Components/Utilities/useWebSockets.tsx\": 13113,\n\t\"./NewUI/Components/sharedTypes\": 29073,\n\t\"./NewUI/Components/sharedTypes.ts\": 29073,\n\t\"./NewUI/Dashboard\": 27349,\n\t\"./NewUI/Dashboard/\": 27349,\n\t\"./NewUI/Dashboard/API\": 36633,\n\t\"./NewUI/Dashboard/API.ts\": 36633,\n\t\"./NewUI/Dashboard/Dashboard\": 52475,\n\t\"./NewUI/Dashboard/Dashboard.tsx\": 52475,\n\t\"./NewUI/Dashboard/assets/Banner\": 76319,\n\t\"./NewUI/Dashboard/assets/Banner.tsx\": 76319,\n\t\"./NewUI/Dashboard/assets/EventCircle\": 48953,\n\t\"./NewUI/Dashboard/assets/EventCircle.tsx\": 48953,\n\t\"./NewUI/Dashboard/components/KpiBanner\": 66570,\n\t\"./NewUI/Dashboard/components/KpiBanner.tsx\": 66570,\n\t\"./NewUI/Dashboard/components/KpiItem\": 95253,\n\t\"./NewUI/Dashboard/components/KpiItem.tsx\": 95253,\n\t\"./NewUI/Dashboard/components/Loader\": 70441,\n\t\"./NewUI/Dashboard/components/Loader.tsx\": 70441,\n\t\"./NewUI/Dashboard/components/NewApplicants\": 80801,\n\t\"./NewUI/Dashboard/components/NewApplicants.tsx\": 80801,\n\t\"./NewUI/Dashboard/components/PinnedJobs\": 83706,\n\t\"./NewUI/Dashboard/components/PinnedJobs.tsx\": 83706,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TaskItem\": 5616,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TaskItem/\": 5616,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TaskItem/TaskItem\": 40396,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TaskItem/TaskItem.tsx\": 40396,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TaskItem/index\": 5616,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TaskItem/index.ts\": 5616,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TasksDashboard\": 15749,\n\t\"./NewUI/Dashboard/components/TasksDashboard/TasksDashboard.tsx\": 15749,\n\t\"./NewUI/Dashboard/components/TasksDashboard/components/TaskItem\": 90606,\n\t\"./NewUI/Dashboard/components/TasksDashboard/components/TaskItem.tsx\": 90606,\n\t\"./NewUI/Dashboard/components/TasksDashboard/styles\": 19123,\n\t\"./NewUI/Dashboard/components/TasksDashboard/styles.ts\": 19123,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/UpcomingEvents\": 19707,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/UpcomingEvents.tsx\": 19707,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/components/AttendeeList\": 67201,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/components/AttendeeList.tsx\": 67201,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/components/EventItem\": 59810,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/components/EventItem.tsx\": 59810,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/copyEventLinks\": 60682,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/copyEventLinks.tsx\": 60682,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/styles\": 14496,\n\t\"./NewUI/Dashboard/components/UpcomingEvents/styles.ts\": 14496,\n\t\"./NewUI/Dashboard/index\": 27349,\n\t\"./NewUI/Dashboard/index.ts\": 27349,\n\t\"./NewUI/Dashboard/styles\": 79923,\n\t\"./NewUI/Dashboard/styles.ts\": 79923,\n\t\"./NewUI/Dashboard/types\": 73776,\n\t\"./NewUI/Dashboard/types.ts\": 73776,\n\t\"./NewUI/EditJob\": 98446,\n\t\"./NewUI/EditJob/\": 98446,\n\t\"./NewUI/EditJob/Advanced/AIStudio/AIStudioSettings\": 59427,\n\t\"./NewUI/EditJob/Advanced/AIStudio/AIStudioSettings.tsx\": 59427,\n\t\"./NewUI/EditJob/Advanced/AIStudio/QuestionsList\": 37997,\n\t\"./NewUI/EditJob/Advanced/AIStudio/QuestionsList.tsx\": 37997,\n\t\"./NewUI/EditJob/Advanced/GoogleConversionScript/GoogleScript\": 81632,\n\t\"./NewUI/EditJob/Advanced/GoogleConversionScript/GoogleScript.tsx\": 81632,\n\t\"./NewUI/EditJob/Advanced/PanelWorkflow/PanelWorkflow\": 99966,\n\t\"./NewUI/EditJob/Advanced/PanelWorkflow/PanelWorkflow.tsx\": 99966,\n\t\"./NewUI/EditJob/Advanced/RequisitionInfo/RequisitionInfo\": 20590,\n\t\"./NewUI/EditJob/Advanced/RequisitionInfo/RequisitionInfo.tsx\": 20590,\n\t\"./NewUI/EditJob/Advanced/Revolve/Revolve\": 46590,\n\t\"./NewUI/EditJob/Advanced/Revolve/Revolve.tsx\": 46590,\n\t\"./NewUI/EditJob/Advanced/TestGrid/NoTests\": 79550,\n\t\"./NewUI/EditJob/Advanced/TestGrid/NoTests.tsx\": 79550,\n\t\"./NewUI/EditJob/Advanced/TestGrid/TestGrid\": 3216,\n\t\"./NewUI/EditJob/Advanced/TestGrid/TestGrid.tsx\": 3216,\n\t\"./NewUI/EditJob/Advanced/TestGrid/TestGridModal\": 36857,\n\t\"./NewUI/EditJob/Advanced/TestGrid/TestGridModal.tsx\": 36857,\n\t\"./NewUI/EditJob/Advanced/styles\": 85555,\n\t\"./NewUI/EditJob/Advanced/styles.ts\": 85555,\n\t\"./NewUI/EditJob/Automation/AutoForward/AutoForward\": 39521,\n\t\"./NewUI/EditJob/Automation/AutoForward/AutoForward.tsx\": 39521,\n\t\"./NewUI/EditJob/Automation/AutoForward/NewAutoForward\": 19779,\n\t\"./NewUI/EditJob/Automation/AutoForward/NewAutoForward.tsx\": 19779,\n\t\"./NewUI/EditJob/Automation/AutoReply/AutoReply\": 15409,\n\t\"./NewUI/EditJob/Automation/AutoReply/AutoReply.tsx\": 15409,\n\t\"./NewUI/EditJob/Automation/AutoReply/NewAutoReply\": 62117,\n\t\"./NewUI/EditJob/Automation/AutoReply/NewAutoReply.tsx\": 62117,\n\t\"./NewUI/EditJob/Automation/AutoSMSForward/AutoSMSForward\": 34729,\n\t\"./NewUI/EditJob/Automation/AutoSMSForward/AutoSMSForward.tsx\": 34729,\n\t\"./NewUI/EditJob/Automation/AutoSMSForward/NewAutoSMSForward\": 58329,\n\t\"./NewUI/EditJob/Automation/AutoSMSForward/NewAutoSMSForward.tsx\": 58329,\n\t\"./NewUI/EditJob/Automation/AutoSMSReply/AutoSMSReply\": 23811,\n\t\"./NewUI/EditJob/Automation/AutoSMSReply/AutoSMSReply.tsx\": 23811,\n\t\"./NewUI/EditJob/Automation/AutoSMSReply/NewAutoSMSReply\": 24013,\n\t\"./NewUI/EditJob/Automation/AutoSMSReply/NewAutoSMSReply.tsx\": 24013,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/AutoStatuses\": 42401,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/AutoStatuses.tsx\": 42401,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/NoAutoStatusSVG\": 60788,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/NoAutoStatusSVG.tsx\": 60788,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/QuestionBased\": 76577,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/QuestionBased.tsx\": 76577,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/RatingBased\": 82328,\n\t\"./NewUI/EditJob/Automation/AutoStatuses/RatingBased.tsx\": 82328,\n\t\"./NewUI/EditJob/Automation/StatusTransitions/TimeBased\": 63427,\n\t\"./NewUI/EditJob/Automation/StatusTransitions/TimeBased.tsx\": 63427,\n\t\"./NewUI/EditJob/Automation/helpers/getBodyFromSmsTemplateValue\": 63842,\n\t\"./NewUI/EditJob/Automation/helpers/getBodyFromSmsTemplateValue.tsx\": 63842,\n\t\"./NewUI/EditJob/Automation/shared/CancelButton\": 63656,\n\t\"./NewUI/EditJob/Automation/shared/CancelButton.tsx\": 63656,\n\t\"./NewUI/EditJob/Automation/shared/DelaySelect\": 37033,\n\t\"./NewUI/EditJob/Automation/shared/DelaySelect.tsx\": 37033,\n\t\"./NewUI/EditJob/Automation/shared/DelaySelectWrapper\": 97164,\n\t\"./NewUI/EditJob/Automation/shared/DelaySelectWrapper.tsx\": 97164,\n\t\"./NewUI/EditJob/Automation/shared/ImmediateChangesNotice\": 67000,\n\t\"./NewUI/EditJob/Automation/shared/ImmediateChangesNotice.tsx\": 67000,\n\t\"./NewUI/EditJob/Automation/styles\": 63780,\n\t\"./NewUI/EditJob/Automation/styles.ts\": 63780,\n\t\"./NewUI/EditJob/Description/Description\": 27815,\n\t\"./NewUI/EditJob/Description/Description.tsx\": 27815,\n\t\"./NewUI/EditJob/EditJob\": 43123,\n\t\"./NewUI/EditJob/EditJob.tsx\": 43123,\n\t\"./NewUI/EditJob/EditJobToggleLeftSVG\": 69200,\n\t\"./NewUI/EditJob/EditJobToggleLeftSVG.tsx\": 69200,\n\t\"./NewUI/EditJob/EditJobToggleRightSVG\": 58703,\n\t\"./NewUI/EditJob/EditJobToggleRightSVG.tsx\": 58703,\n\t\"./NewUI/EditJob/General/Classifications/Classifications\": 24686,\n\t\"./NewUI/EditJob/General/Classifications/Classifications.tsx\": 24686,\n\t\"./NewUI/EditJob/General/General\": 57287,\n\t\"./NewUI/EditJob/General/General.tsx\": 57287,\n\t\"./NewUI/EditJob/HRQuestions/HRQuestions\": 98403,\n\t\"./NewUI/EditJob/HRQuestions/HRQuestions.tsx\": 98403,\n\t\"./NewUI/EditJob/HRQuestions/Modals/AddSystemField\": 95013,\n\t\"./NewUI/EditJob/HRQuestions/Modals/AddSystemField.tsx\": 95013,\n\t\"./NewUI/EditJob/HRQuestions/Modals/NewField\": 85574,\n\t\"./NewUI/EditJob/HRQuestions/Modals/NewField.tsx\": 85574,\n\t\"./NewUI/EditJob/HRQuestions/NewSystemFieldSVG\": 56153,\n\t\"./NewUI/EditJob/HRQuestions/NewSystemFieldSVG.tsx\": 56153,\n\t\"./NewUI/EditJob/HRQuestions/NoQuestionSVG\": 92547,\n\t\"./NewUI/EditJob/HRQuestions/NoQuestionSVG.tsx\": 92547,\n\t\"./NewUI/EditJob/HRQuestions/QuestionCardSensor\": 31520,\n\t\"./NewUI/EditJob/HRQuestions/QuestionCardSensor.tsx\": 31520,\n\t\"./NewUI/EditJob/HRQuestions/SortableItem\": 11249,\n\t\"./NewUI/EditJob/HRQuestions/SortableItem.tsx\": 11249,\n\t\"./NewUI/EditJob/HRQuestions/styles\": 75922,\n\t\"./NewUI/EditJob/HRQuestions/styles.ts\": 75922,\n\t\"./NewUI/EditJob/Questions/Modals/AddSystemField\": 14519,\n\t\"./NewUI/EditJob/Questions/Modals/AddSystemField.tsx\": 14519,\n\t\"./NewUI/EditJob/Questions/Modals/NewField\": 8059,\n\t\"./NewUI/EditJob/Questions/Modals/NewField.tsx\": 8059,\n\t\"./NewUI/EditJob/Questions/Modals/SortableChoice\": 73948,\n\t\"./NewUI/EditJob/Questions/Modals/SortableChoice.tsx\": 73948,\n\t\"./NewUI/EditJob/Questions/NewSystemFieldSVG\": 79139,\n\t\"./NewUI/EditJob/Questions/NewSystemFieldSVG.tsx\": 79139,\n\t\"./NewUI/EditJob/Questions/NoQuestionArrowSVG\": 88020,\n\t\"./NewUI/EditJob/Questions/NoQuestionArrowSVG.tsx\": 88020,\n\t\"./NewUI/EditJob/Questions/NoQuestionSVG\": 57725,\n\t\"./NewUI/EditJob/Questions/NoQuestionSVG.tsx\": 57725,\n\t\"./NewUI/EditJob/Questions/QuestionCardSensor\": 56622,\n\t\"./NewUI/EditJob/Questions/QuestionCardSensor.tsx\": 56622,\n\t\"./NewUI/EditJob/Questions/QuestionList\": 64526,\n\t\"./NewUI/EditJob/Questions/QuestionList.tsx\": 64526,\n\t\"./NewUI/EditJob/Questions/Questions\": 37435,\n\t\"./NewUI/EditJob/Questions/Questions.tsx\": 37435,\n\t\"./NewUI/EditJob/Questions/SortableItem\": 6879,\n\t\"./NewUI/EditJob/Questions/SortableItem.tsx\": 6879,\n\t\"./NewUI/EditJob/Questions/styles\": 96756,\n\t\"./NewUI/EditJob/Questions/styles.ts\": 96756,\n\t\"./NewUI/EditJob/Sources/AccountClockIcon\": 34019,\n\t\"./NewUI/EditJob/Sources/AccountClockIcon.tsx\": 34019,\n\t\"./NewUI/EditJob/Sources/Sources\": 84143,\n\t\"./NewUI/EditJob/Sources/Sources.tsx\": 84143,\n\t\"./NewUI/EditJob/Sources/SourcesIconSVG\": 79000,\n\t\"./NewUI/EditJob/Sources/SourcesIconSVG.tsx\": 79000,\n\t\"./NewUI/EditJob/Template/Template\": 65285,\n\t\"./NewUI/EditJob/Template/Template.tsx\": 65285,\n\t\"./NewUI/EditJob/index\": 98446,\n\t\"./NewUI/EditJob/index.tsx\": 98446,\n\t\"./NewUI/EditJob/shared/SkeletonTable\": 2333,\n\t\"./NewUI/EditJob/shared/SkeletonTable.tsx\": 2333,\n\t\"./NewUI/EditJob/styles\": 12114,\n\t\"./NewUI/EditJob/styles.ts\": 12114,\n\t\"./NewUI/EditJob/tabIndexUtils\": 27424,\n\t\"./NewUI/EditJob/tabIndexUtils.ts\": 27424,\n\t\"./NewUI/EditJob/types\": 60767,\n\t\"./NewUI/EditJob/types.ts\": 60767,\n\t\"./NewUI/Job\": 5194,\n\t\"./NewUI/Job/\": 5194,\n\t\"./NewUI/Job/API\": 65854,\n\t\"./NewUI/Job/API.ts\": 65854,\n\t\"./NewUI/Job/ActionModals/AddTask/AddTasks\": 38393,\n\t\"./NewUI/Job/ActionModals/AddTask/AddTasks.tsx\": 38393,\n\t\"./NewUI/Job/ActionModals/AddTask/styles\": 26046,\n\t\"./NewUI/Job/ActionModals/AddTask/styles.ts\": 26046,\n\t\"./NewUI/Job/ActionModals/CeridianDayforce/CeridianDayforce\": 70,\n\t\"./NewUI/Job/ActionModals/CeridianDayforce/CeridianDayforce.tsx\": 70,\n\t\"./NewUI/Job/ActionModals/CeridianDayforce/styles\": 90736,\n\t\"./NewUI/Job/ActionModals/CeridianDayforce/styles.ts\": 90736,\n\t\"./NewUI/Job/ActionModals/MoveJob/MoveJob\": 40696,\n\t\"./NewUI/Job/ActionModals/MoveJob/MoveJob.tsx\": 40696,\n\t\"./NewUI/Job/ActionModals/MoveJob/styles\": 9196,\n\t\"./NewUI/Job/ActionModals/MoveJob/styles.ts\": 9196,\n\t\"./NewUI/Job/ActionModals/RatingSet/RatingSet\": 34116,\n\t\"./NewUI/Job/ActionModals/RatingSet/RatingSet.tsx\": 34116,\n\t\"./NewUI/Job/ActionModals/RatingSet/styles\": 45029,\n\t\"./NewUI/Job/ActionModals/RatingSet/styles.ts\": 45029,\n\t\"./NewUI/Job/ActionModals/Revisions/Revisions\": 51164,\n\t\"./NewUI/Job/ActionModals/Revisions/Revisions.tsx\": 51164,\n\t\"./NewUI/Job/ActionModals/Revisions/styles\": 92334,\n\t\"./NewUI/Job/ActionModals/Revisions/styles.ts\": 92334,\n\t\"./NewUI/Job/ActionModals/StartWorkflow/StartWorkFlow\": 17456,\n\t\"./NewUI/Job/ActionModals/StartWorkflow/StartWorkFlow.tsx\": 17456,\n\t\"./NewUI/Job/ActionModals/StartWorkflow/styles\": 24151,\n\t\"./NewUI/Job/ActionModals/StartWorkflow/styles.ts\": 24151,\n\t\"./NewUI/Job/Applications/Applications\": 29619,\n\t\"./NewUI/Job/Applications/Applications.tsx\": 29619,\n\t\"./NewUI/Job/Applications/ApplicationsActionsPanel\": 10510,\n\t\"./NewUI/Job/Applications/ApplicationsActionsPanel.tsx\": 10510,\n\t\"./NewUI/Job/Applications/ApplicationsTable\": 12431,\n\t\"./NewUI/Job/Applications/ApplicationsTable.tsx\": 12431,\n\t\"./NewUI/Job/Applications/CustomIcons\": 29661,\n\t\"./NewUI/Job/Applications/CustomIcons.tsx\": 29661,\n\t\"./NewUI/Job/Applications/Dropdowns/FieldDropdown\": 62548,\n\t\"./NewUI/Job/Applications/Dropdowns/FieldDropdown.tsx\": 62548,\n\t\"./NewUI/Job/Applications/Dropdowns/FilterDropdown\": 6026,\n\t\"./NewUI/Job/Applications/Dropdowns/FilterDropdown.tsx\": 6026,\n\t\"./NewUI/Job/Applications/Dropdowns/SortableField\": 72175,\n\t\"./NewUI/Job/Applications/Dropdowns/SortableField.tsx\": 72175,\n\t\"./NewUI/Job/Applications/EditableNote\": 73814,\n\t\"./NewUI/Job/Applications/EditableNote.tsx\": 73814,\n\t\"./NewUI/Job/Applications/Modals/AddToEvent\": 5967,\n\t\"./NewUI/Job/Applications/Modals/AddToEvent.tsx\": 5967,\n\t\"./NewUI/Job/Applications/Modals/CSVExport\": 77023,\n\t\"./NewUI/Job/Applications/Modals/CSVExport.tsx\": 77023,\n\t\"./NewUI/Job/Applications/Modals/ChangeStatus\": 76927,\n\t\"./NewUI/Job/Applications/Modals/ChangeStatus.tsx\": 76927,\n\t\"./NewUI/Job/Applications/Modals/EmailCandidates\": 99691,\n\t\"./NewUI/Job/Applications/Modals/EmailCandidates.tsx\": 99691,\n\t\"./NewUI/Job/Applications/Modals/ExportFoundu\": 28826,\n\t\"./NewUI/Job/Applications/Modals/ExportFoundu.tsx\": 28826,\n\t\"./NewUI/Job/Applications/Modals/ExportPDF\": 28057,\n\t\"./NewUI/Job/Applications/Modals/ExportPDF.tsx\": 28057,\n\t\"./NewUI/Job/Applications/Modals/ExportToOnboard\": 16171,\n\t\"./NewUI/Job/Applications/Modals/ExportToOnboard.tsx\": 16171,\n\t\"./NewUI/Job/Applications/Modals/ExternalEmail\": 44386,\n\t\"./NewUI/Job/Applications/Modals/ExternalEmail.tsx\": 44386,\n\t\"./NewUI/Job/Applications/Modals/InviteToTimeslot\": 94106,\n\t\"./NewUI/Job/Applications/Modals/InviteToTimeslot.tsx\": 94106,\n\t\"./NewUI/Job/Applications/Modals/MoveApplications\": 27515,\n\t\"./NewUI/Job/Applications/Modals/MoveApplications.tsx\": 27515,\n\t\"./NewUI/Job/Applications/Modals/NewApplication\": 87789,\n\t\"./NewUI/Job/Applications/Modals/NewApplication.tsx\": 87789,\n\t\"./NewUI/Job/Applications/Modals/SMSCandidates\": 15608,\n\t\"./NewUI/Job/Applications/Modals/SMSCandidates.tsx\": 15608,\n\t\"./NewUI/Job/Applications/Modals/TempCSVExport\": 68033,\n\t\"./NewUI/Job/Applications/Modals/TempCSVExport.tsx\": 68033,\n\t\"./NewUI/Job/Applications/NotePopover\": 80391,\n\t\"./NewUI/Job/Applications/NotePopover.tsx\": 80391,\n\t\"./NewUI/Job/Applications/Search\": 84969,\n\t\"./NewUI/Job/Applications/Search.tsx\": 84969,\n\t\"./NewUI/Job/Applications/SelectedApplicants\": 40668,\n\t\"./NewUI/Job/Applications/SelectedApplicants.tsx\": 40668,\n\t\"./NewUI/Job/Applications/config\": 62604,\n\t\"./NewUI/Job/Applications/config.ts\": 62604,\n\t\"./NewUI/Job/Applications/styles\": 7336,\n\t\"./NewUI/Job/Applications/styles.ts\": 7336,\n\t\"./NewUI/Job/Attachments/Attachments\": 62923,\n\t\"./NewUI/Job/Attachments/Attachments.tsx\": 62923,\n\t\"./NewUI/Job/Attachments/styles\": 33989,\n\t\"./NewUI/Job/Attachments/styles.ts\": 33989,\n\t\"./NewUI/Job/CandidateAttachments/CandidateAttachments\": 79663,\n\t\"./NewUI/Job/CandidateAttachments/CandidateAttachments.tsx\": 79663,\n\t\"./NewUI/Job/CandidateAttachments/SortableRow\": 68010,\n\t\"./NewUI/Job/CandidateAttachments/SortableRow.tsx\": 68010,\n\t\"./NewUI/Job/CandidateAttachments/styles\": 73986,\n\t\"./NewUI/Job/CandidateAttachments/styles.ts\": 73986,\n\t\"./NewUI/Job/EmailStatus/ClicksNoBackgroundSVG\": 22861,\n\t\"./NewUI/Job/EmailStatus/ClicksNoBackgroundSVG.tsx\": 22861,\n\t\"./NewUI/Job/EmailStatus/EmailPreviewModal\": 44906,\n\t\"./NewUI/Job/EmailStatus/EmailPreviewModal.tsx\": 44906,\n\t\"./NewUI/Job/EmailStatus/EmailStatus\": 34943,\n\t\"./NewUI/Job/EmailStatus/EmailStatus.tsx\": 34943,\n\t\"./NewUI/Job/EmailStatus/NoEmailStatusSVG\": 26348,\n\t\"./NewUI/Job/EmailStatus/NoEmailStatusSVG.tsx\": 26348,\n\t\"./NewUI/Job/EmailStatus/StatusTypeIcon\": 17056,\n\t\"./NewUI/Job/EmailStatus/StatusTypeIcon.tsx\": 17056,\n\t\"./NewUI/Job/EmailStatus/Widgets/BouncedSVG\": 17197,\n\t\"./NewUI/Job/EmailStatus/Widgets/BouncedSVG.tsx\": 17197,\n\t\"./NewUI/Job/EmailStatus/Widgets/ClicksSVG\": 54288,\n\t\"./NewUI/Job/EmailStatus/Widgets/ClicksSVG.tsx\": 54288,\n\t\"./NewUI/Job/EmailStatus/Widgets/DeliveredSVG\": 70353,\n\t\"./NewUI/Job/EmailStatus/Widgets/DeliveredSVG.tsx\": 70353,\n\t\"./NewUI/Job/EmailStatus/Widgets/OpenedSVG\": 75928,\n\t\"./NewUI/Job/EmailStatus/Widgets/OpenedSVG.tsx\": 75928,\n\t\"./NewUI/Job/EmailStatus/Widgets/Statistics\": 96138,\n\t\"./NewUI/Job/EmailStatus/Widgets/Statistics.tsx\": 96138,\n\t\"./NewUI/Job/EmailStatus/Widgets/UnsubscribedSVG\": 6102,\n\t\"./NewUI/Job/EmailStatus/Widgets/UnsubscribedSVG.tsx\": 6102,\n\t\"./NewUI/Job/EmailStatus/Widgets/styles\": 93019,\n\t\"./NewUI/Job/EmailStatus/Widgets/styles.ts\": 93019,\n\t\"./NewUI/Job/EmailStatus/styles\": 65493,\n\t\"./NewUI/Job/EmailStatus/styles.ts\": 65493,\n\t\"./NewUI/Job/Graphs/ChartWidget\": 30670,\n\t\"./NewUI/Job/Graphs/ChartWidget.tsx\": 30670,\n\t\"./NewUI/Job/Graphs/DatePicker\": 8254,\n\t\"./NewUI/Job/Graphs/DatePicker.tsx\": 8254,\n\t\"./NewUI/Job/Graphs/chart-loader.json\": 35064,\n\t\"./NewUI/Job/Graphs/styles\": 33570,\n\t\"./NewUI/Job/Graphs/styles.ts\": 33570,\n\t\"./NewUI/Job/Job\": 80603,\n\t\"./NewUI/Job/Job.tsx\": 80603,\n\t\"./NewUI/Job/Multiposter\": 90706,\n\t\"./NewUI/Job/Multiposter.tsx\": 90706,\n\t\"./NewUI/Job/Notes/NoteList\": 52198,\n\t\"./NewUI/Job/Notes/NoteList.tsx\": 52198,\n\t\"./NewUI/Job/Notes/Notes\": 47971,\n\t\"./NewUI/Job/Notes/Notes.tsx\": 47971,\n\t\"./NewUI/Job/Notes/SadNoteSVG\": 3264,\n\t\"./NewUI/Job/Notes/SadNoteSVG.tsx\": 3264,\n\t\"./NewUI/Job/Notes/styles\": 61472,\n\t\"./NewUI/Job/Notes/styles.ts\": 61472,\n\t\"./NewUI/Job/Widgets/ApplicationsAndViews\": 55908,\n\t\"./NewUI/Job/Widgets/ApplicationsAndViews.tsx\": 55908,\n\t\"./NewUI/Job/Widgets/CreationExpiry\": 88776,\n\t\"./NewUI/Job/Widgets/CreationExpiry.tsx\": 88776,\n\t\"./NewUI/Job/Widgets/JobInformation\": 72951,\n\t\"./NewUI/Job/Widgets/JobInformation.tsx\": 72951,\n\t\"./NewUI/Job/Widgets/Subcontainer\": 36913,\n\t\"./NewUI/Job/Widgets/Subcontainer.tsx\": 36913,\n\t\"./NewUI/Job/Widgets/calendar-clock.svg\": 71664,\n\t\"./NewUI/Job/Widgets/styles\": 91112,\n\t\"./NewUI/Job/Widgets/styles.ts\": 91112,\n\t\"./NewUI/Job/index\": 5194,\n\t\"./NewUI/Job/index.tsx\": 5194,\n\t\"./NewUI/Job/styles\": 85190,\n\t\"./NewUI/Job/styles.ts\": 85190,\n\t\"./NewUI/Job/types\": 17043,\n\t\"./NewUI/Job/types.ts\": 17043,\n\t\"./NewUI/Jobs/API\": 10327,\n\t\"./NewUI/Jobs/API.ts\": 10327,\n\t\"./NewUI/Jobs/Dropdowns/Export\": 52138,\n\t\"./NewUI/Jobs/Dropdowns/Export.tsx\": 52138,\n\t\"./NewUI/Jobs/Dropdowns/FieldDropdown\": 86121,\n\t\"./NewUI/Jobs/Dropdowns/FieldDropdown.tsx\": 86121,\n\t\"./NewUI/Jobs/Dropdowns/FilterDropdown\": 35777,\n\t\"./NewUI/Jobs/Dropdowns/FilterDropdown.tsx\": 35777,\n\t\"./NewUI/Jobs/Dropdowns/SortableField\": 54930,\n\t\"./NewUI/Jobs/Dropdowns/SortableField.tsx\": 54930,\n\t\"./NewUI/Jobs/Dropdowns/useStyles\": 52375,\n\t\"./NewUI/Jobs/Dropdowns/useStyles.ts\": 52375,\n\t\"./NewUI/Jobs/Jobs\": 38541,\n\t\"./NewUI/Jobs/Jobs.tsx\": 38541,\n\t\"./NewUI/Jobs/JobsTable/ArchivedJobs\": 26376,\n\t\"./NewUI/Jobs/JobsTable/ArchivedJobs.tsx\": 26376,\n\t\"./NewUI/Jobs/JobsTable/CurrentJobs\": 34595,\n\t\"./NewUI/Jobs/JobsTable/CurrentJobs.tsx\": 34595,\n\t\"./NewUI/Jobs/JobsTable/CurrentJobsTableHeader\": 21080,\n\t\"./NewUI/Jobs/JobsTable/CurrentJobsTableHeader.tsx\": 21080,\n\t\"./NewUI/Jobs/JobsTable/CurrentJobsTableRow\": 94499,\n\t\"./NewUI/Jobs/JobsTable/CurrentJobsTableRow.tsx\": 94499,\n\t\"./NewUI/Jobs/JobsTable/NoJobs\": 33911,\n\t\"./NewUI/Jobs/JobsTable/NoJobs.tsx\": 33911,\n\t\"./NewUI/Jobs/JobsTable/NotesPopover\": 26176,\n\t\"./NewUI/Jobs/JobsTable/NotesPopover.tsx\": 26176,\n\t\"./NewUI/Jobs/JobsTable/TableSkeleton\": 39577,\n\t\"./NewUI/Jobs/JobsTable/TableSkeleton.tsx\": 39577,\n\t\"./NewUI/Jobs/JobsTable/useStyles\": 92141,\n\t\"./NewUI/Jobs/JobsTable/useStyles.ts\": 92141,\n\t\"./NewUI/Jobs/NewJob/Attachment/Attachments\": 58319,\n\t\"./NewUI/Jobs/NewJob/Attachment/Attachments.tsx\": 58319,\n\t\"./NewUI/Jobs/NewJob/Attachment/styles\": 67537,\n\t\"./NewUI/Jobs/NewJob/Attachment/styles.ts\": 67537,\n\t\"./NewUI/Jobs/NewJob/NewJob\": 38956,\n\t\"./NewUI/Jobs/NewJob/NewJob.tsx\": 38956,\n\t\"./NewUI/Jobs/NewJob/styles\": 56003,\n\t\"./NewUI/Jobs/NewJob/styles.ts\": 56003,\n\t\"./NewUI/Jobs/Search\": 94389,\n\t\"./NewUI/Jobs/Search.tsx\": 94389,\n\t\"./NewUI/Jobs/config\": 14021,\n\t\"./NewUI/Jobs/config.ts\": 14021,\n\t\"./NewUI/Jobs/styles\": 28645,\n\t\"./NewUI/Jobs/styles.ts\": 28645,\n\t\"./NewUI/Jobs/types\": 65330,\n\t\"./NewUI/Jobs/types.ts\": 65330,\n\t\"./NewUI/Layout/Header/Components/Breadcrumbs\": 214,\n\t\"./NewUI/Layout/Header/Components/Breadcrumbs.tsx\": 214,\n\t\"./NewUI/Layout/Header/Components/ProfileDropdown/ProfileDropdown\": 80353,\n\t\"./NewUI/Layout/Header/Components/ProfileDropdown/ProfileDropdown.tsx\": 80353,\n\t\"./NewUI/Layout/Header/Components/ProfileDropdown/ProfileDropdownPopper\": 24323,\n\t\"./NewUI/Layout/Header/Components/ProfileDropdown/ProfileDropdownPopper.tsx\": 24323,\n\t\"./NewUI/Layout/Header/Components/Search\": 53706,\n\t\"./NewUI/Layout/Header/Components/Search.tsx\": 53706,\n\t\"./NewUI/Layout/Header/Components/ShowRightMenu\": 49666,\n\t\"./NewUI/Layout/Header/Components/ShowRightMenu.tsx\": 49666,\n\t\"./NewUI/Layout/Header/Components/SwitchEntityDialog\": 93347,\n\t\"./NewUI/Layout/Header/Components/SwitchEntityDialog.tsx\": 93347,\n\t\"./NewUI/Layout/Header/Header\": 46042,\n\t\"./NewUI/Layout/Header/Header.tsx\": 46042,\n\t\"./NewUI/Layout/Header/styles\": 44957,\n\t\"./NewUI/Layout/Header/styles.ts\": 44957,\n\t\"./NewUI/Layout/Navbar/Assets/AppsIcon\": 48893,\n\t\"./NewUI/Layout/Navbar/Assets/AppsIcon.tsx\": 48893,\n\t\"./NewUI/Layout/Navbar/Components/AppMenu/AppMenu\": 70302,\n\t\"./NewUI/Layout/Navbar/Components/AppMenu/AppMenu.tsx\": 70302,\n\t\"./NewUI/Layout/Navbar/Components/AppMenu/AppMenuItems\": 1316,\n\t\"./NewUI/Layout/Navbar/Components/AppMenu/AppMenuItems.tsx\": 1316,\n\t\"./NewUI/Layout/Navbar/Components/ExpandCollapseButton\": 97566,\n\t\"./NewUI/Layout/Navbar/Components/ExpandCollapseButton.tsx\": 97566,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/CollapsedNavigationChildren\": 75588,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/CollapsedNavigationChildren.tsx\": 75588,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/NavigationChildren\": 52141,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/NavigationChildren.tsx\": 52141,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/NavigationItems\": 49710,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/NavigationItems.tsx\": 49710,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/NavigationParent\": 39344,\n\t\"./NewUI/Layout/Navbar/Components/NavigationItems/NavigationParent.tsx\": 39344,\n\t\"./NewUI/Layout/Navbar/Navbar\": 26124,\n\t\"./NewUI/Layout/Navbar/Navbar.tsx\": 26124,\n\t\"./NewUI/Layout/Navbar/config\": 43680,\n\t\"./NewUI/Layout/Navbar/config.ts\": 43680,\n\t\"./NewUI/Layout/Navbar/styles\": 63300,\n\t\"./NewUI/Layout/Navbar/styles.ts\": 63300,\n\t\"./NewUI/Layout/Widgetsbar/ActivityFeed/ActivityFeed\": 281,\n\t\"./NewUI/Layout/Widgetsbar/ActivityFeed/ActivityFeed.tsx\": 281,\n\t\"./NewUI/Layout/Widgetsbar/ActivityFeed/ActivityFeedItem\": 58792,\n\t\"./NewUI/Layout/Widgetsbar/ActivityFeed/ActivityFeedItem.tsx\": 58792,\n\t\"./NewUI/Layout/Widgetsbar/RecentlyViewed/RecentlyViewed\": 27535,\n\t\"./NewUI/Layout/Widgetsbar/RecentlyViewed/RecentlyViewed.tsx\": 27535,\n\t\"./NewUI/Layout/Widgetsbar/RecentlyViewed/RecentlyViewedItem\": 26054,\n\t\"./NewUI/Layout/Widgetsbar/RecentlyViewed/RecentlyViewedItem.tsx\": 26054,\n\t\"./NewUI/Layout/Widgetsbar/Widgetsbar\": 66592,\n\t\"./NewUI/Layout/Widgetsbar/Widgetsbar.tsx\": 66592,\n\t\"./NewUI/Layout/Widgetsbar/WidgetsbarWrapper\": 8419,\n\t\"./NewUI/Layout/Widgetsbar/WidgetsbarWrapper.tsx\": 8419,\n\t\"./NewUI/Layout/Widgetsbar/config\": 6384,\n\t\"./NewUI/Layout/Widgetsbar/config.ts\": 6384,\n\t\"./NewUI/Layout/Widgetsbar/styles\": 35284,\n\t\"./NewUI/Layout/Widgetsbar/styles.ts\": 35284,\n\t\"./NewUI/SmartForms\": 26569,\n\t\"./NewUI/SmartForms/\": 26569,\n\t\"./NewUI/SmartForms/API\": 96191,\n\t\"./NewUI/SmartForms/API.ts\": 96191,\n\t\"./NewUI/SmartForms/EditFormPage\": 79754,\n\t\"./NewUI/SmartForms/EditFormPage.tsx\": 79754,\n\t\"./NewUI/SmartForms/Questions/Modals/AddSystemField\": 47600,\n\t\"./NewUI/SmartForms/Questions/Modals/AddSystemField.tsx\": 47600,\n\t\"./NewUI/SmartForms/Questions/Modals/ImportFields\": 64442,\n\t\"./NewUI/SmartForms/Questions/Modals/ImportFields.tsx\": 64442,\n\t\"./NewUI/SmartForms/Questions/Modals/NewField\": 81980,\n\t\"./NewUI/SmartForms/Questions/Modals/NewField.tsx\": 81980,\n\t\"./NewUI/SmartForms/Questions/Questions\": 4508,\n\t\"./NewUI/SmartForms/Questions/Questions.tsx\": 4508,\n\t\"./NewUI/SmartForms/Questions/SortableItem\": 19542,\n\t\"./NewUI/SmartForms/Questions/SortableItem.tsx\": 19542,\n\t\"./NewUI/SmartForms/Questions/styles\": 91983,\n\t\"./NewUI/SmartForms/Questions/styles.ts\": 91983,\n\t\"./NewUI/SmartForms/Sample/ListItem\": 6005,\n\t\"./NewUI/SmartForms/Sample/ListItem.tsx\": 6005,\n\t\"./NewUI/SmartForms/Sample/SampleList\": 50958,\n\t\"./NewUI/SmartForms/Sample/SampleList.tsx\": 50958,\n\t\"./NewUI/SmartForms/Search\": 31885,\n\t\"./NewUI/SmartForms/Search.tsx\": 31885,\n\t\"./NewUI/SmartForms/SmartFormFields\": 77099,\n\t\"./NewUI/SmartForms/SmartFormFields.tsx\": 77099,\n\t\"./NewUI/SmartForms/SmartFormModal\": 79489,\n\t\"./NewUI/SmartForms/SmartFormModal.tsx\": 79489,\n\t\"./NewUI/SmartForms/SmartFormPreview\": 14566,\n\t\"./NewUI/SmartForms/SmartFormPreview.tsx\": 14566,\n\t\"./NewUI/SmartForms/SmartFormPreviewPage\": 7555,\n\t\"./NewUI/SmartForms/SmartFormPreviewPage.tsx\": 7555,\n\t\"./NewUI/SmartForms/SmartForms\": 16381,\n\t\"./NewUI/SmartForms/SmartForms.tsx\": 16381,\n\t\"./NewUI/SmartForms/SmartFormsTable\": 19097,\n\t\"./NewUI/SmartForms/SmartFormsTable.tsx\": 19097,\n\t\"./NewUI/SmartForms/config\": 25245,\n\t\"./NewUI/SmartForms/config.ts\": 25245,\n\t\"./NewUI/SmartForms/index\": 26569,\n\t\"./NewUI/SmartForms/index.tsx\": 26569,\n\t\"./NewUI/SmartForms/reducer\": 62647,\n\t\"./NewUI/SmartForms/reducer.ts\": 62647,\n\t\"./NewUI/SmartForms/styles\": 81069,\n\t\"./NewUI/SmartForms/styles.ts\": 81069,\n\t\"./NewUI/SmartForms/types\": 826,\n\t\"./NewUI/SmartForms/types.ts\": 826,\n\t\"./NewUI/constants\": 87559,\n\t\"./NewUI/constants.ts\": 87559,\n\t\"./NewUI/helpers/uiPreferencesHelpers\": 24519,\n\t\"./NewUI/helpers/uiPreferencesHelpers.ts\": 24519,\n\t\"./NewUI/hooks\": 45917,\n\t\"./NewUI/hooks/\": 45917,\n\t\"./NewUI/hooks/index\": 45917,\n\t\"./NewUI/hooks/index.ts\": 45917,\n\t\"./NewUI/hooks/useApplicationsForTask\": 81215,\n\t\"./NewUI/hooks/useApplicationsForTask.ts\": 81215,\n\t\"./NewUI/hooks/useDispatch\": 78720,\n\t\"./NewUI/hooks/useDispatch.ts\": 78720,\n\t\"./NewUI/hooks/useDragScroll\": 50305,\n\t\"./NewUI/hooks/useDragScroll.ts\": 50305,\n\t\"./NewUI/hooks/useEmailTemplatesOptions\": 4283,\n\t\"./NewUI/hooks/useEmailTemplatesOptions.ts\": 4283,\n\t\"./NewUI/hooks/useEvents\": 39119,\n\t\"./NewUI/hooks/useEvents.ts\": 39119,\n\t\"./NewUI/hooks/useFieldChoiceList\": 21344,\n\t\"./NewUI/hooks/useFieldChoiceList.ts\": 21344,\n\t\"./NewUI/hooks/useInputValidation\": 25375,\n\t\"./NewUI/hooks/useInputValidation.ts\": 25375,\n\t\"./NewUI/hooks/useIsOverflow\": 62964,\n\t\"./NewUI/hooks/useIsOverflow.ts\": 62964,\n\t\"./NewUI/hooks/useJobsForTask\": 60890,\n\t\"./NewUI/hooks/useJobsForTask.ts\": 60890,\n\t\"./NewUI/hooks/usePlaceholders\": 26352,\n\t\"./NewUI/hooks/usePlaceholders.ts\": 26352,\n\t\"./NewUI/hooks/useThrottle\": 91970,\n\t\"./NewUI/hooks/useThrottle.ts\": 91970,\n\t\"./NewUI/shared/commonStyles\": 48735,\n\t\"./NewUI/shared/commonStyles.ts\": 48735,\n\t\"./NewUI/shared/styleClasses\": 11567,\n\t\"./NewUI/shared/styleClasses.ts\": 11567,\n\t\"./NewUI/utils/attachment-type\": 37668,\n\t\"./NewUI/utils/attachment-type.ts\": 37668,\n\t\"./NewUI/utils/device-detect\": 85998,\n\t\"./NewUI/utils/device-detect.ts\": 85998,\n\t\"./NewUI/utils/emoji-checker\": 9588,\n\t\"./NewUI/utils/emoji-checker.ts\": 9588,\n\t\"./NewUI/utils/formatToUserTimeZone\": 7996,\n\t\"./NewUI/utils/formatToUserTimeZone.ts\": 7996,\n\t\"./NewUI/utils/local-storage\": 49851,\n\t\"./NewUI/utils/local-storage.ts\": 49851,\n\t\"./NewUI/utils/scroll-to-element\": 67540,\n\t\"./NewUI/utils/scroll-to-element.tsx\": 67540,\n\t\"./NewUI/utils/sortable-column\": 92921,\n\t\"./NewUI/utils/sortable-column.ts\": 92921,\n\t\"./RecruitApiClient\": 18364,\n\t\"./RecruitApiClient.ts\": 18364,\n\t\"./ScoutCalendar\": 88258,\n\t\"./ScoutCalendar/\": 88258,\n\t\"./ScoutCalendar/API\": 99950,\n\t\"./ScoutCalendar/API.ts\": 99950,\n\t\"./ScoutCalendar/CreateEvent/CreateEvent\": 38123,\n\t\"./ScoutCalendar/CreateEvent/CreateEvent.tsx\": 38123,\n\t\"./ScoutCalendar/CreateEvent/EventProgress\": 95745,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/\": 95745,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/DateDisplay\": 40689,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/DateDisplay.tsx\": 40689,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/FirstStep\": 93871,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/FirstStep.tsx\": 93871,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/GroupedAvatars\": 12107,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/GroupedAvatars.tsx\": 12107,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/ReviewStep\": 95413,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/ReviewStep.tsx\": 95413,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/SecondStep\": 79629,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/SecondStep.tsx\": 79629,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/index\": 95745,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/index.ts\": 95745,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/styles\": 55671,\n\t\"./ScoutCalendar/CreateEvent/EventProgress/styles.ts\": 55671,\n\t\"./ScoutCalendar/CreateEvent/styles\": 86387,\n\t\"./ScoutCalendar/CreateEvent/styles.ts\": 86387,\n\t\"./ScoutCalendar/EventCreated\": 98916,\n\t\"./ScoutCalendar/EventCreated.tsx\": 98916,\n\t\"./ScoutCalendar/ListView\": 97467,\n\t\"./ScoutCalendar/ListView.tsx\": 97467,\n\t\"./ScoutCalendar/ScoutCalendar\": 10190,\n\t\"./ScoutCalendar/ScoutCalendar.tsx\": 10190,\n\t\"./ScoutCalendar/Settings\": 58751,\n\t\"./ScoutCalendar/Settings.tsx\": 58751,\n\t\"./ScoutCalendar/ViewEvent\": 69826,\n\t\"./ScoutCalendar/ViewEvent/\": 69826,\n\t\"./ScoutCalendar/ViewEvent/ActionButtons\": 35603,\n\t\"./ScoutCalendar/ViewEvent/ActionButtons.tsx\": 35603,\n\t\"./ScoutCalendar/ViewEvent/ActionModal\": 76855,\n\t\"./ScoutCalendar/ViewEvent/ActionModal.tsx\": 76855,\n\t\"./ScoutCalendar/ViewEvent/SelectedCandidatesTable\": 59293,\n\t\"./ScoutCalendar/ViewEvent/SelectedCandidatesTable.tsx\": 59293,\n\t\"./ScoutCalendar/ViewEvent/index\": 69826,\n\t\"./ScoutCalendar/ViewEvent/index.tsx\": 69826,\n\t\"./ScoutCalendar/ViewEvent/styles\": 89950,\n\t\"./ScoutCalendar/ViewEvent/styles.ts\": 89950,\n\t\"./ScoutCalendar/helper\": 41760,\n\t\"./ScoutCalendar/helper.tsx\": 41760,\n\t\"./ScoutCalendar/index\": 88258,\n\t\"./ScoutCalendar/index.tsx\": 88258,\n\t\"./ScoutCalendar/reducer\": 70374,\n\t\"./ScoutCalendar/reducer.ts\": 70374,\n\t\"./ScoutCalendar/styles\": 79894,\n\t\"./ScoutCalendar/styles.ts\": 79894,\n\t\"./ScoutCalendar/types\": 75587,\n\t\"./ScoutCalendar/types.ts\": 75587,\n\t\"./SeekAd\": 13046,\n\t\"./SeekAd/\": 13046,\n\t\"./SeekAd/AdEditor\": 20735,\n\t\"./SeekAd/AdEditor/\": 20735,\n\t\"./SeekAd/AdEditor/AdEditor\": 47475,\n\t\"./SeekAd/AdEditor/AdEditor.js\": 47475,\n\t\"./SeekAd/AdEditor/Components/AdProductSelection\": 81792,\n\t\"./SeekAd/AdEditor/Components/AdProductSelection.js\": 81792,\n\t\"./SeekAd/AdEditor/Components/AdSelection\": 81313,\n\t\"./SeekAd/AdEditor/Components/AdSelection.js\": 81313,\n\t\"./SeekAd/AdEditor/Components/ExitConfirmationDialog\": 73088,\n\t\"./SeekAd/AdEditor/Components/ExitConfirmationDialog.js\": 73088,\n\t\"./SeekAd/AdEditor/Components/ExitExistingDialogContent\": 84970,\n\t\"./SeekAd/AdEditor/Components/ExitExistingDialogContent.js\": 84970,\n\t\"./SeekAd/AdEditor/Components/ExitNewDialogContent\": 75165,\n\t\"./SeekAd/AdEditor/Components/ExitNewDialogContent.js\": 75165,\n\t\"./SeekAd/AdEditor/Components/PayDetails\": 87130,\n\t\"./SeekAd/AdEditor/Components/PayDetails.js\": 87130,\n\t\"./SeekAd/AdEditor/Components/SeekBillingReference\": 52574,\n\t\"./SeekAd/AdEditor/Components/SeekBillingReference.js\": 52574,\n\t\"./SeekAd/AdEditor/Components/WorkTypes\": 54402,\n\t\"./SeekAd/AdEditor/Components/WorkTypes.js\": 54402,\n\t\"./SeekAd/AdEditor/Steps\": 94571,\n\t\"./SeekAd/AdEditor/Steps/\": 94571,\n\t\"./SeekAd/AdEditor/Steps/Step1\": 30530,\n\t\"./SeekAd/AdEditor/Steps/Step1.js\": 30530,\n\t\"./SeekAd/AdEditor/Steps/Step2\": 53135,\n\t\"./SeekAd/AdEditor/Steps/Step2.js\": 53135,\n\t\"./SeekAd/AdEditor/Steps/Step3\": 18776,\n\t\"./SeekAd/AdEditor/Steps/Step3.js\": 18776,\n\t\"./SeekAd/AdEditor/Steps/Step4\": 59629,\n\t\"./SeekAd/AdEditor/Steps/Step4.js\": 59629,\n\t\"./SeekAd/AdEditor/Steps/index\": 94571,\n\t\"./SeekAd/AdEditor/Steps/index.js\": 94571,\n\t\"./SeekAd/AdEditor/UtilComponents/TextAreaWithCounter\": 68866,\n\t\"./SeekAd/AdEditor/UtilComponents/TextAreaWithCounter.js\": 68866,\n\t\"./SeekAd/AdEditor/index\": 20735,\n\t\"./SeekAd/AdEditor/index.js\": 20735,\n\t\"./SeekAd/AdEditor/useDialogStyles\": 33934,\n\t\"./SeekAd/AdEditor/useDialogStyles.js\": 33934,\n\t\"./SeekAd/AdEditor/useStyles\": 95298,\n\t\"./SeekAd/AdEditor/useStyles.js\": 95298,\n\t\"./SeekAd/SeekAd\": 84129,\n\t\"./SeekAd/SeekAd.js\": 84129,\n\t\"./SeekAd/hooks/useInitSeekAd\": 64984,\n\t\"./SeekAd/hooks/useInitSeekAd.ts\": 64984,\n\t\"./SeekAd/hooks/usePreviewSeekAd\": 67966,\n\t\"./SeekAd/hooks/usePreviewSeekAd.ts\": 67966,\n\t\"./SeekAd/hooks/useSeekAccounts\": 80943,\n\t\"./SeekAd/hooks/useSeekAccounts.ts\": 80943,\n\t\"./SeekAd/hooks/useSeekCurrencies\": 35072,\n\t\"./SeekAd/hooks/useSeekCurrencies.ts\": 35072,\n\t\"./SeekAd/hooks/useSeekGlobalData\": 61744,\n\t\"./SeekAd/hooks/useSeekGlobalData.ts\": 61744,\n\t\"./SeekAd/hooks/useSeekPayTypes\": 91888,\n\t\"./SeekAd/hooks/useSeekPayTypes.ts\": 91888,\n\t\"./SeekAd/index\": 13046,\n\t\"./SeekAd/index.js\": 13046,\n\t\"./StatusCategories\": 99909,\n\t\"./StatusCategories/\": 99909,\n\t\"./StatusCategories/API\": 77109,\n\t\"./StatusCategories/API.js\": 77109,\n\t\"./StatusCategories/CategoryDeck\": 67324,\n\t\"./StatusCategories/CategoryDeck.js\": 67324,\n\t\"./StatusCategories/StatusCategories\": 19331,\n\t\"./StatusCategories/StatusCategories.js\": 19331,\n\t\"./StatusCategories/index\": 99909,\n\t\"./StatusCategories/index.js\": 99909,\n\t\"./StatusCategories/useStyles\": 92416,\n\t\"./StatusCategories/useStyles.js\": 92416,\n\t\"./TableStyles\": 94579,\n\t\"./TableStyles.ts\": 94579,\n\t\"./TestActionCable\": 62590,\n\t\"./TestActionCable.tsx\": 62590,\n\t\"./TextUsModal\": 29281,\n\t\"./TextUsModal/\": 29281,\n\t\"./TextUsModal/TextUsModal\": 37409,\n\t\"./TextUsModal/TextUsModal.js\": 37409,\n\t\"./TextUsModal/components/Messenger\": 28958,\n\t\"./TextUsModal/components/Messenger/\": 28958,\n\t\"./TextUsModal/components/Messenger/Messenger\": 18537,\n\t\"./TextUsModal/components/Messenger/Messenger.js\": 18537,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails\": 7057,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/\": 7057,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/CandidateDetails\": 8336,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/CandidateDetails.js\": 8336,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/index\": 7057,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/index.js\": 7057,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/useStyles\": 65628,\n\t\"./TextUsModal/components/Messenger/components/CandidateDetails/useStyles.js\": 65628,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter\": 20407,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/\": 20407,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/CandidateFilter\": 28256,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/CandidateFilter.js\": 28256,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/index\": 20407,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/index.js\": 20407,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/useStyles\": 66922,\n\t\"./TextUsModal/components/Messenger/components/CandidateFilter/useStyles.js\": 66922,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem\": 32674,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/\": 32674,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/CandidateListItem\": 54112,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/CandidateListItem.js\": 54112,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/index\": 32674,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/index.js\": 32674,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/useStyles\": 92099,\n\t\"./TextUsModal/components/Messenger/components/CandidateListItem/useStyles.js\": 92099,\n\t\"./TextUsModal/components/Messenger/components/ChatBox\": 10339,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/\": 10339,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/ChatBox\": 14896,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/ChatBox.js\": 14896,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components\": 8108,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/\": 8108,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/SignatureToggle\": 29101,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/SignatureToggle.js\": 29101,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/TagPicker\": 63126,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/TagPicker.js\": 63126,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/TemplatePicker\": 80814,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/TemplatePicker.js\": 80814,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/index\": 8108,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/components/index.js\": 8108,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/index\": 10339,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/index.js\": 10339,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/useStyles\": 11926,\n\t\"./TextUsModal/components/Messenger/components/ChatBox/useStyles.js\": 11926,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow\": 52698,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/\": 52698,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/ChatWindow\": 69358,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/ChatWindow.js\": 69358,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/components/ChatItem\": 9182,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/components/ChatItem.js\": 9182,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/index\": 52698,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/index.js\": 52698,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/useStyles\": 41035,\n\t\"./TextUsModal/components/Messenger/components/ChatWindow/useStyles.js\": 41035,\n\t\"./TextUsModal/components/Messenger/index\": 28958,\n\t\"./TextUsModal/components/Messenger/index.js\": 28958,\n\t\"./TextUsModal/components/Messenger/useStyles\": 15647,\n\t\"./TextUsModal/components/Messenger/useStyles.js\": 15647,\n\t\"./TextUsModal/components/SelectRecipients\": 7496,\n\t\"./TextUsModal/components/SelectRecipients/\": 7496,\n\t\"./TextUsModal/components/SelectRecipients/SelectRecipients\": 16971,\n\t\"./TextUsModal/components/SelectRecipients/SelectRecipients.js\": 16971,\n\t\"./TextUsModal/components/SelectRecipients/index\": 7496,\n\t\"./TextUsModal/components/SelectRecipients/index.js\": 7496,\n\t\"./TextUsModal/components/SelectRecipients/useStyles\": 41374,\n\t\"./TextUsModal/components/SelectRecipients/useStyles.js\": 41374,\n\t\"./TextUsModal/index\": 29281,\n\t\"./TextUsModal/index.js\": 29281,\n\t\"./TextUsModal/useStyles\": 78188,\n\t\"./TextUsModal/useStyles.js\": 78188,\n\t\"./ThemeContext/ThemeContext\": 4744,\n\t\"./ThemeContext/ThemeContext.tsx\": 4744,\n\t\"./ThemeContext/ThemeObject\": 81040,\n\t\"./ThemeContext/ThemeObject.ts\": 81040,\n\t\"./ThemeContext/constants\": 44091,\n\t\"./ThemeContext/constants.ts\": 44091,\n\t\"./WorkatoNotification\": 86893,\n\t\"./WorkatoNotification.tsx\": 86893,\n\t\"./Xref\": 63977,\n\t\"./Xref/\": 63977,\n\t\"./Xref/XrefDialogue\": 2987,\n\t\"./Xref/XrefDialogue.tsx\": 2987,\n\t\"./Xref/XrefDialogueButton\": 96628,\n\t\"./Xref/XrefDialogueButton.tsx\": 96628,\n\t\"./Xref/index\": 63977,\n\t\"./Xref/index.tsx\": 63977,\n\t\"./Xref/types\": 56426,\n\t\"./Xref/types.ts\": 56426,\n\t\"./admin/data-source\": 87811,\n\t\"./admin/data-source.js\": 87811,\n\t\"./admin/integrations\": 24769,\n\t\"./admin/integrations/\": 24769,\n\t\"./admin/integrations/api\": 83853,\n\t\"./admin/integrations/api.jsx\": 83853,\n\t\"./admin/integrations/index\": 24769,\n\t\"./admin/integrations/index.jsx\": 24769,\n\t\"./admin/integrations/info/show\": 6317,\n\t\"./admin/integrations/info/show.jsx\": 6317,\n\t\"./admin/integrations/new\": 52803,\n\t\"./admin/integrations/new.jsx\": 52803,\n\t\"./admin/integrations/show\": 5182,\n\t\"./admin/integrations/show.jsx\": 5182,\n\t\"./admin/menu\": 39936,\n\t\"./admin/menu.jsx\": 39936,\n\t\"./admin/paying_users\": 12355,\n\t\"./admin/paying_users/\": 12355,\n\t\"./admin/paying_users/index\": 12355,\n\t\"./admin/paying_users/index.jsx\": 12355,\n\t\"./admin/services\": 47196,\n\t\"./admin/services/\": 47196,\n\t\"./admin/services/api\": 22216,\n\t\"./admin/services/api.jsx\": 22216,\n\t\"./admin/services/index\": 47196,\n\t\"./admin/services/index.jsx\": 47196,\n\t\"./admin/services/show\": 50229,\n\t\"./admin/services/show.jsx\": 50229,\n\t\"./admin/services/subservices/show\": 3540,\n\t\"./admin/services/subservices/show.jsx\": 3540,\n\t\"./admin/submenu\": 52694,\n\t\"./admin/submenu.jsx\": 52694,\n\t\"./admin/video_interview\": 45901,\n\t\"./admin/video_interview/\": 45901,\n\t\"./admin/video_interview/index\": 45901,\n\t\"./admin/video_interview/index.jsx\": 45901,\n\t\"./admin/video_interview/upload\": 4082,\n\t\"./admin/video_interview/upload.jsx\": 4082,\n\t\"./admin/video_interview/video_bookmarks_helper\": 23715,\n\t\"./admin/video_interview/video_bookmarks_helper.jsx\": 23715,\n\t\"./admin/video_interview/video_interview_helper\": 80609,\n\t\"./admin/video_interview/video_interview_helper.jsx\": 80609,\n\t\"./custom_integrations/integration_settings\": 59275,\n\t\"./custom_integrations/integration_settings.jsx\": 59275,\n\t\"./custom_integrations/integrations\": 15660,\n\t\"./custom_integrations/integrations.jsx\": 15660,\n\t\"./inputs/Checkbox\": 34534,\n\t\"./inputs/Checkbox/\": 34534,\n\t\"./inputs/Checkbox/Checkbox\": 33641,\n\t\"./inputs/Checkbox/Checkbox.js\": 33641,\n\t\"./inputs/Checkbox/index\": 34534,\n\t\"./inputs/Checkbox/index.js\": 34534,\n\t\"./inputs/Select\": 14951,\n\t\"./inputs/Select/\": 14951,\n\t\"./inputs/Select/Select\": 34091,\n\t\"./inputs/Select/Select.js\": 34091,\n\t\"./inputs/Select/index\": 14951,\n\t\"./inputs/Select/index.js\": 14951,\n\t\"./inputs/TextInput\": 56784,\n\t\"./inputs/TextInput/\": 56784,\n\t\"./inputs/TextInput/TextInput\": 23837,\n\t\"./inputs/TextInput/TextInput.js\": 23837,\n\t\"./inputs/TextInput/index\": 56784,\n\t\"./inputs/TextInput/index.js\": 56784,\n\t\"./mvs_request_test\": 22508,\n\t\"./mvs_request_test.jsx\": 22508,\n\t\"./saved_search/item\": 1175,\n\t\"./saved_search/item.jsx\": 1175,\n\t\"./saved_search/table\": 32968,\n\t\"./saved_search/table.jsx\": 32968,\n\t\"./scout-trainings\": 32920,\n\t\"./scout-trainings/\": 32920,\n\t\"./scout-trainings/index\": 32920,\n\t\"./scout-trainings/index.jsx\": 32920,\n\t\"./scout-trainings/portal-button\": 81071,\n\t\"./scout-trainings/portal-button.jsx\": 81071,\n\t\"./scout-trainings/table\": 29324,\n\t\"./scout-trainings/table.jsx\": 29324,\n\t\"./scout/EventStatusSelect\": 84154,\n\t\"./scout/EventStatusSelect.tsx\": 84154,\n\t\"./scout/add_button\": 80056,\n\t\"./scout/add_button.jsx\": 80056,\n\t\"./scout/autocomplete\": 49132,\n\t\"./scout/autocomplete.jsx\": 49132,\n\t\"./scout/nested_autocomplete\": 14234,\n\t\"./scout/nested_autocomplete.jsx\": 14234,\n\t\"./scout/select\": 78232,\n\t\"./scout/select.jsx\": 78232,\n\t\"./scout/service-interface-client\": 11484,\n\t\"./scout/service-interface-client.js\": 11484,\n\t\"./scout/table/fields/control/link_control\": 2437,\n\t\"./scout/table/fields/control/link_control.jsx\": 2437,\n\t\"./scout/table/fields/custom_control\": 86922,\n\t\"./scout/table/fields/custom_control.jsx\": 86922,\n\t\"./scout/table/fields/data\": 69409,\n\t\"./scout/table/fields/data.jsx\": 69409,\n\t\"./scout/table/fields/inplace_input_editor\": 93132,\n\t\"./scout/table/fields/inplace_input_editor.jsx\": 93132,\n\t\"./scout/table/fields/link\": 23497,\n\t\"./scout/table/fields/link.jsx\": 23497,\n\t\"./scout/table/filter\": 84069,\n\t\"./scout/table/filter.jsx\": 84069,\n\t\"./scout/table/headers/callback\": 40015,\n\t\"./scout/table/headers/callback.jsx\": 40015,\n\t\"./scout/table/headers/data\": 57646,\n\t\"./scout/table/headers/data.jsx\": 57646,\n\t\"./scout/table/pagination\": 48475,\n\t\"./scout/table/pagination.jsx\": 48475,\n\t\"./scout/table/row\": 4199,\n\t\"./scout/table/row.jsx\": 4199,\n\t\"./scout/table/table\": 58671,\n\t\"./scout/table/table.jsx\": 58671,\n\t\"./scout/tags\": 49587,\n\t\"./scout/tags.jsx\": 49587,\n\t\"./search_results/filtering_options_table\": 85839,\n\t\"./search_results/filtering_options_table.jsx\": 85839,\n\t\"./search_results/header\": 78516,\n\t\"./search_results/header.jsx\": 78516,\n\t\"./search_results/header_row\": 34201,\n\t\"./search_results/header_row.jsx\": 34201,\n\t\"./search_results/item\": 42074,\n\t\"./search_results/item.jsx\": 42074,\n\t\"./search_results/pagination\": 75763,\n\t\"./search_results/pagination.jsx\": 75763,\n\t\"./search_results/search_box\": 70449,\n\t\"./search_results/search_box.jsx\": 70449,\n\t\"./search_results/table\": 42935,\n\t\"./search_results/table.jsx\": 42935,\n\t\"./search_results/table_with_spinner\": 70090,\n\t\"./search_results/table_with_spinner.jsx\": 70090,\n\t\"./shared/accordion\": 44757,\n\t\"./shared/accordion.jsx\": 44757,\n\t\"./shared/commonStyles\": 53050,\n\t\"./shared/commonStyles.jsx\": 53050,\n\t\"./shared/permissionHelpers\": 59323,\n\t\"./shared/permissionHelpers.ts\": 59323\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 86900;","import React, { useEffect, useState, useRef, useCallback, MouseEvent } from 'react';\nimport ReactDOM from 'react-dom';\nimport { ResponseMessage, LoadingMessage } from './components';\n\nexport default function AIInterviewModal(jobDescription: string) {\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const lastMessageRef = useRef<HTMLDivElement | null>(null);\n const [response, setResponse] = useState<{ index: string; content: string }[]>([]);\n\n const generateChatResponse = useCallback(\n async (id: string, question: string, input: string, reactComponentRoot?: HTMLElement) => {\n setIsLoading(true);\n try {\n const response = await fetch('/api/v4/ai_interviews', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n description: jobDescription,\n question: question,\n input: input\n })\n }).then((res) => res.json());\n if (response && response.result) {\n setResponse((prevResponse) => [...prevResponse, { index: id, content: response.result }]);\n\n // eslint-disable-next-line react/no-deprecated\n ReactDOM.render(\n <ResponseMessage id={id} message={response.result} />,\n reactComponentRoot as unknown as HTMLElement\n );\n } else {\n throw new Error('No response from STG GPT');\n }\n } catch (error) {\n console.error(error);\n } finally {\n setIsLoading(false);\n }\n },\n [jobDescription]\n );\n\n const updateUI = useCallback(\n (felixContainer: HTMLElement, number: string, reactComponentRoot: any) => {\n const button = felixContainer.querySelector('button.felix');\n const responseMessageContainer = felixContainer.nextElementSibling as HTMLElement;\n\n if (responseMessageContainer) {\n responseMessageContainer.style.display = 'unset';\n if (button) {\n button.innerHTML = 'Regenerate feedback';\n }\n }\n\n const dataInputField = document.getElementById(\n `application_answers_attributes_${number}_data`\n ) as HTMLInputElement;\n\n const label = document.querySelector(\n `label[for=\"application_answers_attributes_${number}_data\"]`\n );\n\n const labelText = label?.textContent?.replace('*', '') || '';\n\n // eslint-disable-next-line react/no-deprecated\n ReactDOM.render(<LoadingMessage />, reactComponentRoot);\n\n generateChatResponse(button?.id || '', labelText, dataInputField?.value, reactComponentRoot);\n },\n [generateChatResponse]\n );\n\n const handleButtonClick = useCallback(\n (event: MouseEvent<HTMLElement>) => {\n const targetElement = event.target as HTMLElement;\n const fieldContainer = targetElement.closest('.field-container');\n const reactComponentRoot = fieldContainer?.querySelector('#react-component-root');\n const felixContainer = targetElement.closest('.felix-container') as HTMLElement;\n\n const inputField = felixContainer?.previousElementSibling;\n const id = (inputField as HTMLElement)?.id;\n const match = id?.match(/answers_attributes_(\\d+)_/);\n const number = match ? match[1] : null;\n if (number !== null) {\n updateUI(felixContainer, number, reactComponentRoot);\n }\n },\n [updateUI]\n );\n\n useEffect(() => {\n const buttons = document.getElementsByClassName('felix');\n\n Array.from(buttons).forEach((button) => {\n button.addEventListener('click', handleButtonClick as unknown as EventListener);\n });\n\n return () => {\n Array.from(buttons).forEach((button) => {\n button.removeEventListener('click', handleButtonClick as unknown as EventListener);\n });\n };\n }, [generateChatResponse, response, isLoading, handleButtonClick]);\n\n useEffect(() => {\n if (lastMessageRef.current) {\n lastMessageRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n }, []);\n\n return null;\n}\n","import React, { FC } from 'react';\nimport { Box, keyframes, SxProps } from '@mui/material';\nimport { classes } from '../styles';\nimport { DELAYS_IN_SECONDS } from '../constants';\n\nconst blink = keyframes`\n 0% {opacity: 1;}\n 50% {opacity: 0;}\n 100% {opacity: 1;}\n `;\n\nconst BlinkingDot: FC<{ delay: number; style?: SxProps }> = ({ delay, style }) => (\n <Box\n sx={{\n animation: `${blink} 1s ${delay}s linear infinite`,\n fontSize: '30px',\n ...style\n }}\n ></Box>\n);\n\nexport const LoadingMessage = () => {\n return (\n <Box sx={classes.systemMessage}>\n Generating\n {DELAYS_IN_SECONDS.map((delay) => (\n <BlinkingDot key={delay} delay={delay} />\n ))}\n </Box>\n );\n};\n","import React, { MouseEvent } from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from '../styles';\nimport { IconButton } from '@material-ui/core';\nimport { AIPrompterCloseIcon } from '../../../NewUI/Components/Icons';\n\nexport const ResponseMessage = ({ id, message }: { id: string; message: string }) => {\n const handleClose = (e: MouseEvent<HTMLElement>) => {\n e.preventDefault();\n const reactComponentRoot = document.getElementById(id) as HTMLElement;\n const responseMessageContainer = reactComponentRoot?.parentElement\n ?.nextElementSibling as HTMLElement;\n if (responseMessageContainer) {\n responseMessageContainer.style.display = 'none';\n reactComponentRoot.innerHTML = 'Get Felix AI’s feedback on my answer';\n }\n };\n\n return (\n <Box key={id} sx={classes.responseMessageContainer}>\n <IconButton style={classes.closeIcon} onClick={handleClose}>\n <AIPrompterCloseIcon />\n </IconButton>\n <Box\n sx={classes.responseMessageContent}\n dangerouslySetInnerHTML={{ __html: message.replace(/\\n\\n/g, '<br />') }}\n ></Box>\n </Box>\n );\n};\n","import React, {\n useEffect,\n useRef,\n useCallback,\n useMemo,\n useReducer,\n Dispatch,\n SetStateAction\n} from 'react';\nimport { Box, Button, Modal } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { WelcomePage } from './Steps/WelcomePage';\nimport AIStudioTeaserModal from './AIStudioTeaserModal';\nimport JobDescriptionInput from './Steps/JobDescriptionInput';\nimport OptionalInput from './Steps/OptionalInput';\nimport DisplayResponse from './Steps/DisplayResponse';\nimport { classes } from './styles';\nimport { FelixButtonSVG } from '../SharedComponents/Graphics/FelixSVG';\nimport LoadingResponse from '../SharedComponents/Steps/LoadingResponse';\nimport QuestionsInput from './Steps/QuestionsInput';\nimport GenericDialog from '../../NewUI/Components/Modals/GenericDialog';\nimport ErrorScreen from '../SharedComponents/Steps/ErrorScreen';\nimport { navbarWidths } from '../../NewUI/Layout/Navbar/config';\nimport { welcomeMessage } from './config';\nimport { aiStudioReducer, initialAIStudioState } from './reducer';\nimport { convertToLocalEnglish } from '../../NewUI/Components/Utilities/convertToLocalEnglish';\nimport FelixNotification from './FelixNotification';\nimport { serialize } from 'object-to-formdata';\n\nexport default function AIStudioModal({\n aiStudioEnabled,\n aiSummariesEnabled,\n aiStudioFrenchEnabled,\n showPreview,\n navbarState,\n jobFlow,\n setTlpModalOpen,\n prefillData,\n setGeneratedContent\n}: {\n aiStudioEnabled: boolean;\n aiSummariesEnabled: boolean;\n aiStudioFrenchEnabled: boolean;\n showPreview?: boolean;\n navbarState: keyof typeof navbarWidths;\n jobFlow?: boolean;\n setTlpModalOpen?: Dispatch<SetStateAction<boolean>>;\n prefillData?: {\n title: string;\n country: string;\n };\n setGeneratedContent?: (content: string) => void;\n}) {\n const [aiStudioState, dispatch] = useReducer<typeof aiStudioReducer>(\n aiStudioReducer,\n initialAIStudioState\n );\n\n const typeWriterRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const caretRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const requestController = useRef<AbortController | null>(null);\n const aiButtonAnchorRef = useRef<HTMLElement | null>(null);\n\n const hideButton = useMemo(() => {\n // is the user on a page that breaks MUI 5?\n const URLPATH = new URL(window.location.href).pathname;\n const pathRegexList = [/entities.*edit/, /events/];\n const isOnIncompatiblePage = pathRegexList.some((regex) => regex.test(URLPATH));\n const showButton = aiStudioEnabled || aiSummariesEnabled || showPreview;\n\n return isOnIncompatiblePage || !showButton;\n }, [aiStudioEnabled, aiSummariesEnabled, showPreview]);\n\n const generateDescription = useCallback(async () => {\n dispatch({ type: 'GO_TO_LOADING_STEP' });\n requestController.current = new AbortController();\n const data = {\n ai_studio: {\n type: 'tlp',\n tone: aiStudioState.generatedTone,\n job_details: aiStudioState.jobDetails,\n send_email_copy: aiStudioState.sendEmail,\n french: aiStudioState.aiStudioFrenchEnabled,\n ...(aiStudioState.document && { document: aiStudioState.document })\n }\n };\n const serializedData = serialize(data);\n try {\n const response = await fetch('/api/v4/ai_studio', {\n signal: requestController.current.signal,\n method: 'POST',\n body: serializedData,\n formData: true\n });\n const description = await response.json();\n if (response && description.result && description.result.length > 30) {\n const localEnglishDescription = convertToLocalEnglish(description.result);\n dispatch({ type: 'SET_GENERATED_RESPONSE', payload: localEnglishDescription });\n } else {\n throw new Error('No response from AI API');\n }\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Description generation aborted');\n }\n console.error(error);\n dispatch({ type: 'SET_GENERATION_ERROR', payload: true });\n } finally {\n if (!requestController.current.signal.aborted) {\n dispatch({ type: 'GO_TO_ERROR_STEP' });\n }\n }\n }, [\n aiStudioState.aiStudioFrenchEnabled,\n aiStudioState.generatedTone,\n aiStudioState.jobDetails,\n aiStudioState.sendEmail,\n aiStudioState.document\n ]);\n\n const generateQuestions = useCallback(async () => {\n requestController.current = new AbortController();\n dispatch({ type: 'GO_TO_LOADING_STEP' });\n try {\n const response = await fetch('/api/v4/ai_studio', {\n signal: requestController.current.signal,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n ai_studio: {\n type: 'questions',\n question_type: aiStudioState.questionType,\n job_details: aiStudioState.jobDetails,\n number_of_questions: 5\n }\n })\n });\n const questions = await response.json();\n if (response && questions.result && questions.result.length > 30) {\n const localEnglishQuestions = convertToLocalEnglish(questions.result);\n dispatch({ type: 'SET_GENERATED_RESPONSE', payload: localEnglishQuestions });\n } else {\n throw new Error('No response from AI API');\n }\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Description generation aborted');\n }\n console.error(error);\n dispatch({ type: 'SET_GENERATION_ERROR', payload: true });\n } finally {\n if (!requestController.current.signal.aborted) {\n dispatch({ type: 'GO_TO_ERROR_STEP' });\n }\n }\n }, [aiStudioState.jobDetails, aiStudioState.questionType]);\n\n const typeWriter = useCallback((text: string, i: number) => {\n if (i < text.length) {\n dispatch({ type: 'ADD_TO_WELCOME_HEADER', payload: text.charAt(i) });\n typeWriterRef.current = setTimeout(function () {\n typeWriter(text, i + 1);\n }, 100);\n }\n if (i === text.length) {\n caretRef.current = setTimeout(() => {\n dispatch({ type: 'SET_SHOW_CARET', payload: false });\n }, 2200);\n }\n }, []);\n\n useEffect(() => {\n dispatch({ type: 'CLEAR_WELCOME_HEADER' });\n if (!aiStudioState.open || aiStudioState.currentStep !== 0) return;\n typeWriter(welcomeMessage[aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english'], 0);\n return () => {\n if (typeWriterRef.current) {\n clearTimeout(typeWriterRef.current);\n }\n if (caretRef.current) {\n clearTimeout(caretRef.current);\n }\n };\n }, [\n typeWriter,\n aiStudioState.open,\n aiStudioState.currentStep,\n aiStudioState.aiStudioFrenchEnabled\n ]);\n\n const handleClose = useCallback(() => {\n dispatch({ type: 'CLOSE_MODAL' });\n jobFlow && setTlpModalOpen && setTlpModalOpen(false);\n // Abort any pending requests\n requestController?.current?.abort('User quit the modal');\n }, [jobFlow, setTlpModalOpen]);\n\n const handleCloseAction = () => {\n aiStudioState.currentStep === 0\n ? handleClose()\n : dispatch({ type: 'SET_CONFIRM_CANCEL_IS_OPEN', payload: true });\n };\n\n // Check if the Recruit sidebar is collapsed and set the state accordingly\n useEffect(() => {\n if (navbarState) return;\n const navbarElement = document.querySelector('#sidebar');\n const navbarObserver = new ResizeObserver((entries) => {\n if (entries[0].contentRect.width < 200) {\n dispatch({ type: 'SET_NAVBAR_IS_COLLAPSED', payload: true });\n } else {\n dispatch({ type: 'SET_NAVBAR_IS_COLLAPSED', payload: false });\n }\n });\n navbarElement && navbarObserver.observe(navbarElement);\n return () => {\n navbarObserver.disconnect();\n };\n }, [navbarState]);\n\n // Handle opening modal from the New Job flow\n useEffect(() => {\n jobFlow &&\n dispatch({ type: 'INIT_NEW_JOB_FLOW', payload: prefillData || { title: '', country: '' } });\n }, [jobFlow, prefillData]);\n\n const stepSelect = useCallback(\n (step) => {\n if (aiStudioState.generationError) {\n return (\n <ErrorScreen\n regenerateCallback={\n aiStudioState.generationType === 'description'\n ? generateDescription\n : generateQuestions\n }\n setGenerationError={(value: boolean) =>\n dispatch({ type: 'SET_GENERATION_ERROR', payload: value })\n }\n backToHome={() => dispatch({ type: 'GO_TO_HOME_STEP' })}\n />\n );\n }\n switch (step) {\n case 0:\n return (\n <WelcomePage\n dispatch={dispatch}\n aiStudioState={aiStudioState}\n aiStudioFrenchEnabled={aiStudioFrenchEnabled}\n />\n );\n case 1:\n return (\n <JobDescriptionInput\n dispatch={dispatch}\n aiStudioState={aiStudioState}\n generateDescription={generateDescription}\n jobFlow={jobFlow}\n />\n );\n case 2:\n return <OptionalInput dispatch={dispatch} aiStudioState={aiStudioState} />;\n case 3:\n return <LoadingResponse generationType={aiStudioState.generationType} />;\n case 4:\n return (\n <DisplayResponse\n dispatch={dispatch}\n aiStudioState={aiStudioState}\n generateDescription={generateDescription}\n generateQuestions={generateQuestions}\n jobFlow={jobFlow}\n setGeneratedContent={setGeneratedContent}\n handleClose={handleClose}\n />\n );\n case 5:\n return (\n <QuestionsInput\n dispatch={dispatch}\n aiStudioState={aiStudioState}\n generateQuestions={generateQuestions}\n />\n );\n default:\n return 'Something went wrong';\n }\n },\n [\n aiStudioFrenchEnabled,\n aiStudioState,\n generateDescription,\n generateQuestions,\n handleClose,\n jobFlow,\n setGeneratedContent\n ]\n );\n\n const buttonClass = () => {\n return {\n ...classes.buttonContainer,\n ...(aiStudioState.buttonHovered &&\n !(aiStudioState.notificationData?.length > 0) &&\n classes.hoverAnimation),\n ...(aiStudioState.navbarIsCollapsed && classes.collapsedNavbar),\n ...(aiStudioState.notificationData?.length > 0 && classes.notificationAnimation),\n ...(!!navbarState && classes.newNavbarButtonContainer),\n ...(navbarState === 'collapsed' && classes.newNavbarCollapsed)\n };\n };\n\n if (hideButton) return null;\n\n return (\n <Box sx={{ zIndex: 2 }}>\n {!jobFlow && (\n <>\n <Box\n id={`ai-studio-button${aiStudioEnabled ? '' : '-teaser'}`}\n sx={buttonClass()}\n onMouseEnter={() => dispatch({ type: 'SET_BUTTON_HOVERED', payload: true })}\n onMouseLeave={() => dispatch({ type: 'SET_BUTTON_HOVERED', payload: false })}\n onClick={() => dispatch({ type: 'OPEN_MODAL' })}\n >\n <Box sx={classes.avatarContainer} ref={aiButtonAnchorRef}>\n <FelixButtonSVG />\n </Box>\n {(navbarState ? navbarState === 'expanded' : !aiStudioState.navbarIsCollapsed) && (\n <>\n <Button sx={classes.button}>{!aiStudioState.open ? 'AI Studio' : 'Close'}</Button>\n {!aiStudioState.open && <Box sx={classes.betaPill}>Beta</Box>}\n </>\n )}\n </Box>\n {(aiStudioEnabled || aiSummariesEnabled) && (\n <FelixNotification\n anchorEl={aiButtonAnchorRef.current}\n aiStudioState={aiStudioState}\n dispatch={dispatch}\n />\n )}\n </>\n )}\n {aiStudioEnabled ? (\n <>\n <Modal\n open={aiStudioState.open || !!jobFlow}\n onClose={handleCloseAction}\n aria-labelledby=\"ai-studio-title\"\n aria-describedby=\"ai-studio-description\"\n >\n <Box sx={classes.modal}>\n <CloseIcon onClick={handleCloseAction} sx={classes.closeIcon} />\n {stepSelect(aiStudioState.currentStep)}\n </Box>\n </Modal>\n <GenericDialog\n isDialogOpen={aiStudioState.confirmCancelIsOpen}\n setDialogOpen={(value: boolean) =>\n dispatch({ type: 'SET_CONFIRM_CANCEL_IS_OPEN', payload: value })\n }\n title=\"Close AI Studio?\"\n description=\"All unsaved changes will be lost.\"\n buttonCallback={() => {\n dispatch({ type: 'SET_CONFIRM_CANCEL_IS_OPEN', payload: false });\n handleClose();\n }}\n callbackLoading={false}\n buttonText=\"Close AI Studio\"\n url=\"\"\n />\n </>\n ) : (\n <AIStudioTeaserModal open={aiStudioState.open} handleCloseAction={handleCloseAction} />\n )}\n </Box>\n );\n}\n","import React from 'react';\nimport { Box, Modal, Button } from '@mui/material';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { FelixStarsSVG } from '../SharedComponents/Graphics/FelixSVG';\nimport { classes } from './styles';\n\nconst featuresText = [\n 'Job advertisements',\n 'Social media posts',\n 'Talent landing pages',\n 'Screening and interview questions'\n];\n\nconst handleButtonAction = () => {\n window.open('https://scouttalenthq.com/talent-acquisition-software/ai-studio', '_blank');\n};\n\nconst AIStudioTeaserModal = ({\n open,\n handleCloseAction\n}: {\n open: boolean;\n handleCloseAction: () => void;\n}) => {\n return (\n <Modal open={open} onClose={handleCloseAction} aria-labelledby=\"ai-studio-teaser\">\n <Box sx={classes.previewModal}>\n <CloseIcon onClick={handleCloseAction} sx={classes.closeIcon} />\n <Box sx={classes.teaserContainer}>\n <FelixStarsSVG />\n <Box sx={classes.teaserHeader}>\n <span>Launching: AI Studio</span>\n <Box sx={classes.teaserPill}>BETA</Box>\n </Box>\n <Box sx={{ fontWeight: '700' }}>\n Reduce the time it takes to create talent attraction content by 80%.\n </Box>\n <Box sx={classes.teaserText}>\n Leverage the power of AI Studio to draft recruitment collateral in seconds:\n </Box>\n <Box sx={classes.featureList}>\n {featuresText.map((feature, index) => (\n <Box sx={classes.featureListItem} key={index}>\n <DoneIcon sx={classes.featureListItemIcon} />\n <Box>{feature}</Box>\n </Box>\n ))}\n </Box>\n <Button\n id=\"discover-ai-studio-button\"\n sx={classes.teaserButton}\n onClick={handleButtonAction}\n >\n Discover benefits\n </Button>\n </Box>\n <Button sx={classes.teaserCloseButton} onClick={handleCloseAction}>\n No thanks, I don’t want to save time\n </Button>\n </Box>\n </Modal>\n );\n};\n\nexport default AIStudioTeaserModal;\n","import React from 'react';\nimport { Box, Button } from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport DoneIcon from '@mui/icons-material/Done';\nimport { convertPreferredSkills } from '../config';\nimport { classes } from '../styles';\n\nconst OptionalInputButtons = ({\n jobDetails,\n pillClickHandler,\n aiStudioFrenchEnabled\n}: {\n jobDetails: Record<string, string>;\n pillClickHandler: (pillType: string) => void;\n aiStudioFrenchEnabled: boolean;\n}) => {\n return (\n <Box sx={classes.pillsContainer}>\n <Button\n sx={jobDetails.preferred_skills ? classes.filledPill : classes.pill}\n endIcon={jobDetails.preferred_skills ? <DoneIcon /> : <AddIcon />}\n onClick={() => pillClickHandler('preferred_skills')}\n >\n {convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english']['preferred_skills']}\n </Button>\n <Button\n sx={jobDetails.position_responsibilities ? classes.filledPill : classes.pill}\n endIcon={jobDetails.position_responsibilities ? <DoneIcon /> : <AddIcon />}\n onClick={() => pillClickHandler('position_responsibilities')}\n >\n {\n convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english'][\n 'position_responsibilities'\n ]\n }\n </Button>\n <Button\n sx={jobDetails.position_location ? classes.filledPill : classes.pill}\n endIcon={jobDetails.position_location ? <DoneIcon /> : <AddIcon />}\n onClick={() => pillClickHandler('position_location')}\n >\n {convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english']['position_location']}\n </Button>\n <Button\n sx={jobDetails.salary ? classes.filledPill : classes.pill}\n endIcon={jobDetails.salary ? <DoneIcon /> : <AddIcon />}\n onClick={() => pillClickHandler('salary')}\n >\n {convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english']['salary']}\n </Button>\n <Button\n sx={jobDetails.company_name ? classes.filledPill : classes.pill}\n endIcon={jobDetails.company_name ? <DoneIcon /> : <AddIcon />}\n onClick={() => pillClickHandler('company_name')}\n >\n {convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english']['company_name']}\n </Button>\n <Button\n sx={jobDetails.company_description ? classes.filledPill : classes.pill}\n endIcon={jobDetails.company_description ? <DoneIcon /> : <AddIcon />}\n onClick={() => pillClickHandler('company_description')}\n >\n {\n convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english'][\n 'company_description'\n ]\n }\n </Button>\n <Button\n sx={jobDetails.company_benefits ? classes.filledPill : classes.pill}\n endIcon={jobDetails.company_benefits ? <DoneIcon /> : <AddIcon />}\n onClick={() => pillClickHandler('company_benefits')}\n >\n {convertPreferredSkills[aiStudioFrenchEnabled ? 'french' : 'english']['company_benefits']}\n </Button>\n </Box>\n );\n};\n\nexport default OptionalInputButtons;\n","import React, { useState, useEffect, useCallback, Dispatch } from 'react';\nimport { Box, Button, Popper, Fade, PopperPlacementType, Modal, Badge } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from './styles';\nimport { notificationTitles } from './config';\nimport { AIStudioAction, AIStudioState } from './reducer';\nimport BulkSummaries from '../ApplicationSummaries/InsightsModal/ResponseStep';\nimport InterviewQuestions from '../ApplicationSummaries/QuestionsModal/ResponseStep';\nimport { dismissNotification } from '../SharedComponents/Utility/dismissNotification';\nimport { IWebsocketData, INotificationHistoryItem } from '../SharedComponents/types';\nimport { useWebSockets } from '../../NewUI/Components/Utilities/useWebSockets';\nimport StyledSnackbar from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport EditStep from '../ApplicationSummaries/QuestionsModal/FollowUpEmail/EditStep';\n\nconst FelixNotification = ({\n anchorEl,\n aiStudioState,\n dispatch\n}: {\n anchorEl: HTMLElement | null;\n aiStudioState: AIStudioState;\n dispatch: Dispatch<AIStudioAction>;\n}) => {\n const [emails, setEmails] = useState<string[]>([]);\n const [snackbarState, setSnackbarState] = useState({\n message: '',\n state: 'success' as 'success' | 'error' | 'warning'\n });\n const displayNumberOfNotifications = () => {\n if (aiStudioState.notificationData.length > 1) {\n return aiStudioState.notificationData.length;\n } else {\n return 0;\n }\n };\n\n const handleDismissNotification = () => {\n dismissNotification(aiStudioState.notificationData[0]?.id);\n dispatch({ type: 'DISMISS_NOTIFICATION' });\n };\n\n const { subscribeToChannel } = useWebSockets('AiStudioChannel', (data: IWebsocketData) => {\n if (data.kind === 'dismissal') {\n dispatch({ type: 'SET_DISMISSED_NOTIFICATION', payload: data.id });\n } else {\n dispatch({ type: 'SET_RECEIVED_NOTIFICATION', payload: data });\n }\n });\n\n const getInitialNotifications = useCallback(async () => {\n const response = await fetch('/api/v4/ai_generation_histories?exclude_dismissed=true', {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json'\n }\n });\n const notifications = await response.json();\n const formattedNotifications = notifications?.histories?.map(\n (notification: INotificationHistoryItem) => ({\n id: notification.id,\n kind: notification.kind,\n content: notification.content,\n ...(notification.candidate_name && { candidate_name: notification.candidate_name }),\n ...(notification.application_id && { application_id: notification.application_id }),\n ...(notification.job_id && { job_id: notification.job_id })\n })\n );\n dispatch({ type: 'SET_NOTIFICATIONS', payload: formattedNotifications });\n }, [dispatch]);\n\n useEffect(() => {\n subscribeToChannel();\n }, [subscribeToChannel]);\n\n useEffect(() => {\n getInitialNotifications();\n }, [getInitialNotifications]);\n\n const displayNotificationContent = () => {\n switch (aiStudioState.notificationData[0]?.kind) {\n case 'bulk_summary':\n return (\n <BulkSummaries\n summaryData={aiStudioState.notificationData[0]}\n handleDismissNotification={handleDismissNotification}\n isNotification\n setEmails={setEmails}\n emails={emails}\n setSnackbar={setSnackbarState}\n />\n );\n case 'interview_questions':\n return (\n <InterviewQuestions\n questionData={aiStudioState.notificationData[0]}\n setSnackbarState={setSnackbarState}\n isNotification\n />\n );\n case 'follow_up_email':\n return (\n <EditStep\n emailData={aiStudioState.notificationData[0]}\n handleClose={handleDismissNotification}\n goBack={handleDismissNotification}\n jobId={aiStudioState.notificationData[0]?.job_id}\n applicationId={aiStudioState.notificationData[0]?.application_id}\n setSnackbarState={setSnackbarState}\n />\n );\n default:\n return <div>Something went wrong, please contact support</div>;\n }\n };\n\n const notificationText = (kind) => {\n if (kind === 'error') {\n return 'There was an error generating your content';\n } else {\n return `Your\n ${notificationTitles[kind as keyof typeof notificationTitles]}\n ready!`;\n }\n };\n\n return (\n <>\n <Popper\n open={aiStudioState.notificationData?.length > 0}\n anchorEl={anchorEl}\n placement={'right-end' as PopperPlacementType}\n transition\n sx={{ zIndex: 1255 }}\n >\n {({ TransitionProps }) => (\n <Fade {...TransitionProps} timeout={700}>\n <Box sx={classes.notificationPopperContainer}>\n <Badge badgeContent={displayNumberOfNotifications()} sx={classes.notificationsBadge}>\n <Box sx={classes.notificationPopper}>\n {aiStudioState.notificationData?.length > 0 && (\n <>\n <Box sx={classes.notificationHeader}>\n {notificationText(aiStudioState.notificationData[0]?.kind)}\n </Box>\n <Box sx={classes.notificationButtons}>\n <Button\n sx={classes.notificationCloseButton}\n onClick={handleDismissNotification}\n >\n Dismiss\n </Button>\n {aiStudioState.notificationData[0]?.kind !== 'error' && (\n <Button\n sx={classes.notificationViewButton}\n onClick={() => dispatch({ type: 'VIEW_NOTIFICATION' })}\n >\n View\n </Button>\n )}\n </Box>\n </>\n )}\n </Box>\n <Box sx={classes.borderBox} />\n </Badge>\n </Box>\n </Fade>\n )}\n </Popper>\n <Modal\n open={aiStudioState.notificationModalOpen}\n onClose={handleDismissNotification}\n aria-labelledby=\"ai-studio-view-notification\"\n aria-describedby=\"ai-studio-view-notification\"\n >\n <Box sx={classes.modal}>\n <Box sx={classes.notificationModalContent}>\n <CloseIcon onClick={handleDismissNotification} sx={classes.closeIcon} />\n {displayNotificationContent()}\n </Box>\n </Box>\n </Modal>\n <StyledSnackbar\n message={snackbarState.message}\n state={snackbarState.state}\n setSnackbarState={setSnackbarState}\n />\n </>\n );\n};\n\nexport default FelixNotification;\n","import React, { Dispatch } from 'react';\nimport { Box, Button } from '@mui/material';\nimport CodeIcon from '@mui/icons-material/Code';\nimport DoneIcon from '@mui/icons-material/Done';\nimport { FelixMessageSVG } from '../../SharedComponents/Graphics/FelixSVG';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport { modalTitle } from '../config';\nimport { classes } from '../styles';\nimport { AIStudioState, AIStudioAction } from '../reducer';\n\nconst DisplayResponseFooter = ({\n editableDescription,\n aiStudioState,\n dispatch,\n handleCopy,\n copied,\n jobFlow,\n setGeneratedContent,\n handleClose\n}: {\n editableDescription: string;\n aiStudioState: AIStudioState;\n dispatch: Dispatch<AIStudioAction>;\n handleCopy: () => void;\n copied: boolean;\n jobFlow?: boolean;\n setGeneratedContent: (description: string) => void;\n handleClose: () => void;\n}) => {\n const handleAddToJobClick = () => {\n setGeneratedContent(editableDescription);\n handleClose();\n };\n\n const renderPrimaryButton = () => {\n if (aiStudioState.generationType !== 'description') return null;\n if (jobFlow) {\n return (\n <Button\n id=\"save-tlp-new-job\"\n sx={{ ...classes.footerContinueButton, minWidth: '146px' }}\n endIcon={<DoneIcon />}\n onClick={handleAddToJobClick}\n >\n Add to job\n </Button>\n );\n } else {\n return (\n <CopyToClipboard text={editableDescription} onCopy={handleCopy}>\n <Button id=\"copy-tlp-html\" sx={classes.footerContinueButton} endIcon={<CodeIcon />}>\n {copied\n ? aiStudioState.aiStudioFrenchEnabled\n ? 'Copié'\n : 'Copied'\n : aiStudioState.aiStudioFrenchEnabled\n ? 'Copier'\n : 'Copy'}{' '}\n HTML\n </Button>\n </CopyToClipboard>\n );\n }\n };\n\n return (\n <Box sx={classes.footerContainer}>\n <Box sx={classes.felixMessageContainer}>\n <FelixMessageSVG />\n <Box sx={{ ...classes.felixMessage, maxWidth: '432px' }}>\n {aiStudioState.aiStudioFrenchEnabled ? (\n <>\n <span>Voilà !</span> Votre{' '}\n <span>\n {modalTitle['french'][aiStudioState.generationType as keyof typeof modalTitle]}\n </span>{' '}\n {aiStudioState.generationType === 'description' ? 'est' : 'sont'} prêt\n {aiStudioState.generationType === 'description' ? '' : 's'} à l’action. Vous pouvez\n l’utiliser tel quel ou apporter des ajustements avant de le publier.\n </>\n ) : (\n <>\n Ta-da! Your{' '}\n <span>\n {modalTitle['english'][aiStudioState.generationType as keyof typeof modalTitle]}\n </span>{' '}\n {aiStudioState.generationType === 'description' ? 'is' : 'are'} ready for action. You\n may want to use {aiStudioState.generationType === 'description' ? 'this' : 'them'} as\n is, or make some adjustments before publishing.\n </>\n )}\n </Box>\n </Box>\n <Box\n sx={{\n ...classes.footerButtonsContainer,\n minWidth: '310px',\n justifyContent:\n aiStudioState.generationType === 'description' ? 'space-around' : 'flex-end',\n rowGap: 'none'\n }}\n >\n <Button\n id={`start-again-${aiStudioState.generationType}`}\n sx={classes.footerRestartButton}\n onClick={() =>\n dispatch({\n type: 'SET_CURRENT_STEP',\n payload: aiStudioState.generationType === 'description' ? 1 : 5\n })\n }\n >\n {aiStudioState.aiStudioFrenchEnabled ? 'Recommencer' : 'Start again'}\n </Button>\n {renderPrimaryButton()}\n </Box>\n </Box>\n );\n};\n\nexport default DisplayResponseFooter;\n","import React, { useState, useEffect, useMemo, Dispatch } from 'react';\nimport { Box, Button } from '@mui/material';\nimport CachedIcon from '@mui/icons-material/Cached';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DoneIcon from '@mui/icons-material/Done';\nimport DisplayResponseFooter from '../Footers/DisplayResponseFooter';\nimport { modalTitle } from '../config';\nimport HtmlEditor from '../../../NewUI/Components/Utilities/HtmlEditor';\nimport ConfettiExplosion from 'react-confetti-explosion';\nimport dompurify from 'dompurify';\nimport { AIStudioAction, AIStudioState } from '../reducer';\nimport { classes } from '../styles';\nimport { classes as sharedClasses } from '../../SharedComponents/styles';\nimport CopyableQuestions from '../../SharedComponents/CopyableQuestions';\n\nconst DisplayDescription = ({\n dispatch,\n aiStudioState,\n generateDescription,\n generateQuestions,\n jobFlow,\n setGeneratedContent,\n handleClose\n}: {\n dispatch: Dispatch<AIStudioAction>;\n aiStudioState: AIStudioState;\n generateDescription: () => void;\n generateQuestions: () => void;\n jobFlow?: boolean;\n setGeneratedContent?: (description: string) => void;\n handleClose: () => void;\n}) => {\n const [editableDescription, setEditableDescription] = useState(aiStudioState.generatedResponse);\n const [isEditing, setIsEditing] = useState(false);\n const [copied, setCopied] = useState(false);\n const [playConfetti, setPlayConfetti] = useState(true);\n\n const handleCopy = () => {\n setCopied(true);\n setTimeout(() => setCopied(false), 3000);\n };\n\n useEffect(() => {\n setPlayConfetti(true);\n const confettiTimeout = setTimeout(() => {\n setPlayConfetti(false);\n }, 4100);\n return () => clearTimeout(confettiTimeout);\n }, []);\n\n const regenerationFunction = {\n description: generateDescription,\n questions: generateQuestions\n };\n\n const displayResponseContent = useMemo(() => {\n if (aiStudioState.generationType === 'description') {\n return (\n <Box sx={{ position: 'relative', width: '100%', height: '500px' }}>\n {isEditing ? (\n <HtmlEditor\n body={editableDescription}\n onChange={setEditableDescription}\n maxHeight={500}\n />\n ) : (\n <Box\n sx={classes.generatedResponseContainer}\n dangerouslySetInnerHTML={{\n __html: dompurify.sanitize(editableDescription)\n }}\n />\n )}\n <Box\n sx={{\n ...sharedClasses.floatingActionButton,\n ...(window?.tinyMCE?.majorVersion === '4' && { display: 'none' })\n }}\n onClick={() => {\n setIsEditing((prev) => !prev);\n }}\n >\n {isEditing ? <DoneIcon /> : <EditIcon />}\n </Box>\n </Box>\n );\n } else {\n return <CopyableQuestions questions={aiStudioState.generatedResponse} maxHeight=\"490px\" />;\n }\n }, [\n aiStudioState.generatedResponse,\n aiStudioState.generationType,\n editableDescription,\n isEditing\n ]);\n\n return (\n <Box sx={classes.generatedContainer}>\n {playConfetti && (\n <Box sx={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n <ConfettiExplosion\n force={0.5}\n duration={4000}\n particleCount={120}\n height={1000}\n width={1000}\n />\n </Box>\n )}\n <Box sx={classes.descriptionHeader}>\n <Box sx={classes.descriptionHeaderText}>\n {`${aiStudioState.aiStudioFrenchEnabled ? 'Ton' : 'Your'} ${\n modalTitle[aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english'][\n aiStudioState.generationType\n ]\n }`}\n </Box>\n <Button\n id={`regenerate-${aiStudioState.generationType}`}\n sx={classes.pill}\n endIcon={<CachedIcon />}\n onClick={\n regenerationFunction[aiStudioState.generationType as keyof typeof regenerationFunction]\n }\n >\n {aiStudioState.aiStudioFrenchEnabled ? 'Regénérer' : 'Regenerate'}\n </Button>\n </Box>\n {displayResponseContent}\n <DisplayResponseFooter\n editableDescription={editableDescription}\n aiStudioState={aiStudioState}\n dispatch={dispatch}\n handleCopy={handleCopy}\n copied={copied}\n jobFlow={jobFlow}\n setGeneratedContent={setGeneratedContent}\n handleClose={handleClose}\n />\n </Box>\n );\n};\n\nexport default DisplayDescription;\n","import React, { useState, Dispatch } from 'react';\nimport { Box, Button, Checkbox, FormControl } from '@mui/material';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport StyledDropdown from '../../SharedComponents/Inputs/StyledDropdown';\nimport PositionTitleInput from '../../SharedComponents/Inputs/PositionTitle';\nimport OptionalInputButtons from '../Buttons/OptionalInput';\nimport { classes } from '../styles';\nimport DynamicFooter from '../../SharedComponents/Footers/DynamicFooter';\nimport { AIStudioAction, AIStudioState } from '../reducer';\nimport SingleAttachmentSelector from '../../../NewUI/Components/Utilities/SingleAttachmentSelector';\n\nconst aiToneTypes = {\n english: ['neutral', 'professional', 'casual', 'creative', 'excited', 'urgent', 'persuasive'],\n french: [\n 'neutre',\n 'professionnel',\n 'décontracté',\n 'créatif',\n 'enthousiaste',\n 'urgent',\n 'persuasif'\n ]\n};\n\nconst frenchToEnglishTonetype = {\n neutre: 'neutral',\n professionnel: 'professional',\n décontracté: 'casual',\n créatif: 'creative',\n enthousiaste: 'excited',\n urgent: 'urgent',\n persuasif: 'persuasive'\n};\n\nconst englishToFrenchTonetypes = {\n neutral: 'neutre',\n professional: 'professionnel',\n casual: 'décontracté',\n creative: 'créatif',\n excited: 'enthousiaste',\n urgent: 'urgent',\n persuasive: 'persuasif'\n};\n\nconst backCloseButton = {\n jobFlow: {\n english: 'Close',\n french: 'Fermer'\n },\n studio: {\n english: 'Back',\n french: 'Retour'\n }\n};\n\nconst JobDescriptionInput = ({\n dispatch,\n aiStudioState,\n generateDescription,\n jobFlow\n}: {\n dispatch: Dispatch<AIStudioAction>;\n aiStudioState: AIStudioState;\n generateDescription: () => void;\n jobFlow?: boolean;\n}) => {\n const [positionTitle, setPositionTitle] = useState(\n aiStudioState.jobDetails['position_title'] || ''\n );\n const [fileList, setFileList] = useState(aiStudioState.document || undefined);\n\n const pillClickHandler = (pillType: string) => {\n dispatch({ type: 'SELECT_OPTIONAL_INPUT', payload: pillType });\n };\n\n const handleBackClick = () => {\n if (!jobFlow) {\n setPositionTitle('');\n setFileList(undefined);\n dispatch({ type: 'GO_TO_HOME_STEP' });\n } else {\n dispatch({ type: 'SET_CONFIRM_CANCEL_IS_OPEN', payload: true });\n }\n };\n\n const handleGenerateClick = () => {\n setPositionTitle('');\n generateDescription();\n };\n\n const handleClearAllClick = () => {\n setPositionTitle('');\n setFileList(undefined);\n dispatch({ type: 'CLEAR_ALL_JOB_DETAILS' });\n };\n\n return (\n <Box sx={classes.descriptionContainer}>\n <Box sx={classes.genericContainer}>\n <Box sx={{ display: 'flex', justifyContent: 'space-between', width: '100%' }}>\n <Box sx={classes.fieldHeader}>\n {aiStudioState.aiStudioFrenchEnabled ? 'Titre du poste' : 'Position title'}\n </Box>\n <Button sx={classes.pill} endIcon={<ClearIcon />} onClick={handleClearAllClick}>\n {aiStudioState.aiStudioFrenchEnabled ? 'Effacer tout' : 'Clear all'}\n </Button>\n </Box>\n <PositionTitleInput\n positionTitle={positionTitle}\n onChange={setPositionTitle}\n aiStudioFrenchEnabled={aiStudioState.aiStudioFrenchEnabled}\n onBlur={(value: string) =>\n dispatch({ type: 'SET_JOB_DETAILS', payload: value, fieldName: 'position_title' })\n }\n />\n <Box sx={{ marginBlock: '20px' }}>\n <Box sx={classes.fieldSubHeader}>\n {aiStudioState.aiStudioFrenchEnabled ? 'Position du poste' : 'Position description'}\n </Box>\n <SingleAttachmentSelector\n setFile={(file) => {\n dispatch({ type: 'SET_DOCUMENT', payload: file });\n setFileList(file);\n }}\n file={aiStudioState.document || fileList}\n maxSize={50000000}\n performUpload={false}\n />\n </Box>\n </Box>\n <Box sx={classes.optionalInformationContainer}>\n <Box sx={classes.fieldSubHeader}>\n {aiStudioState.aiStudioFrenchEnabled\n ? 'Informations facultatives'\n : 'Optional information'}\n </Box>\n <OptionalInputButtons\n jobDetails={aiStudioState.jobDetails}\n pillClickHandler={pillClickHandler}\n aiStudioFrenchEnabled={aiStudioState.aiStudioFrenchEnabled}\n />\n </Box>\n <FormControl fullWidth>\n <Box sx={classes.fieldSubHeader}>\n {aiStudioState.aiStudioFrenchEnabled ? 'Tonalité générée' : 'Generated tone'}\n </Box>\n <StyledDropdown\n id=\"generated-tone\"\n value={\n aiStudioState.aiStudioFrenchEnabled\n ? englishToFrenchTonetypes[aiStudioState.generatedTone]\n : aiStudioState.generatedTone\n }\n onChange={(value) =>\n dispatch({\n type: 'SET_GENERATED_TONE',\n payload: aiStudioState.aiStudioFrenchEnabled ? frenchToEnglishTonetype[value] : value\n })\n }\n options={aiToneTypes[aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english']}\n />\n </FormControl>\n <Box sx={classes.formContainer}>\n <Checkbox\n sx={classes.checkbox}\n checked={aiStudioState.sendEmail}\n onChange={(e) => dispatch({ type: 'SET_SEND_EMAIL', payload: e.target.checked })}\n />\n <Box sx={classes.formLabel}>\n {aiStudioState.aiStudioFrenchEnabled\n ? \"Envoyez-moi par email une copie de ma page d'atterrissage pour les candidats (talent landing page).\"\n : 'Email me a copy of my talent landing page'}\n </Box>\n </Box>\n <DynamicFooter\n handleSecondaryButtonClick={handleBackClick}\n handlePrimaryButtonClick={handleGenerateClick}\n secondaryButtonText={\n backCloseButton[jobFlow ? 'jobFlow' : 'studio'][\n aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english'\n ]\n }\n primaryButtonText={aiStudioState.aiStudioFrenchEnabled ? 'Générer' : 'Generate'}\n primaryButtonID=\"write-tlp-generate-button\"\n felixMessage={\n aiStudioState.aiStudioFrenchEnabled ? (\n <>\n Dites-moi le titre du poste que vous souhaitez afficher. Tous les autres champs sont{' '}\n <span>facultatifs</span> mais utiles pour moi.\n </>\n ) : (\n <>\n Tell me your position title. All other fields are <span>optional</span> but helpful\n for me.\n </>\n )\n }\n felixMessageMaxWidth=\"325px\"\n disablePrimaryButton={positionTitle === ''}\n />\n </Box>\n );\n};\n\nexport default JobDescriptionInput;\n","import React, { useState, useCallback, Dispatch, useEffect } from 'react';\nimport { Box, OutlinedInput } from '@mui/material';\nimport DynamicFooter from '../../SharedComponents/Footers/DynamicFooter';\nimport { placeholderText, felixMessageText, isMultiLineInput } from '../config';\nimport { AIStudioAction, AIStudioState } from '../reducer';\nimport { convertPreferredSkills } from '../config';\nimport { classes } from '../styles';\n\nconst OptionalInput = ({\n dispatch,\n aiStudioState\n}: {\n dispatch: Dispatch<AIStudioAction>;\n aiStudioState: AIStudioState;\n}) => {\n const [inputValue, setInputValue] = useState('');\n const { optionalInputType, jobDetails, currentStep } = aiStudioState;\n\n const handleBackClick = () => {\n dispatch({ type: 'SET_CURRENT_STEP', payload: 1 });\n };\n\n const handleDoneClick = useCallback(() => {\n dispatch({\n type: 'SET_JOB_DETAILS',\n payload: inputValue,\n fieldName: optionalInputType\n });\n dispatch({ type: 'SET_CURRENT_STEP', payload: 1 });\n }, [optionalInputType, dispatch, inputValue]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Enter' && e.shiftKey) {\n handleDoneClick();\n }\n };\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleDoneClick]);\n\n useEffect(() => {\n if (currentStep !== 2 && !jobDetails[optionalInputType as keyof typeof jobDetails]) return;\n setInputValue(jobDetails[optionalInputType as keyof typeof jobDetails]);\n }, [currentStep, jobDetails, optionalInputType]);\n\n return (\n <Box sx={classes.descriptionContainer}>\n <Box sx={classes.genericContainer}>\n <Box sx={classes.fieldHeader}>\n {\n convertPreferredSkills[aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english'][\n optionalInputType\n ]\n }\n </Box>\n <OutlinedInput\n id=\"option-field-input\"\n sx={{\n ...classes.fieldInput,\n ...(isMultiLineInput[optionalInputType as keyof typeof isMultiLineInput] && {\n height: '142px',\n padding: '0px 16px 4px 16px'\n })\n }}\n placeholder={\n placeholderText[aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english'][\n optionalInputType\n ]\n }\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n multiline={isMultiLineInput[optionalInputType as keyof typeof isMultiLineInput]}\n rows={isMultiLineInput[optionalInputType as keyof typeof isMultiLineInput] ? 5 : 1}\n />\n </Box>\n <DynamicFooter\n handleSecondaryButtonClick={handleBackClick}\n handlePrimaryButtonClick={handleDoneClick}\n primaryButtonText={aiStudioState.aiStudioFrenchEnabled ? 'Terminé' : 'Done'}\n secondaryButtonText={aiStudioState.aiStudioFrenchEnabled ? 'Retour' : 'Back'}\n felixMessage={\n felixMessageText[optionalInputType as keyof typeof felixMessageText][\n aiStudioState.aiStudioFrenchEnabled ? 'french' : 'english'\n ]\n }\n felixMessageMaxWidth=\"450px\"\n />\n </Box>\n );\n};\n\nexport default OptionalInput;\n","import React, { useState, Dispatch } from 'react';\nimport { Box, FormControl } from '@mui/material';\nimport PositionTitleInput from '../../SharedComponents/Inputs/PositionTitle';\nimport PreferredSkillsInput from '../../SharedComponents/Inputs/PreferredSkills';\nimport StyledDropdown from '../../SharedComponents/Inputs/StyledDropdown';\nimport DynamicFooter from '../../SharedComponents/Footers/DynamicFooter';\nimport { questionTypes } from '../../SharedComponents/sharedConfig';\nimport { classes } from '../styles';\nimport { AIStudioAction, AIStudioState } from '../reducer';\n\nconst QuestionsInput = ({\n dispatch,\n aiStudioState,\n generateQuestions\n}: {\n dispatch: Dispatch<AIStudioAction>;\n aiStudioState: AIStudioState;\n generateQuestions: () => void;\n}) => {\n const [positionTitle, setPositionTitle] = useState(aiStudioState.jobDetails.position_title || '');\n const [preferredSkills, setPreferredSkills] = useState(\n aiStudioState.jobDetails.preferred_skills || ''\n );\n\n const handleGenerateClick = () => {\n setPositionTitle('');\n setPreferredSkills('');\n generateQuestions();\n };\n\n return (\n <Box sx={classes.descriptionContainer}>\n <Box sx={classes.genericContainer}>\n <Box sx={classes.fieldHeader}>Position title</Box>\n <PositionTitleInput\n positionTitle={positionTitle}\n onChange={setPositionTitle}\n onBlur={(value: string) =>\n dispatch({ type: 'SET_JOB_DETAILS', payload: value, fieldName: 'position_title' })\n }\n />\n </Box>\n <Box sx={classes.genericContainer}>\n <Box sx={classes.fieldSubHeader}>Preferred skills (optional)</Box>\n <PreferredSkillsInput\n preferredSkills={preferredSkills}\n onChange={setPreferredSkills}\n onBlur={(value: string) =>\n dispatch({ type: 'SET_JOB_DETAILS', payload: value, fieldName: 'Preferred_skills' })\n }\n />\n </Box>\n <Box sx={classes.genericContainer}>\n <FormControl fullWidth>\n <Box sx={classes.fieldSubHeader}>Question type</Box>\n <StyledDropdown\n id=\"question-type\"\n value={aiStudioState.questionType}\n onChange={(value: string) => dispatch({ type: 'SET_QUESTION_TYPE', payload: value })}\n options={questionTypes}\n />\n </FormControl>\n </Box>\n <DynamicFooter\n handleSecondaryButtonClick={() => dispatch({ type: 'GO_TO_HOME_STEP' })}\n handlePrimaryButtonClick={handleGenerateClick}\n secondaryButtonText=\"Back\"\n primaryButtonText=\"Generate\"\n primaryButtonID=\"write-screening-questions-generate-button\"\n felixMessage={\n <>\n Let me help you write your <span>screening questions</span>!\n </>\n }\n disablePrimaryButton={positionTitle === ''}\n />\n </Box>\n );\n};\n\nexport default QuestionsInput;\n","import React, { Dispatch } from 'react';\nimport { Box, Button, FormControlLabel, Switch } from '@mui/material';\nimport { classes } from '../styles';\nimport { classes as sharedClasses } from '../../SharedComponents/styles';\nimport { FelixSVG } from '../../SharedComponents/Graphics/FelixSVG';\nimport { AIStudioAction, AIStudioState } from '../reducer';\n\nexport const WelcomePage = ({\n dispatch,\n aiStudioState,\n aiStudioFrenchEnabled\n}: {\n dispatch: Dispatch<AIStudioAction>;\n aiStudioState: AIStudioState;\n aiStudioFrenchEnabled: boolean;\n}) => {\n return (\n <Box sx={classes.welcomeContainer}>\n <Box sx={classes.felixContainer}>\n <FelixSVG />\n </Box>\n <Box sx={classes.headersAndOptionsContainer}>\n <Box\n sx={{\n ...classes.header,\n ...(!aiStudioState.showCaret && { '& span': { borderRight: 'none', lineHeight: '1' } }),\n ...(aiStudioState.aiStudioFrenchEnabled && { height: '136px' })\n }}\n >\n <span>{aiStudioState.welcomeHeader}</span>\n </Box>\n <Box sx={classes.subHeader}>\n {aiStudioState.aiStudioFrenchEnabled\n ? 'Comment puis-je vous aider aujourd’hui'\n : 'What can I help you with today'}\n ?\n </Box>\n <Box sx={classes.optionsContainer}>\n <Button\n id=\"write-a-tlp\"\n sx={classes.option}\n onClick={() => dispatch({ type: 'SELECT_WRITE_TLP' })}\n >\n {aiStudioState.aiStudioFrenchEnabled\n ? 'Rédigez une description de poste'\n : 'Write a talent landing page'}\n </Button>\n <Button\n id=\"write-screening-questions\"\n sx={classes.option}\n onClick={() => dispatch({ type: 'SELECT_WRITE_SCREENING_QUESTION' })}\n >\n {aiStudioState.aiStudioFrenchEnabled\n ? 'Aidez-moi avec des questions de sélection'\n : 'Help me with some screening questions'}\n </Button>\n {aiStudioFrenchEnabled && (\n <Box>\n <FormControlLabel\n sx={\n !aiStudioState.aiStudioFrenchEnabled\n ? { ...sharedClasses.switchLabels, ...sharedClasses.labelActive }\n : sharedClasses.switchLabels\n }\n control={\n <Switch\n sx={\n aiStudioState.aiStudioFrenchEnabled\n ? sharedClasses.aiSwitchActive\n : sharedClasses.switch\n }\n checked={aiStudioState.aiStudioFrenchEnabled}\n onChange={() => dispatch({ type: 'TOGGLE_FRENCH' })}\n />\n }\n label={aiStudioState.aiStudioFrenchEnabled ? 'Français' : 'French'}\n labelPlacement=\"end\"\n />\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n );\n};\n","import React from 'react';\n\nexport const welcomeMessage = {\n english: \"Hello! I'm Felix.\",\n french: 'Salut! Je suis Felix.'\n};\n\nexport const defaultJobDetails = {\n position_title: '',\n preferred_skills: '',\n position_responsibilities: '',\n position_location: '',\n salary: '',\n company_name: '',\n company_description: '',\n company_benefits: ''\n};\n\n// OptionalInput.tsx Variables\n\nexport const placeholderText = {\n english: {\n preferred_skills: \"eg. 'Attention to detail, time management'\",\n position_responsibilities:\n \"eg. 'Designing user interfaces, creating wireframes, conducting user research'\",\n position_location: \"eg. 'Remote, Brisbane, Australia'\",\n salary: \"eg. '$100,000 - $120,000'\",\n company_name: \"eg. 'Google'\",\n company_description:\n \"eg. 'We are a tech company that specialises in AI technology. Our mission is to make the world a better place by creating AI that can help people.'\",\n company_benefits:\n \"eg. 'Flexible working hours, quarterly team building events, unlimited snacks, employee gym membership'\"\n },\n french: {\n preferred_skills: \"ex. 'Attention aux détails, gestion du temps'\",\n position_responsibilities:\n \"ex. 'Conception d'interfaces utilisateur, création de maquettes, réalisation de recherches utilisateur'\",\n position_location: \"ex. 'À distance, Brisbane, Australie'\",\n salary: \"ex. '100 000 $ - 120 000 $'\",\n company_name: \"ex. 'Google'\",\n company_description:\n \"ex. 'Nous sommes une entreprise technologique spécialisée dans la technologie de l'IA. Notre mission est de rendre le monde meilleur en créant une IA capable d'aider les gens.'\",\n company_benefits:\n \"ex. 'Horaires de travail flexibles, événements trimestriels de renforcement d'équipe, collations illimitées, adhésion à une salle de sport pour les employés'\"\n }\n};\n\nexport const felixMessageText = {\n preferred_skills: {\n english: (\n <>\n <span>Preferred skills</span> can include include soft skills such as communication and time\n management, or technical skills.\n </>\n ),\n french: (\n <>\n <span>Les compétences préférées</span> peuvent inclure des compétences douces telles que la\n communication et la gestion du temps, ou des compétences techniques.\n </>\n )\n },\n position_responsibilities: {\n english: (\n <>\n <span>Position responsibilities</span> are the tasks that the candidate will be expected to\n perform.\n </>\n ),\n french: (\n <>\n <span>Les responsabilités du poste</span> sont les tâches que le candidat sera censé\n accomplir.\n </>\n )\n },\n position_location: {\n english: (\n <>\n <span>Position location</span> is the location of the position and can include remote work\n with preferred locations.\n </>\n ),\n french: (\n <>\n <span>La localisation du poste</span> est l'endroit où se situe le poste et peut inclure le\n travail à distance avec des lieux préférés.\n </>\n )\n },\n salary: {\n english: (\n <>\n <span>Salary</span> is the salary range for the position. You can include bonuses,\n superannuation and other incentives.\n </>\n ),\n french: (\n <>\n <span>Salaire</span> est la fourchette de salaire pour le poste. Vous pouvez inclure des\n bonus, des pensions et d'autres incitations.\n </>\n )\n },\n company_name: {\n english: (\n <>\n Let me know the <span>name of the company</span> that is hiring, so I can include it in the\n job description.\n </>\n ),\n french: (\n <>\n Faites-moi savoir le <span>nom de l'entreprise</span> qui embauche, pour que je puisse\n l'inclure dans la description du poste.\n </>\n )\n },\n company_description: {\n english: (\n <>\n The <span>company description</span> should be a short description of the company. This\n could include the company's mission, vision, and values.\n </>\n ),\n french: (\n <>\n La <span>description de l'entreprise</span> devrait être une brève description de\n l'entreprise. Cela pourrait inclure la mission, la vision et les valeurs de l'entreprise.\n </>\n )\n },\n company_benefits: {\n english: (\n <>\n <span>Company benefits</span> are the benefits that the company offers, such as flexible\n hours, free lunch on Fridays, or a gym membership.\n </>\n ),\n french: (\n <>\n <span>Les avantages de l'entreprise</span> sont les avantages que l'entreprise offre, comme\n des horaires flexibles, un déjeuner gratuit le vendredi ou une adhésion à une salle de\n sport.\n </>\n )\n }\n};\n\nexport const isMultiLineInput = {\n preferred_skills: false,\n position_responsibilities: true,\n position_location: false,\n salary: false,\n company_name: false,\n company_description: true,\n company_benefits: true\n};\n\n// LoadingResponse.tsx Variables\n\nconst loadingType = {\n description: 'talent landing page',\n questions: 'screening questions',\n social: 'social media post',\n advertisement: 'job board advertisement',\n interview: 'interview questions',\n summary: 'candidate summaries'\n};\n\nexport const generateLoadingText = (generationType: string) => [\n `Sit tight! I'm drafting your ${loadingType[generationType as keyof typeof loadingType]}`,\n 'Waving the wand of computational conjuring',\n 'Researching similar roles',\n 'Crafting a masterpiece of expression',\n 'Exploring the job market',\n 'Rising like a phoenix from the ashes of data',\n 'Doing the work to save you time'\n];\n\n// DisplayResponse.tsx Variables\n\nexport const modalTitle = {\n english: {\n description: 'draft talent landing page',\n questions: 'screening questions',\n advertisement: 'job board advertisement'\n },\n french: {\n description: 'brouillon de description de poste',\n questions: 'questions de sélection',\n advertisement: 'annonce sur un site d’emploi'\n }\n};\n\nexport const notificationTitles = {\n bulk_summary: 'Application Summaries are',\n interview_questions: 'Interview Questions are',\n follow_up_email: 'Follow Up Email is'\n};\n\n// French translation\nexport const convertPreferredSkills = {\n english: {\n preferred_skills: 'Preferred skills',\n position_responsibilities: 'Position responsibilities',\n position_location: 'Position location',\n salary: 'Salary',\n company_name: 'Company name',\n company_description: 'Company description',\n company_benefits: 'Company benefits'\n },\n french: {\n preferred_skills: 'Compétences préférées',\n position_responsibilities: 'Responsabilités du poste',\n position_location: 'Emplacement du poste',\n salary: 'Salaire',\n company_name: \"Nom de l'entreprise\",\n company_description: \"Description de l'entreprise\",\n company_benefits: \"Avantages de l'entreprise\"\n }\n};\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport { Box, FormControl } from '@mui/material';\nimport PositionTitleInput from '../SharedComponents/Inputs/PositionTitle';\nimport PreferredSkillsInput from '../SharedComponents/Inputs/PreferredSkills';\nimport StyledDropdown from '../SharedComponents/Inputs/StyledDropdown';\nimport DynamicFooter from '../SharedComponents/Footers/DynamicFooter';\nimport DisplayHTMLCollapsible from '../SharedComponents/DisplayHTMLCollapsible';\nimport ToggleButtons from '../SharedComponents/Buttons/ToggleButtons';\nimport { questionTypes } from '../SharedComponents/sharedConfig';\nimport { classes } from './styles';\n\nconst toggleButtonOptions = [\n {\n value: 'skills',\n label: 'Use preferred skills'\n },\n {\n value: 'description',\n label: 'Use job description'\n }\n];\n\nexport default function AIStudioForm({\n jobDescription,\n positionTitle,\n setPositionTitle,\n preferredSkills,\n setPreferredSkills,\n questionType,\n setQuestionType,\n jobInformationSource,\n setJobInformationSource,\n generateQuestions\n}: {\n jobDescription?: string;\n positionTitle: string;\n setPositionTitle: Dispatch<SetStateAction<string>>;\n preferredSkills: string;\n setPreferredSkills: Dispatch<SetStateAction<string>>;\n questionType: string;\n setQuestionType: Dispatch<SetStateAction<string>>;\n jobInformationSource: string;\n setJobInformationSource: Dispatch<SetStateAction<string>>;\n generateQuestions: () => void;\n}) {\n const [collapsed, setCollapsed] = useState(true);\n return (\n <Box sx={{ ...classes.aiQuestionsContainer, rowGap: '42px' }}>\n <Box sx={classes.genericContainer}>\n <Box sx={classes.fieldHeader}>Position title</Box>\n <PositionTitleInput positionTitle={positionTitle} onChange={setPositionTitle} />\n </Box>\n {jobDescription && (\n <Box sx={classes.genericContainer}>\n <ToggleButtons\n value={jobInformationSource}\n setValue={setJobInformationSource}\n options={toggleButtonOptions}\n />\n </Box>\n )}\n {jobInformationSource === 'skills' || !jobDescription ? (\n <Box sx={classes.genericContainer}>\n <Box sx={classes.fieldSubHeader}>Preferred skills (optional)</Box>\n <PreferredSkillsInput preferredSkills={preferredSkills} onChange={setPreferredSkills} />\n </Box>\n ) : (\n <Box sx={classes.genericContainer}>\n <Box sx={classes.fieldSubHeader}>Job description</Box>\n <DisplayHTMLCollapsible\n content={jobDescription}\n collapsed={collapsed}\n setCollapsed={setCollapsed}\n />\n </Box>\n )}\n <Box sx={classes.genericContainer}>\n <FormControl fullWidth>\n <Box sx={classes.fieldSubHeader}>Question type</Box>\n <StyledDropdown\n id=\"generated-tone\"\n value={questionType}\n onChange={setQuestionType}\n options={questionTypes}\n />\n </FormControl>\n </Box>\n <DynamicFooter\n handlePrimaryButtonClick={generateQuestions}\n primaryButtonText=\"Generate\"\n primaryButtonID=\"generate-questions-integration-button\"\n disablePrimaryButton={positionTitle === ''}\n felixMessage={\n <>\n Let me help you write your <span>screening questions</span>!\n </>\n }\n />\n </Box>\n );\n}\n","import React, { useState, Dispatch, SetStateAction, useCallback, useRef } from 'react';\nimport { Box, Modal } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { StyledSnackbarProps } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { classes } from './styles';\nimport Api from '../../NewUI/Job/API';\nimport AIStudioForm from './AIStudioForm';\nimport LoadingResponse from '../SharedComponents/Steps/LoadingResponse';\nimport AIStudioResponse from './AIStudioResponse';\nimport ErrorScreen from '../SharedComponents/Steps/ErrorScreen';\nimport { IGeneratedContent } from '../NewJobIntegration/AIStudioNewJob';\nimport { convertToLocalEnglish } from '../../NewUI/Components/Utilities/convertToLocalEnglish';\nimport { LIST_ITEMS_REGEX } from '../SharedComponents/sharedConfig';\n\nexport interface IQuestion {\n selected?: boolean;\n title: string;\n enabled: boolean;\n required: boolean;\n rateable: boolean;\n confidential: boolean;\n}\n\nexport default function AIStudioField({\n jobId,\n jobDescription,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n getQuestions,\n jobTitle,\n setGeneratedContent,\n userPermissions\n}: {\n jobId?: number;\n jobDescription?: string;\n setSnackbar?: StyledSnackbarProps['setSnackbarState'];\n modalsOpen: boolean;\n setModalsOpen: (open: boolean) => void;\n getQuestions?: () => void;\n jobTitle: string;\n setGeneratedContent?: Dispatch<SetStateAction<IGeneratedContent>>;\n userPermissions: Record<string, Record<string, boolean>>;\n}) {\n const [questionType, setQuestionType] = useState<string>('general');\n const [positionTitle, setPositionTitle] = useState(jobTitle);\n const [preferredSkills, setPreferredSkills] = useState('');\n const [generatedResponse, setGeneratedResponse] = useState<IQuestion[] | undefined>(undefined);\n const [generationError, setGenerationError] = useState(false);\n const [currentStep, setCurrentStep] = useState(0);\n const [isCreating, setIsCreating] = useState(false);\n const [jobInformationSource, setJobInformationSource] = useState('skills');\n const questionsController = useRef<AbortController | null>(null);\n\n const handleClose = () => {\n // abort any pending requests\n questionsController?.current?.abort();\n\n // close the modal\n setModalsOpen(!modalsOpen);\n\n // reset the state to defaults\n setCurrentStep(0);\n setPositionTitle(jobTitle);\n setGenerationError(false);\n setGeneratedResponse(undefined);\n setQuestionType('general');\n setPreferredSkills('');\n };\n\n const generateQuestions = useCallback(async () => {\n questionsController.current = new AbortController();\n setCurrentStep(1);\n try {\n const response = await fetch('/api/v4/ai_studio', {\n signal: questionsController.current.signal,\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n job_id: jobId,\n ai_studio: {\n type: 'questions',\n question_type: questionType,\n job_details: {\n position_title: positionTitle,\n preferred_skills: preferredSkills\n },\n number_of_questions: 3,\n ...(jobInformationSource === 'description' && {\n use_description: true,\n job_description: jobDescription\n })\n }\n })\n }).then((res) => res.json());\n if (response && response.result && response.result.length > 30) {\n const localEnglishQuestions = convertToLocalEnglish(response.result);\n const questions = localEnglishQuestions\n .replace(LIST_ITEMS_REGEX, '')\n .split('**')\n .slice(0, -1)\n .map((question) => {\n return {\n selected: false,\n title: question,\n enabled: true,\n required: false,\n rateable: false\n };\n });\n setGeneratedResponse(questions);\n } else {\n throw new Error('No response from AI API');\n }\n } catch (error) {\n console.error(error);\n setGenerationError(true);\n } finally {\n if (!questionsController.current.signal.aborted) {\n setCurrentStep(2);\n }\n }\n }, [jobDescription, jobInformationSource, positionTitle, preferredSkills, questionType]);\n\n const handleSubmit = async () => {\n setIsCreating(true);\n const requests = generatedResponse?.map((question) => {\n if (!question.selected) return;\n return Api.newField({ 'X-api-authenticate': 'NONE' }, jobId || -1, {\n field: {\n title: question.title.replace(/\\n/g, ''),\n enabled: question.enabled,\n required: question.required,\n rateable: question.rateable,\n confidential: question.confidential,\n field_type: 'text_area_field'\n }\n });\n });\n try {\n await Promise.all(requests);\n setSnackbar &&\n setSnackbar({\n message: 'Fields have been created',\n state: 'success'\n });\n } catch (error) {\n console.log(error);\n setSnackbar &&\n setSnackbar({\n message: 'Fields could not be created',\n state: 'error'\n });\n } finally {\n handleClose();\n setIsCreating(false);\n getQuestions && getQuestions();\n }\n };\n\n const handleAddToNewJob = () => {\n const newQuestions =\n generatedResponse\n ?.filter((q) => q.selected)\n .map((question) => {\n return {\n title: question.title.replace(/\\n/g, ''),\n enabled: question.enabled,\n required: question.required,\n rateable: question.rateable\n };\n }) || [];\n setGeneratedContent &&\n setGeneratedContent((prev) => ({\n ...prev,\n screeningQuestions: [...prev.screeningQuestions, ...newQuestions]\n }));\n handleClose();\n };\n\n const stepSelect = () => {\n if (generationError) {\n return (\n <ErrorScreen\n regenerateCallback={generateQuestions}\n setGenerationError={setGenerationError}\n backToHome={() => setCurrentStep(0)}\n />\n );\n }\n switch (currentStep) {\n case 0:\n return (\n <AIStudioForm\n jobDescription={jobDescription}\n positionTitle={positionTitle}\n setPositionTitle={setPositionTitle}\n preferredSkills={preferredSkills}\n setPreferredSkills={setPreferredSkills}\n questionType={questionType}\n setQuestionType={setQuestionType}\n generateQuestions={generateQuestions}\n jobInformationSource={jobInformationSource}\n setJobInformationSource={setJobInformationSource}\n />\n );\n case 1:\n return <LoadingResponse generationType=\"questions\" />;\n case 2:\n return (\n <AIStudioResponse\n generatedResponse={generatedResponse}\n setGeneratedResponse={setGeneratedResponse}\n generateQuestions={generateQuestions}\n setCurrentStep={setCurrentStep}\n handleSubmit={jobId ? handleSubmit : handleAddToNewJob}\n isCreating={isCreating}\n userPermissions={userPermissions}\n />\n );\n default:\n return null;\n }\n };\n\n return (\n <Modal open={modalsOpen} onClose={handleClose} aria-labelledby=\"new-field-modal\">\n <Box sx={classes.aiModal}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n {stepSelect()}\n </Box>\n </Modal>\n );\n}\n","import React, { useRef, Dispatch, SetStateAction } from 'react';\nimport { Box, Button, Checkbox } from '@mui/material';\nimport CachedIcon from '@mui/icons-material/Cached';\nimport { IQuestion } from './AIStudioQuestions';\nimport { classes } from './styles';\nimport ConfettiExplosion from 'react-confetti-explosion';\nimport QuestionSwitch from '../SharedComponents/Inputs/Switch';\nimport ResponseFooter from './Footers/ResponseFooter';\n\nexport default function AIStudioResponse({\n generatedResponse,\n setGeneratedResponse,\n generateQuestions,\n setCurrentStep,\n handleSubmit,\n isCreating,\n userPermissions\n}: {\n generatedResponse: IQuestion[] | undefined;\n setGeneratedResponse: Dispatch<SetStateAction<IQuestion[] | undefined>>;\n generateQuestions: () => void;\n setCurrentStep: Dispatch<SetStateAction<number>>;\n handleSubmit: () => void;\n isCreating: boolean;\n userPermissions: Record<string, Record<string, boolean>>;\n}) {\n const playConfetti = useRef(true);\n setTimeout(() => {\n playConfetti.current = false;\n }, 3500);\n if (generatedResponse === undefined) {\n return (\n <Box sx={classes.aiQuestionsContainer}>\n There was an error generating your questions. Please try again.\n </Box>\n );\n }\n\n const addButtonText = `Add ${\n generatedResponse.filter((item) => item.selected).length > 0\n ? '(' + generatedResponse.filter((item) => item.selected).length + ')'\n : ''\n }`;\n\n const handleSwitchChange = (index: number, type: string) => {\n playConfetti.current && (playConfetti.current = false);\n const newQuestions = [...generatedResponse];\n switch (type) {\n case 'enabled':\n newQuestions[index].enabled = !newQuestions[index].enabled;\n break;\n case 'required':\n newQuestions[index].required = !newQuestions[index].required;\n break;\n case 'rateable':\n newQuestions[index].rateable = !newQuestions[index].rateable;\n break;\n case 'confidential':\n newQuestions[index].confidential = !newQuestions[index].confidential;\n break;\n default:\n break;\n }\n setGeneratedResponse(newQuestions);\n };\n\n const handleSelectQuestion = (index: number) => {\n playConfetti.current && (playConfetti.current = false);\n const newQuestions = [...generatedResponse];\n newQuestions[index].selected = !newQuestions[index].selected;\n setGeneratedResponse(newQuestions);\n };\n\n return (\n <>\n {playConfetti.current && (\n <Box sx={{ width: '100%', display: 'flex', justifyContent: 'center' }}>\n <ConfettiExplosion\n force={0.5}\n duration={4000}\n particleCount={120}\n height={1000}\n width={1000}\n />\n </Box>\n )}\n <Box sx={classes.aiQuestionsContainer}>\n <Box sx={classes.descriptionHeader}>\n <Box sx={classes.descriptionHeaderText}>Your screening questions</Box>\n <Button\n id=\"regenerate-questions-integration-button\"\n sx={classes.pill}\n endIcon={<CachedIcon />}\n onClick={generateQuestions}\n >\n Regenerate\n </Button>\n </Box>\n <Box sx={classes.questionsContainer}>\n {generatedResponse.map((item, index) => (\n <Box sx={classes.question} key={index}>\n <Box>\n <Checkbox\n sx={classes.checkbox}\n checked={item.selected}\n onChange={() => handleSelectQuestion(index)}\n />\n </Box>\n <Box sx={{ display: 'flex', flexDirection: 'column', rowGap: '16px' }}>\n <Box sx={{ marginTop: '7px' }}>{item.title}</Box>\n <Box>\n <Box sx={{ display: 'flex' }}>\n <QuestionSwitch\n item={item}\n index={index}\n type=\"enabled\"\n label=\"Enabled\"\n onChange={handleSwitchChange}\n />\n <QuestionSwitch\n item={item}\n index={index}\n type=\"required\"\n label=\"Required\"\n onChange={handleSwitchChange}\n />\n <QuestionSwitch\n item={item}\n index={index}\n type=\"rateable\"\n label=\"Rateable\"\n onChange={handleSwitchChange}\n />\n <QuestionSwitch\n item={item}\n index={index}\n type=\"confidential\"\n label=\"Confidential\"\n onChange={handleSwitchChange}\n />\n </Box>\n </Box>\n </Box>\n {generatedResponse[index].confidential && (\n <Box sx={{ padding: '0 6px', color: '#838383', fontSize: '12px' }}>\n <span style={{ fontWeight: 'bold' }}>Confidential Setting Enabled:</span> For DE&I\n compliance, only authorised users (HR Admins), can view responses. Hiring Managers\n will not have access.\n </Box>\n )}\n </Box>\n ))}\n </Box>\n <ResponseFooter\n generatedResponse={generatedResponse}\n setCurrentStep={setCurrentStep}\n handleSubmit={handleSubmit}\n isCreating={isCreating}\n addButtonText={addButtonText}\n />\n </Box>\n </>\n );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, Button, CircularProgress } from '@mui/material';\nimport { FelixMessageSVG } from '../../SharedComponents/Graphics/FelixSVG';\nimport { IQuestion } from '../AIStudioQuestions';\nimport { classes } from '../styles';\n\nconst ResponseFooter = ({\n generatedResponse,\n setCurrentStep,\n handleSubmit,\n isCreating,\n addButtonText\n}: {\n generatedResponse: IQuestion[] | undefined;\n setCurrentStep: Dispatch<SetStateAction<number>>;\n handleSubmit: () => void;\n isCreating: boolean;\n addButtonText: string;\n}) => {\n return (\n <Box sx={classes.footerContainer}>\n <Box sx={classes.felixMessageContainer}>\n <FelixMessageSVG />\n <Box sx={classes.felixMessage}>\n Ta-da! Your <span>screening questions</span> are ready for action, let's get that\n position filled!\n </Box>\n </Box>\n <Box\n sx={{\n ...classes.footerButtonsContainer,\n minWidth: '310px',\n justifyContent: 'flex-end',\n rowGap: 'none'\n }}\n >\n <Button\n id=\"back-to-edit-fields-screening-question-integration\"\n sx={classes.footerBackButton}\n onClick={() => setCurrentStep(0)}\n >\n Back\n </Button>\n <Button\n id=\"add-generated-questions-to-job-button\"\n sx={classes.footerAddButton}\n onClick={handleSubmit}\n disabled={\n generatedResponse && generatedResponse.filter((item) => item.selected).length < 1\n }\n >\n {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : addButtonText}\n </Button>\n </Box>\n </Box>\n );\n};\n\nexport default ResponseFooter;\n","import React, { Dispatch } from 'react';\nimport { Box, Button } from '@mui/material';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport { FelixMessageSVG } from '../../SharedComponents/Graphics/FelixSVG';\nimport { classes } from '../styles';\nimport { SmartShareAction, SmartShareState } from '../reducer';\n\nconst ResponseFooter = ({\n dispatch,\n smartShareState,\n handleRichCopy,\n handleCopy,\n jobUrl\n}: {\n dispatch: Dispatch<SmartShareAction>;\n smartShareState: SmartShareState;\n handleRichCopy: () => void;\n handleCopy: () => void;\n jobUrl: string;\n}) => {\n return (\n <Box sx={classes.footerContainer}>\n <Box sx={classes.felixMessageContainer}>\n <FelixMessageSVG />\n <Box sx={{ ...classes.felixMessage, maxWidth: '400px' }}>\n {smartShareState.generationType === 'social' ? (\n <>\n Your draft <span>social media post</span> is ready to roll! You may want to use this\n as is, or make some adjustments before publishing.\n </>\n ) : (\n <>\n Your draft <span>job board advertisement</span> is ready to roll! You may want to use\n this as is, or make some adjustments before publishing.\n </>\n )}\n </Box>\n </Box>\n <Box sx={classes.footerButtonsContainer}>\n <Button\n id={`back-to-edit-fields-${smartShareState.generationType}`}\n sx={classes.footerBackButton}\n onClick={() => dispatch({ type: 'SET_CURRENT_STEP', payload: 0 })}\n >\n Back\n </Button>\n {smartShareState.generationType === 'social' ? (\n <CopyToClipboard\n text={smartShareState.generatedResponse + `\\n\\n${jobUrl}`}\n onCopy={() => handleCopy()}\n >\n <Button\n id=\"copy-social-post-button\"\n sx={classes.footerContinueButton}\n endIcon={<ContentCopyIcon />}\n >\n {smartShareState.copied ? 'Copied!' : 'Copy post text'}\n </Button>\n </CopyToClipboard>\n ) : (\n <Button\n id=\"copy-job-board-ad-button\"\n sx={classes.footerContinueButton}\n endIcon={<ContentCopyIcon />}\n onClick={handleRichCopy}\n >\n {smartShareState.copied ? 'Copied!' : 'Copy advertisement'}\n </Button>\n )}\n </Box>\n </Box>\n );\n};\n\nexport default ResponseFooter;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { FelixMessageSVG } from '../../SharedComponents/Graphics/FelixSVG';\nimport { classes } from '../styles';\n\nconst WelcomeFooter = () => {\n return (\n <Box sx={classes.footerContainer}>\n <Box sx={classes.felixMessageContainer}>\n <FelixMessageSVG />\n <Box sx={{ ...classes.felixMessage, maxWidth: '608px' }}>\n <div>\n Welcome to Smart Share, powered by AI Studio. I'm Felix, your AI assistant.\n </div>\n <div>\n I can help you write a <span>job board advertisment</span> or{' '}\n <span>social media post</span> for your job.\n </div>\n </Box>\n </Box>\n </Box>\n );\n};\n\nexport default WelcomeFooter;\n","import React from 'react';\n\nexport const SocialSVG = () => {\n return (\n <svg\n width=\"180\"\n height=\"122\"\n viewBox=\"0 0 180 122\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g filter=\"url(#filter0_d_3855_3117)\">\n <rect x=\"6\" y=\"24\" width=\"93\" height=\"92\" rx=\"6\" fill=\"white\" />\n </g>\n <rect x=\"14\" y=\"35\" width=\"74\" height=\"44\" fill=\"#E3E8FF\" />\n <rect x=\"14\" y=\"85\" width=\"64\" height=\"2\" fill=\"#E3E8FF\" />\n <rect x=\"14\" y=\"96\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n <g filter=\"url(#filter1_d_3855_3117)\">\n <rect x=\"81\" y=\"6\" width=\"93\" height=\"92\" rx=\"6\" fill=\"white\" />\n </g>\n <rect x=\"89\" y=\"17\" width=\"74\" height=\"43\" fill=\"#E3E8FF\" />\n <rect x=\"89\" y=\"66\" width=\"64\" height=\"3\" fill=\"#E3E8FF\" />\n <rect x=\"89\" y=\"77\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n <ellipse cx=\"167.5\" cy=\"100\" rx=\"9.5\" ry=\"10\" fill=\"#C7D1FF\" />\n <circle cx=\"119\" cy=\"100\" r=\"10\" fill=\"#C7D1FF\" />\n <mask id=\"mask0_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"112\" y=\"92\" width=\"15\" height=\"16\">\n <rect x=\"112.058\" y=\"92.8486\" width=\"14.368\" height=\"14.368\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask0_3855_3117)\">\n <path\n d=\"M121.337 99.4339C121.586 99.4339 121.798 99.3466 121.973 99.172C122.148 98.9974 122.235 98.7853 122.235 98.5359C122.235 98.2864 122.148 98.0744 121.973 97.8998C121.798 97.7252 121.586 97.6379 121.337 97.6379C121.087 97.6379 120.875 97.7252 120.701 97.8998C120.526 98.0744 120.439 98.2864 120.439 98.5359C120.439 98.7853 120.526 98.9974 120.701 99.172C120.875 99.3466 121.087 99.4339 121.337 99.4339ZM117.146 99.4339C117.396 99.4339 117.608 99.3466 117.782 99.172C117.957 98.9974 118.044 98.7853 118.044 98.5359C118.044 98.2864 117.957 98.0744 117.782 97.8998C117.608 97.7252 117.396 97.6379 117.146 97.6379C116.897 97.6379 116.685 97.7252 116.51 97.8998C116.336 98.0744 116.248 98.2864 116.248 98.5359C116.248 98.7853 116.336 98.9974 116.51 99.172C116.685 99.3466 116.897 99.4339 117.146 99.4339ZM119.242 103.325C119.92 103.325 120.536 103.133 121.09 102.749C121.644 102.365 122.045 101.858 122.295 101.23H116.188C116.438 101.858 116.839 102.365 117.393 102.749C117.947 103.133 118.563 103.325 119.242 103.325ZM119.242 106.019C118.413 106.019 117.635 105.862 116.907 105.548C116.178 105.233 115.545 104.807 115.006 104.268C114.467 103.729 114.041 103.096 113.726 102.367C113.412 101.639 113.255 100.861 113.255 100.033C113.255 99.2044 113.412 98.4261 113.726 97.6978C114.041 96.9694 114.467 96.3358 115.006 95.797C115.545 95.2582 116.178 94.8316 116.907 94.5173C117.635 94.203 118.413 94.0459 119.242 94.0459C120.07 94.0459 120.848 94.203 121.576 94.5173C122.305 94.8316 122.938 95.2582 123.477 95.797C124.016 96.3358 124.442 96.9694 124.757 97.6978C125.071 98.4261 125.228 99.2044 125.228 100.033C125.228 100.861 125.071 101.639 124.757 102.367C124.442 103.096 124.016 103.729 123.477 104.268C122.938 104.807 122.305 105.233 121.576 105.548C120.848 105.862 120.07 106.019 119.242 106.019Z\"\n fill=\"white\"\n />\n </g>\n <circle cx=\"144\" cy=\"100\" r=\"10\" fill=\"#C7D1FF\" />\n <rect x=\"14\" y=\"85\" width=\"64\" height=\"2\" fill=\"#E3E8FF\" />\n <rect x=\"14\" y=\"96\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n <rect x=\"14\" y=\"85\" width=\"64\" height=\"2\" fill=\"#E3E8FF\" />\n <rect x=\"14\" y=\"96\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n <rect x=\"14\" y=\"85\" width=\"64\" height=\"2\" fill=\"#E3E8FF\" />\n <rect x=\"14\" y=\"96\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n <mask id=\"mask1_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"161\" y=\"94\" width=\"14\" height=\"14\">\n <rect x=\"161.368\" y=\"94.3579\" width=\"12.7007\" height=\"12.7007\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask1_3855_3117)\">\n <path\n d=\"M167.719 105.471L166.951 104.783C166.061 103.98 165.324 103.288 164.742 102.706C164.16 102.124 163.697 101.601 163.353 101.138C163.009 100.675 162.769 100.25 162.632 99.8615C162.495 99.4734 162.427 99.0766 162.427 98.6708C162.427 97.8418 162.705 97.1494 163.26 96.5937C163.816 96.0381 164.508 95.7603 165.337 95.7603C165.796 95.7603 166.233 95.8573 166.647 96.0513C167.062 96.2454 167.419 96.5188 167.719 96.8716C168.019 96.5188 168.376 96.2454 168.79 96.0513C169.205 95.8573 169.641 95.7603 170.1 95.7603C170.929 95.7603 171.622 96.0381 172.177 96.5937C172.733 97.1494 173.011 97.8418 173.011 98.6708C173.011 99.0766 172.942 99.4734 172.806 99.8615C172.669 100.25 172.429 100.675 172.085 101.138C171.741 101.601 171.278 102.124 170.695 102.706C170.113 103.288 169.377 103.98 168.486 104.783L167.719 105.471Z\"\n fill=\"white\"\n />\n </g>\n <rect x=\"89\" y=\"17\" width=\"74\" height=\"43\" fill=\"#E3E8FF\" />\n <rect x=\"89\" y=\"66\" width=\"64\" height=\"3\" fill=\"#E3E8FF\" />\n <rect x=\"89\" y=\"77\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n <ellipse cx=\"167.5\" cy=\"100\" rx=\"9.5\" ry=\"10\" fill=\"#C7D1FF\" />\n <circle cx=\"119\" cy=\"100\" r=\"10\" fill=\"#C7D1FF\" />\n <mask id=\"mask2_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"112\" y=\"92\" width=\"15\" height=\"16\">\n <rect x=\"112.058\" y=\"92.8486\" width=\"14.368\" height=\"14.368\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask2_3855_3117)\">\n <path\n d=\"M121.337 99.4339C121.586 99.4339 121.798 99.3466 121.973 99.172C122.148 98.9974 122.235 98.7853 122.235 98.5359C122.235 98.2864 122.148 98.0744 121.973 97.8998C121.798 97.7252 121.586 97.6379 121.337 97.6379C121.087 97.6379 120.875 97.7252 120.701 97.8998C120.526 98.0744 120.439 98.2864 120.439 98.5359C120.439 98.7853 120.526 98.9974 120.701 99.172C120.875 99.3466 121.087 99.4339 121.337 99.4339ZM117.146 99.4339C117.396 99.4339 117.608 99.3466 117.782 99.172C117.957 98.9974 118.044 98.7853 118.044 98.5359C118.044 98.2864 117.957 98.0744 117.782 97.8998C117.608 97.7252 117.396 97.6379 117.146 97.6379C116.897 97.6379 116.685 97.7252 116.51 97.8998C116.336 98.0744 116.248 98.2864 116.248 98.5359C116.248 98.7853 116.336 98.9974 116.51 99.172C116.685 99.3466 116.897 99.4339 117.146 99.4339ZM119.242 103.325C119.92 103.325 120.536 103.133 121.09 102.749C121.644 102.365 122.045 101.858 122.295 101.23H116.188C116.438 101.858 116.839 102.365 117.393 102.749C117.947 103.133 118.563 103.325 119.242 103.325ZM119.242 106.019C118.413 106.019 117.635 105.862 116.907 105.548C116.178 105.233 115.545 104.807 115.006 104.268C114.467 103.729 114.041 103.096 113.726 102.367C113.412 101.639 113.255 100.861 113.255 100.033C113.255 99.2044 113.412 98.4261 113.726 97.6978C114.041 96.9694 114.467 96.3358 115.006 95.797C115.545 95.2582 116.178 94.8316 116.907 94.5173C117.635 94.203 118.413 94.0459 119.242 94.0459C120.07 94.0459 120.848 94.203 121.576 94.5173C122.305 94.8316 122.938 95.2582 123.477 95.797C124.016 96.3358 124.442 96.9694 124.757 97.6978C125.071 98.4261 125.228 99.2044 125.228 100.033C125.228 100.861 125.071 101.639 124.757 102.367C124.442 103.096 124.016 103.729 123.477 104.268C122.938 104.807 122.305 105.233 121.576 105.548C120.848 105.862 120.07 106.019 119.242 106.019Z\"\n fill=\"white\"\n />\n </g>\n <mask id=\"mask3_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"161\" y=\"94\" width=\"14\" height=\"14\">\n <rect x=\"161.368\" y=\"94.3579\" width=\"12.7007\" height=\"12.7007\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask3_3855_3117)\">\n <path\n d=\"M167.719 105.471L166.951 104.783C166.061 103.98 165.324 103.288 164.742 102.706C164.16 102.124 163.697 101.601 163.353 101.138C163.009 100.675 162.769 100.25 162.632 99.8615C162.495 99.4734 162.427 99.0766 162.427 98.6708C162.427 97.8418 162.705 97.1494 163.26 96.5937C163.816 96.0381 164.508 95.7603 165.337 95.7603C165.796 95.7603 166.233 95.8573 166.647 96.0513C167.062 96.2454 167.419 96.5188 167.719 96.8716C168.019 96.5188 168.376 96.2454 168.79 96.0513C169.205 95.8573 169.641 95.7603 170.1 95.7603C170.929 95.7603 171.622 96.0381 172.177 96.5937C172.733 97.1494 173.011 97.8418 173.011 98.6708C173.011 99.0766 172.942 99.4734 172.806 99.8615C172.669 100.25 172.429 100.675 172.085 101.138C171.741 101.601 171.278 102.124 170.695 102.706C170.113 103.288 169.377 103.98 168.486 104.783L167.719 105.471Z\"\n fill=\"white\"\n />\n </g>\n <rect x=\"89\" y=\"17\" width=\"74\" height=\"43\" fill=\"#E3E8FF\" />\n <rect x=\"89\" y=\"66\" width=\"64\" height=\"3\" fill=\"#E3E8FF\" />\n <rect x=\"89\" y=\"77\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n <ellipse cx=\"167.5\" cy=\"100\" rx=\"9.5\" ry=\"10\" fill=\"#C7D1FF\" />\n <circle cx=\"119\" cy=\"100\" r=\"10\" fill=\"#C7D1FF\" />\n <mask id=\"mask4_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"112\" y=\"92\" width=\"15\" height=\"16\">\n <rect x=\"112.058\" y=\"92.8486\" width=\"14.368\" height=\"14.368\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask4_3855_3117)\">\n <path\n d=\"M121.337 99.4339C121.586 99.4339 121.798 99.3466 121.973 99.172C122.148 98.9974 122.235 98.7853 122.235 98.5359C122.235 98.2864 122.148 98.0744 121.973 97.8998C121.798 97.7252 121.586 97.6379 121.337 97.6379C121.087 97.6379 120.875 97.7252 120.701 97.8998C120.526 98.0744 120.439 98.2864 120.439 98.5359C120.439 98.7853 120.526 98.9974 120.701 99.172C120.875 99.3466 121.087 99.4339 121.337 99.4339ZM117.146 99.4339C117.396 99.4339 117.608 99.3466 117.782 99.172C117.957 98.9974 118.044 98.7853 118.044 98.5359C118.044 98.2864 117.957 98.0744 117.782 97.8998C117.608 97.7252 117.396 97.6379 117.146 97.6379C116.897 97.6379 116.685 97.7252 116.51 97.8998C116.336 98.0744 116.248 98.2864 116.248 98.5359C116.248 98.7853 116.336 98.9974 116.51 99.172C116.685 99.3466 116.897 99.4339 117.146 99.4339ZM119.242 103.325C119.92 103.325 120.536 103.133 121.09 102.749C121.644 102.365 122.045 101.858 122.295 101.23H116.188C116.438 101.858 116.839 102.365 117.393 102.749C117.947 103.133 118.563 103.325 119.242 103.325ZM119.242 106.019C118.413 106.019 117.635 105.862 116.907 105.548C116.178 105.233 115.545 104.807 115.006 104.268C114.467 103.729 114.041 103.096 113.726 102.367C113.412 101.639 113.255 100.861 113.255 100.033C113.255 99.2044 113.412 98.4261 113.726 97.6978C114.041 96.9694 114.467 96.3358 115.006 95.797C115.545 95.2582 116.178 94.8316 116.907 94.5173C117.635 94.203 118.413 94.0459 119.242 94.0459C120.07 94.0459 120.848 94.203 121.576 94.5173C122.305 94.8316 122.938 95.2582 123.477 95.797C124.016 96.3358 124.442 96.9694 124.757 97.6978C125.071 98.4261 125.228 99.2044 125.228 100.033C125.228 100.861 125.071 101.639 124.757 102.367C124.442 103.096 124.016 103.729 123.477 104.268C122.938 104.807 122.305 105.233 121.576 105.548C120.848 105.862 120.07 106.019 119.242 106.019Z\"\n fill=\"white\"\n />\n </g>\n <mask id=\"mask5_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"161\" y=\"94\" width=\"14\" height=\"14\">\n <rect x=\"161.368\" y=\"94.3579\" width=\"12.7007\" height=\"12.7007\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask5_3855_3117)\">\n <path\n d=\"M167.719 105.471L166.951 104.783C166.061 103.98 165.324 103.288 164.742 102.706C164.16 102.124 163.697 101.601 163.353 101.138C163.009 100.675 162.769 100.25 162.632 99.8615C162.495 99.4734 162.427 99.0766 162.427 98.6708C162.427 97.8418 162.705 97.1494 163.26 96.5937C163.816 96.0381 164.508 95.7603 165.337 95.7603C165.796 95.7603 166.233 95.8573 166.647 96.0513C167.062 96.2454 167.419 96.5188 167.719 96.8716C168.019 96.5188 168.376 96.2454 168.79 96.0513C169.205 95.8573 169.641 95.7603 170.1 95.7603C170.929 95.7603 171.622 96.0381 172.177 96.5937C172.733 97.1494 173.011 97.8418 173.011 98.6708C173.011 99.0766 172.942 99.4734 172.806 99.8615C172.669 100.25 172.429 100.675 172.085 101.138C171.741 101.601 171.278 102.124 170.695 102.706C170.113 103.288 169.377 103.98 168.486 104.783L167.719 105.471Z\"\n fill=\"white\"\n />\n </g>\n <rect x=\"89\" y=\"17\" width=\"74\" height=\"43\" fill=\"#E3E8FF\" />\n <rect x=\"89\" y=\"66\" width=\"64\" height=\"3\" fill=\"#E3E8FF\" />\n <rect x=\"89\" y=\"77\" width=\"55\" height=\"3\" fill=\"#E3E8FF\" />\n <ellipse cx=\"167.5\" cy=\"100\" rx=\"9.5\" ry=\"10\" fill=\"#C7D1FF\" />\n <circle cx=\"119\" cy=\"100\" r=\"10\" fill=\"#C7D1FF\" />\n <mask id=\"mask6_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"112\" y=\"92\" width=\"15\" height=\"16\">\n <rect x=\"112.058\" y=\"92.8486\" width=\"14.368\" height=\"14.368\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask6_3855_3117)\">\n <path\n d=\"M121.337 99.4339C121.586 99.4339 121.798 99.3466 121.973 99.172C122.148 98.9974 122.235 98.7853 122.235 98.5359C122.235 98.2864 122.148 98.0744 121.973 97.8998C121.798 97.7252 121.586 97.6379 121.337 97.6379C121.087 97.6379 120.875 97.7252 120.701 97.8998C120.526 98.0744 120.439 98.2864 120.439 98.5359C120.439 98.7853 120.526 98.9974 120.701 99.172C120.875 99.3466 121.087 99.4339 121.337 99.4339ZM117.146 99.4339C117.396 99.4339 117.608 99.3466 117.782 99.172C117.957 98.9974 118.044 98.7853 118.044 98.5359C118.044 98.2864 117.957 98.0744 117.782 97.8998C117.608 97.7252 117.396 97.6379 117.146 97.6379C116.897 97.6379 116.685 97.7252 116.51 97.8998C116.336 98.0744 116.248 98.2864 116.248 98.5359C116.248 98.7853 116.336 98.9974 116.51 99.172C116.685 99.3466 116.897 99.4339 117.146 99.4339ZM119.242 103.325C119.92 103.325 120.536 103.133 121.09 102.749C121.644 102.365 122.045 101.858 122.295 101.23H116.188C116.438 101.858 116.839 102.365 117.393 102.749C117.947 103.133 118.563 103.325 119.242 103.325ZM119.242 106.019C118.413 106.019 117.635 105.862 116.907 105.548C116.178 105.233 115.545 104.807 115.006 104.268C114.467 103.729 114.041 103.096 113.726 102.367C113.412 101.639 113.255 100.861 113.255 100.033C113.255 99.2044 113.412 98.4261 113.726 97.6978C114.041 96.9694 114.467 96.3358 115.006 95.797C115.545 95.2582 116.178 94.8316 116.907 94.5173C117.635 94.203 118.413 94.0459 119.242 94.0459C120.07 94.0459 120.848 94.203 121.576 94.5173C122.305 94.8316 122.938 95.2582 123.477 95.797C124.016 96.3358 124.442 96.9694 124.757 97.6978C125.071 98.4261 125.228 99.2044 125.228 100.033C125.228 100.861 125.071 101.639 124.757 102.367C124.442 103.096 124.016 103.729 123.477 104.268C122.938 104.807 122.305 105.233 121.576 105.548C120.848 105.862 120.07 106.019 119.242 106.019Z\"\n fill=\"white\"\n />\n </g>\n <mask id=\"mask7_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"161\" y=\"94\" width=\"14\" height=\"14\">\n <rect x=\"161.368\" y=\"94.3579\" width=\"12.7007\" height=\"12.7007\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask7_3855_3117)\">\n <path\n d=\"M167.719 105.471L166.951 104.783C166.061 103.98 165.324 103.288 164.742 102.706C164.16 102.124 163.697 101.601 163.353 101.138C163.009 100.675 162.769 100.25 162.632 99.8615C162.495 99.4734 162.427 99.0766 162.427 98.6708C162.427 97.8418 162.705 97.1494 163.26 96.5937C163.816 96.0381 164.508 95.7603 165.337 95.7603C165.796 95.7603 166.233 95.8573 166.647 96.0513C167.062 96.2454 167.419 96.5188 167.719 96.8716C168.019 96.5188 168.376 96.2454 168.79 96.0513C169.205 95.8573 169.641 95.7603 170.1 95.7603C170.929 95.7603 171.622 96.0381 172.177 96.5937C172.733 97.1494 173.011 97.8418 173.011 98.6708C173.011 99.0766 172.942 99.4734 172.806 99.8615C172.669 100.25 172.429 100.675 172.085 101.138C171.741 101.601 171.278 102.124 170.695 102.706C170.113 103.288 169.377 103.98 168.486 104.783L167.719 105.471Z\"\n fill=\"white\"\n />\n </g>\n <mask id=\"mask8_3855_3117\" maskUnits=\"userSpaceOnUse\" x=\"138\" y=\"94\" width=\"12\" height=\"12\">\n <rect x=\"138\" y=\"94\" width=\"12\" height=\"12\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask8_3855_3117)\">\n <path\n d=\"M147 104.5H142V98L145.5 94.5L146.125 95.125C146.183 95.1833 146.231 95.2625 146.269 95.3625C146.306 95.4625 146.325 95.5583 146.325 95.65V95.825L145.775 98H148.5C148.767 98 149 98.1 149.2 98.3C149.4 98.5 149.5 98.7333 149.5 99V100C149.5 100.058 149.494 100.121 149.481 100.188C149.469 100.254 149.45 100.317 149.425 100.375L147.925 103.9C147.85 104.067 147.725 104.208 147.55 104.325C147.375 104.442 147.192 104.5 147 104.5ZM141 98V104.5H139V98H141Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_3855_3117\"\n x=\"0.5\"\n y=\"18.5\"\n width=\"104\"\n height=\"103\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feMorphology\n radius=\"0.5\"\n operator=\"dilate\"\n in=\"SourceAlpha\"\n result=\"effect1_dropShadow_3855_3117\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2.5\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.508333 0 0 0 0 0.588229 0 0 0 0 1 0 0 0 1 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3855_3117\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_3855_3117\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter1_d_3855_3117\"\n x=\"75.5\"\n y=\"0.5\"\n width=\"104\"\n height=\"103\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feMorphology\n radius=\"0.5\"\n operator=\"dilate\"\n in=\"SourceAlpha\"\n result=\"effect1_dropShadow_3855_3117\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2.5\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.508333 0 0 0 0 0.588229 0 0 0 0 1 0 0 0 1 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3855_3117\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_3855_3117\"\n result=\"shape\"\n />\n </filter>\n </defs>\n </svg>\n );\n};\n\nexport const AdvertisementSVG = () => {\n return (\n <svg\n width=\"90\"\n height=\"132\"\n viewBox=\"0 0 90 132\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g filter=\"url(#filter0_d_3855_3146)\">\n <rect x=\"6\" y=\"6\" width=\"78\" height=\"120\" rx=\"6\" fill=\"white\" />\n </g>\n <rect x=\"14\" y=\"18\" width=\"62\" height=\"21\" fill=\"#7D7DEF\" />\n <rect x=\"61\" y=\"111\" width=\"15\" height=\"6\" fill=\"#7D7DEF\" />\n <rect x=\"14\" y=\"47\" width=\"62\" height=\"2\" fill=\"#A4A4FF\" />\n <rect x=\"14\" y=\"63\" width=\"62\" height=\"2\" fill=\"#A4A4FF\" />\n <rect x=\"14\" y=\"79\" width=\"62\" height=\"2\" fill=\"#A4A4FF\" />\n <rect x=\"14\" y=\"55\" width=\"62\" height=\"2\" fill=\"#A4A4FF\" />\n <rect x=\"14\" y=\"71\" width=\"62\" height=\"2\" fill=\"#A4A4FF\" />\n <rect x=\"14\" y=\"87\" width=\"62\" height=\"2\" fill=\"#A4A4FF\" />\n <rect x=\"14\" y=\"95\" width=\"53\" height=\"2\" fill=\"#A4A4FF\" />\n <defs>\n <filter\n id=\"filter0_d_3855_3146\"\n x=\"0.5\"\n y=\"0.5\"\n width=\"89\"\n height=\"131\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feMorphology\n radius=\"0.5\"\n operator=\"dilate\"\n in=\"SourceAlpha\"\n result=\"effect1_dropShadow_3855_3146\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2.5\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.337255 0 0 0 0 0.337255 0 0 0 0 0.858824 0 0 0 1 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_3855_3146\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_3855_3146\"\n result=\"shape\"\n />\n </filter>\n </defs>\n </svg>\n );\n};\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { OutlinedInput } from '@mui/material';\nimport { classes } from '../styles';\n\nconst JobDescriptionInput = ({\n generationJobDescription,\n placeholder,\n onChange\n}: {\n generationJobDescription: string;\n placeholder: string;\n onChange: Dispatch<SetStateAction<string>>;\n}) => {\n return (\n <OutlinedInput\n id=\"job-description\"\n sx={{ ...classes.fieldInput, height: '144px' }}\n placeholder={placeholder}\n value={generationJobDescription}\n multiline\n rows={5}\n onChange={(e) => onChange(e.target.value)}\n />\n );\n};\n\nexport default JobDescriptionInput;\n","import React, { useReducer, useCallback, useRef } from 'react';\nimport { Box, Button, Modal } from '@mui/material';\nimport { FelixButtonSVG } from '../SharedComponents/Graphics/FelixSVG';\nimport LoadingResponse from '../SharedComponents/Steps/LoadingResponse';\nimport { WelcomePage } from './Steps/WelcomePage';\nimport JobBoardInput from './Steps/JobBoardInput';\nimport ResponseStep from './Steps/ResponseStep';\nimport SocialInputStep from './Steps/SocialInputStep';\nimport CloseIcon from '@mui/icons-material/Close';\nimport GenericDialog from '../../NewUI/Components/Modals/GenericDialog';\nimport { displayFelixMessage, disableNextButton } from './config';\nimport DynamicFooter from '../SharedComponents/Footers/DynamicFooter';\nimport he from 'he';\nimport { classes } from './styles';\nimport ResponseFooter from './Footers/ResponseFooter';\nimport WelcomeFooter from './Footers/WelcomeFooter';\nimport ErrorScreen from '../SharedComponents/Steps/ErrorScreen';\nimport { initialSmartShareState, smartShareReducer } from './reducer';\nimport { fetchSummary, fetchKeyPoints, fetchSocial } from './API';\nimport { convertToLocalEnglish } from '../../NewUI/Components/Utilities/convertToLocalEnglish';\nimport { LIST_ITEMS_REGEX } from '../SharedComponents/sharedConfig';\n\nfunction SmartShare({\n apiKey,\n jobTitle,\n jobDescription,\n jobUrl\n}: {\n apiKey: string;\n jobTitle: string;\n jobDescription: string;\n jobUrl: string;\n}) {\n const [smartShareState, dispatch] = useReducer(smartShareReducer, initialSmartShareState);\n const generatedResponseRef = useRef<HTMLDivElement>(null);\n const requestController = useRef<AbortController | null>(null);\n\n const handleRichCopy = () => {\n if (!generatedResponseRef.current) return;\n dispatch({ type: 'SET_COPIED', payload: true });\n setTimeout(() => dispatch({ type: 'SET_COPIED', payload: false }), 3000);\n window?.getSelection()?.removeAllRanges();\n const range = document.createRange();\n range.selectNode(generatedResponseRef.current);\n window?.getSelection()?.addRange(range);\n document.execCommand('copy');\n window?.getSelection()?.removeAllRanges();\n };\n\n const generatePost = useCallback(async () => {\n requestController.current = new AbortController();\n dispatch({ type: 'SET_CURRENT_STEP', payload: 2 });\n try {\n const response = await fetchSocial(\n smartShareState.useCustomDescription === 'description'\n ? jobDescription\n : smartShareState.generationJobDescription,\n smartShareState.generationJobTitle,\n smartShareState.useCustomDescription,\n smartShareState.includeHashtags,\n smartShareState.generationTone,\n smartShareState.summaryLength,\n requestController.current.signal\n );\n if (response && response.result && response.result.length > 30) {\n let responseText = smartShareState.includeHashtags\n ? response.result\n : response.result.replace(/#[a-zA-Z0-9]+/g, '');\n responseText = he.decode(responseText);\n const localEnglishResponse = convertToLocalEnglish(responseText);\n dispatch({ type: 'SET_GENERATED_RESPONSE', payload: localEnglishResponse });\n } else {\n throw new Error('No response from AI API');\n }\n } catch (error) {\n if (error.name === 'AbortError') return;\n dispatch({ type: 'SET_GENERATION_ERROR', payload: true });\n console.error(error);\n } finally {\n if (!requestController.current.signal.aborted) {\n dispatch({ type: 'SET_CURRENT_STEP', payload: 3 });\n }\n }\n }, [\n jobDescription,\n smartShareState.generationJobDescription,\n smartShareState.generationJobTitle,\n smartShareState.generationTone,\n smartShareState.includeHashtags,\n smartShareState.summaryLength,\n smartShareState.useCustomDescription\n ]);\n\n const generateSummary = useCallback(async () => {\n requestController.current = new AbortController();\n dispatch({ type: 'SET_CURRENT_STEP', payload: 2 });\n const sendableJobDescription =\n smartShareState.useCustomDescription === 'description'\n ? jobDescription\n : smartShareState.generationJobDescription;\n const summaryParams: Parameters<typeof fetchSummary> = [\n sendableJobDescription,\n smartShareState.adType,\n smartShareState.generationJobTitle,\n smartShareState.useCustomDescription,\n smartShareState.generationTone,\n requestController.current.signal\n ];\n try {\n let summaryResponse: { result: string } | undefined;\n let keyPointsResponse: { result: string } | undefined;\n\n if (smartShareState.includeKeyPoints) {\n [summaryResponse, keyPointsResponse] = await Promise.all([\n fetchSummary(...summaryParams),\n fetchKeyPoints(sendableJobDescription, smartShareState.generationJobTitle)\n ]);\n } else {\n summaryResponse = await fetchSummary(...summaryParams);\n }\n\n if (summaryResponse && summaryResponse.result && summaryResponse.result.length > 30) {\n const localEnglishResponse = convertToLocalEnglish(summaryResponse.result);\n dispatch({ type: 'SET_GENERATED_RESPONSE', payload: localEnglishResponse });\n }\n if (keyPointsResponse && keyPointsResponse.result && keyPointsResponse.result.length > 30) {\n const ksp = convertToLocalEnglish(keyPointsResponse.result)\n .replace(LIST_ITEMS_REGEX, '')\n .split('**')\n .slice(0, -1);\n dispatch({ type: 'SET_GENERATED_KEY_POINTS', payload: ksp });\n }\n } catch (error) {\n if (error.name === 'AbortError') {\n console.log('Description generation aborted');\n }\n console.error(error);\n dispatch({ type: 'SET_GENERATION_ERROR', payload: true });\n } finally {\n if (!requestController.current.signal.aborted) {\n dispatch({ type: 'SET_CURRENT_STEP', payload: 3 });\n }\n }\n }, [\n jobDescription,\n smartShareState.adType,\n smartShareState.generationJobDescription,\n smartShareState.generationJobTitle,\n smartShareState.generationTone,\n smartShareState.includeKeyPoints,\n smartShareState.useCustomDescription\n ]);\n\n const stepSelect = () => {\n if (smartShareState.generationError) {\n return (\n <ErrorScreen\n regenerateCallback={\n smartShareState.generationType === 'social' ? generatePost : generateSummary\n }\n setGenerationError={(value) => dispatch({ type: 'SET_GENERATION_ERROR', payload: value })}\n backToHome={() => dispatch({ type: 'SET_CURRENT_STEP', payload: 0 })}\n />\n );\n }\n switch (smartShareState.currentStep) {\n case 0:\n return (\n <>\n <WelcomePage dispatch={dispatch} />\n <WelcomeFooter />\n </>\n );\n case 1:\n return (\n <>\n <SocialInputStep\n jobDescription={jobDescription}\n dispatch={dispatch}\n smartShareState={smartShareState}\n />\n <DynamicFooter\n handleSecondaryButtonClick={() => dispatch({ type: 'SET_CURRENT_STEP', payload: 0 })}\n handlePrimaryButtonClick={generatePost}\n secondaryButtonText=\"Back\"\n primaryButtonText=\"Generate\"\n primaryButtonID={`generate-social-post-${smartShareState.useCustomDescription}`}\n disablePrimaryButton={disableNextButton(\n smartShareState.useCustomDescription,\n jobDescription,\n smartShareState.generationJobDescription,\n smartShareState.generationJobTitle,\n 12000\n )}\n felixMessage={displayFelixMessage(\n smartShareState.useCustomDescription,\n smartShareState.currentStep\n )}\n felixMessageMaxWidth=\"351px\"\n footerWidth=\"90%\"\n />\n </>\n );\n case 2:\n return <LoadingResponse generationType={smartShareState.generationType} />;\n case 3:\n return (\n <>\n <ResponseStep\n apiKey={apiKey}\n generatedResponse={smartShareState.generatedResponse}\n generatedKeyPoints={smartShareState.generatedKeyPoints}\n generatedResponseRef={generatedResponseRef}\n generationType={smartShareState.generationType}\n jobUrl={jobUrl}\n generatePost={generatePost}\n generateSummary={generateSummary}\n />\n <ResponseFooter\n dispatch={dispatch}\n smartShareState={smartShareState}\n handleRichCopy={handleRichCopy}\n handleCopy={handleCopy}\n jobUrl={jobUrl}\n />\n </>\n );\n case 4:\n return (\n <>\n <JobBoardInput\n jobDescription={jobDescription}\n dispatch={dispatch}\n smartShareState={smartShareState}\n />\n <DynamicFooter\n handleSecondaryButtonClick={() => dispatch({ type: 'SET_CURRENT_STEP', payload: 0 })}\n handlePrimaryButtonClick={generateSummary}\n secondaryButtonText=\"Back\"\n primaryButtonText=\"Generate\"\n primaryButtonID={`generate-job-ad-${smartShareState.useCustomDescription}`}\n disablePrimaryButton={disableNextButton(\n smartShareState.useCustomDescription,\n jobDescription,\n smartShareState.generationJobDescription,\n smartShareState.generationJobTitle,\n 10000\n )}\n felixMessage={displayFelixMessage(\n smartShareState.useCustomDescription,\n smartShareState.currentStep\n )}\n felixMessageMaxWidth=\"351px\"\n footerWidth=\"90%\"\n />\n </>\n );\n case 9:\n return <Box>Something went wrong, please refresh and try again</Box>;\n default:\n return <Box>Something went wrong, please refresh and try again</Box>;\n }\n };\n\n const handleCopy = () => {\n dispatch({ type: 'SET_COPIED', payload: true });\n setTimeout(() => dispatch({ type: 'SET_COPIED', payload: false }), 3000);\n };\n\n const handleClose = () => {\n dispatch({ type: 'CLOSE_MODAL' });\n\n // abort any pending requests\n requestController?.current?.abort();\n };\n\n const handleCloseAction = () => {\n if (smartShareState.currentStep === 0) {\n handleClose();\n } else {\n dispatch({ type: 'SET_CONFIRM_CANCEL_IS_OPEN', payload: true });\n }\n };\n\n return (\n <Box sx={{ marginLeft: '-16px' }}>\n <Box\n sx={{\n ...classes.buttonContainer,\n ...(smartShareState.buttonHovered ? classes.hoverAnimation : classes.unhoverAnimation)\n }}\n onMouseEnter={() => dispatch({ type: 'SET_BUTTON_HOVERED', payload: true })}\n onMouseLeave={() => dispatch({ type: 'SET_BUTTON_HOVERED', payload: false })}\n onClick={() => dispatch({ type: 'OPEN_MODAL', payload: jobTitle })}\n id=\"smart-share-button\"\n >\n <Box sx={classes.avatarContainer}>\n <FelixButtonSVG />\n </Box>\n <Button sx={classes.button}>{!smartShareState.open ? 'Smart Share' : 'Close'}</Button>\n {!smartShareState.open && <Box sx={classes.betaPill}>Beta</Box>}\n </Box>\n <Modal\n open={smartShareState.open}\n onClose={handleCloseAction}\n aria-labelledby=\"smart-share-modal\"\n aria-describedby=\"use-ai-to-generate-social-media-content-for-your-job-posting\"\n >\n <Box sx={classes.modal}>\n <CloseIcon onClick={handleCloseAction} sx={classes.closeIcon} />\n {stepSelect()}\n </Box>\n </Modal>\n <GenericDialog\n isDialogOpen={smartShareState.confirmCancelIsOpen}\n setDialogOpen={(value: boolean) =>\n dispatch({ type: 'SET_CONFIRM_CANCEL_IS_OPEN', payload: value })\n }\n title=\"Close Smart Share window?\"\n description=\"All unsaved changes will be lost.\"\n buttonCallback={handleClose}\n callbackLoading={false}\n buttonText=\"Close Smart Share\"\n url=\"\"\n />\n </Box>\n );\n}\n\nexport default SmartShare;\n","import React from 'react';\nimport { Box, Collapse } from '@mui/material';\nimport JobDescriptionInput from '../Inputs/JobDescription';\nimport dompurify from 'dompurify';\nimport { classes } from '../styles';\nimport DisplayHTMLCollapsible from '../../SharedComponents/DisplayHTMLCollapsible';\n\nconst DisplayDescription = ({\n useCustomDescription,\n jobDescription,\n generationJobDescription,\n setGenerationJobDescription,\n collapsed,\n setCollapsed,\n maxCharacters\n}: {\n useCustomDescription: string;\n jobDescription: string;\n generationJobDescription: string;\n setGenerationJobDescription: (value: string) => void;\n collapsed: boolean;\n setCollapsed: (value: boolean) => void;\n maxCharacters: number;\n}) => {\n const showDescription = () => {\n if (jobDescription.length > maxCharacters) {\n return (\n <Box>\n Your current job description is too long. Please shorten it to {maxCharacters} characters\n or less. Alternatively, you can input a custom description or job summary that adheres to\n the character limit.\n </Box>\n );\n } else if (jobDescription.length > 100) {\n return (\n <DisplayHTMLCollapsible\n content={jobDescription}\n collapsed={collapsed}\n setCollapsed={setCollapsed}\n />\n );\n } else {\n return (\n <Box>\n This job doesn't have a description yet. Please add one to continue or input a custom\n description.\n </Box>\n );\n }\n };\n\n switch (useCustomDescription) {\n case 'description':\n return (\n <Box sx={classes.genericContainer}>\n <Box sx={classes.fieldSubHeader}>Job description</Box>\n {showDescription()}\n </Box>\n );\n case 'custom':\n return (\n <Box sx={{ ...classes.genericContainer, position: 'relative' }}>\n <Box sx={classes.fieldSubHeader}>Job description</Box>\n <JobDescriptionInput\n generationJobDescription={generationJobDescription}\n placeholder={`Paste your job description here (${maxCharacters} character limit)`}\n onChange={setGenerationJobDescription}\n />\n <Box\n sx={{\n ...classes.characterCounter,\n ...(generationJobDescription.length > maxCharacters && { color: '#E37D7A' })\n }}\n >\n {generationJobDescription.length}/{maxCharacters}\n </Box>\n </Box>\n );\n case 'summary':\n return (\n <Box sx={{ ...classes.genericContainer, position: 'relative' }}>\n <Box sx={classes.fieldSubHeader}>Job summary</Box>\n <JobDescriptionInput\n generationJobDescription={generationJobDescription}\n placeholder={`Summarise the job in a few paragraphs or dot points (${maxCharacters} character limit)`}\n onChange={setGenerationJobDescription}\n />\n <Box\n sx={{\n ...classes.characterCounter,\n ...(generationJobDescription.length > maxCharacters && { color: '#E37D7A' })\n }}\n >\n {generationJobDescription.length}/{maxCharacters}\n </Box>\n </Box>\n );\n default:\n return <>Something went wrong, please refresh the page and try again</>;\n }\n};\n\nexport default DisplayDescription;\n","import React, { useState, Dispatch } from 'react';\nimport { Box, FormControl, Checkbox } from '@mui/material';\nimport DisplayDescription from './DisplayDescription';\nimport ToggleButtons from '../../SharedComponents/Buttons/ToggleButtons';\nimport PositionTitleInput from '../../SharedComponents/Inputs/PositionTitle';\nimport StyledDropdown from '../../SharedComponents/Inputs/StyledDropdown';\nimport { aiToneTypes } from '../../SharedComponents/sharedConfig';\nimport { adTypes, toggleButtonOptions } from '../config';\nimport { classes } from '../styles';\nimport { SmartShareAction, SmartShareState } from '../reducer';\n\nconst JobBoardInput = ({\n jobDescription,\n dispatch,\n smartShareState\n}: {\n jobDescription: string;\n dispatch: Dispatch<SmartShareAction>;\n smartShareState: SmartShareState;\n}) => {\n const [collapsed, setCollapsed] = useState(true);\n\n return (\n <Box sx={{ ...classes.inputStepContainer, rowGap: '42px' }}>\n <Box sx={classes.genericContainer}>\n <Box sx={classes.fieldHeader}>Position title</Box>\n <PositionTitleInput\n positionTitle={smartShareState.generationJobTitle}\n onChange={(value: string) =>\n dispatch({ type: 'SET_GENERATION_JOB_TITLE', payload: value })\n }\n />\n </Box>\n <Box sx={classes.genericContainer}>\n <ToggleButtons\n value={smartShareState.useCustomDescription}\n setValue={(value: string) =>\n dispatch({ type: 'SET_USE_CUSTOM_DESCRIPTION', payload: value })\n }\n options={toggleButtonOptions}\n />\n </Box>\n <DisplayDescription\n useCustomDescription={smartShareState.useCustomDescription}\n jobDescription={jobDescription}\n generationJobDescription={smartShareState.generationJobDescription}\n setGenerationJobDescription={(value: string) =>\n dispatch({ type: 'SET_GENERATION_JOB_DESCRIPTION', payload: value })\n }\n collapsed={collapsed}\n setCollapsed={setCollapsed}\n maxCharacters={10000}\n />\n <Box sx={classes.sideBySideContainer}>\n <FormControl fullWidth>\n <Box sx={classes.fieldSubHeader}>Ad type</Box>\n <StyledDropdown\n id=\"ad-type\"\n value={smartShareState.adType}\n onChange={(value: string) => dispatch({ type: 'SET_AD_TYPE', payload: value })}\n options={adTypes}\n />\n </FormControl>\n <FormControl fullWidth>\n <Box sx={classes.fieldSubHeader}>Generated tone</Box>\n <StyledDropdown\n id=\"generated-tone\"\n value={smartShareState.generationTone}\n onChange={(value: string) => dispatch({ type: 'SET_GENERATION_TONE', payload: value })}\n options={aiToneTypes}\n />\n </FormControl>\n <FormControl fullWidth>\n <Box sx={classes.checkboxContainer}>\n <Checkbox\n sx={classes.checkbox}\n checked={smartShareState.includeKeyPoints}\n onChange={(e) =>\n dispatch({ type: 'SET_INCLUDE_KEY_POINTS', payload: e.target.checked })\n }\n />\n <Box sx={classes.checkboxLabel}>Generate key selling points</Box>\n </Box>\n </FormControl>\n </Box>\n </Box>\n );\n};\n\nexport default JobBoardInput;\n","import React from 'react';\nimport { Box, Button, IconButton } from '@mui/material';\nimport CachedIcon from '@mui/icons-material/Cached';\nimport { classes } from '../styles';\nimport { headerText } from '../config';\nimport dompurify from 'dompurify';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport SocialMediaPreview from './SocialMediaPreview';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\n\nfunction ResponseStep({\n apiKey,\n generatedResponse,\n generatedKeyPoints,\n generatedResponseRef,\n generationType,\n jobUrl,\n generatePost,\n generateSummary\n}: {\n apiKey: string;\n generatedResponse: string;\n generatedKeyPoints: string[];\n generatedResponseRef: React.RefObject<HTMLDivElement>;\n generationType: string;\n jobUrl: string;\n generatePost: () => void;\n generateSummary: () => void;\n}) {\n return (\n <>\n <Box sx={classes.responseHeader}>\n <Box sx={classes.responseHeaderText}>{`Your draft ${\n headerText[generationType as keyof typeof headerText]\n }`}</Box>\n <Button\n id={`regenerate-${generationType}`}\n sx={classes.pill}\n endIcon={<CachedIcon />}\n onClick={generationType === 'advertisement' ? generateSummary : generatePost}\n >\n Regenerate\n </Button>\n </Box>\n {generationType === 'advertisement' ? (\n <>\n <Box\n sx={classes.generatedResponseContainer}\n ref={generatedResponseRef}\n dangerouslySetInnerHTML={{\n __html: dompurify.sanitize(generatedResponse)\n }}\n />\n {generatedKeyPoints?.length > 0 && (\n <Box sx={{ width: '90%' }}>\n <Box sx={classes.fieldSubHeader}>Key selling points</Box>\n <Box>\n {generatedKeyPoints.map((point, index) => (\n <Box key={index} sx={classes.keyPoint}>\n {point}\n <CopyToClipboard text={point}>\n <IconButton sx={classes.copyIcon}>\n <ContentCopyIcon />\n </IconButton>\n </CopyToClipboard>\n </Box>\n ))}\n </Box>\n </Box>\n )}\n </>\n ) : (\n <Box sx={classes.socialResponseContainer}>\n <Box sx={classes.socialCard}>\n <Box sx={classes.socialCardHeader}>\n <span>{generatedResponse}</span>\n <a href={jobUrl}>{jobUrl}</a>\n </Box>\n <SocialMediaPreview apiKey={apiKey} jobUrl={jobUrl} />\n </Box>\n </Box>\n )}\n </>\n );\n}\n\nexport default ResponseStep;\n","import React, { useState, Dispatch } from 'react';\nimport { Box, FormControl, Checkbox } from '@mui/material';\nimport StyledDropdown from '../../SharedComponents/Inputs/StyledDropdown';\nimport DisplayDescription from './DisplayDescription';\nimport ToggleButtons from '../../SharedComponents/Buttons/ToggleButtons';\nimport PositionTitleInput from '../../SharedComponents/Inputs/PositionTitle';\nimport { postTones, responseLength, toggleButtonOptions } from '../config';\nimport { classes } from '../styles';\nimport { SmartShareAction, SmartShareState } from '../reducer';\n\nfunction SocialInputStep({\n jobDescription,\n dispatch,\n smartShareState\n}: {\n jobDescription: string;\n dispatch: Dispatch<SmartShareAction>;\n smartShareState: SmartShareState;\n}) {\n const [collapsed, setCollapsed] = useState(true);\n\n return (\n <Box sx={{ ...classes.inputStepContainer, rowGap: '42px' }}>\n <Box sx={classes.genericContainer}>\n <Box sx={classes.fieldHeader}>Position title</Box>\n <PositionTitleInput\n positionTitle={smartShareState.generationJobTitle}\n onChange={(value: string) =>\n dispatch({ type: 'SET_GENERATION_JOB_TITLE', payload: value })\n }\n />\n </Box>\n <Box sx={classes.genericContainer}>\n <ToggleButtons\n value={smartShareState.useCustomDescription}\n setValue={(value: string) =>\n dispatch({ type: 'SET_USE_CUSTOM_DESCRIPTION', payload: value })\n }\n options={toggleButtonOptions}\n />\n </Box>\n <DisplayDescription\n useCustomDescription={smartShareState.useCustomDescription}\n jobDescription={jobDescription}\n generationJobDescription={smartShareState.generationJobDescription}\n setGenerationJobDescription={(value: string) =>\n dispatch({ type: 'SET_GENERATION_JOB_DESCRIPTION', payload: value })\n }\n collapsed={collapsed}\n setCollapsed={setCollapsed}\n maxCharacters={12000}\n />\n <Box sx={classes.sideBySideContainer}>\n <FormControl fullWidth>\n <Box sx={classes.fieldSubHeader}>Tone selection</Box>\n <StyledDropdown\n id=\"generated-tone\"\n value={smartShareState.generationTone}\n onChange={(value: string) => dispatch({ type: 'SET_GENERATION_TONE', payload: value })}\n options={postTones}\n />\n </FormControl>\n <FormControl fullWidth>\n <Box sx={classes.fieldSubHeader}>Post length</Box>\n <StyledDropdown\n id=\"post-length\"\n value={smartShareState.summaryLength}\n onChange={(value: string) => dispatch({ type: 'SET_SUMMARY_LENGTH', payload: value })}\n options={responseLength}\n />\n </FormControl>\n <FormControl fullWidth>\n <Box sx={classes.checkboxContainer}>\n <Checkbox\n sx={classes.checkbox}\n checked={smartShareState.includeHashtags}\n onChange={(e) =>\n dispatch({ type: 'SET_INCLUDE_HASHTAGS', payload: e.target.checked })\n }\n />\n <Box sx={classes.checkboxLabel}>Include hashtags</Box>\n </Box>\n </FormControl>\n </Box>\n </Box>\n );\n}\n\nexport default SocialInputStep;\n","import React, { useState, useEffect } from 'react';\nimport { Box, Skeleton } from '@mui/material';\nimport ImageNotSupportedIcon from '@mui/icons-material/ImageNotSupported';\nimport { classes } from '../styles';\n\nexport interface IMetaData {\n title?: string;\n description?: string;\n image?: string;\n}\n\nconst SocialMediaPreview = ({ apiKey, jobUrl }: { apiKey: string; jobUrl: string }) => {\n const [metaData, setMetaData] = useState<IMetaData | null>(null);\n\n const matches = jobUrl.match(/^https?\\:\\/\\/([^\\/?#]+)(?:[\\/?#]|$)/i);\n const domain = matches && matches[1];\n\n useEffect(() => {\n const fetchMetaData = async () => {\n const { metadata } = await fetch(`/api/v4/meta_scraper?url=${jobUrl}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((res) => res.json());\n setMetaData(metadata);\n };\n fetchMetaData();\n }, [apiKey, jobUrl]);\n\n if (metaData) {\n return (\n <Box sx={classes.socialCardPreview}>\n {metaData.image ? (\n <Box sx={{ ...classes.previewImage, backgroundImage: `url(${metaData.image})` }} />\n ) : (\n <Box sx={classes.previewImage}>\n <ImageNotSupportedIcon style={classes.noImageIcon} />\n </Box>\n )}\n <Box sx={classes.socialCardPreviewFooter}>\n <Box sx={classes.previewTitle}>\n {metaData?.title && metaData?.title.length > 58\n ? metaData?.title.slice(0, 58) + '...'\n : metaData?.title}\n </Box>\n <Box sx={classes.previewDescription}>\n {metaData?.description && metaData?.description.length > 130\n ? metaData?.description.slice(0, 130) + '...'\n : metaData?.description}\n </Box>\n <Box sx={classes.previewLink}>{domain}</Box>\n </Box>\n </Box>\n );\n } else {\n return <Skeleton sx={classes.skeleton} />;\n }\n};\n\nexport default SocialMediaPreview;\n","import React, { Dispatch } from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from '../styles';\nimport { SocialSVG, AdvertisementSVG } from '../Graphics/buttonSVGs';\nimport { SmartShareAction } from '../reducer';\n\nexport const WelcomePage = ({ dispatch }: { dispatch: Dispatch<SmartShareAction> }) => {\n const handleSelectSocial = () => {\n dispatch({ type: 'SELECT_SOCIAL' });\n };\n\n const handleSelectJobBoard = () => {\n dispatch({ type: 'SELECT_JOB_AD' });\n };\n\n return (\n <Box sx={classes.welcomePageSelections}>\n <Box\n sx={classes.advertisementSelection}\n onClick={handleSelectJobBoard}\n id=\"write-job-board-advertisement\"\n >\n <AdvertisementSVG />\n <Box sx={classes.welcomePageSelectionHeader}>Write me a job board advertisement</Box>\n <span>\n Write a job board advertisement to post on sites such as Seek, Indeed and LinkedIn.\n </span>\n </Box>\n <Box sx={classes.socialSelection} onClick={handleSelectSocial} id=\"write-social-media-post\">\n <SocialSVG />\n <Box sx={classes.welcomePageSelectionHeader}>Write me a social media post</Box>\n <span>Write a social media post to attract the right talent to your job</span>\n </Box>\n </Box>\n );\n};\n","import React from 'react';\n\n// SmartShare.tsx variables & functions\n\nexport const displayFelixMessage = (useCustomDescription: string, currentStep: number) => {\n const felixMessageContext =\n currentStep === 1 ? ' social media post ' : ' job board advertisment ';\n switch (useCustomDescription) {\n case 'description':\n return (\n <>\n I'll write you an engaging\n <span>{felixMessageContext}</span>\n using your job description!\n </>\n );\n case 'custom':\n return (\n <>\n Paste your position description or talent landing page here and I'll use it to write\n a <span>{felixMessageContext}</span>\n </>\n );\n case 'summary':\n return (\n <>\n Input the key points of the position and I'll use it to write a\n <span>{felixMessageContext}</span>\n </>\n );\n default:\n return <>Something went wrong. Please refresh the page and try again.</>;\n }\n};\n\nexport const disableNextButton = (\n useCustomDescription: string,\n jobDescription: string,\n generationJobDescription: string,\n generationJobTitle: string,\n maxCharacters: number\n) => {\n if (generationJobTitle.length === 0) {\n return true;\n } else if (useCustomDescription === 'custom' || useCustomDescription === 'summary') {\n return generationJobDescription.length === 0 || generationJobDescription.length > maxCharacters;\n } else if (useCustomDescription === 'description') {\n return jobDescription.length < 100 || jobDescription.length > maxCharacters;\n } else {\n return false;\n }\n};\n\n// Social media post\n\nexport const postTones = [\n 'excited',\n 'professional',\n 'casual',\n 'creative',\n 'persuasive',\n 'informative',\n 'funny'\n];\n\nexport const responseLength = ['short', 'medium', 'long'];\n\n// Job board advertisement\n\nexport const adTypes = ['dot points', 'paragraphs', 'free form'];\n\n// Response step variables\n\nexport const headerText = {\n social: 'social media post',\n advertisement: 'job board advertisement'\n};\n\nexport const toggleButtonOptions = [\n {\n value: 'description',\n label: 'Use existing description'\n },\n {\n value: 'custom',\n label: 'Use custom description'\n },\n {\n value: 'summary',\n label: 'Use job summary'\n }\n];\n","import React, { useState } from 'react';\nimport { Box, Modal, CircularProgress } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from './styles';\nimport DynamicFooter from '../SharedComponents/Footers/DynamicFooter';\nimport DisplayHTMLViewOnly from '../SharedComponents/DisplayHTMLViewOnly';\nimport { handleRichCopy } from '../../NewUI/Components/Utilities/handleRichCopy';\nimport { IApplicationInfo } from '../SharedComponents/types';\nimport { StyledSnackbarProps } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { handleAPIRequest } from '../../NewUI/Components/Utilities/handleAPIRequest';\n\nconst ExpandedSummaryModal = ({\n jobId,\n expanded,\n handleCloseModal,\n lastHoveredApplicant,\n summaryRef,\n copied,\n setCopied,\n loadingSummary,\n generateSummary,\n setSnackbarState\n}: {\n jobId: number;\n expanded: boolean;\n handleCloseModal: () => void;\n lastHoveredApplicant: IApplicationInfo;\n summaryRef: React.RefObject<HTMLDivElement>;\n copied: boolean;\n setCopied: React.Dispatch<React.SetStateAction<boolean>>;\n loadingSummary: boolean;\n generateSummary: () => void;\n setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n const [emails, setEmails] = useState<string[]>([]);\n const [emailInputOpen, setEmailInputOpen] = useState<boolean>(false);\n const [sendingEmails, setSendingEmails] = useState(false);\n\n const downloadPDF = () => {\n const url = `/api/v4/jobs/${jobId}/applications/${lastHoveredApplicant.id}/application_summary.pdf`;\n window.open(url, '_blank');\n };\n\n const handleSendEmailClick = () => {\n handleAPIRequest({\n url: `/api/v4/jobs/${jobId}/applications/${lastHoveredApplicant.id}/send_individual_summary`,\n method: 'POST',\n body: { emails },\n onSuccess: () => {\n setEmailInputOpen(false);\n setEmails([]);\n },\n setLoaderState: setSendingEmails,\n setSnackbarState\n });\n };\n\n return (\n <Modal\n open={expanded}\n onClose={handleCloseModal}\n aria-labelledby=\"application-summary-expanded\"\n >\n <Box sx={classes.modal}>\n <Box sx={{ ...classes.aiModalContent, rowGap: '36px' }}>\n <CloseIcon onClick={handleCloseModal} sx={classes.closeIcon} />\n <Box sx={classes.header}>{lastHoveredApplicant.name}</Box>\n <DisplayHTMLViewOnly\n content={lastHoveredApplicant.summary}\n viewerRef={summaryRef}\n onExportClick={downloadPDF}\n setEmails={setEmails}\n emails={emails}\n onSendEmailClick={handleSendEmailClick}\n emailInputOpen={emailInputOpen}\n setEmailInputOpen={setEmailInputOpen}\n sendingEmails={sendingEmails}\n />\n <DynamicFooter\n primaryButtonText={copied ? 'Copied!' : 'Copy'}\n secondaryButtonText={\n loadingSummary ? <CircularProgress size={20} color=\"inherit\" /> : 'Regenerate'\n }\n primaryButtonID=\"copy-summary-text\"\n secondaryButtonID=\"regenerate-summary\"\n primaryButtonMinWidth=\"110px\"\n secondaryButtonMinWidth=\"130px\"\n handlePrimaryButtonClick={() => handleRichCopy(summaryRef.current, setCopied)}\n handleSecondaryButtonClick={generateSummary}\n felixMessage={\n <>\n I’ve created your <span>candidate summary</span>! This summary compares your\n application against the job requirements.\n </>\n }\n felixMessageMaxWidth=\"400px\"\n alternateSecondaryButton={true}\n />\n </Box>\n </Box>\n </Modal>\n );\n};\n\nexport default ExpandedSummaryModal;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, Checkbox } from '@mui/material';\nimport { classes } from '../styles';\nimport { defaultInclusions } from '../config';\n\nconst Inclusions = ({\n inclusions,\n setInclusions\n}: {\n inclusions: typeof defaultInclusions;\n setInclusions: Dispatch<SetStateAction<typeof defaultInclusions>>;\n}) => {\n return (\n <Box sx={classes.inclusionsContainer}>\n {Object.keys(inclusions).map((inclusion) => (\n <Box sx={classes.checkboxGroup} key={inclusion}>\n <Checkbox\n sx={classes.inclusionsCheckbox}\n checked={inclusions[inclusion].value}\n onChange={(e, checked) =>\n setInclusions((prev) => ({\n ...prev,\n [inclusion]: { ...prev[inclusion], value: checked }\n }))\n }\n />\n <Box sx={classes.inclusionsLabel}>{inclusions[inclusion].label}</Box>\n </Box>\n ))}\n </Box>\n );\n};\n\nexport default Inclusions;\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport DynamicFooter from '../../SharedComponents/Footers/DynamicFooter';\nimport StyledDropdown from '../../SharedComponents/Inputs/StyledDropdown';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { defaultFormats, defaultInclusions } from '../config';\nimport { Box } from '@mui/material';\nimport { classes } from '../styles';\nimport { IJobApplication } from '../../../NewUI/Job/types';\nimport Inclusions from '../Inputs/Inclusions';\n\nconst InputStep = ({\n selectedFormat,\n setSelectedFormat,\n inclusions,\n setInclusions,\n selectedApplicants,\n handleDeselectApplicant,\n requestInsights\n}: {\n selectedFormat: string;\n setSelectedFormat: Dispatch<SetStateAction<string>>;\n inclusions: typeof defaultInclusions;\n setInclusions: Dispatch<SetStateAction<typeof defaultInclusions>>;\n selectedApplicants: IJobApplication[];\n handleDeselectApplicant: (applicantId: number) => void;\n requestInsights: () => void;\n}) => {\n const [applicantHovered, setApplicantHovered] = useState<number>(-1);\n\n const inclusionsArray = Object.keys(inclusions).filter(\n (key) => inclusions[key as keyof typeof inclusions].value\n );\n\n const areAllSuitabilityComments = inclusionsArray.every((i) => i === 'suitability_comment');\n\n return (\n <>\n <Box sx={classes.header}>AI candidate insights</Box>\n <Box sx={classes.aiRow}>\n <Box sx={classes.fieldSubHeader}>Format</Box>\n <StyledDropdown\n id=\"insights-format-dropdown\"\n value={selectedFormat}\n onChange={setSelectedFormat}\n options={defaultFormats}\n />\n </Box>\n <Box sx={classes.aiRow}>\n <Box sx={classes.fieldSubHeader}>Choose information to use for summary</Box>\n <Inclusions inclusions={inclusions} setInclusions={setInclusions} />\n {inclusionsArray.length !== 0 && areAllSuitabilityComments && (\n <Box sx={classes.suitabilityCommentWarning}>\n Suitability comments can only be used if at least one other information option is also\n selected\n </Box>\n )}\n </Box>\n <Box sx={classes.aiRow}>\n <Box sx={classes.fieldSubHeader}>Applications</Box>\n <Box sx={classes.applicantsContainer}>\n {selectedApplicants.map((applicant: IJobApplication, index: number) => (\n <Box\n sx={classes.applicant}\n key={applicant.id}\n onMouseEnter={() => setApplicantHovered(index)}\n onMouseLeave={() => setApplicantHovered(-1)}\n >\n <Box sx={classes.applicantInitials}>\n {applicant.candidate.firstname[0] + applicant.candidate.lastname[0]}\n </Box>\n {applicantHovered === index && (\n <>\n <Box\n sx={classes.removeApplicant}\n onClick={() => handleDeselectApplicant(applicant.id)}\n >\n <CloseIcon />\n </Box>\n <Box sx={classes.applicantName}>\n {applicant.candidate.firstname.split(' ') +\n ' ' +\n applicant.candidate.lastname.split(' ')}\n </Box>\n </>\n )}\n </Box>\n ))}\n </Box>\n </Box>\n <DynamicFooter\n primaryButtonText=\"Generate\"\n primaryButtonID=\"generate-custom-summary-button\"\n disablePrimaryButton={areAllSuitabilityComments}\n handlePrimaryButtonClick={requestInsights}\n felixMessage={\n <>\n Let me know what format and information to use for your <span>candidate insights</span>.\n You can also email the insights!\n </>\n }\n felixMessageMaxWidth=\"400px\"\n />\n </>\n );\n};\n\nexport default InputStep;\n","import React, { useState } from 'react';\nimport { Box, Modal } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { defaultInclusions } from '../config';\nimport { classes } from '../styles';\nimport LoadingResponse from '../../SharedComponents/Steps/LoadingResponse';\nimport InputStep from './InputStep';\nimport { IJobApplication } from '../../../NewUI/Job/types';\nimport ResponseStep from './ResponseStep';\nimport ErrorScreen from '../../SharedComponents/Steps/ErrorScreen';\nimport { modalSteps } from '../types';\nimport { IWebsocketData } from '../../SharedComponents/types';\nimport { useWebSockets } from '../../../NewUI/Components/Utilities/useWebSockets';\nimport { dismissNotification } from '../../SharedComponents/Utility/dismissNotification';\nimport { StyledSnackbarProps } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\n\nconst InsightsModal = ({\n jobId,\n open,\n handleClose,\n selectedApplicants,\n handleDeselectApplicant,\n setSnackbar\n}: {\n jobId: number;\n open: boolean;\n handleClose: () => void;\n selectedApplicants: IJobApplication[];\n handleDeselectApplicant: (applicantId: number) => void;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n}) => {\n const [step, setStep] = useState<modalSteps>('input');\n const [selectedFormat, setSelectedFormat] = useState('Paragraphs');\n const [inclusions, setInclusions] = useState(defaultInclusions);\n const [emails, setEmails] = useState<string[]>([]);\n const [summaryData, setSummaryData] = useState<IWebsocketData | null>(null);\n\n const { subscribeToChannel, unsubscribeFromChannel, socketConnected } = useWebSockets(\n 'AiStudioChannel',\n (data: IWebsocketData, UID?: number) => {\n if (data.UID !== UID) return;\n if (data.kind === 'error') {\n setStep('error');\n } else {\n setSummaryData(data);\n setStep('response');\n }\n unsubscribeFromChannel();\n }\n );\n\n const requestInsights = async () => {\n setStep('loading');\n const UID = Date.now();\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/application_summaries`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n application_summary: {\n format: selectedFormat,\n information_include: Object.keys(inclusions).filter(\n (key) => inclusions[key as keyof typeof inclusions].value\n ),\n emails,\n application_ids: selectedApplicants.map((applicant) => applicant.id),\n UID: UID\n }\n })\n });\n await response.json();\n if (response.ok) {\n subscribeToChannel(UID);\n } else {\n throw new Error(`API Request failed with status ${response.status}`);\n }\n } catch (error) {\n setStep('error');\n }\n };\n\n const handleDeselect = (applicantId: number) => {\n if (selectedApplicants.length === 1) {\n handleDeselectApplicant(applicantId);\n onClose();\n } else {\n handleDeselectApplicant(applicantId);\n }\n };\n\n const onClose = () => {\n if (step === 'response' && summaryData) {\n dismissNotification(summaryData.id);\n }\n setStep('input');\n setSelectedFormat('Paragraphs');\n setInclusions(defaultInclusions);\n setEmails([]);\n setSummaryData(null);\n unsubscribeFromChannel();\n handleClose();\n };\n\n const renderStep = (step: modalSteps) => {\n switch (step) {\n case 'input':\n return (\n <InputStep\n selectedFormat={selectedFormat}\n setSelectedFormat={setSelectedFormat}\n inclusions={inclusions}\n setInclusions={setInclusions}\n selectedApplicants={selectedApplicants}\n handleDeselectApplicant={handleDeselect}\n requestInsights={requestInsights}\n />\n );\n case 'loading':\n return <LoadingResponse generationType=\"summary\" showSocketMessage={socketConnected} />;\n case 'response':\n return (\n <ResponseStep\n jobId={jobId}\n summaryData={summaryData}\n setStep={setStep}\n requestInsights={requestInsights}\n emails={emails}\n setEmails={setEmails}\n selectedApplicants={selectedApplicants}\n setSnackbar={setSnackbar}\n />\n );\n case 'error':\n return (\n <ErrorScreen regenerateCallback={requestInsights} backToHome={() => setStep('input')} />\n );\n default:\n return <div>Something went wrong</div>;\n }\n };\n\n return (\n <Modal open={open} onClose={onClose} aria-labelledby=\"ai-insights-modal\">\n <Box sx={classes.modal}>\n <Box sx={{ ...classes.aiModalContent, ...(step === 'loading' && { marginTop: '0px' }) }}>\n <CloseIcon onClick={onClose} sx={classes.closeIcon} />\n {renderStep(step)}\n </Box>\n </Box>\n </Modal>\n );\n};\n\nexport default InsightsModal;\n","import React, { useState, useRef, Dispatch, SetStateAction, useMemo } from 'react';\nimport { Box, Button } from '@mui/material';\nimport DynamicFooter from '../../SharedComponents/Footers/DynamicFooter';\nimport { classes } from '../styles';\nimport { handleRichCopy } from '../../../NewUI/Components/Utilities/handleRichCopy';\nimport DisplayHTMLViewOnly from '../../SharedComponents/DisplayHTMLViewOnly';\nimport { modalSteps } from '../types';\nimport { IWebsocketData } from '../../SharedComponents/types';\nimport { convertToLocalEnglish } from '../../../NewUI/Components/Utilities/convertToLocalEnglish';\nimport { handleAPIRequest } from '../../../NewUI/Components/Utilities/handleAPIRequest';\nimport { IJobApplication } from '../../../NewUI/Job/types';\nimport { StyledSnackbarProps } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\n\ninterface IProps {\n jobId?: number;\n setStep?: Dispatch<SetStateAction<modalSteps>>;\n summaryData: IWebsocketData | null;\n requestInsights?: () => void;\n handleDismissNotification?: () => void;\n isNotification?: boolean;\n emails: string[];\n setEmails: Dispatch<SetStateAction<string[]>>;\n selectedApplicants: IJobApplication[];\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n}\n\nconst ResponseStep = ({\n jobId,\n setStep,\n summaryData,\n requestInsights,\n handleDismissNotification,\n isNotification,\n emails,\n setEmails,\n selectedApplicants,\n setSnackbar\n}: IProps) => {\n const [copied, setCopied] = useState(false);\n const summaryRef = useRef(null);\n const [emailInputOpen, setEmailInputOpen] = useState<boolean>(false);\n const [sendingEmails, setSendingEmails] = useState(false);\n const currentJobId = jobId || summaryData?.job_id;\n\n const downloadPDF = () => {\n const url = `/api/v4/jobs/${currentJobId}/bulk_application_summaries/${summaryData?.id}.pdf`;\n window.open(url, '_blank');\n };\n\n const handleSendEmailClick = () => {\n handleAPIRequest({\n url: `/api/v4/jobs/${currentJobId}/applications/send_ai_insights`,\n method: 'POST',\n body: {\n application_ids: selectedApplicants\n ? selectedApplicants.map((applicant) => applicant.id)\n : summaryData?.additional_information?.application_ids,\n summary_data: summaryData?.array_data,\n emails: emails.join(',')\n },\n onSuccess: () => {\n setEmailInputOpen(false);\n setEmails([]);\n },\n setLoaderState: setSendingEmails,\n setSnackbarState: setSnackbar\n });\n };\n\n const convertedSummaryData = useMemo(\n () =>\n convertToLocalEnglish(\n summaryData?.content || '<p>There was an error generating your summary</p>'\n ),\n [summaryData?.content]\n );\n\n return (\n <>\n <Box sx={classes.responseHeader}>\n <Box sx={classes.header}>AI candidate insights</Box>\n {!isNotification && setStep && (\n <Button sx={classes.pillButton} onClick={() => setStep('input')}>\n Back to settings\n </Button>\n )}\n </Box>\n <DisplayHTMLViewOnly\n content={convertedSummaryData}\n viewerRef={summaryRef}\n onExportClick={downloadPDF}\n setEmails={setEmails}\n emails={emails}\n onSendEmailClick={handleSendEmailClick}\n emailInputOpen={emailInputOpen}\n setEmailInputOpen={setEmailInputOpen}\n sendingEmails={sendingEmails}\n />\n <DynamicFooter\n primaryButtonText={copied ? 'Copied!' : 'Copy'}\n secondaryButtonText={isNotification ? 'Close' : 'Regenerate'}\n primaryButtonID=\"copy-summary-text\"\n secondaryButtonID={`${isNotification ? 'regenerate' : 'close'}-summary`}\n primaryButtonMinWidth=\"110px\"\n handlePrimaryButtonClick={() => handleRichCopy(summaryRef.current, setCopied)}\n handleSecondaryButtonClick={isNotification ? handleDismissNotification : requestInsights}\n felixMessage={\n <>\n Here are your <span>candidate insights</span>. Now let’s go fill this role!\n </>\n }\n felixMessageMaxWidth=\"400px\"\n alternateSecondaryButton={true}\n />\n </>\n );\n};\n\nexport default ResponseStep;\n","import React, { useState } from 'react';\nimport { serialize } from 'object-to-formdata';\nimport { Box, OutlinedInput, CircularProgress } from '@mui/material';\nimport { IWebsocketData } from '../../../SharedComponents/types';\nimport { StyledSnackbarProps } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { handleAPIRequest } from '../../../../NewUI/Components/Utilities/handleAPIRequest';\nimport HtmlEditor from '../../../../NewUI/Components/Utilities/HtmlEditor';\nimport DynamicFooter from '../../../SharedComponents/Footers/DynamicFooter';\nimport { classes } from '../../styles';\nimport { dismissNotification } from '../../../SharedComponents/Utility/dismissNotification';\n\nconst EditStep = ({\n emailData,\n handleClose,\n goBack,\n jobId,\n applicationId,\n setSnackbarState\n}: {\n emailData: IWebsocketData | null;\n handleClose: () => void;\n goBack: () => void;\n jobId: number;\n applicationId: number;\n setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n const initialEmailText = emailData?.content\n .split('\\n\\n')\n .map((s) => `<p>${s}</p>`)\n .slice(1)\n .join('');\n const [emailText, setEmailText] = useState(initialEmailText);\n const [subjectLine, setSubjectLine] = useState(\n emailData?.content.split('\\n\\n')[0].replace('Subject: ', '')\n );\n const [isSending, setIsSending] = useState(false);\n\n const sendEmail = () => {\n if (isSending) return;\n const data = {\n email_batch: {\n applications_ids: applicationId,\n subject: subjectLine,\n body: emailText,\n delay: 0\n }\n };\n const serializedData = serialize(data);\n handleAPIRequest({\n url: `/api/v4/jobs/${jobId}/applications/bulk_email`,\n method: 'POST',\n body: serializedData,\n onSuccess: () => {\n handleClose();\n emailData && dismissNotification(emailData.id);\n },\n setSnackbarState,\n formData: true,\n setLoaderState: setIsSending\n });\n };\n return (\n <>\n <Box sx={classes.emailQuestionsContainer}>\n <Box sx={classes.aiRow}>\n <Box sx={classes.fieldSubHeader}>Email subject line</Box>\n <OutlinedInput\n id=\"email-subject-line\"\n sx={classes.fieldInput}\n placeholder=\"Subject line, eg. 'Application follow up'\"\n value={subjectLine}\n onChange={(e) => setSubjectLine(e.target.value)}\n />\n </Box>\n <Box sx={classes.aiRow}>\n <HtmlEditor body={initialEmailText} onChange={setEmailText} maxHeight={380} />\n </Box>\n </Box>\n <DynamicFooter\n primaryButtonText={\n isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Send email'\n }\n handlePrimaryButtonClick={sendEmail}\n primaryButtonID=\"send-follow-up-email-button\"\n primaryButtonMinWidth=\"130px\"\n secondaryButtonText=\"Back\"\n handleSecondaryButtonClick={goBack}\n felixMessage={\n <>\n Here's your <span>follow up email</span>! You can edit it here or send it as is.\n </>\n }\n />\n </>\n );\n};\n\nexport default EditStep;\n","import React, { Dispatch, useState } from 'react';\nimport { Box, Modal } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from '../../styles';\nimport LoadingResponse from '../../../SharedComponents/Steps/LoadingResponse';\nimport InputStep from './InputStep';\nimport EditStep from './EditStep';\nimport ErrorScreen from '../../../SharedComponents/Steps/ErrorScreen';\nimport { StyledSnackbarProps } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { useWebSockets } from '../../../../NewUI/Components/Utilities/useWebSockets';\nimport { IWebsocketData } from '../../../SharedComponents/types';\nimport { emailTones } from '../../config';\n\ntype TStep = 'input' | 'loading' | 'edit' | 'error';\n\nconst FollowUpEmailModal = ({\n questions,\n jobId,\n applicationId,\n modalOpen,\n setModalOpen,\n setSnackbarState\n}: {\n questions: string[];\n jobId: number;\n applicationId: number;\n modalOpen: boolean;\n setModalOpen: Dispatch<React.SetStateAction<boolean>>;\n setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n const [currentStep, setCurrentStep] = useState<TStep>('input');\n const [emailTone, setEmailTone] = useState<typeof emailTones[number]>('Professional');\n const [emailData, setEmailData] = useState<IWebsocketData | null>(null);\n\n const handleClose = () => {\n setCurrentStep('input');\n setEmailTone('Professional');\n setEmailData(null);\n setModalOpen(false);\n };\n\n const { subscribeToChannel, unsubscribeFromChannel, socketConnected } = useWebSockets(\n 'AiStudioChannel',\n (data: IWebsocketData, UID?: number) => {\n if (data.UID !== UID) return;\n if (data.kind === 'error') {\n setCurrentStep('error');\n } else {\n setEmailData(data);\n setCurrentStep('edit');\n }\n unsubscribeFromChannel();\n }\n );\n\n const generateFollowUpEmail = async () => {\n setCurrentStep('loading');\n const UID = Date.now();\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/applications/${applicationId}/follow_up_email`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n follow_up_email: {\n UID,\n email_tone: emailTone.toLowerCase(),\n follow_up_questions: questions\n }\n })\n }\n );\n if (response.ok) {\n subscribeToChannel(UID);\n } else {\n throw new Error(`API Request failed with status ${response.status}`);\n }\n } catch (error) {\n setCurrentStep('error');\n }\n };\n\n const renderStep = (step: TStep) => {\n switch (step) {\n case 'input':\n return (\n <>\n <Box sx={classes.header}>Send follow up email</Box>\n <InputStep\n questions={questions}\n emailTone={emailTone}\n setEmailTone={setEmailTone}\n generateFollowUpEmail={generateFollowUpEmail}\n handleClose={handleClose}\n />\n </>\n );\n case 'loading':\n return (\n <LoadingResponse generationType=\"follow up email\" showSocketMessage={socketConnected} />\n );\n case 'edit':\n return (\n <>\n <Box sx={classes.header}>Edit your follow up email</Box>\n <EditStep\n emailData={emailData}\n goBack={() => setCurrentStep('input')}\n handleClose={handleClose}\n jobId={jobId}\n applicationId={applicationId}\n setSnackbarState={setSnackbarState}\n />\n </>\n );\n case 'error':\n return (\n <ErrorScreen\n backToHome={() => setCurrentStep('input')}\n regenerateCallback={generateFollowUpEmail}\n />\n );\n default:\n return <Box>An error has occurred, please refresh the page</Box>;\n }\n };\n\n return (\n <Modal\n open={modalOpen}\n onClose={handleClose}\n aria-labelledby=\"suggested-interview-questions-modal\"\n >\n <Box sx={classes.modal}>\n <Box sx={classes.aiModalContent}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n {renderStep(currentStep)}\n </Box>\n </Box>\n </Modal>\n );\n};\n\nexport default FollowUpEmailModal;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from '../../styles';\nimport StyledDropdown from '../../../SharedComponents/Inputs/StyledDropdown';\nimport { emailTones } from '../../config';\nimport StaticQuestionsPreview from '../../../SharedComponents/StaticQuestionsPreview';\nimport DynamicFooter from '../../../SharedComponents/Footers/DynamicFooter';\n\nconst InputStep = ({\n questions,\n emailTone,\n setEmailTone,\n generateFollowUpEmail,\n handleClose\n}: {\n questions: string[];\n emailTone: string;\n setEmailTone: Dispatch<SetStateAction<string>>;\n generateFollowUpEmail: () => void;\n handleClose: () => void;\n}) => {\n return (\n <>\n <Box sx={classes.emailQuestionsContainer}>\n <Box sx={classes.aiRow}>\n <Box sx={classes.fieldSubHeader}>Select email tone</Box>\n <StyledDropdown\n id=\"question-type-dropdown\"\n value={emailTone}\n onChange={setEmailTone}\n options={emailTones}\n />\n </Box>\n <Box sx={classes.aiRow}>\n <Box sx={classes.fieldSubHeader}>Questions to include in email</Box>\n <StaticQuestionsPreview questions={questions} />\n </Box>\n </Box>\n <DynamicFooter\n primaryButtonText=\"Generate email\"\n handlePrimaryButtonClick={generateFollowUpEmail}\n primaryButtonID=\"generate-follow-up-email-button\"\n secondaryButtonText=\"Cancel\"\n handleSecondaryButtonClick={handleClose}\n felixMessage={\n <>\n Select a tone and I'll write a <span>follow up email</span> to ask this candidate for\n further information.\n </>\n }\n />\n </>\n );\n};\n\nexport default InputStep;\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport { defaultInclusions } from '../../config';\nimport { Box } from '@mui/material';\nimport { classes } from '../../styles';\nimport { StyledSnackbarProps } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport ToggleButtons from '../../../SharedComponents/Buttons/ToggleButtons';\nimport SavedQuestionsTab from './SavedQuestionsTab';\nimport InputTab from './InputTab';\n\nconst toggleButtonOptions = [\n {\n value: 'input',\n label: 'Create new questions'\n },\n {\n value: 'savedQuestions',\n label: 'Saved questions'\n }\n];\n\nconst HomeStep = ({\n positionTitle,\n questionType,\n setQuestionType,\n inclusions,\n setInclusions,\n requestQuestions,\n jobId,\n applicationId,\n setSnackbarState\n}: {\n positionTitle: string;\n questionType: string;\n setQuestionType: Dispatch<SetStateAction<string>>;\n inclusions: typeof defaultInclusions;\n setInclusions: Dispatch<SetStateAction<typeof defaultInclusions>>;\n requestQuestions: () => void;\n jobId: number;\n applicationId: number | null;\n setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n const [editablePositionTitle, setEditablePositionTitle] = useState<string>(positionTitle);\n const [selectedTab, setSelectedTab] =\n useState<typeof toggleButtonOptions[number]['value']>('input');\n\n return (\n <>\n <Box sx={classes.header}>Suggested interview questions</Box>\n <Box sx={classes.aiRow}>\n <ToggleButtons\n value={selectedTab}\n setValue={setSelectedTab}\n options={toggleButtonOptions}\n />\n </Box>\n {selectedTab === 'input' ? (\n <InputTab\n editablePositionTitle={editablePositionTitle}\n setEditablePositionTitle={setEditablePositionTitle}\n questionType={questionType}\n setQuestionType={setQuestionType}\n inclusions={inclusions}\n setInclusions={setInclusions}\n requestQuestions={requestQuestions}\n />\n ) : (\n <SavedQuestionsTab\n jobId={jobId}\n applicationId={applicationId}\n setSnackbarState={setSnackbarState}\n />\n )}\n </>\n );\n};\n\nexport default HomeStep;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from '../../styles';\nimport StyledDropdown from '../../../SharedComponents/Inputs/StyledDropdown';\nimport PositionTitleInput from '../../../SharedComponents/Inputs/PositionTitle';\nimport Inclusions from '../../Inputs/Inclusions';\nimport DynamicFooter from '../../../SharedComponents/Footers/DynamicFooter';\nimport { questionTypes } from '../../../SharedComponents/sharedConfig';\nimport { defaultInclusions } from '../../config';\n\nconst InputTab = ({\n editablePositionTitle,\n setEditablePositionTitle,\n questionType,\n setQuestionType,\n inclusions,\n setInclusions,\n requestQuestions\n}: {\n editablePositionTitle: string;\n setEditablePositionTitle: React.Dispatch<React.SetStateAction<string>>;\n questionType: string;\n setQuestionType: React.Dispatch<React.SetStateAction<string>>;\n inclusions: typeof defaultInclusions;\n setInclusions: React.Dispatch<React.SetStateAction<typeof defaultInclusions>>;\n requestQuestions: () => void;\n}) => {\n return (\n <>\n <Box sx={classes.aiRow}>\n <Box sx={classes.fieldSubHeader}>Job title</Box>\n <PositionTitleInput\n positionTitle={editablePositionTitle}\n onChange={setEditablePositionTitle}\n />\n </Box>\n <Box sx={classes.aiRow}>\n <Box sx={classes.fieldSubHeader}>Question type</Box>\n <StyledDropdown\n id=\"question-type-dropdown\"\n value={questionType}\n onChange={setQuestionType}\n options={questionTypes}\n />\n </Box>\n <Box sx={classes.aiRow}>\n <Box sx={classes.fieldSubHeader}>Base questions on the following information:</Box>\n <Inclusions inclusions={inclusions} setInclusions={setInclusions} />\n </Box>\n <DynamicFooter\n primaryButtonText=\"Generate\"\n primaryButtonID=\"generate-questions-button\"\n disablePrimaryButton={\n !Object.keys(inclusions)\n .map((key) => inclusions[key as keyof typeof inclusions].value)\n .includes(true)\n }\n handlePrimaryButtonClick={requestQuestions}\n felixMessage={\n <>\n I can help write some <span>interview questions</span> based on the candidate’s\n application!\n </>\n }\n felixMessageMaxWidth=\"400px\"\n />\n </>\n );\n};\n\nexport default InputTab;\n","import React, { useEffect, useState } from 'react';\nimport SelectableCopyableQuestions from '../../../SharedComponents/SelectableCopyableQuestions';\nimport { handleAPIRequest } from '../../../../NewUI/Components/Utilities/handleAPIRequest';\nimport {\n arrayQuestion,\n formatQuestionArray\n} from '../../../SharedComponents/Utility/questionStringToArray';\nimport DynamicFooter from '../../../SharedComponents/Footers/DynamicFooter';\nimport { StyledSnackbarProps } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { copyToClipboard } from '../../../../NewUI/Components/Utilities/copyToClipboard';\nimport { Box, Skeleton } from '@mui/material';\nimport { FelixConfused } from '../../../SharedComponents/Graphics/FelixSVG';\nimport { classes } from '../../styles';\nimport FollowUpEmailModal from '../FollowUpEmail/FollowUpEmail';\n\nconst SavedQuestionsTab = ({\n jobId,\n applicationId,\n setSnackbarState\n}: {\n jobId: number;\n applicationId: number;\n setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n const [questions, setQuestions] = useState<arrayQuestion[]>([]);\n const [questionsLoading, setQuestionsLoading] = useState<boolean>(true);\n const [copiedQuestions, setCopiedQuestions] = useState<boolean>(false);\n const [modalOpen, setModalOpen] = useState<boolean>(false);\n\n useEffect(() => {\n handleAPIRequest({\n url: `/api/v4/jobs/${jobId}/applications/${applicationId}/saved_interview_questions`,\n method: 'GET',\n onSuccess: (response) => {\n setQuestions(formatQuestionArray(response?.questions || ''));\n setQuestionsLoading(false);\n }\n });\n }, [applicationId, jobId]);\n\n const handleDeleteQuestion = async (index: number) => {\n const newQuestions = [...questions];\n newQuestions[index].status = 'deleting';\n setQuestions(newQuestions);\n await handleAPIRequest({\n url: `/api/v4/jobs/${jobId}/applications/${applicationId}/saved_interview_questions/remove_question`,\n method: 'PATCH',\n body: {\n saved_interview_questions: {\n index: index\n }\n },\n onSuccess: () => {\n setQuestions((prev) => prev.filter((_, i) => i !== index));\n }\n });\n };\n\n const handleCopyQuestions = () => {\n const questionCopyText = questions\n .filter((item) => item.selected)\n .map((item, index) => `${index + 1}. ${item.text}`)\n .join('\\n\\n');\n copyToClipboard(questionCopyText);\n setQuestions((prev) => prev.map((item) => ({ ...item, selected: false })));\n setCopiedQuestions(true);\n setTimeout(() => setCopiedQuestions(false), 3000);\n };\n\n return (\n <>\n {questionsLoading ? (\n [...Array(3)].map((_, index) => (\n <Skeleton key={index} sx={classes.questionSkeleton} animation=\"wave\" />\n ))\n ) : (\n <>\n <SelectableCopyableQuestions\n questions={questions}\n setQuestions={setQuestions}\n maxHeight=\"450px\"\n deleteQuestion={handleDeleteQuestion}\n />\n {!questions.length && (\n <Box sx={classes.noSavedQuestions}>\n <Box sx={{ width: '140px', marginBottom: '40px' }}>\n <FelixConfused />\n </Box>\n <Box sx={{ marginBottom: '10px' }}>\n No saved questions for the selected application\n </Box>\n <Box>Go to the create new questions tab to generate and save some!</Box>\n </Box>\n )}\n </>\n )}\n <DynamicFooter\n primaryButtonText=\"Email to Candidate\"\n primaryButtonID=\"generate-email-button\"\n disablePrimaryButton={!questions.some((item) => item.selected)}\n handlePrimaryButtonClick={() => setModalOpen(true)}\n secondaryButtonText={copiedQuestions ? 'Copied!' : 'Copy Questions'}\n secondaryButtonID=\"copy-questions-button\"\n secondaryButtonMinWidth=\"167px\"\n disableSecondaryButton={!questions.some((item) => item.selected)}\n handleSecondaryButtonClick={handleCopyQuestions}\n felixMessage={\n <>\n View, manage and copy all of your saved <span>questions</span> here. Select questions to\n copy multiple at a time!\n </>\n }\n felixMessageMaxWidth=\"450px\"\n />\n {modalOpen && (\n <FollowUpEmailModal\n questions={questions.filter((item) => item.selected).map((item) => item.text)}\n modalOpen={modalOpen}\n setModalOpen={setModalOpen}\n jobId={jobId}\n applicationId={applicationId}\n setSnackbarState={setSnackbarState}\n />\n )}\n </>\n );\n};\n\nexport default SavedQuestionsTab;\n","import React, { useState } from 'react';\nimport { Box, Modal } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport HomeStep from './HomeStep/HomeStep';\nimport LoadingResponse from '../../SharedComponents/Steps/LoadingResponse';\nimport ResponseStep from './ResponseStep';\nimport ErrorScreen from '../../SharedComponents/Steps/ErrorScreen';\nimport { StyledSnackbarProps } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { defaultInclusions } from '../config';\nimport { classes } from '../styles';\nimport { modalSteps } from '../types';\nimport { IWebsocketData } from '../../SharedComponents/types';\nimport { useWebSockets } from '../../../NewUI/Components/Utilities/useWebSockets';\nimport { dismissNotification } from '../../SharedComponents/Utility/dismissNotification';\nimport { IJobApplication } from '../../../NewUI/Job/types';\n\nconst InterviewQuestions = ({\n jobId,\n open,\n handleClose,\n selectedApplicantId,\n positionTitle,\n setSnackbarState\n}: {\n jobId: number;\n open: boolean;\n handleClose: () => void;\n selectedApplicantId: IJobApplication['id'];\n positionTitle: string;\n setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n const [step, setStep] = useState<modalSteps>('input');\n const [questionType, setQuestionType] = useState('general');\n const [inclusions, setInclusions] = useState(defaultInclusions);\n const [questionData, setQuestionData] = useState<IWebsocketData | null>(null);\n\n const { subscribeToChannel, unsubscribeFromChannel, socketConnected } = useWebSockets(\n 'AiStudioChannel',\n (data: IWebsocketData, UID?: number) => {\n if (data.UID !== UID) return;\n if (data.kind === 'error') {\n setStep('error');\n } else {\n setQuestionData(data);\n setStep('response');\n }\n unsubscribeFromChannel();\n }\n );\n\n const requestQuestions = async () => {\n setStep('loading');\n const UID = Date.now();\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/applications/${selectedApplicantId}/interview_question`,\n {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n interview_question: {\n position_title: positionTitle,\n question_type: questionType,\n information_include: Object.keys(inclusions).filter(\n (key) => inclusions[key as keyof typeof inclusions].value\n ),\n UID: UID\n }\n })\n }\n );\n await response.json();\n if (response.ok) {\n subscribeToChannel(UID);\n } else {\n throw new Error(`API Request failed with status ${response.status}`);\n }\n } catch (error) {\n setStep('error');\n }\n };\n\n const onClose = () => {\n if (step === 'response' && questionData) {\n dismissNotification(questionData.id);\n }\n setStep('input');\n setQuestionType('general');\n setInclusions(defaultInclusions);\n setQuestionData(null);\n unsubscribeFromChannel();\n handleClose();\n };\n\n const renderStep = (step: modalSteps) => {\n switch (step) {\n case 'input':\n return (\n <HomeStep\n positionTitle={positionTitle}\n questionType={questionType}\n setQuestionType={setQuestionType}\n inclusions={inclusions}\n setInclusions={setInclusions}\n requestQuestions={requestQuestions}\n jobId={jobId}\n applicationId={selectedApplicantId}\n setSnackbarState={setSnackbarState}\n />\n );\n case 'loading':\n return <LoadingResponse generationType=\"interview\" showSocketMessage={socketConnected} />;\n case 'response':\n return (\n <ResponseStep\n setStep={setStep}\n requestQuestions={requestQuestions}\n questionData={questionData}\n jobId={jobId}\n selectedApplicantId={selectedApplicantId}\n setSnackbarState={setSnackbarState}\n />\n );\n case 'error':\n return (\n <ErrorScreen regenerateCallback={requestQuestions} backToHome={() => setStep('input')} />\n );\n default:\n return <div>Something went wrong</div>;\n }\n };\n\n return (\n <Modal open={open} onClose={onClose} aria-labelledby=\"suggested-interview-questions-modal\">\n <Box sx={classes.modal}>\n <Box sx={classes.aiModalContent}>\n <CloseIcon onClick={onClose} sx={classes.closeIcon} />\n {renderStep(step)}\n </Box>\n </Box>\n </Modal>\n );\n};\n\nexport default InterviewQuestions;\n","import React, { useState, useCallback, Dispatch, SetStateAction } from 'react';\nimport { Box, Button } from '@mui/material';\nimport CachedIcon from '@mui/icons-material/Cached';\nimport HomeIcon from '@mui/icons-material/Home';\nimport DynamicFooter from '../../SharedComponents/Footers/DynamicFooter';\nimport { classes } from '../styles';\nimport { modalSteps } from '../types';\nimport { StyledSnackbarProps } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { IWebsocketData } from '../../SharedComponents/types';\nimport { convertToLocalEnglish } from '../../../NewUI/Components/Utilities/convertToLocalEnglish';\nimport {\n arrayQuestion,\n questionStringToArray\n} from '../../SharedComponents/Utility/questionStringToArray';\nimport SelectableCopyableQuestions from '../../SharedComponents/SelectableCopyableQuestions';\nimport { handleAPIRequest } from '../../../NewUI/Components/Utilities/handleAPIRequest';\nimport FollowUpEmailModal from './FollowUpEmail/FollowUpEmail';\n\nconst convertedQuestionData = (questions: string) => {\n const convertedQUestions = convertToLocalEnglish(questions || '');\n return questionStringToArray(convertedQUestions);\n};\n\nconst ResponseStep = ({\n setStep,\n requestQuestions,\n questionData,\n isNotification,\n jobId,\n selectedApplicantId,\n setSnackbarState\n}: {\n setStep?: Dispatch<SetStateAction<modalSteps>>;\n requestQuestions?: () => void;\n questionData: IWebsocketData | null;\n isNotification?: boolean;\n jobId?: number;\n selectedApplicantId?: number | null;\n setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n const [questions, setQuestions] = useState<arrayQuestion[]>(\n convertedQuestionData(questionData?.content || '')\n );\n const [emailModalOpen, setEmailModalOpen] = useState<boolean>(false);\n const saveSelectedQuestions = useCallback(async () => {\n const sendableQuestions = questions.filter((item) => item.selected).map((item) => item.text);\n setQuestions((prev) =>\n prev.map((item) => (item.selected ? { ...item, status: 'loading' } : item))\n );\n handleAPIRequest({\n url: `/api/v4/jobs/${jobId || questionData?.job_id}/applications/${\n selectedApplicantId || questionData?.application_id\n }/saved_interview_questions/add_questions`,\n method: 'PATCH',\n body: {\n saved_interview_questions: {\n questions: sendableQuestions\n }\n },\n onSuccess: () => {\n setQuestions((prev) =>\n prev.map((item) => (item.selected ? { ...item, status: 'sent', selected: false } : item))\n );\n },\n onFailure: () => {\n setQuestions((prev) =>\n prev.map((item) => (item.selected ? { ...item, status: 'error', selected: false } : item))\n );\n }\n });\n }, [jobId, questionData?.application_id, questionData?.job_id, questions, selectedApplicantId]);\n\n return (\n <>\n <Box sx={classes.responseHeader}>\n <Box sx={classes.header}>Suggested interview questions</Box>\n {!isNotification && requestQuestions && (\n <Box sx={{ display: 'flex', columnGap: '32px' }}>\n <Button\n sx={{ ...classes.pillButton, width: '154px' }}\n endIcon={<HomeIcon />}\n onClick={() => setStep && setStep('input')}\n >\n Start again\n </Button>\n <Button\n sx={{ ...classes.pillButton, width: '154px' }}\n endIcon={<CachedIcon />}\n onClick={requestQuestions}\n >\n Regenerate\n </Button>\n </Box>\n )}\n </Box>\n <Box sx={classes.applicantNameHeader}>\n <a\n href={`/admin/jobs/${jobId || questionData?.job_id}/applications/${\n selectedApplicantId || questionData?.application_id\n }`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {questionData?.candidate_name}\n </a>\n </Box>\n <SelectableCopyableQuestions\n questions={questions}\n setQuestions={setQuestions}\n maxHeight=\"450px\"\n />\n <DynamicFooter\n primaryButtonText=\"Save questions\"\n primaryButtonID=\"save-questions-button\"\n handlePrimaryButtonClick={saveSelectedQuestions}\n disablePrimaryButton={!questions.some((item) => item.selected)}\n secondaryButtonText=\"Generate email\"\n secondaryButtonID=\"generate-email-button\"\n handleSecondaryButtonClick={() => setEmailModalOpen(true)}\n disableSecondaryButton={!questions.some((item) => item.selected)}\n felixMessage={\n <>\n Here are some follow up questions, you can use them during an <span>interview</span>,{' '}\n <span>email</span> them to your candidate or save them to view later.\n </>\n }\n felixMessageMaxWidth=\"420px\"\n alternateSecondaryButton={true}\n />\n {emailModalOpen && (\n <FollowUpEmailModal\n questions={questions.filter((item) => item.selected).map((item) => item.text)}\n modalOpen={emailModalOpen}\n setModalOpen={setEmailModalOpen}\n jobId={jobId || questionData?.job_id}\n applicationId={selectedApplicantId || questionData?.application_id}\n setSnackbarState={setSnackbarState}\n />\n )}\n </>\n );\n};\n\nexport default ResponseStep;\n","import React, { Dispatch, SetStateAction, useMemo, useRef, useState } from 'react';\nimport { Box, Button, CircularProgress, Fade, Popper } from '@mui/material';\nimport OpenInFullIcon from '@mui/icons-material/OpenInFull';\nimport ExpandedSummaryModal from './ExpandedSummaryModal';\nimport dompurify from 'dompurify';\nimport { classes } from './styles';\nimport { StyledSnackbarProps } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { FelixConfused, FelixMessageSVG } from '../SharedComponents/Graphics/FelixSVG';\nimport { IApplicationInfo } from '../SharedComponents/types';\nimport { convertToLocalEnglish } from '../../NewUI/Components/Utilities/convertToLocalEnglish';\n\nconst SummaryPopover = ({\n applicantHovered,\n handleHoverApplicant,\n handleUnhoverApplicant,\n lastHoveredApplicant,\n anchorEl,\n jobId,\n setSnackbarState,\n summaryGeneratingIds,\n setSummaryGeneratingIds\n}: {\n applicantHovered: boolean;\n handleHoverApplicant: (target: HTMLElement | null, application?: IApplicationInfo) => void;\n handleUnhoverApplicant: () => void;\n lastHoveredApplicant: IApplicationInfo;\n anchorEl: HTMLElement | null;\n jobId: number;\n setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n summaryGeneratingIds: number[];\n setSummaryGeneratingIds: Dispatch<SetStateAction<number[]>>;\n}) => {\n const [expanded, setExpanded] = useState(false);\n const [copied, setCopied] = useState(false);\n const [loadingSummary, setLoadingSummary] = useState(false);\n const summaryRef = useRef<HTMLDivElement | null>(null);\n\n const [dotPoints, summary] = useMemo(() => {\n if (!lastHoveredApplicant?.summary) return [null, null];\n const summary = convertToLocalEnglish(lastHoveredApplicant.summary);\n const ulIndex = summary.indexOf('<ul>');\n\n if (ulIndex !== -1) {\n const listItems = summary\n ?.replace('\\n', '')\n .split('<ul>')[1]\n .split('</li>')\n .slice(0, 3)\n .join('</li>');\n return ['<ul>' + listItems + '</li></ul>', summary];\n } else {\n // Handle the case where <ul> is not found in the summary\n return [summary, summary];\n }\n }, [lastHoveredApplicant.summary]);\n\n const handleCloseModal = () => {\n setExpanded(false);\n };\n\n const generateSummary = async () => {\n setLoadingSummary(true);\n try {\n const request = await fetch(\n `/api/v4/jobs/${jobId}/applications/${lastHoveredApplicant.id}/application_summary`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n );\n if (request.ok) {\n setSnackbarState({\n message: 'Summary is being generated, this may take a few minutes',\n state: 'success'\n });\n setSummaryGeneratingIds((prev) => [...prev, lastHoveredApplicant.id]);\n } else {\n const response = await request.json();\n setSnackbarState({\n message: response.errors || 'Error requesting a generated summary',\n state: 'error'\n });\n }\n } catch (e) {\n setSnackbarState({\n message: 'Something went wrong, please refresh and try again',\n state: 'error'\n });\n } finally {\n setLoadingSummary(false);\n setExpanded(false);\n }\n };\n\n const isGeneratingSummary = useMemo(\n () => summaryGeneratingIds.includes(lastHoveredApplicant.id || -1),\n [summaryGeneratingIds, lastHoveredApplicant.id]\n );\n\n return (\n <>\n <Popper\n id={'application-summary-popper'}\n open={applicantHovered}\n anchorEl={anchorEl}\n placement=\"right\"\n transition\n sx={classes.summaryPopper}\n onMouseEnter={() => handleHoverApplicant(anchorEl)}\n onMouseLeave={handleUnhoverApplicant}\n >\n {({ TransitionProps }) => (\n <Fade {...TransitionProps} timeout={300}>\n <Box sx={classes.summaryPopover}>\n {summary ? (\n <>\n <OpenInFullIcon id='expand-AI-summary-button' sx={classes.expandIcon} onClick={() => setExpanded(true)} />\n <div dangerouslySetInnerHTML={{ __html: dompurify.sanitize(dotPoints) }} />\n </>\n ) : (\n <>\n <Box sx={classes.noSummaryFelix}>\n {isGeneratingSummary ? <FelixMessageSVG /> : <FelixConfused />}\n </Box>\n <Box sx={classes.noSummary}>\n {isGeneratingSummary ? 'Summary being generated' : 'No summary available'}\n </Box>\n <Box sx={classes.noSummaryGenerate}>\n {!isGeneratingSummary ? (\n <Button sx={classes.pillButton} onClick={generateSummary}>\n {loadingSummary ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n 'Request summary'\n )}\n </Button>\n ) : (\n <Box sx={classes.noSummary}>Please check back in a few minutes</Box>\n )}\n </Box>\n </>\n )}\n </Box>\n </Fade>\n )}\n </Popper>\n {summary && (\n <ExpandedSummaryModal\n jobId={jobId}\n expanded={expanded}\n handleCloseModal={handleCloseModal}\n lastHoveredApplicant={lastHoveredApplicant}\n summaryRef={summaryRef}\n setCopied={setCopied}\n copied={copied}\n loadingSummary={loadingSummary}\n generateSummary={generateSummary}\n setSnackbarState={setSnackbarState}\n />\n )}\n </>\n );\n};\n\nexport default SummaryPopover;\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport { Box, Button } from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport DoneIcon from '@mui/icons-material/Done';\nimport { classes } from './styles';\nimport AIStudioModal from '../AIStudioModal/AIStudioModal';\nimport AIStudioField from '../AIStudioQuestions/AIStudioQuestions';\nimport GenericDialog from '../../NewUI/Components/Modals/GenericDialog';\nimport { QuestionsPreview } from './QuestionsPreview';\nimport DisplayHTMLCollapsible from '../SharedComponents/DisplayHTMLCollapsible';\n\nexport interface IGeneratedContent {\n talentLandingPage: string;\n screeningQuestions: {\n title: string;\n enabled: boolean;\n required: boolean;\n rateable: boolean;\n confidential: boolean;\n }[];\n}\n\nfunction AIStudioNewJob({\n generatedContent,\n setGeneratedContent,\n prefillData\n}: {\n generatedContent: IGeneratedContent;\n setGeneratedContent: Dispatch<SetStateAction<IGeneratedContent>>;\n prefillData: {\n title: string;\n country: string;\n };\n}) {\n const [tlpModalOpen, setTlpModalOpen] = useState(false);\n const [questionsModalOpen, setQuestionsModalOpen] = useState(false);\n const [tlpButtonIsHovered, setTlpButtonIsHovered] = useState(false);\n const [questionsButtonIsHovered, setQuestionsButtonIsHovered] = useState(false);\n const [deleteConfirmOpen, setDeleteConfirmOpen] = useState(false);\n const [collapsed, setCollapsed] = useState(true);\n\n const tlpButtonEndIcon = () => {\n if (tlpButtonIsHovered && generatedContent.talentLandingPage) {\n return <DeleteIcon sx={{ color: '#E37D7A' }} />;\n } else {\n return generatedContent.talentLandingPage ? <DoneIcon /> : <AddIcon />;\n }\n };\n\n const questionButtonEndIcon = () => {\n if (generatedContent.screeningQuestions.length > 0) {\n return questionsButtonIsHovered ? <AddIcon sx={{ color: '#76D18F' }} /> : <DoneIcon />;\n } else {\n return <AddIcon />;\n }\n };\n\n const handleTlpButtonClick = () => {\n if (generatedContent.talentLandingPage) {\n setDeleteConfirmOpen(true);\n } else {\n setTlpModalOpen(true);\n }\n };\n\n const handleQuestionsButtonClick = () => {\n setQuestionsModalOpen(true);\n };\n\n const confirmTlpDelete = () => {\n setGeneratedContent((prev) => ({ ...prev, talentLandingPage: '' }));\n setDeleteConfirmOpen(false);\n };\n\n const handleSwitchChange = (index: number, type: string) => {\n const newQuestions = [...generatedContent.screeningQuestions];\n newQuestions[index][type as keyof (typeof newQuestions)[index]] = !newQuestions[index][type];\n setGeneratedContent((prev) => ({ ...prev, screeningQuestions: newQuestions }));\n };\n\n const handleRemoveQuestion = (index: number) => {\n const newQuestions = [...generatedContent.screeningQuestions];\n newQuestions.splice(index, 1);\n setGeneratedContent((prev) => ({ ...prev, screeningQuestions: newQuestions }));\n };\n\n return (\n <>\n <Box sx={classes.rootContainer}>\n <Box sx={classes.aiHeader}>Add generated content with AI Studio</Box>\n <Box sx={classes.buttonsContainer}>\n <Button\n sx={generatedContent.talentLandingPage ? classes.aiButtonFilled : classes.aiButton}\n onClick={handleTlpButtonClick}\n endIcon={tlpButtonEndIcon()}\n onMouseEnter={() => setTlpButtonIsHovered(true)}\n onMouseLeave={() => setTlpButtonIsHovered(false)}\n >\n Generate talent landing page\n </Button>\n <Button\n sx={\n generatedContent.screeningQuestions.length > 0\n ? classes.aiButtonFilled\n : classes.aiButton\n }\n endIcon={questionButtonEndIcon()}\n onClick={handleQuestionsButtonClick}\n onMouseEnter={() => setQuestionsButtonIsHovered(true)}\n onMouseLeave={() => setQuestionsButtonIsHovered(false)}\n >\n Generate screening questions\n </Button>\n </Box>\n {generatedContent.talentLandingPage && (\n <Box sx={classes.previewContainer}>\n <h3>Talent landing page preview</h3>\n <DisplayHTMLCollapsible\n content={generatedContent.talentLandingPage}\n collapsed={collapsed}\n setCollapsed={setCollapsed}\n />\n </Box>\n )}\n {generatedContent.screeningQuestions.length > 0 && (\n <QuestionsPreview\n questions={generatedContent.screeningQuestions}\n handleSwitchChange={handleSwitchChange}\n handleRemoveQuestion={handleRemoveQuestion}\n />\n )}\n </Box>\n {tlpModalOpen && (\n <AIStudioModal\n aiStudioEnabled={true}\n showPreview={false}\n setTlpModalOpen={setTlpModalOpen}\n jobFlow={true}\n prefillData={prefillData}\n setGeneratedContent={(content) =>\n setGeneratedContent((prev) => ({\n ...prev,\n talentLandingPage: content\n }))\n }\n />\n )}\n {questionsModalOpen && (\n <AIStudioField\n jobTitle={prefillData.title}\n modalsOpen={questionsModalOpen}\n setModalsOpen={(open: boolean) => setQuestionsModalOpen(open)}\n setGeneratedContent={setGeneratedContent}\n />\n )}\n <GenericDialog\n isDialogOpen={deleteConfirmOpen}\n setDialogOpen={setDeleteConfirmOpen}\n title=\"Remove talent landing page?\"\n description=\"Are you sure you want to remove the talent landing page? This action cannot be undone.\"\n buttonCallback={confirmTlpDelete}\n callbackLoading={false}\n buttonText=\"Remove TLP\"\n url=\"\"\n />\n </>\n );\n}\n\nexport default AIStudioNewJob;\n","import React from 'react';\nimport { Box, Button } from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { classes } from './styles';\nimport QuestionSwitch from '../SharedComponents/Inputs/Switch';\nimport { IGeneratedContent } from './AIStudioNewJob';\n\nexport const QuestionsPreview = ({\n questions,\n previewOnly,\n handleSwitchChange,\n handleRemoveQuestion\n}: {\n questions: IGeneratedContent['screeningQuestions'];\n previewOnly?: boolean;\n handleSwitchChange?: (index: number, type: string) => void;\n handleRemoveQuestion?: (index: number) => void;\n}) => {\n const onSwitchChange = (index: number, type: string) => {\n if (handleSwitchChange) {\n handleSwitchChange(index, type);\n }\n };\n\n return (\n <Box sx={classes.previewContainer}>\n <h3>Screening Questions</h3>\n <Box sx={{ ...classes.questionsContainer, ...(previewOnly && { filter: 'contrast(0.5)' }) }}>\n {questions.map((item, index) => (\n <Box sx={classes.question} key={index}>\n <Box sx={{ display: 'flex', flexDirection: 'column', rowGap: '16px' }}>\n <Box sx={{ marginTop: '7px' }}>{item.title}</Box>\n <Box>\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <QuestionSwitch\n item={item}\n index={index}\n type=\"enabled\"\n label=\"Enabled\"\n onChange={onSwitchChange}\n />\n <QuestionSwitch\n item={item}\n index={index}\n type=\"required\"\n label=\"Required\"\n onChange={onSwitchChange}\n />\n <QuestionSwitch\n item={item}\n index={index}\n type=\"rateable\"\n label=\"Rateable\"\n onChange={onSwitchChange}\n />\n {handleRemoveQuestion && (\n <Button\n sx={classes.deleteQuestionButton}\n endIcon={<DeleteIcon />}\n onClick={() => handleRemoveQuestion(index)}\n >\n Remove\n </Button>\n )}\n </Box>\n </Box>\n </Box>\n </Box>\n ))}\n </Box>\n </Box>\n );\n};\n","import React, { forwardRef } from 'react';\nimport { Box } from '@mui/material';\nimport EmailIcon from '@mui/icons-material/Email';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from '../styles';\n\nconst EmailButton = forwardRef<\n HTMLElement,\n {\n onClick: () => void;\n inputOpen: boolean;\n buttonId?: string;\n }\n>(({ onClick, inputOpen, buttonId, ...props }, ref) => {\n return (\n <Box\n id={buttonId}\n sx={{\n ...classes.floatingActionButton,\n ...classes.emailInputButton,\n ...(inputOpen && classes.inputOpen)\n }}\n onClick={() => onClick()}\n ref={ref}\n {...props}\n >\n {inputOpen ? <CloseIcon /> : <EmailIcon />}\n </Box>\n );\n});\nEmailButton.displayName = 'EmailButton';\nexport default EmailButton;\n","import React, { forwardRef } from 'react';\nimport { Box } from '@mui/material';\nimport IosShareIcon from '@mui/icons-material/IosShare';\nimport { classes } from '../styles';\n\nconst ExportButton = forwardRef<HTMLElement, { onClick: () => void; buttonId?: string }>(\n ({ onClick, buttonId, ...props }, ref) => {\n return (\n <Box\n id={buttonId}\n sx={classes.floatingActionButton}\n onClick={() => onClick()}\n ref={ref}\n {...props}\n >\n <IosShareIcon />\n </Box>\n );\n }\n);\nExportButton.displayName = 'ExportButton';\nexport default ExportButton;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport { classes } from '../styles';\n\nconst ToggleButtons = ({\n value,\n setValue,\n options\n}: {\n value: string;\n setValue: (value: string) => void | Dispatch<SetStateAction<string>>;\n options: {\n value: string;\n label: string;\n }[];\n}) => {\n return (\n <ToggleButtonGroup\n value={value}\n exclusive\n onChange={(e, value) => {\n if (value === null) return;\n setValue(value);\n }}\n >\n {options.map((button, index) => (\n <ToggleButton value={button.value} sx={classes.toggleButton} key={index}>\n {button.label}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n );\n};\n\nexport default ToggleButtons;\n","import React, { useState } from 'react';\nimport { Box, Button } from '@mui/material';\nimport CodeIcon from '@mui/icons-material/Code';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport { classes } from './styles';\nimport { LIST_ITEMS_REGEX } from './sharedConfig';\n\nconst CopyableQuestions = ({\n questions,\n numberOfQuestions,\n maxHeight\n}: {\n questions: string | undefined;\n numberOfQuestions?: number;\n maxHeight?: string;\n}) => {\n // create an array of booleans to track which questions have been copied\n const arrayOfBooleans = Array.from(Array(numberOfQuestions || 5), () => false);\n const [copiedQuestion, setCopiedQuestion] = useState(arrayOfBooleans);\n\n const handleCopyQuestion = (index: number) => {\n setCopiedQuestion((prev) => prev.map((item, i) => (i === index ? true : item)));\n setTimeout(\n () => setCopiedQuestion((prev) => prev.map((item, i) => (i === index ? false : item))),\n 3000\n );\n };\n\n return (\n <Box sx={{ ...classes.questionsContainer, ...(maxHeight && { maxHeight }) }}>\n {questions &&\n questions\n .replace(LIST_ITEMS_REGEX, '')\n .split('**')\n .slice(0, -1)\n .map((item, index) => (\n <Box sx={classes.question} key={index}>\n <Box sx={{ maxWidth: '700px' }}>{item}</Box>\n <CopyToClipboard text={item} onCopy={() => handleCopyQuestion(index)}>\n <Button\n className=\"copy-question-button\"\n sx={classes.copyButton}\n endIcon={<CodeIcon />}\n >\n {copiedQuestion[Number(index)] ? 'Copied!' : 'Copy'}\n </Button>\n </CopyToClipboard>\n </Box>\n ))}\n </Box>\n );\n};\n\nexport default CopyableQuestions;\n","import React from 'react';\nimport { Box, Collapse } from '@mui/material';\nimport dompurify from 'dompurify';\nimport { classes } from './styles';\n\nconst DisplayHTMLCollapsible = ({\n content,\n collapsed,\n setCollapsed\n}: {\n content: string;\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n}) => {\n return (\n <>\n <Collapse in={!collapsed} collapsedSize={120}>\n <Box\n sx={classes.descriptionPreview}\n dangerouslySetInnerHTML={{\n __html: dompurify.sanitize(content)\n }}\n />\n </Collapse>\n <Box sx={classes.toggleDescriptionPreview} onClick={() => setCollapsed(!collapsed)}>\n {collapsed ? 'Show more' : 'Show less' }\n </Box>\n </>\n );\n};\n\nexport default DisplayHTMLCollapsible;\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport { Box, Button, CircularProgress, Skeleton, Tooltip } from '@mui/material';\nimport ExportButton from './Buttons/ExportButton';\nimport EmailButton from './Buttons/EmailButton';\nimport { classes } from './styles';\nimport dompurify from 'dompurify';\nimport MultiTagInput from '../../NewUI/Components/CustomUIElements/MultiTagInput';\nimport { emailIsValid } from '../../NewUI/Components/Utilities/emailIsValid';\n\nconst DisplayHTMLViewOnly = ({\n content,\n viewerRef,\n onExportClick,\n setEmails,\n emails,\n onSendEmailClick,\n emailInputOpen,\n setEmailInputOpen,\n sendingEmails,\n loadingHTML,\n maxHeight,\n sendEmailButtonId,\n emailButtonId,\n exportButtonId\n}: {\n content: string;\n viewerRef?: React.RefObject<HTMLDivElement>;\n onExportClick?: () => void;\n setEmails?: Dispatch<SetStateAction<string[]>>;\n emails?: string[];\n onSendEmailClick?: () => void;\n emailInputOpen?: boolean;\n setEmailInputOpen?: Dispatch<SetStateAction<boolean>>;\n sendingEmails?: boolean;\n loadingHTML?: boolean;\n maxHeight?: string;\n sendEmailButtonId?: string;\n emailButtonId?: string;\n exportButtonId?: string;\n}) => {\n const [emailTooltipOpen, setEmailTooltipOpen] = useState(false);\n const [emailTooltipHidden, setEmailTooltipHidden] = useState(false);\n return (\n <Box sx={classes.viewOnlyHTMLParent}>\n {emailInputOpen && setEmails && (\n <Box sx={classes.emailInputContainer}>\n <Box sx={classes.emailInput}>\n <MultiTagInput\n tags={emails || []}\n setTags={setEmails}\n validation={emailIsValid}\n validationMessage=\"Must input valid email\"\n label=\"Email address/s\"\n width=\"100%\"\n tagType=\"emails\"\n helperText=\"To copy and paste bulk emails, email addresses must be separated with a comma\"\n styles={classes.inputStyles}\n labelStylesOverride={classes.labelStyles}\n helperTextStylesOverride={classes.helperTextStyles}\n autoFocus\n />\n </Box>\n <Button\n id={sendEmailButtonId}\n sx={classes.sendEmailButton}\n onClick={onSendEmailClick}\n disabled={emails?.length === 0}\n >\n {!sendingEmails ? 'Send' : <CircularProgress size={12} color=\"inherit\" />}\n </Button>\n </Box>\n )}\n {loadingHTML ? (\n <Skeleton width=\"100%\" height={maxHeight || '100%'} sx={{ transform: 'scale(1)' }} />\n ) : (\n <Box\n sx={{ ...classes.viewOnlyHTML, ...(maxHeight && { maxHeight }) }}\n ref={viewerRef}\n dangerouslySetInnerHTML={{\n __html: dompurify.sanitize(content)\n }}\n />\n )}\n {setEmails && (\n <Tooltip\n open={emailTooltipOpen}\n onClose={() => setEmailTooltipOpen(false)}\n onOpen={() => setEmailTooltipOpen(emailTooltipHidden ? false : true)}\n title=\"Email\"\n placement=\"top\"\n >\n <EmailButton\n onClick={() => {\n setEmailInputOpen && setEmailInputOpen((prev) => !prev);\n setEmailTooltipOpen(false);\n emailInputOpen\n ? setTimeout(() => setEmailTooltipHidden(false), 300)\n : setEmailTooltipHidden(true);\n }}\n inputOpen={emailInputOpen || false}\n buttonId={emailButtonId}\n />\n </Tooltip>\n )}\n {onExportClick && !emailInputOpen && (\n <Tooltip title=\"Download as PDF\" placement=\"top\">\n <ExportButton onClick={onExportClick} buttonId={exportButtonId} />\n </Tooltip>\n )}\n </Box>\n );\n};\n\nexport default DisplayHTMLViewOnly;\n","import React from 'react';\nimport { Box, Button } from '@mui/material';\nimport { FelixMessageSVG } from '../Graphics/FelixSVG';\nimport { classes } from '../styles';\n\nconst DynamicFooter = ({\n handleSecondaryButtonClick,\n handlePrimaryButtonClick,\n secondaryButtonText,\n primaryButtonText,\n secondaryButtonID,\n primaryButtonID,\n primaryButtonMinWidth,\n secondaryButtonMinWidth,\n felixMessage,\n felixMessageMaxWidth,\n disablePrimaryButton,\n disableSecondaryButton,\n footerWidth,\n primaryEndIcon,\n alternateSecondaryButton\n}: {\n handleSecondaryButtonClick?: () => void;\n handlePrimaryButtonClick: () => void;\n secondaryButtonText?: string | JSX.Element;\n primaryButtonText: string | JSX.Element;\n secondaryButtonID?: string;\n primaryButtonID?: string;\n primaryButtonMinWidth?: string;\n secondaryButtonMinWidth?: string;\n felixMessage: JSX.Element;\n disablePrimaryButton?: boolean;\n disableSecondaryButton?: boolean;\n felixMessageMaxWidth?: string;\n footerWidth?: string;\n primaryEndIcon?: JSX.Element;\n alternateSecondaryButton?: boolean;\n}) => {\n return (\n <Box sx={{ ...classes.footerContainer, ...(footerWidth && { width: footerWidth }) }}>\n <Box sx={classes.felixMessageContainer}>\n <FelixMessageSVG />\n <Box\n sx={{\n ...classes.felixMessage,\n ...(felixMessageMaxWidth && { maxWidth: felixMessageMaxWidth })\n }}\n >\n {felixMessage}\n </Box>\n </Box>\n <Box sx={classes.footerButtonsContainer}>\n {handleSecondaryButtonClick && (\n <Button\n id={secondaryButtonID}\n sx={{\n ...(alternateSecondaryButton\n ? classes.altFooterSecondaryButton\n : classes.footerBackButton),\n ...(secondaryButtonMinWidth && { minWidth: secondaryButtonMinWidth })\n }}\n onClick={handleSecondaryButtonClick}\n disabled={disableSecondaryButton || false}\n >\n {secondaryButtonText}\n </Button>\n )}\n <Button\n id={primaryButtonID}\n sx={{\n ...classes.footerContinueButton,\n ...(primaryButtonMinWidth && { minWidth: primaryButtonMinWidth })\n }}\n onClick={handlePrimaryButtonClick}\n disabled={disablePrimaryButton || false}\n endIcon={primaryEndIcon}\n >\n {primaryButtonText}\n </Button>\n </Box>\n </Box>\n );\n};\n\nexport default DynamicFooter;\n","import { SvgIcon } from '@mui/material';\nimport React from 'react';\n\nexport const FelixSVG = () => {\n return (\n <svg\n width=\"290\"\n height=\"390\"\n viewBox=\"0 0 290 390\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_2634_2987)\">\n <path\n d=\"M230.123 87.643C232.069 127.437 186.353 141.552 129.245 144.324C72.1369 147.096 25.2531 137.468 23.3071 97.6885C21.3611 57.9089 65.0864 3.00152 122.194 0.229325C179.302 -2.54287 228.177 47.8485 230.123 87.6281V87.643Z\"\n fill=\"url(#paint0_linear_2634_2987)\"\n />\n <path\n d=\"M206.052 80.2653C208.926 110.789 174.257 123.205 130.442 127.288C86.6273 131.372 50.2519 125.574 47.3778 95.0504C44.5037 64.5264 76.2386 20.8271 120.054 16.7433C163.869 12.6595 203.178 49.7414 206.052 80.2653Z\"\n fill=\"url(#paint1_linear_2634_2987)\"\n />\n <path\n d=\"M89.2169 79.0134C92.8628 79.0134 95.8184 76.0707 95.8184 72.4406C95.8184 68.8106 92.8628 65.8678 89.2169 65.8678C85.5711 65.8678 82.6155 68.8106 82.6155 72.4406C82.6155 76.0707 85.5711 79.0134 89.2169 79.0134Z\"\n fill=\"white\"\n />\n <path\n d=\"M160.336 72.4406C163.982 72.4406 166.938 69.4979 166.938 65.8678C166.938 62.2378 163.982 59.295 160.336 59.295C156.69 59.295 153.735 62.2378 153.735 65.8678C153.735 69.4979 156.69 72.4406 160.336 72.4406Z\"\n fill=\"white\"\n />\n <path\n d=\"M105.025 83.8722C106.881 85.5117 126.071 102.026 141.804 90.8623C144.214 89.1483 147.283 86.2718 150.157 81.2341\"\n stroke=\"white\"\n strokeMiterlimit=\"10\"\n />\n <path\n d=\"M24.5796 232.885C29.5793 168.603 74.4722 152.775 128.017 156.903C181.562 161.032 223.476 183.552 218.477 247.834C213.477 312.116 163.465 393.792 109.919 389.663C56.3743 385.535 19.5798 297.153 24.5796 232.885Z\"\n fill=\"url(#paint2_linear_2634_2987)\"\n />\n <path\n d=\"M239.539 204.418C209.615 233.869 190.933 232.826 178.898 220.694C166.863 208.576 166.039 189.961 195.978 160.51C225.902 131.059 275.255 101.936 287.276 114.068C299.311 126.185 269.462 174.967 239.539 204.418Z\"\n fill=\"url(#paint3_linear_2634_2987)\"\n />\n <path\n d=\"M19.3253 220.366C36.4801 182.121 54.2636 176.338 69.8916 183.284C85.5195 190.229 93.064 207.28 75.9092 245.524C58.7544 283.768 23.4119 328.75 7.76903 321.804C-7.87387 314.859 2.17052 258.625 19.3253 220.366Z\"\n fill=\"url(#paint4_linear_2634_2987)\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_2634_2987\"\n x1=\"22.3116\"\n y1=\"77.298\"\n x2=\"229.117\"\n y2=\"67.1758\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#92ADF4\" />\n <stop offset=\"0.35\" stopColor=\"#8EA8F3\" />\n <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n <stop offset=\"1\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_2634_2987\"\n x1=\"126.708\"\n y1=\"16.4333\"\n x2=\"126.708\"\n y2=\"128.447\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#5656DB\" />\n <stop offset=\"1\" stopColor=\"#4949BB\" />\n </linearGradient>\n <linearGradient\n id=\"paint2_linear_2634_2987\"\n x1=\"215.877\"\n y1=\"280.276\"\n x2=\"21.8367\"\n y2=\"265.178\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#CDD7F2\" />\n <stop offset=\"0.35\" stopColor=\"#AABFFB\" />\n <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n <stop offset=\"1\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint3_linear_2634_2987\"\n x1=\"300.574\"\n y1=\"98.5488\"\n x2=\"184.563\"\n y2=\"258.479\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint4_linear_2634_2987\"\n x1=\"1.49528\"\n y1=\"341.293\"\n x2=\"51.6834\"\n y2=\"150.448\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n </linearGradient>\n <clipPath id=\"clip0_2634_2987\">\n <rect width=\"290\" height=\"389.687\" fill=\"white\" transform=\"translate(0 0.125)\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nexport const FelixButtonSVG = () => {\n return (\n <svg\n width=\"44\"\n height=\"50\"\n viewBox=\"0 0 44 50\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ transform: 'scale(1) translate(2px, -3px)' }}\n >\n <path\n d=\"M35.3605 11.1668C35.6088 16.244 29.776 18.0448 22.4899 18.3985C15.2037 18.7522 9.22196 17.5237 8.97367 12.4484C8.72539 7.3731 14.3041 0.367674 21.5903 0.0139802C28.8765 -0.339714 35.1122 6.08953 35.3605 11.1649V11.1668Z\"\n fill=\"url(#paint0_linear_2639_4522)\"\n />\n <path\n d=\"M32.2894 10.2255C32.6561 14.1199 28.2329 15.7039 22.6427 16.225C17.0525 16.746 12.4115 16.0063 12.0448 12.1118C11.6781 8.2174 15.727 2.64197 21.3172 2.12093C26.9074 1.5999 31.9228 6.33104 32.2894 10.2255Z\"\n fill=\"url(#paint1_linear_2639_4522)\"\n />\n <path\n d=\"M17.3828 10.0657C17.848 10.0657 18.2251 9.69029 18.2251 9.22715C18.2251 8.764 17.848 8.38855 17.3828 8.38855C16.9177 8.38855 16.5406 8.764 16.5406 9.22715C16.5406 9.69029 16.9177 10.0657 17.3828 10.0657Z\"\n fill=\"white\"\n />\n <path\n d=\"M26.4567 9.22715C26.9219 9.22715 27.299 8.8517 27.299 8.38855C27.299 7.92541 26.9219 7.54996 26.4567 7.54996C25.9915 7.54996 25.6144 7.92541 25.6144 8.38855C25.6144 8.8517 25.9915 9.22715 26.4567 9.22715Z\"\n fill=\"white\"\n />\n <path\n d=\"M19.3997 10.6857C19.6365 10.8948 22.0849 13.0018 24.0922 11.5775C24.3997 11.3588 24.7912 10.9918 25.1579 10.3491\"\n stroke=\"white\"\n strokeMiterlimit=\"10\"\n />\n <mask\n id=\"mask0_2639_4522\"\n style={{ maskType: 'alpha' }}\n maskUnits=\"userSpaceOnUse\"\n x=\"0\"\n y=\"6\"\n width=\"41\"\n height=\"42\"\n >\n <circle cx=\"20.5\" cy=\"26.5007\" r=\"20.5\" fill=\"url(#paint2_linear_2639_4522)\" />\n </mask>\n <g mask=\"url(#mask0_2639_4522)\">\n <path\n d=\"M9.136 29.6977C9.7739 21.4962 15.5016 19.4767 22.3332 20.0034C29.1649 20.5302 34.5125 23.4034 33.8746 31.605C33.2367 39.8065 26.8558 50.2271 20.0242 49.7004C13.1926 49.1737 8.4981 37.8973 9.136 29.6977Z\"\n fill=\"url(#paint3_linear_2639_4522)\"\n />\n </g>\n <path\n d=\"M36.5618 26.0657C32.7439 29.8232 30.3604 29.6901 28.8249 28.1422C27.2893 26.5962 27.1843 24.2211 31.0041 20.4636C34.8219 16.7061 41.1187 12.9904 42.6524 14.5383C44.1879 16.0842 40.3796 22.3081 36.5618 26.0657Z\"\n fill=\"url(#paint4_linear_2639_4522)\"\n />\n <path\n d=\"M8.46566 28.1003C10.6544 23.2209 12.9233 22.4831 14.9172 23.3692C16.9111 24.2553 17.8737 26.4308 15.685 31.3102C13.4963 36.1897 8.98706 41.9286 6.99124 41.0425C4.99542 40.1564 6.27695 32.9817 8.46566 28.1003Z\"\n fill=\"url(#paint5_linear_2639_4522)\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_2639_4522\"\n x1=\"8.84665\"\n y1=\"9.84688\"\n x2=\"35.2322\"\n y2=\"8.55542\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#92ADF4\" />\n <stop offset=\"0.35\" stopColor=\"#8EA8F3\" />\n <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n <stop offset=\"1\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_2639_4522\"\n x1=\"22.1662\"\n y1=\"2.08139\"\n x2=\"22.1662\"\n y2=\"16.3727\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#5656DB\" />\n <stop offset=\"1\" stopColor=\"#4949BB\" />\n </linearGradient>\n <linearGradient\n id=\"paint2_linear_2639_4522\"\n x1=\"60\"\n y1=\"6.00067\"\n x2=\"-8\"\n y2=\"72.5007\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"white\" />\n <stop offset=\"0.9997\" stopColor=\"#084D6D\" />\n <stop offset=\"0.9998\" stopColor=\"#084D6D\" />\n <stop offset=\"0.9999\" stopColor=\"#5BC4C0\" />\n </linearGradient>\n <linearGradient\n id=\"paint3_linear_2639_4522\"\n x1=\"33.5429\"\n y1=\"35.7441\"\n x2=\"8.78605\"\n y2=\"33.8177\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#CDD7F2\" />\n <stop offset=\"0.35\" stopColor=\"#AABFFB\" />\n <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n <stop offset=\"1\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint4_linear_2639_4522\"\n x1=\"44.3491\"\n y1=\"12.5582\"\n x2=\"29.5476\"\n y2=\"32.963\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint5_linear_2639_4522\"\n x1=\"6.19079\"\n y1=\"43.529\"\n x2=\"12.5941\"\n y2=\"19.1798\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport const FelixMessageSVG = () => {\n return (\n <svg width=\"56\" height=\"76\" viewBox=\"0 0 56 76\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g clipPath=\"url(#clip0_2661_2386)\">\n <path\n d=\"M44.4374 16.9C44.8132 24.5845 35.9852 27.31 24.9575 27.8453C13.9298 28.3806 4.87638 26.5214 4.5006 18.8398C4.12481 11.1583 12.5683 0.555473 23.596 0.0201521C34.6238 -0.515169 44.0616 9.21558 44.4374 16.8972V16.9Z\"\n fill=\"url(#paint0_linear_2661_2386)\"\n />\n <path\n d=\"M39.7895 15.4754C40.3445 21.3697 33.6498 23.7671 25.189 24.5557C16.7281 25.3443 9.7039 24.2247 9.1489 18.3304C8.5939 12.4361 14.722 3.99764 23.1829 3.20905C31.6437 2.42046 39.2345 9.5811 39.7895 15.4754Z\"\n fill=\"url(#paint1_linear_2661_2386)\"\n />\n <path\n d=\"M17.2281 15.2336C17.9322 15.2336 18.5029 14.6654 18.5029 13.9644C18.5029 13.2634 17.9322 12.6952 17.2281 12.6952C16.5241 12.6952 15.9534 13.2634 15.9534 13.9644C15.9534 14.6654 16.5241 15.2336 17.2281 15.2336Z\"\n fill=\"white\"\n />\n <path\n d=\"M30.9615 13.9644C31.6656 13.9644 32.2363 13.3961 32.2363 12.6952C32.2363 11.9942 31.6656 11.4259 30.9615 11.4259C30.2575 11.4259 29.6868 11.9942 29.6868 12.6952C29.6868 13.3961 30.2575 13.9644 30.9615 13.9644Z\"\n fill=\"white\"\n />\n <path\n d=\"M20.2805 16.1719C20.639 16.4885 24.3447 19.6774 27.3828 17.5217C27.8482 17.1907 28.4407 16.6352 28.9957 15.6624\"\n stroke=\"white\"\n strokeMiterlimit=\"10\"\n />\n <path\n d=\"M4.74638 44.9468C5.71184 32.5337 14.3808 29.4772 24.7206 30.2744C35.0603 31.0716 43.1541 35.4204 42.1886 47.8335C41.2231 60.2466 31.5656 76.0184 21.2258 75.2212C10.8861 74.424 3.78091 57.357 4.74638 44.9468Z\"\n fill=\"url(#paint2_linear_2661_2386)\"\n />\n <path\n d=\"M46.2558 39.4497C40.4775 45.1368 36.87 44.9353 34.5459 42.5926C32.2218 40.2527 32.0629 36.658 37.8441 30.9709C43.6224 25.2838 53.1528 19.6601 55.474 22.0028C57.7981 24.3427 52.0342 33.7626 46.2558 39.4497Z\"\n fill=\"url(#paint3_linear_2661_2386)\"\n />\n <path\n d=\"M3.73177 42.5292C7.04442 35.1441 10.4785 34.0274 13.4963 35.3686C16.5141 36.7098 17.971 40.0023 14.6583 47.3874C11.3457 54.7725 4.52091 63.4586 1.50021 62.1174C-1.52049 60.7762 0.419121 49.9172 3.73177 42.5292Z\"\n fill=\"url(#paint4_linear_2661_2386)\"\n />\n </g>\n <defs>\n <linearGradient\n id=\"paint0_linear_2661_2386\"\n x1=\"4.30835\"\n y1=\"14.9024\"\n x2=\"44.2432\"\n y2=\"12.9477\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#92ADF4\" />\n <stop offset=\"0.35\" stopColor=\"#8EA8F3\" />\n <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n <stop offset=\"1\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_2661_2386\"\n x1=\"24.4678\"\n y1=\"3.1492\"\n x2=\"24.4678\"\n y2=\"24.7794\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#5656DB\" />\n <stop offset=\"1\" stopColor=\"#4949BB\" />\n </linearGradient>\n <linearGradient\n id=\"paint2_linear_2661_2386\"\n x1=\"41.6866\"\n y1=\"54.0981\"\n x2=\"4.21672\"\n y2=\"51.1826\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#CDD7F2\" />\n <stop offset=\"0.35\" stopColor=\"#AABFFB\" />\n <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n <stop offset=\"1\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint3_linear_2661_2386\"\n x1=\"58.042\"\n y1=\"19.006\"\n x2=\"35.6398\"\n y2=\"49.889\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint4_linear_2661_2386\"\n x1=\"0.28873\"\n y1=\"65.8808\"\n x2=\"9.98023\"\n y2=\"29.0278\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n </linearGradient>\n <clipPath id=\"clip0_2661_2386\">\n <rect width=\"56\" height=\"75.25\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nexport const FelixConfused = () => {\n return (\n <svg\n id=\"Layer_2\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 157.85 261.46\"\n >\n <defs>\n <style>\n {\n '.cls-1{fill:url(#New_Gradient_Swatch_copy);}.cls-2{fill:url(#New_Gradient_Swatch);}.cls-3{fill:url(#linear-gradient);}.cls-4{fill:#fff;}.cls-5{fill:url(#linear-gradient-3);}.cls-6{fill:url(#linear-gradient-2);}'\n }\n </style>\n <linearGradient\n id=\"New_Gradient_Swatch\"\n x1={24.04}\n y1={15.7}\n x2={162.36}\n y2={15.7}\n gradientTransform=\"translate(-20.14 37.27) rotate(-2.79)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset={0} stopColor=\"#92adf4\" />\n <stop offset={0.35} stopColor=\"#8ea8f3\" />\n <stop offset={0.72} stopColor=\"#849bf1\" />\n <stop offset={1} stopColor=\"#798df0\" />\n </linearGradient>\n <linearGradient\n id=\"New_Gradient_Swatch_copy\"\n x1={74.39}\n y1={10.94}\n x2={74.39}\n y2={86.1}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset={0} stopColor=\"#5656db\" />\n <stop offset={0.46} stopColor=\"#5151cf\" />\n <stop offset={1} stopColor=\"#4949bb\" />\n </linearGradient>\n <linearGradient\n id=\"linear-gradient\"\n x1={922.54}\n y1={938.23}\n x2={1060.86}\n y2={938.23}\n gradientTransform=\"translate(880.62 1769.09) rotate(-175.57) scale(.94 1.62)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset={0.02} stopColor=\"#cdd7f2\" />\n <stop offset={0.42} stopColor=\"#aabffb\" />\n <stop offset={0.76} stopColor=\"#92adf4\" />\n <stop offset={0.84} stopColor=\"#8ea8f3\" />\n <stop offset={0.93} stopColor=\"#849bf1\" />\n <stop offset={1} stopColor=\"#798df0\" />\n </linearGradient>\n <linearGradient\n id=\"linear-gradient-2\"\n x1={-1748.61}\n y1={932.15}\n x2={-1742.67}\n y2={1059.6}\n gradientTransform=\"translate(7.84 -1050.16) rotate(-32.2) scale(.3 1.05)\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset={0.19} stopColor=\"#92adf4\" />\n <stop offset={0.46} stopColor=\"#88a1f2\" />\n <stop offset={0.78} stopColor=\"#798df0\" />\n </linearGradient>\n <linearGradient\n id=\"linear-gradient-3\"\n x1={1132.98}\n y1={962.86}\n x2={1138.93}\n y2={1090.31}\n gradientTransform=\"translate(246.98 1277.75) rotate(-174.07) scale(.3 1.05)\"\n xlinkHref=\"#linear-gradient-2\"\n />\n </defs>\n <g id=\"Layer_1-2\">\n <path\n className=\"cls-2\"\n d=\"m143.46,58.72c1.3,26.7-29.24,36.17-67.39,38.03-38.15,1.86-69.47-4.6-70.77-31.29S33.21,1.93,71.36.07c38.15-1.86,70.8,31.95,72.1,58.64Z\"\n />\n <path\n className=\"cls-1\"\n d=\"m127.39,53.77c1.92,20.48-21.24,28.81-50.51,31.55-29.27,2.74-53.57-1.15-55.49-21.63-1.92-20.48,19.28-49.8,48.55-52.54,29.27-2.74,55.53,22.14,57.45,42.62Z\"\n />\n <ellipse className=\"cls-4\" cx={51.4} cy={48.52} rx={6.48} ry={4.41} />\n <ellipse\n className=\"cls-4\"\n cx={95.95}\n cy={44.02}\n rx={6.08}\n ry={4.41}\n transform=\"translate(-7.54 23.17) rotate(-13.25)\"\n />\n <path\n className=\"cls-3\"\n d=\"m6.15,156.17c3.34-43.13,33.33-53.75,69.1-50.98,35.77,2.77,63.77,17.88,60.43,61.01-3.34,43.13-36.75,97.93-72.52,95.16S2.81,199.3,6.15,156.17Z\"\n />\n <path\n className=\"cls-6\"\n d=\"m147.63,113.38c14.98,23.78,11.6,35.82,1.93,41.91-9.68,6.09-21.99,3.93-36.97-19.85-14.98-23.78-26.95-60.19-17.27-66.28,9.68-6.09,37.33,20.43,52.31,44.22Z\"\n />\n <path\n className=\"cls-5\"\n d=\"m.78,154.91c2.9-27.96,12.99-35.34,24.36-34.16,11.37,1.18,19.73,10.48,16.82,38.44s-15.97,63.98-27.34,62.8c-11.37-1.18-16.75-39.12-13.85-67.08Z\"\n />\n </g>\n </svg>\n );\n};\n\nexport const FelixStarsSVG = () => {\n return (\n <svg\n width=\"227\"\n height=\"216\"\n viewBox=\"0 0 227 216\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g filter=\"url(#filter0_d_4940_3890)\">\n <path\n d=\"M47.3004 85.449C33.168 87.8309 31.1455 89.7618 28.6502 103.251C26.1549 89.7618 24.1325 87.8309 10 85.449C24.1325 83.0677 26.1549 81.1368 28.6502 67.6465C31.1455 81.1368 33.168 83.0677 47.3004 85.449Z\"\n fill=\"#2D388D\"\n />\n </g>\n <g filter=\"url(#filter1_d_4940_3890)\">\n <path\n d=\"M221.934 108.338C215.832 109.358 214.958 110.186 213.881 115.967C212.803 110.186 211.93 109.358 205.827 108.338C211.93 107.317 212.803 106.49 213.881 100.708C214.958 106.49 215.832 107.317 221.934 108.338Z\"\n fill=\"#2D388D\"\n />\n </g>\n <g clipPath=\"url(#clip0_4940_3890)\">\n <path\n d=\"M167.325 81.9013C168.182 99.5615 148.045 105.825 122.89 107.056C97.7354 108.286 77.0842 104.013 76.227 86.3593C75.3698 68.7057 94.6298 44.3385 119.784 43.1082C144.939 41.8779 166.467 64.241 167.325 81.8946V81.9013Z\"\n fill=\"url(#paint0_linear_4940_3890)\"\n />\n <path\n d=\"M156.729 78.6267C157.995 92.1728 142.724 97.6826 123.424 99.4949C104.125 101.307 88.1021 98.7342 86.8362 85.1881C85.5702 71.6419 99.5487 52.2487 118.848 50.4364C138.148 48.624 155.463 65.0805 156.729 78.6267Z\"\n fill=\"url(#paint1_linear_4940_3890)\"\n />\n <path\n d=\"M105.265 78.0711C106.871 78.0711 108.173 76.7652 108.173 75.1542C108.173 73.5433 106.871 72.2373 105.265 72.2373C103.659 72.2373 102.358 73.5433 102.358 75.1542C102.358 76.7652 103.659 78.0711 105.265 78.0711Z\"\n fill=\"white\"\n />\n <path\n d=\"M136.585 75.1542C138.191 75.1542 139.493 73.8482 139.493 72.2372C139.493 70.6263 138.191 69.3203 136.585 69.3203C134.979 69.3203 133.677 70.6263 133.677 72.2372C133.677 73.8482 134.979 75.1542 136.585 75.1542Z\"\n fill=\"white\"\n />\n <path\n d=\"M76.7875 146.358C78.9898 117.83 98.7641 110.806 122.349 112.638C145.935 114.47 164.397 124.464 162.195 152.992C159.992 181.52 137.963 217.766 114.378 215.934C90.7924 214.102 74.5853 174.885 76.7875 146.358Z\"\n fill=\"url(#paint2_linear_4940_3890)\"\n />\n <path\n d=\"M177.255 119.715C186.176 136.013 183.479 143.824 176.866 147.462C170.259 151.1 162.241 149.189 153.32 132.891C144.399 116.593 137.963 92.087 144.57 88.4425C151.177 84.798 168.333 103.411 177.255 119.708V119.715Z\"\n fill=\"url(#paint3_linear_4940_3890)\"\n />\n <path\n d=\"M73.2467 145.524C75.1588 127.031 81.8118 122.149 89.3087 122.93C96.8057 123.71 102.318 129.862 100.399 148.355C98.4805 166.849 89.8692 190.674 82.3722 189.893C74.8753 189.113 71.3279 164.018 73.2401 145.524H73.2467Z\"\n fill=\"url(#paint4_linear_4940_3890)\"\n />\n <path\n d=\"M123.674 89.0146C125.879 88.8052 127.543 87.3353 127.391 85.7316C127.24 84.1278 125.33 82.9974 123.126 83.2068C120.922 83.4162 119.258 84.8861 119.409 86.4899C119.561 88.0937 121.47 89.224 123.674 89.0146Z\"\n fill=\"white\"\n />\n </g>\n <g filter=\"url(#filter2_d_4940_3890)\">\n <path\n d=\"M196.502 23.9877C184.069 24.8458 183.373 25.5418 182.515 37.9753C181.656 25.5418 180.96 24.8458 168.527 23.9877C180.96 23.1295 181.656 22.4335 182.515 10C183.373 22.4335 184.069 23.1295 196.502 23.9877Z\"\n fill=\"url(#paint5_linear_4940_3890)\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_4940_3890\"\n x=\"0\"\n y=\"57.6465\"\n width=\"57.3004\"\n height=\"55.6045\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"5\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.47451 0 0 0 0 0.552941 0 0 0 0 0.941176 0 0 0 0.32 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_4940_3890\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_4940_3890\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter1_d_4940_3890\"\n x=\"200.827\"\n y=\"95.708\"\n width=\"26.1071\"\n height=\"25.2588\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"2.5\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.47451 0 0 0 0 0.552941 0 0 0 0 0.941176 0 0 0 0.54 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_4940_3890\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_4940_3890\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter2_d_4940_3890\"\n x=\"158.527\"\n y=\"0\"\n width=\"47.9753\"\n height=\"47.9756\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"5\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.572549 0 0 0 0 0.678431 0 0 0 0 0.956863 0 0 0 0.3 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_4940_3890\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_4940_3890\"\n result=\"shape\"\n />\n </filter>\n <linearGradient\n id=\"paint0_linear_4940_3890\"\n x1=\"75.7881\"\n y1=\"77.309\"\n x2=\"166.884\"\n y2=\"72.8835\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#92ADF4\" />\n <stop offset=\"0.35\" stopColor=\"#8EA8F3\" />\n <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n <stop offset=\"1\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_4940_3890\"\n x1=\"121.782\"\n y1=\"50.2975\"\n x2=\"121.782\"\n y2=\"100.011\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#5656DB\" />\n <stop offset=\"0.46\" stopColor=\"#5151CF\" />\n <stop offset=\"1\" stopColor=\"#4949BB\" />\n </linearGradient>\n <linearGradient\n id=\"paint2_linear_4940_3890\"\n x1=\"160.313\"\n y1=\"166.546\"\n x2=\"74.8346\"\n y2=\"159.944\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.02\" stopColor=\"#CDD7F2\" />\n <stop offset=\"0.42\" stopColor=\"#AABFFB\" />\n <stop offset=\"0.76\" stopColor=\"#92ADF4\" />\n <stop offset=\"0.84\" stopColor=\"#8EA8F3\" />\n <stop offset=\"0.93\" stopColor=\"#849BF1\" />\n <stop offset=\"1\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint3_linear_4940_3890\"\n x1=\"138.431\"\n y1=\"80.7395\"\n x2=\"192.431\"\n y2=\"149.516\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint4_linear_4940_3890\"\n x1=\"80.8497\"\n y1=\"199.732\"\n x2=\"75.718\"\n y2=\"112.337\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.19\" stopColor=\"#92ADF4\" />\n <stop offset=\"0.46\" stopColor=\"#88A1F2\" />\n <stop offset=\"0.78\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint5_linear_4940_3890\"\n x1=\"174.461\"\n y1=\"17.6296\"\n x2=\"192.687\"\n y2=\"35.856\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.2756\" stopColor=\"#2D378D\" />\n <stop offset=\"1\" stopColor=\"#4E64D0\" />\n </linearGradient>\n <clipPath id=\"clip0_4940_3890\">\n <rect\n width=\"110.206\"\n height=\"172.938\"\n fill=\"white\"\n transform=\"translate(72.7324 43.0615)\"\n />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nexport const RobotIcon = (props) => {\n return (\n <SvgIcon {...props}>\n <path d=\"M 3.16666 16.625 V 12.6667 C 3.16666 12.2312 3.32169 11.8585 3.63176 11.5484 C 3.94183 11.2384 4.31457 11.0833 4.74999 11.0833 H 14.25 C 14.6854 11.0833 15.0582 11.2384 15.3682 11.5484 C 15.6783 11.8585 15.8333 12.2312 15.8333 12.6667 V 16.625 H 3.16666 Z M 7.12499 10.2917 C 6.02985 10.2917 5.09634 9.90573 4.32447 9.13385 C 3.55259 8.36198 3.16666 7.42847 3.16666 6.33333 C 3.16666 5.23819 3.55259 4.30469 4.32447 3.53281 C 5.09634 2.76094 6.02985 2.375 7.12499 2.375 H 11.875 C 12.9701 2.375 13.9036 2.76094 14.6755 3.53281 C 15.4474 4.30469 15.8333 5.23819 15.8333 6.33333 C 15.8333 7.42847 15.4474 8.36198 14.6755 9.13385 C 13.9036 9.90573 12.9701 10.2917 11.875 10.2917 H 7.12499 Z M 4.74999 15.0417 H 14.25 V 12.6667 H 4.74999 V 15.0417 Z M 7.12499 8.70833 H 11.875 C 12.5347 8.70833 13.0955 8.47743 13.5573 8.01562 C 14.0191 7.55382 14.25 6.99306 14.25 6.33333 C 14.25 5.67361 14.0191 5.11285 13.5573 4.65104 C 13.0955 4.18924 12.5347 3.95833 11.875 3.95833 H 7.12499 C 6.46527 3.95833 5.9045 4.18924 5.4427 4.65104 C 4.98089 5.11285 4.74999 5.67361 4.74999 6.33333 C 4.74999 6.99306 4.98089 7.55382 5.4427 8.01562 C 5.9045 8.47743 6.46527 8.70833 7.12499 8.70833 Z M 7.12499 7.125 C 7.3493 7.125 7.53732 7.04913 7.68905 6.8974 C 7.84079 6.74566 7.91666 6.55764 7.91666 6.33333 C 7.91666 6.10903 7.84079 5.92101 7.68905 5.76927 C 7.53732 5.61753 7.3493 5.54167 7.12499 5.54167 C 6.90068 5.54167 6.71266 5.61753 6.56093 5.76927 C 6.40919 5.92101 6.33332 6.10903 6.33332 6.33333 C 6.33332 6.55764 6.40919 6.74566 6.56093 6.8974 C 6.71266 7.04913 6.90068 7.125 7.12499 7.125 Z M 11.875 7.125 C 12.0993 7.125 12.2873 7.04913 12.4391 6.8974 C 12.5908 6.74566 12.6667 6.55764 12.6667 6.33333 C 12.6667 6.10903 12.5908 5.92101 12.4391 5.76927 C 12.2873 5.61753 12.0993 5.54167 11.875 5.54167 C 11.6507 5.54167 11.4627 5.61753 11.3109 5.76927 C 11.1592 5.92101 11.0833 6.10903 11.0833 6.33333 C 11.0833 6.55764 11.1592 6.74566 11.3109 6.8974 C 11.4627 7.04913 11.6507 7.125 11.875 7.125 Z\" />\n </SvgIcon>\n );\n};\n\nexport const FelixGPTIcon = () => {\n return (\n <svg width=\"50\" height=\"49\" viewBox=\"0 0 50 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g filter=\"url(#filter0_d_18404_9220)\">\n <circle cx=\"25\" cy=\"20\" r=\"20\" fill=\"url(#paint0_linear_18404_9220)\" />\n </g>\n <mask\n id=\"mask0_18404_9220\"\n style={{ maskType: 'alpha' }}\n maskUnits=\"userSpaceOnUse\"\n x=\"5\"\n y=\"0\"\n width=\"40\"\n height=\"40\"\n >\n <circle cx=\"25\" cy=\"20\" r=\"20\" fill=\"url(#paint1_linear_18404_9220)\" />\n </mask>\n <g mask=\"url(#mask0_18404_9220)\">\n <path\n d=\"M40.7577 17.6294C41.04 23.6242 34.4086 25.7505 26.1248 26.1681C17.841 26.5857 11.0402 25.1353 10.758 19.1427C10.4757 13.15 16.8183 4.87846 25.1021 4.46084C33.3859 4.04322 40.4754 11.6345 40.7577 17.6271V17.6294Z\"\n fill=\"url(#paint2_linear_18404_9220)\"\n />\n <path\n d=\"M37.2661 16.5179C37.683 21.1162 32.6541 22.9865 26.2984 23.6017C19.9428 24.2169 14.6664 23.3435 14.2495 18.7452C13.8326 14.1469 18.4359 7.56375 24.7915 6.94855C31.1471 6.33334 36.8492 11.9196 37.2661 16.5179Z\"\n fill=\"url(#paint3_linear_18404_9220)\"\n />\n <path\n d=\"M20.3184 16.3295C20.8473 16.3295 21.276 15.8861 21.276 15.3393C21.276 14.7924 20.8473 14.3491 20.3184 14.3491C19.7896 14.3491 19.3608 14.7924 19.3608 15.3393C19.3608 15.8861 19.7896 16.3295 20.3184 16.3295Z\"\n fill=\"white\"\n />\n <path\n d=\"M30.6346 15.3392C31.1634 15.3392 31.5922 14.8959 31.5922 14.3491C31.5922 13.8022 31.1634 13.3589 30.6346 13.3589C30.1057 13.3589 29.677 13.8022 29.677 14.3491C29.677 14.8959 30.1057 15.3392 30.6346 15.3392Z\"\n fill=\"white\"\n />\n <path\n d=\"M22.6113 17.0615C22.8806 17.3085 25.6643 19.7962 27.9464 18.1145C28.296 17.8563 28.7411 17.423 29.158 16.6641\"\n stroke=\"white\"\n strokeWidth=\"0.625\"\n strokeMiterlimit=\"10\"\n />\n <mask\n id=\"mask1_18404_9220\"\n style={{ maskType: 'alpha' }}\n maskUnits=\"userSpaceOnUse\"\n x=\"0\"\n y=\"11\"\n width=\"48\"\n height=\"49\"\n >\n <ellipse\n cx=\"23.8624\"\n cy=\"35.7349\"\n rx=\"23.3069\"\n ry=\"24.2051\"\n fill=\"url(#paint4_linear_18404_9220)\"\n />\n </mask>\n <g mask=\"url(#mask1_18404_9220)\">\n <path\n d=\"M10.9425 39.5098C11.6677 29.8259 18.1797 27.4415 25.9467 28.0634C33.7137 28.6853 39.7935 32.0779 39.0683 41.7618C38.343 51.4456 31.0885 63.7497 23.3215 63.1278C15.5545 62.5058 10.2172 49.1914 10.9425 39.5098Z\"\n fill=\"url(#paint5_linear_18404_9220)\"\n />\n </g>\n </g>\n <defs>\n <filter\n id=\"filter0_d_18404_9220\"\n x=\"0.555555\"\n y=\"0\"\n width=\"48.8889\"\n height=\"48.8889\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset dy=\"4.44444\" />\n <feGaussianBlur stdDeviation=\"2.22222\" />\n <feComposite in2=\"hardAlpha\" operator=\"out\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.141832 0 0 0 0 0.141832 0 0 0 0 0.141832 0 0 0 0.09 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_18404_9220\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_18404_9220\"\n result=\"shape\"\n />\n </filter>\n <linearGradient\n id=\"paint0_linear_18404_9220\"\n x1=\"63.5366\"\n y1=\"5.27613e-07\"\n x2=\"-2.80488\"\n y2=\"64.878\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#E548FF\" />\n <stop offset=\"0.9997\" stopColor=\"#084D6D\" />\n <stop offset=\"0.9998\" stopColor=\"#084D6D\" />\n <stop offset=\"0.9999\" stopColor=\"#5BC4C0\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_18404_9220\"\n x1=\"63.5366\"\n y1=\"5.27613e-07\"\n x2=\"-2.80488\"\n y2=\"64.878\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#E548FF\" />\n <stop offset=\"0.9997\" stopColor=\"#084D6D\" />\n <stop offset=\"0.9998\" stopColor=\"#084D6D\" />\n <stop offset=\"0.9999\" stopColor=\"#5BC4C0\" />\n </linearGradient>\n <linearGradient\n id=\"paint2_linear_18404_9220\"\n x1=\"10.6136\"\n y1=\"16.0709\"\n x2=\"40.617\"\n y2=\"14.6569\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#92ADF4\" />\n <stop offset=\"0.35\" stopColor=\"#8EA8F3\" />\n <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n <stop offset=\"1\" stopColor=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint3_linear_18404_9220\"\n x1=\"25.7567\"\n y1=\"6.90186\"\n x2=\"25.7567\"\n y2=\"23.7762\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#5656DB\" />\n <stop offset=\"1\" stopColor=\"#4949BB\" />\n </linearGradient>\n <linearGradient\n id=\"paint4_linear_18404_9220\"\n x1=\"68.7708\"\n y1=\"11.5298\"\n x2=\"-11.3945\"\n y2=\"87.0173\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"white\" />\n <stop offset=\"0.9997\" stopColor=\"#084D6D\" />\n <stop offset=\"0.9998\" stopColor=\"#084D6D\" />\n <stop offset=\"0.9999\" stopColor=\"#5BC4C0\" />\n </linearGradient>\n <linearGradient\n id=\"paint5_linear_18404_9220\"\n x1=\"38.6912\"\n y1=\"46.649\"\n x2=\"10.5322\"\n y2=\"44.5393\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stopColor=\"#CDD7F2\" />\n <stop offset=\"0.35\" stopColor=\"#AABFFB\" />\n <stop offset=\"0.72\" stopColor=\"#849BF1\" />\n <stop offset=\"1\" stopColor=\"#798DF0\" />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n","import React from 'react';\nimport { OutlinedInput } from '@mui/material';\nimport { classes } from '../styles';\n\nconst PositionTitleInput = ({\n positionTitle,\n aiStudioFrenchEnabled,\n onChange,\n onBlur\n}: {\n positionTitle: string;\n aiStudioFrenchEnabled: boolean;\n onChange: (value: string) => void;\n onBlur?: (value: string) => void;\n}) => {\n return (\n <OutlinedInput\n id=\"position-title\"\n sx={classes.fieldInput}\n placeholder={aiStudioFrenchEnabled ? 'ex. Designer UX' : 'eg. UX Designer'}\n value={positionTitle}\n onChange={(e) => onChange(e.target.value)}\n onBlur={() => {\n onBlur ? onBlur(positionTitle) : null;\n }}\n />\n );\n};\n\nexport default PositionTitleInput;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { OutlinedInput } from '@mui/material';\nimport { classes } from '../../AIStudioModal/styles';\n\nconst PreferredSkillsInput = ({\n preferredSkills,\n onChange,\n onBlur\n}: {\n preferredSkills: string;\n onChange: Dispatch<SetStateAction<string>>;\n onBlur?: (value: string) => void;\n}) => {\n return (\n <OutlinedInput\n id=\"preferred-skills\"\n sx={classes.fieldInput}\n placeholder=\"eg. 'Adobe Illustrator, Figma, attention to detail'\"\n value={preferredSkills}\n onChange={(e) => onChange(e.target.value)}\n onBlur={() => {\n onBlur ? onBlur(preferredSkills) : null;\n }}\n />\n );\n};\n\nexport default PreferredSkillsInput;\n","import React from 'react';\nimport { styled, InputBase, Select, MenuItem } from '@mui/material';\n\nconst SelectInput = styled(InputBase)(() => ({\n 'label + &': {\n marginTop: '24px'\n },\n '& .MuiInputBase-input': {\n borderRadius: '6px',\n backgroundColor: '#FFFFFF',\n color: '#333333',\n border: '1px solid #DDDDDD',\n fontSize: '18px',\n padding: '11px 20px 8px 20px',\n height: '42px',\n width: '100%',\n fontFamily: 'Source Sans Pro, sans-serif',\n textTransform: 'capitalize',\n '&:focus': {\n borderColor: '#2D388D'\n }\n },\n '& .MuiInputBase-input:focus': {\n backgroundColor: '#ffffff',\n borderRadius: '6px'\n },\n '& .MuiSvgIcon-root': {\n color: '#AAAAAA',\n marginRight: '10px',\n transition: 'all 0.16s ease-in-out'\n }\n}));\n\nconst menuItemStyle = {\n fontFamily: 'Source Sans Pro, sans-serif',\n fontSize: '18px',\n padding: '8px 20px',\n color: '#333333',\n textTransform: 'capitalize'\n};\n\nconst StyledDropdown = ({\n id,\n value,\n onChange,\n options\n}: {\n id: string;\n value: string;\n onChange: (value: string) => void;\n options: string[];\n}) => {\n return (\n <Select\n id={id}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n input={<SelectInput />}\n >\n {options.map((option) => (\n <MenuItem sx={menuItemStyle} value={option} key={option}>\n {option}\n </MenuItem>\n ))}\n </Select>\n );\n};\n\nexport default StyledDropdown;\n","import React from 'react';\nimport { FormControlLabel, Switch } from '@mui/material';\nimport { IQuestion } from '../../AIStudioQuestions/AIStudioQuestions';\nimport { classes } from '../styles';\n\nconst QuestionSwitch = ({\n item,\n index,\n type,\n label,\n onChange\n}: {\n item: IQuestion;\n index: number;\n type: 'enabled' | 'required' | 'rateable' | 'confidential';\n label: string;\n onChange: (index: number, type: string) => void;\n}) => {\n return (\n <FormControlLabel\n sx={\n !item[type as keyof typeof item]\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n control={\n <Switch\n sx={item[type as keyof typeof item] ? classes.aiSwitchActive : classes.switch}\n checked={item[type as keyof typeof item] as boolean}\n onChange={() => onChange(index, type)}\n />\n }\n label={label}\n labelPlacement=\"end\"\n />\n );\n};\n\nexport default QuestionSwitch;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, Button, Checkbox, CircularProgress, IconButton } from '@mui/material';\nimport WarningIcon from '@mui/icons-material/Warning';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport CodeIcon from '@mui/icons-material/Code';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport LibraryAddCheckIcon from '@mui/icons-material/LibraryAddCheck';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport { classes } from './styles';\nimport { arrayQuestion } from './Utility/questionStringToArray';\n\nconst SelectableCopyableQuestions = ({\n questions,\n setQuestions,\n maxHeight,\n deleteQuestion\n}: {\n questions: arrayQuestion[];\n setQuestions: Dispatch<SetStateAction<arrayQuestion[]>>;\n maxHeight?: string;\n deleteQuestion?: (index: number) => void;\n}) => {\n const handleCopyQuestion = (index: number) => {\n const newQuestions = [...questions];\n newQuestions[index].copied = true;\n setQuestions(newQuestions);\n setTimeout(() => {\n const newQuestions = [...questions];\n newQuestions[index].copied = false;\n setQuestions(newQuestions);\n }, 3000);\n };\n\n const handleSelectQuestion = (index: number) => {\n const newQuestions = [...questions];\n newQuestions[index].selected = !newQuestions[index].selected;\n setQuestions(newQuestions);\n };\n\n const renderQuestionStatus = (item: arrayQuestion, index: number) => {\n switch (item.status) {\n case 'loading':\n return <CircularProgress size={18} color=\"inherit\" />;\n case 'error':\n return <WarningIcon color=\"inherit\" />;\n case 'sent':\n return <CheckCircleIcon sx={{ color: '#8CCF95' }} />;\n default:\n return (\n <Checkbox\n sx={classes.checkbox}\n checked={item.selected}\n onChange={() => handleSelectQuestion(index)}\n />\n );\n }\n };\n\n return (\n <Box sx={{ ...classes.questionsContainer, ...(maxHeight && { maxHeight }) }}>\n {questions &&\n questions.map((item, index) => (\n <Box sx={{ ...classes.question, justifyContent: 'space-around' }} key={item.id}>\n <Box sx={classes.checkboxContainer}>{renderQuestionStatus(item, index)}</Box>\n <Box sx={{ maxWidth: '700px' }}>{item.text}</Box>\n {deleteQuestion ? (\n <Box>\n <CopyToClipboard text={item.text} onCopy={() => handleCopyQuestion(index)}>\n <IconButton sx={{ color: '#2D388D' }}>\n {item.copied ? <LibraryAddCheckIcon /> : <ContentCopyIcon />}\n </IconButton>\n </CopyToClipboard>\n <IconButton sx={{ color: '#D6827D' }} onClick={() => deleteQuestion(index)}>\n {item.status === 'deleting' ? <CircularProgress size={24} /> : <DeleteIcon />}\n </IconButton>\n </Box>\n ) : (\n <CopyToClipboard text={item.text} onCopy={() => handleCopyQuestion(index)}>\n <Button\n className=\"copy-question-button\"\n sx={classes.copyButton}\n endIcon={<CodeIcon />}\n >\n {item.copied ? 'Copied!' : 'Copy'}\n </Button>\n </CopyToClipboard>\n )}\n </Box>\n ))}\n </Box>\n );\n};\n\nexport default SelectableCopyableQuestions;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from './styles';\n\nconst StaticQuestionsPreview = ({ questions }: { questions: string[] }) => {\n return (\n <Box sx={classes.questionsContainer}>\n {questions &&\n questions.map((item, index) => (\n <Box sx={classes.question} key={index}>\n <Box sx={{ maxWidth: '700px' }}>{item}</Box>\n </Box>\n ))}\n </Box>\n );\n};\n\nexport default StaticQuestionsPreview;\n","import React from 'react';\nimport { Box, Button } from '@mui/material';\nimport CachedIcon from '@mui/icons-material/Cached';\nimport HomeIcon from '@mui/icons-material/Home';\nimport { FelixConfused } from '../Graphics/FelixSVG';\nimport { classes } from '../styles';\n\nconst ErrorScreen = ({\n regenerateCallback,\n setGenerationError,\n backToHome\n}: {\n regenerateCallback: () => void;\n setGenerationError?: (value: boolean) => void;\n backToHome: () => void;\n}) => {\n const onRegenerate = () => {\n setGenerationError && setGenerationError(false);\n regenerateCallback();\n };\n\n const onBackToHome = () => {\n setGenerationError && setGenerationError(false);\n backToHome();\n };\n\n return (\n <Box sx={classes.errorContainer}>\n <Box sx={classes.felixErrorContainer}>\n <FelixConfused />\n </Box>\n <Box sx={classes.errorMessageContainer}>\n <h1>Oops! Something went wrong.</h1>\n <p>You can try regenerating your request, or refreshing the page.</p>\n <p>\n If the problem persists please contact our Client Success team{' '}\n <a href=\"mailto:support@scouttalent.com.au\">support@scouttalent.com.au</a>\n </p>\n </Box>\n <Box sx={classes.errorButtons}>\n <Button sx={classes.pill} endIcon={<HomeIcon />} onClick={onBackToHome}>\n Back to home\n </Button>\n <Button sx={classes.pill} endIcon={<CachedIcon />} onClick={onRegenerate}>\n Regenerate\n </Button>\n </Box>\n </Box>\n );\n};\n\nexport default ErrorScreen;\n","import React, { useState, useEffect, useRef, useMemo } from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from '../styles';\nimport InfoIcon from '@mui/icons-material/Info';\nimport Lottie from 'react-lottie';\nimport felixLoading from '../Graphics/felix-loading.json';\nimport { generateLoadingText } from '../../AIStudioModal/config';\n\nconst LoadingResponse = ({\n generationType,\n showSocketMessage,\n customMessages\n}: {\n generationType: string;\n showSocketMessage?: boolean;\n customMessages?: string[];\n}) => {\n const [loadingTextIndex, setLoadingTextIndex] = useState(0);\n const changeTextIndex = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const loadingAnimation = {\n loop: true,\n autoplay: true,\n animationData: felixLoading,\n rendererSettings: {\n preserveAspectRatio: 'xMidYMid slice'\n }\n };\n\n const loadingText = useMemo(() => {\n if (generationType === 'custom' && customMessages) {\n return customMessages;\n }\n return generateLoadingText(generationType);\n }, [customMessages, generationType]);\n\n useEffect(() => {\n changeTextIndex.current = setTimeout(() => {\n if (loadingTextIndex < loadingText.length - 1) {\n setLoadingTextIndex((prev) => prev + 1);\n } else {\n setLoadingTextIndex(0);\n }\n }, 5000);\n return () => {\n if (changeTextIndex.current) {\n clearTimeout(changeTextIndex.current);\n }\n };\n }, [loadingText.length, loadingTextIndex]);\n\n return (\n <Box sx={classes.loadingContainer}>\n <Lottie options={loadingAnimation} height={500} width={220} />\n <Box sx={classes.loadingMessage}>\n {loadingText[loadingTextIndex as keyof typeof loadingText]}\n </Box>\n <Box sx={{ ...classes.socketsMessage, ...(showSocketMessage && { opacity: '1px' }) }}>\n <InfoIcon sx={classes.socketsInfoIcon} />\n <span>\n You can close this at anytime and Felix will let you know when your content has been\n generated.\n </span>\n </Box>\n </Box>\n );\n};\n\nexport default LoadingResponse;\n","export const LIST_ITEMS_REGEX = /\\b([0-9]+\\. )|([0-9]+\\) )/g;\nexport const questionTypes = [\n 'general',\n 'technical',\n 'behavioural',\n 'motivational',\n 'case',\n 'situational',\n 'brainteasers'\n];\n\nexport const aiToneTypes = [\n 'neutral',\n 'professional',\n 'casual',\n 'creative',\n 'excited',\n 'urgent',\n 'persuasive'\n];\n","import React, { useState, useEffect } from 'react';\nimport useStyles from './useStyles';\nimport { ICalendlyEvent, ICalendlyScoutProps, IJobPosition } from '../../../../types';\nimport { withScoutTheme } from '../../ThemeContext/ThemeContext';\nimport { Dialog, Button, Box } from '@material-ui/core';\nimport { useTheme } from '@material-ui/core';\nimport ChevronRightRoundedIcon from '@material-ui/icons/ChevronRightRounded';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\nimport PeopleAltRoundedIcon from '@material-ui/icons/PeopleAltRounded';\nimport ReactLoading from 'react-loading';\nimport axios from 'axios';\nimport Api from '../API';\nimport EventType from '../Modal/components/Steps/Step2/EventType';\n\ninterface IProps {\n calendlyAccount: ICalendlyScoutProps,\n job: IJobPosition,\n applicationId: number,\n candidateName: string,\n apiKey: string,\n}\n\nfunction AddToCalendlyEventModal({ job, applicationId, candidateName, calendlyAccount, apiKey }: IProps) {\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [events, setEvents] = useState<ICalendlyEvent[]>([]);\n const [selectedEvent, setSelectedEvent] = useState<ICalendlyEvent[]>([]);\n \n const classes = useStyles();\n const theme = useTheme();\n\n const handleSubmit = async () => {\n await Api.addToEvent(job.id, {\n application_id: applicationId,\n event_type_url: selectedEvent.scheduling_url,\n });\n location.reload();\n }\n\n useEffect(() => {\n async function getData() {\n setIsLoading(true);\n try {\n const events = await axios.get(`https://api.calendly.com/event_types?user=${calendlyAccount.user}`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${calendlyAccount.access_token}`\n }\n });\n setEvents(events.data.collection.filter((event: ICalendlyEvent) => event.active))\n } catch (e) {\n console.log(e)\n } finally {\n setIsLoading(false)\n }\n }\n if (!events?.length) getData()\n else setIsLoading(false)\n }, [])\n\n return (\n <>\n <div className={classes.root}>\n {!isLoading\n ? <>\n <h4>Add to event {job.title} - {candidateName}</h4>\n <div className={classes.recContainer}>\n <div className={classes.recImage}>{ calendlyAccount.user_name.split(' ').map(name => name[0]) }</div>\n <div className={classes.recDetails}>\n <h4>{ calendlyAccount.user_name }</h4>\n <a id=\"calendly-scheduling-url\" target=\"_blank\" rel=\"noreferrer\" href={calendlyAccount.scheduling_url}>{ calendlyAccount.scheduling_url }</a>\n </div>\n </div>\n <div className={`${classes.meetingContainer} ${events.length > 3 ? classes.shadow : ''}`}>\n { events.length\n ? events.map(event =>\n <EventType\n key={event.uri}\n event={event}\n setSelectedEvent={setSelectedEvent}\n selected={selectedEvent?.uri === event.uri}\n />\n )\n : <span className={classes.noEvents}>No available events</span>\n }\n </div>\n </>\n : <div className={classes.loading}>\n <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={45} height={45} />\n </div>\n }\n <Box className={classes.buttonContainer}>\n <Button\n id=\"back-button\"\n disableElevation\n variant=\"outlined\"\n color=\"secondary\"\n onClick={() => {window.history.back()}}\n startIcon={<ChevronLeftIcon />}\n >\n </Button>\n <Button\n id=\"next-button\"\n disableElevation\n variant=\"contained\"\n color=\"secondary\"\n onClick={handleSubmit}\n endIcon={<ChevronRightRoundedIcon />}\n disabled={!selectedEvent?.uri}\n >\n Book event\n </Button>\n </Box>\n </div>\n </>\n )\n}\n\nexport default withScoutTheme(AddToCalendlyEventModal)\n","import React, { useEffect, useState } from 'react';\nimport { withScoutTheme } from '../../ThemeContext/ThemeContext';\nimport { Button, CircularProgress } from '@material-ui/core';\nimport useStyles from './useStyles';\nimport {\n ICalendlyEvent,\n ICandidate,\n IJobPosition,\n IStatus,\n ITemplate,\n ICalendlyScoutProps\n} from '../types';\nimport { withStyles } from '@material-ui/core/styles';\nimport Step1 from './components/Steps/Step1/Step1';\nimport Step2 from './components/Steps/Step2/Step2';\nimport Step3 from './components/Steps/Step3/Step3';\nimport Step4 from './components/Steps/Step4/Step4';\nimport CompleteModal from './components/CompleteModal';\nimport Api from '../API';\nimport ChevronRightRoundedIcon from '@material-ui/icons/ChevronRightRounded';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\n\ninterface IProps {\n calendlyAccount: ICalendlyScoutProps;\n job: any;\n apiKey: string;\n candidateList: ICandidate[];\n application: any;\n}\n\nfunction Modal({ calendlyAccount, job, apiKey, candidateList, application }: IProps) {\n const [isOpen, setIsOpen] = useState<boolean>(true);\n const [isSending, setIsSending] = useState<boolean>(false);\n const [step, setStep] = useState<number>(1);\n const [nextDisabled, setNextDisabled] = useState<boolean>(false);\n const [jobPositions, setJobPositions] = useState<IJobPosition[]>([]);\n const [selectedJobPosition, setSelectedJobPosition] = useState<IJobPosition | null>(job);\n const [candidates, setCandidates] = useState<ICandidate[]>([]);\n const [selectedCandidates, setSelectedCandidates] = useState<ICandidate[]>([application]);\n const [statuses, setStatuses] = useState<IStatus[]>([]);\n const [selectedStatuses, setSelectedStatuses] = useState<IStatus[]>([]);\n const [events, setEvents] = useState<ICalendlyEvent[]>([]);\n const [selectedEvent, setSelectedEvent] = useState<ICalendlyEvent | null>();\n const [templates, setTemplates] = useState<ITemplate[]>([]);\n const [selectedTemplate, setSelectedTemplate] = useState<ITemplate | null>(null);\n const [defaultJob, setDefaultJob] = useState<boolean>(false);\n const [editedSubject, setEditedSubject] = useState<string>('');\n const [editedBody, setEditedBody] = useState<string>('');\n const TOTAL_STEPS = 5;\n\n const classes = useStyles();\n\n const ColorButton = withStyles(() => ({\n root: {\n '&#cancel-button': {\n color: '#E37D7A',\n textDecoration: 'underline',\n backgroundColor: '#ffffff',\n '&:hover': {\n color: '#d74742',\n backgroundColor: '#ffffff',\n },\n },\n },\n }))(Button);\n\n const closeModal = () => {\n if (selectedJobPosition && application) {\n location.href = `/admin/jobs/${selectedJobPosition.id}/applications/${application.id}`;\n } else if (selectedJobPosition) {\n location.href = `/admin/jobs/${selectedJobPosition.id}/applications`;\n } else {\n location.href = `/admin/calendar/events`;\n }\n };\n\n useEffect(() => {\n if (candidateList) {\n setSelectedCandidates([...candidateList]);\n }\n localStorage.setItem('userKey', apiKey);\n localStorage.setItem('editedSubject', editedSubject);\n localStorage.setItem('editedBody', editedBody);\n }, [isOpen]);\n\n useEffect(() => {\n if (\n (step === 1 && !selectedCandidates.length) ||\n (step === 2 && !selectedEvent) ||\n (step === 3 && !selectedTemplate) ||\n (step === 4 && !selectedCandidates.length && !selectedEvent && !selectedTemplate)\n )\n setNextDisabled(true);\n else setNextDisabled(false);\n }, [step, selectedCandidates, selectedEvent, selectedTemplate]);\n\n function handleStep(increment: boolean) {\n setStep(increment ? Math.min(step + 1, TOTAL_STEPS) : Math.max(step - 1, 1));\n }\n\n async function handleSubmit() {\n setIsSending(true);\n try {\n await Api.sendInvitations(selectedJobPosition.id, {\n subject: editedSubject || selectedTemplate.subject,\n body: editedBody || selectedTemplate.body,\n application_ids: selectedCandidates.map((application) => application.id),\n event_type_url: selectedEvent.scheduling_url\n });\n } catch (err) {\n console.log(err);\n } finally {\n setIsSending(false);\n setStep(TOTAL_STEPS);\n }\n }\n\n return (\n <>\n {step === TOTAL_STEPS ? (\n <CompleteModal closeModal={closeModal} />\n ) : (\n <>\n <div className={classes.root}>\n {step === 1 && (\n <Step1\n apiKey={calendlyAccount.access_token}\n candidateList={candidateList}\n defaultJob={defaultJob}\n jobPositions={jobPositions}\n setJobPositions={setJobPositions}\n selectedJobPosition={selectedJobPosition}\n setSelectedJobPosition={setSelectedJobPosition}\n statuses={statuses}\n setStatuses={setStatuses}\n selectedStatuses={selectedStatuses}\n setSelectedStatuses={setSelectedStatuses}\n candidates={candidates}\n setCandidates={setCandidates}\n selectedCandidates={selectedCandidates}\n setSelectedCandidates={setSelectedCandidates}\n />\n )}\n {step === 2 && (\n <Step2\n calendlyAccount={calendlyAccount}\n events={events}\n setEvents={setEvents}\n selectedEvent={selectedEvent}\n setSelectedEvent={setSelectedEvent}\n />\n )}\n {step === 3 && (\n <Step3\n templates={templates}\n setTemplates={setTemplates}\n selectedTemplate={selectedTemplate}\n setSelectedTemplate={setSelectedTemplate}\n editedSubject={editedSubject}\n setEditedSubject={setEditedSubject}\n editedBody={editedBody}\n setEditedBody={setEditedBody}\n />\n )}\n {step === 4 && (\n <Step4\n setStep={setStep}\n calendlyAccount={calendlyAccount}\n selectedEvent={selectedEvent}\n selectedCandidates={selectedCandidates}\n selectedTemplate={selectedTemplate}\n selectedJobPosition={selectedJobPosition}\n />\n )}\n <div className={`${classes.buttonContainer} ${step === 3 ? 'move-z' : ''}`}>\n <ColorButton\n id=\"cancel-button\"\n disableElevation\n variant=\"text\"\n onClick={() => {\n window.location.pathname === '/admin/calendar/events'\n ? setIsOpen(false)\n : window.history.back();\n }}\n >\n Cancel\n </ColorButton>\n {step !== 1 && (\n <Button\n disableElevation\n variant=\"outlined\"\n color=\"secondary\"\n onClick={() => handleStep(false)}\n >\n <KeyboardArrowLeftIcon />\n </Button>\n )}\n <Button\n id=\"next-button\"\n disabled={nextDisabled}\n disableElevation\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => {\n step === TOTAL_STEPS - 1 ? handleSubmit() : handleStep(true);\n }}\n endIcon={\n isSending ? (\n <CircularProgress size={14} color=\"inherit\" />\n ) : (\n <ChevronRightRoundedIcon />\n )\n }\n >\n {step === TOTAL_STEPS - 1 ? 'Send invites' : 'Next'}\n </Button>\n </div>\n </div>\n <div\n className={classes.progressBar}\n style={{ width: `${step * (100 / (TOTAL_STEPS - 1))}%` }}\n />\n </>\n )}\n </>\n );\n}\n\nexport default withScoutTheme(Modal);\n","import React from 'react';\nimport { withScoutTheme } from '../../../../ThemeContext/ThemeContext';\nimport { Button } from '@material-ui/core';\nimport useStyles from './useStyles';\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\n\ninterface IProps {\n closeModal: () => void,\n}\n\nfunction CompleteModal({ closeModal }: IProps) {\n\n const classes = useStyles();\n\n return (\n <div className={classes.root} id=\"complete-modal\">\n <CheckCircleIcon color=\"secondary\" />\n <h4>Complete</h4>\n <div className={classes.text}>Your Calendly invite has been sent</div>\n <Button\n id=\"complete-modal-button\"\n disableElevation\n color=\"secondary\"\n variant=\"contained\"\n onClick={closeModal}\n >\n Back\n </Button>\n </div>\n )\n}\n\nexport default withScoutTheme(CompleteModal);\n","import React, { useState, useEffect, useRef } from 'react';\nimport {\n TextField,\n InputAdornment,\n Select,\n MenuItem,\n Chip,\n IconButton,\n useTheme,\n CircularProgress\n} from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../../../../../ThemeContext/ThemeContext';\nimport Api from '../../../../API';\nimport ReactLoading from 'react-loading';\nimport HighlightOffIcon from '@material-ui/icons/HighlightOff';\nimport SearchOutlinedIcon from '@material-ui/icons/SearchOutlined';\nimport WorkIcon from '@material-ui/icons/Work';\nimport { IStatus, ICandidate, IJobPosition } from '../../../../types';\n\ninterface IProps {\n apiKey: string;\n defaultJob: boolean;\n jobPositions: IJobPosition[];\n setJobPositions: (jobs: IJobPosition[]) => void;\n selectedJobPosition: IJobPosition;\n setSelectedJobPosition: (job: IJobPosition) => void;\n statuses: IStatus[];\n setStatuses: (statuses: IStatus[]) => void;\n selectedStatuses: IStatus[];\n setSelectedStatuses: (statuses: IStatus[] | ((statuses: IStatus[]) => IStatus[])) => void;\n candidates: ICandidate[];\n setCandidates: (candidates: ICandidate[]) => void;\n selectedCandidates: ICandidate[];\n candidateList: ICandidate[];\n setSelectedCandidates: (candidate: ICandidate[]) => void;\n}\n\nfunction Step1({\n apiKey,\n defaultJob,\n jobPositions,\n setJobPositions,\n selectedJobPosition,\n setSelectedJobPosition,\n statuses,\n setStatuses,\n selectedStatuses,\n setSelectedStatuses,\n candidates,\n candidateList,\n setCandidates,\n selectedCandidates,\n setSelectedCandidates\n}: IProps) {\n const [isLoading, setIsLoading] = useState(true);\n const [statusIsLoading, setStatusIsLoading] = useState(false);\n const initialRender = useRef(true);\n\n const classes = useStyles();\n const theme = useTheme();\n useEffect(() => {\n async function getData() {\n setIsLoading(true);\n try {\n const { job_positions } = await Api.getEventOptions();\n setJobPositions(job_positions);\n } catch (e) {\n throw new Error(e);\n } finally {\n setIsLoading(false);\n }\n }\n if (!selectedJobPosition) getData();\n else setIsLoading(false);\n }, [selectedJobPosition, setJobPositions]);\n\n async function refreshApplications() {\n setStatuses([]);\n setCandidates([]);\n setSelectedCandidates([]);\n setSelectedStatuses([]);\n const applications: ICandidate[] = await Api.getJobApplications(\n selectedJobPosition.id,\n apiKey\n ).then((data) => replaceNullStatuses(data.applications));\n const statuses = applications.map((application) => application.status);\n const uniqueStatuses = statuses\n .filter(\n (status: IStatus, index: number) =>\n statuses.findIndex((inner) => inner.id === status.id) === index\n )\n .sort((a, b) => a.position - b.position);\n const candidateList = replaceNullStatuses(applications);\n const selectedList = candidateList.filter((candidate) =>\n selectedCandidates.some((selected) => candidate.id == selected?.id)\n );\n setCandidates(candidateList);\n setSelectedCandidates(selectedList);\n setStatuses(uniqueStatuses);\n }\n\n useEffect(() => {\n setStatusIsLoading(true);\n if (initialRender.current) {\n initialRender.current = false;\n if (selectedJobPosition && (!candidates.length || !statuses.length)) {\n refreshApplications().then(() => setStatusIsLoading(false));\n }\n } else {\n if (selectedJobPosition) {\n refreshApplications().then(() => setStatusIsLoading(false));\n }\n }\n }, [selectedJobPosition]);\n\n useEffect(() => {\n setSelectedStatuses((selectedStatuses: IStatus[]) =>\n selectedStatuses.filter((status) =>\n selectedCandidates.map((app) => app.status.id).includes(status.id)\n )\n );\n }, [selectedCandidates, setSelectedStatuses]);\n\n function handleStatusRemove(id: number) {\n setSelectedStatuses(selectedStatuses.filter((selected) => selected.id !== id));\n setSelectedCandidates(selectedCandidates.filter((candidate) => candidate.status.id !== id));\n }\n\n function handleStatusAdd(status: IStatus) {\n const newApplicants = candidates\n .filter((candidate) => candidate.status.id === status.id)\n .filter(\n (candidate) => !selectedCandidates.map((selected) => selected.id).includes(candidate.id)\n );\n setSelectedStatuses([...selectedStatuses, status]);\n setSelectedCandidates([...selectedCandidates, ...newApplicants]);\n }\n\n function loaderOrEmpty(loading: boolean) {\n if (loading) {\n return (\n <div className={classes.loading}>\n <CircularProgress size={20} color=\"inherit\" />\n </div>\n );\n } else {\n return <div className={classes.noData}>No Candidates Found</div>;\n }\n }\n\n function replaceNullStatuses(applications: ICandidate[]): ICandidate[] {\n return applications.map((application) =>\n application.status\n ? application\n : {\n ...application,\n status: {\n id: 1,\n name: 'New',\n position: 1\n }\n }\n );\n }\n\n return !isLoading ? (\n <>\n <h4>Select candidates</h4>\n {\n <div className={classes.searchContainer}>\n <Autocomplete\n classes={{\n root: classes.autocompleteField,\n inputRoot: classes.autoCompleteInput,\n endAdornment: classes.endAdornment\n }}\n style={{ marginBottom: 14 }}\n options={jobPositions}\n getOptionLabel={(option) => `${option.reference} - ${option.title}`}\n value={selectedJobPosition}\n filterSelectedOptions={true}\n disableClearable={true}\n onChange={(_, newValue: IJobPosition) => setSelectedJobPosition(newValue)}\n renderTags={() => null}\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder=\"Select Job\"\n InputProps={{\n ...params.InputProps,\n disableUnderline: true,\n startAdornment: (\n <InputAdornment position=\"start\">\n <WorkIcon />\n </InputAdornment>\n )\n }}\n />\n )}\n />\n </div>\n }\n <div className={classes.searchContainer}>\n <Autocomplete\n id=\"candidate-autocomplete\"\n classes={{\n root: classes.autocompleteField,\n inputRoot: classes.autoCompleteInput,\n endAdornment: classes.endAdornment\n }}\n disabled={!selectedJobPosition}\n multiple\n options={candidates}\n noOptionsText={\n statusIsLoading ? (\n <div className={classes.loading}>\n <CircularProgress size={20} color=\"inherit\" />\n </div>\n ) : (\n 'No Candidates Found for Selected Job'\n )\n }\n getOptionLabel={(option) => option.name}\n value={selectedCandidates}\n filterSelectedOptions={true}\n onChange={(_, newValue: ICandidate[]) => setSelectedCandidates(newValue)}\n renderTags={() => null}\n disableClearable={true}\n renderInput={(params) => (\n <TextField\n {...params}\n placeholder=\"Search Candidates\"\n InputProps={{\n ...params.InputProps,\n disableUnderline: true,\n startAdornment: (\n <InputAdornment position=\"start\">\n <SearchOutlinedIcon />\n </InputAdornment>\n )\n }}\n />\n )}\n />\n <Select\n id=\"candidate-filter\"\n disabled={!selectedJobPosition || !candidates.length}\n className={classes.inputBase}\n displayEmpty={true}\n renderValue={() => 'Filter candidates'}\n variant=\"outlined\"\n value=\"\"\n MenuProps={{\n classes: { paper: classes.dialogPaper },\n PaperProps: {\n id: 'candidate-filter-list'\n }\n }}\n >\n {!statuses.length ? (\n loaderOrEmpty(statusIsLoading)\n ) : statuses.length === selectedStatuses?.length ? (\n <MenuItem value=\"\" disabled>\n No Remaining Statuses\n </MenuItem>\n ) : (\n statuses\n .filter((status) =>\n candidates.map((candidate) => candidate.status.id).includes(status.id)\n )\n .filter(\n (status) => !selectedStatuses.map((selected) => selected.id).includes(status.id)\n )\n .map((status) => (\n <MenuItem key={status.id} onClick={() => handleStatusAdd(status)}>\n {status.name}\n </MenuItem>\n ))\n )}\n </Select>\n </div>\n {!!selectedStatuses.length && (\n <div className={classes.chipContainer} id=\"candidate-filter-chips\">\n {selectedStatuses.map((status) => (\n <Chip\n key={status.id}\n className={classes.chipItem}\n label={status.name}\n onDelete={() => handleStatusRemove(status.id)}\n variant=\"outlined\"\n />\n ))}\n </div>\n )}\n <div\n className={`${classes.table} ${selectedCandidates.length > 6 ? classes.shadow : ''}`}\n id=\"candidate-list\"\n >\n <div className={classes.row}>\n <div className={`${classes.tableHeader} ${classes.tableLg}`}>Name</div>\n <div className={`${classes.tableHeader} ${classes.tableLg}`}>Email</div>\n <div className={`${classes.tableHeader} ${classes.tableMd}`}>Status</div>\n <div />\n </div>\n {!selectedCandidates.length ? (\n <div className={classes.row}>\n <span className={classes.noApplicants}>No applicants selected</span>\n </div>\n ) : (\n selectedCandidates?.map((candidate) => (\n <div key={candidate?.id} className={classes.row}>\n <div className={classes.tableLg}>{candidate?.name}</div>\n <div className={classes.tableLg}>{candidate?.email}</div>\n <div className={classes.tableMd}>{candidate?.status && candidate?.status?.name}</div>\n <IconButton\n onClick={() =>\n setSelectedCandidates(\n selectedCandidates.filter((selected) => selected.id !== candidate?.id)\n )\n }\n >\n <HighlightOffIcon color=\"error\" />\n </IconButton>\n </div>\n ))\n )}\n </div>\n </>\n ) : (\n <div className={classes.loading}>\n <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={45} height={45} />\n </div>\n );\n}\n\nexport default withScoutTheme(Step1);\n","import React, { memo, useState, useCallback } from 'react';\nimport { Button } from '@material-ui/core';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../../../../../ThemeContext/ThemeContext';\nimport { ICalendlyEvent } from '../../../../types';\nimport FileCopyOutlinedIcon from '@material-ui/icons/FileCopyOutlined';\n\ninterface IProps {\n event: ICalendlyEvent,\n setSelectedEvent: (event: ICalendlyEvent) => void,\n selected: boolean,\n}\n\nfunction EventType({ event, setSelectedEvent, selected }: IProps) {\n const [buttonText, setButtonText] = useState('Copy link');\n \n const classes = useStyles();\n\n const handleClick = useCallback(() => {\n setSelectedEvent(event)\n }, [event])\n\n const handleCopy = useCallback(() => {\n setButtonText('Copied!');\n setTimeout(() => setButtonText('Copy link'), 1800);\n navigator.clipboard.writeText(event.scheduling_url)\n }, [event])\n\n const handleEdit = useCallback(() => {\n window.open('https://calendly.com/event_types/user/me')\n }, [])\n\n return (\n <div className={classes.container} onClick={handleClick} id=\"calendly-event-item\">\n <div className={classes.content} style={{ borderColor: selected ? event.color : '' }} >\n <div className={classes.name}>{ event.name }</div>\n <div className={classes.details}>{`${event.duration} mins, ${event.kind === 'solo' ? 'One-on-One' : 'Group'}`}</div>\n <a\n className={classes.booking}\n target=\"_blank\"\n rel=\"noreferrer\"\n href={event.scheduling_url}\n >\n View booking page\n </a>\n </div>\n <div className={classes.footer}>\n <Button\n className={classes.copyButton}\n variant=\"text\"\n color=\"secondary\"\n startIcon={<FileCopyOutlinedIcon fontSize=\"small\" />}\n onClick={handleCopy}\n >\n { buttonText }\n </Button>\n <Button\n className={classes.editButton}\n variant=\"text\"\n color=\"secondary\"\n onClick={handleEdit}\n >\n Edit\n </Button>\n </div>\n </div>\n )\n}\n\nexport default withScoutTheme(memo(EventType))\n","import React, { useState, useEffect } from 'react';\nimport useStyles from './useStyles';\nimport { ICalendlyEvent, ICalendlyScoutProps } from '../../../../types';\nimport { withScoutTheme } from '../../../../../ThemeContext/ThemeContext';\nimport { useTheme } from '@material-ui/core';\nimport ReactLoading from 'react-loading';\nimport axios from 'axios';\nimport EventType from './EventType';\n\ninterface IProps {\n calendlyAccount: ICalendlyScoutProps,\n events: ICalendlyEvent[],\n setEvents: (event: ICalendlyEvent[]) => void,\n selectedEvent: ICalendlyEvent,\n setSelectedEvent: (event: ICalendlyEvent | null) => void,\n}\n\nfunction Step2({ calendlyAccount, events, setEvents, selectedEvent, setSelectedEvent }: IProps) {\n const [isLoading, setIsLoading] = useState<boolean>(true);\n \n const classes = useStyles();\n const theme = useTheme();\n\n useEffect(() => {\n async function getData() {\n setIsLoading(true);\n try {\n const events = await axios.get(`https://api.calendly.com/event_types?user=${calendlyAccount.user}`, {\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${calendlyAccount.access_token}`\n }\n });\n setEvents(events.data.collection.filter((event: ICalendlyEvent) => event.active))\n } catch (e) {\n console.log(e)\n } finally {\n setIsLoading(false)\n }\n }\n if (!events?.length) getData()\n else setIsLoading(false)\n }, [])\n\n return (\n !isLoading\n ? <>\n <h4 id=\"step-2-header\">Meeting details</h4>\n <div className={classes.recContainer}>\n <div className={classes.recImage}>{ calendlyAccount.user_name.split(' ').map(name => name[0]) }</div>\n <div className={classes.recDetails}>\n <h4>{ calendlyAccount.user_name }</h4>\n <a id=\"calendly-scheduling-url\" target=\"_blank\" rel=\"noreferrer\" href={calendlyAccount.scheduling_url}>{ calendlyAccount.scheduling_url }</a>\n </div>\n </div>\n <div className={`${classes.meetingContainer} ${events.length > 3 ? classes.shadow : ''}`}>\n { events.length\n ? events.map(event =>\n <EventType\n key={event.uri}\n event={event}\n setSelectedEvent={setSelectedEvent}\n selected={selectedEvent?.uri === event.uri}\n />\n )\n : <span className={classes.noEvents}>No available events</span>\n }\n </div>\n </>\n : <div className={classes.loading}>\n <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={45} height={45} />\n </div>\n )\n}\n\nexport default withScoutTheme(Step2)\n","import React, { useState, useEffect } from 'react';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../../../../../ThemeContext/ThemeContext';\nimport { ITemplate } from '../../../../types';\nimport { useTheme } from '@material-ui/core';\nimport TextField from '@mui/material/TextField';\nimport draftToHtml from 'draftjs-to-html';\nimport htmlToDraft from 'html-to-draftjs';\nimport { EditorState, convertToRaw, ContentState } from 'draft-js';\nimport { Editor } from 'react-draft-wysiwyg';\nimport ReactLoading from 'react-loading';\nimport Api from '../../../../API';\n\ninterface IProps {\n templates: ITemplate[],\n setTemplates: (template: ITemplate[]) => void,\n selectedTemplate: ITemplate,\n setSelectedTemplate: (template: ITemplate) => void,\n editedSubject: string,\n setEditedSubject: (subject: string) => void,\n editedBody: string,\n setEditedBody: (body: string) => void,\n}\n\nfunction Step3({ templates, setTemplates, selectedTemplate, setSelectedTemplate, editedSubject, setEditedSubject, editedBody, setEditedBody }: IProps) {\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [editorReadyState, setEditorReadyState] = useState(null);\n\n const classes = useStyles();\n const theme = useTheme();\n\n const handleDraftValue = (e) => {\n const contentBlock = htmlToDraft(e);\n if (contentBlock) {\n const contentState = ContentState.createFromBlockArray(contentBlock.contentBlocks);\n const editorState = EditorState.createWithContent(contentState);\n setEditorReadyState(editorState);\n }\n }\n\n const handleTemplateChange = (template: ITemplate) => {\n setSelectedTemplate(template);\n \n setEditedBody(template.body);\n setEditedSubject(template.subject);\n\n handleDraftValue(template.body);\n }\n\n useEffect(() => {\n async function getData() {\n setIsLoading(true);\n try {\n const { email_templates } = await Api.getCalendlyEmailTemplates();\n setTemplates(email_templates);\n setSelectedTemplate(email_templates[0]);\n setEditedSubject(email_templates[0].subject);\n setEditedBody(email_templates[0].body);\n handleDraftValue(editedBody || email_templates[0].body);\n } catch(e) {\n console.log(e)\n } finally {\n setIsLoading(false);\n }\n }\n if (!templates.length) {\n getData();\n } else {\n !selectedTemplate && setSelectedTemplate(templates[0]);\n handleDraftValue(editedBody);\n setIsLoading(false)\n }\n }, [])\n\n return (\n !isLoading\n ? <div className={classes.container}>\n <div>\n <h4 id=\"step-3-header\">Select template</h4>\n { !templates.length\n ? <div className={classes.noTemplates}>\n Could not find any templates with the <span>{`{CALENDLY_URL}`}</span> placeholder in the body.\n Please go to your entity settings and create a template with this placeholder in order for it to appear here.\n </div>\n : <div className={classes.templateContainer} id=\"template-container\">\n { templates.map(template =>\n <div\n key={template.id}\n className={selectedTemplate?.id === template.id ? classes.selected : ''}\n onClick={() => handleTemplateChange(template)}\n >\n { template.name }\n </div>\n )}\n </div>\n \n }\n </div>\n <div className={classes.templateView}>\n { selectedTemplate\n ? <>\n <TextField\n label='Subject'\n variant=\"outlined\"\n size=\"small\"\n value={editedSubject}\n onChange={e => setEditedSubject(e.target.value)}\n />\n <label className={classes.formLabelWrapper}>Body</label>\n <Editor\n editorState={editorReadyState}\n wrapperClassName={classes.textEditor}\n toolbarClassName={classes.textEditorToolbar}\n editorClassName={classes.textEditorBody}\n onEditorStateChange={(e) => { \n const value = convertToRaw(e.getCurrentContent());\n if (value.blocks && value.blocks.length === 1 && value.blocks[0].text === '') {\n setEditedBody('');\n } else {\n setEditedBody(draftToHtml((value)));\n }\n setEditorReadyState(e);\n }}\n toolbar={{\n options: ['inline', 'list', 'textAlign'],\n inline: {\n inDropdown: false,\n options: ['bold', 'italic', 'underline'],\n },\n }}\n />\n </>\n : <div className={classes.noPreview}>No preview available</div>\n }\n </div>\n </div>\n : <div className={classes.loading}>\n <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={45} height={45} />\n </div>\n )\n}\n\nexport default withScoutTheme(Step3)\n","import React, { ReactElement } from 'react';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../../../../../ThemeContext/ThemeContext';\nimport { SvgIconProps } from '@material-ui/core';\n\ninterface IProps {\n icon: ReactElement<SvgIconProps>,\n title: string,\n description: string,\n step: number,\n setStep: (step: number) => void,\n}\n\nfunction Step2({ icon, title, description, step, setStep }: IProps) {\n \n const classes = useStyles();\n\n return (\n <div className={classes.overviewItem}>\n { icon }\n <div className={classes.overviewTitle}>{ title }</div>\n <div className={classes.overviewDescription}>{ description }</div>\n <div\n className={classes.overviewLink}\n onClick={() => setStep(step)}\n >\n Edit selection\n </div>\n </div>\n )\n}\n\nexport default withScoutTheme(Step2)\n","import React from 'react';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../../../../../ThemeContext/ThemeContext';\nimport { ICalendlyEvent, ICalendlyScoutProps, ICandidate, IJobPosition, ITemplate } from '../../../../types';\nimport OverviewItem from './OverviewItem';\nimport TodayRoundedIcon from '@material-ui/icons/TodayRounded';\nimport PeopleAltRoundedIcon from '@material-ui/icons/PeopleAltRounded';\nimport EmailRoundedIcon from '@material-ui/icons/EmailRounded';\n\ninterface IProps {\n setStep: (step: number) => void,\n calendlyAccount: ICalendlyScoutProps,\n selectedEvent: ICalendlyEvent,\n selectedCandidates: ICandidate[],\n selectedTemplate: ITemplate,\n selectedJobPosition: IJobPosition,\n}\n\nfunction Step2({ setStep, calendlyAccount, selectedEvent, selectedCandidates, selectedTemplate, selectedJobPosition }: IProps) {\n \n const classes = useStyles();\n\n return (\n <>\n <h4 id=\"step-4-header\">Overview</h4>\n <div className={classes.recContainer}>\n <div className={classes.recImage}>{ calendlyAccount.user_name.split(' ').map(name => name[0]) }</div>\n <div className={classes.recDetails}>\n <h4>{ calendlyAccount.user_name }</h4>\n <a target=\"_blank\" rel=\"noreferrer\" href={calendlyAccount.scheduling_url}>{ calendlyAccount.scheduling_url }</a>\n </div>\n </div>\n <div className={classes.overviewContainer}>\n { selectedCandidates.length &&\n <OverviewItem\n icon={<PeopleAltRoundedIcon />}\n title={`${selectedCandidates.length} Candidate${selectedCandidates.length ? 's' : ''}`}\n description={selectedJobPosition.title}\n step={1}\n setStep={setStep}\n />\n }\n { selectedEvent &&\n <OverviewItem\n icon={<TodayRoundedIcon />}\n title={selectedEvent.name}\n description={`${selectedEvent.duration} mins, ${selectedEvent.kind === 'solo' ? 'One-on-One' : 'Group'}`}\n step={2}\n setStep={setStep}\n />\n }\n { selectedTemplate &&\n <OverviewItem\n icon={<EmailRoundedIcon />}\n title=\"Template\"\n description={selectedTemplate.name}\n step={3}\n setStep={setStep}\n />\n }\n </div>\n </>\n )\n}\n\nexport default withScoutTheme(Step2)\n","import React from 'react'\nimport { Button, Modal, Box } from '@material-ui/core'\nimport ErrorIcon from '@mui/icons-material/Error';\nimport { withScoutTheme } from '../../ThemeContext/ThemeContext';\nimport useStyles from './useStyles'\n\nfunction BadAPIModal({invalidAPIKey, hasAPIKey}: {invalidAPIKey: boolean, hasAPIKey: boolean}) {\n\n const classes = useStyles()\n const BASE_URL = document.location.origin\n\n return (\n <Modal\n open={invalidAPIKey}\n aria-labelledby=\"no api modal\"\n aria-describedby=\"this modal appears when the API key is invalid or missing\"\n >\n <Box className={classes.badAPIModalInner}>\n <ErrorIcon \n sx={{\n fontSize: 70,\n color: 'rgb(208, 119, 114)',\n filter: 'drop-shadow(2px 2px 1px rgb(0 0 0 / 0.2))'\n }} \n />\n <h1>Error</h1>\n <p>\n {hasAPIKey\n ? \"The Calendly API token attached to your account is invalid.\"\n : \"You need an API token to access Calendly.\"\n }\n </p>\n <p>To find your token, go to</p>\n <a href=\"https://calendly.com/integrations/api_webhooks\" target=\"_blank\" rel=\"noopener noreferrer\">\n https://calendly.com/integrations/api_webhooks\n </a>\n <Box \n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n marginTop: '30px',\n width: '65%'\n }}\n >\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n onClick={() => {window.location.href = `${BASE_URL}/admin/`}}\n >\n Back to home\n </Button>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => {window.location.href = `${BASE_URL}/admin/settings/`}}\n >\n {hasAPIKey\n ? \"Edit API token\"\n : \"I have a token\"\n }\n </Button>\n </Box>\n </Box>\n </Modal>\n )\n}\n\nexport default withScoutTheme(BadAPIModal);","import React, { useState, useRef, useEffect, useCallback, useMemo } from 'react';\nimport {\n Button,\n useTheme,\n Box,\n MenuItem,\n FormControl,\n Select,\n Popover,\n Modal,\n Typography,\n} from '@material-ui/core';\nimport queryString from 'query-string';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../../ThemeContext/ThemeContext';\nimport EventItem from './components/EventItem';\nimport BadAPIModal from './BadAPIModal';\nimport ReactLoading from 'react-loading';\nimport { ICalendlyScoutProps, ICalendlyEventListItem } from '../types';\nimport moment from 'moment';\nimport DayPicker, { DateUtils } from 'react-day-picker';\nimport { TYPES, FILTERS } from './constants';\nimport SortIcon from '@material-ui/icons/Sort';\nimport OpenInBrowserIcon from '@material-ui/icons/OpenInBrowser';\nimport AddIcon from '@material-ui/icons/Add';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\nimport ArrowForwardIosIcon from '@material-ui/icons/ArrowForwardIos';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport axios from 'axios';\n\ninterface IProps {\n calendlyAccount: ICalendlyScoutProps,\n apiKey: string,\n}\n\ninterface IDateRange {\n min: Date | null,\n max: Date | null,\n}\n\ninterface IEventApiParams {\n min: string,\n max: string,\n page: number,\n}\n\nfunction ScheduledEvents ({ calendlyAccount, apiKey }: IProps) {\n const [isLoading, setIsLoading] = useState(true);\n const [isNextPage, setIsNextPage] = useState(false);\n const [events, setEvents] = useState<ICalendlyEventListItem[]>([]);\n const [selectedType, setSelectedType] = useState<string>(TYPES[0]);\n const [pages, setPages] = useState<string[]>([null]);\n const [refOffset, setRefOffset] = useState<number>(0.5);\n const [refWidth, setRefWidth] = useState<number>(72);\n const [firstTabSwitch, setFirstTabSwitch] = useState<boolean>(false);\n const [savedDateRange, setSavedDateRange] = useState<IDateRange>({ min: new Date(moment().subtract(1, 'week').format()), max: new Date() })\n const [isDateSelectOpen, setIsDateSelectOpen] = useState(false);\n const [enteredTo, setEnteredTo] = useState(null);\n const [activeFilter, setActiveFilter] = useState<string>(null);\n const [isFilterOpen, setIsFilterOpen] = useState(false);\n const [filterStatus, setFilterStatus] = React.useState('active');\n const [invalidAPIKey, setinvalidAPIKey] = useState(false);\n const [apiParams, setApiParams] = useState<IEventApiParams>({\n min: moment().format(),\n max: null,\n page: 0\n });\n\n const headerRefs = useRef([]);\n const filterRefs = useRef([]);\n const dateSelectAnchor = useRef(null);\n\n const classes = useStyles();\n const theme = useTheme();\n\n // Fetch events\n const headers = useMemo(() => ({\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${calendlyAccount.access_token}`\n }), [calendlyAccount.access_token])\n\n useEffect(() => {\n getEvents() \n }, [filterStatus])\n\n const getEvents = useCallback(async () => {\n setIsLoading(true);\n setEvents([])\n const inviteeParams = {\n count: 100,\n sort: 'created_at:asc',\n status: filterStatus\n }\n const eventParams = {\n ...(apiParams.max && { max_start_time: apiParams.max }),\n ...(apiParams.min && { min_start_time: apiParams.min }),\n user: calendlyAccount.user,\n count: 10,\n sort: 'start_time:asc',\n status: filterStatus\n }\n try {\n const { data } = await axios.get(pages[apiParams.page]\n ? pages[apiParams.page]\n : `https://api.calendly.com/scheduled_events?${queryString.stringify(eventParams)}`, { headers });\n const invitees = await Promise.all(data.collection.map((event: ICalendlyEventListItem) =>\n axios.get(`${event.uri}/invitees?${queryString.stringify(inviteeParams)}`, { headers })\n .then(invitee => ({\n ...event,\n invitees: invitee.data.collection\n }))\n )\n )\n setEvents(invitees);\n setIsNextPage(!!data.pagination.next_page);\n apiParams.page + 1 >= pages.length && setPages([...pages, data.pagination.next_page])\n } catch (err) {\n console.log(err)\n err.response.status === 401 && setinvalidAPIKey(true)\n } finally {\n setIsLoading(false)\n }\n }, [apiParams, pages, filterStatus])\n\n useEffect(() => {\n getEvents()\n }, [apiParams])\n\n // Handle calendly data when User has switched back to the tab\n const onFocus = () => getEvents();\n\n useEffect(() => {\n if (!calendlyAccount.access_token) setinvalidAPIKey(true)\n window.addEventListener(\"focus\", onFocus);\n onFocus();\n return () => {\n window.removeEventListener(\"focus\", onFocus);\n };\n }, []);\n\n // Handle categories\n const handleSelectedType = useCallback((type: string) => {\n const range = (() => {\n switch (type) {\n case 'Upcoming': return { min: moment().format(), max: null };\n case 'Past': return { min: null, max: moment().format() };\n case 'Date Range': return { min: moment(savedDateRange.min).format(), max: moment(savedDateRange.max).format() };\n }\n })();\n setApiParams(params => ({\n ...params,\n page: 0,\n min: range.min,\n max: range.max,\n }))\n setPages([])\n setSelectedType(type)\n }, [selectedType])\n\n useEffect(() => {\n const index = TYPES.indexOf(selectedType);\n if (!firstTabSwitch) return;\n if (index !== -1) {\n setRefOffset(headerRefs.current[index].offsetLeft + 0.5);\n setRefWidth(headerRefs.current[index].getBoundingClientRect().width);\n }\n }, [headerRefs, selectedType])\n\n useEffect(() => {\n setFirstTabSwitch(true);\n handleSelectedType(selectedType)\n }, [selectedType])\n\n\n // Pagination\n const handlePageUp = useCallback(() => {\n setApiParams(params => ({\n ...params,\n page: apiParams.page + 1\n }))\n }, [apiParams])\n\n const handlePageDown = useCallback(() => {\n setApiParams(params => ({\n ...params,\n page: apiParams.page - 1\n }))\n }, [apiParams])\n\n // Date selection\n const selectedDays = [savedDateRange.min, { from: savedDateRange.min, to: enteredTo }];\n const disabledDays = { before: new Date() };\n const modifiers = { start: savedDateRange.min, end: enteredTo };\n\n function isSelectingFirstDay(from: Date, to: Date, day: Date) {\n const isBeforeFirstDay = from && DateUtils.isDayBefore(day, from);\n const isRangeSelected = from && to;\n return !from || isBeforeFirstDay || isRangeSelected;\n }\n\n function handleDayClick(day: Date) {\n if (savedDateRange.min && savedDateRange.max && day >= savedDateRange.min && day <= savedDateRange.max) return\n if (isSelectingFirstDay(savedDateRange.min, savedDateRange.max, day)) {\n setSavedDateRange({\n min: day,\n max: null\n })\n setEnteredTo(null)\n } else {\n setSavedDateRange(params => ({\n ...params,\n max: day\n }))\n setEnteredTo(day)\n }\n }\n\n function handleDayMouseEnter(day: Date) {\n if (!isSelectingFirstDay(savedDateRange.min, savedDateRange.max, day)) {\n setEnteredTo(day)\n }\n }\n\n return (\n <div className={classes.root}>\n <BadAPIModal invalidAPIKey={invalidAPIKey} hasAPIKey={!!calendlyAccount.access_token}/>\n <div className={classes.header}>\n <h4>My Calendly</h4>\n <Button\n disableElevation\n color=\"secondary\"\n startIcon={<AddIcon />}\n onClick={() => { location.href = \"/admin/calendly\" }}\n >\n Create\n </Button>\n </div>\n <div className={classes.actions}>\n <div className={classes.type}>\n {TYPES.map((type: string, i: number) =>\n type === 'Date Range'\n ? <>\n <span\n ref={el => headerRefs.current[i] = el}\n onClick={() => setSelectedType(type)}\n className={selectedType === type ? classes.activeType : ''}\n >\n {type}\n </span>\n <div\n className={`${classes.dateSelect} ${selectedType === 'Date Range' ? 'visible' : ''} ${isDateSelectOpen ? 'active' : ''}`}\n ref={dateSelectAnchor}\n onClick={() => setIsDateSelectOpen(true)}\n >\n <span>\n { `${moment(savedDateRange.min).format('ll')} \\u2014 `}\n <em>{ `${moment(savedDateRange.max).format('ll')}` }</em>\n </span>\n </div>\n <Popover\n classes={{ paper: classes.datePopover }}\n open={isDateSelectOpen}\n onClose={() => setIsDateSelectOpen(false)}\n anchorEl={dateSelectAnchor.current}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"left\"\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"left\"\n }}\n >\n <DayPicker\n numberOfMonths={2}\n fromMonth={new Date(apiParams.min)}\n selectedDays={selectedDays}\n disabledDays={disabledDays}\n modifiers={modifiers}\n onDayClick={handleDayClick}\n onDayMouseEnter={handleDayMouseEnter}\n />\n <Button\n style={{ marginTop: 10 }}\n disableElevation\n color=\"secondary\"\n onClick={() => {\n setIsDateSelectOpen(false)\n setApiParams(params => ({\n ...params,\n min: moment(savedDateRange.min).format(),\n max: moment(savedDateRange.max).format()\n }))\n }}\n >\n Apply\n </Button>\n </Popover>\n </>\n : <span\n ref={el => headerRefs.current[i] = el}\n onClick={() => setSelectedType(type)}\n className={selectedType === type ? classes.activeType : ''}\n >\n {type}\n </span>\n )}\n <div\n className={classes.typeUnderline}\n style={{\n left: `${refOffset}px`,\n width: `${refWidth}px`\n }}\n />\n </div>\n <div className={classes.moreActions}>\n <Button\n disableElevation\n variant=\"text\"\n startIcon={<SortIcon />}\n onClick={() => setIsFilterOpen(filter => !filter)}\n >\n Filter\n </Button>\n </div>\n </div>\n { isFilterOpen &&\n <div className={classes.filters}>\n <div\n key={FILTERS[0].key}\n ref={el => filterRefs.current[0] = el}\n onClick={() => setActiveFilter(FILTERS[0].key)}\n >\n <span>{ FILTERS[0].name }</span>\n <div>\n {filterStatus}\n {activeFilter === FILTERS[0].key\n ? <ArrowDropUpIcon />\n : <ArrowDropDownIcon />\n }\n </div>\n </div>\n <Popover\n classes={{ paper: classes.datePopover }}\n open={!!activeFilter}\n onClose={() => setActiveFilter(null)}\n anchorEl={filterRefs.current[FILTERS.findIndex(filter => filter.key === activeFilter)]}\n anchorOrigin={{\n vertical: \"bottom\",\n horizontal: \"left\"\n }}\n transformOrigin={{\n vertical: \"top\",\n horizontal: \"left\"\n }}\n >\n {activeFilter === 'status' &&\n <Box style={{ \n width: '250px',\n height: '100px' \n }}>\n <div style={{ paddingBottom: '1rem' }}>Status</div>\n <FormControl variant=\"outlined\" className={classes.filterWrapper} fullWidth>\n <Select\n value={filterStatus}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => setFilterStatus(e.target.value)}\n >\n <MenuItem value={'active'}>Active</MenuItem>\n <MenuItem value={'canceled'}>Canceled</MenuItem>\n </Select>\n </FormControl>\n </Box>\n }\n </Popover>\n </div>\n }\n <div className={classes.eventContainer}>\n { isLoading\n ? <div className={classes.loading}>\n <CircularProgress sx={{color: theme.palette.primary.main}} />\n </div>\n : <>\n { events.length\n ? <div className={classes.eventHeader}>\n { moment(events[0].start_time).format('dddd, MMMM Do YYYY') }\n </div>\n : <div className={classes.noEvents}>No events to display</div>\n }\n { events.map((event, i) =>\n <React.Fragment key={event.uri}>\n <EventItem event={event} />\n { events[i + 1] && moment(events[i + 1].start_time).format('DD/MM/YYYY') !== moment(event.start_time).format('DD/MM/YYYY') && i !== 0 &&\n <div className={classes.eventHeader}>{ moment(events[i+1].start_time).format('dddd, MMMM Do YYYY') }</div>\n }\n </React.Fragment>\n )}\n </>\n }\n </div>\n { !isLoading &&\n <div className={classes.eventPagination}>\n {apiParams.page != 0 && \n <Button\n color=\"secondary\"\n variant=\"contained\"\n disableElevation\n onClick={handlePageDown}\n >\n <ArrowBackIosIcon fontSize=\"medium\"/>\n </Button>\n }\n {isNextPage &&\n <Button\n color=\"secondary\"\n disableElevation\n onClick={handlePageUp}\n >\n <ArrowForwardIosIcon fontSize=\"medium\"/>\n </Button>\n }\n </div>\n }\n </div>\n )\n}\n\nexport default withScoutTheme(ScheduledEvents);\n","import React, { useEffect, useState } from 'react';\nimport { Button, Box } from '@material-ui/core';\nimport useStyles from './useStyles';\nimport { ICalendlyEventListItem, ICalendlyEventInvitee } from '../../../types';\nimport { withScoutTheme } from '../../../../ThemeContext/ThemeContext';\nimport moment from 'moment';\nimport axios from 'axios';\n\nimport EventIcon from '@material-ui/icons/Event';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\n\ninterface IProps {\n event: ICalendlyEventListItem,\n}\n\nfunction EventItem ({ event }: IProps) {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const classes = useStyles();\n\n function handleReschedule() {\n window.open(event.invitees[0].reschedule_url, '_blank').focus();\n }\n\n function handlEdit() {\n window.open('https://calendly.com/app/scheduled_events/user/me')\n }\n\n function handleCancel() {\n event.invitees[0].status !== 'canceled' && window.open(event.invitees[0].cancel_url, '_blank').focus();\n }\n\n return (\n <div className={classes.container}>\n <div className={classes.detailsTop}>\n <div className={classes.date}>\n <div className={classes.dateDot} />\n { `${moment(event.start_time).format('h:mma')} - ${moment(event.end_time).format('h:mma')}` }\n </div>\n <div className={classes.details}>\n <h4>\n { event.invitees.length === 0 && 'No Invitees' }\n { event.invitees.length === 1 && event.invitees[0].name }\n { event.invitees.length > 1 && `${event.invitees.length} of ${event.invitees_counter.limit} Invitees` }\n </h4>\n <div>\n <span>Event Type</span>\n <span>{ event.name }</span>\n </div>\n </div>\n <div className={classes.detailsButton} onClick={() => setIsExpanded(expanded => !expanded)}>\n { isExpanded ? <ArrowDropUpIcon fontSize=\"small\" /> : <ArrowDropDownIcon fontSize=\"small\" /> }\n Details\n </div>\n </div>\n { isExpanded && \n <div className={classes.detailsBottom}>\n <div>\n <Button\n disableElevation\n color=\"secondary\"\n variant=\"outlined\"\n onClick={handleReschedule}\n startIcon={<EventIcon />}\n >\n Reschedule\n </Button>\n <Button\n disableElevation\n className={classes.buttonRedLight}\n onClick={handleCancel}\n startIcon={<DeleteIcon />}\n >\n Cancel\n </Button>\n <div className={classes.divider} />\n <Button\n disableElevation\n className={classes.buttonOutline}\n onClick={handlEdit}\n >\n Edit event type\n </Button>\n <Button\n disableElevation\n className={classes.buttonOutline}\n onClick={handlEdit}\n >\n Filter by event type\n </Button>\n <Button\n disableElevation\n className={classes.buttonOutline}\n onClick={handlEdit}\n >\n Schedule invitee again\n </Button>\n </div>\n {event.invitees_counter.limit > 1 \n ? <div>\n <div className={classes.expandDetailItem}>\n <div>Location</div>\n <span>{event.location ? event.location.location : 'Custom'}</span>\n </div>\n <h3>Invitees <span>({event.invitees_counter.limit - event.invitees_counter.active} spots remaining)</span></h3>\n {event.invitees.map((evt, i) => \n <Box key={i} style={{ padding: '12px'}}>\n <div className={classes.expandDetailItem}>\n <div>Invitee Name</div>\n <span>{evt.name ? evt.name : 'No name'}</span>\n </div>\n <div className={classes.expandDetailItem}>\n <div>Email</div>\n <span>{evt.email ? evt.email : 'No email'}</span>\n </div>\n <div className={classes.expandDetailItem}>\n <div>Invitee Time Zone</div>\n <span>{evt.timezone ? evt.timezone : 'No timezone'}</span>\n </div>\n </Box>\n )}\n <div className={classes.expandDetailItem}>\n <div>Created at</div>\n {event.created_at &&< span>{moment(event.created_at).format('DD/MM/YY')}</span>}\n </div>\n </div>\n : <div>\n <div className={classes.expandDetailItem}>\n <div>Email</div>\n <span>{event.invitees[0].email}</span>\n </div>\n <div className={classes.expandDetailItem}>\n <div>Location</div>\n <span>{event.location ? event.location.location : 'Custom'}</span>\n </div>\n <div className={classes.expandDetailItem}>\n <div>Invitee Time Zone</div>\n <span>{event.invitees[0].timezone}</span>\n </div>\n <div className={classes.expandDetailItem}>\n <div>Created at</div>\n {event.created_at &&< span>{moment(event.created_at).format('DD/MM/YY')}</span>}\n </div>\n </div>\n }\n </div>\n }\n </div>\n\n\n )\n}\n\nexport default withScoutTheme(EventItem);\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport WorkIcon from '@material-ui/icons/Work';\nimport VisibilityIcon from '@material-ui/icons/Visibility';\nimport InsertDriveFileIcon from '@material-ui/icons/InsertDriveFile';\nimport ApplicationsAndViews from '../NewUI/Job/Widgets/ApplicationsAndViews'\nimport { classes } from './styles';\n\nexport default function CareersPortalReport({ jobsCount, applicationsCount, pageViews }: { jobsCount: number; applicationsCount: number, pageViews: number }) {\n return (\n <Box sx={classes.subWidget}>\n <Box sx={classes.widgetBlockContainer}>\n <Box sx={classes.widgetBlock}>\n <Box sx={classes.widgetBlockIcon}>\n <InsertDriveFileIcon />\n </Box>\n <Box sx={classes.widgetBlockText}>\n <Box sx={classes.blockCount}>{applicationsCount}</Box>\n <Box sx={classes.blockTitle}>Applications last 30 days</Box>\n </Box>\n </Box>\n <Box sx={classes.widgetBlock}>\n <Box sx={classes.widgetBlockIcon}>\n <VisibilityIcon />\n </Box>\n <Box sx={classes.widgetBlockText}>\n <Box sx={classes.blockCount}>{pageViews}</Box>\n <Box sx={classes.blockTitle}>Page views last 30 days</Box>\n </Box>\n </Box>\n <Box sx={classes.widgetBlock}>\n <Box sx={classes.widgetBlockIcon}>\n <InsertDriveFileIcon />\n </Box>\n <Box sx={classes.widgetBlockText}>\n <Box sx={classes.blockCount}>{jobsCount}</Box>\n <Box sx={classes.blockTitle}>Current published jobs</Box>\n </Box>\n </Box>\n </Box>\n </Box>\n );\n}\n","import React from 'react';\nimport useStyles from './useStyles';\nimport { withScoutTheme } from '../ThemeContext/ThemeContext';\n\ninterface IProps {\n portal: {\n social_preview_title: string,\n social_preview_description: string,\n social_preview_image_url: string,\n }\n}\n\nfunction CareersPortalSocialPreview({ portal }: IProps) {\n const classes = useStyles();\n\n return (\n <div className={classes.root}>\n <div className=\"modal fade\" id=\"careers-portal-social-preview\" tabIndex=\"-1\" aria-hidden=\"true\" aria-labelledby=\"careersPortalSocialModalLabel\">\n <div className=\"modal-dialog modal-xl\">\n <div className=\"modal-content\">\n <div className=\"modal-header\">\n <h2 className=\"mt-0\">Careers Portal Social Preview</h2>\n <button type=\"button\" className=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n <span aria-hidden=\"true\">×</span>\n </button>\n </div>\n <div className=\"modal-body\">\n <img src={portal.social_preview_image_url} />\n <h3>{portal.social_preview_title}</h3>\n <p>{portal.social_preview_description}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport default withScoutTheme(CareersPortalSocialPreview);\n","import React, { Dispatch } from 'react';\nimport { Box } from '@mui/material';\nimport EngageSearchBar from './EngageSearchBar';\nimport { callPaginatedAPI } from '../../NewUI/Components/Utilities/callAPI';\nimport { EngageAction, EngageState } from '../reducer';\nimport { classes } from '../styles';\nimport { useQuery } from '@tanstack/react-query';\nimport EngageSearchTableRows from './EngageSearchTableRows';\nimport TLPMatchModal from './Modals/TLPMatchModal/TLPMatchModal';\nimport GenericTable from '../../NewUI/Components/GenericTable/GenericTable';\nimport ColumnSettings from '../../NewUI/Components/GenericTable/Dropdowns/ColumnSettings';\nimport SearchFilters from './SearchFilters';\nimport Filters from '../../NewUI/Components/GenericTable/Dropdowns/Filters';\nimport { CandidateAPIReturn } from '../types';\nimport EngageTableActionComponents from './EngageTableActionComponents';\nimport ItemActionsDrawer from '../../NewUI/Components/GenericTable/ItemActionsDrawer';\nimport { actionDrawerModals, engageSearchActionsList, headerStyle } from '../config';\nimport ActionDrawerModals from './Modals/ActionDrawer/ActionDrawerModals';\nimport ExportCsvButton from '../../NewUI/Components/GenericTable/ExportCsvButton';\nimport TotalSelectedIndicator from '../../NewUI/Components/GenericTable/TotalSelectedIndicator';\nimport AddCurrentSearchButton from './Modals/AddCurrentSearch';\nimport { getPreferences } from '../../NewUI/Components/GenericTable/utilities';\nimport { GenericTableAction } from '../../NewUI/Components/GenericTable/genericTableReducer';\n\nconst USER_PREFERENCE_SOURCE = 'engage-search';\n\nconst EngageAISearch = ({\n engageState,\n dispatch\n}: {\n engageState: EngageState;\n dispatch: Dispatch<EngageAction>;\n}) => {\n const { isFetched: fetchedPreferences } = useQuery({\n queryKey: ['engageSearchPreferences'],\n queryFn: () => getPreferences(USER_PREFERENCE_SOURCE, dispatch as Dispatch<GenericTableAction>),\n onError: () =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting user preference data`,\n state: 'error'\n }\n }),\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n staleTime: 3.6e6 // 1 hour\n });\n\n const { data: candidates, isLoading: isLoadingCandidates } = useQuery({\n queryKey: [\n 'candidates',\n engageState.booleanQuery,\n engageState.searchSettings,\n engageState.searchFilters\n ],\n queryFn: () =>\n callPaginatedAPI(\n `/api/v4/searches`,\n {\n query: engageState.booleanQuery,\n ...engageState.searchSettings,\n ...engageState.searchFilters\n },\n 'POST'\n ) as Promise<CandidateAPIReturn>,\n onError() {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error retrieving candidates, please refresh the page and try again.`,\n state: 'error'\n }\n });\n },\n enabled: fetchedPreferences,\n refetchOnWindowFocus: false\n });\n\n return (\n <>\n <Box sx={classes.searchAndFiltersRow}>\n <EngageSearchBar dispatch={dispatch} engageState={engageState} />\n <TLPMatchModal engageState={engageState} dispatch={dispatch} />\n <Filters\n dispatch={dispatch}\n numberOfFilters={Object.values(engageState.searchFilters)?.length}\n label=\"engage-search\"\n >\n <SearchFilters engageState={engageState} dispatch={dispatch} />\n </Filters>\n <ColumnSettings\n tableState={engageState.searchTable}\n dispatch={dispatch}\n label=\"engage-search\"\n userPreferenceSource={USER_PREFERENCE_SOURCE}\n />\n <ExportCsvButton\n isOpen={engageState.searchTable.modalsOpen.exportCsv}\n onClick={() =>\n dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: 'exportCsv', isOpen: true }\n })\n }\n />\n <AddCurrentSearchButton\n isOpen={engageState.searchTable.modalsOpen.addSearch}\n onClick={() =>\n dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: 'addSearch', isOpen: true }\n })\n }\n />\n </Box>\n <ItemActionsDrawer\n drawerOpen={engageState.searchTable.selectedItemIds.length > 0}\n dispatch={dispatch}\n actions={actionDrawerModals}\n label=\"engage-search\"\n />\n <GenericTable\n items={candidates?.data?.ai_search || []}\n isLoadingItems={isLoadingCandidates}\n dispatch={dispatch}\n tableState={engageState.searchTable}\n paginationState={engageState.searchSettings}\n pagination={{\n totalItems: candidates?.totalItems || 0,\n totalPages: candidates?.totalPages || 0\n }}\n headerStyle={headerStyle}\n TableRows={EngageSearchTableRows}\n TableActionList={engageSearchActionsList}\n label=\"candidates\"\n userPreferenceSource={USER_PREFERENCE_SOURCE}\n />\n <TotalSelectedIndicator\n tableState={engageState.searchTable}\n tableFilters={engageState.searchFilters}\n tableSearch={engageState.booleanQuery || undefined}\n dispatch={dispatch}\n totalItems={candidates?.totalItems || 0}\n items={candidates?.data?.ai_search || []}\n label=\"candidates\"\n selectAllUrl=\"/api/v4/searches\"\n />\n <EngageTableActionComponents\n actionsState={engageState.searchTable.actions}\n dispatch={dispatch}\n />\n <ActionDrawerModals engageState={engageState} dispatch={dispatch} />\n </>\n );\n};\n\nexport default EngageAISearch;\n","import React, { useState, ChangeEvent, Dispatch } from 'react';\nimport {\n Box,\n CircularProgress,\n FormControl,\n IconButton,\n InputAdornment,\n OutlinedInput\n} from '@mui/material';\nimport SettingsIcon from '@mui/icons-material/Settings';\nimport SearchIcon from '@mui/icons-material/Search';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from '../SharedComponents/styles';\nimport { EngageAction, EngageState } from '../reducer';\nimport { handleAPIRequest } from '../../NewUI/Components/Utilities/handleAPIRequest';\nimport { ISnackbarInput } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\n\nconst EngageSearchBar = ({\n engageState,\n dispatch\n}: {\n engageState: EngageState;\n dispatch: Dispatch<EngageAction>;\n}) => {\n const [showSearchTooltip, setShowSearchTooltip] = useState<boolean>(false);\n const [tlpMatchText, setTlpMatchText] = useState<string>('Matching TLP');\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n const handleQuerySearch = (query: string) => {\n handleAPIRequest({\n url: `/api/v4/searches/generate_boolean_query`,\n body: { query },\n method: 'POST',\n setLoaderState: setIsLoading,\n setSnackbarState: (snackbarState: ISnackbarInput) =>\n dispatch({ type: 'SET_SNACKBAR', payload: snackbarState }),\n successMessage: { show: false },\n onSuccess: (response: { boolean_query: string }) => {\n const booleanQuery = response?.boolean_query;\n dispatch({ type: 'CONFIRM_STRING_MATCH_SEARCH', payload: booleanQuery });\n }\n });\n };\n\n const handleQueryChange = (event: ChangeEvent<HTMLInputElement>) => {\n if (isLoading) return;\n setShowSearchTooltip(!!event.target.value);\n dispatch({ type: 'SET_SEARCH_QUERY', payload: event.target.value });\n };\n\n const handleSearch = () => {\n if (isLoading || !engageState.searchQuery) return;\n setShowSearchTooltip(false);\n handleQuerySearch(engageState.searchQuery);\n };\n\n const searchInputAdornment = () => {\n if (engageState.searchType === 'string_match' && !isLoading) {\n return (\n <InputAdornment\n sx={classes.searchAdornment}\n position=\"start\"\n onClick={() => dispatch({ type: 'CLEAR_SEARCH' })}\n id=\"clear-tlp-search-button\"\n >\n <CloseIcon sx={{ marginBottom: '3.5px' }} />\n </InputAdornment>\n );\n } else {\n return (\n <InputAdornment\n sx={classes.searchAdornment}\n position=\"start\"\n onClick={handleSearch}\n id=\"search-candidates-button\"\n >\n {isLoading ? (\n <CircularProgress size={31} color=\"inherit\" />\n ) : (\n <SearchIcon id=\"search-candidates-button\" />\n )}\n </InputAdornment>\n );\n }\n };\n\n return (\n <Box sx={classes.searchContainer} id=\"search-candidates-box\">\n <FormControl fullWidth>\n <OutlinedInput\n id=\"candidate-search-input\"\n sx={{ ...classes.searchInput, ...(!isLoading && { cursor: 'pointer' }) }}\n placeholder={'Search all of your candidates'}\n value={\n engageState.searchType === 'tlp_match'\n ? engageState.tlpMatchModalState.selectedTLP.name\n : engageState.searchQuery\n }\n onChange={handleQueryChange}\n onKeyDown={(event) => {\n if (event.key === 'Enter') {\n handleSearch();\n }\n }}\n disabled={engageState.searchType === 'tlp_match'}\n startAdornment={\n engageState.searchType === 'tlp_match' ? (\n <InputAdornment position=\"start\">\n <Box\n sx={classes.tlpMatch}\n onMouseEnter={() => setTlpMatchText('Clear TLP Search')}\n onMouseLeave={() => setTlpMatchText('Matching TLP')}\n onClick={() => dispatch({ type: 'CLEAR_SEARCH' })}\n id=\"clear-tlp-search-button\"\n >\n {tlpMatchText}\n </Box>\n </InputAdornment>\n ) : (\n searchInputAdornment()\n )\n }\n endAdornment={\n engageState.searchType !== 'none' && (\n <InputAdornment position=\"end\">\n <IconButton\n sx={classes.editBooleanIcon}\n onClick={() => dispatch({ type: 'EDIT_BOOLEAN_QUERY' })}\n >\n <SettingsIcon />\n </IconButton>\n </InputAdornment>\n )\n }\n />\n </FormControl>\n {showSearchTooltip && (\n <Box sx={classes.searchTooltip}>\n Press enter, or click the search icon to find candidates\n </Box>\n )}\n </Box>\n );\n};\n\nexport default EngageSearchBar;\n","import React, { Dispatch } from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport NoteAddIcon from '@mui/icons-material/NoteAdd';\nimport AttachFileIcon from '@mui/icons-material/AttachFile';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport { TCandidate } from '../types';\nimport { TableActionItemAction } from '../../NewUI/Components/GenericTable/types';\n\nconst EngageSearchTableActionItems = ({\n item,\n dispatch\n}: {\n item: TCandidate;\n dispatch: Dispatch<TableActionItemAction<TCandidate>>;\n}) => {\n return (\n <>\n <Tooltip placement=\"top\" title=\"Add note\">\n <IconButton\n className=\"add-candidate-note-button\"\n onClick={(event) => {\n dispatch({\n type: 'SELECT_ACTION_ITEM',\n payload: { item: item, anchorEl: event.currentTarget, name: 'addNote' }\n });\n }}\n >\n <NoteAddIcon />\n </IconButton>\n </Tooltip>\n {item.attachment_url?.length > 0 && (\n <Tooltip placement=\"top\" title=\"View attachments\">\n <IconButton\n className=\"view-attachments-list\"\n onClick={(event) => {\n dispatch({\n type: 'SELECT_ACTION_ITEM',\n payload: { item: item, anchorEl: event.currentTarget, name: 'viewAttachments' }\n });\n }}\n >\n <AttachFileIcon />\n </IconButton>\n </Tooltip>\n )}\n <Tooltip placement=\"top\" title=\"More options\" arrow>\n <IconButton\n onClick={(e) => {\n dispatch({\n type: 'SELECT_ACTION_ITEM',\n payload: { item: item, anchorEl: e.currentTarget, name: 'moreOptions' }\n });\n }}\n className=\"engage-action-dropdown-button\"\n >\n <MoreVertIcon />\n </IconButton>\n </Tooltip>\n </>\n );\n};\n\nexport default EngageSearchTableActionItems;\n","import React from 'react';\nimport { EngageState } from '../reducer';\nimport { TCandidate } from '../types';\nimport { TableCell } from '@mui/material';\nimport { classes } from '../../NewUI/Components/GenericTable/styles';\nimport ExpandableLinkedTags from '../../NewUI/Components/GenericTable/TableCells/ExpandableLinkedTags';\nimport { TagList } from '../../NewUI/Components/CustomUIElements/TagList/TagList';\nimport NotesWithSubjectLine from '../../NewUI/Components/GenericTable/TableCells/NotesWithSubjectLine';\nimport FormattedDate from '../../NewUI/Components/GenericTable/TableCells/FormattedDate';\n\nconst EngageSearchTableRows = ({\n column,\n item,\n tableHovered\n}: {\n column: EngageState['searchTable']['columns'][number];\n item: TCandidate;\n tableHovered: boolean;\n}) => {\n if (!column.enabled) return null;\n switch (column.id) {\n case 'id':\n return (\n <TableCell\n key={item.id + column.id}\n sx={{\n ...classes.sticky,\n ...classes.idTableCell\n }}\n >\n <a\n href={`/admin/candidates/${item.id}`}\n className=\"candidate-id-link-engage\"\n id=\"application-id-link\"\n >\n {item.id || '-'}\n </a>\n </TableCell>\n );\n case 'name':\n return (\n <TableCell\n key={item.id + column.id}\n sx={{\n ...classes.sticky,\n ...classes.itemTitleTableCell,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n >\n <a\n href={`/admin/candidates/${item.id}`}\n className=\"candidate-link\"\n id=\"candidate-name-link\"\n >\n {item.name || '-'}\n </a>\n </TableCell>\n );\n case 'suburb':\n return <TableCell key={item.id + column.id}>{item.suburb || '-'}</TableCell>;\n case 'country':\n return <TableCell key={item.id + column.id}>{item.country || '-'}</TableCell>;\n case 'last_applied_on':\n return (\n <TableCell key={item.id + column.id}>\n {item.last_applied_on ? <FormattedDate date={item.last_applied_on} /> : '-'}\n </TableCell>\n );\n case 'jobs_applied_to':\n return (\n <TableCell sx={{ maxWidth: '180px' }}>\n {item?.jobs_applied_to?.length ? (\n <ExpandableLinkedTags\n label=\"applications\"\n titleKeyType=\"title\"\n items={item.jobs_applied_to}\n maxItems={10}\n maxItemsLink={`/admin/candidates/${item.id}`}\n />\n ) : (\n '-'\n )}\n </TableCell>\n );\n case 'tags':\n return <TableCell>{item.tags?.length ? <TagList tags={item.tags} /> : '-'}</TableCell>;\n case 'notes':\n return (\n <TableCell sx={{ maxWidth: '280px' }}>\n {item.notes?.length ? <NotesWithSubjectLine notes={item.notes} /> : '-'}\n </TableCell>\n );\n default:\n return <TableCell></TableCell>;\n }\n};\n\nexport default EngageSearchTableRows;\n","import React, { Dispatch } from 'react';\nimport { EngageState } from '../reducer';\nimport { TableActionItemAction } from '../../NewUI/Components/GenericTable/types';\nimport { TCandidate } from '../types';\nimport AttachmentsList from '../../NewUI/Components/GenericTable/TablePopovers/AttachmentsList';\nimport AddNoteWithSubjectLine from '../../NewUI/Components/GenericTable/TablePopovers/AddNoteWithSubjectLine';\nimport MoreOptionsList from '../../NewUI/Components/GenericTable/TablePopovers/MoreOptionsList';\n\nconst EngageTableActionComponents = ({\n actionsState,\n dispatch\n}: {\n actionsState: EngageState['searchTable']['actions'];\n dispatch: Dispatch<TableActionItemAction<TCandidate>>;\n}) => {\n return (\n <>\n <AttachmentsList\n attachments={actionsState?.selectedItem?.attachment_url || []}\n isOpen={actionsState?.isOpen?.viewAttachments}\n handleClose={() => dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'viewAttachments' })}\n anchorEl={actionsState?.anchorEl}\n />\n <AddNoteWithSubjectLine\n dispatch={dispatch}\n isOpen={actionsState?.isOpen?.addNote}\n anchorEl={actionsState?.anchorEl}\n itemId={actionsState?.selectedItem?.id || 0}\n url=\"/api/v4/searches/add_note\"\n queryKey=\"candidates\"\n />\n </>\n );\n};\n\nexport default EngageTableActionComponents;\n","import React, { Dispatch } from 'react';\nimport AddToCandidatePool from './AddToCandidatePool';\nimport { EngageAction, EngageState } from '../../../reducer';\nimport DownloadModal from '../../../../NewUI/Components/Modals/DownloadModal';\nimport ExternalEmail from '../../../SharedComponents/Modals/ExternalEmail';\nimport callAPI from '../../../../NewUI/Components/Utilities/callAPI';\n\nconst ActionDrawerModals = ({\n dispatch,\n engageState\n}: {\n dispatch: Dispatch<EngageAction>;\n engageState: EngageState;\n}) => {\n const downloadAPICall = async (type: string) => {\n if (type === 'attachments') {\n const { zip_file } = await callAPI(\n '/api/v4/searches/zip_attachments',\n { candidate_ids: engageState.searchTable.selectedItemIds },\n 'POST'\n );\n return zip_file.id;\n } else if (type === 'pdf') {\n const response = await callAPI(\n '/api/v4/searches/export_pdf',\n { candidate_ids: engageState.searchTable.selectedItemIds },\n 'POST'\n );\n return response.success || response.errors || 'Something went wrong';\n } else if (type === 'attachmentsInPdf') {\n const response = await callAPI(\n '/api/v4/searches/export_pdf',\n { candidate_ids: engageState.searchTable.selectedItemIds, attachments_in_pdf: true },\n 'POST'\n );\n return response.success || response.errors || 'Something went wrong';\n } else if (type === 'csv') {\n const enabledColumns: Record<string, boolean> = {};\n engageState.searchTable.columns.forEach((column) => {\n enabledColumns[column.id as keyof typeof enabledColumns] = column.enabled;\n });\n const response = await callAPI(\n '/api/v4/searches/export_csv',\n {\n searches: {\n candidate_ids: engageState.searchTable.selectedItemIds,\n activeColumns: enabledColumns\n }\n },\n 'POST'\n );\n return response.message || response.errors || 'Something went wrong';\n }\n };\n\n return (\n <>\n <AddToCandidatePool\n engageState={engageState}\n isOpen={\n engageState.searchTable.modalsOpen.addToPool ||\n engageState.searchTable.modalsOpen.addSearch\n }\n handleClose={() => {\n engageState.searchTable.modalsOpen.addToPool\n ? dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: 'addToPool', isOpen: false }\n })\n : dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: 'addSearch', isOpen: false }\n });\n }}\n selectedCandidates={engageState.searchTable.selectedItemIds}\n isSearch={engageState.searchTable.modalsOpen.addSearch}\n selectAllBody={{\n override_limit: true,\n limit: 9999,\n ...(engageState.searchQuery && { query: engageState.booleanQuery }),\n ...engageState.searchFilters\n }}\n setSnackbarState={({ message, state }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message,\n state\n }\n });\n }}\n />\n <ExternalEmail\n isOpen={engageState.searchTable.modalsOpen.externalEmail}\n dispatch={dispatch}\n selectedCandidateIds={engageState.searchTable.selectedItemIds}\n apiUrl=\"/api/v4/searches/bulk_external_email\"\n />\n <DownloadModal\n type=\"attachments\"\n isOpen={engageState.searchTable.modalsOpen.downloadAttachments}\n handleClose={() =>\n dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: 'downloadAttachments', isOpen: false }\n })\n }\n downloadAPICall={downloadAPICall}\n />\n <DownloadModal\n type=\"attachmentsInPdf\"\n isOpen={engageState.searchTable.modalsOpen.exportAttachments}\n handleClose={() =>\n dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: 'exportAttachments', isOpen: false }\n })\n }\n downloadAPICall={downloadAPICall}\n emailFallback={true}\n />\n <DownloadModal\n type=\"pdf\"\n isOpen={engageState.searchTable.modalsOpen.exportAsPdf}\n handleClose={() =>\n dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: 'exportAsPdf', isOpen: false }\n })\n }\n downloadAPICall={downloadAPICall}\n emailFallback={true}\n />\n <DownloadModal\n type=\"csv\"\n isOpen={engageState.searchTable.modalsOpen.exportCsv}\n handleClose={() =>\n dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: 'exportCsv', isOpen: false }\n })\n }\n downloadAPICall={downloadAPICall}\n emailFallback={true}\n />\n </>\n );\n};\n\nexport default ActionDrawerModals;\n","import React, { useState } from 'react';\nimport StyledModal from '../../../../NewUI/Components/GenericModal/StyledModal';\nimport {\n Box,\n LinearProgress,\n ToggleButton,\n ToggleButtonGroup,\n FormHelperText\n} from '@mui/material';\nimport MultiSelectWithCreate from '../../../../NewUI/Components/CustomUIElements/MultiSelectWithCreate';\nimport InfoBox from '../../../../NewUI/Components/CustomUIElements/InfoBox';\nimport { sharedClasses } from '../../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport callAPI from '../../../../NewUI/Components/Utilities/callAPI';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { handleAPIRequest } from '../../../../NewUI/Components/Utilities/handleAPIRequest';\nimport { ISnackbarInput } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { EngageState } from '../../../reducer';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\nconst AddToCandidatePool = ({\n engageState,\n isOpen,\n handleClose,\n selectedCandidates,\n isSearch,\n selectAllBody,\n setSnackbarState\n}: {\n engageState: EngageState;\n isOpen: boolean;\n handleClose: () => void;\n selectedCandidates: number[];\n isSearch: boolean;\n selectAllBody: any;\n setSnackbarState: (snackbarState: ISnackbarInput) => void;\n}) => {\n const [filterTab, setFilterTab] = useState('addCurrentResults');\n const [selectedPools, setSelectedPools] = useState<\n {\n id: number;\n title: string;\n }[]\n >([]);\n const [addingCandidates, setAddingCandidates] = useState(false);\n const [poolNameLengthError, setPoolNameLengthError] = useState(false);\n\n const queryClient = useQueryClient();\n\n const { data: allCurrentCandidates, isLoading: isLoadingCandidates } = useQuery({\n queryKey: ['allCurrentCandidates'],\n queryFn: () => callAPI(`/api/v4/searches`, selectAllBody, 'POST'),\n enabled: isOpen && isSearch\n });\n\n const { data: candidate_pools, isLoading: isLoadingPools } = useQuery({\n queryKey: ['candidatePoolsList'],\n queryFn: () => callAPI(`/api/v4/candidate_pools/list_pools`, null, 'GET'),\n enabled: isOpen\n });\n\n const { mutate: addCandidatePool, isLoading: creatingPool } = useMutation({\n mutationFn: (data) =>\n callAPI(\n `/api/v4/candidate_pools`,\n {\n title: data,\n params: {\n query: engageState.booleanQuery,\n ...engageState.searchSettings,\n ...engageState.searchFilters\n }\n },\n 'POST'\n ),\n onSuccess: (data) => {\n queryClient.setQueryData(['candidatePoolsList'], (oldData: any) => {\n return {\n candidate_pools: [...oldData.candidate_pools, data]\n };\n });\n setSelectedPools([...selectedPools, data]);\n }\n });\n\n const handleMultiSelectValueChange = (value: any) => {\n setPoolNameLengthError(false);\n if (typeof value.at(-1) === 'string') {\n if (value.at(-1).length >= 255) return setPoolNameLengthError(true);\n addCandidatePool(value.at(-1));\n } else {\n setSelectedPools(value);\n }\n };\n\n const addCandidatesToPools = () => {\n const body = {\n candidate_ids: isSearch\n ? allCurrentCandidates?.ai_search?.map((candidate: { id: number }) => candidate.id)\n : selectedCandidates,\n candidate_pool_ids: selectedPools.map((pool) => pool.id)\n };\n handleAPIRequest({\n url: '/api/v4/candidate_pools/update_pools',\n method: 'POST',\n body,\n setLoaderState: setAddingCandidates,\n setSnackbarState,\n onSuccess: () => {\n handleClose();\n setSelectedPools([]);\n queryClient.invalidateQueries(['candidatePools', 'candidates']);\n }\n });\n };\n\n return (\n <StyledModal\n isOpen={isOpen}\n handleClose={handleClose}\n styleOverrides={{\n maxWidth: '830px',\n maxHeight: '540px'\n }}\n label=\"add-to-candidate-pool\"\n modalTitle={isSearch ? 'Add search to candidate pool' : 'Add candidates to pool'}\n subHeaderStyling={false}\n >\n <Box sx={{ ...sharedClasses.mainModalContent, height: '100%' }}>\n <Box\n sx={{\n fontFamily: 'Source Sans Pro',\n fontSize: '16px',\n color: '#939393',\n width: '100%',\n paddingInline: '2px'\n }}\n >\n Select or create candidate pools\n <MultiSelectWithCreate\n dropdownOptions={candidate_pools?.candidate_pools || []}\n onChange={(newValues) => handleMultiSelectValueChange(newValues)}\n values={selectedPools}\n loadingOptions={isLoadingPools}\n creatingOption={creatingPool}\n />\n <FormHelperText\n sx={{\n marginLeft: '4px',\n color: poolNameLengthError ? theme.palette.error.main : theme.palette.common.grey\n }}\n >\n Candidate name length must be a maximum of 255 characters\n </FormHelperText>\n </Box>\n <Box sx={{ paddingTop: '46px' }}>\n {isSearch && isLoadingCandidates ? (\n <>\n <Box\n sx={{\n fontFamily: 'Source Sans Pro',\n fontSize: '17px',\n color: '#939393',\n width: '100%'\n }}\n >\n Loading all candidates in the current search, please wait...\n </Box>\n <Box sx={{ width: '100%' }}>\n <LinearProgress color=\"inherit\" />\n </Box>\n </>\n ) : (\n <>\n <ToggleButtonGroup\n value={filterTab}\n exclusive\n onChange={(e, value) => {\n if (value) setFilterTab(value);\n }}\n aria-label=\"subscribe or add current results\"\n >\n {/* {selectedCandidates && <ToggleButton value=\"subscribe\" sx={classes.toggleButton}>\n Subscribe to search\n </ToggleButton>} */}\n <ToggleButton value=\"addCurrentResults\" sx={sharedClasses.toggleButton}>\n Add current results\n </ToggleButton>\n </ToggleButtonGroup>\n <InfoBox\n message={\n <Box sx={{ marginLeft: 1 }}>\n {filterTab === 'subscribe' ? (\n <>\n Candidate pools subscribed to a search will be automatically updated with\n new applicants that fall under that search\n <br />\n Any ‘newly added’ Nurture Journey actions will be executed for the existing\n candidates in this search, and when new applicants are automatically added\n to your pools\n </>\n ) : (\n <>\n All\n {isSearch ? ' candidates in the current search ' : ' selected candidates '}\n will be added to the selected candidate pools\n <br />\n Any ‘newly added’ Nurture Journey actions will be executed for the newly\n added candidates\n </>\n )}\n </Box>\n }\n />\n </>\n )}\n </Box>\n </Box>\n <ModalFooterButtons\n primaryButtonText={isSearch ? 'Add search' : 'Add candidates'}\n primaryButtonCallback={addCandidatesToPools}\n primaryButtonDisabled={selectedPools.length === 0 || (isSearch && isLoadingCandidates)}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n isLoading={addingCandidates}\n primaryButtonID=\"add-candidates-button\"\n secondaryButtonID=\"cancel-add-too-pool\"\n />\n </StyledModal>\n );\n};\n\nexport default AddToCandidatePool;\n","import { IconButton, Tooltip } from '@mui/material';\nimport React from 'react';\nimport PlaylistAddIcon from '@mui/icons-material/PlaylistAdd';\nimport { classes } from '../../../NewUI/Components/GenericTable/Dropdowns/styles';\n\nconst AddCurrentSearchButton = ({ isOpen, onClick }: { isOpen: boolean; onClick: () => void }) => {\n return (\n <Tooltip title=\"Add current search\" placement=\"top\" arrow>\n <IconButton\n id={`add-current-search-button`}\n sx={isOpen ? { ...classes.iconButton, ...classes.iconButtonOpen } : classes.iconButton}\n onClick={onClick}\n >\n <PlaylistAddIcon />\n </IconButton>\n </Tooltip>\n );\n};\n\nexport default AddCurrentSearchButton;\n","import React, { useState, Dispatch } from 'react';\nimport { Box } from '@mui/material';\nimport BooleanEditor from '../../../SharedComponents/BooleanEditor';\nimport DynamicFooter from '../../../../AIStudio/SharedComponents/Footers/DynamicFooter';\nimport { EngageAction } from '../../../reducer';\nimport {\n booleanQueryToEditableArray,\n editableBooleanArrayToBooleanQuery,\n IBooleanQueryObject\n} from '../../../SharedComponents/booleanQueryParser';\nimport { classes } from '../../../styles';\n\nconst EditBooleanStep = ({\n booleanQuery,\n isEditing,\n dispatch\n}: {\n booleanQuery: string;\n isEditing: boolean;\n dispatch: Dispatch<EngageAction>;\n}) => {\n const [editableBooleanArray, setEditableBooleanArray] = useState<IBooleanQueryObject[]>(\n booleanQueryToEditableArray(booleanQuery)\n );\n\n const handleConfirmBooleanQuery = () => {\n const editedBooleanQuery = editableBooleanArrayToBooleanQuery(editableBooleanArray);\n dispatch({ type: 'CONFIRM_EDIT_BOOLEAN_QUERY', payload: editedBooleanQuery });\n };\n\n return (\n <>\n <Box sx={classes.modalHeader}>Refine your search</Box>\n <Box sx={{ ...classes.modalMainContentContainer, rowGap: '26px', marginBottom: '20px' }}>\n <Box sx={classes.editBooleanStepHeader}>I'm looking for...</Box>\n <BooleanEditor\n editableBooleanArray={editableBooleanArray}\n setEditableBooleanArray={setEditableBooleanArray}\n />\n </Box>\n <DynamicFooter\n primaryButtonText=\"Search\"\n primaryButtonID=\"search-button\"\n secondaryButtonID=\"back-button\"\n handlePrimaryButtonClick={handleConfirmBooleanQuery}\n secondaryButtonText={isEditing ? 'Cancel' : 'Back'}\n handleSecondaryButtonClick={() => {\n isEditing\n ? dispatch({ type: 'CANCEL_EDIT_BOOLEAN_QUERY' })\n : dispatch({ type: 'SET_TLP_MATCH_MODAL_STEP', payload: 'select' });\n }}\n felixMessage={\n <>\n Refine your <span>search preferences</span> and I'll find candidates that best match\n them!\n </>\n }\n felixMessageMaxWidth=\"360px\"\n />\n </>\n );\n};\n\nexport default EditBooleanStep;\n","import React, { Dispatch, useState } from 'react';\nimport { Box } from '@mui/material';\nimport { EngageAction, EngageState } from '../../../reducer';\nimport { classes } from '../../../styles';\nimport { Virtualize } from '../../../../NewUI/Components/CustomUIElements/VirtualizedAutocomplete';\nimport { handleAPIRequest } from '../../../../NewUI/Components/Utilities/handleAPIRequest';\nimport { ISnackbarInput } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport DynamicFooter from '../../../../AIStudio/SharedComponents/Footers/DynamicFooter';\nimport { IJob } from '../../../../NewUI/Job/types';\nimport DisplayHTMLViewOnly from '../../../../AIStudio/SharedComponents/DisplayHTMLViewOnly';\nimport SelectJobSVG from '../../../Graphics/SelectJobSVG';\n\nconst SelectTLPStep = ({\n modalState,\n dispatch,\n handleGetBooleanQuery\n}: {\n modalState: EngageState['tlpMatchModalState'];\n dispatch: Dispatch<EngageAction>;\n handleGetBooleanQuery: () => void;\n}) => {\n const [selectedJob, setSelectedJob] = useState<string>('');\n const [isLoadingTLP, setIsLoadingTLP] = useState<boolean>(false);\n\n const handleSelectJob = (value: string) => {\n if (!value) {\n setSelectedJob('');\n dispatch({ type: 'SET_SELECTED_TLP', payload: { id: -1, name: '', html: '' } });\n return;\n }\n const reference = value.split(' -')[0];\n const i = modalState.jobsList.data.findIndex((option) => option?.reference === reference);\n setSelectedJob(value);\n const jobId = modalState.jobsList.data[i]?.id;\n getSelectedJobTLP(Number(jobId));\n };\n\n const getSelectedJobTLP = (id: number) => {\n handleAPIRequest({\n url: `/api/v4/jobs/${id}`,\n method: 'GET',\n setSnackbarState: (snackbarState: ISnackbarInput) =>\n dispatch({ type: 'SET_SNACKBAR', payload: snackbarState }),\n successMessage: { show: false },\n setLoaderState: setIsLoadingTLP,\n onSuccess: (response: IJob) => {\n const [id, name, html] = [response?.id, response?.title, response?.description];\n dispatch({\n type: 'SET_SELECTED_TLP',\n payload: { id, name, html }\n });\n }\n });\n };\n\n const options = modalState.jobsList.data.map((job) => `${job.reference} - ${job.title}`);\n\n return (\n <>\n <Box sx={classes.modalHeader}>Search using a Talent Landing Page</Box>\n <Box sx={classes.modalMainContentContainer}>\n <Box sx={classes.modalRow}>\n <Box sx={classes.modalFieldSubHeader}>Select a job</Box>\n <Virtualize\n passOptions={options}\n value={selectedJob}\n setValue={(value: string) => handleSelectJob(value)}\n passedStyles={classes.autocomplete}\n loading={modalState.jobsList.isLoading}\n loadingText=\"Loading jobs with Talent Landing Pages...\"\n freeSolo={false}\n />\n </Box>\n {!selectedJob ? (\n <Box sx={classes.selectJobPlaceholder}>\n <SelectJobSVG />\n <span>Select a job to see its Talent Landing Page</span>\n </Box>\n ) : (\n <DisplayHTMLViewOnly\n content={modalState.selectedTLP.html}\n loadingHTML={isLoadingTLP}\n maxHeight=\"420px\"\n />\n )}\n </Box>\n <DynamicFooter\n primaryButtonText=\"Confirm\"\n primaryButtonID=\"confirm-button\"\n secondaryButtonID=\"close-button\"\n disablePrimaryButton={modalState.selectedTLP.html === ''}\n handlePrimaryButtonClick={handleGetBooleanQuery}\n secondaryButtonText=\"Close\"\n handleSecondaryButtonClick={() => dispatch({ type: 'CLOSE_TLP_MATCH_MODAL' })}\n felixMessage={\n <>\n Select a job and I'll create a search to find candidates based on its{' '}\n <span>Talent Landing Page</span>\n </>\n }\n felixMessageMaxWidth=\"360px\"\n />\n </>\n );\n};\n\nexport default SelectTLPStep;\n","import { Box, Button, Modal } from '@mui/material';\nimport React, { Dispatch } from 'react';\nimport { classes } from '../../../styles';\nimport { EngageAction, EngageState } from '../../../reducer';\nimport SelectTLPStep from './SelectTLPStep';\nimport EditBooleanStep from './EditBooleanStep';\nimport { handleAPIRequest } from '../../../../NewUI/Components/Utilities/handleAPIRequest';\nimport { ISnackbarInput } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport LoadingResponse from '../../../../AIStudio/SharedComponents/Steps/LoadingResponse';\nimport StyledModal from '../../../../NewUI/Components/GenericModal/StyledModal';\n\nconst TLPMatchModal = ({\n engageState,\n dispatch\n}: {\n engageState: EngageState;\n dispatch: Dispatch<EngageAction>;\n}) => {\n const handleOpenModal = () => {\n dispatch({ type: 'OPEN_TLP_MATCH_MODAL' });\n dispatch({ type: 'SET_JOBS_LIST_LOADING' });\n handleAPIRequest({\n url: `/api/v4/jobs/jobs_for_tlp_match`,\n method: 'GET',\n setSnackbarState: (snackbarState: ISnackbarInput) =>\n dispatch({ type: 'SET_SNACKBAR', payload: snackbarState }),\n successMessage: { show: false },\n onSuccess: (response: { jobs: Array<{ id: number; reference: string; title: string }> }) => {\n const jobsList = response.jobs;\n dispatch({ type: 'SET_JOBS_LIST', payload: jobsList });\n }\n });\n };\n\n const handleCloseModal = () => {\n dispatch({ type: 'CLOSE_TLP_MATCH_MODAL' });\n };\n\n const handleGetBooleanQuery = () => {\n dispatch({ type: 'SET_TLP_MATCH_MODAL_STEP', payload: 'loading' });\n handleAPIRequest({\n url: `/api/v4/searches/generate_boolean_query`,\n method: 'POST',\n body: {\n query: engageState.tlpMatchModalState.selectedTLP.name,\n tlp: engageState.tlpMatchModalState.selectedTLP.html\n },\n setSnackbarState: (snackbarState: ISnackbarInput) =>\n dispatch({ type: 'SET_SNACKBAR', payload: snackbarState }),\n successMessage: { show: false },\n onSuccess: (response: { boolean_query: string }) => {\n const booleanQuery = response?.boolean_query;\n dispatch({ type: 'SET_EDITABLE_BOOLEAN_QUERY', payload: booleanQuery });\n dispatch({ type: 'SET_TLP_MATCH_MODAL_STEP', payload: 'edit' });\n }\n });\n };\n\n const renderStep = () => {\n switch (engageState.tlpMatchModalState.step) {\n case 'select':\n return (\n <SelectTLPStep\n modalState={engageState.tlpMatchModalState}\n dispatch={dispatch}\n handleGetBooleanQuery={handleGetBooleanQuery}\n />\n );\n case 'loading':\n return (\n <LoadingResponse\n generationType=\"custom\"\n customMessages={[\n 'Sit tight, boolean brilliance is brewing',\n 'Summing up superb search strings',\n 'Hunting for the best buzzwords... Just a little longer!'\n ]}\n />\n );\n case 'edit':\n return (\n <EditBooleanStep\n booleanQuery={engageState.tlpMatchModalState.editableBooleanQuery}\n isEditing={engageState.tlpMatchModalState.isEditing}\n dispatch={dispatch}\n />\n );\n default:\n return <Box>Something went wrong</Box>;\n }\n };\n\n return (\n <>\n <Button sx={classes.tlpMatchButton} onClick={handleOpenModal} id=\"match-tlp-button\">\n Match TLP\n </Button>\n <StyledModal\n isOpen={engageState.tlpMatchModalState.open}\n handleClose={handleCloseModal}\n label=\"talent-landing-page-match\"\n >\n {renderStep()}\n </StyledModal>\n </>\n );\n};\n\nexport default TLPMatchModal;\n","import { Box, ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport React, { Dispatch, useState } from 'react';\nimport MultiSelectFilter from '../../NewUI/Components/GenericTable/Filters/MultiSelectFilter';\nimport { classes } from '../styles';\nimport RadiusSearchFilter from '../../NewUI/Components/GenericTable/Filters/RadiusSearchFilter';\nimport { EngageAction, EngageState } from '../reducer';\nimport { ISnackbarInput } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { ICountries, IStates } from '../../NewUI/Components/sharedTypes';\nimport DateRangeFilter from '../../NewUI/Components/GenericTable/Filters/DateRangeFilter';\nimport { useQuery } from '@tanstack/react-query';\nimport callAPI from '../../NewUI/Components/Utilities/callAPI';\nimport { parseCountryData } from '../../NewUI/Components/Utilities/countryParser';\n\nexport interface ISearchFilters {\n entity_ids: Array<number>;\n postal_codes: Array<string>;\n include_status: Array<string>;\n exclude_status: Array<string>;\n tag: Array<string>;\n date1: string;\n date2: string;\n country: Array<string>;\n state: Array<string>;\n employment_type: Array<string>;\n}\n\nexport const initialSearchFilters = {\n entity_ids: [],\n postal_codes: [],\n include_status: [],\n exclude_status: [],\n tag: [],\n date1: null,\n date2: null,\n country: [],\n state: [],\n employment_type: []\n};\n\nexport interface ITempFilters {\n entity_ids: FilterType[];\n postal_codes: Array<string>;\n include_status: Array<string>;\n exclude_status: Array<string>;\n tag: Array<string>;\n date1: Date | null;\n date2: Date | null;\n country: ICountries[];\n state: IStates[];\n employment_type: FilterType[];\n}\n\nexport type FilterType = {\n name: string;\n id?: number;\n};\n\nconst SearchFilters = ({\n engageState,\n dispatch\n}: {\n engageState: EngageState;\n dispatch: Dispatch<EngageAction>;\n}) => {\n const [filterTab, setFilterTab] = useState<'radius' | 'manual'>('radius');\n const handleFilterChange = (name: string, value: FilterType[]) => {\n dispatch({ type: 'SET_PAGE', payload: 1 });\n dispatch({ type: 'SET_TEMP_FILTERS', payload: { [name]: value } });\n };\n const { data: countriesData } = useQuery({\n queryKey: ['countries'],\n queryFn: () =>\n callAPI('/api/system/v1/countries_states.json').then((response: ICountries[]) =>\n parseCountryData(response)\n )\n });\n\n const { data: entities } = useQuery({\n queryKey: ['entities'],\n queryFn: () => callAPI('/api/v4/searches/entities').then((response) => response.entities)\n });\n\n const { data: statuses } = useQuery({\n queryKey: ['statuses'],\n queryFn: () =>\n callAPI('/api/v4/searches/statuses_and_tags').then((response) => response.statuses)\n });\n\n return (\n <Box sx={classes.filtersContainer}>\n <ToggleButtonGroup\n value={filterTab}\n exclusive\n onChange={(e, value) => setFilterTab(value)}\n aria-label=\"enabled or disabled questions\"\n >\n <ToggleButton id=\"radius-tab-filter-tab\" value=\"radius\" sx={classes.toggleButton}>\n Radius\n </ToggleButton>\n <ToggleButton\n id=\"location-tab-filter-tab\"\n value=\"disabledQuestions\"\n sx={classes.toggleButton}\n >\n Location\n </ToggleButton>\n </ToggleButtonGroup>\n {filterTab === 'radius' ? (\n <RadiusSearchFilter\n setPostcodes={(postalCodes: string[]) =>\n dispatch({ type: 'SET_TEMP_FILTERS', payload: { postal_codes: postalCodes } })\n }\n setSnackbarState={(snackbarState: ISnackbarInput) =>\n dispatch({ type: 'SET_SNACKBAR', payload: snackbarState })\n }\n />\n ) : (\n <>\n <MultiSelectFilter\n handleFilterChange={handleFilterChange}\n selectOptions={countriesData || []}\n name=\"country\"\n label=\"Countries\"\n value={engageState.tempSearchFilters.country}\n displayLabel={true}\n />\n <MultiSelectFilter\n handleFilterChange={handleFilterChange}\n selectOptions={engageState.tempSearchFilters.country\n .map((country) => country.states)\n .flat()}\n name=\"state\"\n label=\"States/Provinces\"\n value={engageState.tempSearchFilters.state}\n disabled={engageState.tempSearchFilters.country.length === 0}\n displayLabel={true}\n />\n </>\n )}\n <MultiSelectFilter\n handleFilterChange={handleFilterChange}\n selectOptions={[]}\n name=\"postal_codes\"\n label=\"Post/ZIP Codes\"\n freeInput={true}\n value={engageState.tempSearchFilters.postal_codes}\n />\n <MultiSelectFilter\n handleFilterChange={handleFilterChange}\n selectOptions={entities || []}\n name=\"entity_ids\"\n label=\"Entity\"\n value={engageState.tempSearchFilters.entity_ids}\n />\n <MultiSelectFilter\n handleFilterChange={handleFilterChange}\n selectOptions={[]}\n name=\"tag\"\n label=\"Tags\"\n freeInput={true}\n value={engageState.tempSearchFilters.tag}\n />\n <MultiSelectFilter\n handleFilterChange={handleFilterChange}\n selectOptions={statuses || []}\n name=\"include_status\"\n label=\"Application Status\"\n subLabel=\"Include\"\n value={engageState.tempSearchFilters.include_status}\n />\n <MultiSelectFilter\n handleFilterChange={handleFilterChange}\n selectOptions={statuses || []}\n name=\"exclude_status\"\n label=\"\"\n subLabel=\"Exclude\"\n value={engageState.tempSearchFilters.exclude_status}\n />\n <DateRangeFilter\n dispatch={dispatch}\n dateRange={{\n from: engageState.tempSearchFilters.date1,\n to: engageState.tempSearchFilters.date2\n }}\n dateRangeTemp={engageState.dateFieldRange}\n label=\"engage-search\"\n />\n </Box>\n );\n};\n\nexport default SearchFilters;\n","import React from 'react';\nimport { Box, Grid } from '@mui/material';\nimport { TEmail, TDetailedEmail } from '../../types';\nimport { classes } from '../../styles';\nimport InsertDriveFileIcon from '@mui/icons-material/InsertDriveFile';\nimport InsertInvitationIcon from '@mui/icons-material/InsertInvitation';\nimport FormattedDate from '../../../NewUI/Components/GenericTable/TableCells/FormattedDate';\nimport StatusStatistics from './StatusStatistics';\nimport OpenEmailStatistics from './OpenEmailStatistics';\n\nconst Analytics = ({\n selectedEmail,\n emailAnalytics,\n isLoading\n}: {\n emailAnalytics: TDetailedEmail;\n selectedEmail: TEmail;\n isLoading: boolean;\n}) => {\n return (\n <Box>\n <Grid sx={{ display: 'flex', marginLeft: '0', width: '100%' }} container spacing={2}>\n <Grid xs={6} sx={{ paddingRight: '25px' }}>\n <Box sx={{ ...classes.rowWidget, height: '6.5rem' }}>\n <Box sx={classes.widgetBlockIcon}>\n <InsertDriveFileIcon />\n </Box>\n <Box sx={{ marginLeft: '1.75rem' }}>\n <Box sx={classes.blockCount}>{selectedEmail.item?.applications}</Box>\n <Box\n sx={{\n fontSize: '16px',\n fontWeight: '600',\n color: '#333333'\n }}\n >\n Applications\n </Box>\n </Box>\n </Box>\n <Box sx={{ ...classes.rowWidget, marginTop: '50px', height: '6.5rem' }}>\n <Box sx={classes.widgetBlockIcon}>\n <InsertInvitationIcon />\n </Box>\n <Box sx={{ marginLeft: '15%', width: '100%' }}>\n <Grid sx={{ display: 'inline-flex' }} container spacing={2}>\n <Grid xs={6}>\n <Box sx={classes.widgetTextSubTitle}>Created At</Box>\n <Box>\n {selectedEmail.item?.created_at ? (\n <FormattedDate date={selectedEmail.item.created_at} />\n ) : (\n '-'\n )}\n </Box>\n </Grid>\n <Grid xs={6}>\n <Box sx={classes.widgetTextSubTitle}>Scheduled At</Box>\n <Box>{selectedEmail.item.delayed_to}</Box>\n </Grid>\n </Grid>\n </Box>\n </Box>\n </Grid>\n <Grid xs={6} sx={{ paddingLeft: '25px' }}>\n <Box sx={{ ...classes.rowWidget, height: '100%' }}>\n <Box sx={{ width: '100%' }}>\n <Grid sx={{ display: 'inline-flex', marginBottom: '3rem' }} container spacing={2}>\n <Grid xs={6} sx={classes.widgetContentGridWrapper}>\n <Box sx={classes.widgetTextSubTitle}>User</Box>\n <Box>{selectedEmail.item.user?.name ? selectedEmail.item.user?.name : '-'}</Box>\n </Grid>\n <Grid xs={6} sx={classes.widgetContentGridWrapper}>\n <Box sx={classes.widgetTextSubTitle}>Sent from</Box>\n <Box sx={{ overflowWrap: 'break-word', paddingRight: '15px' }}>\n {emailAnalytics?.from ? emailAnalytics?.from : '-'}\n </Box>\n </Grid>\n </Grid>\n <Grid sx={{ display: 'inline-flex' }} container spacing={2}>\n <Grid xs={6} sx={classes.widgetContentGridWrapper}>\n <Box sx={classes.widgetTextSubTitle}>Recently Added Candidates</Box>\n <Box>{selectedEmail.item.only_new ? 'Yes' : 'No'}</Box>\n </Grid>\n <Grid xs={6} sx={classes.widgetContentGridWrapper}>\n <Box sx={classes.widgetTextSubTitle}>Include Trashed Applications</Box>\n <Box>{selectedEmail.item.include_deleted ? 'Yes' : 'No'}</Box>\n </Grid>\n </Grid>\n </Box>\n </Box>\n </Grid>\n <Grid xs={12}>\n <StatusStatistics isLoading={isLoading} emailAnalytics={emailAnalytics} />\n </Grid>\n <Grid xs={12}>\n <OpenEmailStatistics isLoading={isLoading} emailAnalytics={emailAnalytics} />\n </Grid>\n </Grid>\n </Box>\n );\n};\n\nexport default Analytics;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { TDetailedEmail } from '../../types';\nimport { Pie } from 'react-chartjs-2';\nimport { Chart as ChartJS, ArcElement, Tooltip, Legend } from 'chart.js';\nimport { classes } from '../../styles';\nimport ReactLoading from 'react-loading';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nconst StatusStatistics = ({\n isLoading,\n emailAnalytics\n}: {\n isLoading: boolean;\n emailAnalytics: TDetailedEmail;\n}) => {\n ChartJS.register(ArcElement, Tooltip, Legend);\n\n const data = {\n labels: ['Red', 'Blue', 'Yellow'],\n datasets: [\n {\n label: 'My First Dataset',\n data: [300, 50, 100],\n backgroundColor: ['rgb(255, 99, 132)', 'rgb(54, 162, 235)', 'rgb(255, 205, 86)'],\n hoverOffset: 4\n }\n ]\n };\n\n return (\n <Box\n sx={{\n ...classes.rowWidget,\n marginTop: '100px',\n padding: '4%',\n justifyContent: 'center'\n }}\n >\n {isLoading ? (\n <Box\n sx={{\n height: '300px',\n margin: 'auto',\n alignItems: 'center',\n justifyContent: 'center',\n display: 'flex'\n }}\n >\n <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={100} height={100} />\n </Box>\n ) : (\n <Box sx={{ position: 'relative', minHeight: '300px', maxHeight: '500px' }}>\n <Pie\n options={{\n responsive: true,\n maintainAspectRatio: false\n }}\n data={emailAnalytics?.statistics?.opened_email_statistics}\n />\n <div id=\"legend-container-analytics\" />\n </Box>\n )}\n </Box>\n );\n};\n\nexport default StatusStatistics;\n","import React from 'react';\nimport { Box, Grid } from '@mui/material';\nimport { TDetailedEmail } from '../../types';\nimport { Bar } from 'react-chartjs-2';\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n BarElement,\n Title,\n Tooltip,\n Legend\n} from 'chart.js';\nimport ReactLoading from 'react-loading';\nimport { classes } from '../../styles';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport DoneIcon from '@mui/icons-material/Done';\nimport DraftsIcon from '@mui/icons-material/Drafts';\nimport AdsClickIcon from '@mui/icons-material/AdsClick';\nimport CloseIcon from '@mui/icons-material/Close';\nimport UnsubscribeIcon from '@mui/icons-material/Unsubscribe';\n\nconst StatusStatistics = ({\n isLoading,\n emailAnalytics\n}: {\n isLoading: boolean;\n emailAnalytics: TDetailedEmail;\n}) => {\n ChartJS.register(CategoryScale, LinearScale, BarElement, Title, Tooltip, Legend);\n\n const stats = emailAnalytics?.statistics?.percentages;\n\n return (\n <Box sx={{ ...classes.rowWidget, height: '100%', marginTop: '50px', paddingRight: '4%' }}>\n {isLoading ? (\n <Box\n sx={{\n height: '300px',\n margin: 'auto',\n alignItems: 'center',\n justifyContent: 'center',\n display: 'flex'\n }}\n >\n <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={100} height={100} />\n </Box>\n ) : (\n <Grid container spacing={2}>\n <Grid xs={6} sx={{ paddingRight: '25px', display: 'flex', justifyContent: 'center' }}>\n <Grid\n container\n spacing={2}\n sx={{ display: 'inline-flex', padding: '40px 0 15px 0', width: '24rem' }}\n >\n <Grid xs={12}>\n <Box\n sx={{\n ...classes.statusStatsWrapper,\n backgroundColor: stats.delivered\n ? 'rgba(109, 190, 191, 0.2)'\n : 'rgba(229, 229, 229, 0.5)'\n }}\n >\n <Box\n sx={{\n ...classes.statusStatsWrapperMetrics,\n color: stats.delivered ? theme.palette.secondary.medium : '#666666'\n }}\n >\n <Box sx={{ width: '5.5rem', margin: 'auto' }}>\n <DoneIcon\n sx={{\n color: stats.delivered ? theme.palette.secondary.medium : '#666666',\n fontSize: '23px'\n }}\n />\n <Box>{stats.delivered_pcent}%</Box>\n <Box sx={{ fontSize: '15px', fontWeight: '400', display: 'flex' }}>\n {stats.delivered}\n <Box sx={{ color: 'black', marginLeft: '3px' }}> Delivered</Box>\n </Box>\n </Box>\n </Box>\n </Box>\n </Grid>\n <Grid xs={6}>\n <Box\n sx={{\n ...classes.statusStatsWrapper,\n backgroundColor: stats.opened\n ? 'rgba(146, 104, 247, 0.2)'\n : 'rgba(229, 229, 229, 0.5)'\n }}\n >\n <Box\n sx={{\n ...classes.statusStatsWrapperMetrics,\n color: stats.opened ? theme.palette.secondary.purple : '#666666'\n }}\n >\n <DraftsIcon\n sx={{\n color: stats.opened ? theme.palette.secondary.purple : '#666666',\n fontSize: '23px'\n }}\n />\n <Box>{stats.opened_pcent}%</Box>\n <Box sx={{ fontSize: '15px', fontWeight: '400', display: 'flex' }}>\n {stats.opened}\n <Box sx={{ color: 'black', marginLeft: '3px' }}> Opened</Box>\n </Box>\n </Box>\n </Box>\n </Grid>\n <Grid xs={6}>\n <Box\n sx={{\n ...classes.statusStatsWrapper,\n backgroundColor: stats.clicks\n ? 'rgba(247, 161, 255, 0.2)'\n : 'rgba(229, 229, 229, 0.5)'\n }}\n >\n <Box\n sx={{\n ...classes.statusStatsWrapperMetrics,\n color: stats.clicks ? theme.palette.secondary.pink : '#666666'\n }}\n >\n <AdsClickIcon\n sx={{\n color: stats.clicks ? theme.palette.secondary.pink : '#666666',\n fontSize: '23px'\n }}\n />\n <Box>{stats.clicks_pcent}%</Box>\n <Box sx={{ fontSize: '15px', fontWeight: '400', display: 'flex' }}>\n {stats.clicks}\n <Box sx={{ color: 'black', marginLeft: '3px' }}>Clicks</Box>\n </Box>\n </Box>\n </Box>\n </Grid>\n <Grid xs={6}>\n <Box\n sx={{\n ...classes.statusStatsWrapper,\n backgroundColor: stats.bounced\n ? 'rgba(236, 110, 133, 0.2)'\n : 'rgba(229, 229, 229, 0.5)'\n }}\n >\n <Box\n sx={{\n ...classes.statusStatsWrapperMetrics,\n color: stats.bounced ? theme.palette.secondary.mediumRed : '#666666'\n }}\n >\n <CloseIcon\n sx={{\n color: stats.bounced ? theme.palette.secondary.mediumRed : '#666666',\n fontSize: '23px'\n }}\n />\n <Box>{stats.bounced}</Box>\n <Box sx={{ fontSize: '15px', fontWeight: '400', display: 'flex' }}>\n {emailAnalytics.statistics.percentages.bounced}\n <Box sx={{ color: 'black', marginLeft: '3px' }}>Bounced</Box>\n </Box>\n </Box>\n </Box>\n </Grid>\n <Grid xs={6}>\n <Box\n sx={{\n ...classes.statusStatsWrapper,\n backgroundColor: emailAnalytics.statistics.percentages.unsubscribed\n ? 'rgba(126, 167, 228, 0.2)'\n : 'rgba(229, 229, 229, 0.5)'\n }}\n >\n <Box\n sx={{\n ...classes.statusStatsWrapperMetrics,\n color: emailAnalytics.statistics.percentages.unsubscribed\n ? theme.palette.secondary.darkBlue\n : '#666666'\n }}\n >\n <UnsubscribeIcon\n sx={{\n color: emailAnalytics.statistics.percentages.unsubscribed\n ? theme.palette.secondary.darkBlue\n : '#666666',\n fontSize: '23px'\n }}\n />\n <Box>{emailAnalytics.statistics.percentages.unsubscribed_pcent}%</Box>\n <Box sx={{ fontSize: '15px', fontWeight: '400', display: 'flex' }}>\n {emailAnalytics.statistics.percentages.unsubscribed}\n <Box sx={{ color: 'black', marginLeft: '3px' }}>Unsubscribed</Box>\n </Box>\n </Box>\n </Box>\n </Grid>\n </Grid>\n </Grid>\n <Grid xs={6} sx={{ paddingLeft: '25px', margin: 'auto' }}>\n <Box sx={{ position: 'relative', minHeight: '300px', maxHeight: '500px' }}>\n <Bar\n options={{\n responsive: true,\n maintainAspectRatio: false,\n scales: {\n y: {\n beginAtZero: true,\n ticks: {\n stepSize: 1\n }\n }\n },\n plugins: {\n legend: {\n display: false\n }\n }\n }}\n data={emailAnalytics?.statistics?.status_statistics}\n />\n </Box>\n </Grid>\n </Grid>\n )}\n </Box>\n );\n};\n\nexport default StatusStatistics;\n","import React, { Dispatch } from 'react';\nimport {\n GenericTableState,\n GenericTableAction\n} from '../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { TApplication } from '../../types';\nimport { TableCell, Box } from '@mui/material';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport { getStatusColor } from '../../helper';\nimport { classes } from '../../../NewUI/Components/GenericTable/styles';\n\nconst ApplicationsTableRows = ({\n column,\n item,\n tableHovered,\n dispatch\n}: {\n column: GenericTableState['tableState']['columns'][number];\n item: TApplication;\n tableHovered: boolean;\n dispatch?: Dispatch<GenericTableAction>;\n}) => {\n if (!column.enabled) return null;\n switch (column.id) {\n case 'id': {\n return (\n <TableCell\n sx={{\n ...classes.sticky,\n ...classes.idTableCell,\n left: '0px',\n minWidth: '100px'\n }}\n key={`${(item.id, column.id)}`}\n >\n {item.id || '-'}\n </TableCell>\n );\n }\n case 'candidate': {\n return (\n <TableCell\n sx={{\n ...classes.sticky,\n ...classes.itemTitleTableCell,\n ...(tableHovered && classes.scrollShadowVisible),\n left: '100px',\n minWidth: '200px'\n }}\n key={`${(item.id, column.id)}`}\n >\n {item.candidate || '-'}\n </TableCell>\n );\n }\n case 'application_deleted': {\n return (\n <TableCell\n sx={{\n textAlign: 'center'\n }}\n key={`${(item.id, column.id)}`}\n >\n {item.application_deleted ? (\n <CheckCircleIcon sx={{ color: theme.palette.success.main }} fontSize=\"small\" />\n ) : (\n <CancelIcon sx={{ color: theme.palette.error.main }} fontSize=\"small\" />\n )}\n </TableCell>\n );\n }\n case 'status': {\n return (\n <TableCell\n sx={{\n display: 'flex',\n justifyContent: 'center'\n }}\n key={`${(item.id, column.id)}`}\n >\n {item.status ? (\n <Box\n sx={{\n borderRadius: '6px',\n padding: '6px',\n backgroundColor: `${getStatusColor(item.status)[0]}33`,\n width: 'fit-content',\n display: 'flex',\n justifyContent: 'center'\n }}\n >\n <Box\n sx={{\n color: getStatusColor(item.status)[0],\n fontWeight: 'bold',\n fontSize: '15px',\n padding: '0rem 1.5rem',\n textTransform: 'uppercase'\n }}\n >\n {item.status}\n </Box>\n </Box>\n ) : (\n '-'\n )}\n </TableCell>\n );\n }\n default:\n return <TableCell></TableCell>;\n }\n};\n\nexport default ApplicationsTableRows;\n","import React, { Dispatch } from 'react';\nimport { Box } from '@mui/material';\nimport { ApplicationsAPIReturn } from '../../types';\nimport GenericTable from '../../../NewUI/Components/GenericTable/GenericTable';\nimport SearchInput from '../../../NewUI/Components/GenericTable/SearchInput';\nimport { headerStyles } from './config';\nimport {\n GenericTableAction,\n GenericTableState\n} from '../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { IStyle } from '../../../ThemeContext/ThemeObject';\nimport ApplicationTableRows from './ApplicationTableRows';\n\nconst Applications = ({\n isFetching,\n applications,\n applicationsState,\n applicationsDispatch\n}: {\n isFetching: boolean;\n applications?: ApplicationsAPIReturn;\n applicationsState: GenericTableState;\n applicationsDispatch: Dispatch<GenericTableAction>;\n}) => {\n return (\n <Box>\n <Box>\n <SearchInput dispatch={applicationsDispatch} id=\"search-box-applications-tab\" />\n <GenericTable\n items={applications?.data?.applications || []}\n isLoadingItems={isFetching}\n dispatch={applicationsDispatch}\n tableState={applicationsState.tableState}\n paginationState={applicationsState.searchSettings}\n pagination={{\n totalItems: applications?.totalItems || 0,\n totalPages: applications?.totalPages || 0\n }}\n headerStyle={headerStyles as (id: string, tableHovered: boolean) => IStyle}\n TableRows={ApplicationTableRows}\n label=\"applications analytics\"\n titleCellId=\"candidate\"\n allowMultipleSelection={false}\n />\n </Box>\n </Box>\n );\n};\n\nexport default Applications;\n","import { SxProps } from '@mui/material';\nimport { classes } from '../../../NewUI/Components/GenericTable/styles';\n\nexport const applicationColumns = [\n {\n id: 'id',\n label: 'ID',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'candidate',\n label: 'Candidate',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'application_deleted',\n label: 'Application Deleted',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'status',\n label: 'Status',\n sortable: false,\n canToggle: false,\n enabled: true\n }\n];\n\nexport const headerStyles = (\n name: typeof applicationColumns[number]['id'] | 'checkbox' | 'actions',\n tableHovered: boolean\n): SxProps => {\n switch (name) {\n case 'id':\n return {\n ...classes.sticky,\n width: '100px',\n minWidth: '100px'\n };\n case 'candidate':\n return {\n ...classes.sticky,\n ...classes.itemTitleTableCell,\n ...(tableHovered && classes.scrollShadowVisible),\n left: '100px',\n minWidth: '200px'\n };\n case 'application_deleted':\n return {\n minWidth: '120px',\n textAlign: 'center'\n };\n case 'status':\n return {\n minWidth: '70px',\n textAlign: 'center'\n };\n default:\n return { minWidth: '90px' };\n }\n};\n","import React, { useReducer, useState, Dispatch } from 'react';\nimport { Box, Tabs, Tab, Stack, IconButton } from '@mui/material';\nimport { classes } from '../styles';\nimport StyledSnackbar from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { sharedClasses } from '../../NewUI/Components/CustomUIElements/sharedClasses';\nimport Analytics from './Analytics/Analytics';\nimport Applications from './Applications/Applications';\nimport EmailTemplates from './EmailTemplates/EmailTemplates';\nimport { GenericTableAction } from '../../NewUI/Components/GenericTable/genericTableReducer';\nimport { TEmail, ApplicationsAPIReturn } from '../types';\nimport { ArrowCircleLeft as ArrowCircleLeftIcon } from '@mui/icons-material';\nimport { useQuery } from '@tanstack/react-query';\nimport callAPI from '../../NewUI/Components/Utilities/callAPI';\nimport { getStatusColor } from '../helper';\nimport {\n genericTableReducer,\n initialTableState\n} from '../../NewUI/Components/GenericTable/genericTableReducer';\nimport { applicationColumns } from './Applications/config';\nimport { callPaginatedAPI } from '../../NewUI/Components/Utilities/callAPI';\nimport queryString from 'query-string';\n\nconst CandidatePoolAnalytics = ({\n selectedEmail,\n emailsDispatch,\n selectedCandidatePoolId\n}: {\n selectedEmail: TEmail;\n emailsDispatch: Dispatch<GenericTableAction>;\n selectedCandidatePoolId: number;\n}) => {\n const [modalTabValue, setModalTabValue] = useState<number>(0);\n const [snackbarState, setSnackbarState] = useState({\n message: '',\n state: 'success' as 'success' | 'error' | 'warning'\n });\n const [analyticsState, analyticsDispatch] = useReducer(\n genericTableReducer,\n initialTableState(applicationColumns, { sortBy: 'created_at', sortOrder: 'desc' })\n );\n\n const { data: emailAnalytics, isLoading: analyticsLoading } = useQuery({\n queryKey: ['candidateEmailAnalytics', selectedEmail.item.id],\n queryFn: () =>\n callAPI(\n `/api/v4/candidate_pools/${selectedCandidatePoolId}/email_batches/${selectedEmail.item.id}`,\n null,\n 'GET'\n ),\n onError: () =>\n setSnackbarState({\n message: `There was an error getting user analytics data`,\n state: 'error'\n }),\n refetchOnWindowFocus: false\n });\n\n const { data: emailTemplates, isLoading: emailTemplatesLoading } = useQuery({\n queryKey: ['emailTemplatesAnalytics'],\n queryFn: () =>\n callAPI(\n `/api/v4/candidate_pools/${selectedCandidatePoolId}/email_batches/${selectedEmail.item.id}/email_template`,\n null,\n 'GET'\n ),\n onError: () =>\n setSnackbarState({\n message: `There was an error getting user email template data`,\n state: 'error'\n }),\n refetchOnWindowFocus: false\n });\n\n const { data: applications, isLoading: fetchingApplications } = useQuery({\n queryKey: ['applicationsAnalytics', analyticsState.searchQuery, analyticsState.searchSettings],\n queryFn: () => {\n return callPaginatedAPI(\n `/api/v4/candidate_pools/${selectedCandidatePoolId}/email_batches/${\n selectedEmail.item.id\n }/applications?${queryString.stringify(\n {\n ...analyticsState.searchSettings,\n 'q[search]': analyticsState.searchQuery\n },\n {\n skipEmptyString: true,\n skipNull: true,\n arrayFormat: 'bracket',\n encode: false\n }\n )}`,\n null,\n 'GET'\n ) as Promise<ApplicationsAPIReturn>;\n },\n onError() {\n setSnackbarState({\n message: `There was an error retrieving applications`,\n state: 'error'\n });\n },\n refetchOnWindowFocus: false\n });\n\n return (\n <>\n <Box>\n <Box sx={{ ...classes.pageHeader, paddingLeft: '0' }}>\n <h1>{selectedEmail.item.email_template}</h1>\n </Box>\n <Box\n sx={{\n backgroundColor: getStatusColor(selectedEmail.item.status)[1],\n padding: '0.4rem 2.5rem',\n width: 'fit-content'\n }}\n >\n <Box\n sx={{\n color: getStatusColor(selectedEmail.item.status)[0],\n fontWeight: 'bold',\n fontSize: '18px'\n }}\n >\n {selectedEmail.item.status.toUpperCase()}\n </Box>\n </Box>\n <Tabs\n value={modalTabValue}\n onChange={(e, value) => setModalTabValue(value)}\n TabIndicatorProps={{\n sx: { maxWidth: modalTabValue === 2 ? '8.5em' : modalTabValue ? '7em' : '5em' }\n }}\n sx={{\n ...classes.tabs,\n '& .MuiTabs-indicator': {\n ...classes.tabIndicator\n },\n margin: '1rem 0 1.5rem 0',\n borderBottom: '1px solid #EEEEEE'\n }}\n >\n <Tab label=\"Analytics\" id=\"analytics-tab\" />\n <Tab label=\"Applications\" id=\"applications-tab\" />\n <Tab label=\"Email template\" id=\"email-template-tab\" />\n </Tabs>\n <Box\n sx={{ ...sharedClasses.navigateBackButton, marginBottom: '40px', marginLeft: '-10px' }}\n >\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n onClick={() => emailsDispatch({ type: 'REMOVE_SELECTED_ROW_DATA' })}\n >\n <IconButton sx={{ color: '#666666', fontSize: '28px' }}>\n <ArrowCircleLeftIcon />\n </IconButton>\n <Box id=\"back-to-pool-button\">Back to candidate pools</Box>\n </Stack>\n </Box>\n <Box>\n {modalTabValue === 0 && (\n <Analytics\n selectedEmail={selectedEmail}\n emailAnalytics={emailAnalytics}\n isLoading={analyticsLoading}\n />\n )}\n </Box>\n {modalTabValue === 1 && (\n <Applications\n isFetching={fetchingApplications}\n applications={applications}\n applicationsState={analyticsState}\n applicationsDispatch={analyticsDispatch}\n />\n )}\n {modalTabValue === 2 && (\n <EmailTemplates isLoading={emailTemplatesLoading} emailTemplate={emailTemplates} />\n )}\n </Box>\n <StyledSnackbar\n message={snackbarState.message}\n state={snackbarState.state}\n setSnackbarState={setSnackbarState}\n />\n </>\n );\n};\n\nexport default CandidatePoolAnalytics;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { TEmailTemplate } from '../../types';\nimport ReactLoading from 'react-loading';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport HtmlEditor from '../../../NewUI/Components/Utilities/HtmlEditor';\nimport AttachmentPreview from '../../../NewUI/Components/CustomUIElements/AttachmentsPreview';\n\nconst EmailTemplates = ({\n isLoading,\n emailTemplate\n}: {\n isLoading: boolean;\n emailTemplate: TEmailTemplate;\n}) => {\n return (\n <Box sx={{ marginTop: '-10px' }}>\n {isLoading ? (\n <Box\n sx={{\n height: '300px',\n margin: 'auto',\n alignItems: 'center',\n justifyContent: 'center',\n display: 'flex'\n }}\n >\n <ReactLoading type=\"spin\" color={theme.palette.primary.main} width={100} height={100} />\n </Box>\n ) : (\n <Box>\n <HtmlEditor\n readonlyEditor={{\n body: emailTemplate.body,\n styling: {\n '& .tox-editor-header, .tox-statusbar': { display: 'none !important' },\n '& .tox-tinymce': { height: '600px !important' }\n }\n }}\n />\n {emailTemplate.email_attachments && (\n <AttachmentPreview templateAttachments={emailTemplate.email_attachments} />\n )}\n </Box>\n )}\n </Box>\n );\n};\n\nexport default EmailTemplates;\n","import React, { Dispatch, useRef } from 'react';\nimport queryString from 'query-string';\nimport {\n GenericTableAction,\n GenericTableState\n} from '../../NewUI/Components/GenericTable/genericTableReducer';\nimport { classes } from '../styles';\nimport { CandidatePoolAPIReturn } from '../types';\nimport { candidatePoolActionsList, headerStyles, poolActionDrawerModals } from './config';\nimport { Box } from '@mui/material';\nimport GenericTable from '../../NewUI/Components/GenericTable/GenericTable';\nimport { IStyle } from '../../ThemeContext/ThemeObject';\nimport CandidatePoolsTableRows from './CandidatePoolsTableRows';\nimport SearchInput from '../../NewUI/Components/GenericTable/SearchInput';\nimport { getPreferences } from '../../NewUI/Components/GenericTable/utilities';\nimport { useQuery } from '@tanstack/react-query';\nimport { ISnackbarInput } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { callPaginatedAPI } from '../../NewUI/Components/Utilities/callAPI';\nimport ColumnSettings from '../../NewUI/Components/GenericTable/Dropdowns/ColumnSettings';\nimport TotalSelectedIndicatorWithActions from '../../NewUI/Components/GenericTable/TotalSelectedIndicatorWithActions';\nimport CreateNewPoolButton from './Modals/CreateNewPoolButton';\nimport ActionDrawerModals from './Modals/ActionDrawerModals';\nimport EmailIcon from '@mui/icons-material/Email';\nimport CandidatePoolsActionComponents from './CandidatePoolsActionComponents';\nimport ItemActionsDrawer from '../../NewUI/Components/GenericTable/ItemActionsDrawer';\nimport IndividualCandidatePoolModal from './Modals/CandidatePool/IndividualCandidatePoolModal';\n\nconst USER_PREFERENCE_SOURCE = 'candidate-pools';\n\nconst CandidatePools = ({\n individualCandidatePoolsState,\n individualCandidatePoolsDispatch,\n emailsState,\n emailsDispatch,\n candidatePoolsState,\n dispatch,\n setSnackbarState,\n modalTabValue,\n setModalTabValue\n}: {\n individualCandidatePoolsState: GenericTableState;\n individualCandidatePoolsDispatch: Dispatch<GenericTableAction>;\n emailsState: GenericTableState;\n emailsDispatch: Dispatch<GenericTableAction>;\n candidatePoolsState: GenericTableState;\n dispatch: Dispatch<GenericTableAction>;\n setSnackbarState: (snackbarState: ISnackbarInput) => void;\n modalTabValue: number;\n setModalTabValue: (i: number) => void;\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const { isFetched: fetchedPreferences } = useQuery({\n queryKey: ['candidatePoolPreferences'],\n queryFn: () => getPreferences(USER_PREFERENCE_SOURCE, dispatch),\n onError: () =>\n setSnackbarState({\n message: `There was an error getting user preference data`,\n state: 'error'\n }),\n refetchOnMount: false,\n refetchOnWindowFocus: false,\n refetchOnReconnect: false,\n staleTime: 3.6e6 // 1 hour\n });\n\n const {\n data: candidate_pools,\n isLoading: isLoadingPools,\n refetch\n } = useQuery({\n queryKey: [\n 'candidatePools',\n candidatePoolsState.searchQuery,\n candidatePoolsState.searchSettings\n ],\n queryFn: () =>\n callPaginatedAPI(\n `/api/v4/candidate_pools?${queryString.stringify(\n { ...candidatePoolsState.searchSettings, 'q[search]': candidatePoolsState.searchQuery },\n {\n skipEmptyString: true,\n skipNull: true,\n arrayFormat: 'bracket',\n encode: false\n }\n )}`,\n null,\n 'GET'\n ) as Promise<CandidatePoolAPIReturn>,\n onError() {\n setSnackbarState({\n message: `There was an error retrieving candidate pools, please refresh the page and try again.`,\n state: 'error'\n });\n },\n enabled: fetchedPreferences\n });\n\n return (\n <>\n <Box sx={classes.searchAndFiltersRow} ref={containerRef}>\n <SearchInput dispatch={dispatch} />\n <ColumnSettings\n tableState={candidatePoolsState.tableState}\n dispatch={dispatch}\n label=\"candidate-pools\"\n userPreferenceSource={USER_PREFERENCE_SOURCE}\n />\n <CreateNewPoolButton\n isOpen={candidatePoolsState.tableState.modalsOpen.newPool}\n onClick={() =>\n dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: 'newPool', isOpen: true }\n })\n }\n />\n </Box>\n <ItemActionsDrawer\n drawerOpen={candidatePoolsState.tableState.selectedItemIds.length > 0}\n dispatch={dispatch}\n actions={poolActionDrawerModals}\n label=\"candidate-pools\"\n />\n\n {(candidatePoolsState.tableState.actions.isOpen.candidatePool ||\n candidatePoolsState.tableState.actions.isOpen.emailAnalytics) && (\n <IndividualCandidatePoolModal\n isOpen={\n candidatePoolsState.tableState.actions.isOpen.candidatePool ||\n candidatePoolsState.tableState.actions.isOpen.emailAnalytics\n }\n selectedPool={candidatePoolsState.tableState.actions.selectedItem}\n handleClose={() => {\n dispatch({\n type: 'CLOSE_ACTION_ITEM',\n payload: 'emailAnalytics'\n });\n dispatch({\n type: 'CLOSE_ACTION_ITEM',\n payload: 'candidatePool'\n });\n setModalTabValue(0);\n }}\n setSnackbarState={setSnackbarState}\n refetch={refetch}\n individualCandidatePoolsState={individualCandidatePoolsState}\n individualCandidatePoolsDispatch={individualCandidatePoolsDispatch}\n emailsState={emailsState}\n emailsDispatch={emailsDispatch}\n modalTabValue={modalTabValue}\n setModalTabValue={setModalTabValue}\n />\n )}\n <GenericTable\n items={candidate_pools?.data.candidate_pools || []}\n isLoadingItems={isLoadingPools}\n dispatch={dispatch}\n tableState={candidatePoolsState.tableState}\n paginationState={candidatePoolsState.searchSettings}\n pagination={{\n totalItems: candidate_pools?.totalItems || 0,\n totalPages: candidate_pools?.totalPages || 0\n }}\n headerStyle={headerStyles as (id: string, tableHovered: boolean) => IStyle}\n TableRows={CandidatePoolsTableRows}\n TableActionList={candidatePoolActionsList}\n label=\"candidate pools\"\n titleCellId=\"title\"\n userPreferenceSource={USER_PREFERENCE_SOURCE}\n />\n <TotalSelectedIndicatorWithActions\n totalSelected={candidatePoolsState.tableState.selectedItemIds.length}\n parentDiv={containerRef.current}\n dispatch={dispatch}\n actionButtonsList={[\n {\n id: 'email',\n label: 'Email',\n icon: <EmailIcon />\n }\n ]}\n actionButtonId=\"email-pool-button\"\n />\n <CandidatePoolsActionComponents\n actionsState={candidatePoolsState.tableState.actions}\n dispatch={dispatch}\n setSnackbarState={setSnackbarState}\n />\n <ActionDrawerModals\n tableState={candidatePoolsState.tableState}\n dispatch={dispatch}\n setSnackbarState={setSnackbarState}\n />\n </>\n );\n};\n\nexport default CandidatePools;\n","import React, { Dispatch } from 'react';\nimport {\n GenericTableAction,\n GenericTableState\n} from '../../NewUI/Components/GenericTable/genericTableReducer';\nimport AddNoteWithSubjectLine from '../../NewUI/Components/GenericTable/TablePopovers/AddNoteWithSubjectLine';\nimport MoreOptionsList from '../../NewUI/Components/GenericTable/TablePopovers/MoreOptionsList';\nimport GenericDialog from '../../NewUI/Components/Modals/GenericDialog';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport callAPI from '../../NewUI/Components/Utilities/callAPI';\nimport { ISnackbarInput } from '../../NewUI/Components/CustomUIElements/StyledSnackbar';\n\nconst CandidatePoolsActionComponents = ({\n actionsState,\n dispatch,\n setSnackbarState\n}: {\n actionsState: GenericTableState['tableState']['actions'];\n dispatch: Dispatch<GenericTableAction>;\n setSnackbarState: (snackbarState: ISnackbarInput) => void;\n}) => {\n const queryClient = useQueryClient();\n const { mutate: handleDeletePool, isLoading: deletingPool } = useMutation({\n mutationFn: () =>\n callAPI(`/api/v4/candidate_pools/${actionsState?.selectedItem?.id}`, null, 'DELETE'),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['candidatePools'] });\n dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'deletePool' });\n },\n onError: () =>\n setSnackbarState({\n message: `There was an error deleting the candidate pool`,\n state: 'error'\n })\n });\n return (\n <>\n <AddNoteWithSubjectLine\n dispatch={dispatch}\n isOpen={actionsState?.isOpen?.addNote}\n anchorEl={actionsState?.anchorEl}\n itemId={actionsState?.selectedItem?.id || 0}\n url=\"/api/v4/candidate_pools/add_note\"\n queryKey=\"candidatePools\"\n />\n <MoreOptionsList\n options={[\n {\n id: 'deletePool',\n label: 'Delete',\n action: () => {\n dispatch({\n type: 'SELECT_ACTION_ITEM',\n payload: {\n item: actionsState?.selectedItem,\n name: 'deletePool',\n anchorEl: null\n }\n });\n }\n }\n ]}\n actionsState={actionsState}\n dispatch={dispatch}\n label=\"candidate-pools\"\n />\n <GenericDialog\n isDialogOpen={actionsState?.isOpen?.deletePool}\n setDialogOpen={() => dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'deletePool' })}\n title=\"Delete Candidate Pool\"\n description={`Are you sure you want to delete the ${actionsState?.selectedItem?.title} candidate pool?`}\n buttonCallback={() => handleDeletePool()}\n callbackLoading={deletingPool}\n url=\"\"\n buttonText=\"Delete\"\n />\n </>\n );\n};\n\nexport default CandidatePoolsActionComponents;\n","import React, { Dispatch } from 'react';\nimport {\n GenericTableState,\n GenericTableAction\n} from '../../NewUI/Components/GenericTable/genericTableReducer';\nimport { TCandidatePool } from '../types';\nimport { TableCell } from '@mui/material';\nimport { classes } from '../../NewUI/Components/GenericTable/styles';\nimport { TagList } from '../../NewUI/Components/CustomUIElements/TagList/TagList';\nimport FormattedDate from '../../NewUI/Components/GenericTable/TableCells/FormattedDate';\nimport NotesWithSubjectLine from '../../NewUI/Components/GenericTable/TableCells/NotesWithSubjectLine';\n\nconst CandidatePoolsTableRows = ({\n column,\n item,\n tableHovered,\n dispatch\n}: {\n column: GenericTableState['tableState']['columns'][number];\n item: TCandidatePool;\n tableHovered: boolean;\n dispatch?: Dispatch<GenericTableAction>;\n}) => {\n const candidateCountCell = (item: TCandidatePool) => {\n if (typeof item.candidates_count === 'number') {\n if (typeof item.new_candidates === 'number') {\n return `${item.candidates_count} (${item.new_candidates})`;\n } else {\n return item.candidates_count;\n }\n }\n return '-';\n };\n if (!column.enabled) return null;\n switch (column.id) {\n case 'title': {\n return (\n <TableCell\n key={item.id + column.id}\n sx={{\n ...classes.sticky,\n ...classes.itemTitleTableCell,\n left: '58px',\n ...(tableHovered && classes.scrollShadowVisible),\n cursor: 'pointer'\n }}\n onClick={() => {\n dispatch &&\n dispatch({\n type: 'SELECT_ACTION_ITEM',\n payload: { name: 'candidatePool', item: item, anchorEl: null }\n });\n }}\n >\n {item.title || '-'}\n </TableCell>\n );\n }\n case 'candidates_count':\n return (\n <TableCell\n sx={{ textAlign: 'right', paddingRight: '37px !important' }}\n key={item.id + column.id}\n >\n {candidateCountCell(item)}\n </TableCell>\n );\n case 'pool_tags':\n return (\n <TableCell>{item.pool_tags?.length ? <TagList tags={item.pool_tags} /> : '-'}</TableCell>\n );\n case 'created_at':\n return (\n <TableCell key={item.id + column.id}>\n {item.created_at ? <FormattedDate date={item.created_at} /> : '-'}\n </TableCell>\n );\n case 'last_email_date':\n return (\n <TableCell key={item.id + column.id}>\n {item.last_email_date ? <FormattedDate date={item.last_email_date} /> : '-'}\n </TableCell>\n );\n case 'notes':\n return (\n <TableCell sx={{ maxWidth: '280px' }}>\n {item.notes?.length ? <NotesWithSubjectLine notes={item.notes} /> : '-'}\n </TableCell>\n );\n default:\n return <TableCell></TableCell>;\n }\n};\n\nexport default CandidatePoolsTableRows;\n","import React, { Dispatch } from 'react';\nimport { GenericTableState } from '../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { TableActionDrawerAction } from '../../../NewUI/Components/GenericTable/types';\nimport CreateNewPoolModal from './CreateNewPoolModal';\nimport { ISnackbarInput } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport EmailCandidate from '../../SharedComponents/Modals/EmailCandidate';\nimport DownloadModal from '../../../NewUI/Components/Modals/DownloadModal';\nimport callAPI from '../../../NewUI/Components/Utilities/callAPI';\nimport ExternalEmail from '../../SharedComponents/Modals/ExternalEmail';\n\nconst ActionDrawerModals = ({\n tableState,\n dispatch,\n setSnackbarState\n}: {\n tableState: GenericTableState['tableState'];\n dispatch: Dispatch<TableActionDrawerAction>;\n setSnackbarState: (snackbarState: ISnackbarInput) => void;\n}) => {\n const downloadAPICall = async (type: string) => {\n if (type === 'attachments') {\n const { zip_file } = await callAPI(\n '/api/v4/candidate_pools/zip_attachments',\n { candidate_pool_ids: tableState.selectedItemIds },\n 'POST'\n );\n return zip_file.id;\n } else if (type === 'pdf') {\n const response = await callAPI(\n '/api/v4/candidate_pools/export_pdf',\n { candidate_pool_ids: tableState.selectedItemIds },\n 'POST'\n );\n return response.success || response.errors || 'Something went wrong';\n } else if (type === 'attachmentsInPdf') {\n const response = await callAPI(\n '/api/v4/candidate_pools/export_pdf',\n { candidate_pool_ids: tableState.selectedItemIds, attachments_in_pdf: true },\n 'POST'\n );\n return response.success || response.errors || 'Something went wrong';\n }\n };\n\n return (\n <>\n <CreateNewPoolModal\n isOpen={tableState.modalsOpen?.newPool}\n handleClose={() =>\n dispatch({ type: 'SET_ACTION_MODAL_OPEN', payload: { name: 'newPool', isOpen: false } })\n }\n setSnackbarState={setSnackbarState}\n />\n <ExternalEmail\n isOpen={tableState.modalsOpen.externalEmail}\n dispatch={dispatch}\n selectedPoolIds={tableState.selectedItemIds}\n apiUrl=\"/api/v4/candidate_pools/bulk_external_email\"\n /> \n <EmailCandidate\n isOpen={tableState.modalsOpen?.email || tableState.actions?.isOpen?.email}\n dispatch={dispatch}\n selectedPoolIds={\n !tableState.actions?.isOpen?.email\n ? tableState.selectedItemIds\n : [tableState.actions?.selectedItem?.id || -1]\n }\n openedFromTableActions={tableState.actions?.isOpen?.email}\n setSnackbarState={setSnackbarState}\n showTotalSelectedCandidates={false}\n />\n <DownloadModal\n type=\"attachments\"\n isOpen={tableState.modalsOpen?.downloadAttachments}\n handleClose={() =>\n dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: 'downloadAttachments', isOpen: false }\n })\n }\n downloadAPICall={downloadAPICall}\n />\n <DownloadModal\n type=\"attachmentsInPdf\"\n isOpen={tableState.modalsOpen?.exportAttachments}\n handleClose={() =>\n dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: 'exportAttachments', isOpen: false }\n })\n }\n downloadAPICall={downloadAPICall}\n emailFallback={true}\n />\n <DownloadModal\n type=\"pdf\"\n isOpen={tableState.modalsOpen?.exportAsPdf}\n handleClose={() =>\n dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: 'exportAsPdf', isOpen: false }\n })\n }\n downloadAPICall={downloadAPICall}\n emailFallback={true}\n />\n </>\n );\n};\n\nexport default ActionDrawerModals;\n","import React from 'react';\nimport { GenericTableState } from '../../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { TCandidatePool } from '../../../types';\nimport { TableCell } from '@mui/material';\nimport { classes } from '../../../../NewUI/Components/GenericTable/styles';\nimport FormattedDate from '../../../../NewUI/Components/GenericTable/TableCells/FormattedDate';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\nconst CandidatePoolsTableRows = ({\n column,\n item,\n tableHovered\n}: {\n column: GenericTableState['tableState']['columns'][number];\n item: TCandidatePool;\n tableHovered: boolean;\n}) => {\n if (!column.enabled) return null;\n\n switch (column.id) {\n case 'candidate_name': {\n return (\n <TableCell\n id=\"individual-candidate-name\"\n key={item.id + column.id}\n sx={{\n ...classes.sticky,\n ...classes.itemTitleTableCell,\n left: '58px',\n ...(tableHovered && classes.scrollShadowVisible),\n cursor: 'pointer',\n width: '150px'\n }}\n >\n {item?.candidate_name ? (\n <a href={item.candidate_link} target=\"_blank\" rel=\"noreferrer\">\n {item.candidate_name}\n </a>\n ) : (\n '-'\n )}\n </TableCell>\n );\n }\n case 'candidate_email': {\n return <TableCell key={item.id + column.id}>{item.candidate_email || '-'}</TableCell>;\n }\n case 'added_date': {\n return (\n <TableCell key={item.id + column.id}>\n {item.added_date ? <FormattedDate date={item.added_date} /> : '-'}\n </TableCell>\n );\n }\n case 'postcode': {\n return <TableCell key={item.id + column.id}>{item.postcode || '-'}</TableCell>;\n }\n case 'location': {\n return <TableCell key={item.id + column.id}>{item.location || '-'}</TableCell>;\n }\n case 'candidate_phone_number':\n return <TableCell key={item.id + column.id}>{item.candidate_phone_number || '-'}</TableCell>;\n case 'unsubscribed': {\n return (\n <TableCell\n sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n marginTop: '10px',\n color: theme.palette.common.black\n }}\n key={item.id + column.id}\n >\n {item.unsubscribed ? 'Yes' : 'No'}\n </TableCell>\n );\n }\n default:\n return <TableCell></TableCell>;\n }\n};\n\nexport default CandidatePoolsTableRows;\n","import React, { Dispatch } from 'react';\nimport AttachmentsList from '../../../../NewUI/Components/GenericTable/TablePopovers/AttachmentsList';\nimport {\n GenericTableAction,\n GenericTableState\n} from '../../../../NewUI/Components/GenericTable/genericTableReducer';\n\nconst CandidateTabTableActionComponents = ({\n actionsState,\n dispatch\n}: {\n actionsState: GenericTableState;\n dispatch: Dispatch<GenericTableAction>;\n}) => {\n return (\n <AttachmentsList\n attachments={actionsState?.tableState?.actions?.selectedItem?.attachment_url || []}\n isOpen={actionsState.tableState.actions.isOpen.viewAttachments}\n handleClose={() => dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'viewAttachments' })}\n anchorEl={actionsState?.tableState.actions.anchorEl}\n />\n );\n};\n\nexport default CandidateTabTableActionComponents;\n","import React, { Dispatch } from 'react';\nimport { TCandidate } from '../../../types';\nimport { Box } from '@mui/material';\nimport { ISnackbarInput } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { CandidatePoolAPIReturn } from '../../../types';\nimport { callPaginatedAPI } from '../../../../NewUI/Components/Utilities/callAPI';\nimport callAPI from '../../../../NewUI/Components/Utilities/callAPI';\nimport queryString from 'query-string';\nimport {\n GenericTableAction,\n GenericTableState\n} from '../../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { headerStyles } from './candidatesConfig';\nimport CandidatePoolsTableRows from './CandidatePoolsTableRows';\nimport { IStyle } from '../../../../ThemeContext/ThemeObject';\nimport GenericTable from '../../../../NewUI/Components/GenericTable/GenericTable';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport TotalSelectedIndicatorWithActions from '../../../../NewUI/Components/GenericTable/TotalSelectedIndicatorWithActions';\nimport SearchInput from '../../../../NewUI/Components/GenericTable/SearchInput';\nimport AttachFileIcon from '@mui/icons-material/AttachFile';\nimport CandidateTabTableActionComponents from './CandidateTabTableActionComponents';\n\nconst IndividualCandidatePoolModal = ({\n isOpen,\n setSnackbarState,\n selectedPool,\n candidatePoolsState,\n candidatePoolsDispatch\n}: {\n isOpen: boolean;\n setSnackbarState: (snackbarState: ISnackbarInput) => void;\n selectedPool: {\n candidates: TCandidate;\n id: number;\n title: string;\n };\n candidatePoolsState: GenericTableState;\n candidatePoolsDispatch: Dispatch<GenericTableAction>;\n}) => {\n const queryClient = useQueryClient();\n const { data: candidate_pools, isFetching } = useQuery({\n queryKey: [\n 'individualCandidatePools',\n candidatePoolsState.searchQuery,\n candidatePoolsState.searchSettings\n ],\n queryFn: () => {\n return callPaginatedAPI(\n `/api/v4/candidate_pool_assignments?${queryString.stringify(\n {\n ...candidatePoolsState.searchSettings,\n q: candidatePoolsState.searchQuery,\n candidate_pool_id: selectedPool.id\n },\n {\n skipEmptyString: true,\n skipNull: true,\n arrayFormat: 'bracket',\n encode: false\n }\n )}`,\n null,\n 'GET'\n ) as Promise<CandidatePoolAPIReturn>;\n },\n onError() {\n setSnackbarState({\n message: `There was an error retrieving candidate pools, please refresh the page and try again.`,\n state: 'error'\n });\n },\n enabled: isOpen\n });\n\n const { mutate: deleteCandidate } = useMutation({\n mutationFn: (id: number[]) =>\n callAPI(`/api/v4/candidate_pools/bulk_remove_candidates`, { assignment_ids: id }, 'POST'),\n onSuccess: () => queryClient.invalidateQueries({ queryKey: ['individualCandidatePools'] }),\n onError() {\n setSnackbarState({\n message: `There was an error deleting the candidate pool, please refresh the page and try again.`,\n state: 'error'\n });\n }\n });\n\n return (\n <Box>\n <SearchInput dispatch={candidatePoolsDispatch} id=\"search-box-candidate-tab\" />\n <GenericTable\n items={candidate_pools?.data?.candidate_pool_assignments || []}\n isLoadingItems={isFetching}\n dispatch={candidatePoolsDispatch}\n tableState={candidatePoolsState.tableState}\n paginationState={candidatePoolsState.searchSettings}\n pagination={{\n totalItems: candidate_pools?.totalItems || 0,\n totalPages: candidate_pools?.totalPages || 0\n }}\n headerStyle={headerStyles as (id: string, tableHovered: boolean) => IStyle}\n TableRows={CandidatePoolsTableRows}\n TableActionList={[\n {\n id: 'delete',\n tooltipLabel: 'Delete',\n elementId: 'delete-individual-candidate-button',\n icon: <DeleteIcon />,\n actionCall: (item) => item?.id && deleteCandidate([item?.id])\n },\n {\n id: 'viewAttachments',\n tooltipLabel: 'View Attachments',\n icon: <AttachFileIcon />\n }\n ]}\n label=\"candidates\"\n titleCellId=\"candidate_name\"\n allowMultipleSelection={candidate_pools?.totalItems ? true : false}\n customEmptyStateMessage=\"available in this pool\"\n />\n <TotalSelectedIndicatorWithActions\n totalSelected={candidatePoolsState.tableState.selectedItemIds.length}\n parentDiv={null}\n dispatch={candidatePoolsDispatch}\n actionButtonId=\"delete-candidate-action-button\"\n actionButtonsList={[\n {\n id: 'delete',\n label: 'Delete',\n icon: <DeleteIcon />\n }\n ]}\n actionCall={() => {\n deleteCandidate(candidatePoolsState.tableState.selectedItemIds);\n candidatePoolsDispatch({\n type: 'REMOVE_ALL_PAGE_ITEMS',\n payload: candidatePoolsState.tableState.selectedItemIds\n });\n }}\n />\n <CandidateTabTableActionComponents\n actionsState={candidatePoolsState}\n dispatch={candidatePoolsDispatch}\n />\n </Box>\n );\n};\n\nexport default IndividualCandidatePoolModal;\n","import React, { Dispatch } from 'react';\nimport { TCandidate } from '../../../types';\nimport { Box } from '@mui/material';\nimport { ISnackbarInput } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { useQuery } from '@tanstack/react-query';\nimport { CandidatePoolAPIReturn } from '../../../types';\nimport { callPaginatedAPI } from '../../../../NewUI/Components/Utilities/callAPI';\nimport queryString from 'query-string';\nimport {\n GenericTableAction,\n GenericTableState\n} from '../../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { headerStyles } from './emailConfig';\nimport EmailsTableRows from './EmailsTableRows';\nimport { IStyle } from '../../../../ThemeContext/ThemeObject';\nimport GenericTable from '../../../../NewUI/Components/GenericTable/GenericTable';\nimport SearchInput from '../../../../NewUI/Components/GenericTable/SearchInput';\n\nconst CandidatePoolEmailsModal = ({\n isOpen,\n setSnackbarState,\n selectedPool,\n emailsState,\n emailsDispatch\n}: {\n isOpen: boolean;\n setSnackbarState: (snackbarState: ISnackbarInput) => void;\n selectedPool: {\n candidates: TCandidate;\n id: number;\n title: string;\n };\n emailsState: GenericTableState;\n emailsDispatch: Dispatch<GenericTableAction>;\n}) => {\n const { data: emails, isFetching } = useQuery({\n queryKey: ['candidatePoolEmails', emailsState.searchQuery, emailsState.searchSettings],\n queryFn: () => {\n return callPaginatedAPI(\n `/api/v4/candidate_pools/${selectedPool.id}/email_batches?${queryString.stringify(\n {\n ...emailsState.searchSettings,\n 'q[search]': emailsState.searchQuery\n },\n {\n skipEmptyString: true,\n skipNull: true,\n arrayFormat: 'bracket',\n encode: false\n }\n )}`,\n null,\n 'GET'\n ) as Promise<CandidatePoolAPIReturn>;\n },\n onError() {\n setSnackbarState({\n message: `There was an error retrieving candidate pool emails, please refresh the page and try again.`,\n state: 'error'\n });\n },\n enabled: isOpen,\n refetchOnMount: true,\n refetchOnReconnect: false,\n refetchOnWindowFocus: false\n });\n\n return (\n <Box>\n <SearchInput dispatch={emailsDispatch} id=\"search-box-emails-tab\" />\n <GenericTable\n items={emails?.data?.analytics || []}\n isLoadingItems={isFetching}\n dispatch={emailsDispatch}\n tableState={emailsState.tableState}\n paginationState={emailsState.searchSettings}\n pagination={{\n totalItems: emails?.totalItems || 0,\n totalPages: emails?.totalPages || 0\n }}\n headerStyle={headerStyles as (id: string, tableHovered: boolean) => IStyle}\n TableRows={EmailsTableRows}\n label=\"emails\"\n titleCellId=\"email_template\"\n allowMultipleSelection={false}\n customEmptyStateMessage=\"have been sent yet\"\n />\n </Box>\n );\n};\n\nexport default CandidatePoolEmailsModal;\n","import React, { Dispatch } from 'react';\nimport {\n GenericTableState,\n GenericTableAction\n} from '../../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { TEmail } from '../../../types';\nimport { TableCell, Box, Tooltip } from '@mui/material';\nimport { classes } from '../../../../NewUI/Components/GenericTable/styles';\nimport FormattedDate from '../../../../NewUI/Components/GenericTable/TableCells/FormattedDate';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport EmailIcon from '@mui/icons-material/Email';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport { getStatusColor } from '../../../helper';\n\nconst CandidatePoolsTableRows = ({\n column,\n item,\n tableHovered,\n dispatch\n}: {\n column: GenericTableState['tableState']['columns'][number];\n item: TEmail['item'];\n tableHovered: boolean;\n dispatch?: Dispatch<GenericTableAction>;\n}) => {\n if (!column.enabled) return null;\n switch (column.id) {\n case 'email_template': {\n return (\n <TableCell\n key={`${(item.id, column.id)}`}\n sx={{\n ...classes.sticky,\n ...classes.itemTitleTableCell,\n left: '0px',\n ...(tableHovered && classes.scrollShadowVisible),\n cursor: 'pointer',\n width: '150px'\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Tooltip title={item.status} placement=\"top\" arrow>\n <Box\n id=\"email-status-icon\"\n sx={{\n borderRadius: '6px',\n padding: '6px',\n backgroundColor: `${getStatusColor(item.status)[0]}33`\n }}\n >\n <EmailIcon sx={{ color: getStatusColor(item.status)[0] }} fontSize=\"small\" />\n </Box>\n </Tooltip>\n <Tooltip title={'Click here to see email Analytics'} placement=\"top\" arrow>\n <Box\n id=\"email-template-name-link\"\n onClick={() => {\n dispatch &&\n dispatch({\n type: 'SET_SELECTED_ROW_DATA',\n payload: { name: item.email_template, item: item }\n });\n }}\n sx={{\n paddingLeft: '20px',\n fontWeight: 'bold',\n color: '#666666',\n '&& span:hover': {\n textDecoration: 'underline'\n }\n }}\n >\n <span>{item.email_template || '-'}</span>\n </Box>\n </Tooltip>\n </Box>\n </TableCell>\n );\n }\n case 'user': {\n return (\n <TableCell id=\"user-name-link\" key={`${(item.id, column.id)}`}>\n {item?.user?.name ? (\n <a href={item.user.link} target=\"_blank\" rel=\"noreferrer\">\n {item.user.name}\n </a>\n ) : (\n '-'\n )}\n </TableCell>\n );\n }\n case 'only_new': {\n return (\n <TableCell key={`${(item.id, column.id)}`}>\n <Box sx={classes.centerCellContent}>\n {item.only_new ? (\n <CheckCircleIcon sx={{ color: theme.palette.success.main }} fontSize=\"small\" />\n ) : (\n <CancelIcon sx={{ color: theme.palette.error.main }} fontSize=\"small\" />\n )}\n </Box>\n </TableCell>\n );\n }\n case 'include_deleted': {\n return (\n <TableCell key={`${(item.id, column.id)}`}>\n <Box sx={classes.centerCellContent}>\n {item.include_deleted ? (\n <CheckCircleIcon sx={{ color: theme.palette.success.main }} fontSize=\"small\" />\n ) : (\n <CancelIcon sx={{ color: theme.palette.error.main }} fontSize=\"small\" />\n )}\n </Box>\n </TableCell>\n );\n }\n case 'applications': {\n return (\n <TableCell sx={{ textAlign: 'right' }} key={`${(item.id, column.id)}`}>\n {item.applications || '-'}\n </TableCell>\n );\n }\n case 'delayed_to': {\n return <TableCell key={`${(item.id, column.id)}`}>{item.delayed_to || '-'}</TableCell>;\n }\n case 'created_at': {\n return (\n <TableCell key={`${(item.id, column.id)}`}>\n {item.created_at ? <FormattedDate date={item.created_at} /> : '-'}\n </TableCell>\n );\n }\n default:\n return <TableCell></TableCell>;\n }\n};\n\nexport default CandidatePoolsTableRows;\n","import React, { useState, Dispatch, useRef } from 'react';\nimport { TCandidate } from '../../../types';\nimport StyledModal from '../../../../NewUI/Components/GenericModal/StyledModal';\nimport ModalFooterButtons from '../../../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport { Box, Tabs, Tab } from '@mui/material';\nimport { FormTextField } from '../../../../NewUI/Components/CustomUIElements/FormTextField';\nimport {\n GenericTableState,\n GenericTableAction\n} from '../../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { ISnackbarInput } from '../../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { sharedClasses } from '../../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport callAPI from '../../../../NewUI/Components/Utilities/callAPI';\nimport { initialTableState } from '../../../../NewUI/Components/GenericTable/genericTableReducer';\nimport { individualCandidatePoolsColumns } from './candidatesConfig';\nimport { classes } from '../../../styles';\nimport CandidateTab from './CandidatesTab';\nimport EmailTab from './EmailTab';\n\nconst IndividualCandidatePoolModal = ({\n isOpen,\n selectedPool,\n individualCandidatePoolsState,\n individualCandidatePoolsDispatch,\n emailsState,\n emailsDispatch,\n handleClose,\n setSnackbarState,\n refetch,\n modalTabValue,\n setModalTabValue\n}: {\n isOpen: boolean;\n individualCandidatePoolsState: GenericTableState;\n individualCandidatePoolsDispatch: Dispatch<GenericTableAction>;\n emailsState: GenericTableState;\n emailsDispatch: Dispatch<GenericTableAction>;\n selectedPool: {\n candidates: TCandidate;\n id: number;\n title: string;\n };\n handleClose: () => void;\n setSnackbarState: (snackbarState: ISnackbarInput) => void;\n refetch: () => void;\n modalTabValue: number;\n setModalTabValue: (i: number) => void;\n}) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [poolName, setPoolName] = useState<string>(selectedPool?.title);\n\n const queryClient = useQueryClient();\n\n const { mutate: updatedCandidatePool, isLoading: isLoadingUpdatePool } = useMutation({\n mutationFn: (data: string) =>\n callAPI(`/api/v4/candidate_pools/${selectedPool.id}`, { title: data }, 'PUT'),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['individualCandidatePools'] });\n handleClose();\n },\n onError() {\n setSnackbarState({\n message: `There was an error updating the candidate pool, please refresh the page and try again.`,\n state: 'error'\n });\n }\n });\n\n return (\n <StyledModal\n isOpen={isOpen}\n handleClose={() => {\n individualCandidatePoolsDispatch({\n type: 'SET_DEFAULT_DATA',\n payload: initialTableState(individualCandidatePoolsColumns, {\n sortBy: 'created_at',\n sortOrder: 'desc'\n })\n });\n handleClose();\n refetch();\n }}\n label=\"Create new candidate pool\"\n modalTitle=\"Candidate Pool\"\n styleOverrides={{\n maxWidth: '1100px',\n maxHeight: '1100px'\n }}\n subHeaderStyling={false}\n >\n <Box\n sx={{\n ...sharedClasses.mainModalContent,\n height: '100%',\n paddingInline: '2px',\n marginTop: '15px'\n }}\n ref={containerRef}\n >\n <FormTextField\n id=\"pool-name\"\n label=\"Candidate pool name\"\n value={poolName}\n onChange={(e) => setPoolName(e.target.value)}\n styles={{ width: '290px' }}\n />\n <Tabs\n value={modalTabValue}\n onChange={(e, value) => setModalTabValue(value)}\n TabIndicatorProps={{\n sx: { maxWidth: modalTabValue ? '4.8em' : '5.75em' }\n }}\n sx={{\n ...classes.tabs,\n '& .MuiTabs-indicator': {\n ...classes.tabIndicator\n },\n margin: '1rem 0 2.5rem 0',\n borderBottom: '1px solid #EEEEEE'\n }}\n >\n <Tab label=\"Candidate\" id=\"candidate-tab\" />\n <Tab label=\"Emails\" id=\"emails-tab\" />\n </Tabs>\n {modalTabValue ? (\n <EmailTab\n isOpen={isOpen}\n setSnackbarState={setSnackbarState}\n selectedPool={selectedPool}\n emailsState={emailsState}\n emailsDispatch={emailsDispatch}\n />\n ) : (\n <CandidateTab\n isOpen={isOpen}\n setSnackbarState={setSnackbarState}\n selectedPool={selectedPool}\n candidatePoolsState={individualCandidatePoolsState}\n candidatePoolsDispatch={individualCandidatePoolsDispatch}\n />\n )}\n </Box>\n <ModalFooterButtons\n primaryButtonText=\"Update\"\n secondaryButtonText=\"Cancel\"\n primaryButtonCallback={() => updatedCandidatePool(poolName)}\n secondaryButtonCallback={handleClose}\n primaryButtonID=\"update-candidate-pool-button\"\n secondaryButtonID=\"cancel-candidate-pool-button\"\n primaryButtonDisabled={!poolName}\n isLoading={isLoadingUpdatePool}\n />\n </StyledModal>\n );\n};\n\nexport default IndividualCandidatePoolModal;\n","import { SxProps } from '@mui/material';\nimport { classes } from '../../../../NewUI/Components/GenericTable/styles';\n\nexport const individualCandidatePoolsColumns = [\n {\n id: 'candidate_name',\n label: 'Name',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'candidate_email',\n label: 'Email',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'added_date',\n label: 'Date Added',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'postcode',\n label: 'Postcode',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'candidate_phone_number',\n label: 'Phone',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'location',\n label: 'Location',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'unsubscribed',\n label: 'Unsubscribed',\n sortable: true,\n canToggle: false,\n enabled: true\n }\n];\n\nexport const headerStyles = (\n name: (typeof individualCandidatePoolsColumns)[number]['id'] | 'checkbox' | 'actions',\n tableHovered: boolean\n): SxProps => {\n switch (name) {\n case 'checkbox':\n return { ...classes.sticky, width: '58px' };\n case 'candidate_name':\n return { ...classes.sticky, ...classes.itemTitleTableCell, left: '58px', minWidth: '150px' };\n case 'candidate_email':\n return { minWidth: '150px' };\n case 'added_date':\n return { minWidth: '100px' };\n case 'postcode':\n return { minWidth: '100px' };\n case 'location':\n return { minWidth: '100px' };\n case 'unsubscribed':\n return { minWidth: '100px' };\n case 'actions':\n return {\n ...classes.actionsColumnHeader,\n ...(tableHovered && classes.scrollShadowVisible)\n };\n default:\n return { minWidth: '90px' };\n }\n};\n","import { SxProps } from '@mui/material';\nimport { classes } from '../../../../NewUI/Components/GenericTable/styles';\n\nexport const emailsColumns = [\n {\n id: 'email_template',\n label: 'Email Template',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'user',\n label: 'User',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'only_new',\n label: 'Recently Added Candidates',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'include_deleted',\n label: 'Include Trashed Applications',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'applications',\n label: 'Applications',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'delayed_to',\n label: 'Delayed to',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'created_at',\n label: 'Created at',\n sortable: true,\n canToggle: false,\n enabled: true\n }\n];\n\nexport const headerStyles = (\n name: (typeof emailsColumns)[number]['id'] | 'checkbox' | 'actions',\n tableHovered: boolean\n): SxProps => {\n switch (name) {\n case 'email_template':\n return {\n ...classes.sticky,\n ...classes.itemTitleTableCell,\n left: '0',\n minWidth: '180px',\n paddingLeft: '60px !important',\n '& span': {\n width: '130px'\n }\n };\n case 'user':\n return { minWidth: '150px' };\n case 'only_new':\n return { minWidth: '120px' };\n case 'include_deleted':\n return { minWidth: '100px' };\n case 'applications':\n return { minWidth: '100px' };\n case 'delayed_to':\n return { minWidth: '120px' };\n case 'created_at':\n return { minWidth: '130px' };\n case 'actions':\n return {\n ...classes.actionsColumnHeader,\n ...(tableHovered && classes.scrollShadowVisible)\n };\n default:\n return { minWidth: '90px' };\n }\n};\n","import React from 'react';\nimport { IconButton, SvgIcon, Tooltip } from '@mui/material';\nimport { classes } from '../../../NewUI/Components/GenericTable/Dropdowns/styles';\n\nconst CreateNewPoolButton = ({ isOpen, onClick }: { isOpen: boolean; onClick: () => void }) => {\n return (\n <Tooltip title=\"Create new pool\" placement=\"top\" arrow>\n <IconButton\n id={`create-new-pool-button`}\n sx={isOpen ? { ...classes.iconButton, ...classes.iconButtonOpen } : classes.iconButton}\n onClick={onClick}\n >\n <SvgIcon sx={{ fontSize: '37px !important', transform: 'translate(2px, 4px) !important' }}>\n <svg\n width=\"27\"\n height=\"27\"\n viewBox=\"0 0 27 27\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M15.75 10.125H4.5C3.88125 10.125 3.375 10.6312 3.375 11.25C3.375 11.8688 3.88125 12.375 4.5 12.375H15.75C16.3687 12.375 16.875 11.8688 16.875 11.25C16.875 10.6312 16.3687 10.125 15.75 10.125ZM15.75 5.625H4.5C3.88125 5.625 3.375 6.13125 3.375 6.75C3.375 7.36875 3.88125 7.875 4.5 7.875H15.75C16.3687 7.875 16.875 7.36875 16.875 6.75C16.875 6.13125 16.3687 5.625 15.75 5.625ZM4.5 16.875H11.25C11.8687 16.875 12.375 16.3687 12.375 15.75C12.375 15.1313 11.8687 14.625 11.25 14.625H4.5C3.88125 14.625 3.375 15.1313 3.375 15.75C3.375 16.3687 3.88125 16.875 4.5 16.875Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M21.75 13.125H14.25C13.7297 13.125 13.3172 13.5422 13.3172 14.0625L13.3125 19.6875C13.3125 20.2078 13.7297 20.625 14.25 20.625H21.75C22.2703 20.625 22.6875 20.2078 22.6875 19.6875V14.0625C22.6875 13.5422 22.2703 13.125 21.75 13.125ZM16.3594 17.9109C16.3594 18.1125 16.1906 18.2812 15.9891 18.2812C15.8719 18.2812 15.7594 18.225 15.6891 18.1266L14.6016 16.6406V17.9906C14.6016 18.1547 14.4703 18.2812 14.3109 18.2812C14.1516 18.2812 14.0156 18.15 14.0156 17.9906V15.8391C14.0156 15.6375 14.1844 15.4688 14.3859 15.4688H14.4094C14.5313 15.4688 14.6437 15.525 14.7141 15.6234L15.7734 17.1094V15.7594C15.7734 15.6 15.9047 15.4688 16.0688 15.4688C16.2328 15.4688 16.3594 15.6 16.3594 15.7594V17.9109ZM18.7031 15.7688C18.7031 15.9328 18.5719 16.0594 18.4125 16.0594H17.5312V16.5844H18.4125C18.5766 16.5844 18.7031 16.7156 18.7031 16.875V16.8797C18.7031 17.0438 18.5719 17.1703 18.4125 17.1703H17.5312V17.6906H18.4125C18.5766 17.6906 18.7031 17.8219 18.7031 17.9812C18.7031 18.1453 18.5719 18.2719 18.4125 18.2719H17.2266C17.0063 18.2719 16.8281 18.0938 16.8281 17.8734V15.8578C16.8281 15.6469 17.0063 15.4688 17.2266 15.4688H18.4125C18.5766 15.4688 18.7031 15.6 18.7031 15.7594V15.7688ZM21.9844 17.8125C21.9844 18.0703 21.7734 18.2812 21.5156 18.2812H19.6406C19.3828 18.2812 19.1719 18.0703 19.1719 17.8125V15.7594C19.1719 15.6 19.3031 15.4688 19.4625 15.4688C19.6219 15.4688 19.7531 15.6 19.7531 15.7594V17.5828H20.2828V16.2234C20.2828 16.0594 20.4141 15.9328 20.5734 15.9328C20.7328 15.9328 20.8641 16.0641 20.8641 16.2234V17.5781H21.3891V15.7594C21.3891 15.5953 21.5203 15.4688 21.6797 15.4688C21.8391 15.4688 21.9703 15.6 21.9703 15.7594V17.8125H21.9844Z\"\n fill=\"#084D6D\"\n />\n </svg>\n </SvgIcon>\n </IconButton>\n </Tooltip>\n );\n};\n\nexport default CreateNewPoolButton;\n","import React, { useState } from 'react';\nimport StyledModal from '../../../NewUI/Components/GenericModal/StyledModal';\nimport ModalFooterButtons from '../../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport { Box } from '@mui/material';\nimport { FormTextField } from '../../../NewUI/Components/CustomUIElements/FormTextField';\nimport { ISnackbarInput } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport { sharedClasses } from '../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport callAPI from '../../../NewUI/Components/Utilities/callAPI';\n\nconst CreateNewPoolModal = ({\n isOpen,\n handleClose,\n setSnackbarState\n}: {\n isOpen: boolean;\n handleClose: () => void;\n setSnackbarState: (snackbarState: ISnackbarInput) => void;\n}) => {\n const [poolName, setPoolName] = useState<string>('');\n\n const queryClient = useQueryClient();\n\n const { mutate: handleCreatePool, isLoading: savingPool } = useMutation({\n mutationFn: () =>\n callAPI(\n '/api/v4/candidate_pools',\n {\n title: poolName,\n params: {}\n },\n 'POST'\n ),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['candidatePools'] });\n handleClose();\n setPoolName('');\n },\n onError: () =>\n setSnackbarState({\n message: `There was an error creating the candidate pool`,\n state: 'error'\n })\n });\n\n return (\n <StyledModal\n isOpen={isOpen}\n handleClose={handleClose}\n label=\"Create new candidate pool\"\n modalTitle=\"Create new candidate pool\"\n styleOverrides={{\n maxWidth: '700px',\n maxHeight: '350px'\n }}\n subHeaderStyling={false}\n >\n <Box\n sx={{\n ...sharedClasses.mainModalContent,\n height: '100%',\n paddingInline: '2px',\n marginBottom: '0px'\n }}\n >\n <FormTextField\n label=\"Candidate pool name\"\n value={poolName}\n onChange={(e) => e.target.value?.length <= 255 && setPoolName(e.target.value)}\n fullWidth\n error={poolName.length >= 255 ? 'Name length must be a maximum of 255 characters' : ''}\n />\n </Box>\n <ModalFooterButtons\n primaryButtonText=\"Create\"\n secondaryButtonText=\"Cancel\"\n primaryButtonCallback={handleCreatePool}\n secondaryButtonCallback={handleClose}\n primaryButtonID=\"create-new-pool-action-button\"\n secondaryButtonID=\"cancel-create-pool-button\"\n primaryButtonDisabled={!poolName || poolName.length >= 255}\n isLoading={savingPool}\n />\n </StyledModal>\n );\n};\n\nexport default CreateNewPoolModal;\n","import React from 'react';\nimport { SxProps } from '@mui/material';\nimport { classes } from '../../NewUI/Components/GenericTable/styles';\nimport { ActionListItem } from '../../NewUI/Components/GenericTable/GenericTableActions';\nimport AttachFileIcon from '@mui/icons-material/AttachFile';\nimport PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf';\nimport NoteAddIcon from '@mui/icons-material/NoteAdd';\nimport EmailIcon from '@mui/icons-material/Email';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport AssessmentIcon from '@mui/icons-material/Assessment';\nimport ForwardToInboxIcon from '@mui/icons-material/ForwardToInbox';\n\nexport const candidatePoolsColumns = [\n {\n id: 'title',\n label: 'Title',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'candidates_count',\n label: 'Candidates',\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: 'pool_tags',\n label: 'Tags',\n sortable: false,\n canToggle: true,\n enabled: true\n },\n {\n id: 'created_at',\n label: 'Created',\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: 'last_email_date',\n label: 'Last Email Date',\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: 'notes',\n label: 'Notes',\n sortable: false,\n canToggle: true,\n enabled: true\n }\n];\n\nexport const headerStyles = (\n name: (typeof candidatePoolsColumns)[number]['id'] | 'checkbox' | 'actions',\n tableHovered: boolean\n): SxProps => {\n switch (name) {\n case 'checkbox':\n return { ...classes.sticky, width: '58px' };\n case 'title':\n return { ...classes.sticky, ...classes.itemTitleTableCell, left: '58px' };\n case 'candidates_count':\n return { width: '120px', textAlign: 'right' };\n case 'pool_tags':\n return { minWidth: '150px' };\n case 'created_at':\n return { minWidth: '150px' };\n case 'last_email_date':\n return { minWidth: '135px' };\n case 'notes':\n return { minWidth: '240px' };\n case 'actions':\n return {\n ...classes.actionsColumnHeader,\n ...(tableHovered && classes.scrollShadowVisible)\n };\n default:\n return { minWidth: '90px' };\n }\n};\n\nexport const candidatePoolActionsState = {\n emailAnalytics: false,\n addNote: false,\n email: false,\n moreOptions: false,\n deletePool: false,\n candidatePool: false\n};\n\nexport const candidatePoolModalState = {\n newPool: false,\n email: false,\n externalEmail: false,\n downloadAttachments: false,\n exportAsPdf: false,\n candidatePool: false\n};\n\nexport const poolActionDrawerModals = [\n {\n id: 'email',\n label: 'Email',\n icon: <EmailIcon />\n },\n {\n id: 'externalEmail',\n label: 'External email',\n icon: <ForwardToInboxIcon />\n },\n {\n id: 'downloadAttachments',\n label: 'Download attachments',\n icon: <AttachFileIcon />\n },\n {\n id: 'exportAttachments',\n label: 'Export attachments',\n icon: <PictureAsPdfIcon />\n },\n {\n id: 'exportAsPdf',\n label: 'Export as PDF',\n icon: <PictureAsPdfIcon />\n }\n];\n\nexport const candidatePoolActionsList: ActionListItem[] = [\n {\n id: 'emailAnalytics',\n tooltipLabel: 'Email Analytics',\n elementId: 'email-analytics-button',\n icon: <AssessmentIcon />\n },\n {\n id: 'addNote',\n tooltipLabel: 'Add Note',\n elementId: 'add-note-candidate-pools-button',\n icon: <NoteAddIcon />\n },\n {\n id: 'email',\n tooltipLabel: 'Email',\n elementId: 'email-candidate-pools-button',\n icon: <EmailIcon />\n },\n {\n id: 'moreOptions',\n tooltipLabel: 'More Options',\n elementId: 'three-dots-candidate-pools-dropdown',\n icon: <MoreVertIcon />\n }\n];\n","import React, {\n useReducer,\n useCallback,\n useRef,\n useEffect,\n useLayoutEffect,\n useState\n} from 'react';\nimport { engageReducer, initialEngageState } from './reducer';\nimport { Box } from '@mui/material';\nimport { classes } from './styles';\nimport { getTabNumber, getTabParam } from './config';\nimport StyledSnackbar, {\n ISnackbarInput\n} from '../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport EngageAISearch from './AISearch/EngageAISearch';\nimport CandidatePools from './CandidatePools/CandidatePools';\nimport TabPanel from './Tabs/TabPanel';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\nimport {\n genericTableReducer,\n initialTableState\n} from '../NewUI/Components/GenericTable/genericTableReducer';\nimport {\n candidatePoolActionsState,\n candidatePoolModalState,\n candidatePoolsColumns\n} from './CandidatePools/config';\nimport { individualCandidatePoolsColumns } from './CandidatePools/Modals/CandidatePool/candidatesConfig';\nimport { emailsColumns } from './CandidatePools/Modals/CandidatePool/emailConfig';\nimport Analytics from './CandidatePoolAnalytics/CandidatePoolAnalytics';\nimport TabSelector from './Tabs/TabSelector';\n\nconst URL_PARAMS = new URL(window.location.href);\nconst queryClient = new QueryClient();\n\nconst Engage = () => {\n const [engageState, engageDispatch] = useReducer(engageReducer, initialEngageState);\n const [candidatePoolsState, candidatePoolsDispatch] = useReducer(\n genericTableReducer,\n initialTableState(\n candidatePoolsColumns,\n { sortBy: 'created_at', sortOrder: 'desc' },\n candidatePoolActionsState,\n candidatePoolModalState\n )\n );\n const tabIndicatorRef = useRef([]);\n const [individualCandidatePoolsState, individualCandidatePoolsDispatch] = useReducer(\n genericTableReducer,\n initialTableState(individualCandidatePoolsColumns, { sortBy: 'created_at', sortOrder: 'desc' })\n );\n const handleTabChange = useCallback((event: React.SyntheticEvent, tabValue: number) => {\n engageDispatch({ type: 'SET_SELECTED_TAB', payload: tabValue });\n URL_PARAMS.search = getTabParam(tabValue);\n window.history.pushState(null, null, URL_PARAMS.href);\n }, []);\n const [modalTabValue, setModalTabValue] = useState<number>(0);\n const [emailsState, emailsDispatch] = useReducer(\n genericTableReducer,\n initialTableState(emailsColumns, { sortBy: 'created_at', sortOrder: 'desc' })\n );\n\n useEffect(() => {\n if (URL_PARAMS.search) {\n engageDispatch({ type: 'SET_SELECTED_TAB', payload: getTabNumber(URL_PARAMS.search) });\n } else {\n URL_PARAMS.search = getTabParam(0);\n window.history.pushState(null, null, URL_PARAMS.href);\n }\n }, []);\n\n useEffect(() => {\n if (candidatePoolsState.tableState.actions.isOpen.emailAnalytics) {\n setModalTabValue(1);\n }\n }, [candidatePoolsState]);\n\n useLayoutEffect(() => {\n !individualCandidatePoolsState.selectedRowTitle &&\n engageDispatch({\n type: 'SET_INDICATOR_WIDTH',\n payload: tabIndicatorRef?.current[engageState.selectedTab]?.clientWidth\n });\n }, [engageState.selectedTab]);\n\n return (\n <QueryClientProvider client={queryClient}>\n <>\n <Box sx={classes.pageContainer}>\n {emailsState.selectedRowTitle ? (\n <Box>\n <Analytics\n selectedEmail={emailsState.selectedRowTitle}\n emailsDispatch={emailsDispatch}\n selectedCandidatePoolId={candidatePoolsState?.tableState?.actions?.selectedItem?.id}\n />\n </Box>\n ) : (\n <Box>\n <Box sx={classes.pageHeader}>\n <h1>:Engage</h1>\n </Box>\n <TabSelector\n engageState={engageState}\n handleTabChange={handleTabChange}\n tabIndicatorRef={tabIndicatorRef}\n />\n <TabPanel tabValue={engageState.selectedTab} index={0}>\n <EngageAISearch engageState={engageState} dispatch={engageDispatch} />\n </TabPanel>\n <TabPanel tabValue={engageState.selectedTab} index={1}>\n <CandidatePools\n candidatePoolsState={candidatePoolsState}\n dispatch={candidatePoolsDispatch}\n setSnackbarState={(snackbarInput: ISnackbarInput) => {\n engageDispatch({ type: 'SET_SNACKBAR', payload: snackbarInput });\n candidatePoolsDispatch({ type: 'SET_SNACKBAR', payload: snackbarInput });\n }}\n individualCandidatePoolsState={individualCandidatePoolsState}\n individualCandidatePoolsDispatch={individualCandidatePoolsDispatch}\n emailsState={emailsState}\n emailsDispatch={emailsDispatch}\n modalTabValue={modalTabValue}\n setModalTabValue={setModalTabValue}\n />\n </TabPanel>\n </Box>\n )}\n <ReactQueryDevtools initialIsOpen={false} />\n </Box>\n <StyledSnackbar\n message={engageState.snackbarState.message || candidatePoolsState.snackbarState.message}\n state={engageState.snackbarState.state || candidatePoolsState.snackbarState.state}\n setSnackbarState={(snackbarInput: ISnackbarInput) => {\n engageDispatch({ type: 'SET_SNACKBAR', payload: snackbarInput });\n candidatePoolsDispatch({ type: 'SET_SNACKBAR', payload: snackbarInput });\n }}\n />\n </>\n </QueryClientProvider>\n );\n};\n\nexport default Engage;\n","import React from 'react';\n\nconst SelectJobSVG = () => {\n return (\n <svg\n width=\"196\"\n height=\"142\"\n viewBox=\"0 0 196 142\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_11186_5423)\">\n <ellipse cx=\"98.5\" cy=\"135.5\" rx=\"54.5\" ry=\"6.5\" fill=\"#E5E5E5\" />\n <path\n d=\"M53.4777 62.6239L53.478 62.6236C56.3459 59.7532 60.1077 58.29 65.5892 57.5527C71.0852 56.8136 78.2346 56.8125 87.8333 56.8125H108.167C117.765 56.8125 124.915 56.8136 130.411 57.5527C135.892 58.29 139.654 59.7532 142.522 62.6236L142.522 62.6239C145.393 65.4917 146.856 69.2535 147.593 74.7351C148.332 80.231 148.333 87.3804 148.333 96.9792C148.333 106.578 148.332 113.727 147.593 119.223C146.856 124.705 145.393 128.467 142.522 131.334L142.522 131.335C139.654 134.205 135.892 135.668 130.411 136.406C124.915 137.145 117.765 137.146 108.167 137.146H87.8333C78.2346 137.146 71.0852 137.145 65.5892 136.406C60.1077 135.668 56.3459 134.205 53.478 131.335L53.4777 131.334C50.6074 128.467 49.1442 124.705 48.4069 119.223C47.6677 113.727 47.6667 106.578 47.6667 96.9792C47.6667 87.3804 47.6677 80.231 48.4069 74.7351C49.1442 69.2535 50.6074 65.4917 53.4777 62.6239Z\"\n fill=\"#EAEAEA\"\n stroke=\"#CFCFCF\"\n />\n <path\n d=\"M110.852 104.422C108.693 106.421 106.041 107.815 103.166 108.461C98.405 109.596 93.3911 108.926 89.098 106.581C88.119 106.071 87.2066 105.443 86.3812 104.711C85.9724 104.331 86.8813 104.262 87.1451 104.504C90.1919 107.339 94.9917 108.533 99.0312 108.391C103.094 108.308 106.988 106.757 109.991 104.028C110.25 103.768 111.137 104.128 110.854 104.413L110.852 104.422Z\"\n fill=\"#A2A2A2\"\n />\n <path\n d=\"M88.0606 98.052C88.6241 97.4901 88.6241 96.5792 88.0606 96.0174C87.4972 95.4555 86.5836 95.4555 86.0202 96.0174C85.4568 96.5792 85.4568 97.4901 86.0202 98.052C86.5836 98.6138 87.4972 98.6138 88.0606 98.052Z\"\n fill=\"#A2A2A2\"\n />\n <path\n d=\"M110.694 98.052C111.258 97.4901 111.258 96.5792 110.694 96.0174C110.131 95.4555 109.217 95.4555 108.654 96.0174C108.09 96.5792 108.09 97.4901 108.654 98.052C109.217 98.6138 110.131 98.6138 110.694 98.052Z\"\n fill=\"#A2A2A2\"\n />\n <path\n d=\"M118.333 76.6459C119.682 76.6459 120.974 76.1104 121.928 75.157C122.881 74.2037 123.417 72.9108 123.417 71.5626C123.417 70.2144 122.881 68.9214 121.928 67.9681C120.974 67.0148 119.682 66.4792 118.333 66.4792C116.985 66.4792 115.692 67.0148 114.739 67.9681C113.786 68.9214 113.25 70.2144 113.25 71.5626C113.25 72.9108 113.786 74.2037 114.739 75.157C115.692 76.1104 116.985 76.6459 118.333 76.6459ZM82.75 71.5626C82.75 72.9108 82.2144 74.2037 81.2611 75.157C80.3078 76.1104 79.0149 76.6459 77.6667 76.6459C76.3185 76.6459 75.0255 76.1104 74.0722 75.157C73.1189 74.2037 72.5833 72.9108 72.5833 71.5626C72.5833 70.2144 73.1189 68.9214 74.0722 67.9681C75.0255 67.0148 76.3185 66.4792 77.6667 66.4792C79.0149 66.4792 80.3078 67.0148 81.2611 67.9681C82.2144 68.9214 82.75 70.2144 82.75 71.5626ZM98.2643 32.1667H97.7357C93.1658 32.1667 89.3583 32.1667 86.3388 32.5734C83.1465 33.0004 80.2643 33.9459 77.9513 36.2588C75.6333 38.5768 74.6878 41.4591 74.2608 44.6463C73.8542 47.6709 73.8542 51.4834 73.8542 56.0482V56.4447C76.1773 56.3685 78.7088 56.338 81.4792 56.3227V56.3126C81.4792 51.4122 81.4893 48.1182 81.8198 45.663C82.1349 43.3196 82.6788 42.3131 83.3448 41.6522C84.0056 40.9914 85.007 40.4475 87.3504 40.1272C89.8057 39.8019 93.0997 39.7917 98 39.7917C102.9 39.7917 106.194 39.8019 108.65 40.1323C110.993 40.4475 112 40.9914 112.66 41.6573C113.321 42.3182 113.865 43.3196 114.185 45.663C114.511 48.1182 114.521 51.4122 114.521 56.3126V56.3227C117.063 56.3284 119.605 56.3691 122.146 56.4447V56.0482C122.146 51.4834 122.146 47.6709 121.739 44.6514C121.312 41.4591 120.367 38.5768 118.049 36.2639C115.736 33.9459 112.854 33.0004 109.661 32.5734C106.642 32.1667 102.829 32.1667 98.2643 32.1667Z\"\n fill=\"#D1D1D1\"\n />\n <path\n d=\"M173 56.2517L172.842 56.7261L173 56.2517ZM166.66 85.8853C166.457 86.0732 166.446 86.3896 166.634 86.5919C166.822 86.7943 167.138 86.806 167.34 86.6181L166.66 85.8853ZM168.131 85.8596C168.327 85.6652 168.328 85.3486 168.134 85.1525C167.94 84.9563 167.623 84.9548 167.427 85.1492L168.131 85.8596ZM168.895 83.6057C168.71 83.8111 168.727 84.1273 168.933 84.3118C169.138 84.4964 169.454 84.4795 169.639 84.2741L168.895 83.6057ZM171.056 82.612C171.23 82.3975 171.197 82.0826 170.982 81.9087C170.768 81.7349 170.453 81.7679 170.279 81.9824L171.056 82.612ZM171.586 80.2912C171.422 80.5135 171.469 80.8265 171.691 80.9904C171.913 81.1543 172.226 81.107 172.39 80.8848L171.586 80.2912ZM173.646 79.104C173.801 78.8751 173.74 78.5644 173.511 78.4099C173.282 78.2555 172.972 78.3158 172.817 78.5448L173.646 79.104ZM173.979 76.7463C173.834 76.9812 173.906 77.2893 174.141 77.4346C174.376 77.5798 174.684 77.5071 174.829 77.2722L173.979 76.7463ZM175.939 75.3966C176.075 75.1562 175.99 74.8512 175.749 74.7154C175.509 74.5795 175.204 74.6643 175.068 74.9047L175.939 75.3966ZM176.082 73.0214C175.956 73.2673 176.054 73.5685 176.299 73.6941C176.545 73.8197 176.847 73.7221 176.972 73.4762L176.082 73.0214ZM177.917 71.5085C178.029 71.2564 177.916 70.9607 177.664 70.8481C177.412 70.7355 177.116 70.8487 177.003 71.1008L177.917 71.5085ZM177.784 69.139C177.697 69.4012 177.84 69.6839 178.102 69.7704C178.364 69.8568 178.647 69.7143 178.733 69.4521L177.784 69.139ZM179.155 67.4098C179.222 67.142 179.06 66.8703 178.792 66.8031C178.524 66.7358 178.253 66.8983 178.185 67.1662L179.155 67.4098ZM178.694 65.2622C178.625 65.5294 178.785 65.8024 179.052 65.872C179.319 65.9415 179.592 65.7812 179.662 65.514L178.694 65.2622ZM180.118 63.5737C180.173 63.3032 179.999 63.0388 179.729 62.9832C179.458 62.9276 179.194 63.1018 179.138 63.3723L180.118 63.5737ZM179.464 61.4682C179.427 61.7418 179.619 61.9937 179.893 62.0307C180.166 62.0677 180.418 61.8759 180.455 61.6023L179.464 61.4682ZM180.648 59.6057C180.664 59.33 180.453 59.0938 180.177 59.0781C179.902 59.0624 179.665 59.2732 179.65 59.5488L180.648 59.6057ZM179.679 57.6244C179.687 57.9004 179.917 58.1181 180.193 58.1106C180.469 58.1031 180.686 57.8732 180.679 57.5972L179.679 57.6244ZM180.536 55.5925C180.504 55.3182 180.256 55.1217 179.982 55.1535C179.707 55.1854 179.511 55.4336 179.543 55.7079L180.536 55.5925ZM179.235 53.8134C179.291 54.0836 179.556 54.2568 179.827 54.2001C180.097 54.1434 180.27 53.8784 180.214 53.6081L179.235 53.8134ZM179.699 51.6556C179.611 51.3936 179.328 51.252 179.066 51.3394C178.804 51.4267 178.663 51.7099 178.75 51.9718L179.699 51.6556ZM178.011 50.2877C178.149 50.5269 178.455 50.6089 178.694 50.4709C178.934 50.3329 179.016 50.0272 178.878 49.788L178.011 50.2877ZM177.552 48.1548C177.342 47.9762 177.026 48.0023 176.847 48.213C176.669 48.4236 176.695 48.7391 176.906 48.9177L177.552 48.1548ZM175.403 48.1666C175.673 48.2246 175.939 48.0527 175.997 47.7828C176.055 47.5128 175.883 47.2469 175.613 47.1889L175.403 48.1666ZM173.471 47.2204C173.202 47.2802 173.032 47.5472 173.091 47.8168C173.151 48.0864 173.418 48.2565 173.688 48.1967L173.471 47.2204ZM172.035 48.8562C172.273 48.7157 172.352 48.4091 172.211 48.1714C172.071 47.9336 171.764 47.8548 171.526 47.9952L172.035 48.8562ZM169.933 49.7248C169.814 49.974 169.919 50.2725 170.168 50.3915C170.418 50.5106 170.716 50.4052 170.835 50.156L169.933 49.7248ZM170.328 52.1379C170.34 51.862 170.126 51.6287 169.851 51.6167C169.575 51.6047 169.341 51.8187 169.329 52.0946L170.328 52.1379ZM169.897 54.5396C170.036 54.7781 170.342 54.8588 170.58 54.7197C170.819 54.5806 170.9 54.2744 170.761 54.0359L169.897 54.5396ZM172.198 55.3671C171.956 55.2354 171.652 55.3255 171.521 55.5682C171.389 55.8109 171.479 56.1144 171.722 56.2461L172.198 55.3671ZM173.822 56.9649C174.095 57.0063 174.35 56.8186 174.391 56.5455C174.433 56.2725 174.245 56.0176 173.972 55.9762L173.822 56.9649ZM175.588 55.8815C175.323 55.9583 175.17 56.2355 175.247 56.5008C175.324 56.766 175.601 56.9188 175.866 56.842L175.588 55.8815ZM177.66 55.883C177.874 55.7091 177.907 55.3942 177.733 55.1797C177.559 54.9652 177.245 54.9322 177.03 55.1061L177.66 55.883ZM178.193 53.851C178.031 54.0745 178.081 54.3871 178.304 54.5494C178.528 54.7116 178.84 54.662 179.003 54.4386L178.193 53.851ZM179.994 52.7867C180.117 52.5398 180.017 52.2394 179.77 52.1158C179.523 51.9922 179.223 52.0922 179.099 52.3391L179.994 52.7867ZM179.806 50.6929C179.711 50.9519 179.843 51.2395 180.102 51.3352C180.361 51.4309 180.649 51.2986 180.744 51.0395L179.806 50.6929ZM181.325 49.2418C181.399 48.976 181.245 48.6999 180.979 48.6251C180.713 48.5503 180.437 48.7051 180.362 48.971L181.325 49.2418ZM180.798 47.2099C180.739 47.4798 180.911 47.746 181.181 47.8044C181.45 47.8629 181.717 47.6915 181.775 47.4216L180.798 47.2099ZM182.125 45.5816C182.17 45.3092 181.986 45.0518 181.713 45.0067C181.441 44.9616 181.183 45.1459 181.138 45.4183L182.125 45.5816ZM181.399 43.6086C181.365 43.8826 181.56 44.1323 181.834 44.1662C182.108 44.2001 182.357 44.0054 182.391 43.7313L181.399 43.6086ZM182.573 41.7403C182.584 41.4644 182.369 41.232 182.093 41.2213C181.817 41.2106 181.584 41.4256 181.574 41.7015L182.573 41.7403ZM181.54 39.6872C181.558 39.9627 181.797 40.1709 182.072 40.1523C182.348 40.1337 182.556 39.8952 182.537 39.6197L181.54 39.6872ZM182.306 37.5226C182.265 37.2495 182.011 37.0613 181.738 37.1022C181.464 37.1431 181.276 37.3977 181.317 37.6708L182.306 37.5226ZM180.948 35.6666C181.007 35.9365 181.273 36.1081 181.543 36.0498C181.813 35.9915 181.984 35.7255 181.926 35.4555L180.948 35.6666ZM181.429 33.4194C181.357 33.1529 181.082 32.9953 180.816 33.0675C180.549 33.1397 180.392 33.4143 180.464 33.6808L181.429 33.4194ZM179.885 31.7159C179.968 31.9791 180.249 32.1247 180.512 32.041C180.776 31.9574 180.921 31.6763 180.838 31.4131L179.885 31.7159ZM180.168 29.4349C180.074 29.175 179.788 29.0399 179.528 29.1332C179.268 29.2265 179.133 29.5128 179.226 29.7727L180.168 29.4349ZM178.501 27.8516C178.603 28.1083 178.893 28.2341 179.15 28.1325C179.407 28.0308 179.532 27.7403 179.431 27.4835L178.501 27.8516ZM178.636 25.5593C178.527 25.3056 178.233 25.1884 177.979 25.2974C177.726 25.4065 177.608 25.7005 177.717 25.9542L178.636 25.5593ZM176.878 24.0723C176.994 24.323 177.291 24.4322 177.541 24.3163C177.792 24.2004 177.901 23.9032 177.785 23.6526L176.878 24.0723ZM176.886 21.7738C176.763 21.5264 176.464 21.4251 176.216 21.5476C175.969 21.6701 175.867 21.9701 175.99 22.2176L176.886 21.7738ZM175.053 20.3908C175.183 20.6345 175.485 20.7268 175.729 20.597C175.973 20.4672 176.065 20.1644 175.935 19.9206L175.053 20.3908ZM167.34 86.6181C167.607 86.3699 167.871 86.1169 168.131 85.8596L167.427 85.1492C167.175 85.3992 166.919 85.6447 166.66 85.8853L167.34 86.6181ZM169.639 84.2741C170.127 83.7303 170.6 83.1745 171.056 82.612L170.279 81.9824C169.833 82.5326 169.371 83.0754 168.895 83.6057L169.639 84.2741ZM172.39 80.8848C172.828 80.2911 173.247 79.6956 173.646 79.104L172.817 78.5448C172.425 79.1253 172.015 79.7094 171.586 80.2912L172.39 80.8848ZM174.829 77.2722C175.225 76.6324 175.595 76.0046 175.939 75.3966L175.068 74.9047C174.731 75.5015 174.367 76.118 173.979 76.7463L174.829 77.2722ZM176.972 73.4762C177.333 72.7696 177.649 72.1083 177.917 71.5085L177.003 71.1008C176.743 71.6836 176.435 72.3292 176.082 73.0214L176.972 73.4762ZM178.733 69.4521C178.892 68.9707 179 68.5436 179 68.2517H178C178 68.3651 177.944 68.6536 177.784 69.139L178.733 69.4521ZM179 68.2517C179 68.1012 179.049 67.8341 179.155 67.4098L178.185 67.1662C178.082 67.5773 178 67.9596 178 68.2517H179ZM179.662 65.514C179.813 64.9349 179.971 64.285 180.118 63.5737L179.138 63.3723C178.996 64.0617 178.842 64.6939 178.694 65.2622L179.662 65.514ZM180.455 61.6023C180.541 60.9687 180.608 60.3019 180.648 59.6057L179.65 59.5488C179.612 60.2168 179.547 60.8578 179.464 61.4682L180.455 61.6023ZM180.679 57.5972C180.661 56.9475 180.616 56.2783 180.536 55.5925L179.543 55.7079C179.619 56.3631 179.662 57.0027 179.679 57.6244L180.679 57.5972ZM180.214 53.6081C180.146 53.2838 180.069 52.9566 179.984 52.6268L179.016 52.8766C179.097 53.1915 179.17 53.5038 179.235 53.8134L180.214 53.6081ZM179.984 52.6268C179.896 52.2843 179.8 51.9608 179.699 51.6556L178.75 51.9718C178.844 52.2538 178.933 52.555 179.016 52.8766L179.984 52.6268ZM178.878 49.788C178.482 49.1015 178.035 48.5639 177.552 48.1548L176.906 48.9177C177.29 49.2432 177.665 49.6877 178.011 50.2877L178.878 49.788ZM175.613 47.1889C174.867 47.0286 174.132 47.0738 173.471 47.2204L173.688 48.1967C174.241 48.074 174.827 48.0428 175.403 48.1666L175.613 47.1889ZM171.526 47.9952C171.151 48.2171 170.843 48.4499 170.646 48.6464L171.354 49.3536C171.473 49.2337 171.707 49.0499 172.035 48.8562L171.526 47.9952ZM170.646 48.6464C170.399 48.8936 170.147 49.2772 169.933 49.7248L170.835 50.156C171.02 49.7684 171.214 49.4929 171.354 49.3536L170.646 48.6464ZM169.329 52.0946C169.295 52.894 169.437 53.751 169.897 54.5396L170.761 54.0359C170.418 53.4477 170.3 52.7904 170.328 52.1379L169.329 52.0946ZM171.722 56.2461C172.056 56.4273 172.428 56.5881 172.842 56.7261L173.158 55.7774C172.795 55.6562 172.477 55.5179 172.198 55.3671L171.722 56.2461ZM172.842 56.7261C173.173 56.8363 173.499 56.916 173.822 56.9649L173.972 55.9762C173.71 55.9364 173.439 55.8708 173.158 55.7774L172.842 56.7261ZM175.866 56.842C176.511 56.6554 177.109 56.3292 177.66 55.883L177.03 55.1061C176.571 55.4784 176.09 55.7362 175.588 55.8815L175.866 56.842ZM179.003 54.4386C179.359 53.9484 179.689 53.3958 179.994 52.7867L179.099 52.3391C178.815 52.9069 178.513 53.4115 178.193 53.851L179.003 54.4386ZM180.744 51.0395C180.953 50.4745 181.147 49.8745 181.325 49.2418L180.362 48.971C180.191 49.5806 180.005 50.1551 179.806 50.6929L180.744 51.0395ZM181.775 47.4216C181.903 46.8307 182.02 46.217 182.125 45.5816L181.138 45.4183C181.036 46.0386 180.922 46.6362 180.798 47.2099L181.775 47.4216ZM182.391 43.7313C182.429 43.4264 182.464 43.1173 182.497 42.8041L181.503 42.6994C181.47 43.0067 181.436 43.3098 181.399 43.6086L182.391 43.7313ZM182.497 42.8041C182.534 42.4543 182.559 42.0994 182.573 41.7403L181.574 41.7015C181.561 42.0399 181.537 42.3728 181.503 42.6994L182.497 42.8041ZM182.537 39.6197C182.491 38.9286 182.412 38.2277 182.306 37.5226L181.317 37.6708C181.419 38.3522 181.495 39.026 181.54 39.6872L182.537 39.6197ZM181.926 35.4555C181.779 34.7751 181.612 34.0948 181.429 33.4194L180.464 33.6808C180.643 34.3411 180.806 35.0046 180.948 35.6666L181.926 35.4555ZM180.838 31.4131C180.624 30.7425 180.4 30.0815 180.168 29.4349L179.226 29.7727C179.455 30.4087 179.675 31.058 179.885 31.7159L180.838 31.4131ZM179.431 27.4835C179.167 26.8171 178.9 26.1736 178.636 25.5593L177.717 25.9542C177.978 26.5603 178.241 27.1948 178.501 27.8516L179.431 27.4835ZM177.785 23.6526C177.467 22.9639 177.163 22.3333 176.886 21.7738L175.99 22.2176C176.263 22.7698 176.563 23.3924 176.878 24.0723L177.785 23.6526ZM175.935 19.9206C175.779 19.6276 175.655 19.3993 175.568 19.2438C175.525 19.1661 175.492 19.1065 175.469 19.0661C175.458 19.0459 175.449 19.0306 175.443 19.0201C175.441 19.0149 175.438 19.0109 175.437 19.0081C175.436 19.0068 175.435 19.0057 175.435 19.0049C175.435 19.0046 175.434 19.0043 175.434 19.0041C175.434 19.0039 175.434 19.0039 175.434 19.0038C175.434 19.0038 175.434 19.0037 175.434 19.0037C175.434 19.0037 175.434 19.0037 175.434 19.0037C175.434 19.0037 175.434 19.0036 175 19.2517C174.566 19.4998 174.566 19.4998 174.566 19.4998C174.566 19.4998 174.566 19.4998 174.566 19.4997C174.566 19.4997 174.566 19.4997 174.566 19.4997C174.566 19.4998 174.566 19.4998 174.566 19.4998C174.566 19.4999 174.566 19.5001 174.566 19.5004C174.567 19.5009 174.567 19.5017 174.568 19.5028C174.569 19.5051 174.571 19.5086 174.574 19.5133C174.579 19.5228 174.587 19.5372 174.598 19.5564C174.619 19.5947 174.652 19.6522 174.693 19.7278C174.777 19.879 174.899 20.1027 175.053 20.3908L175.935 19.9206Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M178.629 15.5261L171.943 15.2838C171.863 15.2793 171.781 15.2906 171.7 15.3171C171.62 15.3436 171.543 15.3848 171.475 15.4381C171.407 15.4915 171.348 15.556 171.303 15.6276C171.258 15.6993 171.227 15.7766 171.213 15.855L169.835 22.4023\"\n stroke=\"#CFCFCF\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_11186_5423\">\n <rect width=\"196\" height=\"142\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nexport default SelectJobSVG;\n","import React from 'react';\nimport { ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport { classes } from './styles';\nimport { IBooleanQueryObject } from './booleanQueryParser';\n\nconst AndOrToggle = ({\n index,\n editableBooleanObject,\n onChange,\n changeBase,\n hasExclude = false\n}: {\n index: number;\n editableBooleanObject?: IBooleanQueryObject;\n onChange: (index: number, value: string) => void;\n changeBase?: boolean;\n hasExclude?: boolean;\n}) => {\n return (\n <ToggleButtonGroup\n value={editableBooleanObject?.[changeBase ? 'baseOperator' : 'operator'] || ''}\n exclusive\n onChange={(_, value) => onChange(index, value)}\n sx={classes.booleanEditorOperatorGroup}\n >\n <ToggleButton id=\"add-button\" value=\"AND\" sx={classes.booleanEditorOperatorButton}>\n And\n </ToggleButton>\n <ToggleButton id=\"or-button\" value=\"OR\" sx={classes.booleanEditorOperatorButton}>\n Or\n </ToggleButton>\n {hasExclude && (\n <ToggleButton value=\"NOT\" sx={{ ...classes.booleanEditorOperatorButton, width: '85px' }}>\n Exclude\n </ToggleButton>\n )}\n </ToggleButtonGroup>\n );\n};\n\nexport default AndOrToggle;\n","import React, { useState, Dispatch, SetStateAction, Fragment } from 'react';\nimport { Box, IconButton } from '@mui/material';\nimport { IBooleanQueryObject } from './booleanQueryParser';\nimport CloseIcon from '@mui/icons-material/Close';\nimport AddIcon from '@mui/icons-material/Add';\nimport { classes } from './styles';\nimport AndOrToggle from './AndOrToggle';\n\nconst BooleanEditor = ({\n editableBooleanArray,\n setEditableBooleanArray\n}: {\n editableBooleanArray: IBooleanQueryObject[];\n setEditableBooleanArray: Dispatch<SetStateAction<IBooleanQueryObject[]>>;\n}) => {\n const [addValue, setAddValue] = useState({\n rowIndex: -1,\n value: ''\n });\n const [isAddingRow, setIsAddingRow] = useState(false);\n\n const addValueToRow = (rowIndex: number, value: string) => {\n setAddValue({\n rowIndex: -1,\n value: ''\n });\n if (value === '') return;\n const newEditableBooleanArray = [...editableBooleanArray];\n newEditableBooleanArray[rowIndex].queryValues.push(value);\n setEditableBooleanArray(newEditableBooleanArray);\n };\n\n const removeValue = (rowIndex: number, valueIndex: number) => {\n const newEditableBooleanArray = [...editableBooleanArray];\n newEditableBooleanArray[rowIndex].queryValues.splice(valueIndex, 1);\n setEditableBooleanArray(newEditableBooleanArray);\n };\n\n const addRow = (rowIndex: number, value: string) => {\n const newEditableBooleanArray = [...editableBooleanArray];\n newEditableBooleanArray.push({\n id: rowIndex,\n baseOperator: value,\n operator: 'AND',\n queryValues: []\n });\n setEditableBooleanArray(newEditableBooleanArray);\n setIsAddingRow(false);\n setAddValue({\n rowIndex: rowIndex,\n value: ''\n });\n };\n\n const removeRow = (rowIndex: number) => {\n const newEditableBooleanArray = [...editableBooleanArray];\n newEditableBooleanArray.splice(rowIndex, 1);\n setEditableBooleanArray(newEditableBooleanArray);\n };\n\n const changeBaseOperator = (rowIndex: number, value: string) => {\n if (editableBooleanArray[rowIndex].baseOperator === value || !value) return;\n const newEditableBooleanArray = [...editableBooleanArray];\n newEditableBooleanArray[rowIndex].baseOperator = value;\n setEditableBooleanArray(newEditableBooleanArray);\n };\n\n const changeOperator = (rowIndex: number, value: string) => {\n if (editableBooleanArray[rowIndex].operator === value || !value) return;\n const newEditableBooleanArray = [...editableBooleanArray];\n newEditableBooleanArray[rowIndex].operator = value;\n setEditableBooleanArray(newEditableBooleanArray);\n };\n\n return (\n <Box sx={classes.booleanEditorContainer}>\n {editableBooleanArray.map((editableBooleanObject, index) => (\n <Box sx={classes.booleanEditorRow} key={editableBooleanObject.id}>\n <Box sx={classes.booleanEditorValuesContainer}>\n {editableBooleanObject.queryValues.map((queryValue, valueIndex) => (\n <Fragment key={valueIndex}>\n <Box sx={classes.booleanEditorValue}>\n <Box>{queryValue}</Box>\n <IconButton\n sx={classes.booleanEditorRemoveValueButton}\n onClick={() => removeValue(index, valueIndex)}\n id=\"close-\"\n >\n <CloseIcon color=\"inherit\" />\n </IconButton>\n </Box>\n {valueIndex !== editableBooleanObject.queryValues.length - 1 && (\n <AndOrToggle\n index={index}\n editableBooleanObject={editableBooleanObject}\n onChange={changeOperator}\n />\n )}\n </Fragment>\n ))}\n {addValue.rowIndex === index ? (\n <input\n type=\"text\"\n size={1}\n style={classes.booleanEditorValueInput}\n value={addValue.value}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n addValueToRow(index, addValue.value);\n }\n }}\n onChange={(e) => setAddValue({ rowIndex: index, value: e.target.value })}\n onBlur={() => addValueToRow(index, addValue.value)}\n onInput={(e) =>\n (e.target as HTMLInputElement).setAttribute(\n 'size',\n `${(e.target as HTMLInputElement).value.length || 1}`\n )\n }\n autoFocus={true}\n />\n ) : (\n <IconButton\n sx={classes.booleanEditorAddButton}\n onClick={() => setAddValue({ rowIndex: index, value: '' })}\n >\n <AddIcon color=\"inherit\" />\n </IconButton>\n )}\n </Box>\n {editableBooleanObject.baseOperator !== 'ROOT' && (\n <>\n <Box sx={classes.booleanEditorRemoveRowButtonContainer}>\n <IconButton\n sx={classes.booleanEditorRemoveRowButton}\n onClick={() => removeRow(index)}\n id=\"delete-preference-button\"\n >\n <CloseIcon color=\"inherit\" />\n </IconButton>\n </Box>\n <Box sx={classes.booleanEditorOperatorContainer}>\n <AndOrToggle\n index={index}\n editableBooleanObject={editableBooleanObject}\n onChange={changeBaseOperator}\n changeBase={true}\n hasExclude\n />\n </Box>\n </>\n )}\n </Box>\n ))}\n <Box sx={{ transform: 'translateY(-16px)' }}>\n {isAddingRow ? (\n <AndOrToggle\n index={editableBooleanArray.length}\n onChange={addRow}\n hasExclude\n />\n ) : (\n <IconButton\n id=\"add-preference-button\"\n sx={classes.booleanEditorAddButton}\n onClick={() => setIsAddingRow(true)}\n >\n <AddIcon color=\"inherit\" />\n </IconButton>\n )}\n </Box>\n </Box>\n );\n};\n\nexport default BooleanEditor;\n","import React, { Dispatch, useRef, useState } from 'react';\nimport StyledModal from '../../../NewUI/Components/GenericModal/StyledModal';\nimport ModalFooterButtons from '../../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport { useQuery } from '@tanstack/react-query';\nimport { sharedClasses } from '../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport VirtualizeGrouped, {\n formatOptions\n} from '../../../NewUI/Components/CustomUIElements/VirtualizedGroupedAutocomplete';\nimport { Box, Checkbox, FormControlLabel } from '@mui/material';\nimport { FormTextField } from '../../../NewUI/Components/CustomUIElements/FormTextField';\nimport HtmlEditor from '../../../NewUI/Components/Utilities/HtmlEditor';\nimport AttachmentSelectorAndPreview from '../../../NewUI/Components/CustomUIElements/AttachmentSelectorAndPreview';\nimport { EngageAction } from '../../reducer';\nimport { FileWithPath } from 'react-dropzone';\nimport callAPI from '../../../NewUI/Components/Utilities/callAPI';\nimport { handleAPIRequest } from '../../../NewUI/Components/Utilities/handleAPIRequest';\nimport { stringToSeconds } from '../../../NewUI/Components/Utilities/stringToSeconds';\nimport { ISnackbarInput } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport DelaySelectWrapper from '../../../NewUI/EditJob/Automation/shared/DelaySelectWrapper';\n\nconst EmailCandidate = ({\n selectedCandidateIds,\n selectedPoolIds,\n dispatch,\n isOpen,\n setSnackbarState,\n openedFromTableActions = false,\n showTotalSelectedCandidates = true\n}: {\n selectedCandidateIds?: number[];\n selectedPoolIds?: number[];\n dispatch: Dispatch<EngageAction>;\n isOpen: boolean;\n setSnackbarState: (snackbarState: ISnackbarInput) => void;\n openedFromTableActions?: boolean;\n showTotalSelectedCandidates?: boolean;\n}) => {\n const [isSendingEmails, setIsSendingEmails] = useState(false);\n const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n const [excludeApplicants, setExcludeApplicants] = useState(false);\n const [skipScoutTalentClients, setSkipScoutTalentClients] = useState(true);\n const [templateError, setTemplateError] = useState(false);\n const [delay, setDelay] = useState<string>('None');\n const [subject, setSubject] = useState<string>('');\n const [body, setBody] = useState<string>('');\n const [attachments, setAttachments] = useState<FileWithPath[]>([]);\n const [templateAttachments, setTemplateAttachments] = useState([]);\n const templateSelectionRef = useRef<HTMLDivElement>(null);\n\n const emailTemplates = useQuery({\n queryKey: ['emailTemplates'],\n queryFn: async () => {\n const { email_templates, placeholders } = await callAPI(\n '/api/v4/searches/email_templates?group_templates=true'\n );\n return { email_templates: formatOptions(email_templates), placeholders };\n },\n onError: (error) => {\n setSnackbarState({\n message:\n error?.errors || error?.message || 'There was an error getting the email templates',\n state: 'error'\n });\n }\n });\n\n const handleSendEmails = () => {\n if (!selectedTemplate) {\n setTemplateError(true);\n templateSelectionRef?.current?.scrollIntoView({ behavior: 'smooth' });\n return;\n }\n const data = {\n email_batch: {\n ...(selectedCandidateIds && { candidate_ids: selectedCandidateIds }),\n ...(selectedPoolIds && { candidate_pools_ids: selectedPoolIds }),\n email_template_id: selectedTemplate.split(' -')[0],\n exclude_applicants: excludeApplicants,\n delay: stringToSeconds(delay),\n only_new: false,\n subject: subject,\n body: body,\n ...(attachments.length > 0 && { new_email_attachments: attachments }),\n filters: {\n rating: ['0', '100'],\n excludeApplicantsWithoutRating: false\n }\n }\n };\n handleAPIRequest({\n url: selectedCandidateIds\n ? '/api/v4/searches/bulk_email'\n : '/api/v4/candidate_pools/bulk_email',\n method: 'POST',\n body: data,\n isFormData: true,\n setLoaderState: setIsSendingEmails,\n onSuccess: () => {\n setIsSendingEmails(false);\n handleClose();\n setSnackbarState({\n message: 'Emails sent successfully',\n state: 'success'\n });\n },\n setSnackbarState: setSnackbarState,\n successMessage: { show: true, message: 'Emails sent successfully' },\n onFailure: () => {\n setIsSendingEmails(false);\n }\n });\n };\n\n const handleClose = () => {\n openedFromTableActions\n ? dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'email' })\n : dispatch({ type: 'SET_ACTION_MODAL_OPEN', payload: { name: 'email', isOpen: false } });\n };\n\n const handleSelectTemplate = (value: string) => {\n if (!value) {\n setSelectedTemplate(null);\n setBody('');\n setSubject('');\n setTemplateAttachments([]);\n return;\n }\n setBody(LOADING_TEMPLATE_HTML_STRING);\n const templateId = value.split(' -')[0];\n setSelectedTemplate(value);\n handleAPIRequest({\n url: `/api/v4/searches/email_templates/${templateId}`,\n method: 'GET',\n onSuccess: (response) => {\n setBody(response?.body);\n setSubject(response?.subject);\n setTemplateAttachments(response?.email_attachments);\n setTemplateError(false);\n },\n onFailure: () => {\n setBody('');\n setSubject('');\n setSelectedTemplate(null);\n },\n setSnackbarState: setSnackbarState,\n successMessage: { show: false, message: '' }\n });\n };\n\n return (\n <StyledModal\n isOpen={isOpen}\n disableEnforceFocus\n handleClose={handleClose}\n label=\"Email Candidates\"\n modalTitle=\"Email Candidates\"\n styleOverrides={{\n maxWidth: '900px',\n maxHeight: '1100px'\n }}\n subHeaderStyling={false}\n >\n <Box sx={sharedClasses.mainModalContent}>\n <Box role=\"form\" id=\"email-candidates-form\" aria-label=\"Email Candidates form\">\n <Box sx={sharedClasses.actionModalFormLine} ref={templateSelectionRef}>\n <VirtualizeGrouped\n value={selectedTemplate}\n options={emailTemplates.data?.email_templates || []}\n onChange={handleSelectTemplate}\n styles={{\n ...sharedClasses.formAutocomplete,\n width: '600px',\n marginTop: '20px'\n }}\n label=\"Template\"\n loading={emailTemplates.isLoading}\n loadingText=\"Loading template list...\"\n error={templateError ? 'Please select a template' : undefined}\n />\n </Box>\n <Box sx={sharedClasses.actionModalFormLine}>\n <FormControlLabel\n control={\n <Checkbox\n sx={sharedClasses.formCheckbox}\n onChange={(e) => setExcludeApplicants(e.target.checked)}\n value={excludeApplicants}\n />\n }\n label=\"Exclude applicants who have received this email template\"\n sx={sharedClasses.checkboxLabel}\n />\n </Box>\n {selectedPoolIds && (\n <Box sx={sharedClasses.actionModalFormLine}>\n <FormControlLabel\n control={\n <Checkbox\n sx={sharedClasses.formCheckbox}\n onChange={(e) => setSkipScoutTalentClients(e.target.checked)}\n value={skipScoutTalentClients}\n checked={skipScoutTalentClients}\n />\n }\n label=\"Skip Scout Talent Clients\"\n sx={sharedClasses.checkboxLabel}\n />\n </Box>\n )}\n <DelaySelectWrapper delay={delay} setDelay={setDelay} />\n <Box sx={sharedClasses.actionModalFormLine}>\n <FormTextField\n id=\"email-subject\"\n label=\"Subject\"\n value={subject}\n styles={{ width: '600px' }}\n onChange={(e) => setSubject(e.target.value)}\n />\n </Box>\n <Box sx={sharedClasses.modalSection}>\n <Box sx={sharedClasses.formLabel}>Body</Box>\n <HtmlEditor body={body} onBlur={setBody} />\n <Box sx={sharedClasses.placeholderText}>\n Available placeholders are: {emailTemplates.data?.placeholders}\n </Box>\n </Box>\n <AttachmentSelectorAndPreview\n attachments={attachments}\n setAttachments={setAttachments}\n templateAttachments={templateAttachments}\n selectedPoolIds={selectedPoolIds}\n />\n {showTotalSelectedCandidates && (\n <Box\n sx={{\n ...sharedClasses.modalSection,\n ...sharedClasses.sectionHeader\n }}\n >\n {selectedCandidateIds?.length || selectedPoolIds?.length} candidate\n {(selectedCandidateIds?.length || selectedPoolIds?.length || 0) > 1 ? 's' : ''}{' '}\n selected\n </Box>\n )}\n </Box>\n </Box>\n <ModalFooterButtons\n primaryButtonText=\"Send\"\n primaryButtonCallback={handleSendEmails}\n primaryButtonID=\"send-candidate-emails\"\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n secondaryButtonID=\"cancel-candidate-emails\"\n isLoading={isSendingEmails}\n />\n </StyledModal>\n );\n};\n\nconst LOADING_TEMPLATE_HTML_STRING =\n '<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>Loading template...</strong></span></p>';\n\nexport default EmailCandidate;\n","import React, { Dispatch, useRef, useState } from 'react';\nimport { EngageAction } from '../../reducer';\nimport StyledModal from '../../../NewUI/Components/GenericModal/StyledModal';\nimport { emailIsValid } from '../../../NewUI/Components/Utilities/emailIsValid';\nimport { Box } from '@mui/material';\nimport MultiTagInput from '../../../NewUI/Components/CustomUIElements/MultiTagInput';\nimport { sharedClasses } from '../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport { handleAPIRequest } from '../../../NewUI/Components/Utilities/handleAPIRequest';\nimport { ISnackbarInput } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\n\nconst ExternalEmail = ({\n isOpen,\n dispatch,\n selectedCandidateIds,\n selectedPoolIds,\n apiUrl\n}: {\n isOpen: boolean;\n dispatch: Dispatch<EngageAction>;\n selectedCandidateIds?: number[];\n selectedPoolIds?: number[];\n apiUrl: string;\n}) => {\n const [emails, setEmails] = useState<string[]>([]);\n const [submissionError, setSubmissionError] = useState<string>('');\n const [isSendingEmails, setIsSendingEmails] = useState(false);\n const emailInputRef = useRef<HTMLDivElement>(null);\n const handleClose = () => {\n dispatch({ type: 'SET_ACTION_MODAL_OPEN', payload: { name: 'externalEmail', isOpen: false } });\n };\n const handleSendEmails = () => {\n if (!emails.length) {\n setSubmissionError('Must input at least one valid email');\n emailInputRef?.current?.scrollIntoView({ behavior: 'smooth' });\n return;\n }\n\n const body = {\n external_view: {\n emails: emails.join(','),\n full_view: true,\n smart_forms: true,\n include_summary: true,\n notes: 'Include notes'\n }\n };\n\n if (selectedCandidateIds && selectedCandidateIds.length > 0) {\n body['candidate_ids'] = selectedCandidateIds;\n } else if (selectedPoolIds && selectedPoolIds.length > 0) {\n body['candidate_pools_ids'] = selectedPoolIds;\n }\n\n handleAPIRequest({\n url: apiUrl,\n method: 'POST',\n body: body,\n setLoaderState: setIsSendingEmails,\n setSnackbarState: (snackbarState: ISnackbarInput) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: snackbarState\n }),\n onSuccess: () => {\n handleClose();\n }\n });\n };\n return (\n <StyledModal\n isOpen={isOpen}\n handleClose={handleClose}\n label=\"External Email\"\n modalTitle=\"External Email\"\n styleOverrides={{\n maxWidth: '900px',\n maxHeight: '900px'\n }}\n >\n <Box sx={{ ...sharedClasses.mainModalContent, height: '100%' }}>\n <Box sx={sharedClasses.actionModalFormLine} ref={emailInputRef}>\n <MultiTagInput\n tags={emails}\n setTags={setEmails}\n validation={emailIsValid}\n validationMessage=\"Must input valid email\"\n label=\"Email address/s\"\n width=\"600px\"\n error={submissionError}\n tagType=\"emails\"\n helperText=\"To copy and paste bulk emails, email addresses must be separated with a comma\"\n />\n </Box>\n </Box>\n <ModalFooterButtons\n primaryButtonText=\"Send\"\n primaryButtonCallback={handleSendEmails}\n primaryButtonID=\"send-candidate-emails\"\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n secondaryButtonID=\"cancel-candidate-emails\"\n isLoading={isSendingEmails}\n />\n </StyledModal>\n );\n};\n\nexport default ExternalEmail;\n","import React, { memo } from 'react';\nimport { TTabs } from '../types';\n\nconst TabPanel = (props: TTabs) => {\n const { children, tabValue, index, ...other } = props;\n return (\n <div\n role=\"tabpanel\"\n hidden={tabValue !== index}\n id={`engage-tabpanel-${index}`}\n aria-labelledby={`engage-tab-${index}`}\n {...other}\n >\n {tabValue === index && <>{children}</>}\n </div>\n );\n};\n\nexport default memo(TabPanel);\n","import React, { useCallback } from 'react';\nimport { Box, Tabs, Tab } from '@mui/material';\nimport { classes } from '../styles';\nimport { EngageState } from '../reducer';\n\nconst TabSelector = ({\n engageState,\n handleTabChange,\n tabIndicatorRef\n}: {\n engageState: EngageState;\n handleTabChange: (event: React.SyntheticEvent, tabValue: number) => void;\n tabIndicatorRef: React.MutableRefObject<HTMLElement[]>;\n}) => {\n const TabProps = useCallback((index: number) => {\n return {\n id: `engage-tab-${index}`,\n 'aria-controls': `engage-tabpanel-${index}`\n };\n }, []);\n\n return (\n <Box sx={classes.tabsContainer}>\n <Tabs\n value={engageState.selectedTab}\n onChange={handleTabChange}\n aria-label=\"engage tabs\"\n sx={{\n ...classes.tabs,\n '& .MuiTabs-indicator': {\n ...classes.tabIndicator,\n maxWidth: engageState.indicatorWidth + 'px'\n }\n }}\n >\n <Tab\n label=\"AI Search\"\n {...TabProps(0)}\n ref={(el) => (tabIndicatorRef.current[0] = el)}\n id=\"ai-search-tab-button\"\n />\n <Tab\n label=\"Candidate Pools\"\n {...TabProps(1)}\n ref={(el) => (tabIndicatorRef.current[1] = el)}\n id=\"engage-pool-tab\"\n />\n </Tabs>\n </Box>\n );\n};\n\nexport default TabSelector;\n","import { classes } from '../NewUI/Components/GenericTable/styles';\nimport React from 'react';\nimport PlaylistAddIcon from '@mui/icons-material/PlaylistAdd';\nimport ForwardToInboxIcon from '@mui/icons-material/ForwardToInbox';\nimport AttachFileIcon from '@mui/icons-material/AttachFile';\nimport PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf';\nimport NoteAddIcon from '@mui/icons-material/NoteAdd';\nimport { ActionListItem } from '../NewUI/Components/GenericTable/GenericTableActions';\nimport { SxProps } from '@mui/material';\n\nexport const getTabNumber = (urlParams: string) => {\n switch (urlParams) {\n case '?engage-search':\n return 0;\n case '?candidate-pools':\n return 1;\n default:\n return 0;\n }\n};\n\nexport const getTabParam = (tabNumber: number) => {\n switch (tabNumber) {\n case 0:\n return '?engage-search';\n case 1:\n return '?candidate-pools';\n default:\n return '?engage-search';\n }\n};\n\nexport const searchTableColumns = [\n {\n id: 'id',\n label: 'ID',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'name',\n label: 'Candidate',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'suburb',\n label: 'Suburb',\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: 'country',\n label: 'Country',\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: 'last_applied_on',\n label: 'Last Applied',\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: 'jobs_applied_to',\n label: 'Jobs Applied To',\n sortable: false,\n canToggle: true,\n enabled: true\n },\n {\n id: 'tags',\n label: 'Candidate Tags',\n sortable: false,\n canToggle: true,\n enabled: true\n },\n {\n id: 'notes',\n label: 'Notes',\n sortable: false,\n canToggle: true,\n enabled: true\n }\n];\n\nexport const headerStyle = (\n name: (typeof searchTableColumns)[number]['id'] | 'checkbox' | 'actions',\n tableHovered: boolean\n): SxProps => {\n switch (name) {\n case 'checkbox':\n return { ...classes.sticky, width: '58px' };\n case 'id':\n return { ...classes.sticky, maxWidth: '96px', width: '96px', left: '58px' };\n case 'name':\n return {\n ...classes.sticky,\n ...classes.itemTitleTableCell,\n ...(tableHovered && classes.scrollShadowVisible)\n };\n case 'notes':\n return { minWidth: '240px' };\n case 'last_applied_on':\n return { minWidth: '150px' };\n case 'jobs_applied_to':\n return { minWidth: '180px' };\n case 'tags':\n return { minWidth: '150px' };\n case 'actions':\n return {\n ...classes.actionsColumnHeader,\n ...(tableHovered && classes.scrollShadowVisible)\n };\n default:\n return { minWidth: '90px' };\n }\n};\n\nexport const actionDrawerModals = [\n {\n id: 'addToPool',\n label: 'Add to pool',\n icon: <PlaylistAddIcon />\n },\n {\n id: 'externalEmail',\n label: 'External email',\n icon: <ForwardToInboxIcon />\n },\n {\n id: 'downloadAttachments',\n label: 'Download attachments',\n icon: <AttachFileIcon />\n },\n {\n id: 'exportAttachments',\n label: 'Export attachments',\n icon: <PictureAsPdfIcon />\n },\n {\n id: 'exportAsPdf',\n label: 'Export as PDF',\n icon: <PictureAsPdfIcon />\n }\n];\n\nexport const engageSearchActionsList: ActionListItem[] = [\n {\n id: 'addNote',\n tooltipLabel: 'Add Note',\n icon: <NoteAddIcon />\n },\n {\n id: 'viewAttachments',\n tooltipLabel: 'View Attachments',\n icon: <AttachFileIcon />\n }\n];\n","import React, { useEffect, useState, useRef } from 'react';\nimport { classes } from './styles';\nimport Api from './API';\nimport Box from '@mui/material/Box';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Snackbar from '@mui/material/Snackbar'\nimport TextField from '@mui/material/TextField';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport IconButton from '@mui/material/IconButton';\nimport Button from '@mui/material/Button';\nimport Alert from '@mui/material/Alert';\nimport EmailIcon from '@mui/icons-material/Email';\nimport LockIcon from '@mui/icons-material/Lock';\nimport DomainIcon from '@mui/icons-material/Domain';\nimport Visibility from '@mui/icons-material/Visibility';\nimport VisibilityOff from '@mui/icons-material/VisibilityOff';\nimport HelpIcon from '@mui/icons-material/Help';\nimport VpnKeyIcon from '@mui/icons-material/VpnKey';\nimport InfoIcon from '@mui/icons-material/Info';\nimport FadeChildrenVisibility from './utils/FadeChildrenVisibility';\nimport { clearAllPreferenceCache } from '../NewUI/helpers/uiPreferencesHelpers';\n\nenum STEPS {\n LOGIN,\n TWOFACTOR\n}\n\nconst BASE_URL = window.location.origin;\nconst assets = [\n {\n url: '/static/login/recruit_login_image_V2.jpg',\n blurb: '',\n info: 'Let\\'s connect people to grow companies, careers and communities.',\n },\n {\n url: '/static/login/recruit_login_image_02_V2.jpg',\n blurb: '',\n info: 'Empower your organisation\\'s strategic growth with Scout Talent.'\n }\n]\nconst RNG = () => {\n return Math.floor(Math.random() * Math.floor(2));\n}\n\nfunction NewLogin(props : {messages: string, intervalToValidateInSeconds: number}) {\n const [step, setStep] = useState(0);\n const [code, setCode] = useState('');\n const [snack, setSnack] = useState('');\n const [redirectUrl, setRedirectUrl] = useState('');\n const [sendingCode, setSendingCode] = useState(false);\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [newPassword, setNewPassword] = useState('');\n const [newPasswordConfirmation, setNewPasswordConfirmation] = useState('');\n const [domain, setDomain] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [showNewPassword, setShowNewPassword] = useState(false);\n const [showNewPasswordConfirmation, setShowNewPasswordConfirmation] = useState(false);\n const [errors, setErrors] = useState('');\n const [randomNumber, setRandomNumber] = useState(RNG());\n const [emailFieldSelected, setEmailFieldSelected] = useState(false);\n const [passwordFieldSelected, setPasswordFieldSelected] = useState(false);\n const [newPasswordFieldSelected, setNewPasswordFieldSelected] = useState(false);\n const [newPasswordConfirmationFieldSelected, setNewPasswordConfirmationFieldSelected] = useState(false);\n const [domainFieldSelected, setDomainFieldSelected] = useState(false);\n const [singleSignOn, setSingleSignOn] = useState(false);\n const [resetPassword, setResetPassword] = useState(false);\n const [updatePassword, setUpdatePassword] = useState(false);\n const [token, setToken] = useState('');\n const [loading, setLoading] = useState(false);\n const messages = props.messages ? props.messages.match(/<\\s*span[^>]*>(.*?)<\\s*\\/\\s*span>/)[1] : '';\n const submitButton = useRef(null);\n const size = useWindowSize();\n\n function useWindowSize() {\n const [windowSize, setWindowSize] = useState({\n width: 0,\n height: 0,\n });\n useEffect(() => {\n function handleResize() {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n }\n\n window.addEventListener(\"resize\", handleResize);\n\n handleResize();\n return () => window.removeEventListener(\"resize\", handleResize);\n }, []);\n return windowSize;\n }\n\n useEffect(() => {\n const redirect = new URLSearchParams(window.location.search).get('redirect_from')\n const user_email = new URLSearchParams(window.location.search).get('user_email')\n if (redirect === 'saml_sso') {\n setEmail(user_email)\n setStep(STEPS.TWOFACTOR)\n }\n }, [])\n\n useEffect(() => {\n if(window.location.href.includes('reset')){\n setToken(window.location.href.split('=').pop());\n }\n if (token){\n setUpdatePassword(true);\n setResetPassword(false);\n setSingleSignOn(false);\n }\n }, [token]);\n\n const handleEmailInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (errors) {\n setErrors('');\n }\n setEmail(event.target.value);\n }\n\n const handleCodeInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (errors) {\n setErrors('');\n }\n setCode(event.target.value);\n }\n\n const handlePasswordInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (errors) {\n setErrors('');\n }\n setPassword(event.target.value);\n }\n\n const handleDomainInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (errors) {\n setErrors('');\n }\n setDomain(event.target.value);\n }\n\n const handleNewPasswordInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n setNewPassword(event.target.value);\n }\n\n const handleNewPasswordConfirmationInput = (event: React.ChangeEvent<HTMLInputElement>) => {\n setNewPasswordConfirmation(event.target.value);\n }\n\n const handleSubmit = async () => {\n setLoading(true)\n if (singleSignOn) {\n await postSSOLogin()\n } else if (resetPassword) {\n await postResetPassword()\n } else if (updatePassword) {\n await putUpdatePassword()\n } else if (step === STEPS.TWOFACTOR) {\n await postTwoFactorCode()\n } else {\n await postLogin()\n }\n clearAllPreferenceCache();\n setLoading(false);\n }\n\n const handleSSOClick = () => {\n setSingleSignOn(prev => !prev);\n setResetPassword(false);\n setUpdatePassword(false);\n setErrors('');\n }\n\n const handleButtonSecondaryClick = () => {\n if (step === STEPS.LOGIN) {\n setResetPassword(prev => !prev);\n setUpdatePassword(false)\n } else {\n resendTwoFactorCode();\n }\n setErrors('');\n }\n\n const buttonDisabled = () => {\n if (singleSignOn) {\n return !domain\n } else if (resetPassword) {\n return !email\n } else if (updatePassword) {\n return !newPassword || !newPasswordConfirmation\n } else if (step === STEPS.TWOFACTOR) {\n return code.length !== 6\n } else {\n return !email || !password || !!errors || loading\n }\n }\n\n function finaliseLogin() {\n localStorage.removeItem(\"userPermissions\");\n window.location.href = redirectUrl || `${BASE_URL}/admin`\n }\n\n async function postLogin() {\n try {\n const response = await Api.postLogin({\n 'email': email,\n 'password': password\n })\n if ('errors' in response) {\n setErrors(response.errors ? response.errors[0] : '')\n setSingleSignOn(response.password_disabled === true ? true : false)\n return\n }\n if (response.url) {\n setRedirectUrl(response.url)\n }\n if (response.twofa_enabled) {\n const res = await Api.sendTwoFactor()\n if ('error' in res) {\n return setErrors(res.error)\n }\n setStep(STEPS.TWOFACTOR)\n } else {\n finaliseLogin(response.url)\n }\n } catch (error) {\n console.log(error)\n }\n }\n\n async function postSSOLogin() {\n try {\n const response = await Api.postSSOLogin({\n team_name: domain\n })\n if (!response.errors) {\n window.location.href = response.url;\n }\n setErrors(response.errors ? response.errors[0] : '');\n } catch (error) {\n console.log(error);\n }\n }\n\n async function postTwoFactorCode() {\n try {\n const response = await Api.postTwoFactor({ code })\n if (response.authenticated) {\n finaliseLogin(response.url)\n } else {\n if ('error' in response) {\n return setErrors(response.error)\n }\n }\n } catch (error) {\n console.log(error)\n }\n }\n\n async function resendTwoFactorCode() {\n setSendingCode(true)\n try {\n const res = await Api.sendTwoFactor()\n if ('error' in res) {\n return setErrors(res.error)\n }\n setSnack(`A new code has been sent to ${email}`)\n } catch (error) {\n console.log(error)\n } finally {\n setSendingCode(false)\n }\n }\n\n async function postResetPassword() {\n try {\n const response = await Api.postResetPassword({\n 'email': email\n })\n\n setErrors(response.notice ? response.notice[0] : '')\n\n } catch (error) {\n console.log(error)\n }\n }\n\n async function putUpdatePassword() {\n try {\n const response = await Api.putUpdatePassword(token, {\n 'password': newPassword,\n 'password_confirmation': newPasswordConfirmation,\n })\n if(response.success){\n window.location.href = `${BASE_URL}/login`\n }\n setErrors(response.errors ? response.errors[0] : '')\n\n } catch (error) {\n console.log(error)\n }\n }\n\n const handleKeyPress = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter') submitButton.current.click();\n }\n\n const buttonText = (() => {\n if (updatePassword) {\n return 'Update'\n } else if (resetPassword) {\n return 'Send password reset link'\n } else if (step === STEPS.TWOFACTOR) {\n return 'Submit'\n } else {\n return 'Login'\n }\n })();\n\n const buttonSecondaryText = (() => {\n if (sendingCode) {\n return 'Sending'\n } else if (resetPassword) {\n return 'Return to login'\n } else if (step === STEPS.TWOFACTOR) {\n return 'Resend code'\n } else {\n return 'Forgot password?'\n }\n })();\n\n return (\n <Box sx={classes.pageContainer}>\n <Box sx={classes.logoContainer}>\n <img src={size.width <= 1024 ? '/static/stg-logo-white.svg' : '/static/scout-logo.png'} alt='scout logo' />\n </Box>\n\n <Box sx={classes.loginFormContainer}>\n <Box sx={classes.loginForm}>\n <FadeChildrenVisibility>\n <Box key={1} is-visible={step === STEPS.TWOFACTOR}>\n <h1>Two-step authentication</h1>\n <Box sx={classes.description}>\n Enter the authentication code we sent to <span>{email}</span>. This code will be valid for {props.intervalToValidateInMinutes} mins.\n </Box>\n <TextField\n fullWidth\n id=\"code\"\n label=\"Code\"\n name=\"code\"\n autoComplete=\"code\"\n value={code}\n size={size.width <= 430 ? \"small\" : \"medium\"}\n autoFocus\n onChange={handleCodeInput}\n onKeyDown={handleKeyPress}\n onFocus={() => setEmailFieldSelected(true)}\n onBlur={() => setEmailFieldSelected(false)}\n sx={classes.inputs}\n InputLabelProps={{ shrink: !!code || emailFieldSelected, sx: classes.inputLabel }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <VpnKeyIcon sx={classes.inputIcons} />\n </InputAdornment>\n ),\n }}\n />\n </Box>\n <Box key={2} is-visible={step === STEPS.LOGIN}>\n {messages &&\n <Alert\n icon={<InfoIcon fontSize=\"inherit\" />}\n severity=\"warning\"\n id=\"alert-with-icon\"\n sx={classes.alert}\n >\n {messages}\n </Alert>\n }\n <h1>Welcome back</h1>\n <FadeChildrenVisibility>\n <div key={0} is-visible={!(singleSignOn || resetPassword || updatePassword)}>\n <TextField\n fullWidth\n id=\"email\"\n label=\"Email\"\n name=\"email\"\n value={email}\n size={size.width <= 430 ? \"small\" : \"medium\"}\n autoFocus\n onChange={handleEmailInput}\n onKeyDown={handleKeyPress}\n onFocus={() => setEmailFieldSelected(true)}\n onBlur={() => setEmailFieldSelected(false)}\n sx={classes.inputs}\n InputLabelProps={{ shrink: !!email || emailFieldSelected, sx: classes.inputLabel }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <EmailIcon sx={classes.inputIcons} />\n </InputAdornment>\n ),\n }}\n />\n <TextField\n fullWidth\n id=\"password\"\n name=\"password\"\n label=\"Password\"\n type={showPassword ? 'text' : 'password'}\n autoComplete=\"current-password\"\n value={password}\n size={size.width <= 430 ? \"small\" : \"medium\"}\n onChange={handlePasswordInput}\n onKeyDown={handleKeyPress}\n onFocus={() => setPasswordFieldSelected(true)}\n onBlur={() => setPasswordFieldSelected(false)}\n sx={{...classes.inputs, marginBottom: '6px'}}\n InputLabelProps={{ shrink: !!password || passwordFieldSelected, sx: classes.inputLabel }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <LockIcon sx={classes.inputIcons}/>\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={() => setShowPassword(prev => !prev)}\n edge=\"end\"\n >\n {showPassword ? <VisibilityOff /> : <Visibility />}\n </IconButton>\n </InputAdornment>\n )\n }}\n />\n </div>\n <div key={1} is-visible={!(!singleSignOn || resetPassword || updatePassword)}>\n <TextField\n fullWidth\n id=\"domain-name\"\n label=\"Domain name\"\n name=\"Domain name\"\n autoComplete=\"domain\"\n size={size.width <= 430 ? \"small\" : \"medium\"}\n autoFocus\n value={domain}\n onChange={handleDomainInput}\n onKeyDown={handleKeyPress}\n onFocus={() => setDomainFieldSelected(true)}\n onBlur={() => setDomainFieldSelected(false)}\n sx={classes.inputs}\n InputLabelProps={{ shrink: !!domain || domainFieldSelected, sx: classes.inputLabel }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <DomainIcon sx={classes.inputIcons}/>\n </InputAdornment>\n ),\n }}\n />\n </div>\n <div key={2} is-visible={resetPassword}>\n <TextField\n fullWidth\n id=\"reset-email\"\n label=\"Email\"\n name=\"email\"\n autoComplete=\"email\"\n size={size.width <= 430 ? \"small\" : \"medium\"}\n value={email}\n autoFocus\n onChange={handleEmailInput}\n onKeyDown={handleKeyPress}\n onFocus={() => setEmailFieldSelected(true)}\n onBlur={() => setEmailFieldSelected(false)}\n sx={classes.inputs}\n InputLabelProps={{ shrink: !!email || emailFieldSelected, sx: classes.inputLabel }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <EmailIcon sx={classes.inputIcons}/>\n </InputAdornment>\n ),\n }}\n />\n </div>\n <div key={3} is-visible={updatePassword}>\n <TextField\n fullWidth\n id=\"newPassword\"\n name=\"newPassword\"\n label=\"Password\"\n type={showNewPassword ? 'text' : 'password'}\n autoComplete=\"current-password\"\n size={size.width <= 430 ? \"small\" : \"medium\"}\n value={newPassword}\n onChange={handleNewPasswordInput}\n onKeyDown={handleKeyPress}\n onFocus={() => setNewPasswordFieldSelected(true)}\n onBlur={() => setNewPasswordFieldSelected(false)}\n sx={{...classes.inputs, marginBottom: '6px'}}\n InputLabelProps={{ shrink: !!newPassword || newPasswordFieldSelected, sx: classes.inputLabel }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <LockIcon sx={classes.inputIcons}/>\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={() => setShowNewPassword(prev => !prev)}\n edge=\"end\"\n >\n {showPassword ? <VisibilityOff /> : <Visibility />}\n </IconButton>\n </InputAdornment>\n )\n }}\n />\n <TextField\n fullWidth\n id=\"newPasswordConfirm\"\n name=\"newPasswordConfirm\"\n label=\"Password Confirmation\"\n type={showNewPasswordConfirmation ? 'text' : 'password'}\n autoComplete=\"current-password\"\n size={size.width <= 430 ? \"small\" : \"medium\"}\n value={newPasswordConfirmation}\n onChange={handleNewPasswordConfirmationInput}\n onKeyDown={handleKeyPress}\n onFocus={() => setNewPasswordConfirmationFieldSelected(true)}\n onBlur={() => setNewPasswordConfirmationFieldSelected(false)}\n sx={{...classes.inputs, marginBottom: '6px'}}\n InputLabelProps={{ shrink: !!newPasswordConfirmation || newPasswordConfirmationFieldSelected, sx: classes.inputLabel }}\n InputProps={{\n startAdornment: (\n <InputAdornment position=\"start\">\n <LockIcon sx={classes.inputIcons}/>\n </InputAdornment>\n ),\n endAdornment: (\n <InputAdornment position=\"end\">\n <IconButton\n aria-label=\"toggle password visibility\"\n onClick={() => setShowNewPasswordConfirmation(prev => !prev)}\n edge=\"end\"\n >\n {showPassword ? <VisibilityOff /> : <Visibility />}\n </IconButton>\n </InputAdornment>\n )\n }}\n />\n </div>\n </FadeChildrenVisibility>\n </Box>\n </FadeChildrenVisibility>\n <Box sx={classes.forgotPassword}>\n <Box\n id='forgot-password'\n sx={classes.link}\n onClick={handleButtonSecondaryClick}\n >\n {buttonSecondaryText}\n </Box>\n </Box>\n <Box\n sx={{\n ...classes.errorMessage,\n height: errors ? `${Math.ceil(errors.length / 56) * 22}px` : '0px',\n width: '100%',\n }}\n >\n <Box\n sx={errors ?\n {...classes.fadeIn, textAlign: 'center'} : {...classes.fadeOut, textAlign: 'center'}\n }\n id='message-box'\n >\n {errors}\n </Box>\n </Box>\n <Button\n id='submit-button'\n sx={classes.loginButton}\n ref={submitButton}\n onClick={handleSubmit}\n disabled={buttonDisabled()}\n >\n {loading && <CircularProgress size={20} color=\"inherit\" />}\n {buttonText}\n </Button>\n <Box sx={classes.singleSignOn}>\n <Box\n id='single-sign-on'\n sx={classes.link}\n onClick={handleSSOClick}\n >\n {singleSignOn ? 'Sign in using email' : 'Sign in using Single Sign On'}\n </Box>\n </Box>\n </Box>\n </Box>\n <Box sx={{backgroundImage: `linear-gradient(#00000040, #00000040), url(${assets[randomNumber].url})`, ...classes.imageAndBlurbContainer}}>\n <Box sx={classes.blurb}>\n {assets[randomNumber].blurb}\n </Box>\n </Box>\n <Box sx={{...classes.infoPanel, backgroundColor: randomNumber ? '#5BC4BF' : '#084D6D'}}>\n <Box sx={classes.infoPanelText}>\n {assets[randomNumber].info}\n </Box>\n </Box>\n <Box\n sx={classes.helpContainer}\n onClick={() => window.location.href = 'https://scouttalent.force.com/support/s/'}\n >\n <HelpIcon sx={classes.helpIcon}/>\n <Box sx={classes.helpText}>\n Support Centre\n </Box>\n </Box>\n <Snackbar\n open={!!snack}\n onClose={() => setSnack('')}\n message={snack}\n anchorOrigin={{ horizontal: 'center', vertical: 'bottom' }} />\n </Box>\n )\n}\n\nexport default NewLogin;\n","import { Box } from '@mui/material';\nimport React, { SetStateAction, useEffect, useRef, useState } from 'react';\nimport { classes } from '../styles';\n\ninterface IProps {\n setHeight: React.Dispatch<SetStateAction<number>>;\n props: {\n children: React.ReactNode;\n ['is-visible']: boolean;\n };\n}\n\nconst Child: React.FC<IProps> = ({ props, setHeight }) => {\n const visible = props['is-visible'];\n\n const ref = (node: HTMLElement) => {\n if (!node || !visible) return;\n setHeight(node.offsetHeight);\n };\n\n return (\n <Box ref={ref} sx={visible ? classes.fadeIn : classes.fadeOut}>\n {props.children}\n </Box>\n );\n};\n\nconst FadeChildrenVisibility: React.FC = ({ children }) => {\n const [height, setHeight] = useState(0);\n const ref = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n if (!ref.current) return\n const index = Array.from(children).findIndex(child => child.props['is-visible'])\n const target = ref.current.children[index]\n setTimeout(() => {\n setHeight(target.clientHeight)\n }, 400)\n }, [children])\n\n return (\n <Box\n ref={ref}\n style={{\n height: height || 'auto',\n position: 'relative',\n width: '100%',\n transition: 'height 0.4s ease-in-out'\n }}\n >\n {Array.isArray(children) &&\n children.map((child) => (\n <Child {...child} key={child.key} setHeight={setHeight} height={height} />\n ))}\n </Box>\n );\n};\n\nexport default FadeChildrenVisibility;\n","import React, { MouseEvent, SyntheticEvent, useEffect, useReducer, useRef, useState } from 'react';\nimport { Divider, Skeleton, Stack, Tab, Tabs } from '@mui/material';\nimport { Forward as ForwardIcon } from '@mui/icons-material';\nimport { ApplicationReducer, InitialApplicationState } from './reducer';\nimport StyledSnackbar, { ISnackbarInput } from '../Components/CustomUIElements/StyledSnackbar';\nimport { useQuery } from '@tanstack/react-query';\nimport Api from './API';\nimport ApplicationHeader from './ApplicationHeader';\nimport { styles as tabsStyle } from '../Candidate/styles';\nimport { styles } from './styles';\nimport OverviewTab from './OverviewTab';\nimport ActivitiesTab from '../Candidate/ActivitiesTab';\nimport TasksAndEventsTab from './TasksAndEventsTab';\nimport SmartFormsTab from './SmartFormsTab/SmartFormsTab';\nimport SendEmail from './Modals/SendEmail';\nimport AddToEvent from './Modals/AddToEvent';\nimport InviteToTimeslot from './Modals/InviteToTimeslot';\nimport { ModalType } from './config';\nimport { getPermissions } from '../../shared/permissionHelpers';\nimport { formatUserPermissions } from '../Components/Utilities/formatUserPermissions';\nimport AddForm from './Modals/AddForm';\nimport SendForm from './Modals/SendForm';\nimport IntegrationsTab from './IntegrationsTab';\nimport { IApplicationPageProps } from '.';\nimport { scrollToElement } from '../utils/scroll-to-element';\nimport GenericDialog from '../Components/Modals/GenericDialog';\n\nimport ExportToOnboard from './Modals/ExportToOnboard';\nimport { useNotepadUpdater } from './helper';\n\nexport default function Application({\n applicationId,\n jobId,\n showLinkedInURL,\n aiSummariesEnabled,\n currentUser,\n newIntegrationEnabled\n}: IApplicationPageProps) {\n const [ApplicationState, dispatch] = useReducer(ApplicationReducer, InitialApplicationState);\n const { modalsOpen } = ApplicationState;\n const [tabValue, setTabValue] = useState<number>(0);\n const [showDialog, setShowDialog] = useState<boolean>(false);\n const [pendingHref, setPendingHref] = useState<string | null>(null);\n const {\n overviewTab: { hasUnsavedChanges }\n } = ApplicationState;\n\n const urlParams = new URLSearchParams(window.location.search);\n const cognology = urlParams.get('cognology'); // used for new approval created from the approval forms page\n const scrollRef = useRef<HTMLDivElement>(null);\n const headerRefs = useRef<HTMLDivElement[]>([]);\n const urlIndex = window.location.href.split('?i=')[1];\n const applicationURL = `${window.location.origin}/admin/jobs/${jobId}/new_applications/`;\n\n const { data: application, isLoading: loadingApplication } = useQuery({\n queryKey: ['application'],\n queryFn: async () => {\n const { res } = await Api.getApplicationData(jobId, applicationId, urlIndex);\n return res;\n },\n onSuccess: () => {\n if (cognology) {\n setTabValue(4);\n dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.COGNOLOGY_WAITING_FOR_APPROVAL });\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting application data, ${error}`,\n state: 'error'\n }\n })\n });\n\n useQuery({\n queryKey: ['permissions'],\n queryFn: async () => {\n const res = await getPermissions(currentUser.api_key);\n return formatUserPermissions(res);\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting user permissions, ${error}`,\n state: 'error'\n }\n });\n }\n });\n\n const { mutate: updateApplicationNotepad, isLoading: updatingApplicationNotepad } =\n useNotepadUpdater({ application, dispatch });\n\n const handleTabChange = (_e: SyntheticEvent, value: number) => {\n setTabValue(value);\n };\n\n const onConfirmHandler = (shouldSave: boolean) => {\n if (pendingHref === null) return;\n window.location.href = pendingHref;\n shouldSave && updateApplicationNotepad(ApplicationState.overviewTab.note);\n };\n\n useEffect(\n () =>\n dispatch({\n type: 'SET_USER_DATA',\n payload: {\n apiKey: currentUser.api_key,\n isAdminUser: currentUser.admin,\n userTimeZone: currentUser.timeZone,\n userEmail: currentUser.email\n }\n }),\n [currentUser]\n );\n\n useEffect(() => {\n const isOverviewTab = tabValue === 0 && application;\n\n if (isOverviewTab) {\n dispatch({\n type: 'SET_OVERVIEW_TAB',\n payload: { note: ApplicationState.overviewTab.note || application.suitability_comment }\n });\n }\n }, [application]);\n\n useEffect(() => {\n scrollToElement(scrollRef, { block: 'start', behavior: 'instant' });\n }, [tabValue]);\n\n useEffect(() => {\n const handleClick = (event: MouseEvent) => {\n const target = (event.target as HTMLElement).closest('a');\n if (hasUnsavedChanges && target?.href) {\n event.preventDefault();\n setPendingHref(target.href);\n setShowDialog(true);\n }\n };\n\n document.addEventListener('click', handleClick as unknown as EventListener);\n\n return () => {\n document.removeEventListener('click', handleClick as unknown as EventListener);\n };\n }, [hasUnsavedChanges]);\n\n return (\n <Stack sx={{ padding: 5 }} ref={scrollRef}>\n <Stack sx={styles.applicationPageStickyHeader}>\n <ApplicationHeader\n ApplicationState={ApplicationState}\n dispatch={dispatch}\n showLinkedInURL={showLinkedInURL}\n />\n <Stack>\n <Stack sx={{ flexDirection: 'row', columnGap: 5, justifyContent: 'space-between' }}>\n {loadingApplication ? (\n <Skeleton height={30} animation=\"wave\" width=\"100%\" />\n ) : (\n <>\n <Tabs\n value={tabValue}\n onChange={handleTabChange}\n variant=\"scrollable\"\n scrollButtons={false}\n TabIndicatorProps={{\n sx: {\n ...tabsStyle.candidateTabIndicator,\n maxWidth: headerRefs.current[tabValue]?.clientWidth - 15\n }\n }}\n sx={tabsStyle.candidateTabs}\n >\n <Tab\n id=\"application-overview-tab\"\n label=\"Overview\"\n ref={(el) => el && (headerRefs.current[0] = el)}\n />\n <Tab\n id=\"application-tasks-and-events-tab\"\n label=\"Tasks & Events\"\n ref={(el) => el && (headerRefs.current[1] = el)}\n />\n <Tab\n id=\"application-smart-forms-tab\"\n label=\"Smart Forms\"\n ref={(el) => el && (headerRefs.current[2] = el)}\n />\n <Tab\n id=\"application-activities-tab\"\n label=\"Activities\"\n ref={(el) => el && (headerRefs.current[3] = el)}\n />\n <Tab\n id=\"application-integrations-tab\"\n label=\"Integrations\"\n ref={(el) => el && (headerRefs.current[4] = el)}\n />\n </Tabs>\n {urlIndex && (\n <Stack sx={styles.surroundingApplications}>\n <Stack sx={{ width: 'max-content', fontSize: '16px', fontWeight: 500 }}>\n {`${Number(urlIndex) + 1} of ${application?.surround_application.total_number_in_current_filter} applications`}\n </Stack>\n {application?.surround_application.pre_app_id && (\n <Stack\n id=\"previous-application-button\"\n sx={styles.surroundingApplicationsButton}\n onClick={() => {\n window.location.href = `${applicationURL}${application?.surround_application.pre_app_id}?i=${application?.surround_application.pre_idx}`;\n }}\n >\n <ForwardIcon sx={{ transform: 'scaleX(-1)' }} fontSize=\"small\" />\n </Stack>\n )}\n {application?.surround_application.next_app_id && (\n <Stack\n id=\"next-application-button\"\n sx={styles.surroundingApplicationsButton}\n onClick={() => {\n window.location.href = `${applicationURL}${application?.surround_application.next_app_id}?i=${application?.surround_application.next_idx}`;\n }}\n >\n <ForwardIcon fontSize=\"small\" />\n </Stack>\n )}\n </Stack>\n )}\n </>\n )}\n </Stack>\n <Divider />\n </Stack>\n </Stack>\n {tabValue === 0 && (\n <OverviewTab\n ApplicationState={ApplicationState}\n dispatch={dispatch}\n aiSummariesEnabled={aiSummariesEnabled}\n updateApplicationNotepad={updateApplicationNotepad}\n updatingApplicationNotepad={updatingApplicationNotepad}\n />\n )}\n {tabValue === 1 && (\n <TasksAndEventsTab\n ApplicationState={ApplicationState}\n dispatch={dispatch}\n currentUserId={currentUser.id}\n />\n )}\n {tabValue === 2 && <SmartFormsTab ApplicationState={ApplicationState} dispatch={dispatch} />}\n {tabValue === 3 && <ActivitiesTab dispatch={dispatch} />}\n {tabValue === 4 && (\n <IntegrationsTab\n ApplicationState={ApplicationState}\n dispatch={dispatch}\n newIntegrationEnabled={newIntegrationEnabled}\n />\n )}\n {modalsOpen === ModalType.SEND_EMAIL && (\n <SendEmail ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.ADD_TO_EVENT && (\n <AddToEvent\n ApplicationState={ApplicationState}\n dispatch={dispatch}\n smsTemplatePermissions={true}\n />\n )}\n {modalsOpen === ModalType.INVITE_TO_TIMESLOT && (\n <InviteToTimeslot\n ApplicationState={ApplicationState}\n dispatch={dispatch}\n smsTemplatePermissions={true}\n />\n )}\n {modalsOpen === ModalType.ADD_FORM && (\n <AddForm ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.SEND_FORM && (\n <SendForm\n ApplicationState={ApplicationState}\n dispatch={dispatch}\n smsTemplatePermissions={true}\n />\n )}\n {modalsOpen === ModalType.EXPORT_TO_ONBOARD && (\n <ExportToOnboard ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {!!ApplicationState.snackbar.message && (\n <StyledSnackbar\n message={ApplicationState.snackbar.message}\n state={ApplicationState.snackbar.state}\n setSnackbarState={(snackbarInput: ISnackbarInput) =>\n dispatch({ type: 'SET_SNACKBAR', payload: snackbarInput })\n }\n />\n )}\n {showDialog && (\n <GenericDialog\n alternateColor\n buttonCallback={() => onConfirmHandler(true)}\n buttonText=\"Save\"\n callbackLoading={updatingApplicationNotepad}\n description=\"You have unsaved Notepad changes. Would you like to save them before leaving this page?\"\n disablePrimaryButton={updatingApplicationNotepad}\n isDialogOpen={showDialog}\n onCancelCallback={() => onConfirmHandler(false)}\n secondaryButtonText=\"Discard\"\n setDialogOpen={setShowDialog}\n title=\"Unsaved changes\"\n url=\"\"\n />\n )}\n </Stack>\n );\n}\n","import React from 'react';\nimport { Button, Stack, Tooltip } from '@mui/material';\nimport { styles } from './styles';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport BetaButton from '../Components/Buttons/BetaButton';\nimport { FelixSurveySVG } from './OverviewTab/Icons';\n\nexport default function ApplicationBetaButton() {\n return (\n <Tooltip\n placement=\"right-start\"\n slotProps={{\n arrow: { sx: { color: 'white', fontSize: 'large' } },\n tooltip: {\n sx: {\n backgroundColor: 'white',\n boxShadow: '0 0 20px rgba(36, 36, 36, 0.18)',\n maxWidth: 'unset'\n }\n }\n }}\n title={\n <Stack sx={styles.betaButtonTooltipContainer}>\n <FelixSurveySVG />\n <Stack sx={styles.modalTitle}>Our new interface is live!</Stack>\n <Stack sx={{ fontSize: '16px' }}>\n {`We built it to enhance your experience. It's still in Beta, so feel free to\n share any feedback to help us improve!`}\n </Stack>\n <Stack sx={{ flexDirection: 'row', columnGap: 1, justifyContent: 'flex-end' }}>\n <Button\n sx={sharedClasses.genericButtonSecondary}\n onClick={() => window.open(`https://form.jotform.com/242677079968882`, '_blank')}\n >\n Give feedback\n </Button>\n <Button\n sx={sharedClasses.genericButton}\n onClick={() =>\n window.open(`https://scouttalenthq.com/new-applications-design`, '_blank')\n }\n >\n Learn more\n </Button>\n </Stack>\n </Stack>\n }\n arrow\n >\n <BetaButton sx={{ padding: '4px 8px', fontSize: '8px', boxShadow: 'none' }} />\n </Tooltip>\n );\n}\n","import React, { Dispatch, useEffect, useMemo, useState } from 'react';\nimport {\n Avatar,\n CircularProgress,\n Divider,\n Link,\n Skeleton,\n Stack,\n Tooltip,\n Typography\n} from '@mui/material';\nimport {\n Close as CloseIcon,\n Done as DoneIcon,\n DriveFileMove as DriveFileMoveIcon,\n Edit as EditIcon,\n Email as EmailIcon,\n Event as EventIcon,\n LinkedIn as LinkedInIcon,\n LocationOn as LocationOnIcon,\n Man4 as Man4Icon,\n MoreVert as MoreVertIcon,\n Phone as PhoneIcon,\n ContentCopy as CopyIcon\n} from '@mui/icons-material';\nimport { styles } from './styles';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport { FormTextField } from '../Components/CustomUIElements/FormTextField';\nimport MoveApplicationModal from './Modals/MoveApplicationModal';\nimport { ApplicationAction, ApplicationState, IApplication } from './types';\nimport { LINKEDIN_URL_REGEX, ModalType } from './config';\nimport Api from './API';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport MoreOptionsPopover from './MoreOptionsPopover';\nimport GenericDialog from '../Components/Modals/GenericDialog';\nimport { DeleteApplication } from './Modals/DeleteApplication';\nimport SearchIndex from './Modals/SearchIndex';\nimport { formatAddress } from '../Candidate/ProfileTab';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport { theme } from '../../ThemeContext/ThemeObject';\nimport ApplicationBetaButton from './ApplicationBetaButton';\nimport ApplicationStatusPopover from './ApplicationStatusPopover';\nimport CandidateIcon from '../Candidate/CandidateIcon';\nimport moment from 'moment-timezone';\n\nconst browserTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\nconst BASE_URL = window.location.origin;\n\nexport default function ApplicationHeader({\n ApplicationState,\n dispatch,\n showLinkedInURL\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n showLinkedInURL: boolean;\n}) {\n const { modalsOpen, userTimeZone } = ApplicationState;\n const [linkedInURL, setLinkedInURL] = useState<string>('');\n const [editLinkedInURL, setEditLinkedInURL] = useState<boolean>(false);\n\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n const closeModal = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n const { mutate: trashApplication, isLoading: trashingApplication } = useMutation({\n mutationFn: async () => {\n if (application?.job) {\n await Api.trashApplication(application.job.id, application.id);\n }\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: 'Application trashed', state: 'success' }\n });\n if (application?.job) {\n window.location.href = `${window.location.origin}/admin/jobs/${application.job.id}?applications=true`;\n }\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error trashing application, ${error.error}`,\n state: 'error'\n }\n });\n },\n onSettled: () => closeModal()\n });\n\n const { mutate: resendApplication, isLoading: resendingApplication } = useMutation({\n mutationFn: async () => {\n if (application?.job) {\n const response = await Api.resendApplication(application.job.id, application.id);\n return response;\n }\n },\n onSuccess: (res) => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.res.message, state: 'success' } });\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error resending application, ${error.error}`,\n state: 'error'\n }\n });\n },\n onSettled: () => closeModal()\n });\n\n const { mutate: updateLinkedInURL, isLoading: updatingLinkedInURL } = useMutation({\n mutationFn: async () =>\n application?.candidate &&\n Api.updateCandidateLinkedInURL(application.candidate.id, linkedInURL),\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Candidate linkedIn url has been successfully updated`,\n state: 'success'\n }\n });\n application?.candidate &&\n queryClient.setQueryData(['application'], {\n ...application,\n candidate: { ...application.candidate, linkedin_url: linkedInURL }\n });\n queryClient.invalidateQueries(['application'], { exact: true });\n setEditLinkedInURL(false);\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error updating candidate linkedIn url, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n const modalState = useMemo(() => {\n return {\n modalDesc: () => (\n <Stack>\n <Stack>{`Are you sure you want to ${modalsOpen === ModalType.TRASH ? 'move this' : 'resend'}`}</Stack>\n <Stack>{`application to ${modalsOpen === ModalType.TRASH ? 'Trash' : 'application recipient'}?`}</Stack>\n </Stack>\n ),\n modalTitle: `${modalsOpen === ModalType.TRASH ? 'Trash' : 'Resend'} application`,\n buttonText: modalsOpen === ModalType.TRASH ? 'Trash' : 'Resend',\n callback: modalsOpen === ModalType.TRASH ? trashApplication : resendApplication,\n callbackLoading: modalsOpen === ModalType.TRASH ? trashingApplication : resendingApplication,\n alternateColor: modalsOpen === ModalType.RESEND\n };\n }, [modalsOpen, resendApplication, resendingApplication, trashApplication, trashingApplication]);\n\n useEffect(() => {\n application?.candidate?.linkedin_url && setLinkedInURL(application.candidate.linkedin_url);\n }, [application]);\n\n const validateLinkedInURL = (url: string) => {\n return !!url.match(LINKEDIN_URL_REGEX) || url.length === 0;\n };\n\n const sanitizeLinkedInURL = (url: string) => {\n const match = url.match(LINKEDIN_URL_REGEX);\n return match ? match[0] : '';\n };\n\n const handleLinkedinSubmit = () => {\n if (validateLinkedInURL(linkedInURL)) {\n setLinkedInURL(sanitizeLinkedInURL(linkedInURL));\n updateLinkedInURL();\n }\n };\n\n const getLinkedInProfileName = () => {\n const profileName = application?.candidate?.linkedin_url?.split('/')[4];\n return !application?.candidate?.linkedin_url || !profileName ? 'Search Candidate' : profileName;\n };\n\n const LinkedInSection = useMemo(() => {\n return (\n <Stack sx={styles.applicationHeaderItems}>\n <LinkedInIcon sx={styles.scoutNavyIcon} />\n {editLinkedInURL ? (\n <>\n <FormTextField\n value={linkedInURL}\n onChange={(e) => setLinkedInURL(e.target.value)}\n styles={styles.linkedInURLInput}\n placeholder=\"e.g. https://linkedin.com/in/felix\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n handleLinkedinSubmit();\n }\n }}\n />\n {updatingLinkedInURL ? (\n <CircularProgress size={15} />\n ) : (\n <DoneIcon\n id=\"save-linkedin-url-button\"\n sx={{ color: '#5BC4C0', cursor: 'pointer', fontSize: '16px' }}\n onClick={handleLinkedinSubmit}\n />\n )}\n <CloseIcon\n id=\"cancel-linkedin-url-button\"\n sx={{ ...styles.clickableGreyIcon, fontSize: '16px' }}\n onClick={() => {\n application?.candidate?.linkedin_url\n ? setLinkedInURL(application?.candidate.linkedin_url)\n : setLinkedInURL('');\n setEditLinkedInURL(false);\n }}\n />\n {linkedInURL && !validateLinkedInURL(linkedInURL) && (\n <Stack sx={{ color: theme.palette.error.main, fontSize: '10px' }}>\n Please enter a valid LinkedIn URL\n </Stack>\n )}\n </>\n ) : (\n <>\n <Typography\n sx={styles.linkedInURLLink}\n onClick={() =>\n window.open(\n application?.candidate?.linkedin_url ||\n `https://www.linkedin.com/pub/dir?firstName=${application?.candidate?.firstname}&lastName=${application?.candidate?.lastname}&trk=people-guest_people-search-bar_search-submit`,\n '_blank'\n )\n }\n >\n {getLinkedInProfileName()}\n </Typography>\n <EditIcon\n id=\"edit-linkedin-url-button\"\n sx={{ ...styles.clickableGreyIcon, fontSize: '12px' }}\n onClick={() => setEditLinkedInURL(true)}\n />\n </>\n )}\n </Stack>\n );\n }, [application, editLinkedInURL, linkedInURL, updateLinkedInURL, updatingLinkedInURL]);\n\n return (\n <Stack>\n {!application ? (\n [...Array(3)].map((_, index) => <Skeleton key={index} height={30} animation=\"wave\" />)\n ) : (\n <>\n <Stack sx={{ flexDirection: 'row', columnGap: 3 }}>\n <Avatar sx={{ background: '#DDDDDD', width: '72px', height: '72px' }}>\n <CandidateIcon\n existingCandidate={application.candidate?.existing_candidate}\n sx={{ fontSize: '60px' }}\n />\n </Avatar>\n <Stack sx={{ minWidth: '150px' }}>\n <Stack sx={{ flexDirection: 'row', alignItems: 'center', columnGap: 1 }}>\n <Stack sx={{ color: '#666666', fontSize: '10px', fontWeight: 600 }}>\n Application #{application.id}\n </Stack>\n <ApplicationBetaButton />\n </Stack>\n <Link\n href={`${BASE_URL}/admin/candidates/${application.candidate.id}`}\n target=\"_blank\"\n sx={styles.candidateLink}\n >\n {application.candidate?.title} {application.candidate?.firstname}{' '}\n {application.candidate?.lastname}\n </Link>\n <Stack\n id=\"job-name-link\"\n sx={{ color: '#939393', fontSize: '14px', cursor: 'pointer' }}\n onClick={() => window.open(`${BASE_URL}/admin/jobs/${application.job.id}`, '_blank')}\n >\n {application.job?.title}\n </Stack>\n <ApplicationStatusPopover {...{ dispatch }} />\n </Stack>\n <Divider orientation=\"vertical\" flexItem sx={{ margin: '0px 16px' }} />\n <Stack sx={{ rowGap: 2, paddingTop: 0.5, minWidth: '240px' }}>\n <Stack\n sx={{\n ...styles.applicationHeaderItems,\n cursor: permissions?.Applications?.['Send Emails'] ? 'pointer' : 'unset'\n }}\n >\n <EmailIcon sx={styles.scoutNavyIcon} />\n <Stack\n id=\"email-link\"\n onClick={() =>\n permissions?.Applications?.['Send Emails'] &&\n dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.SEND_EMAIL })\n }\n >\n {application.candidate?.email}\n </Stack>\n <CopyToClipboard\n text={application.candidate?.email}\n onCopy={() => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: 'Email copied to clipboard!', state: 'success' }\n });\n }}\n >\n <Tooltip placement=\"top\" title=\"Copy email\">\n <CopyIcon sx={styles.smallGreyIcon} />\n </Tooltip>\n </CopyToClipboard>\n </Stack>\n <Stack sx={styles.applicationHeaderItems}>\n <PhoneIcon sx={styles.scoutNavyIcon} />\n {application.candidate?.phone1}\n </Stack>\n {showLinkedInURL && LinkedInSection}\n </Stack>\n <Stack sx={{ rowGap: 2, paddingTop: 0.5 }}>\n <Stack sx={styles.applicationHeaderItems}>\n <LocationOnIcon sx={styles.scoutNavyIcon} />\n {formatAddress(application.candidate?.address_details)}\n </Stack>\n {!!Number(application.job.options.gender_field) &&\n permissions?.Applications?.['Show Gender'] &&\n application?.candidate?.gender_full && (\n <Stack sx={styles.applicationHeaderItems}>\n <Man4Icon sx={styles.scoutNavyIcon} />\n {application.candidate.gender_full}\n </Stack>\n )}\n <Stack sx={styles.applicationHeaderItems}>\n <EventIcon sx={styles.scoutNavyIcon} />\n {moment\n .tz(\n application.created_at,\n application.job.time_zone || userTimeZone || browserTimezone\n )\n .format('ddd, D MMM YYYY, hh:mma z')}\n </Stack>\n </Stack>\n <Stack sx={styles.applicationHeaderActionsContainer}>\n {permissions?.Applications?.['Move Application'] &&\n permissions?.Applications?.['Clone and Move Application'] && (\n <Tooltip placement=\"top\" title=\"Move\" arrow>\n <DriveFileMoveIcon\n id=\"move-application-button\"\n sx={styles.clickableGreyIcon}\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.MOVE })}\n />\n </Tooltip>\n )}\n <MoreVertIcon\n sx={styles.clickableGreyIcon}\n onClick={(e) => {\n dispatch({\n type: 'SET_ACTIONS',\n payload: { anchorEl: e.target as HTMLElement }\n });\n }}\n />\n </Stack>\n </Stack>\n </>\n )}\n {(modalsOpen === ModalType.MOVE || modalsOpen === ModalType.CLONE) && (\n <MoveApplicationModal ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n <MoreOptionsPopover\n actionsState={ApplicationState}\n dispatch={dispatch}\n label=\"MoreOptionsPopover\"\n />\n {modalsOpen == ModalType.DELETE && (\n <DeleteApplication isDialogOpen={modalsOpen == ModalType.DELETE} dispatch={dispatch} />\n )}\n {modalState && (\n <GenericDialog\n url={''}\n title={modalState.modalTitle}\n description={modalState.modalDesc()}\n buttonText={modalState.buttonText}\n buttonCallback={() => {\n if (modalsOpen === ModalType.RESEND && !application?.job.recipients?.length) {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `No email attached to application recipient. Please add a user on the Edit Job page to resend the application`,\n state: 'warning'\n }\n });\n closeModal();\n } else {\n modalState.callback();\n }\n }}\n callbackLoading={modalState.callbackLoading}\n isDialogOpen={modalsOpen == ModalType.TRASH || modalsOpen == ModalType.RESEND}\n setDialogOpen={closeModal}\n alternateColor={modalState.alternateColor}\n primaryButtonId={\n modalsOpen === ModalType.TRASH ? 'confirm-trash-application-button' : undefined\n }\n />\n )}\n {modalsOpen === ModalType.SEARCH && (\n <SearchIndex\n isOpen={modalsOpen === ModalType.SEARCH}\n handleClose={closeModal}\n dispatch={dispatch}\n />\n )}\n </Stack>\n );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { CircularProgress, Stack, Popover } from '@mui/material';\nimport {\n Circle as CircleIcon,\n ArrowDropDown as ArrowDropDownIcon,\n ArrowDropUp as ArrowDropUpIcon\n} from '@mui/icons-material';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { IApplication, ApplicationAction } from './types';\nimport { IApplicationStatus } from '../Job/types';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport Api from './API';\nimport { styles } from './styles';\n\nexport default function ApplicationStatusPopover({\n dispatch\n}: {\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n const { data: applicationStatuses } = useQuery({\n queryKey: ['application statuses'],\n queryFn: async () => {\n if (application?.job) {\n const { res } = await Api.getApplicationStatuses(application.job.id);\n return res.job_application_statuses as IApplicationStatus[];\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting application statuses, ${error}`,\n state: 'error'\n }\n }),\n initialData: [],\n enabled: !!application\n });\n\n const { mutate: updateApplicationStatus, isLoading: updatingApplicationStatus } = useMutation({\n mutationFn: async (id: number) => {\n if (application?.job) {\n const { res } = await Api.updateApplicationStatus(application.job.id, application.id, id);\n return res;\n }\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Application status has been successfully updated`, state: 'success' }\n });\n queryClient.invalidateQueries(['application'], { exact: true });\n\n queryClient.setQueryData(['application'], {\n ...application,\n status: res.name,\n status_details: res\n });\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error updating application status, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const ArrowIcons = () =>\n anchorEl ? (\n <ArrowDropUpIcon sx={{ color: '#AAAAAA' }} />\n ) : (\n <ArrowDropDownIcon sx={{ color: '#AAAAAA' }} />\n );\n\n const enabled = permissions?.Applications?.['Change Status'];\n\n return (\n <Stack\n sx={{ ...styles.applicationStatusDropdownStyle, cursor: enabled ? 'pointer' : 'default' }}\n onClick={(e) =>\n enabled ? (anchorEl ? setAnchorEl(null) : setAnchorEl(e.currentTarget)) : null\n }\n >\n <Stack sx={{ flexDirection: 'row', columnGap: 1, alignItems: 'center' }}>\n <CircleIcon\n sx={{ fontSize: '0.5rem', color: application?.status_details?.colour || '#808080' }}\n />\n {application?.status}\n </Stack>\n {updatingApplicationStatus ? <CircularProgress size={15} /> : <ArrowIcons />}\n <Popover\n id={anchorEl ? 'status-selection' : undefined}\n sx={styles.applicationStatusPopoverStyle}\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={() => setAnchorEl(null)}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n >\n <Stack sx={{ padding: '8px 0px' }}>\n {applicationStatuses\n ?.filter((status) => status.name !== application?.status)\n ?.map((status) => (\n <Stack\n key={status.id}\n onClick={() => updateApplicationStatus(status.id)}\n sx={{ fontSize: '12px', padding: '4px 16px', '&:hover': { background: '#F5F5F5' } }}\n >\n {status.name}\n </Stack>\n ))}\n </Stack>\n </Popover>\n </Stack>\n );\n}\n","import React from 'react';\nimport { Stack } from '@mui/material';\nimport { styles } from './styles';\n\nexport default function Export({ onClick }: { onClick: () => void }) {\n return (\n <Stack sx={styles.exportButton} onClick={onClick}>\n Export\n </Stack>\n );\n}\n","import React from 'react';\n\nexport function ScoutOnboardLogo() {\n return (\n <svg\n width=\"100\"\n height=\"22\"\n viewBox=\"0 0 300 44\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.79181 23.2879C3.39981 23.2879 0.903809 20.5999 0.903809 17.1439C0.903809 13.6879 3.39981 10.9999 6.79181 10.9999C10.1838 10.9999 12.7438 13.6879 12.7438 17.1439C12.7438 20.5999 10.1838 23.2879 6.79181 23.2879ZM6.79181 43.7679C3.39981 43.7679 0.903809 41.0799 0.903809 37.6239C0.903809 34.1679 3.39981 31.4799 6.79181 31.4799C10.1838 31.4799 12.7438 34.1679 12.7438 37.6239C12.7438 41.0799 10.1838 43.7679 6.79181 43.7679Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M38.5768 43.7679C27.2488 43.7679 19.5048 35.6399 19.5048 22.0079C19.5048 8.31187 27.2488 0.567871 38.5768 0.567871C49.9048 0.567871 57.6488 8.37587 57.6488 22.0079C57.6488 35.6399 49.9048 43.7679 38.5768 43.7679ZM38.5768 35.1919C44.0808 35.1919 47.4728 30.0719 47.4728 22.0079C47.4728 13.8799 44.0808 9.14387 38.5768 9.14387C33.1368 9.14387 29.6808 13.8799 29.6808 22.0079C29.6808 30.0719 33.1368 35.1919 38.5768 35.1919Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M65.3623 42.9999V1.33587H75.6663L85.9063 21.3039C87.3783 24.1199 88.7223 27.4479 90.0023 30.7119H90.2583C89.7463 26.2319 88.9783 20.2799 88.9783 15.3519V1.33587H98.3863V42.9999H88.1463L77.8423 23.0319C76.4343 20.2159 75.0903 16.8879 73.8103 13.6239H73.5543C74.0663 18.2319 74.8343 23.9919 74.8343 28.9839V42.9999H65.3623Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M108.05 42.9999V1.33587H122.578C131.218 1.33587 138.066 3.63987 138.066 11.7039C138.066 15.3519 136.018 19.3839 132.626 20.6639V20.9199C136.85 22.0719 140.114 25.1439 140.114 30.7119C140.114 39.2239 132.818 42.9999 123.794 42.9999H108.05ZM118.034 17.9119H122.194C126.482 17.9119 128.338 16.0559 128.338 13.1759C128.338 10.1679 126.354 8.95187 122.258 8.95187H118.034V17.9119ZM118.034 35.3839H123.026C127.89 35.3839 130.386 33.5919 130.386 30.0719C130.386 26.5519 127.954 25.2079 123.026 25.2079H118.034V35.3839Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M164.077 43.7679C152.749 43.7679 145.005 35.6399 145.005 22.0079C145.005 8.31187 152.749 0.567871 164.077 0.567871C175.405 0.567871 183.149 8.37587 183.149 22.0079C183.149 35.6399 175.405 43.7679 164.077 43.7679ZM164.077 35.1919C169.581 35.1919 172.973 30.0719 172.973 22.0079C172.973 13.8799 169.581 9.14387 164.077 9.14387C158.637 9.14387 155.181 13.8799 155.181 22.0079C155.181 30.0719 158.637 35.1919 164.077 35.1919Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M200.349 22.1359L199.453 25.7199H207.965L207.069 22.1359C205.981 18.0399 204.893 13.1119 203.805 8.75987H203.549C202.525 13.1119 201.437 18.0399 200.349 22.1359ZM184.925 42.9999L197.917 1.33587H209.821L222.813 42.9999H212.317L209.885 33.3999H197.533L195.101 42.9999H184.925Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M227.112 42.9999V1.33587H242.408C251.24 1.33587 258.664 4.40787 258.664 14.4559C258.664 20.5359 255.784 24.4399 251.496 26.4879L260.776 42.9999H249.64L241.96 28.3439H237.096V42.9999H227.112ZM237.096 20.4719H241.64C246.376 20.4719 248.936 18.4239 248.936 14.4559C248.936 10.4879 246.376 9.20787 241.64 9.20787H237.096V20.4719Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M266.675 42.9999V1.33587H278.643C291.379 1.33587 299.763 7.54387 299.763 22.0079C299.763 36.4079 291.379 42.9999 279.219 42.9999H266.675ZM276.659 34.9999H278.067C284.787 34.9999 289.587 31.8639 289.587 22.0079C289.587 12.0879 284.787 9.33587 278.067 9.33587H276.659V34.9999Z\"\n fill=\"#084D6D\"\n />\n </svg>\n );\n}\n","import React, { useState, Dispatch, useRef } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\n\nexport default function AlayaCare({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [state, setState] = useState<string | null>(null);\n const [title, setTitle] = useState<string | null>(null);\n const [gender, setGender] = useState<string | null>(null);\n\n const fieldRefs = {\n firstName: useRef<HTMLInputElement>(null),\n lastName: useRef<HTMLInputElement>(null),\n email: useRef<HTMLInputElement>(null),\n mobile: useRef<HTMLInputElement>(null),\n postcode: useRef<HTMLInputElement>(null)\n };\n\n const { data: alayaCareData, isLoading: loadingAlayaCareData } = useQuery({\n queryKey: ['AlayaCare data'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getAlayaCareData(application.id);\n return res;\n }\n },\n onSuccess: (res) => {\n if (!res) return;\n const savedState = res.states.find(\n (state) => state === application?.candidate?.address_details.state?.abbreviation\n );\n const savedTitle = res.titles.find((title) => title === application?.candidate?.title);\n const savedGender = res.genders.find(\n (gender) => gender === application?.candidate?.gender_full\n );\n savedState && setState(savedState);\n savedTitle && setTitle(savedTitle);\n savedGender && setGender(savedGender);\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting AlayaCare data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const validateInputs = () => {\n if (!candidate) return false;\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!candidate.firstname.trim()) inputErrors.firstName = 'First name can not be empty';\n if (!candidate.lastname.trim()) inputErrors.lastName = 'Last name can not be empty';\n if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n if (!candidate.phone1.trim()) inputErrors.mobile = 'Please enter a mobile number';\n if (!candidate.address_details?.postcode?.trim())\n inputErrors.postcode = 'Please enter a postcode';\n setErrors(inputErrors);\n if (inputErrors.firstName) {\n scrollToElement(fieldRefs.firstName);\n } else if (inputErrors.lastName) {\n scrollToElement(fieldRefs.lastName);\n } else if (inputErrors.email) {\n scrollToElement(fieldRefs.email);\n } else if (inputErrors.mobile) {\n scrollToElement(fieldRefs.mobile);\n } else if (inputErrors.postcode) {\n scrollToElement(fieldRefs.postcode);\n }\n return !Object.keys(inputErrors).length;\n };\n\n const { mutate: alayaCareExport, isLoading: exportingAlayaCare } = useMutation({\n mutationFn: async () => {\n if (application && candidate && candidate.address_details.postcode) {\n const { res } = await Api.alayaCareExport({\n application_id: application.id,\n firstname: candidate.firstname,\n lastname: candidate.lastname,\n email: candidate.email,\n gender: gender || undefined,\n title: title || undefined,\n mobile_phone: candidate.phone1,\n street: candidate.address_details.street1 || undefined,\n street_cont: candidate.address_details.street2 || undefined,\n suburb_town: candidate.address_details.suburb || undefined,\n state: state || undefined,\n postcode: candidate.address_details.postcode\n });\n return res;\n }\n },\n onSuccess: (res) => {\n if (!res) return;\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: error.error, state: 'error' } });\n }\n });\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n if (!candidate) return null;\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.ALAYACARE}\n label=\"AlayaCare export modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Export to AlayaCare</Stack>\n <Stack sx={{ overflow: 'auto', rowGap: 3 }}>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"First name\"\n value={candidate.firstname || ''}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, firstname: e.target.value })}\n error={errors.firstName}\n innerRef={fieldRefs.firstName}\n />\n <FormTextField\n label=\"Last name\"\n value={candidate.lastname || ''}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, lastname: e.target.value })}\n error={errors.lastName}\n innerRef={fieldRefs.lastName}\n />\n </Stack>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"Email\"\n value={candidate.email}\n required\n onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n fullWidth\n error={errors.email}\n innerRef={fieldRefs.email}\n />\n <FormTextField\n label={'Mobile phone'}\n value={candidate.phone1}\n required\n onChange={(e) => setCandidate({ ...candidate, phone1: e.target.value })}\n fullWidth\n error={errors.mobile}\n innerRef={fieldRefs.mobile}\n />\n </Stack>\n <Stack sx={styles.modalDoubleColumn}>\n <Autocomplete\n disablePortal\n options={alayaCareData?.titles || []}\n value={title}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3 }}\n loading={loadingAlayaCareData}\n loadingText=\"Loading titles...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Title\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n />\n )}\n onChange={(event, value) => setTitle(value)}\n />\n <Autocomplete\n disablePortal\n options={alayaCareData?.genders || []}\n value={gender}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3 }}\n loading={loadingAlayaCareData}\n loadingText=\"Loading gender options...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Gender\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n />\n )}\n onChange={(event, value) => setGender(value)}\n />\n </Stack>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"Street address\"\n value={candidate?.address_details?.street1 || ''}\n fullWidth\n onChange={(e) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, street1: e.target.value }\n })\n }\n />\n <FormTextField\n label=\"Street address cont'd\"\n value={candidate?.address_details?.street2 || ''}\n fullWidth\n onChange={(e) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, street2: e.target.value }\n })\n }\n />\n </Stack>\n <Stack sx={{ ...styles.modalDoubleColumn, marginRight: '2px' }}>\n <FormTextField\n label=\"City, town or suburb\"\n value={candidate?.address_details?.suburb || ''}\n fullWidth\n onChange={(e) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, suburb: e.target.value }\n })\n }\n />\n <Autocomplete\n disablePortal\n options={alayaCareData?.states || []}\n value={state}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: '20px' }}\n loading={loadingAlayaCareData}\n loadingText=\"Loading states...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"State, region or province\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={{\n ...styles.autoCompleteTextfield,\n '& .MuiInputBase-root': { margin: 'unset', marginTop: 0.5 }\n }}\n />\n )}\n onChange={(event, value) => setState(value)}\n />\n </Stack>\n <FormTextField\n label=\"Postcode\"\n value={candidate?.address_details?.postcode || ''}\n styles={{ width: '48%' }}\n onChange={(e) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, postcode: e.target.value }\n })\n }\n required\n error={errors.postcode}\n innerRef={fieldRefs.postcode}\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Export\"\n primaryButtonCallback={() => validateInputs() && alayaCareExport()}\n isLoading={exportingAlayaCare}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Button, Dialog, Stack, Tooltip } from '@mui/material';\nimport { CheckCircle as CheckCircleIcon, FileCopy as FileCopyIcon } from '@mui/icons-material';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ApplicationAction, IApplication } from '../../types';\nimport { styles } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\n\nexport type AlreadyExportedModalProps = {\n revolve: boolean;\n referoo: boolean;\n hro: boolean;\n sparkhire: boolean;\n cognology: boolean;\n foundu: boolean;\n};\n\nexport default function AlreadyExportedModal({\n alreadyExportedModalOpen,\n onClose,\n dispatch,\n buttonName,\n callback\n}: {\n alreadyExportedModalOpen: AlreadyExportedModalProps;\n onClose: () => void;\n dispatch: Dispatch<ApplicationAction>;\n buttonName?: string;\n callback?: () => void;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const integrationTitle = () => {\n if (alreadyExportedModalOpen.referoo) {\n return 'Referoo';\n } else if (alreadyExportedModalOpen.sparkhire) {\n return 'SparkHire';\n } else if (alreadyExportedModalOpen.revolve) {\n return 'Revolve Onboard';\n } else if (alreadyExportedModalOpen.hro) {\n return 'HROnboard';\n } else if (alreadyExportedModalOpen.foundu) {\n return 'foundU';\n } else {\n return 'Cognology';\n }\n };\n\n const integrationName = () => {\n if (alreadyExportedModalOpen.referoo) {\n return 'Referoo';\n } else if (alreadyExportedModalOpen.sparkhire) {\n return 'SparkHire';\n } else if (alreadyExportedModalOpen.cognology) {\n return 'Cognology';\n } else if (alreadyExportedModalOpen.foundu) {\n return 'foundU';\n }\n };\n\n if (!application) return null;\n return (\n <Dialog\n open={\n alreadyExportedModalOpen.revolve ||\n alreadyExportedModalOpen.referoo ||\n alreadyExportedModalOpen.hro ||\n alreadyExportedModalOpen.sparkhire ||\n alreadyExportedModalOpen.foundu ||\n alreadyExportedModalOpen.cognology\n }\n onClose={onClose}\n >\n <Stack sx={styles.alreadyExportedModal}>\n <CheckCircleIcon sx={{ color: '#5BC4BF', fontSize: '4rem' }} />\n <Stack sx={styles.modalTitle}>{`Export to ${integrationTitle()}`}</Stack>\n <Stack sx={{ alignItems: 'center', color: '#333333', paddingBottom: 2 }}>\n {alreadyExportedModalOpen.referoo ||\n alreadyExportedModalOpen.foundu ||\n alreadyExportedModalOpen.sparkhire ||\n alreadyExportedModalOpen.cognology ? (\n <>\n <Stack>This application has already been</Stack>\n <Stack>{`exported to ${integrationName()}`}</Stack>\n </>\n ) : (\n <Stack>{`This application has already been exported to ${alreadyExportedModalOpen.hro ? 'HROnboard' : 'Revolve.'}`}</Stack>\n )}\n {alreadyExportedModalOpen.revolve && (\n <Stack sx={{ flexDirection: 'row', columnGap: 1, alignItems: 'center' }}>\n <Stack>Revolve record id is</Stack>\n <Stack fontWeight=\"bold\">{application.revolve_record_id}</Stack>\n <CopyToClipboard\n id=\"copy-revolve-id-button\"\n text={application.revolve_record_id}\n onCopy={() =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'Revolve record id has been copied to clipboard',\n state: 'success'\n }\n })\n }\n >\n <Tooltip title={'Copy ID'} placement={'bottom'}>\n <FileCopyIcon fontSize=\"small\" sx={{ color: '#666666', cursor: 'pointer' }} />\n </Tooltip>\n </CopyToClipboard>\n </Stack>\n )}\n </Stack>\n <Button\n sx={sharedClasses.genericButton}\n onClick={() => {\n callback && callback();\n onClose();\n }}\n >\n {buttonName || 'Exit'}\n </Button>\n </Stack>\n </Dialog>\n );\n}\n","import React, { useState, Dispatch } from 'react';\nimport {\n Autocomplete,\n Button,\n Checkbox,\n CircularProgress,\n FormControlLabel,\n Stack,\n TextField\n} from '@mui/material';\nimport { NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport StyledModal from '../../../../Components/GenericModal/StyledModal';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../../API';\nimport {\n ApplicationAction,\n ApplicationState,\n IApplication,\n ICognologyRecord,\n IIntegrationsResponse\n} from '../../../types';\nimport { ModalType } from '../../../config';\nimport { sharedClasses } from '../../../../Components/CustomUIElements/sharedClasses';\nimport { styles } from '../../styles';\nimport { ICountries, IStates } from '../../../../Components/sharedTypes';\nimport { classes } from '../../../../Job/Applications/styles';\nimport CognologySummary from './CognologySummary';\nimport { useGetCognologyData } from '../../../helper';\nimport CognologyApprovalDetails from './CognologyApprovalDetails';\nimport CognologyStep1 from './CognologyStep1';\n\nexport const autocompleteStyle = {\n ...sharedClasses.formAutocomplete,\n width: '48%',\n paddingTop: 3,\n '.MuiInputBase-root': { margin: '3px 0px' }\n};\n\nexport default function Cognology({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n const [exportPreference, setExportPreference] = useState<string>('quick');\n const [startDate, setStartDate] = useState<Date | null>(null);\n const [country, setCountry] = useState<ICountries | null>(null);\n const [state, setState] = useState<IStates | null>(null);\n const [step, setStep] = useState<number>(1);\n const [record, setRecord] = useState<ICognologyRecord | null>(null);\n const [approvalTemplate, setApprovalTemplate] = useState<{ id: number; name: string } | null>(\n null\n );\n const [reapproval, setReapproval] = useState<boolean>(false);\n const [categories, setCategories] = useState<Record<string, [string, number] | null> | null>(\n null\n );\n const [attachments, setAttachments] = useState<Record<\n number,\n { id: number; name: string } | null\n > | null>(null);\n\n const { cognologyData, loadingCognologyData } = useGetCognologyData({\n applicationId: application?.id,\n dispatch,\n setRecord,\n setCategories,\n setAttachments\n });\n\n const categoriesPayload = () => {\n if (!categories) return;\n const payload: Record<string, { id: number | null; new_value?: string; name?: string } | null> =\n {};\n Object.keys(categories).forEach((key) => {\n if (categories[key]) {\n if (categories[key][1]) {\n return (payload[key] = { id: categories[key][1], name: categories[key][0] });\n } else {\n return (payload[key] = { id: null, new_value: categories[key][0] });\n }\n } else {\n return (payload[key] = null);\n }\n });\n return payload;\n };\n\n const { mutate: cognologyExport, isLoading: exportingCognology } = useMutation({\n mutationFn: async () => {\n if (application && country && record && attachments) {\n const { res } = await Api.cognologyExport({\n application_id: application.id,\n candidate_title: record.candidate_title || '',\n candidate_first_name: record.candidate_first_name,\n candidate_last_name: record.candidate_last_name,\n candidate_email: record.candidate_email,\n candidate_phone1: record.candidate_phone1,\n candidate_phone2: record.candidate_phone2,\n candidate_addr_street1: record.candidate_addr_street1,\n candidate_addr_street2: record.candidate_addr_street2,\n candidate_addr_suburb: record.candidate_addr_suburb,\n candidate_addr_state: state?.abbreviation || '',\n candidate_addr_postcode: record.candidate_addr_postcode,\n candidate_addr_country: country.iso,\n requisition_form_id: approvalTemplate ? approvalTemplate.id : undefined,\n candidate_gender: record.candidate_gender || '',\n start_date: startDate?.toISOString() || '',\n candidate_employee_id: record.candidate_employee_id || '',\n manager_id: record.manager_id || '',\n recruitment_record_url: record.recruitment_record_url,\n reapproval_required_for_modifications: reapproval,\n categories: exportPreference === 'quick' ? null : categoriesPayload(),\n assets: attachments\n });\n return res;\n }\n },\n onSuccess: (res) => {\n if (!res) return;\n if (!setApprovalTemplate) {\n queryClient.invalidateQueries(['integrations'], { exact: true });\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n handleClose();\n } else {\n if (!res.approval_url) return;\n window.location.href = res.approval_url;\n }\n },\n onError: (error: { error: string }) => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: error.error, state: 'error' } });\n }\n });\n\n const handleSubmit = () => {\n if (step === 1) {\n setStep(2);\n } else {\n cognologyExport();\n }\n };\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n const buttonName = () => {\n if (step === 1) {\n return 'Next';\n } else {\n return integrationsData?.cognology_config.approval_bypassed ? 'Export' : 'Submit';\n }\n };\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.COGNOLOGY || modalsOpen === ModalType.EDIT_COGNOLOGY}\n label=\"Cognology export modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Export to Cognology</Stack>\n <Stack sx={{ overflow: 'auto', rowGap: 2 }}>\n {modalsOpen === ModalType.EDIT_COGNOLOGY && cognologyData?.cognology_requisition && (\n <CognologyApprovalDetails\n requisition={cognologyData.cognology_requisition}\n reapprovalRequired={cognologyData.record.reapproval_required_for_modifications}\n />\n )}\n {step === 1 ? (\n <CognologyStep1\n {...{\n exportPreference,\n setExportPreference,\n record,\n setRecord,\n country,\n setCountry,\n state,\n setState,\n categories,\n setCategories,\n attachments,\n setAttachments,\n startDate,\n setStartDate,\n dispatch\n }}\n />\n ) : (\n <>\n {(integrationsData?.cognology_config.approval_bypassed ||\n modalsOpen === ModalType.EDIT_COGNOLOGY) &&\n record ? (\n <CognologySummary {...{ record, country, state, startDate }} />\n ) : (\n <>\n <Stack sx={styles.cognologySectionTitle}>Approval Details</Stack>\n <Autocomplete\n disablePortal\n autoHighlight\n includeInputInList\n value={approvalTemplate}\n options={cognologyData?.requisition_forms || []}\n getOptionLabel={(option) => option.name}\n loading={loadingCognologyData}\n loadingText=\"Loading approval templates...\"\n onChange={(_event, newValue) => setApprovalTemplate(newValue)}\n sx={autocompleteStyle}\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Approval template\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n <FormControlLabel\n control={\n <Checkbox\n sx={sharedClasses.formCheckbox}\n checked={reapproval}\n onClick={() => setReapproval(!reapproval)}\n disableRipple\n />\n }\n label=\"Reapproval required for modifications\"\n sx={sharedClasses.checkboxLabel}\n />\n </>\n )}\n </>\n )}\n </Stack>\n <Stack\n sx={{ flexDirection: 'row', justifyContent: 'flex-end', columnGap: 1, paddingTop: 1 }}\n >\n <Button\n sx={classes.modalCancelButton}\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: null })}\n >\n Cancel\n </Button>\n {step === 2 && (\n <Button\n onClick={() => setStep(1)}\n sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n >\n <NavigateBeforeIcon />\n </Button>\n )}\n <Button\n sx={{ ...sharedClasses.genericButton, minWidth: '95px', minHeight: '41px' }}\n onClick={handleSubmit}\n >\n {exportingCognology ? <CircularProgress size={20} color=\"inherit\" /> : buttonName()}\n </Button>\n </Stack>\n </Stack>\n </StyledModal>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Button, Dialog, Stack } from '@mui/material';\nimport { Error as ErrorIcon } from '@mui/icons-material';\nimport { styles } from '../../styles';\nimport { sharedClasses } from '../../../../Components/CustomUIElements/sharedClasses';\nimport { ApplicationAction, IApplication } from '../../../types';\nimport { ModalType } from '../../../config';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../../API';\nimport { useGetCognologyData } from '../../../helper';\n\nexport default function CognologyAfterApprovalModal({\n open,\n onClose,\n dispatch\n}: {\n open: boolean;\n onClose: () => void;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const { cognologyData } = useGetCognologyData({\n applicationId: application?.id,\n dispatch\n });\n\n const { mutate: exportToCognology } = useMutation({\n mutationFn: async () => {\n if (application) {\n const { res } = await Api.exportToCognology(application.id);\n return res;\n }\n },\n onSuccess: (res) => {\n if (!res) return;\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n },\n onError: (error: { error: string }) => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: error.error, state: 'error' } });\n }\n });\n\n return (\n <Dialog open={open} onClose={onClose}>\n <Stack sx={styles.alreadyExportedModal}>\n <ErrorIcon sx={{ color: '#5BC4BF', fontSize: '4rem' }} />\n <Stack sx={styles.modalTitle}>Export to Cognology</Stack>\n <Stack sx={{ alignItems: 'center', color: '#333333', paddingBottom: 3 }}>\n This application has been approved\n </Stack>\n <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n <Button\n sx={sharedClasses.genericRedButton}\n onClick={() =>\n cognologyData?.record.reapproval_required_for_modifications\n ? dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.COGNOLOGY })\n : dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.EDIT_COGNOLOGY })\n }\n >\n {cognologyData?.record.reapproval_required_for_modifications\n ? 'Reset approval'\n : 'Edit candidate details'}\n </Button>\n <Button sx={sharedClasses.genericButton} onClick={() => exportToCognology()}>\n Continue to export\n </Button>\n </Stack>\n </Stack>\n </Dialog>\n );\n}\n","import React from 'react';\nimport { Link, Stack } from '@mui/material';\nimport { Cancel as CancelIcon, CheckCircle as CheckCircleIcon } from '@mui/icons-material';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\nimport { styles } from '../../styles';\n\nexport default function CognologyApprovalDetails({\n requisition,\n reapprovalRequired\n}: {\n requisition: { url: string; name: string };\n reapprovalRequired: boolean;\n}) {\n return (\n <>\n <Stack sx={styles.cognologySectionTitle}>Approval Details</Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Approval form</Stack>\n <Stack>\n <Link href={requisition.url} target=\"_blank\" style={{ textDecoration: 'underline' }}>\n {requisition.name}\n </Link>\n </Stack>\n </Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>\n Reapproval required for modifications\n </Stack>\n {reapprovalRequired ? (\n <CheckCircleIcon sx={{ color: theme.palette.action.main }} />\n ) : (\n <CancelIcon sx={{ color: theme.palette.error.main }} />\n )}\n </Stack>\n </>\n );\n}\n","import React, { useState, Dispatch, SetStateAction, useEffect } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport { styles } from '../../styles';\nimport { sharedClasses } from '../../../../Components/CustomUIElements/sharedClasses';\nimport {\n ApplicationAction,\n IApplication,\n IIntegrationsResponse,\n ICognologyRecord\n} from '../../../types';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../../API';\nimport { useGetCognologyData } from '../../../helper';\nimport FormRadioButtonGroup from '../../../../Components/CustomUIElements/FormRadioButtonGroup';\nimport { FormTextField } from '../../../../Components/CustomUIElements/FormTextField';\nimport { SingleDatePicker } from '../../../../Components/CustomUIElements/SingleDatePicker';\nimport { cognologyExportPreference } from '../../../config';\nimport { autocompleteStyle } from './Cognology';\nimport DocTypeIcon from '../../../../Components/Utilities/DocTypeIcon';\nimport { ICountries, IStates } from '../../../../Components/sharedTypes';\nimport dayjs from 'dayjs';\n\nexport default function CognologyStep1({\n exportPreference,\n setExportPreference,\n record,\n setRecord,\n country,\n setCountry,\n state,\n setState,\n categories,\n setCategories,\n attachments,\n setAttachments,\n startDate,\n setStartDate,\n dispatch\n}: {\n exportPreference: string;\n setExportPreference: Dispatch<SetStateAction<string>>;\n record: ICognologyRecord | null;\n setRecord: Dispatch<SetStateAction<ICognologyRecord | null>>;\n country: ICountries | null;\n setCountry: Dispatch<SetStateAction<ICountries | null>>;\n state: IStates | null;\n setState: Dispatch<SetStateAction<IStates | null>>;\n categories: Record<string, [string, number] | null> | null;\n setCategories: Dispatch<SetStateAction<Record<string, [string, number] | null> | null>>;\n attachments: Record<number, { id: number; name: string } | null> | null;\n setAttachments: Dispatch<\n SetStateAction<Record<number, { id: number; name: string } | null> | null>\n >;\n startDate: Date | null;\n setStartDate: Dispatch<SetStateAction<Date | null>>;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n const [dateError, setDateError] = useState<string>('');\n\n const { cognologyData, loadingCognologyData } = useGetCognologyData({\n applicationId: application?.id,\n dispatch\n });\n\n const { data: countriesStates } = useQuery({\n queryKey: ['countries states'],\n queryFn: async () => {\n const { res } = await Api.getCountriesStates();\n return res.countries;\n },\n onSuccess: (res) => {\n const savedCountry = res.find((r) => r.iso === record?.candidate_addr_country);\n const savedState = savedCountry?.states?.find(\n (s) => s.abbreviation === record?.candidate_addr_state\n );\n savedCountry && setCountry(savedCountry);\n savedState && setState(savedState);\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting countries and states data, ${error}`,\n state: 'error'\n }\n });\n },\n enabled: !!record\n });\n\n useEffect(() => {\n record?.categories && setExportPreference('full');\n }, [record, setExportPreference]);\n\n return (\n <>\n <FormRadioButtonGroup\n options={cognologyExportPreference}\n onChange={(value) => setExportPreference(value.toString())}\n directionRow\n color={'#939393'}\n defaultValue={exportPreference}\n groupLabel=\"Export preference\"\n required\n />\n <Stack sx={styles.cognologySectionTitle}>Candidate Details</Stack>\n {!integrationsData?.cognology_config.id_blank && (\n <FormTextField\n label=\"Employee ID\"\n value={record?.candidate_employee_id || ''}\n styles={{ width: '48%' }}\n required\n onChange={(e) =>\n record && setRecord({ ...record, candidate_employee_id: e.target.value })\n }\n helperText=\"Please leave it blank to have Cognology generate an employee ID automatically\"\n />\n )}\n <Autocomplete\n disablePortal\n autoHighlight\n includeInputInList\n value={record?.candidate_title || null}\n options={['Mr', 'Mrs', 'Ms', 'Miss', 'Dr', 'Other']}\n onChange={(_event, newValue) =>\n record && setRecord({ ...record, candidate_title: newValue })\n }\n sx={autocompleteStyle}\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Title\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"First name\"\n value={record?.candidate_first_name || ''}\n required\n fullWidth\n onChange={(e) => record && setRecord({ ...record, candidate_first_name: e.target.value })}\n />\n <FormTextField\n label=\"Last name\"\n value={record?.candidate_last_name || ''}\n required\n fullWidth\n onChange={(e) => record && setRecord({ ...record, candidate_last_name: e.target.value })}\n />\n </Stack>\n <FormTextField\n label=\"Email\"\n value={record?.candidate_email || ''}\n styles={{ width: '48%' }}\n required\n onChange={(e) => record && setRecord({ ...record, candidate_email: e.target.value })}\n />\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label={'Phone (must include country code)'}\n value={record?.candidate_phone1 || ''}\n onChange={(e) => record && setRecord({ ...record, candidate_phone1: e.target.value })}\n fullWidth\n />\n <FormTextField\n label={'Mobile (must include country code)'}\n value={record?.candidate_phone2 || ''}\n onChange={(e) => record && setRecord({ ...record, candidate_phone2: e.target.value })}\n fullWidth\n />\n </Stack>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"Street address\"\n value={record?.candidate_addr_street1 || ''}\n fullWidth\n onChange={(e) =>\n record && setRecord({ ...record, candidate_addr_street1: e.target.value })\n }\n />\n <FormTextField\n label=\"Street address cont'd\"\n value={record?.candidate_addr_street2 || ''}\n fullWidth\n onChange={(e) =>\n record && setRecord({ ...record, candidate_addr_street2: e.target.value })\n }\n />\n </Stack>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"City, town or suburb\"\n value={record?.candidate_addr_suburb || ''}\n fullWidth\n onChange={(e) =>\n record && setRecord({ ...record, candidate_addr_suburb: e.target.value })\n }\n />\n <FormTextField\n label=\"Postcode or zipcode\"\n value={record?.candidate_addr_postcode || ''}\n fullWidth\n onChange={(e) =>\n record && setRecord({ ...record, candidate_addr_postcode: e.target.value })\n }\n />\n </Stack>\n <Stack sx={styles.modalDoubleColumn}>\n <Autocomplete\n filterSelectedOptions\n disablePortal\n autoHighlight\n includeInputInList\n value={country}\n options={countriesStates || []}\n getOptionLabel={(option) => option.name}\n onChange={(_event, newValue) => {\n setCountry(newValue);\n setState(null);\n }}\n sx={autocompleteStyle}\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Country\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n <Autocomplete\n filterSelectedOptions\n disablePortal\n autoHighlight\n includeInputInList\n value={state}\n options={country?.states || []}\n getOptionLabel={(option) => option.name}\n onChange={(_event, newValue) => setState(newValue)}\n disabled={!country}\n sx={autocompleteStyle}\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"State, region or province\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n </Stack>\n <Autocomplete\n disablePortal\n autoHighlight\n includeInputInList\n value={record?.candidate_gender || null}\n options={cognologyData?.genders || []}\n loading={loadingCognologyData}\n loadingText=\"Loading genders...\"\n onChange={(_event, newValue) =>\n record && setRecord({ ...record, candidate_gender: newValue })\n }\n sx={autocompleteStyle}\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Gender\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n <FormTextField\n label=\"Manager employee ID\"\n value={record?.manager_id || ''}\n styles={{ width: '48%' }}\n onChange={(e) => record && setRecord({ ...record, manager_id: e.target.value })}\n />\n <FormTextField\n label=\"Application URL\"\n value={record?.recruitment_record_url || ''}\n styles={{ width: '48%' }}\n onChange={(e) => record && setRecord({ ...record, recruitment_record_url: e.target.value })}\n />\n <Stack>\n <SingleDatePicker\n value={startDate}\n label=\"Start date\"\n inputStyles={{ ...sharedClasses.datePicker, width: '48%' }}\n onChange={(value) => {\n if (!value?.isValid()) {\n setDateError('Please input a valid date');\n } else {\n setDateError('');\n setStartDate(dayjs(value.toDate()).toDate());\n }\n }}\n error={dateError}\n />\n </Stack>\n {exportPreference === 'full' && (\n <Stack sx={styles.cognologyCategoriesContainer}>\n {cognologyData?.categories?.map((category) => (\n <Autocomplete\n key={category.id}\n disablePortal\n autoHighlight\n includeInputInList\n value={categories?.[category.id]}\n options={category.options}\n getOptionLabel={(option) => option[0]}\n filterOptions={(options, state) => {\n const { inputValue } = state;\n const filtered = options.filter((option) =>\n option[0].toLowerCase().includes(inputValue.toLowerCase())\n );\n inputValue && filtered.push([`Create ${inputValue}`, 0]);\n return filtered;\n }}\n onChange={(_event, newValue) => {\n if (newValue) {\n const newCategories = { ...categories };\n if (newValue[1] === 0) {\n newValue = [newValue[0].replace('Create ', ''), newValue[1]];\n }\n newCategories[category.id] = newValue;\n setCategories(newCategories);\n }\n }}\n sx={autocompleteStyle}\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={category.name}\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n ))}\n </Stack>\n )}\n {!!cognologyData?.application_assets?.length && (\n <>\n <Stack sx={styles.cognologySectionTitle}>Attachments</Stack>\n {cognologyData.application_assets.map((asset, index) => (\n <Stack key={index} sx={styles.modalDoubleColumn}>\n <Stack sx={styles.cognologyAttachmentContainer}>\n <Stack sx={styles.fileIcon}>{DocTypeIcon(asset.file_name.split('.').pop())}</Stack>\n <Stack>{asset.file_name}</Stack>\n </Stack>\n <Autocomplete\n disablePortal\n autoHighlight\n includeInputInList\n value={attachments?.[asset.id] || null}\n options={cognologyData?.document_tags}\n getOptionLabel={(option) => option?.name || ''}\n onChange={(_event, newValue) =>\n setAttachments({ ...attachments, [asset.id]: newValue })\n }\n sx={autocompleteStyle}\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Attachment tag\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n </Stack>\n ))}\n </>\n )}\n </>\n );\n}\n","import React from 'react';\nimport { Stack } from '@mui/material';\nimport { styles } from '../../styles';\nimport { ICognologyRecord, IIntegrationsResponse, ICognologyData } from '../../../types';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\nimport dayjs from 'dayjs';\nimport { ICountries, IStates } from '../../../../Components/sharedTypes';\nimport { useQueryClient } from '@tanstack/react-query';\nimport CognologyApprovalDetails from './CognologyApprovalDetails';\nimport DocTypeIcon from '../../../../Components/Utilities/DocTypeIcon';\n\nexport default function CognologySummary({\n record,\n requisition,\n reapprovalRequired,\n country,\n state,\n startDate\n}: {\n record: ICognologyRecord;\n requisition?: { url: string; name: string } | null;\n reapprovalRequired?: boolean;\n country?: ICountries | null;\n state?: IStates | null;\n startDate?: Date | null;\n}) {\n const queryClient = useQueryClient();\n const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n const cognologyData = queryClient.getQueryData<ICognologyData>(['cognology data']);\n return (\n <>\n {requisition && reapprovalRequired && (\n <CognologyApprovalDetails {...{ requisition, reapprovalRequired }} />\n )}\n <Stack sx={styles.cognologySectionTitle}>Candidate Details</Stack>\n {!integrationsData?.cognology_config.id_blank && (\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Employee ID</Stack>\n <Stack>{record.candidate_employee_id || '-'}</Stack>\n </Stack>\n )}\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Title</Stack>\n <Stack>{record.candidate_title || '-'}</Stack>\n </Stack>\n <Stack sx={{ ...styles.modalDoubleColumn, div: { width: '100%' } }}>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>First name</Stack>\n <Stack>{record.candidate_first_name || '-'}</Stack>\n </Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Last name</Stack>\n <Stack>{record.candidate_last_name || '-'}</Stack>\n </Stack>\n </Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Email</Stack>\n <Stack>{record.candidate_email || '-'}</Stack>\n </Stack>\n <Stack sx={{ ...styles.modalDoubleColumn, div: { width: '100%' } }}>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>\n {'Phone (must include country code)'}\n </Stack>\n <Stack>{record.candidate_phone1 || '-'}</Stack>\n </Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>\n {'Mobile (must include country code)'}\n </Stack>\n <Stack>{record.candidate_phone2 || '-'}</Stack>\n </Stack>\n </Stack>\n <Stack sx={{ ...styles.modalDoubleColumn, div: { width: '100%' } }}>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Street address</Stack>\n <Stack>{record.candidate_addr_street1 || '-'}</Stack>\n </Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>{`Street address cont'd`}</Stack>\n <Stack>{record.candidate_addr_street2 || '-'}</Stack>\n </Stack>\n </Stack>\n <Stack sx={{ ...styles.modalDoubleColumn, div: { width: '100%' } }}>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>City, town or suburb</Stack>\n <Stack>{record.candidate_addr_suburb || '-'}</Stack>\n </Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Postcode or zipcode</Stack>\n <Stack>{record.candidate_addr_postcode || '-'}</Stack>\n </Stack>\n </Stack>\n <Stack sx={{ ...styles.modalDoubleColumn, div: { width: '100%' } }}>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Country</Stack>\n <Stack>{country?.printable_name || record.candidate_addr_country || '-'}</Stack>\n </Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>State, region or province</Stack>\n <Stack>{state?.name || record.candidate_addr_state || '-'}</Stack>\n </Stack>\n </Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Gender</Stack>\n <Stack>{record.candidate_gender || '-'}</Stack>\n </Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Manager employee ID</Stack>\n <Stack>{record.manager_id || '-'}</Stack>\n </Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Application URL</Stack>\n <Stack>{record.recruitment_record_url || '-'}</Stack>\n </Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Start date</Stack>\n <Stack>\n {startDate || record.start_date ? dayjs(startDate).format('dddd, D MMMM YYYY') : '-'}\n </Stack>\n </Stack>\n <Stack sx={styles.cognologyCategoriesContainer}>\n {cognologyData?.categories?.map((category) => (\n <Stack key={category.id} sx={{ width: '48%' }}>\n <Stack sx={{ color: theme.palette.common.grey }}>{category.name}</Stack>\n <Stack>\n {record.categories?.[category.id]?.name ||\n record.categories?.[category.id]?.new_value ||\n '-'}\n </Stack>\n </Stack>\n ))}\n </Stack>\n {!!cognologyData?.application_assets?.length && (\n <>\n <Stack sx={styles.cognologySectionTitle}>Attachments</Stack>\n {cognologyData.application_assets.map((asset, index) => (\n <Stack key={index} sx={styles.modalDoubleColumn}>\n <Stack sx={styles.cognologyAttachmentContainer}>\n <Stack sx={styles.fileIcon}>{DocTypeIcon(asset.file_name.split('.').pop())}</Stack>\n <Stack>{asset.file_name}</Stack>\n </Stack>\n <Stack>\n <Stack sx={{ color: theme.palette.common.grey }}>Attachment tag</Stack>\n <Stack>{record.assets?.[asset.id]?.name || '-'}</Stack>\n </Stack>\n </Stack>\n ))}\n </>\n )}\n </>\n );\n}\n","import React from 'react';\nimport { Button, Dialog, Stack } from '@mui/material';\nimport { Schedule as ScheduleIcon } from '@mui/icons-material';\nimport { styles } from '../../styles';\nimport { sharedClasses } from '../../../../Components/CustomUIElements/sharedClasses';\nimport CognologySummary from './CognologySummary';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ICognologyData } from '../../../types';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\n\nexport default function CognologyAfterApprovalModal({\n open,\n onClose\n}: {\n open: boolean;\n onClose: () => void;\n}) {\n const queryClient = useQueryClient();\n const cognologyData = queryClient.getQueryData<ICognologyData>(['cognology data']);\n\n if (!cognologyData) return null;\n\n return (\n <Dialog open={open} onClose={onClose} maxWidth=\"md\">\n <Stack sx={{ ...styles.alreadyExportedModal, width: 'unset', overflow: 'auto' }}>\n <ScheduleIcon sx={{ color: theme.palette.secondary.yellow, fontSize: '4rem' }} />\n <Stack sx={styles.modalTitle}>Export to Cognology</Stack>\n <Stack sx={{ alignItems: 'center', color: '#333333' }}>\n This Cognology record is waiting for approval. It must be approved before it can be\n exported.\n </Stack>\n <Stack sx={{ width: '100%', rowGap: 2, overflow: 'auto', padding: '8px 0px' }}>\n <CognologySummary\n record={cognologyData.record}\n requisition={cognologyData.cognology_requisition}\n reapprovalRequired={cognologyData.record.reapproval_required_for_modifications}\n />\n </Stack>\n <Button sx={sharedClasses.genericButton} onClick={onClose}>\n Exit\n </Button>\n </Stack>\n </Dialog>\n );\n}\n","import React, { useState, useRef, Dispatch } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\n\nexport default function Fit2Work({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n const [accountEmail, setAccountEmail] = useState<string>('');\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [fit2WorkPackage, setFit2WorkPackage] = useState<string | null>(null);\n const [state, setState] = useState<string | null>(null);\n const [template, setTemplate] = useState<string | null>(null);\n\n const fieldRefs = {\n accountEmail: useRef<HTMLInputElement>(null),\n candidateEmail: useRef<HTMLInputElement>(null),\n package: useRef<HTMLInputElement>(null),\n state: useRef<HTMLInputElement>(null),\n template: useRef<HTMLInputElement>(null)\n };\n\n const { data: fit2WorkData, isLoading: loadingFit2WorkData } = useQuery({\n queryKey: ['fit2work data'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getFit2WorkData(application.id);\n return res;\n }\n },\n onSuccess: (res) => res && setAccountEmail(res.account_email),\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting fit2work data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const validateInputs = () => {\n if (!candidate) return false;\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!validateEmail(accountEmail))\n inputErrors.accountEmail = 'Please enter a proper email address';\n if (!validateEmail(candidate.email))\n inputErrors.candidateEmail = 'Please enter a proper email address';\n if (!state) inputErrors.state = 'Please select a state';\n if (!fit2WorkPackage) inputErrors.package = 'Please select a package';\n if (!template) inputErrors.template = 'Please select a template';\n setErrors(inputErrors);\n if (inputErrors.accountEmail) {\n scrollToElement(fieldRefs.accountEmail);\n } else if (inputErrors.candidateEmail) {\n scrollToElement(fieldRefs.candidateEmail);\n } else if (inputErrors.state) {\n scrollToElement(fieldRefs.state);\n } else if (inputErrors.package) {\n scrollToElement(fieldRefs.package);\n } else if (inputErrors.template) {\n scrollToElement(fieldRefs.template);\n }\n return !Object.keys(inputErrors).length;\n };\n\n const { mutate: fit2WorkExport, isLoading: exportingFit2Work } = useMutation({\n mutationFn: async () => {\n if (!fit2WorkPackage) return;\n const packagePayload = fit2WorkData?.packages[fit2WorkPackage];\n if (application && candidate && state && template && packagePayload) {\n const { res } = await Api.fit2WorkExport(application.id, {\n candidate_email: candidate.email,\n account_email: accountEmail,\n state: state,\n package_ids: [packagePayload],\n template_name: template\n });\n return res;\n }\n },\n onSuccess: (res) => {\n if (!res) return;\n queryClient.invalidateQueries(['integrations'], { exact: true });\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: error.error, state: 'error' } });\n }\n });\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n if (!candidate) return null;\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.FIT2WORK}\n label=\"Fit2Work export modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Fit2Work request</Stack>\n <Stack sx={{ overflow: 'auto', rowGap: 3 }}>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"Account email\"\n value={accountEmail}\n required\n fullWidth\n onChange={(e) => setAccountEmail(e.target.value)}\n error={errors.accountEmail}\n innerRef={fieldRefs.accountEmail}\n />\n <FormTextField\n label=\"Candidate email\"\n value={candidate.email}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n error={errors.candidateEmail}\n innerRef={fieldRefs.candidateEmail}\n />\n </Stack>\n <Autocomplete\n disablePortal\n options={fit2WorkData?.states || []}\n value={state}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3 }}\n loading={loadingFit2WorkData}\n loadingText=\"Loading states...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"State\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n helperText={errors.state}\n ref={fieldRefs.state}\n />\n )}\n onChange={(event, value) => setState(value)}\n />\n <Stack sx={styles.modalDoubleColumn}>\n <Autocomplete\n disablePortal\n options={Object.keys(fit2WorkData?.packages || {})}\n value={fit2WorkPackage}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3 }}\n loading={loadingFit2WorkData}\n loadingText=\"Loading packages...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Packages\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n helperText={errors.package}\n ref={fieldRefs.package}\n />\n )}\n onChange={(event, value) => setFit2WorkPackage(value)}\n />\n <Autocomplete\n disablePortal\n options={fit2WorkData?.templates || []}\n value={template}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3 }}\n loading={loadingFit2WorkData}\n loadingText=\"Loading email templates...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Email template\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n helperText={errors.template}\n ref={fieldRefs.template}\n />\n )}\n onChange={(event, value) => setTemplate(value)}\n />\n </Stack>\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Send\"\n primaryButtonCallback={() => validateInputs() && fit2WorkExport()}\n isLoading={exportingFit2Work}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { useState, useRef, Dispatch } from 'react';\nimport { Checkbox, FormControlLabel, Stack } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { FormNumberField, FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\n\nexport default function FoundU({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n const [preferredName, setPreferredName] = useState<string>('');\n const [sendWelcomeEmail, setSendWelcomeEmail] = useState<boolean>(false);\n const [errors, setErrors] = useState<Record<string, string>>({});\n\n const fieldRefs = {\n firstName: useRef<HTMLInputElement>(null),\n lastName: useRef<HTMLInputElement>(null),\n email: useRef<HTMLInputElement>(null),\n mobile: useRef<HTMLInputElement>(null)\n };\n\n const { mutate: foundUExport, isLoading: exportingFoundU } = useMutation({\n mutationFn: async () => {\n if (application && candidate) {\n const { res } = await Api.foundUExport(application.id, {\n first_name: candidate?.firstname,\n surname: candidate?.lastname,\n email: candidate.email,\n mobile: candidate.phone1,\n preferred_name: preferredName,\n send_welcome_email: sendWelcomeEmail\n });\n return res;\n }\n },\n onSuccess: (res: { success: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in exporting to foundU, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const validateInputs = () => {\n if (!candidate) return false;\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!candidate.firstname.trim()) inputErrors.firstName = 'First name can not be empty';\n if (!candidate.lastname.trim()) inputErrors.lastName = 'Last name can not be empty';\n if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n if (!candidate.phone1.trim()) inputErrors.mobile = 'Please enter a mobile number';\n setErrors(inputErrors);\n if (inputErrors.firstName) {\n scrollToElement(fieldRefs.firstName);\n } else if (inputErrors.lastName) {\n scrollToElement(fieldRefs.lastName);\n } else if (inputErrors.email) {\n scrollToElement(fieldRefs.email);\n } else if (inputErrors.mobile) {\n scrollToElement(fieldRefs.mobile);\n }\n return !Object.keys(inputErrors).length;\n };\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n if (!candidate) return null;\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.FOUNDU}\n label=\"FoundU export modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Export to FoundU</Stack>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"First name\"\n value={candidate.firstname || ''}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, firstname: e.target.value })}\n error={errors.firstName}\n innerRef={fieldRefs.firstName}\n />\n <FormTextField\n label=\"Last name\"\n value={candidate.lastname || ''}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, lastname: e.target.value })}\n error={errors.lastName}\n innerRef={fieldRefs.lastName}\n />\n </Stack>\n <FormTextField\n label=\"Preferred name\"\n value={preferredName}\n onChange={(e) => setPreferredName(e.target.value)}\n styles={{ width: '48%' }}\n />\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"Email\"\n value={candidate.email}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n error={errors.email}\n innerRef={fieldRefs.email}\n />\n <FormNumberField\n label={'Mobile'}\n value={candidate.phone1}\n onChange={(e) => setCandidate({ ...candidate, phone1: e.target.value })}\n required\n fullWidth\n error={errors.mobile}\n innerRef={fieldRefs.mobile}\n />\n </Stack>\n <FormControlLabel\n control={\n <Checkbox\n sx={sharedClasses.formCheckbox}\n checked={sendWelcomeEmail}\n onChange={(event) => setSendWelcomeEmail(event.target.checked)}\n />\n }\n label=\"Send welcome email\"\n sx={{ ...sharedClasses.checkboxLabel, margin: 'unset' }}\n />\n <ModalFooterButtons\n primaryButtonText=\"Export\"\n primaryButtonCallback={() => validateInputs() && foundUExport()}\n isLoading={exportingFoundU}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { useState, useRef, Dispatch } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\n\nexport default function Hronboard({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [title, setTitle] = useState<string>('');\n const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [hroUser, setHroUser] = useState<string | null>(null);\n const [company, setCompany] = useState<string | null>(null);\n const [location, setLocation] = useState<string | null>(null);\n const [approvalNumber, setApprovalNumber] = useState<string>('');\n const [jobReferenceNumber, setJobReferenceNumber] = useState<string>(\n application?.job?.reference || ''\n );\n const [positionTitle, setPositionTitle] = useState<string>(application?.job?.title || '');\n const [glCode, setGlCode] = useState<string>('');\n const [state, setState] = useState<string | null>(null);\n\n const fieldRefs = {\n location: useRef<HTMLInputElement>(null),\n firstName: useRef<HTMLInputElement>(null),\n lastName: useRef<HTMLInputElement>(null),\n email: useRef<HTMLInputElement>(null),\n phone: useRef<HTMLInputElement>(null)\n };\n\n const { data: HronboardData, isLoading: loadingHronboardData } = useQuery({\n queryKey: ['HR Onboard data'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getHronboardData(application.id);\n return res;\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting HR Onboard data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const { mutate: hronboardExport, isLoading: exportingHronboard } = useMutation({\n mutationFn: async () => {\n if (application && candidate) {\n const { res } = await Api.hronboardExport(application.id, {\n position_title: positionTitle,\n candidate_title: candidate.title,\n candidate_first_name: candidate.firstname,\n candidate_last_name: candidate.lastname,\n candidate_email: candidate.email,\n candidate_mobile_no: candidate.phone1,\n candidate_phone_no: candidate.phone2,\n candidate_addr_street1: candidate?.address_details?.street1 || '',\n candidate_addr_street2: candidate?.address_details?.street2 || '',\n candidate_addr_suburb: candidate?.address_details?.suburb || '',\n candidate_addr_state: state,\n candidate_addr_postcode: candidate?.address_details?.postcode || '',\n hro_user: hroUser,\n company: company,\n location: location,\n requisition_id: approvalNumber,\n job_id: application.job.id,\n gl_code: glCode\n });\n return res;\n }\n },\n onSuccess: (res: { message: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.message, state: 'success' }\n });\n handleClose();\n },\n onError: (error: { message: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in exporting to HR Onboard, ${error.message}`,\n state: 'error'\n }\n });\n }\n });\n\n const validateInputs = () => {\n if (!candidate) return false;\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!location) inputErrors.location = 'Please select a location';\n if (!candidate.firstname.trim()) inputErrors.firstName = 'First name can not be empty';\n if (!candidate.lastname.trim()) inputErrors.lastName = 'Last name can not be empty';\n if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n if (!candidate.phone1.trim()) inputErrors.phone = 'Please enter a mobile number';\n setErrors(inputErrors);\n if (inputErrors.location) {\n scrollToElement(fieldRefs.location);\n } else if (inputErrors.firstName) {\n scrollToElement(fieldRefs.firstName);\n } else if (inputErrors.lastName) {\n scrollToElement(fieldRefs.lastName);\n } else if (inputErrors.email) {\n scrollToElement(fieldRefs.email);\n } else if (inputErrors.phone) {\n scrollToElement(fieldRefs.phone);\n }\n return !Object.keys(inputErrors).length;\n };\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n if (!candidate) return null;\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.HRONBOARD}\n label=\"HROnboard export modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Export to HROnboard</Stack>\n <Stack sx={{ overflow: 'auto', rowGap: 2 }}>\n <Stack\n sx={{\n fontWeight: 'bold',\n color: '#666666',\n fontSize: '18px'\n }}\n >\n HR Onboarding\n </Stack>\n <Autocomplete\n disablePortal\n options={HronboardData?.hro_users || []}\n value={hroUser}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n loading={loadingHronboardData}\n loadingText=\"Loading users...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"HRO user\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n />\n )}\n onChange={(event, value) => setHroUser(value)}\n />\n <Autocomplete\n disablePortal\n options={HronboardData?.companies || []}\n value={company}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n loading={loadingHronboardData}\n loadingText=\"Loading companies...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Company\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n />\n )}\n onChange={(event, value) => setCompany(value)}\n />\n <Autocomplete\n disablePortal\n options={HronboardData?.locations || []}\n value={location}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n loading={loadingHronboardData}\n loadingText=\"Loading locations...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Location\"\n required\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n helperText={errors.location}\n ref={fieldRefs.location}\n />\n )}\n onChange={(event, value) => setLocation(value)}\n />\n <Stack\n sx={{\n fontWeight: 'bold',\n color: '#666666',\n fontSize: '18px'\n }}\n >\n Migrate system fields from\n </Stack>\n <FormTextField\n label=\"Approval number\"\n value={approvalNumber}\n styles={{ width: '48%' }}\n onChange={(e) => setApprovalNumber(e.target.value)}\n />\n <FormTextField\n label=\"Job reference number\"\n value={jobReferenceNumber}\n styles={{ width: '48%' }}\n onChange={(e) => setJobReferenceNumber(e.target.value)}\n />\n <Stack\n sx={{\n fontWeight: 'bold',\n color: '#666666',\n fontSize: '18px'\n }}\n >\n Job information\n </Stack>\n <FormTextField\n label=\"Position title\"\n value={positionTitle}\n styles={{ width: '48%' }}\n onChange={(e) => setPositionTitle(e.target.value)}\n />\n <FormTextField\n label=\"GL code\"\n value={glCode}\n styles={{ width: '48%' }}\n onChange={(e) => setGlCode(e.target.value)}\n />\n <Stack\n sx={{\n fontWeight: 'bold',\n color: '#666666',\n fontSize: '18px'\n }}\n >\n Candidate information\n </Stack>\n <FormTextField\n label=\"Title\"\n value={title}\n styles={{ width: '48%' }}\n onChange={(e) => setTitle(e.target.value)}\n />\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"First name\"\n value={candidate.firstname || ''}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, firstname: e.target.value })}\n error={errors.firstName}\n innerRef={fieldRefs.firstName}\n />\n <FormTextField\n label=\"Last name\"\n value={candidate.lastname || ''}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, lastname: e.target.value })}\n error={errors.lastName}\n innerRef={fieldRefs.lastName}\n />\n </Stack>\n <FormTextField\n label=\"Email\"\n value={candidate.email}\n styles={{ width: '48%' }}\n required\n onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n error={errors.email}\n innerRef={fieldRefs.email}\n />\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label={'Phone'}\n value={candidate.phone1}\n onChange={(e) => setCandidate({ ...candidate, phone1: e.target.value })}\n required\n fullWidth\n error={errors.phone}\n innerRef={fieldRefs.phone}\n />\n <FormTextField\n label={'Mobile'}\n value={candidate.phone2}\n onChange={(e) => setCandidate({ ...candidate, phone2: e.target.value })}\n fullWidth\n />\n </Stack>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"Street address\"\n value={candidate?.address_details?.street1 || ''}\n fullWidth\n onChange={(e) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, street1: e.target.value }\n })\n }\n />\n <FormTextField\n label=\"Street address cont'd\"\n value={candidate?.address_details?.street2 || ''}\n fullWidth\n onChange={(e) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, street2: e.target.value }\n })\n }\n />\n </Stack>\n <Stack sx={{ ...styles.modalDoubleColumn, marginRight: '2px' }}>\n <FormTextField\n label=\"Suburb/Town\"\n value={candidate?.address_details?.suburb || ''}\n fullWidth\n onChange={(e) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, suburb: e.target.value }\n })\n }\n />\n <Autocomplete\n disablePortal\n options={HronboardData?.states || []}\n value={state}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3 }}\n loading={loadingHronboardData}\n loadingText=\"Loading states...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"State, region or province\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n />\n )}\n onChange={(event, value) => setState(value)}\n />\n </Stack>\n <FormTextField\n label=\"Postcode\"\n value={candidate?.address_details?.postcode || ''}\n styles={{ width: '48%' }}\n onChange={(e) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, postcode: e.target.value }\n })\n }\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Export\"\n primaryButtonCallback={() => validateInputs() && hronboardExport()}\n isLoading={exportingHronboard}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\n\nexport default function Mvs({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [mvsPackage, setMvsPackage] = useState<{\n id: string;\n name: string;\n checks: { id: string; name: string }[];\n } | null>(null);\n const [checks, setChecks] = useState<{ id: string; name: string }[]>([]);\n\n const { data, isLoading } = useQuery({\n queryKey: ['mvs data'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getMvsData(application.id);\n return res;\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting mvs data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const { mutate: mvsExport, isLoading: loadingMvsExport } = useMutation({\n mutationFn: async () => {\n if (application && mvsPackage) {\n const { res } = await Api.mvsExport(application.id, {\n package_id: mvsPackage.id,\n blueprint_ids: checks.map((c) => c.id)\n });\n return res;\n }\n },\n onSuccess: (res: { success: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in sending request to MVS, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.MVS}\n label=\"MVS export modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>MVS request test</Stack>\n <Stack sx={{ flexDirection: 'row', marginTop: 3, columnGap: 4 }}>\n <Autocomplete\n disablePortal\n options={data?.packages || []}\n getOptionLabel={(option) => option.name}\n value={mvsPackage}\n sx={{ ...sharedClasses.formAutocomplete, width: '50%' }}\n loading={isLoading}\n loadingText=\"Loading packages...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Package\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n />\n )}\n onChange={(event, value) => {\n if (value) {\n const packageChecks: { id: string; name: string }[] = [];\n value.checks.map((c) => {\n const checkFound = data?.blueprints.find(\n (b: { id: string; name: string }) => b.id === c.id\n );\n checkFound && packageChecks.push(checkFound);\n });\n setChecks(packageChecks);\n } else {\n setChecks([]);\n }\n setMvsPackage(value);\n }}\n />\n <Autocomplete\n multiple\n disablePortal\n options={data?.blueprints || []}\n getOptionLabel={(option) => option.name}\n value={checks}\n sx={{ ...sharedClasses.formAutocomplete, width: '50%' }}\n loading={isLoading}\n loadingText=\"Loading checks...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Additional Checks\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n />\n )}\n onChange={(event, value) => setChecks(value)}\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Send\"\n primaryButtonCallback={mvsExport}\n isLoading={loadingMvsExport}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { Dispatch, useState, useRef } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { SingleDatePicker } from '../../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport dayjs from 'dayjs';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\nimport { validatePhone } from '../../Modals/SendSms';\n\nexport default function OnboardExpress({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen, userEmail } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [positionTitle, setPositionTitle] = useState<string>(application?.job.title || '');\n const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n const [startDate, setStartDate] = useState<Date | null>(null);\n const [dateError, setDateError] = useState<string>('');\n const [workType, setWorkType] = useState<string | null>(null);\n const [entity, setEntity] = useState<string | null>(null);\n const [template, setTemplate] = useState<string | null>(null);\n const [state, setState] = useState<string | null>(null);\n const [createdBy, setCreatedBy] = useState<string>(userEmail);\n const [errors, setErrors] = useState<Record<string, string>>({});\n const fieldRefs = {\n template: useRef<HTMLInputElement>(null),\n positionTitle: useRef<HTMLInputElement>(null),\n createdBy: useRef<HTMLInputElement>(null),\n startDate: useRef<HTMLInputElement>(null),\n firstName: useRef<HTMLInputElement>(null),\n lastName: useRef<HTMLInputElement>(null),\n email: useRef<HTMLInputElement>(null),\n phone: useRef<HTMLInputElement>(null),\n mobile: useRef<HTMLInputElement>(null)\n };\n\n const { data: revolveData, isLoading: loadingRevolveData } = useQuery({\n queryKey: ['revolve data'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getRevolveData(application.id);\n return res;\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting onboard express data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const { mutate: revolveExport, isLoading: loadingRevolveExport } = useMutation({\n mutationFn: async () => {\n if (application && candidate) {\n return await Api.revolveExport(application.id, {\n template_name: template || '',\n position_title: positionTitle,\n worktype: workType || '',\n entity_name: entity || '',\n created_by: createdBy,\n candidate_first_name: candidate.firstname,\n candidate_last_name: candidate.lastname,\n candidate_email: candidate.email,\n candidate_mobile_no: candidate.phone1.trim(),\n candidate_phone_no: candidate.phone2.trim(),\n candidate_addr_street: candidate.address_details.street1 || '',\n candidate_addr_street1: candidate.address_details.street2 || '',\n candidate_addr_suburb: candidate.address_details.suburb || '',\n candidate_addr_state: state || '',\n candidate_addr_postcode: candidate.address_details.postcode || '',\n start_date: dayjs(startDate).format('DD/MM/YYYY')\n });\n }\n },\n onSuccess: () => {\n queryClient.invalidateQueries(['application'], { exact: true });\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: 'Revolve export has been successfully exported', state: 'success' }\n });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in exporting to Revolve Onboard, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const validateAUPhoneNumber = (phone: string) => {\n return (\n (phone.trim().slice(0, 2) === '04' && phone.replace(/\\s/g, '').length === 10) ||\n (phone.trim().slice(0, 3) === '+61' && phone.replace(/\\s/g, '').length === 12)\n );\n };\n\n const validateInputs = () => {\n if (!candidate) return false;\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!template) inputErrors.template = 'Please select a template';\n if (!positionTitle.trim()) inputErrors.positionTitle = 'Position title can not be empty';\n if (!createdBy.trim()) inputErrors.createdBy = 'Created by can not be empty';\n if (!startDate) inputErrors.startDate = 'Please select a start date';\n if (!candidate.firstname.trim()) inputErrors.firstName = 'First name can not be empty';\n if (!candidate.lastname.trim()) inputErrors.lastName = 'Last name can not be empty';\n if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n setErrors(inputErrors);\n if (candidate.phone1) {\n if (validatePhone(candidate.phone1)) {\n if (!validateAUPhoneNumber(candidate.phone1))\n inputErrors.phone = 'Must be in the format 0400 000 000 or +61 400 000 000';\n } else {\n inputErrors.phone = 'Please enter a valid phone number';\n }\n } else {\n inputErrors.phone = 'Please enter a phone number';\n }\n if (candidate.phone2) {\n if (validatePhone(candidate.phone2)) {\n if (!validateAUPhoneNumber(candidate.phone2))\n inputErrors.mobile = 'Must be in the format 0400 000 000 or +61 400 000 000';\n } else {\n inputErrors.mobile = 'Please enter a valid mobile number';\n }\n }\n if (inputErrors.template) {\n scrollToElement(fieldRefs.template);\n } else if (inputErrors.positionTitle) {\n scrollToElement(fieldRefs.positionTitle);\n } else if (inputErrors.createdBy) {\n scrollToElement(fieldRefs.createdBy);\n } else if (inputErrors.startDate) {\n scrollToElement(fieldRefs.startDate);\n } else if (inputErrors.firstName) {\n scrollToElement(fieldRefs.firstName);\n } else if (inputErrors.lastName) {\n scrollToElement(fieldRefs.lastName);\n } else if (inputErrors.email) {\n scrollToElement(fieldRefs.email);\n } else if (inputErrors.phone) {\n scrollToElement(fieldRefs.phone);\n } else if (inputErrors.mobile) {\n scrollToElement(fieldRefs.mobile);\n }\n return !Object.keys(inputErrors).length;\n };\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n if (!candidate) return null;\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.ONBOARD_EXPRESS}\n label=\"Onboard express modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Export to Revolve Onboard</Stack>\n <Stack sx={{ overflow: 'auto', rowGap: 2 }}>\n <Autocomplete\n disablePortal\n options={revolveData?.template_names || []}\n value={template}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n loading={loadingRevolveData}\n loadingText=\"Loading templates...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"NEA letter template\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n helperText={errors.template}\n ref={fieldRefs.template}\n />\n )}\n onChange={(event, value) => setTemplate(value)}\n />\n <FormTextField\n label=\"Position title\"\n value={positionTitle}\n styles={{ width: '48%' }}\n required\n onChange={(e) => setPositionTitle(e.target.value)}\n error={errors.positionTitle}\n innerRef={fieldRefs.positionTitle}\n />\n <Autocomplete\n disablePortal\n options={revolveData?.entity_names || []}\n value={entity}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n loading={loadingRevolveData}\n loadingText=\"Loading entity names...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Entity name\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n />\n )}\n onChange={(event, value) => setEntity(value)}\n />\n <FormTextField\n label=\"Created by (email)\"\n value={createdBy}\n styles={{ width: '48%' }}\n required\n onChange={(e) => setCreatedBy(e.target.value)}\n error={errors.createdBy}\n innerRef={fieldRefs.createdBy}\n />\n <Autocomplete\n disablePortal\n options={revolveData?.worktypes || []}\n value={workType}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n loading={loadingRevolveData}\n loadingText=\"Loading work types...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Work type\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n />\n )}\n onChange={(event, value) => setWorkType(value)}\n />\n <Stack>\n <SingleDatePicker\n value={startDate}\n label=\"Start date\"\n inputStyles={{ ...sharedClasses.datePicker, width: '48%' }}\n onChange={(value) => {\n if (!value?.isValid()) {\n setDateError('Please input a valid date');\n } else {\n setDateError('');\n setStartDate(dayjs(value.toDate()).toDate());\n }\n }}\n error={dateError || errors.startDate}\n required\n />\n </Stack>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"First name\"\n value={candidate.firstname || ''}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, firstname: e.target.value })}\n error={errors.firstName}\n innerRef={fieldRefs.firstName}\n />\n <FormTextField\n label=\"Last name\"\n value={candidate.lastname || ''}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, lastname: e.target.value })}\n error={errors.lastName}\n innerRef={fieldRefs.lastName}\n />\n </Stack>\n <FormTextField\n label=\"Email\"\n value={candidate.email}\n styles={{ width: '48%' }}\n required\n onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n error={errors.email}\n innerRef={fieldRefs.email}\n />\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label={'Phone'}\n value={candidate.phone1}\n onChange={(e) => setCandidate({ ...candidate, phone1: e.target.value })}\n required\n fullWidth\n error={errors.phone}\n innerRef={fieldRefs.phone}\n />\n <FormTextField\n label={'Mobile'}\n value={candidate.phone2}\n onChange={(e) => setCandidate({ ...candidate, phone2: e.target.value })}\n fullWidth\n error={errors.mobile}\n innerRef={fieldRefs.mobile}\n />\n </Stack>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"Street address\"\n value={candidate?.address_details?.street1 || ''}\n fullWidth\n onChange={(e) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, street1: e.target.value }\n })\n }\n />\n <FormTextField\n label=\"Street address cont'd\"\n value={candidate?.address_details?.street2 || ''}\n fullWidth\n onChange={(e) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, street2: e.target.value }\n })\n }\n />\n </Stack>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"City, town or suburb\"\n value={candidate?.address_details?.suburb || ''}\n fullWidth\n onChange={(e) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, suburb: e.target.value }\n })\n }\n />\n <FormTextField\n label=\"Postcode or zipcode\"\n value={candidate?.address_details?.postcode || ''}\n fullWidth\n onChange={(e) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, postcode: e.target.value }\n })\n }\n />\n </Stack>\n <Autocomplete\n disablePortal\n options={revolveData?.states || []}\n value={state}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n loading={loadingRevolveData}\n loadingText=\"Loading states...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"State, region or province\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n />\n )}\n onChange={(event, value) => setState(value)}\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Export\"\n primaryButtonCallback={() => validateInputs() && revolveExport()}\n isLoading={loadingRevolveExport}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { useState, useRef, Dispatch } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport {\n FormTextField,\n FormNumberField,\n MultilineFormTextField\n} from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\n\nexport default function Referoo({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen, userEmail } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n const [jobTitle, setJobTitle] = useState<string>(application?.job?.title || '');\n const [company, setCompany] = useState<string>(application?.job?.entity || '');\n const [numberOfReferences, setNumberOfReferences] = useState<string>('');\n const [notes, setNotes] = useState<string>('');\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [country, setCountry] = useState<[string, string] | null>(null);\n const [questionnaire, setQuestionnaire] = useState<[string, string] | null>(null);\n const [referooPackage, setReferooPackage] = useState<[string, string] | null>(null);\n\n const fieldRefs = {\n firstName: useRef<HTMLInputElement>(null),\n lastName: useRef<HTMLInputElement>(null),\n email: useRef<HTMLInputElement>(null),\n questionnaire: useRef<HTMLInputElement>(null),\n references: useRef<HTMLInputElement>(null),\n country: useRef<HTMLInputElement>(null),\n phone: useRef<HTMLInputElement>(null)\n };\n\n const { data, isLoading } = useQuery({\n queryKey: ['referoo data'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getReferooData(application.id);\n return res;\n }\n },\n onSuccess: (res) => {\n const candidateCountry = res?.countries.find((c) => c[1] === res.country);\n candidateCountry && setCountry(candidateCountry);\n },\n onError: (error: { error: string }) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting referoo data, ${error.error}`,\n state: 'error'\n }\n })\n });\n\n const { mutate: referooExport, isLoading: loadingReferooExport } = useMutation({\n mutationFn: async () => {\n if (application && candidate) {\n const { res } = await Api.referooExport(application.id, {\n first_name: candidate.firstname,\n last_name: candidate.lastname,\n email: candidate.email,\n phone: candidate.phone1,\n phone_country: country?.[1] || '',\n job: jobTitle,\n company: company,\n questionnairesNum: questionnaire ? questionnaire[1] : undefined,\n packagesNum: referooPackage ? referooPackage[1] : undefined,\n number_of_references_required: numberOfReferences,\n notes: notes,\n recruiter_email: userEmail\n });\n return res;\n }\n },\n onSuccess: (res: { success: string }) => {\n queryClient.invalidateQueries(['integrations'], { exact: true });\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in sending request to referoo, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const validateInputs = () => {\n if (!candidate) return false;\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!candidate.firstname.trim()) inputErrors.firstName = 'First name can not be empty';\n if (!candidate.lastname.trim()) inputErrors.lastName = 'Last name can not be empty';\n if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n if (!country) inputErrors.country = 'Please select a country';\n if (candidate.phone1.trim().includes('+')) inputErrors.phone = 'Please do not use country code';\n if (!questionnaire && !referooPackage)\n inputErrors.questionnaire = 'Please select at least one questionnaire or one package';\n if (Number(numberOfReferences) < 1 && !referooPackage)\n inputErrors.references = 'Please enter a valid number of references';\n setErrors(inputErrors);\n if (inputErrors.firstName) {\n scrollToElement(fieldRefs.firstName);\n } else if (inputErrors.lastName) {\n scrollToElement(fieldRefs.lastName);\n } else if (inputErrors.email) {\n scrollToElement(fieldRefs.email);\n } else if (inputErrors.country) {\n scrollToElement(fieldRefs.country);\n } else if (inputErrors.phone) {\n scrollToElement(fieldRefs.phone);\n } else if (inputErrors.questionnaire) {\n scrollToElement(fieldRefs.questionnaire);\n } else if (inputErrors.references) {\n scrollToElement(fieldRefs.references);\n }\n return !Object.keys(inputErrors).length;\n };\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n if (!candidate) return null;\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.REFEROO}\n label=\"Referoo export modal\"\n handleClose={handleClose}\n styleOverrides={{ ...styles.modalStyleOverrides, width: '800px' }}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Export to Referoo</Stack>\n <Stack sx={{ rowGap: 2, overflow: 'auto' }}>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"First name\"\n value={candidate.firstname || ''}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, firstname: e.target.value })}\n error={errors.firstName}\n innerRef={fieldRefs.firstName}\n />\n <FormTextField\n label=\"Last name\"\n value={candidate.lastname || ''}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, lastname: e.target.value })}\n error={errors.lastName}\n innerRef={fieldRefs.lastName}\n />\n </Stack>\n <FormTextField\n label=\"Email\"\n value={candidate.email}\n styles={{ width: '48%' }}\n required\n onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n error={errors.email}\n innerRef={fieldRefs.email}\n />\n <Stack sx={styles.modalDoubleColumn}>\n <Autocomplete\n disablePortal\n options={data?.countries || []}\n getOptionLabel={(option) => option[0]}\n value={country}\n sx={{\n ...sharedClasses.formAutocomplete,\n width: '100%',\n marginTop: '18px',\n '& .MuiInputLabel-root': { top: '-10px' }\n }}\n loading={isLoading}\n loadingText=\"Loading countries...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Phone country\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n helperText={errors.country}\n ref={fieldRefs.country}\n />\n )}\n onChange={(event, value) => setCountry(value)}\n />\n <FormTextField\n label={'Phone'}\n value={candidate.phone1}\n onChange={(e) => {\n if (\n Number(e.target.value) === 0 ||\n (!e.target.value.includes('.') && !!Number(e.target.value))\n ) {\n setCandidate({ ...candidate, phone1: e.target.value.trim() });\n }\n }}\n required\n fullWidth\n helperText=\"Do not use the country code here\"\n error={errors.phone}\n innerRef={fieldRefs.phone}\n />\n </Stack>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"Job title\"\n value={jobTitle}\n fullWidth\n onChange={(e) => setJobTitle(e.target.value)}\n />\n <FormTextField\n label=\"Company\"\n value={company}\n fullWidth\n onChange={(e) => setCompany(e.target.value)}\n />\n </Stack>\n <Stack sx={{ ...styles.modalDoubleColumn, marginRight: '3px', paddingTop: 1 }}>\n <Autocomplete\n disablePortal\n options={data?.questionnaires || []}\n getOptionLabel={(option) => option[0]}\n value={questionnaire}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 2 }}\n loading={isLoading}\n loadingText=\"Loading questionnaires...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Questionnaires\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n helperText={errors.questionnaire}\n ref={fieldRefs.questionnaire}\n />\n )}\n onChange={(event, value) => setQuestionnaire(value)}\n disabled={!!referooPackage}\n />\n <Autocomplete\n disablePortal\n options={data?.packages || []}\n getOptionLabel={(option) => option[0]}\n value={referooPackage}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 2 }}\n loading={isLoading}\n loadingText=\"Loading packages...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Packages\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n />\n )}\n onChange={(event, value) => {\n setQuestionnaire(null);\n setNumberOfReferences('');\n setReferooPackage(value);\n }}\n />\n </Stack>\n <FormNumberField\n label={'Number of references required'}\n value={numberOfReferences}\n onChange={(e) => setNumberOfReferences(e.target.value)}\n required\n styles={{\n width: '48%',\n marginLeft: '3px',\n '& .MuiInputBase-input': {\n '&.Mui-disabled': { backgroundColor: 'rgba(217, 217, 217, 0.23)' }\n }\n }}\n error={errors.references}\n innerRef={fieldRefs.references}\n disabled={!!referooPackage}\n />\n <MultilineFormTextField\n label=\"Notes\"\n value={notes}\n onChange={(e) => setNotes(e.target.value)}\n fullWidth\n rows={6}\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Export\"\n primaryButtonCallback={() => validateInputs() && referooExport()}\n isLoading={loadingReferooExport}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Stack } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\n\nexport default function Roubler({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n const [errors, setErrors] = useState<Record<string, string>>({});\n\n const validateInputs = () => {\n if (!candidate) return false;\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!candidate.firstname.trim()) inputErrors.firstName = 'First name can not be empty';\n if (!candidate.lastname.trim()) inputErrors.lastName = 'Last name can not be empty';\n if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n setErrors(inputErrors);\n return !Object.keys(inputErrors).length;\n };\n\n const { mutate: roublerExport, isLoading: exportingRoubler } = useMutation({\n mutationFn: async () => {\n if (application && candidate) {\n const { res } = await Api.roublerExport(application.id, {\n first_name: candidate.firstname,\n last_name: candidate.lastname,\n email: candidate.email\n });\n return res;\n }\n },\n onSuccess: (res: { success: string }) => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: error.error, state: 'error' } });\n }\n });\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n if (!candidate) return null;\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.ROUBLER}\n label=\"HROnboard export modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={{ ...styles.modalContainer, rowGap: 4 }}>\n <Stack sx={styles.modalTitle}>Export to Roubler</Stack>\n <Stack sx={{ overflow: 'auto', rowGap: 3, paddingBottom: 4 }}>\n <Stack sx={styles.modalDoubleColumn}>\n <FormTextField\n label=\"First name\"\n value={candidate.firstname || ''}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, firstname: e.target.value })}\n error={errors.firstName}\n />\n <FormTextField\n label=\"Surname\"\n value={candidate.lastname || ''}\n required\n fullWidth\n onChange={(e) => setCandidate({ ...candidate, lastname: e.target.value })}\n error={errors.lastName}\n />\n </Stack>\n <FormTextField\n label=\"Email\"\n value={candidate.email}\n styles={{ width: '48%' }}\n required\n onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n error={errors.email}\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Export\"\n primaryButtonCallback={() => validateInputs() && roublerExport()}\n isLoading={exportingRoubler}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { Dispatch, useState, useRef } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { MultilineFormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { SingleDateTimePicker } from '../../../Components/CustomUIElements/SingleDatePicker';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\nimport dayjs from 'dayjs';\n\nexport default function SparkHire({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [emailMessage, setEmailMessage] = useState<string>('');\n const [scheduledAt, setScheduledAt] = useState<Date>(new Date());\n const [timezone, setTimezone] = useState<string | null>(null);\n const [job, setJob] = useState<[string, string] | null>(null);\n const [question, setQuestion] = useState<[string, string] | null>(null);\n const [errors, setErrors] = useState<Record<string, string>>({});\n\n const fieldRefs = {\n job: useRef<HTMLInputElement>(null),\n question: useRef<HTMLInputElement>(null),\n scheduledAt: useRef<HTMLInputElement>(null)\n };\n\n const { data: sparkHireData, isFetching: loadingSparkHireData } = useQuery({\n queryKey: ['SparkHire data'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getSparkHireData(application.id);\n return res;\n }\n },\n onSuccess: (res) => {\n const savedTimezone = res?.timezones?.find((tz) => tz === res?.timezone);\n savedTimezone && setTimezone(savedTimezone);\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting sparkhire data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const validateInputs = () => {\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!job) inputErrors.job = 'Please select a job';\n if (!question) inputErrors.question = 'Please select a question set';\n if (dayjs(scheduledAt).isBefore(Date.now()))\n inputErrors.scheduledAt = 'Date and time must be in the future';\n setErrors(inputErrors);\n if (inputErrors.job) {\n scrollToElement(fieldRefs.job);\n } else if (inputErrors.question) {\n scrollToElement(fieldRefs.question);\n } else if (inputErrors.scheduledAt) {\n scrollToElement(fieldRefs.scheduledAt);\n }\n return !Object.keys(inputErrors).length;\n };\n\n const { mutate: sparkHireExport, isLoading: exportingSparkHire } = useMutation({\n mutationFn: async () => {\n if (application && job && question) {\n const { res } = await Api.sparkHireExport(application.id, {\n job_uuid: job[1],\n interview_questions_set_uuid: question[1],\n email_message: emailMessage,\n scheduled_time: scheduledAt.toISOString(),\n timezone: timezone ? timezone : undefined\n });\n return res;\n }\n },\n onSuccess: (res: { success: string }) => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: error.error, state: 'error' } });\n }\n });\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.SPARKHIRE}\n label=\"Spark Hire export modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Export to Spark Hire</Stack>\n <Stack sx={{ overflow: 'auto', rowGap: 3 }}>\n <Autocomplete\n disablePortal\n options={sparkHireData?.jobs || []}\n getOptionLabel={(option) => option[0]}\n value={job}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3 }}\n loading={loadingSparkHireData}\n loadingText=\"Loading jobs...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Job from Spark Hire\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n helperText={errors.job}\n ref={fieldRefs.job}\n />\n )}\n onChange={(_event, value) => setJob(value)}\n />\n <Autocomplete\n disablePortal\n options={sparkHireData?.questions || []}\n getOptionLabel={(option) => option[0]}\n value={question}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3 }}\n loading={loadingSparkHireData}\n loadingText=\"Loading questions...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Question set\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n helperText={errors.question}\n ref={fieldRefs.question}\n />\n )}\n onChange={(event, value) => setQuestion(value)}\n />\n <MultilineFormTextField\n label=\"Email message\"\n value={emailMessage}\n onChange={(e) => setEmailMessage(e.target.value)}\n fullWidth\n rows={6}\n />\n <Stack sx={styles.modalDoubleColumn}>\n <Stack sx={{ width: '100%' }}>\n <SingleDateTimePicker\n label=\"Scheduled at\"\n inputStyles={{ ...sharedClasses.datePicker, width: '100%', height: '2em' }}\n onChange={(value) => value && setScheduledAt(value)}\n value={scheduledAt}\n disablePast\n required\n innerRef={fieldRefs.scheduledAt}\n error={errors.scheduledAt}\n />\n </Stack>\n <Autocomplete\n disablePortal\n options={sparkHireData?.timezones || []}\n value={timezone}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: '20px' }}\n loading={loadingSparkHireData}\n loadingText=\"Loading timezones...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Timezone\"\n InputLabelProps={{ shrink: true }}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <>\n {loadingSparkHireData && <CircularProgress color=\"inherit\" size={20} />}\n {params.InputProps.endAdornment}\n </>\n )\n }}\n sx={{\n ...styles.autoCompleteTextfield,\n '& .MuiInputBase-root': { margin: 'unset', marginTop: 0.5 }\n }}\n required\n />\n )}\n onChange={(event, value) => setTimezone(value)}\n disableClearable={!!timezone}\n />\n </Stack>\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Export\"\n primaryButtonCallback={() => validateInputs() && sparkHireExport()}\n isLoading={exportingSparkHire}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\n\nexport default function Testgrid({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [testgridPackage, setTestgridPackage] = useState<string | null>(null);\n const [error, setError] = useState<string>('');\n\n const { data: packages, isLoading: loadingPackages } = useQuery({\n queryKey: ['testgrid packages'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getTestGridPackages(application.id);\n return res;\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting testgrid data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const validateInput = () => {\n setError('');\n if (!testgridPackage) {\n setError('Please select a package');\n return false;\n }\n return true;\n };\n\n const { mutate: testGridExport, isLoading: loadingTestGridExport } = useMutation({\n mutationFn: async () => {\n if (application && packages && testgridPackage) {\n const { res } = await Api.testGridExport(application.id, packages[testgridPackage]);\n return res;\n }\n },\n onSuccess: (res: { success: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n handleClose();\n },\n onError: (error: { message: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in sending request to testgrid, ${error.message}`,\n state: 'error'\n }\n });\n }\n });\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.TESTGRID}\n label=\"Testgrid export modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Testgrid request test</Stack>\n <Autocomplete\n disablePortal\n options={Object.keys(packages || {})}\n value={testgridPackage}\n sx={{ ...sharedClasses.formAutocomplete, width: '48%', marginTop: 3, flexGrow: 1 }}\n loading={loadingPackages}\n loadingText=\"Loading packages...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Package\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n helperText={error}\n />\n )}\n onChange={(event, value) => setTestgridPackage(value)}\n />\n <ModalFooterButtons\n primaryButtonText=\"Send\"\n primaryButtonCallback={() => validateInput() && testGridExport()}\n isLoading={loadingTestGridExport}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Divider, Stack } from '@mui/material';\nimport { Circle, Info as InfoIcon } from '@mui/icons-material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQueryClient, useMutation } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../../types';\nimport { ModalType } from '../../config';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport { MultilineFormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { theme } from '../../../../../components/ThemeContext/ThemeObject';\n\nexport default function UnusualActivity({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen, referenceId, selectedReferee } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [comments, setComments] = useState<string>('');\n const [selectedButton, setSelectedButton] = useState<string>('');\n\n const buttonsColor = () => {\n switch (selectedButton) {\n case 'valid':\n return '#8CCF95';\n case 'suspicious':\n return theme.palette.error.main;\n default:\n return '#7CD0CC';\n }\n };\n\n const resolution = () => {\n switch (selectedButton) {\n case 'valid':\n return 0;\n case 'suspicious':\n return 1;\n default:\n return undefined;\n }\n };\n\n const { mutate: resolveUnusualActivity, isLoading: resolvingUnusualActivity } = useMutation({\n mutationFn: async () => {\n if (application && referenceId && selectedReferee) {\n const { res } = await Api.resolveUnusualActivity(application.id, {\n referee_id: selectedReferee.id,\n note: comments.trim(),\n reference_id: referenceId,\n resolution: resolution()\n });\n return res;\n }\n },\n onSuccess: (res: { success: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n handleClose();\n },\n onError: (error: { message: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in resolving unusual activity, ${error.message}`,\n state: 'error'\n }\n });\n }\n });\n\n const handleClose = () => {\n dispatch({\n type: 'SET_UNUSUAL_ACTIVITY_DATA',\n payload: { referenceId: null, selectedReferee: null }\n });\n dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n };\n\n const errorsLength = selectedReferee?.unusual_activities?.errors?.length;\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.UNUSUAL_ACTIVITY}\n label=\"Unusual activity modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Unusual activity</Stack>\n <Stack\n sx={{\n border: '1px solid #7CD0CC',\n borderRadius: '6px',\n padding: '8px 16px',\n color: '#939393'\n }}\n >\n <Stack sx={{ flexDirection: 'row', columnGap: 1, alignItems: 'center' }}>\n <InfoIcon fontSize=\"small\" sx={{ color: '#7CD0CC' }} />\n Status:\n <Stack sx={{ fontWeight: 'bold' }}>{selectedReferee?.unusual_activities?.status}</Stack>\n </Stack>\n <Stack sx={{ paddingLeft: '28px' }}>\n {`There ${errorsLength === 1 ? 'is' : 'are'} ${errorsLength} possibilit${errorsLength === 1 ? 'y' : 'ies'}:`}\n </Stack>\n {selectedReferee?.unusual_activities?.errors?.map((error, index) => (\n <Stack key={index} sx={{ flexDirection: 'row', paddingLeft: 3 }}>\n <Circle sx={{ fontSize: '6px', margin: 1 }} />\n {error}\n </Stack>\n ))}\n </Stack>\n <Stack sx={{ rowGap: 1 }}>\n <Stack sx={{ color: '#838383' }}>Verify this activity</Stack>\n <Stack\n sx={{\n ...styles.verifyActivityButtonsContainer,\n border: `2px solid ${buttonsColor()}`,\n color: buttonsColor()\n }}\n >\n <Stack\n sx={{\n ...styles.verifyActivityButton,\n background: selectedButton === 'valid' ? '#EFFDF3' : 'inherit',\n ...(selectedButton === 'suspicious' && { color: '#93939390' })\n }}\n onClick={() =>\n selectedButton === 'valid' ? setSelectedButton('') : setSelectedButton('valid')\n }\n >\n Valid\n </Stack>\n <Divider\n orientation=\"vertical\"\n flexItem\n sx={{ margin: 0.25, borderColor: `${buttonsColor()}25`, borderRightWidth: 1 }}\n />\n <Stack\n sx={{\n ...styles.verifyActivityButton,\n background: selectedButton === 'suspicious' ? `#FCEFEF` : 'inherit',\n ...(selectedButton === 'valid' && { color: '#93939390' })\n }}\n onClick={() =>\n selectedButton === 'suspicious'\n ? setSelectedButton('')\n : setSelectedButton('suspicious')\n }\n >\n Suspicious\n </Stack>\n </Stack>\n </Stack>\n <Stack sx={{ width: '50%' }}>\n <MultilineFormTextField\n label=\"Comments\"\n value={comments}\n onChange={(e) => setComments(e.target.value)}\n rows={6}\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Submit\"\n primaryButtonCallback={resolveUnusualActivity}\n isLoading={resolvingUnusualActivity}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { useState, Dispatch, useRef } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../../Components/GenericModal/StyledModal';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, ApplicationState, IApplication, IXrefPackage } from '../../types';\nimport { ModalType } from '../../config';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\nimport {\n FormTextField,\n FormNumberField,\n MultilineFormTextField\n} from '../../../Components/CustomUIElements/FormTextField';\nimport { TCandidate } from '../../../Candidates/types';\nimport { validateEmail } from '../../../Candidates/EditCandidate';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\n\nexport default function XRef({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [candidate, setCandidate] = useState<TCandidate | null>(application?.candidate || null);\n const [minReferees, setMinReferees] = useState<string>('');\n const [candidateNote, setCandidateNote] = useState<string>('');\n const [refereeNote, setRefereeNote] = useState<string>('');\n const [xRefPackage, setXRefPackage] = useState<IXrefPackage | null>(null);\n const [errors, setErrors] = useState<Record<string, string>>({});\n\n const fieldRefs = {\n package: useRef<HTMLInputElement>(null),\n referees: useRef<HTMLInputElement>(null),\n candidateNote: useRef<HTMLInputElement>(null),\n refereeNote: useRef<HTMLInputElement>(null),\n email: useRef<HTMLInputElement>(null)\n };\n\n const { data: packages, isLoading: loadingPackages } = useQuery({\n queryKey: ['xref packages'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getXrefPackages(application.id);\n return res;\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting onboard express data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const { mutate: xRefExport, isLoading: loadingXRefExport } = useMutation({\n mutationFn: async () => {\n if (application && candidate && xRefPackage) {\n const { res } = await Api.xRefExport(application.id, {\n candidate_email: candidate.email,\n package_id: xRefPackage.id,\n min_referees: Number(minReferees),\n note_to_candidate: candidateNote,\n note_to_referee: refereeNote\n });\n return res;\n }\n },\n onSuccess: (res: { success: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in exporting to Xref, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const validateInputs = () => {\n if (!candidate) return false;\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!xRefPackage) inputErrors.package = 'Please select a package';\n if (!minReferees) inputErrors.referees = 'Min referees can not be empty';\n if (!candidateNote.trim()) inputErrors.candidateNote = 'Candidate note can not be empty';\n if (!refereeNote.trim()) inputErrors.refereeNote = 'Referee note can not be empty';\n if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n setErrors(inputErrors);\n if (inputErrors.email) {\n scrollToElement(fieldRefs.email);\n } else if (inputErrors.package) {\n scrollToElement(fieldRefs.package);\n } else if (inputErrors.referees) {\n scrollToElement(fieldRefs.referees);\n } else if (inputErrors.candidateNote) {\n scrollToElement(fieldRefs.candidateNote);\n } else if (inputErrors.refereeNote) {\n scrollToElement(fieldRefs.refereeNote);\n }\n return !Object.keys(inputErrors).length;\n };\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n if (!candidate) return null;\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.XREF}\n label=\"Xref export modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Xref request</Stack>\n <Stack sx={{ overflow: 'auto', rowGap: 2 }}>\n <FormTextField\n label=\"Candidate email\"\n value={candidate.email}\n styles={{ width: '50%' }}\n required\n onChange={(e) => setCandidate({ ...candidate, email: e.target.value })}\n error={errors.email}\n innerRef={fieldRefs.email}\n />\n <Autocomplete\n disablePortal\n options={packages || []}\n getOptionLabel={(option) => option.name}\n value={xRefPackage}\n sx={{ ...sharedClasses.formAutocomplete, width: '50%', marginTop: 3, flexGrow: 1 }}\n loading={loadingPackages}\n loadingText=\"Loading packages...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Package\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n helperText={errors.package}\n ref={fieldRefs.package}\n />\n )}\n onChange={(event, value) => {\n if (value) {\n setMinReferees(String(value.min_referees));\n setCandidateNote(value.note_to_candidate);\n setRefereeNote(value.note_to_referee);\n } else {\n setMinReferees('');\n setCandidateNote('');\n setRefereeNote('');\n }\n setXRefPackage(value);\n }}\n />\n <FormNumberField\n label={'Min referees'}\n value={minReferees}\n onChange={(e) => setMinReferees(e.target.value)}\n required\n styles={{ width: '50%' }}\n error={errors.referees}\n innerRef={fieldRefs.referees}\n />\n <MultilineFormTextField\n label=\"Note to candidate\"\n value={candidateNote}\n onChange={(e) => setCandidateNote(e.target.value)}\n fullWidth\n required\n rows={6}\n error={errors.candidateNote}\n innerRef={fieldRefs.candidateNote}\n />\n <MultilineFormTextField\n label=\"Note to referee\"\n value={refereeNote}\n onChange={(e) => setRefereeNote(e.target.value)}\n fullWidth\n required\n rows={6}\n error={errors.refereeNote}\n innerRef={fieldRefs.refereeNote}\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Send\"\n primaryButtonCallback={() => validateInputs() && xRefExport()}\n isLoading={loadingXRefExport}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React from 'react';\nimport { Button, Stack } from '@mui/material';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nexport default function OldIntegrationsLink() {\n return (\n <Stack sx={{ alignItems: 'center', rowGap: 3, paddingTop: 5 }}>\n <Stack sx={{ alignItems: 'center', rowGap: 0.75, color: theme.palette.common.grey }}>\n <Stack sx={{ fontSize: '19px', fontWeight: 'bold' }}>\n {`Can't see one of your integrations?`}\n </Stack>\n <Stack>{`Some integrations haven't been moved over yet.`}</Stack>\n <Stack>Click below to access them on the old version</Stack>\n </Stack>\n <Button\n id=\"old-version-button\"\n sx={sharedClasses.genericButtonSecondary}\n onClick={() =>\n window.open(\n `${window.location.href.replace('new_applications', 'applications')}#application-activities`,\n '_blank'\n )\n }\n >\n Go to the old version\n </Button>\n </Stack>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Link, Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { IIntegrationsResponse, ApplicationAction, IApplication } from '../../types';\nimport UpdateStatusIcon from '../UpdateStatusIcon';\nimport Api from '../../API';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function Fit2WorkRecord({ dispatch }: { dispatch: Dispatch<ApplicationAction> }) {\n const queryClient = useQueryClient();\n const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const { mutate: updateFit2WorkStatus, isLoading: updatingFit2WorkStatus } = useMutation({\n mutationFn: async (id: number) => {\n if (application) {\n const { res } = await Api.updateFit2WorkStatus(application.id, id);\n return res;\n }\n },\n onSuccess: (res: { success: string }) => {\n queryClient.invalidateQueries(['integrations'], { exact: true });\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: error.error, state: 'error' }\n });\n }\n });\n\n return (\n <Stack sx={styles.integrationDetails}>\n <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Fit2Work requested checks</Stack>\n <Table sx={styles.integrationDetailsTable}>\n <TableHead>\n <TableRow>\n {['Submitted At', 'Package Name', 'Reference ID', 'Candidate email', 'Status'].map(\n (title, index) => (\n <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n <Stack>{title}</Stack>\n </TableCell>\n )\n )}\n </TableRow>\n </TableHead>\n <TableBody>\n {integrationsData?.fit2_work_records.map((record, index) => (\n <TableRow key={index}>\n <TableCell sx={{ verticalAlign: 'top', minWidth: '100px' }}>\n {formatToUserTimeZone(record.created_at)}\n </TableCell>\n <TableCell sx={{ verticalAlign: 'top', minWidth: '110px' }}>\n {record.package_name}\n </TableCell>\n <TableCell sx={{ verticalAlign: 'top', minWidth: '100px' }}>\n {record.reference_id}\n </TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>{record.candidate_email}</TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>\n <Stack sx={{ rowGap: 1 }}>\n {record.checks.map((check, index) => (\n <Stack key={index}>\n <Stack>{check.status}</Stack>\n {check.report_path && (\n <Link\n href={check.report_path}\n target=\"_blank\"\n style={{\n color: 'inherit',\n width: 'fit-content',\n textDecoration: 'underline'\n }}\n >\n Download Report\n </Link>\n )}\n </Stack>\n ))}\n </Stack>\n </TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>\n <UpdateStatusIcon\n callback={() => updateFit2WorkStatus(record.reference_id)}\n loading={updatingFit2WorkStatus}\n dispatch={dispatch}\n />\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Stack>\n );\n}\n","import React from 'react';\nimport { Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IIntegrationsResponse } from '../../types';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function FoundURecord() {\n const queryClient = useQueryClient();\n const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n return (\n <Stack sx={styles.integrationDetails}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Exported foundU Record</Stack>\n </Stack>\n <Table sx={styles.integrationDetailsTable}>\n <TableHead>\n <TableRow>\n {['foundU Employee ID', 'Exported at'].map((title, index) => (\n <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n <Stack>{title}</Stack>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {integrationsData?.foundu_record && (\n <TableRow>\n <TableCell sx={{ verticalAlign: 'top' }}>\n {integrationsData?.foundu_record.foundu_id}\n </TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>\n {formatToUserTimeZone(integrationsData?.foundu_record.created_at)}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </Stack>\n );\n}\n","import React from 'react';\nimport { Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IIntegrationsResponse } from '../../types';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function MvsRecord() {\n const queryClient = useQueryClient();\n const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n return (\n <Stack sx={styles.integrationDetails}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>MVS requested tests</Stack>\n </Stack>\n <Table sx={styles.integrationDetailsTable}>\n <TableHead>\n <TableRow>\n {['Package name', 'Checks', 'Status', 'Requested at'].map((title, index) => (\n <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n <Stack>{title}</Stack>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {integrationsData?.mvs_requests.map((request, index) => (\n <TableRow key={index}>\n <TableCell sx={{ verticalAlign: 'top' }}>{request.package_name}</TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>\n {request.blueprint_ids.join(', ')}\n </TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>{request.status}</TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>\n {formatToUserTimeZone(request.created_at)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Stack>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Link, Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IIntegrationsResponse, ApplicationAction } from '../../types';\nimport UpdateStatusIcon from '../UpdateStatusIcon';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function ReferooRecord({ dispatch }: { dispatch: Dispatch<ApplicationAction> }) {\n const queryClient = useQueryClient();\n const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n if (!integrationsData?.referoo_record) return null;\n return (\n <Stack sx={styles.integrationDetails}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Referoo requested checks</Stack>\n <UpdateStatusIcon dispatch={dispatch} />\n </Stack>\n <Table sx={styles.integrationDetailsTable}>\n <TableHead>\n <TableRow>\n {[\n 'Submitted at',\n 'References required',\n 'Reference ID',\n 'Candidate status',\n 'Referees status'\n ].map((title, index) => (\n <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n <Stack>{title}</Stack>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n <TableRow>\n <TableCell sx={{ verticalAlign: 'top', minWidth: '120px' }}>\n {formatToUserTimeZone(integrationsData.referoo_record.created_at)}\n </TableCell>\n <TableCell sx={{ verticalAlign: 'top', minWidth: '150px' }}>\n {integrationsData.referoo_record.number_of_references_required}\n </TableCell>\n <TableCell sx={{ verticalAlign: 'top', minWidth: '110px' }}>\n {integrationsData.referoo_record.referoo_id}\n </TableCell>\n <TableCell sx={{ verticalAlign: 'top', minWidth: '120px' }}>\n {integrationsData.referoo_record.candidate_status}\n </TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>\n <Stack sx={{ rowGap: 2 }}>\n {integrationsData.referoo_record.referees_status ? (\n <>\n {integrationsData.referoo_record.referees_status.map((status, index) => (\n <Stack key={index} sx={{ rowGap: 1 }}>\n <Stack>{status.referee}</Stack>\n </Stack>\n ))}\n </>\n ) : (\n '-'\n )}\n {integrationsData.referoo_record.report_url && (\n <Link\n href={\n integrationsData.referoo_login_url ||\n integrationsData.referoo_record.report_url\n }\n target=\"_blank\"\n style={{\n color: 'inherit',\n width: 'fit-content',\n textDecoration: 'underline'\n }}\n >\n View All Report\n </Link>\n )}\n </Stack>\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </Stack>\n );\n}\n","import React from 'react';\nimport { Link, Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IIntegrationsResponse } from '../../types';\n\nexport default function SparkHireRecord() {\n const queryClient = useQueryClient();\n const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n\n if (!integrationsData?.sparkhire_record) return null;\n return (\n <Stack sx={styles.integrationDetails}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Spark Hire Interview</Stack>\n </Stack>\n <Table sx={styles.integrationDetailsTable}>\n <TableHead>\n <TableRow>\n {['Status', 'Share link'].map((title, index) => (\n <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n <Stack>{title}</Stack>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n <TableRow>\n <TableCell>{integrationsData.sparkhire_record.status}</TableCell>\n <TableCell>\n {integrationsData?.sparkhire_record?.share_link ? (\n <Link\n href={integrationsData.sparkhire_record.share_link}\n target=\"_blank\"\n style={{\n color: 'inherit',\n width: 'fit-content',\n textDecoration: 'underline'\n }}\n >\n Watch Here\n </Link>\n ) : (\n 'Candidate needs to complete the interview first'\n )}\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </Stack>\n );\n}\n","import React from 'react';\nimport { Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IIntegrationsResponse } from '../../types';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function TestgridRecord() {\n const queryClient = useQueryClient();\n const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n\n if (!integrationsData?.test_grid_requests.length) return null;\n return (\n <Stack sx={styles.integrationDetails}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>TestGrid requested tests</Stack>\n </Stack>\n <Table sx={styles.integrationDetailsTable}>\n <TableHead>\n <TableRow>\n {['Package Name', 'Status', 'Requested at', 'Score'].map((title, index) => (\n <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n <Stack>{title}</Stack>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {integrationsData?.test_grid_requests.map((request, index) => (\n <TableRow key={index}>\n <TableCell sx={{ verticalAlign: 'top' }}>{request.package_name || '-'}</TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>{request.status}</TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>\n {formatToUserTimeZone(request.created_at)}\n </TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>{request.score || '-'}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Stack>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Link, Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from '../styles';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ApplicationAction, IIntegrationsResponse } from '../../types';\nimport { ModalType } from '../../config';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport UpdateStatusIcon from '../UpdateStatusIcon';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function XrefRecord({ dispatch }: { dispatch: Dispatch<ApplicationAction> }) {\n const queryClient = useQueryClient();\n const integrationsData = queryClient.getQueryData<IIntegrationsResponse>(['integrations']);\n return (\n <Stack sx={styles.integrationDetails}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Xref requested checks</Stack>\n <UpdateStatusIcon dispatch={dispatch} />\n </Stack>\n <Table sx={styles.integrationDetailsTable}>\n <TableHead>\n <TableRow>\n {['Submitted at', 'Package name', 'Reference ID', 'Status', 'Referees'].map(\n (title, index) => (\n <TableCell sx={styles.integrationDetailsTableHeader} key={index}>\n <Stack>{title}</Stack>\n </TableCell>\n )\n )}\n </TableRow>\n </TableHead>\n <TableBody>\n {integrationsData?.xref_records.map((record, index) => (\n <TableRow key={index}>\n <TableCell sx={{ verticalAlign: 'top' }}>\n {formatToUserTimeZone(record.created_at)}\n </TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>{record.package_name}</TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>{record.reference_id}</TableCell>\n <TableCell sx={{ verticalAlign: 'top' }}>{record.state}</TableCell>\n <TableCell>\n {record.referees?.length ? (\n <Stack sx={{ rowGap: 2 }}>\n {record.referees.map((referee, index) => (\n <Stack key={index} sx={{ rowGap: 1 }}>\n {referee.first_name} {referee.last_name} - {referee.state}\n {referee.report_path && (\n <Link\n href={referee.report_path}\n target=\"_blank\"\n style={{\n color: 'inherit',\n width: 'fit-content',\n textDecoration: 'underline'\n }}\n >\n View Report\n </Link>\n )}\n {referee.unusual_activities && (\n <Stack\n sx={{\n color: theme.palette.error.main,\n textDecoration: 'underline',\n cursor: 'pointer',\n width: 'fit-content'\n }}\n onClick={() => {\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: ModalType.UNUSUAL_ACTIVITY\n });\n dispatch({\n type: 'SET_UNUSUAL_ACTIVITY_DATA',\n payload: {\n referenceId: record.reference_id,\n selectedReferee: referee\n }\n });\n }}\n >\n Unusual Activity\n </Stack>\n )}\n </Stack>\n ))}\n </Stack>\n ) : (\n '-'\n )}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </Stack>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { CircularProgress, IconButton, Tooltip } from '@mui/material';\nimport { Refresh as RefreshIcon } from '@mui/icons-material';\nimport { useGetIntegrationsData } from '../helper';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ApplicationAction, IApplication } from '../types';\n\nexport default function UpdateStatusIcon({\n callback,\n loading,\n dispatch\n}: {\n callback?: () => void;\n loading?: boolean;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const { refetchIntegrationsData, refetchingIntegrationsData } = useGetIntegrationsData({\n applicationId: application?.id,\n dispatch: dispatch\n });\n const buttonLoading = loading ? loading : refetchingIntegrationsData;\n return (\n <Tooltip title=\"Update status\" placement=\"top\" arrow>\n <IconButton\n sx={{\n padding: 0.5,\n '&:focus': {\n outline: 'none'\n }\n }}\n onClick={() => (callback ? callback() : refetchIntegrationsData())}\n >\n {buttonLoading ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n <RefreshIcon fontSize=\"small\" sx={{ color: '#666666' }} />\n )}\n </IconButton>\n </Tooltip>\n );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Stack, Skeleton } from '@mui/material';\nimport OldIntegrationsLink from './OldIntegrationsLink';\nimport ExportButton from './ExportButton';\nimport OnboardExpressLogo from './Logos/OnboardExpressLogo.png';\nimport XrefLogo from './Logos/XrefLogo.png';\nimport CognologyLogo from './Logos/CognologyLogo.png';\nimport MvsLogo from './Logos/MvsLogo.png';\nimport ReferooLogo from './Logos/ReferooLogo.png';\nimport FoundULogo from './Logos/FoundULogo.png';\nimport TestgridLogo from './Logos/TestgridLogo.png';\nimport HronboardLogo from './Logos/HronboardLogo.png';\nimport RoublerLogo from './Logos/RoublerLogo.png';\nimport SparkHireLogo from './Logos/SparkHireLogo.png';\nimport Fit2WorkLogo from './Logos/Fit2WorkLogo.png';\nimport AlayaCareLogo from './Logos/AlayaCareLogo.png';\nimport { ApplicationState, ApplicationAction } from '../types';\nimport { ModalType } from '../config';\nimport OnboardExpress from './Modals/OnboardExpress';\nimport XRef from './Modals/XRef';\nimport Cognology from './Modals/Cognology/Cognology';\nimport Mvs from './Modals/Mvs';\nimport Referoo from './Modals/Referoo';\nimport FoundU from './Modals/FoundU';\nimport Testgrid from './Modals/Testgrid';\nimport Hronboard from './Modals/Hronboard';\nimport Roubler from './Modals/Roubler';\nimport SparkHire from './Modals/SparkHire';\nimport Fit2Work from './Modals/Fit2Work';\nimport AlayaCare from './Modals/AlayaCare';\nimport { ScoutOnboardLogo } from './Logos/Logos';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { styles } from './styles';\nimport { IApplication } from '../types';\nimport UnusualActivity from './Modals/UnusualActivity';\nimport AlreadyExportedModal, { AlreadyExportedModalProps } from './Modals/AlreadyExportedModal';\nimport XrefRecord from './Records/XrefRecord';\nimport ReferooRecord from './Records/ReferooRecord';\nimport MvsRecord from './Records/MvsRecord';\nimport Fit2WorkRecord from './Records/Fit2WorkRecord';\nimport TestgridRecord from './Records/TestgridRecord';\nimport SparkHireRecord from './Records/SparkHireRecord';\nimport { useGetIntegrationsData, useGetCognologyData } from '../helper';\nimport CognologyAfterApprovalModal from './Modals/Cognology/CognologyAfterApprovalModal';\nimport CognologyWaitingForApprovalModal from './Modals/Cognology/CognologyWaitingForApprovalModal';\nimport { isIntegrationAvailable } from './helper';\nimport FoundURecord from './Records/FoundURecord';\n\nexport default function IntegrationsTab({\n ApplicationState,\n dispatch,\n newIntegrationEnabled\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n newIntegrationEnabled: boolean;\n}) {\n const [alreadyExportedModalOpen, setAlreadyExportedModalOpen] =\n useState<AlreadyExportedModalProps>({\n revolve: false,\n referoo: false,\n hro: false,\n sparkhire: false,\n cognology: false,\n foundu: false\n });\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n const urlParams = new URL(window.location.href);\n\n const { integrationsData, loadingIntegrationsData } = useGetIntegrationsData({\n applicationId: application?.id,\n dispatch\n });\n\n const { cognologyData } = useGetCognologyData({\n applicationId: application?.id,\n dispatch,\n enabled:\n application?.integrations.cognology &&\n !!integrationsData &&\n !integrationsData.cognology_login_url\n });\n\n const cognologyAction = () => {\n if (integrationsData?.cognology_record_exported) {\n setAlreadyExportedModalOpen({ ...alreadyExportedModalOpen, cognology: true });\n } else {\n if (integrationsData?.cognology_record_exported === null) {\n dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.COGNOLOGY });\n } else {\n if (cognologyData?.record.status === 'approved') {\n dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.COGNOLOGY_APPROVED });\n } else {\n dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.COGNOLOGY_WAITING_FOR_APPROVAL });\n }\n }\n }\n };\n\n if (!application || loadingIntegrationsData)\n return (\n <Stack sx={{ rowGap: 2 }}>\n {[...Array(2)].map((_, index) => (\n <Skeleton key={index} sx={{ transform: 'unset', height: '50px' }} animation=\"wave\" />\n ))}\n </Stack>\n );\n\n return (\n <Stack sx={{ rowGap: 5 }}>\n <Stack sx={{ flexDirection: 'row', columnGap: 4, flexWrap: 'wrap', rowGap: 4 }}>\n {isIntegrationAvailable('revolve', newIntegrationEnabled, permissions, application) && (\n <Stack sx={styles.integrationCard}>\n <Stack\n sx={styles.integrationCardImageContainer}\n component=\"img\"\n src={OnboardExpressLogo}\n />\n <ExportButton\n onClick={() =>\n application.revolve_record_id\n ? setAlreadyExportedModalOpen({ ...alreadyExportedModalOpen, revolve: true })\n : dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ONBOARD_EXPRESS })\n }\n />\n </Stack>\n )}\n {isIntegrationAvailable(\n 'scoutOnboard',\n newIntegrationEnabled,\n permissions,\n application\n ) && (\n <Stack sx={styles.integrationCard}>\n <Stack sx={styles.integrationCardImageContainer}>\n <ScoutOnboardLogo />\n </Stack>\n <ExportButton\n onClick={() =>\n dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.EXPORT_TO_ONBOARD })\n }\n />\n </Stack>\n )}\n {isIntegrationAvailable('xref', newIntegrationEnabled, permissions, application) && (\n <Stack sx={styles.integrationCard}>\n <Stack\n sx={{ ...styles.integrationCardImageContainer, width: '4rem' }}\n component=\"img\"\n src={XrefLogo}\n />\n <ExportButton\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.XREF })}\n />\n </Stack>\n )}\n {isIntegrationAvailable('mvs', newIntegrationEnabled, permissions, application) && (\n <Stack sx={styles.integrationCard}>\n <Stack\n sx={{ ...styles.integrationCardImageContainer, width: '4rem' }}\n component=\"img\"\n src={MvsLogo}\n />\n <ExportButton\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.MVS })}\n />\n </Stack>\n )}\n {isIntegrationAvailable('referoo', newIntegrationEnabled, permissions, application) && (\n <Stack sx={styles.integrationCard}>\n <Stack\n sx={{ ...styles.integrationCardImageContainer, width: '5.5rem' }}\n component=\"img\"\n src={ReferooLogo}\n />\n <ExportButton\n onClick={() => {\n if (integrationsData?.referoo_login_url)\n window.open(integrationsData?.referoo_login_url);\n else {\n integrationsData?.referoo_record\n ? setAlreadyExportedModalOpen({ ...alreadyExportedModalOpen, referoo: true })\n : dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.REFEROO });\n }\n }}\n />\n </Stack>\n )}\n {isIntegrationAvailable('foundU', newIntegrationEnabled, permissions, application) && (\n <Stack sx={styles.integrationCard}>\n <Stack\n sx={{ ...styles.integrationCardImageContainer, width: '3.5rem' }}\n component=\"img\"\n src={FoundULogo}\n />\n <ExportButton\n onClick={() => {\n integrationsData?.foundu_record\n ? setAlreadyExportedModalOpen({ ...alreadyExportedModalOpen, foundu: true })\n : dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.FOUNDU });\n }}\n />\n </Stack>\n )}\n {isIntegrationAvailable('testGrid', newIntegrationEnabled, permissions, application) && (\n\n <Stack sx={styles.integrationCard}>\n <Stack sx={{ padding: '8px 0px', width: '5rem' }} component=\"img\" src={TestgridLogo} />\n <ExportButton\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.TESTGRID })}\n />\n </Stack>\n )}\n {isIntegrationAvailable('hro', newIntegrationEnabled, permissions, application) && (\n <Stack sx={styles.integrationCard}>\n <Stack sx={{ padding: '8px 0px', width: '7rem' }} component=\"img\" src={HronboardLogo} />\n <ExportButton\n onClick={() =>\n integrationsData?.hro_record_exported\n ? setAlreadyExportedModalOpen({ ...alreadyExportedModalOpen, hro: true })\n : dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.HRONBOARD })\n }\n />\n </Stack>\n )}\n {isIntegrationAvailable('cognology', newIntegrationEnabled, permissions, application) && (\n <Stack sx={styles.integrationCard}>\n <Stack\n sx={{ ...styles.integrationCardImageContainer, width: '6rem', padding: '8px 0px' }}\n component=\"img\"\n src={CognologyLogo}\n />\n <ExportButton\n onClick={() =>\n integrationsData?.cognology_login_url\n ? window.open(integrationsData?.cognology_login_url)\n : cognologyAction()\n }\n />\n </Stack>\n )}\n {isIntegrationAvailable('roubler', newIntegrationEnabled, permissions, application) && (\n <Stack sx={styles.integrationCard}>\n <Stack\n sx={{ ...styles.integrationCardImageContainer, padding: '8px 0px', width: '6rem' }}\n component=\"img\"\n src={RoublerLogo}\n />\n <ExportButton\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ROUBLER })}\n />\n </Stack>\n )}\n {isIntegrationAvailable('sparkhire', newIntegrationEnabled, permissions, application) && (\n <Stack sx={styles.integrationCard}>\n <Stack\n sx={{ ...styles.integrationCardImageContainer, padding: '12px 0px', width: '7rem' }}\n component=\"img\"\n src={SparkHireLogo}\n />\n <ExportButton\n onClick={() =>\n integrationsData?.sparkhire_record\n ? setAlreadyExportedModalOpen({ ...alreadyExportedModalOpen, sparkhire: true })\n : dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.SPARKHIRE })\n }\n />\n </Stack>\n )}\n {isIntegrationAvailable('fit2work', newIntegrationEnabled, permissions, application) && (\n <Stack sx={styles.integrationCard}>\n <Stack\n sx={{ ...styles.integrationCardImageContainer, padding: '12px 0px', width: '6rem' }}\n component=\"img\"\n src={Fit2WorkLogo}\n />\n <ExportButton\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.FIT2WORK })}\n />\n </Stack>\n )}\n {isIntegrationAvailable('alayacare', newIntegrationEnabled, permissions, application) && (\n <Stack sx={styles.integrationCard}>\n <Stack\n sx={{ ...styles.integrationCardImageContainer, padding: '8px 0px', width: '6rem' }}\n component=\"img\"\n src={AlayaCareLogo}\n />\n <ExportButton\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ALAYACARE })}\n />\n </Stack>\n )}\n </Stack>\n {isIntegrationAvailable('referoo', newIntegrationEnabled, permissions, application) &&\n integrationsData?.referoo_record && <ReferooRecord dispatch={dispatch} />}\n {isIntegrationAvailable('xref', newIntegrationEnabled, permissions, application) &&\n !!integrationsData?.xref_records.length && <XrefRecord dispatch={dispatch} />}\n {isIntegrationAvailable('mvs', newIntegrationEnabled, permissions, application) &&\n !!integrationsData?.mvs_requests.length && <MvsRecord />}\n {isIntegrationAvailable('fit2work', newIntegrationEnabled, permissions, application) &&\n !!integrationsData?.fit2_work_records.length && <Fit2WorkRecord dispatch={dispatch} />}\n {isIntegrationAvailable('sparkhire', newIntegrationEnabled, permissions, application) && (\n <SparkHireRecord />\n )}\n {isIntegrationAvailable('testGrid', newIntegrationEnabled, permissions, application) && (\n <TestgridRecord />\n )}\n {isIntegrationAvailable('foundU', newIntegrationEnabled, permissions, application) &&\n !!integrationsData?.foundu_record && <FoundURecord />}\n <OldIntegrationsLink />\n {modalsOpen === ModalType.ONBOARD_EXPRESS && (\n <OnboardExpress ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.XREF && (\n <XRef ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {(modalsOpen === ModalType.COGNOLOGY || modalsOpen === ModalType.EDIT_COGNOLOGY) && (\n <Cognology ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.COGNOLOGY_WAITING_FOR_APPROVAL && (\n <CognologyWaitingForApprovalModal\n open={modalsOpen === ModalType.COGNOLOGY_WAITING_FOR_APPROVAL}\n onClose={() => {\n dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n urlParams.search = '';\n window.history.pushState(null, '', urlParams.href);\n }}\n />\n )}\n {modalsOpen === ModalType.COGNOLOGY_APPROVED && (\n <CognologyAfterApprovalModal\n open={modalsOpen === ModalType.COGNOLOGY_APPROVED}\n onClose={() => dispatch({ type: 'SET_MODALS_OPEN', payload: null })}\n dispatch={dispatch}\n />\n )}\n {modalsOpen === ModalType.MVS && (\n <Mvs ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.REFEROO && (\n <Referoo ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.FOUNDU && (\n <FoundU ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.TESTGRID && (\n <Testgrid ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.HRONBOARD && (\n <Hronboard ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.ROUBLER && (\n <Roubler ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.SPARKHIRE && (\n <SparkHire ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.FIT2WORK && (\n <Fit2Work ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n <AlayaCare ApplicationState={ApplicationState} dispatch={dispatch} />\n <AlreadyExportedModal\n alreadyExportedModalOpen={alreadyExportedModalOpen}\n onClose={() =>\n setAlreadyExportedModalOpen({\n revolve: false,\n referoo: false,\n hro: false,\n sparkhire: false,\n cognology: false,\n foundu: false\n })\n }\n dispatch={dispatch}\n buttonName={alreadyExportedModalOpen.cognology ? 'Make changes and re-export' : undefined}\n callback={() =>\n alreadyExportedModalOpen.cognology\n ? dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.COGNOLOGY })\n : undefined\n }\n />\n {modalsOpen === ModalType.UNUSUAL_ACTIVITY && (\n <UnusualActivity ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n </Stack>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport {\n Autocomplete,\n Button,\n Checkbox,\n FormControlLabel,\n InputLabel,\n Stack,\n TextField\n} from '@mui/material';\nimport { Delete as DeleteIcon } from '@mui/icons-material';\nimport { ApplicationAction, ApplicationState, IApplication, IApplicationTask } from '../types';\nimport dayjs from 'dayjs';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport {\n FormTextField,\n MultilineFormTextField\n} from '../../Components/CustomUIElements/FormTextField';\nimport { SingleDateTimePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { classes as importClasses } from '../../../ScoutCalendar/CreateEvent/EventProgress/styles';\nimport FormSelectWithIconField from '../../Components/CustomUIElements/FormSelectWithIconField';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { IAssignableUsers } from '../../ApprovalForms/types';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { styles } from '../../Candidate/styles';\nimport { useGetAssignableUsers } from '../helper';\nimport { ModalType } from '../config';\n\nconst priorities = [\n { label: 'Low', value: '1', color: '#8CCF95' },\n { label: 'Normal', value: '0', color: '#E6A052' },\n { label: 'High', value: '-1', color: '#E37D7A' }\n];\n\nexport default function AddEditTask({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen, editedTask } = ApplicationState;\n const [subject, setSubject] = useState<string>(editedTask?.subject || '');\n const [note, setNote] = useState<string>(editedTask?.note || '');\n const [date, setDate] = useState<Date>(new Date(editedTask?.due_at || Date.now()));\n const [priority, setPriority] = useState<{ label: string; value: string; color: string }>(\n priorities.find((p) => p.label === editedTask?.priority) || priorities[0]\n );\n const [assignedUser, setAssignedUser] = useState<IAssignableUsers | null>(null);\n const [taskCompleted, setTaskCompleted] = useState<boolean>(!!editedTask?.completed_at);\n const [deleteTaskDialogOpen, setDeleteTaskDialogOpen] = useState<boolean>(false);\n const [errors, setErrors] = useState<Record<string, string>>({});\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const tasks = queryClient.getQueryData<IApplicationTask[]>(['tasks']);\n\n const { assignableUsers, loadingAssignableUsers } = useGetAssignableUsers({ dispatch });\n\n const { mutate: addTask, isLoading: addingTask } = useMutation({\n mutationFn: async () => {\n if (application && assignedUser) {\n const { res } = await Api.addTask(application.job.id, application.id, {\n subject,\n note,\n priority: Number(priority.value),\n due_at: dayjs(date).toISOString(),\n user_id: assignedUser.id\n });\n return res;\n }\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Task has been successfully added`, state: 'success' }\n });\n tasks && queryClient.setQueryData(['tasks'], [...tasks, res]);\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error adding a task, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const { mutate: updateTask, isLoading: updatingTask } = useMutation({\n mutationFn: async () => {\n if (application && editedTask) {\n const { res } = await Api.updateApplicationTask(\n application.job.id,\n application.id,\n editedTask.id,\n {\n subject,\n note,\n priority: Number(priority.value),\n due_at: dayjs(date).toISOString(),\n completed_at: taskCompleted ? dayjs().toISOString() : null\n }\n );\n return res;\n }\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Task has been successfully updated`, state: 'success' }\n });\n if (tasks) {\n const newTasks = [...tasks];\n const index = tasks.findIndex((t) => t.id === editedTask?.id);\n newTasks[index] = res;\n queryClient.setQueryData(['tasks'], newTasks);\n }\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in updating task, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const { mutate: deleteTask, isLoading: deletingTask } = useMutation({\n mutationFn: async () => {\n if (application && editedTask) {\n Api.deleteTask(application?.job.id, application?.id, editedTask.id);\n }\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Task has been successfully deleted`, state: 'success' }\n });\n const newTasks = tasks?.filter((task) => task.id !== editedTask?.id);\n queryClient.setQueryData(['tasks'], newTasks);\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in deleting task, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const handleClose = () => {\n dispatch({ type: 'SET_EDITED_TASK', payload: null });\n dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n };\n\n const DeleteDialogDescription = () => (\n <Stack>\n <Stack>Are you sure you want to delete the current task?</Stack>\n <Stack>{`You will lose the task you've made.`}</Stack>\n </Stack>\n );\n\n const validateInputs = () => {\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!subject.trim()) inputErrors.subject = 'Subject can not be empty';\n if (!note.trim()) inputErrors.note = 'Note can not be empty';\n if (!assignedUser && !editedTask) inputErrors.user = 'Assigned user can not be empty';\n setErrors(inputErrors);\n return !Object.keys(inputErrors).length;\n };\n\n const handleSubmit = () => {\n if (validateInputs()) {\n editedTask ? updateTask() : addTask();\n }\n };\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.ADD_EDIT_TASK}\n label=\"Add/Edit application task\"\n handleClose={handleClose}\n styleOverrides={styles.modalContainer}\n closeIconId={`close-${editedTask ? 'edit' : 'add'}-task-button`}\n >\n <Stack sx={styles.modalContent}>\n <Stack sx={styles.modalTitle}>{editedTask ? 'Edit' : 'Add'} task</Stack>\n <Stack sx={styles.modalCandidateName}>\n {`Application #${application?.id} - ${application?.candidate.firstname} ${application?.candidate.lastname}`}\n </Stack>\n <FormTextField\n label=\"Subject\"\n value={subject}\n required\n onChange={(v) => setSubject(v.target.value)}\n error={errors.subject}\n />\n <MultilineFormTextField\n label=\"Note\"\n value={note}\n onChange={(e) => setNote(e.target.value)}\n fullWidth\n rows={5}\n required\n error={errors.note}\n />\n <Stack sx={{ flexDirection: 'row', columnGap: 5 }}>\n <Stack sx={{ width: '45%', flexDirection: 'row', columnGap: 2 }}>\n <Stack>\n <SingleDateTimePicker\n inputStyles={importClasses.datePicker}\n label={\n <InputLabel htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n Expiry date and time<span>*</span>\n </InputLabel>\n }\n value={date}\n onChange={(value) => value && setDate(value)}\n />\n </Stack>\n </Stack>\n <FormSelectWithIconField\n options={priorities}\n defaultValue={priority.value}\n onChange={(value) =>\n setPriority(priorities.find((p) => p.value === value) || priorities[0])\n }\n label={'Priority'}\n styles={styles.prioritySelectStyling}\n />\n </Stack>\n {!editedTask && (\n <Autocomplete\n disablePortal\n id=\"add-application-task-assigned-users-select\"\n options={assignableUsers || []}\n getOptionLabel={(option: IAssignableUsers) =>\n `${option?.firstname} ${option?.lastname}`\n }\n value={assignedUser}\n sx={{ ...sharedClasses.formAutocomplete, paddingTop: 3, width: '45%' }}\n loading={loadingAssignableUsers}\n loadingText=\"Loading assignable users...\"\n ListboxProps={{ style: styles.listboxProps }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Assign to user\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n error={!assignedUser}\n helperText={!assignedUser && errors.user}\n />\n )}\n onChange={(event, value) => setAssignedUser(value)}\n />\n )}\n {editedTask && (\n <FormControlLabel\n control={\n <Checkbox\n id=\"mark-as-complete-check-box\"\n sx={sharedClasses.formCheckbox}\n checked={taskCompleted}\n onClick={() => setTaskCompleted(!taskCompleted)}\n disableRipple\n />\n }\n label=\"Mark as complete\"\n sx={sharedClasses.checkboxLabel}\n />\n )}\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n {editedTask && (\n <Button\n id=\"delete-task-button\"\n sx={{\n ...sharedClasses.genericRedButton,\n marginTop: '10px',\n columnGap: 0.5,\n minWidth: '135px'\n }}\n onClick={() => setDeleteTaskDialogOpen(true)}\n >\n <DeleteIcon />\n Delete task\n </Button>\n )}\n <ModalFooterButtons\n primaryButtonText={editedTask ? 'Save' : 'Submit'}\n primaryButtonCallback={handleSubmit}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n isLoading={addingTask || updatingTask}\n primaryButtonID={`${editedTask ? 'save' : 'submit'}-task-button`}\n secondaryButtonID={`cancel-${editedTask ? 'edit' : 'add'}-task-button`}\n primaryButtonMinWidth={editedTask ? '75px' : '90px'}\n />\n </Stack>\n </Stack>\n <GenericDialog\n isDialogOpen={deleteTaskDialogOpen}\n setDialogOpen={setDeleteTaskDialogOpen}\n title={`Delete task?`}\n description={DeleteDialogDescription()}\n buttonCallback={() => deleteTask()}\n callbackLoading={deletingTask}\n buttonText=\"Delete\"\n secondaryButtonText=\"Cancel\"\n url=\"\"\n primaryButtonId=\"confirm-delete-task-button\"\n secondaryButtonId=\"cancel-delete-task-button\"\n />\n </StyledModal>\n );\n}\n","import React, { Dispatch, useRef, useState } from 'react';\nimport { Button, CircularProgress, Stack } from '@mui/material';\nimport { NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication, IFormsOption } from '../types';\nimport { ModalType } from '../config';\nimport { styles } from './styles';\nimport { IError } from '../../SmartForms/types';\nimport { createQuestionErrorsObject } from '../../ApprovalForms/NewApproval/NewApproval';\nimport FormsDropdown from './Components/FormsDropdown';\nimport { validateForm } from '../SmartFormsTab/validate-form-submission';\nimport { getAnswerAttributes } from '../SmartFormsTab/get-answer-attributes';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { classes } from '../../Job/Applications/styles';\nimport QuestionsAndRatings from '../OverviewTab/QuestionsAndRatings';\nimport { ExitConfirmationModal } from './ExitConfirmationModal';\n\nexport default function AddForm({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const [selectedForm, setSelectedForm] = useState<IFormsOption | null>(null);\n const [ratings, setRatings] = useState<Record<number, number>>({});\n const [answers, setAnswers] = useState<\n Record<number, string | number | Record<string, string | boolean>>\n >({});\n const [questionErrors, setQuestionErrors] = useState<Record<number, string>>({});\n const [step, setStep] = useState<number>(1);\n const [exitConfirmation, setExitConfirmation] = useState<boolean>(false);\n\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const questionsRef = useRef<Array<HTMLDivElement | null>>([]);\n\n const {\n data: formQuestions,\n isFetching: fetchingFormQuestions,\n refetch: fetchFormQuestions\n } = useQuery({\n queryKey: ['form'],\n queryFn: async () => {\n if (selectedForm) {\n const { res } = await Api.getFormQuestions({\n form_id: selectedForm.id,\n enabled_only: true\n });\n return res.fields;\n }\n },\n onSuccess: (res) => {\n res && setQuestionErrors(createQuestionErrorsObject(res));\n setStep(2);\n },\n onError: (error: IError) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: error.errors.join(', '), state: 'error' }\n }),\n enabled: false\n });\n\n const answersAttributes: any = {};\n if (formQuestions) {\n formQuestions.forEach((question, index) => {\n answersAttributes[index] = getAnswerAttributes(question, index, answers, ratings);\n });\n }\n\n const { mutate: addForm, isLoading: addingForm } = useMutation({\n mutationFn: async () => {\n if (application && selectedForm) {\n const { res } = await Api.addForm(\n application.job.id,\n application.id,\n selectedForm.id,\n answersAttributes\n );\n return res;\n }\n },\n onSuccess: (res) => {\n queryClient.invalidateQueries(['formResponses'], { exact: true });\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n handleClose();\n },\n onError: () =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Failed to create form response`, state: 'error' }\n })\n });\n\n const handleClose = () => {\n queryClient.removeQueries(['form']);\n queryClient.removeQueries(['formResponses']);\n dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n };\n\n const handleSubmit = () => {\n step == 1\n ? fetchFormQuestions()\n : formQuestions &&\n validateForm(formQuestions, answers, setQuestionErrors, questionsRef) &&\n addForm();\n };\n\n const buttonName = step === 1 ? 'Select' : 'Add form response';\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.ADD_FORM}\n label=\"Add form response modal\"\n handleClose={() => setExitConfirmation(true)}\n styleOverrides={{ ...styles.modalStyleOverrides, ...(step === 1 ? {} : styles.wideModal) }}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>{step === 1 ? 'Add form' : selectedForm?.name}</Stack>\n {step === 1 ? (\n <Stack sx={{ paddingBottom: 5, overflow: 'auto' }}>\n <FormsDropdown\n applicationId={application?.id}\n selectedForm={selectedForm}\n setSelectedForm={setSelectedForm}\n dispatch={dispatch}\n />\n </Stack>\n ) : (\n <QuestionsAndRatings\n questions={formQuestions}\n questionErrors={questionErrors}\n setQuestionErrors={setQuestionErrors}\n ratings={ratings}\n setRatings={setRatings}\n setAnswers={setAnswers}\n questionsRef={questionsRef}\n />\n )}\n <Stack\n sx={{ flexDirection: 'row', justifyContent: 'flex-end', columnGap: 1, paddingTop: 1 }}\n >\n <Button sx={classes.modalCancelButton} onClick={() => setExitConfirmation(true)}>\n Cancel\n </Button>\n {step === 2 && (\n <Button\n onClick={() => setStep(1)}\n sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n >\n <NavigateBeforeIcon />\n </Button>\n )}\n <Button\n sx={{\n ...sharedClasses.genericButton,\n '&.Mui-disabled ': { background: '#DDDDDD', color: '#939393' },\n minWidth: step === 1 ? '95px' : '165px',\n minHeight: '41px'\n }}\n onClick={handleSubmit}\n disabled={!selectedForm}\n >\n {fetchingFormQuestions || addingForm ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n buttonName\n )}\n </Button>\n </Stack>\n </Stack>\n <ExitConfirmationModal\n exitConfirmation={exitConfirmation}\n setExitConfirmation={setExitConfirmation}\n handleClose={handleClose}\n />\n </StyledModal>\n );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Box, Button, Stack } from '@mui/material';\nimport { NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { ControlledStaticDatePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { classes } from '../../Job/Applications/styles';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport API from '../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { ModalType } from '../config';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { styles } from './styles';\nimport SmsTemplateComponent from '../../Components/CustomUIElements/SmsTemplateComponent';\nimport { useGetEmailTemplate, useGetEvents, useGetSmsTemplatePlaceholders } from '../helper';\nimport { useDispatch } from '../../hooks/useDispatch';\nimport EmailsDropdown from './Components/EmailsDropdown';\nimport EmailBodyComponent from './Components/EmailBodyComponent';\nimport NotificationOptionSwitch from './Components/NotificationOptionsSwitch';\nimport { ISmsTemplate } from '../../Job/Applications/Modals/SMSCandidates';\nimport formatToUserTimeZone from '../../utils/formatToUserTimeZone';\n\nexport default function AddToEvent({\n ApplicationState,\n dispatch,\n smsTemplatePermissions\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n smsTemplatePermissions: boolean;\n}) {\n const [selectedDay, setSelectedDay] = useState<Date | null>(new Date());\n const [selectedTimeSlot, setSelectedTimeSlot] = useState<number>(0);\n const [step, setStep] = useState<number>(1);\n const [notification, setNotification] = useState<string>('email');\n const [smsMessage, setSmsMessage] = useState<string>('');\n const [smsTemplate, setSmsTemplate] = useState<ISmsTemplate | null>(null);\n const [selectedEmailTemplate, setSelectedEmailTemplate] = useState<string | null>('');\n const [body, setBody] = useState<string>('');\n const [errors, setErrors] = useState<Record<string, string>>({});\n const { modalsOpen, apiKey } = ApplicationState;\n\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n useGetEmailTemplate({ apiKey, selectedEmailTemplate, setBody, dispatch });\n const { displayError, displaySuccess } = useDispatch(dispatch);\n const { events, loadingEvents } = useGetEvents({ apiKey, dispatch });\n const { placeholders } = useGetSmsTemplatePlaceholders({ kind: 'event', dispatch });\n\n const { mutate: sendEmail, isLoading: sendingEmail } = useMutation({\n mutationFn: async () => {\n if (!selectedEmailTemplate || !application) return;\n const res = await API.sendEmail(\n application.job.id,\n selectedTimeSlot,\n Number(selectedEmailTemplate.split(' -')[0]),\n body,\n [application.id]\n );\n return res;\n },\n onSuccess: () => {\n queryClient.invalidateQueries(['application events'], { exact: true });\n displaySuccess('Add to event email notification has been sent successfully');\n dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n },\n onError: (error: { success: boolean; message: string }) => displayError(error.message)\n });\n\n const { mutate: sendSms, isLoading: sendingSms } = useMutation({\n mutationFn: async () => {\n if (application) {\n const res = await API.addToEventSms(\n application.job.id,\n selectedTimeSlot,\n [application.id],\n smsMessage,\n smsTemplate?.id\n );\n if (res.success !== 0) {\n queryClient.invalidateQueries(['application events'], { exact: true });\n displaySuccess('Add to event SMS notification has been sent successfully');\n dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n } else {\n displayError('There is an error in sending SMS notification');\n }\n return res;\n }\n }\n });\n\n const selectedDayEvents = events?.filter((e) => {\n if (!selectedDay) return false;\n return formatToUserTimeZone(e.begins_at, 'ymd') === formatToUserTimeZone(selectedDay, 'ymd');\n });\n\n const shouldDisableDate = (date: Date) => {\n if (!events) return true;\n return !events\n .map((e) => formatToUserTimeZone(e.begins_at, 'ymd'))\n .includes(formatToUserTimeZone(date, 'ymd'));\n };\n\n const buttonName = step === 1 ? 'Next' : 'Send';\n\n const eventCandidates = events\n ?.find((e) => e.id === selectedTimeSlot)\n ?.attendees.filter((a) => a.type === 'Candidate')\n .map((c) => c.application_id);\n\n const candidateAlreadyBooked = application && eventCandidates?.includes(application.id);\n\n const validateInput = () => {\n const fieldsErrors: Record<string, string> = {};\n if (notification === 'email') {\n !selectedEmailTemplate && (fieldsErrors.template = 'Must select a template');\n !body.trim() && (fieldsErrors.body = 'Must add email body');\n } else {\n !smsMessage.trim() && (fieldsErrors.sms = 'Must add SMS content');\n }\n setErrors(fieldsErrors);\n return !Object.keys(fieldsErrors).length;\n };\n\n const handleSubmit = () => {\n if (step === 1) {\n setStep(2);\n } else {\n notification === 'email' ? validateInput() && sendEmail() : validateInput() && sendSms();\n }\n };\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.ADD_TO_EVENT}\n label=\"Add to event modal\"\n handleClose={() => dispatch({ type: 'SET_MODALS_OPEN', payload: null })}\n styleOverrides={{ ...styles.modalStyleOverrides, width: '900px' }}\n disableEnforceFocus\n >\n <Stack sx={{ width: '100%', height: '100%', overflow: 'auto' }}>\n <Stack id=\"add-to-event-title\" sx={{ ...classes.actionModalHeader, paddingBottom: 3 }}>\n Add to Event\n </Stack>\n {step === 1 ? (\n <Stack sx={{ flexGrow: 1, rowGap: 1, overflow: 'auto', paddingBottom: 10 }}>\n <Stack sx={{ paddingLeft: 1, rowGap: 0.5 }}>\n <Stack sx={{ color: '#939393' }}>Timeslot availability:</Stack>\n <Stack>\n {selectedTimeSlot ? (\n <Stack\n sx={{\n ...styles.timeslotAvailabilityButton,\n background: candidateAlreadyBooked ? '#E5E5E5' : '#EFFDF3',\n color: candidateAlreadyBooked ? '#939393' : '#8CCF95'\n }}\n >\n {candidateAlreadyBooked ? 'BOOKED' : 'AVAILABLE'}\n </Stack>\n ) : (\n <Stack sx={{ padding: '6px 0px' }}>-</Stack>\n )}\n </Stack>\n </Stack>\n <Stack\n sx={{\n flexDirection: 'row',\n justifyContent: 'space-between'\n }}\n >\n <Box sx={classes.calendar}>\n <ControlledStaticDatePicker\n displayStaticWrapperAs=\"desktop\"\n views={['day']}\n value={selectedDay}\n disablePast\n onChange={(value) => setSelectedDay(value)}\n shouldDisableDate={shouldDisableDate}\n />\n </Box>\n <Box sx={classes.dailyTimeslots}>\n <Box sx={{ ...classes.dailyTimeslotsHeader, marginTop: 2, marginBottom: '20px' }}>\n Choose available timeslot\n </Box>\n {loadingEvents ? (\n <Box sx={classes.noTimeslots}>\n <CircularProgress size={32} />\n </Box>\n ) : (\n <Stack sx={classes.addToEventTimeslotsContainer}>\n {selectedDayEvents?.map((e) => {\n const candidates = e.attendees.filter((a) => a.type === 'Candidate');\n const fullyBooked = candidates.length === e.max_candidates;\n return (\n <Stack\n key={e.id}\n sx={{\n ...classes.addToEventTimeslot,\n border: `1px solid ${e.id === selectedTimeSlot ? '#5BC4C0' : '#DDDDDD'}`,\n color: `${fullyBooked ? '#939393' : '#666666'}`,\n background: `${fullyBooked ? '#EAEEF0' : 'inherit'}`,\n cursor: `${fullyBooked ? 'unset' : 'pointer'}`\n }}\n onClick={() => {\n if (fullyBooked) return;\n setSelectedTimeSlot(e.id);\n }}\n >\n <Stack sx={{ rowGap: '4px' }}>\n <Stack sx={{ fontSize: '14px' }}>\n {formatToUserTimeZone(e.begins_at, 'onlyTime')}\n </Stack>\n <Stack sx={{ fontSize: '12px' }}>{e.subject}</Stack>\n </Stack>\n <Stack sx={{ color: `${fullyBooked ? '#939393' : '#084D6D'}` }}>\n {candidates.length}/{e.max_candidates} BOOKED\n </Stack>\n </Stack>\n );\n })}\n </Stack>\n )}\n </Box>\n </Stack>\n </Stack>\n ) : (\n <Stack sx={classes.addToEventSecondStepContainer}>\n <NotificationOptionSwitch\n setNotification={(value) => {\n setNotification(value);\n setErrors({});\n }}\n notification={notification}\n />\n {notification === 'email' ? (\n <Stack sx={{ paddingTop: 4, rowGap: 3 }}>\n <EmailsDropdown\n apiKey={apiKey}\n selectedEmailTemplate={selectedEmailTemplate}\n setSelectedEmailTemplate={setSelectedEmailTemplate}\n setBody={setBody}\n dispatch={dispatch}\n error={errors.template}\n required\n type=\"no_interview_urls\"\n />\n <EmailBodyComponent body={body} setBody={setBody} error={errors.body} />\n </Stack>\n ) : (\n <SmsTemplateComponent\n smsMessageError={errors.sms}\n {...{\n smsTemplatePermissions,\n smsMessage,\n setSmsMessage,\n smsTemplate,\n setSmsTemplate,\n dispatch,\n placeholders\n }}\n />\n )}\n </Stack>\n )}\n <Box sx={{ ...classes.modalFooter, columnGap: 1, paddingTop: 2 }}>\n <Button\n id=\"close-add-to-event-modal-button\"\n sx={classes.modalCancelButton}\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: null })}\n >\n Cancel\n </Button>\n {step !== 1 && (\n <Button\n onClick={() => setStep(1)}\n sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n >\n <NavigateBeforeIcon />\n </Button>\n )}\n <Button\n id=\"add-to-event-submit-button\"\n type=\"submit\"\n sx={{\n ...sharedClasses.genericButton,\n '&.Mui-disabled ': { background: '#DDDDDD', color: '#939393' }\n }}\n onClick={handleSubmit}\n disabled={step === 1 ? !selectedTimeSlot || candidateAlreadyBooked : false}\n >\n {sendingSms || sendingEmail ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n buttonName\n )}\n </Button>\n </Box>\n </Stack>\n </StyledModal>\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport {\n Box,\n Button,\n CircularProgress,\n Modal,\n Slider,\n Stack,\n styled,\n Typography\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from '../../Components/Modals/styles';\nimport {\n ApplicationAction,\n ApplicationState,\n IApplication,\n IAttachment,\n IVideoInterview\n} from '../types';\nimport { AttachmentType } from '../config';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\nimport TimestampTable from './Components/TimestampTable';\nimport ImagePreview from '../OverviewTab/Attachments/ImagePreview';\nimport VideoPreview from '../OverviewTab/Attachments/VideoPreview';\nimport AudioPreview from '../OverviewTab/Attachments/AudioPreview';\nimport TextPreview from '../OverviewTab/Attachments/TextPreview';\nimport PdfPreview from '../OverviewTab/Attachments/PdfPreview';\nimport WordPreview from '../OverviewTab/Attachments/WordPreview';\nimport { getAttachmentType } from '../../utils/attachment-type';\nimport { VIDEO_INTERVIEW_DISPLAY_NAME, VIDEO_INTERVIEW_SOURCE_INDEX } from '../config';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { ZoomInSVG, ZoomOutSVG } from '../OverviewTab/Icons';\nimport { theme } from '../../../../components/ThemeContext/ThemeObject';\nimport { useGesture } from '@use-gesture/react';\nimport { MAX_SCALE, ZOOM_STEP } from '../constants';\nimport { useThrottle } from '../../hooks';\n\ndayjs.extend(duration);\n\nconst CustomSlider = styled(Slider)(() => ({\n ...classes.zoomSlider\n}));\n\nexport default function AttachmentPreviewModal({\n previewOpen,\n dispatch,\n selectedAttachment,\n ApplicationState,\n permissions\n}: {\n previewOpen: boolean;\n dispatch: React.Dispatch<ApplicationAction>;\n selectedAttachment: IAttachment | IVideoInterview;\n ApplicationState: ApplicationState;\n permissions: IUserPermissions | undefined;\n}) {\n const BASE_URL = window.location.origin;\n const videoRef = React.useRef<HTMLVideoElement>(null);\n const [isLoadingPreview, setIsLoadingPreview] = useState<boolean>(true);\n const [currentIndex, setCurrentIndex] = useState<number>(0);\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const isVideoInterview = 'watch_interview_link' in selectedAttachment;\n const attachmentType = getAttachmentType(selectedAttachment as IAttachment);\n const isVideoType = attachmentType === AttachmentType.Video || isVideoInterview;\n const [zoom, setZoom] = useState<number>(0);\n const zoomFactor = 1 + zoom / MAX_SCALE;\n\n const modalTitle = isVideoInterview\n ? VIDEO_INTERVIEW_DISPLAY_NAME\n : selectedAttachment.attached_file_name;\n\n const handleClose = () => {\n dispatch({\n type: 'SET_SELECTED_ATTACHMENT_ACTION',\n payload: { delete: null, preview: null }\n });\n dispatch({ type: 'RESET_TIMESTAMP_STATE' });\n setIsLoadingPreview(true);\n };\n\n const throttledUpdateZoom = useThrottle((delta: number) => {\n setZoom((prevZoom) => {\n const zoomChange = Math.max(2, Math.round(2 * Math.abs(delta * 0.05)));\n const newZoom = delta > 0 ? prevZoom + zoomChange : prevZoom - zoomChange;\n\n return Math.min(MAX_SCALE, Math.max(0, newZoom));\n });\n }, 500);\n\n const onPinchHandler = useGesture({\n onPinch: ({ direction: [pinchDirection] }) => {\n const zoomDirection = pinchDirection < 0 ? -1 : 1;\n\n throttledUpdateZoom(zoomDirection);\n }\n });\n\n const { data: previewData } = useQuery({\n queryKey: ['preview_data', currentIndex],\n queryFn: async () => {\n if (selectedAttachment.id && application && !isVideoInterview) {\n const { res } = await Api.previewAttachment(\n application.job.id,\n application.id,\n selectedAttachment.id,\n currentIndex\n );\n return res;\n }\n },\n onError: (error: { message: string }) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting preview data, ${error}`,\n state: 'error'\n }\n }),\n onSettled: () => setIsLoadingPreview(false),\n enabled:\n !!selectedAttachment &&\n (attachmentType === AttachmentType.Video || attachmentType === AttachmentType.Word) &&\n !isVideoInterview\n });\n\n const hasNoPreview = (attachmentType: AttachmentType | undefined): boolean => {\n if (!attachmentType) return true;\n if (attachmentType === AttachmentType.Word) return !previewData?.data;\n return false;\n };\n\n const handleDisplayContent = () => {\n const shouldDisablePreview = !isLoadingPreview && hasNoPreview(attachmentType);\n\n if (shouldDisablePreview) {\n return <Box sx={classes.noPreview}>No preview available for this file type.</Box>;\n }\n\n const videoInterviewSrc = isVideoInterview\n ? selectedAttachment.sources[VIDEO_INTERVIEW_SOURCE_INDEX]?.url\n : previewData?.video;\n\n const sharedProps = {\n onPinchHandler,\n zoom: zoomFactor,\n selectedAttachment: selectedAttachment as IAttachment\n };\n\n const components: Record<Exclude<AttachmentType, AttachmentType.Video>, JSX.Element | null> = {\n [AttachmentType.Image]: (\n <ImagePreview\n {...sharedProps}\n isLoadingPreview={isLoadingPreview}\n setIsLoadingPreview={setIsLoadingPreview}\n />\n ),\n [AttachmentType.Audio]: (\n <AudioPreview\n selectedAttachment={selectedAttachment as IAttachment}\n setIsLoadingPreview={setIsLoadingPreview}\n />\n ),\n [AttachmentType.Text]: (\n <TextPreview\n selectedAttachment={selectedAttachment as IAttachment}\n dispatch={dispatch}\n setIsLoadingPreview={setIsLoadingPreview}\n />\n ),\n [AttachmentType.Pdf]: (\n <PdfPreview\n onPinchHandler={onPinchHandler}\n selectedAttachment={selectedAttachment as IAttachment}\n setIsLoadingPreview={setIsLoadingPreview}\n zoom={zoomFactor}\n />\n ),\n [AttachmentType.Word]: previewData ? (\n <WordPreview {...sharedProps} previewData={previewData} setCurrentIndex={setCurrentIndex} />\n ) : null\n };\n if (!attachmentType) return null;\n\n if (attachmentType === AttachmentType.Video || isVideoInterview) {\n return (\n <VideoPreview\n selectedAttachment={selectedAttachment}\n videoRef={videoRef}\n source={videoInterviewSrc}\n isLoadingPreview={isLoadingPreview}\n setIsLoadingPreview={setIsLoadingPreview}\n />\n );\n }\n\n return components[attachmentType] ?? null;\n };\n\n const handleZoomDecrement = () => {\n setZoom((prevZoom) => Math.max(0, prevZoom - ZOOM_STEP));\n };\n\n const handleZoomIncrement = () => {\n setZoom((prevZoom) => Math.min(MAX_SCALE, prevZoom + ZOOM_STEP));\n };\n\n const showZoomSlider =\n (attachmentType === AttachmentType.Pdf ||\n (attachmentType === AttachmentType.Word && previewData && 'data' in previewData) ||\n attachmentType === AttachmentType.Image) &&\n !isLoadingPreview;\n\n useEffect(() => {\n const handleWheelEvent = (event: WheelEvent) => {\n if (event.ctrlKey) {\n event.preventDefault();\n }\n };\n document.addEventListener('wheel', handleWheelEvent, { passive: false });\n\n return () => {\n document.removeEventListener('wheel', handleWheelEvent);\n };\n }, []);\n\n return (\n <Modal open={previewOpen} onClose={handleClose} aria-labelledby=\"file-preview-modal\">\n <Stack\n sx={{\n ...classes.attachmentPreviewModal,\n height: 'auto',\n maxHeight: '80vh',\n minHeight: '40vh'\n }}\n justifyContent=\"space-between\"\n >\n <CloseIcon\n id=\"close-attachment-preview-button\"\n onClick={handleClose}\n sx={classes.closeIcon}\n className=\"close-button\"\n />\n <Box id=\"file-preview-modal-title\" sx={classes.attachmentPreviewTitle}>\n {modalTitle}\n </Box>\n <Box sx={classes.attachmentPreviewContent}>\n {handleDisplayContent()}\n {isLoadingPreview && (\n <Box sx={{ ...classes.previewLoader, ...classes.absoluteLoader }}>\n <CircularProgress sx={{ color: '#084D6D' }} />\n Loading Preview\n </Box>\n )}\n </Box>\n {showZoomSlider && (\n <Stack direction=\"row\" spacing={1} sx={classes.zoomSliderContainer}>\n <Typography\n id=\"zoom-slider\"\n variant=\"subtitle1\"\n component=\"div\"\n sx={{ marginRight: `${theme.spacing(0.5)} !important` }}\n >\n {zoom}%\n </Typography>\n\n <CustomSlider\n value={zoom}\n min={0}\n max={MAX_SCALE}\n step={ZOOM_STEP}\n onChange={(_e, value) => setZoom(value as number)}\n aria-labelledby=\"zoom-slider\"\n size=\"small\"\n sx={{ width: '150px' }}\n />\n <Button onClick={handleZoomDecrement} sx={classes.zoomIcons}>\n <ZoomOutSVG />\n </Button>\n <Button onClick={handleZoomIncrement} sx={classes.zoomIcons}>\n <ZoomInSVG />\n </Button>\n </Stack>\n )}\n {permissions?.Applications?.['Download Attachments'] &&\n !isVideoType &&\n !isLoadingPreview && (\n <Box sx={classes.attachmentPreviewActions} marginTop={'auto'}>\n <a\n id=\"download-file-on-preview-button\"\n href={`${BASE_URL}/admin/assets/${selectedAttachment.id}`}\n >\n <Button id=\"download-attachment-button\" sx={classes.downloadButton}>\n Download\n </Button>\n </a>\n </Box>\n )}\n {isVideoType && !isLoadingPreview && (\n <Box width={'100%'} sx={{ paddingY: '20px' }} marginTop={'auto'}>\n <TimestampTable\n selectedAttachment={selectedAttachment}\n dispatch={dispatch}\n videoRef={videoRef}\n ApplicationState={ApplicationState}\n />\n </Box>\n )}\n </Stack>\n </Modal>\n );\n}\n","import React, { Dispatch, SetStateAction, RefObject } from 'react';\nimport { Stack } from '@mui/material';\nimport HtmlEditor from '../../../Components/Utilities/HtmlEditor';\nimport { classes } from '../../../Job/Applications/styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\n\nexport default function EmailBodyComponent({\n body,\n setBody,\n placeholders,\n error,\n innerRef\n}: {\n body: string;\n setBody: Dispatch<SetStateAction<string>>;\n placeholders?: string;\n error?: string;\n innerRef?: RefObject<HTMLDivElement>;\n}) {\n return (\n <Stack sx={{ marginLeft: '3px', rowGap: 0.5 }} ref={innerRef}>\n <Stack sx={{ color: '#838383', flexDirection: 'row', columnGap: '2px' }}>\n Body <Stack sx={{ color: '#E37D7A' }}>*</Stack>\n </Stack>\n <HtmlEditor body={body} onBlur={setBody} maxHeight={400} />\n {error && <Stack sx={sharedClasses.errorBox}>{error}</Stack>}\n <Stack sx={classes.addToEventEmailPlaceholder}>\n Available placeholders are:{' '}\n {placeholders ||\n '{FIRSTNAME}, {LASTNAME}, {USER_FIRSTNAME}, {USER_LASTNAME}, {USER_EMAIL}, {USER_PHONE}, {JOB_TITLE}, {JOB_NUMBER}, {EVENT_NAME}, {EVENT_DATE}, {EVENT_TIME}, {EVENT_DESCRIPTION}, {EVENT_DURATION}, {NEXT_WEEK}'}\n </Stack>\n </Stack>\n );\n}\n","import React, { Dispatch, RefObject, SetStateAction } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction, IEmailTemplateList } from '../../types';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IError } from '../../../SmartForms/types';\nimport VirtualizeGrouped from '../../../Components/CustomUIElements/VirtualizedGroupedAutocomplete';\nimport { styles } from '../styles';\n\nexport default function EmailsDropdown({\n apiKey,\n selectedEmailTemplate,\n setSelectedEmailTemplate,\n setBody,\n dispatch,\n required,\n dropdownLabel,\n error,\n innerRef,\n type,\n endpoint\n}: {\n apiKey: string;\n selectedEmailTemplate: string | null;\n setSelectedEmailTemplate: Dispatch<SetStateAction<string | null>>;\n setBody: Dispatch<SetStateAction<string>>;\n dispatch: Dispatch<ApplicationAction>;\n required?: boolean;\n dropdownLabel?: string;\n error?: string;\n innerRef?: RefObject<HTMLDivElement>;\n type?: string;\n endpoint?: Promise<{ res: IEmailTemplateList }>;\n}) {\n const queryKey = (() => {\n if (endpoint) {\n return ['email templates', endpoint];\n } else if (type) {\n return ['email templates', type];\n } else {\n return ['email templates'];\n }\n })();\n\n const { data: emailTemplates, isLoading: loadingEmailTemplates } = useQuery({\n queryKey,\n queryFn: async () => {\n const { res } = await (endpoint || Api.getEmailLetterheadGroupedEmailTemplates(apiKey, type));\n const emailTemplates: string[] = [];\n res.email_templates.forEach((group: [string, { id: number; name: string }[]]) => {\n group[1].forEach((template) => {\n emailTemplates.push(`${template.id} - ${template.name}@-*@${group[0]}`);\n });\n });\n dispatch({ type: 'SET_EMAIL_PLACEHOLDERS', payload: res.placeholders });\n return emailTemplates;\n },\n onError: (error: IError) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: error.errors.join(', '), state: 'error' }\n })\n });\n\n return (\n <VirtualizeGrouped\n options={emailTemplates || []}\n value={selectedEmailTemplate}\n onChange={(value) => {\n !value && setBody('');\n setSelectedEmailTemplate(value);\n }}\n styles={{\n ...sharedClasses.formAutocomplete,\n marginRight: '1px',\n '&.MuiAutocomplete-root': {\n '& .MuiOutlinedInput-root': {\n paddingRight: '16px !important'\n }\n }\n }}\n label={dropdownLabel || 'Choose email template'}\n loading={loadingEmailTemplates}\n loadingText=\"Loading email templates...\"\n required={required}\n error={error}\n errorStyles={styles.errorMessage}\n innerRef={innerRef}\n />\n );\n}\n","import { Box, Skeleton, Stack } from '@mui/material';\nimport { AccountBox, InsertDriveFile, Star, WatchLater } from '@mui/icons-material';\nimport React from 'react';\nimport { getApplicationRatingColor } from '../../config';\nimport { styles } from '../styles';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nconst WidgetBlock = ({\n icon,\n heading,\n body,\n isLoading\n}: {\n icon: React.ReactNode;\n heading: string;\n body: React.ReactNode;\n isLoading: boolean;\n}) => (\n <Box sx={styles.widgetBlock}>\n <Box sx={styles.widgetBlockIcon}>{icon}</Box>\n <Stack sx={styles.widgetBlockText}>\n <Box sx={styles.widgetBlockHeading}>{heading}</Box>\n <Box sx={styles.widgetBlockBody}>\n {isLoading ? <Skeleton animation=\"wave\" width={80} height={30} /> : body}\n </Box>\n </Stack>\n </Box>\n);\n\nexport const RenderFormResponseBlocks = ({\n ApplicationId,\n name,\n created_at,\n submitted_by,\n rating,\n isLoading,\n expandedRows,\n linkToUser\n}: {\n ApplicationId: number;\n name: string;\n created_at: string;\n submitted_by: string;\n rating: string;\n isLoading: boolean;\n expandedRows: number[];\n linkToUser?: string;\n}) => {\n const formattedCreatedAtTime = formatToUserTimeZone(created_at);\n const BASE_URL = window.location.origin;\n return (\n <Box sx={styles.subWidget}>\n <Box sx={styles.widgetBlockContainer}>\n <WidgetBlock\n icon={<InsertDriveFile fontSize={'small'} />}\n heading=\"Application\"\n body={<Box>{`${ApplicationId} - ${name}`}</Box>}\n isLoading={isLoading && !expandedRows.includes(ApplicationId)}\n />\n <WidgetBlock\n icon={<WatchLater fontSize={'small'} />}\n heading=\"Submitted at\"\n body={<Box>{formattedCreatedAtTime}</Box>}\n isLoading={isLoading}\n />\n <WidgetBlock\n icon={<AccountBox fontSize={'small'} />}\n heading=\"Submitted by\"\n body={\n <Box>\n {linkToUser ? (\n <a id=\"submitted-by-user-link\" href={BASE_URL + linkToUser}>\n {submitted_by}\n </a>\n ) : (\n submitted_by\n )}\n </Box>\n }\n isLoading={isLoading}\n />\n <WidgetBlock\n icon={<Star fontSize={'small'} />}\n heading=\"Rating\"\n body={\n <Box\n sx={{\n color: getApplicationRatingColor(rating === 'N/A' ? 101 : Number(rating)),\n backgroundColor: 'transparent'\n }}\n >\n {!isNaN(parseFloat(rating)) ? Math.ceil(parseFloat(rating)) + '%' : '-'}\n </Box>\n }\n isLoading={isLoading}\n />\n </Box>\n </Box>\n );\n};\n","import React, { Dispatch, SetStateAction, RefObject } from 'react';\nimport { Autocomplete, TextField } from '@mui/material';\nimport { useQuery } from '@tanstack/react-query';\nimport Api from '../../API';\nimport { ApplicationAction } from '../../types';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IError } from '../../../SmartForms/types';\nimport { IFormsOption } from '../../types';\nimport { styles } from '../styles';\n\nexport default function FormsDropdown({\n selectedForm,\n setSelectedForm,\n dispatch,\n dropdownLabel,\n error,\n innerRef,\n applicationId\n}: {\n selectedForm: IFormsOption | null;\n setSelectedForm: Dispatch<SetStateAction<IFormsOption | null>>;\n dispatch: Dispatch<ApplicationAction>;\n dropdownLabel?: string;\n error?: string;\n innerRef?: RefObject<HTMLDivElement>;\n applicationId?: number;\n}) {\n const { data: smartForms, isLoading: loadingSmartForms } = useQuery({\n queryKey: ['smart forms'],\n queryFn: async () => {\n const { res } = await Api.getSmartForms({\n override_limit: true,\n limit: 500,\n enabled: true,\n application_id: applicationId\n });\n return res.smart_forms;\n },\n onError: (error: IError) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: error.errors.join(', '), state: 'error' }\n })\n });\n\n return (\n <Autocomplete\n disablePortal\n options={smartForms || []}\n getOptionLabel={(option) => option.name}\n value={selectedForm}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 5, flexGrow: 1 }}\n loading={loadingSmartForms}\n loadingText=\"Loading forms...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={dropdownLabel || 'Select form'}\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n helperText={error}\n ref={innerRef}\n />\n )}\n onChange={(event, value) => setSelectedForm(value)}\n />\n );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport FormRadioButtonGroup from '../../../Components/CustomUIElements/FormRadioButtonGroup';\n\nexport default function NotificationOptionSwitch({\n setNotification,\n notification\n}: {\n setNotification: Dispatch<SetStateAction<string>>;\n notification: string;\n}) {\n return (\n <FormRadioButtonGroup\n options={[\n {\n label: 'Email',\n value: 'email'\n },\n {\n label: 'SMS',\n value: 'sms'\n }\n ]}\n onChange={(value) => setNotification(value.toString())}\n directionRow\n color={'#939393'}\n defaultValue={notification}\n groupLabel=\"Choose notification preference\"\n />\n );\n}\n","import React, { useRef, useState } from 'react';\nimport {\n ApplicationAction,\n ApplicationState,\n IApplication,\n IAttachment,\n ITimestamp,\n IVideoInterview\n} from '../../types';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { Box, Stack } from '@mui/material';\nimport TableSkeleton from '../../../Components/Multiposter/TableSkeleton';\nimport { TIMESTAMP_REGEX } from '../../../constants';\nimport { useCurrentTime, useTimestampData } from '../../helper';\nimport { TimestampTableForm } from './TimestampTableForm';\nimport { timeStringToSeconds } from '../../config';\nimport { TimestampTableRow } from './TimestampTableRow';\n\nconst TimestampTable = ({\n selectedAttachment,\n dispatch,\n videoRef,\n ApplicationState\n}: {\n selectedAttachment: IAttachment | IVideoInterview;\n dispatch: React.Dispatch<ApplicationAction>;\n videoRef: React.RefObject<HTMLVideoElement>;\n ApplicationState: ApplicationState;\n}) => {\n const [newTimestamp, setNewTimestamp] = useState<ITimestamp>({\n id: null,\n name: '',\n value: ''\n });\n const [currentTime, setCurrentTime] = useState<string>('00:00:00');\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const listRef = useRef<HTMLDivElement>(null);\n const isTimestampValid = (timestamp: ITimestamp): boolean => {\n let isValid = true;\n const errorMessages = {\n nameMessage: '',\n valueMessage: ''\n };\n\n if (!(timestamp.value as string).match(TIMESTAMP_REGEX)) {\n errorMessages.valueMessage = 'Invalid timestamp format - must be HH:MM:SS';\n isValid = false;\n } else if (\n videoRef.current &&\n videoRef.current.duration < timeStringToSeconds(timestamp.value as string)\n ) {\n errorMessages.valueMessage = 'Timestamp is longer than video';\n isValid = false;\n }\n if (timestamp.name.length === 0) {\n errorMessages.nameMessage = 'Timestamp name cannot be empty';\n isValid = false;\n }\n\n if (errorMessages.nameMessage || errorMessages.valueMessage) {\n dispatch({\n type: 'SET_TIMESTAMP_STATE',\n payload: {\n name: 'timestampError',\n value: {\n ...ApplicationState.timeStampState.timestampError,\n ...errorMessages,\n id: timestamp.id\n }\n }\n });\n }\n return isValid;\n };\n\n const {\n timestampData,\n loadingTimestampData,\n updateTimestamp,\n updatingTimestamp,\n addTimestamp,\n deleteTimestamp\n } = useTimestampData({\n selectedAttachment,\n dispatch,\n listRef,\n application,\n newTimestamp,\n setNewTimestamp\n });\n useCurrentTime(videoRef, setCurrentTime);\n\n const hasBookmarkData = timestampData && 'bookmarks' in timestampData;\n\n const tableRows = (hasBookmarkData ? timestampData.bookmarks : timestampData?.timestamps)?.map(\n (timestamp) => (\n <TimestampTableRow\n key={timestamp.id}\n timestamp={timestamp}\n updateTimestamp={updateTimestamp}\n updatingTimestamp={updatingTimestamp}\n deleteTimestamp={deleteTimestamp}\n videoRef={videoRef}\n dispatch={dispatch}\n isTimestampValid={isTimestampValid}\n ApplicationState={ApplicationState}\n newTimestamp={newTimestamp}\n setNewTimestamp={setNewTimestamp}\n />\n )\n );\n\n return (\n <>\n <Stack\n ref={listRef}\n maxHeight={150}\n overflow={'scroll'}\n gap={1}\n sx={{ paddingBottom: '20px' }}\n >\n {loadingTimestampData ? (\n <TableSkeleton size={3} borderType={'none'} padding={'5px 0px'} />\n ) : (\n <>{tableRows}</>\n )}\n\n <Box sx={{ height: '0px' }}> </Box>\n </Stack>\n\n <TimestampTableForm\n videoRef={videoRef}\n ApplicationState={ApplicationState}\n isTimestampValid={isTimestampValid}\n addTimestamp={addTimestamp}\n dispatch={dispatch}\n newTimestamp={newTimestamp}\n setNewTimestamp={setNewTimestamp}\n currentTime={currentTime}\n />\n </>\n );\n};\n\nexport default TimestampTable;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { ApplicationAction, ApplicationState, ITimestamp } from '../../types';\nimport { Grid, IconButton, Stack } from '@mui/material';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { styles } from '../styles';\nimport { Add as AddIcon } from '@mui/icons-material';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\nexport const TimestampTableForm = ({\n videoRef,\n ApplicationState,\n isTimestampValid,\n addTimestamp,\n dispatch,\n newTimestamp,\n setNewTimestamp,\n currentTime\n}: {\n videoRef: React.RefObject<HTMLVideoElement>;\n ApplicationState: ApplicationState;\n isTimestampValid: (timestamp: ITimestamp) => boolean;\n addTimestamp: () => void;\n dispatch: Dispatch<ApplicationAction>;\n newTimestamp: ITimestamp;\n setNewTimestamp: Dispatch<SetStateAction<ITimestamp>>;\n currentTime: string;\n}) => {\n const { hasTyped, timestampError } = ApplicationState.timeStampState;\n const isAddingTimestamp = newTimestamp.id === null;\n const hasError = timestampError.id === null;\n\n const handleFieldChange =\n (field: keyof ITimestamp) => (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isAddingTimestamp) return;\n setNewTimestamp({ ...newTimestamp, [field]: e.target.value });\n if (field === 'value') {\n dispatch({ type: 'SET_TIMESTAMP_STATE', payload: { name: 'hasTyped', value: true } });\n }\n };\n\n const handleFocusBehavior = () => {\n if (isAddingTimestamp && !hasTyped) {\n setNewTimestamp({ ...newTimestamp, value: currentTime });\n }\n if (isAddingTimestamp) {\n videoRef.current?.pause();\n }\n };\n\n const handleNewTimestamp = () => {\n if (isAddingTimestamp && !hasTyped) {\n setNewTimestamp({ ...newTimestamp, value: currentTime });\n }\n };\n\n return (\n <Grid container spacing={2} columns={12}>\n <Grid item xs={5}>\n <FormTextField\n value={newTimestamp.id ? '' : newTimestamp.name}\n onChange={handleFieldChange('name')}\n styles={styles.timeStampInput}\n placeholder={'Add timestamp title'}\n draggable={!isAddingTimestamp}\n fullWidth={true}\n onFocus={handleFocusBehavior}\n error={hasError ? timestampError.nameMessage : ''}\n />\n </Grid>\n <Grid item xs={2}>\n <FormTextField\n value={newTimestamp.id ? '' : timestampError.id !== null ? '' : newTimestamp.value}\n onChange={handleFieldChange('value')}\n styles={styles.timeStampInput}\n placeholder={currentTime}\n draggable={!isAddingTimestamp}\n fullWidth={true}\n onFocus={handleFocusBehavior}\n onBlur={handleNewTimestamp}\n error={hasError ? timestampError.valueMessage : ''}\n noWrapError={true}\n />\n </Grid>\n <Grid item xs={5}>\n <Stack direction={'row'}>\n <IconButton\n id=\"add-timestamp-button\"\n sx={styles.tableActionIcon}\n onClick={() => {\n if (isTimestampValid(newTimestamp) && addTimestamp) addTimestamp();\n }}\n disabled={!isAddingTimestamp}\n >\n <AddIcon sx={{ color: theme.palette.primary.main, fontSize: '15px' }} />\n </IconButton>\n </Stack>\n </Grid>\n </Grid>\n );\n};\n","import { ApplicationAction, ApplicationState, ITimestamp } from '../../types';\nimport React, { Dispatch, SetStateAction } from 'react';\nimport { Box, CircularProgress, Grid, IconButton, Stack } from '@mui/material';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { styles } from '../styles';\nimport {\n Close as CloseIcon,\n Delete as DeleteIcon,\n Done as DoneIcon,\n Edit as EditIcon\n} from '@mui/icons-material';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport { timeStringToSeconds } from '../../config';\n\nexport const TimestampTableRow = ({\n timestamp,\n updateTimestamp,\n updatingTimestamp,\n deleteTimestamp,\n videoRef,\n isTimestampValid,\n dispatch,\n ApplicationState,\n setNewTimestamp,\n newTimestamp\n}: {\n timestamp: ITimestamp;\n updateTimestamp: () => void;\n updatingTimestamp: boolean;\n deleteTimestamp: (id: number | string) => void;\n videoRef: React.RefObject<HTMLVideoElement>;\n isTimestampValid: (timestamp: ITimestamp) => boolean;\n dispatch: React.Dispatch<ApplicationAction>;\n ApplicationState: ApplicationState;\n setNewTimestamp: Dispatch<SetStateAction<ITimestamp>>;\n newTimestamp: ITimestamp;\n}) => {\n const { timestampError } = ApplicationState.timeStampState;\n const isEditingCurrentTimestamp = newTimestamp.id === timestamp.id;\n const hasError = timestampError.id === timestamp.id;\n const clearTimestampError = () => {\n dispatch({\n type: 'SET_TIMESTAMP_STATE',\n payload: {\n name: 'timestampError',\n value: {\n nameMessage: '',\n valueMessage: '',\n id: null\n }\n }\n });\n };\n const handleEditClick = (timestamp: ITimestamp) => {\n setNewTimestamp(timestamp);\n if (!hasError) {\n clearTimestampError();\n }\n dispatch({ type: 'SET_TIMESTAMP_STATE', payload: { name: 'hasTyped', value: false } });\n };\n const seekToTimestamp = (time: string | number) => {\n if (videoRef.current) {\n videoRef.current.currentTime = timeStringToSeconds(time.toString());\n videoRef.current.play();\n }\n };\n\n const renderNameField = () => (\n <FormTextField\n value={newTimestamp.name}\n onChange={(e) => setNewTimestamp({ ...newTimestamp, name: e.target.value })}\n styles={styles.timeStampInput}\n placeholder={`${timestamp.name}`}\n fullWidth={true}\n error={hasError ? timestampError.nameMessage : ''}\n />\n );\n\n const renderValueField = () => (\n <FormTextField\n value={newTimestamp.value}\n onChange={(e) => setNewTimestamp({ ...newTimestamp, value: e.target.value })}\n styles={styles.timeStampInput}\n placeholder={`${timestamp.value}`}\n fullWidth={true}\n error={hasError ? timestampError.valueMessage : ''}\n noWrapError={true}\n />\n );\n\n const renderActionButtons = () => (\n <Stack direction={'row'}>\n <IconButton\n id=\"save-timestamp-button\"\n sx={styles.tableActionIcon}\n onClick={() => {\n if (isTimestampValid(newTimestamp)) {\n clearTimestampError();\n updateTimestamp();\n }\n }}\n >\n <DoneIcon sx={{ color: '#5BC4C0', cursor: 'pointer', fontSize: '15px' }} />\n </IconButton>\n <IconButton\n id=\"cancel-timestamp-button\"\n onClick={() => {\n setNewTimestamp({ id: null, name: '', value: '' });\n if (hasError) clearTimestampError();\n }}\n >\n <CloseIcon focusable={false} sx={{ ...styles.clickableGreyIcon, fontSize: '15px' }} />\n </IconButton>\n </Stack>\n );\n\n const renderDefaultControls = () => (\n <Stack direction={'row'}>\n <IconButton\n id=\"edit-timestamp-button\"\n sx={styles.tableActionIcon}\n onClick={() => handleEditClick(timestamp)}\n >\n <EditIcon sx={{ color: theme.palette.common.grey, fontSize: '15px' }} />\n </IconButton>\n <IconButton\n id=\"delete-timestamp-button\"\n sx={styles.tableActionIcon}\n onClick={() => timestamp.id && deleteTimestamp(timestamp.id)}\n >\n <DeleteIcon sx={{ color: theme.palette.error.main, fontSize: '15px' }} />\n </IconButton>\n </Stack>\n );\n\n const renderItem = (field: keyof Pick<ITimestamp, 'name' | 'value'>) => {\n const fieldValue = timestamp[field];\n return (\n <Box onClick={() => seekToTimestamp(timestamp.value)} sx={styles.timeStampItem}>\n {fieldValue}\n </Box>\n );\n };\n\n return (\n <Grid container spacing={2} key={timestamp.id} columns={12}>\n <Grid item xs={5} alignContent={'baseline'}>\n {isEditingCurrentTimestamp ? renderNameField() : renderItem('name')}\n </Grid>\n <Grid item xs={2}>\n {isEditingCurrentTimestamp ? renderValueField() : renderItem('value')}\n </Grid>\n <Grid item xs={5}>\n {isEditingCurrentTimestamp || hasError ? (\n updatingTimestamp ? (\n <CircularProgress size={15} sx={{ margin: '8px 0px 0px 6px' }} />\n ) : (\n renderActionButtons()\n )\n ) : (\n renderDefaultControls()\n )}\n </Grid>\n </Grid>\n );\n};\n","import React, { Dispatch, useState } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { ModalType } from '../config';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from './styles';\nimport { IError } from '../../SmartForms/types';\nimport { IApprovalTemplate } from '../../ApprovalForms/ApprovalTemplates/types';\n\nexport default function CreateApproval({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const [selectedTemplate, setSelectedTemplate] = useState<IApprovalTemplate | null>(null);\n const [movingPage, setMovingPage] = useState<boolean>(false);\n const [templateError, setTemplateError] = useState<string>('');\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const { data: approvalTemplates, isLoading: loadingApprovalTemplates } = useQuery({\n queryKey: ['approval templates'],\n queryFn: async () => {\n const { res } = await Api.getApprovalTemplates();\n return res.enabled_requisition_forms;\n },\n onError: (error: IError) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: error.errors.join(', '), state: 'error' }\n })\n });\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.CREATE_APPROVAL}\n label=\"Move application modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>New approval form</Stack>\n <Stack sx={{ paddingRight: '4px', overflow: 'auto', paddingBottom: 3 }}>\n <Autocomplete\n disablePortal\n options={approvalTemplates || []}\n getOptionLabel={(option) => option.name}\n value={selectedTemplate}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 4, flexGrow: 1 }}\n loading={loadingApprovalTemplates}\n loadingText=\"Loading approval templates...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Select an approval template\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={sharedClasses.autoCompleteTextfield}\n helperText={templateError}\n required\n />\n )}\n onChange={(event, value) => {\n value && setTemplateError('');\n setSelectedTemplate(value);\n }}\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Confirm\"\n primaryButtonCallback={() => {\n if (selectedTemplate) {\n setMovingPage(true);\n window.location.href = `/admin/requisitions/new?form_id=${selectedTemplate?.id}&job_id=${application?.job.id}&application_id=${application?.id}`;\n } else {\n setTemplateError('Must select a template');\n }\n }}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n isLoading={movingPage}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { useState } from 'react';\nimport { ApplicationAction } from '../types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { Box, Stack } from '@mui/material';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { IApplication } from '../types';\n\nexport function DeleteApplication({\n dispatch,\n isDialogOpen\n}: {\n dispatch: React.Dispatch<ApplicationAction>;\n isDialogOpen: boolean;\n}) {\n const [confirmDelete, setConfirmDelete] = useState<string>('');\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const deleteApplication = useMutation({\n mutationFn: async () => {\n if (application) {\n const { res } = await Api.deleteApplication(application?.job.id, application.id);\n return res;\n }\n },\n onSuccess: () => {\n window.location.href = `${window.location.origin}/admin/jobs/${application?.job.id}?applications=true`;\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `${application?.candidate?.firstname} ${application?.candidate?.lastname} successfully deleted`,\n state: 'success'\n }\n });\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `There was an error deleting application, ${error}`, state: 'error' }\n });\n },\n onSettled: () => {\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: null\n });\n }\n });\n\n const dialogDescription = (\n <Stack sx={{ color: '#000000', rowGap: 1 }}>\n <Box>\n This will <b>permanently</b> delete the application and all\n </Box>\n <Box>associated tasks, notes, and all events and invitations.</Box>\n <Stack sx={{ rowGap: 1, alignItems: 'center' }}>\n <Box sx={{ color: '#939393', fontSize: '14px', '& b': { color: '#000000' } }}>\n Type the word <b>DELETE</b> in the text field below to\n <Box>confirm deletion</Box>\n </Box>\n <FormTextField value={confirmDelete} onChange={(e) => setConfirmDelete(e.target.value)} />\n </Stack>\n </Stack>\n );\n return (\n <GenericDialog\n isDialogOpen={isDialogOpen}\n setDialogOpen={() => {\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: null\n });\n }}\n title=\"Are you sure you want to delete this application?\"\n description={dialogDescription}\n buttonCallback={() => deleteApplication.mutate()}\n callbackLoading={deleteApplication.isLoading}\n buttonText=\"Delete\"\n url=\"\"\n disablePrimaryButton={confirmDelete !== 'DELETE'}\n primaryButtonId=\"confirm-delete-application-button\"\n secondaryButtonId=\"cancel-delete-application-button\"\n />\n );\n}\n","import React from 'react';\nimport { ApplicationAction, IApplication, IAttachment, IVideoInterview } from '../types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { Box, Stack } from '@mui/material';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nexport function DeleteAttachment({\n dispatch,\n isDialogOpen,\n selectedAttachment\n}: {\n dispatch: React.Dispatch<ApplicationAction>;\n isDialogOpen: boolean;\n selectedAttachment: IAttachment | IVideoInterview;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const isVideoInterview = 'watch_interview_link' in selectedAttachment;\n const deleteApi = () => {\n if (!application || !selectedAttachment) return;\n if (isVideoInterview) {\n return Api.deleteVideoInterview(application.id);\n } else {\n return Api.deleteAttachment(application.job.id, application.id, selectedAttachment.id);\n }\n };\n const deleteAttachment = useMutation({\n mutationFn: async () => {\n if (application && selectedAttachment) {\n const { res } = await deleteApi();\n return res;\n }\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `File successfully deleted`,\n state: 'success'\n }\n });\n queryClient.removeQueries(['attachments']);\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `There was an error deleting attachment, ${error}`, state: 'error' }\n });\n },\n onSettled: () => {\n dispatch({\n type: 'SET_SELECTED_ATTACHMENT_ACTION',\n payload: { delete: null, preview: null }\n });\n }\n });\n\n const dialogDescription = (\n <Stack sx={{ color: theme.palette.common.grey, rowGap: 1, fontWeight: 400 }}>\n <Box>Are you sure you want to delete</Box>\n <Box>this file?</Box>\n </Stack>\n );\n return (\n <GenericDialog\n isDialogOpen={isDialogOpen}\n setDialogOpen={() => {\n dispatch({\n type: 'SET_SELECTED_ATTACHMENT_ACTION',\n payload: { delete: null, preview: null }\n });\n }}\n title=\"Delete file?\"\n description={dialogDescription}\n buttonCallback={() => deleteAttachment.mutate()}\n callbackLoading={deleteAttachment.isLoading}\n buttonText=\"Delete\"\n url=\"\"\n primaryButtonId=\"confirm-delete-attachment-button\"\n secondaryButtonId=\"cancel-delete-attachment-button\"\n />\n );\n}\n","import React from 'react';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { Box, Stack } from '@mui/material';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nexport function DeleteFormResponse({\n dispatch,\n ApplicationState,\n formResponseId\n}: {\n dispatch: React.Dispatch<ApplicationAction>;\n ApplicationState: ApplicationState;\n formResponseId: number;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const deleteFormResponse = useMutation({\n mutationFn: async () => {\n if (application && formResponseId) {\n const { res } = await Api.deleteFormResponse(\n application.job.id,\n application.id,\n formResponseId\n );\n return res;\n }\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Form response successfully deleted`,\n state: 'success'\n }\n });\n queryClient.removeQueries(['formResponses']);\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `There was an error deleting form response, ${error}`, state: 'error' }\n });\n },\n onSettled: () => {\n dispatch({\n type: 'SET_SELECTED_FORM_RESPONSE_ACTION',\n payload: { delete: null, edit: null }\n });\n }\n });\n\n const dialogDescription = (\n <Stack sx={{ color: theme.palette.common.grey, rowGap: 1, fontWeight: 400 }}>\n <Box>Are you sure you want to delete</Box>\n <Box>this form response?</Box>\n </Stack>\n );\n\n return (\n <GenericDialog\n isDialogOpen={!!ApplicationState.selectedFormResponseAction.delete}\n setDialogOpen={() => {\n dispatch({\n type: 'SET_SELECTED_FORM_RESPONSE_ACTION',\n payload: { delete: null, edit: null }\n });\n }}\n title=\"Delete form response?\"\n description={dialogDescription}\n buttonCallback={() => deleteFormResponse.mutate()}\n callbackLoading={deleteFormResponse.isLoading}\n buttonText=\"Delete\"\n url=\"\"\n primaryButtonId=\"confirm-delete-form-button\"\n secondaryButtonId=\"cancel-delete-form-button\"\n />\n );\n}\n","import React, { Dispatch, useEffect, useRef, useState } from 'react';\nimport { CircularProgress, Stack } from '@mui/material';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\n\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { IApplicantQuestion } from '../../Components/Utilities/QuestionFieldGenerator';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { createQuestionErrorsObject } from '../../ApprovalForms/NewApproval/NewApproval';\nimport Api from '../API';\nimport { validateForm } from '../SmartFormsTab/validate-form-submission';\nimport { getAnswerValue } from '../SmartFormsTab/get-answer-value';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { styles } from './styles';\nimport { getAnswerAttributes } from '../SmartFormsTab/get-answer-attributes';\nimport { useFormQuestions, useFormResponse } from '../helper';\nimport QuestionsAndRatings from '../OverviewTab/QuestionsAndRatings';\nimport { ExitConfirmationModal } from './ExitConfirmationModal';\n\nexport default function EditFormResponseModal({\n ApplicationState,\n dispatch,\n selectedFormId,\n EditingFormResponseId,\n FormName\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n selectedFormId: number;\n EditingFormResponseId: number;\n FormName: string;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const questionsRef = useRef<Array<HTMLDivElement | null>>([]);\n const [answers, setAnswers] = useState<\n Record<number, string | number | Record<string, string | boolean>>\n >({});\n const [questions, setQuestions] = useState<IApplicantQuestion[]>([]);\n const [questionErrors, setQuestionErrors] = useState<Record<number, string>>(\n createQuestionErrorsObject(questions)\n );\n const [exitConfirmation, setExitConfirmation] = useState<boolean>(false);\n\n const { data: formResponse, isLoading: loadingFormResponse } = useFormResponse({\n FormResponseId: EditingFormResponseId,\n dispatch,\n application\n });\n const { formQuestions, loadingFormQuestions } = useFormQuestions({\n application,\n selectedFormId,\n dispatch,\n formResponseId: EditingFormResponseId\n });\n\n // for each question, store the rating value from the form response.rating\n const [ratings, setRatings] = useState<Record<number, number>>({});\n const { mutate: editForm, isLoading: editingForm } = useMutation({\n mutationFn: async () => {\n if (application && EditingFormResponseId) {\n const { res } = await Api.editFormResponse(\n application.job.id,\n application.id,\n EditingFormResponseId,\n answersAttributes\n );\n return res;\n }\n },\n onSuccess: (res) => {\n queryClient.removeQueries(['formQuestionAndAnswers', EditingFormResponseId]);\n queryClient.removeQueries(['formResponses']);\n queryClient.removeQueries(['formQuestions', selectedFormId, EditingFormResponseId]);\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n handleClose();\n },\n onError: () =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Failed to save form response`, state: 'error' }\n })\n });\n\n useEffect(() => {\n if (formResponse && formQuestions) {\n const initialAnswers = formQuestions.reduce(\n (acc, q, index) => {\n acc[q.id] = getAnswerValue(q, index, formResponse);\n return acc;\n },\n {} as Record<number, string | number | Record<string, string | boolean>>\n );\n const initialRatings = formQuestions.reduce(\n (acc, q, index) => {\n acc[q.id] = formResponse[index]?.rating;\n return acc;\n },\n {} as Record<number, number>\n );\n setAnswers(initialAnswers);\n setRatings(initialRatings);\n setQuestions(formQuestions);\n }\n }, [formResponse, formQuestions]);\n\n const handleClose = () => {\n dispatch({\n type: 'SET_SELECTED_FORM_RESPONSE_ACTION',\n payload: { edit: null, delete: null }\n });\n };\n\n const answersAttributes: any = {};\n if (questions && formResponse) {\n questions.forEach((question, index) => {\n answersAttributes[index] = getAnswerAttributes(\n question,\n index,\n answers,\n ratings,\n formResponse\n );\n });\n }\n const handleSubmit = () =>\n validateForm(questions, answers, setQuestionErrors, questionsRef) && editForm();\n\n if (!application) return null;\n\n return (\n <StyledModal\n isOpen={!!ApplicationState.selectedFormResponseAction.edit}\n label=\"Edit form response modal\"\n handleClose={() => setExitConfirmation(true)}\n styleOverrides={{ ...styles.modalStyleOverrides, ...styles.wideModal }}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>{FormName}</Stack>\n {loadingFormResponse || loadingFormQuestions ? (\n <Stack sx={styles.loaderContainer}>\n <CircularProgress size={60} sx={{ color: '#084D6D' }} />\n Loading Form\n </Stack>\n ) : (\n <QuestionsAndRatings\n questions={questions}\n questionErrors={questionErrors}\n setQuestionErrors={setQuestionErrors}\n ratings={ratings}\n setRatings={setRatings}\n setAnswers={setAnswers}\n questionsRef={questionsRef}\n formResponseAnswers={formResponse}\n />\n )}\n <ModalFooterButtons\n primaryButtonText={'Save'}\n primaryButtonCallback={handleSubmit}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={() => setExitConfirmation(true)}\n primaryButtonMinWidth={'95px'}\n isLoading={editingForm}\n />\n </Stack>\n <ExitConfirmationModal\n exitConfirmation={exitConfirmation}\n setExitConfirmation={setExitConfirmation}\n handleClose={handleClose}\n />\n </StyledModal>\n );\n}\n","import React, { Dispatch, useRef, useState } from 'react';\nimport StyledModal from '../../../NewUI/Components/GenericModal/StyledModal';\nimport { emailIsValid } from '../../../NewUI/Components/Utilities/emailIsValid';\nimport { Checkbox, FormControlLabel, Stack } from '@mui/material';\nimport MultiTagInput from '../../../NewUI/Components/CustomUIElements/MultiTagInput';\nimport { sharedClasses } from '../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport { ApplicationState, ApplicationAction, IApplication } from '../types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { ModalType } from '../config';\nimport { styles } from './styles';\nimport { MultilineFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport Api from '../API';\n\nexport default function EmailExternal({\n ApplicationState,\n dispatch,\n aiSummariesEnabled\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n aiSummariesEnabled: boolean;\n}) {\n const [emails, setEmails] = useState<string[]>([]);\n const [submissionError, setSubmissionError] = useState<string>('');\n const [includeAttachments, setIncludeAttachments] = useState<boolean>(false);\n const [includeSmartForms, setIncludeSmartForms] = useState<boolean>(false);\n const [includeSummary, setIncludeSummary] = useState<boolean>(false);\n const [notes, setNotes] = useState<string>('');\n const emailInputRef = useRef<HTMLDivElement>(null);\n const { modalsOpen } = ApplicationState;\n\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const handleClose = () => {\n dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n };\n\n const { mutate: sendEmail, isLoading: sendingEmail } = useMutation({\n mutationFn: async () => {\n if (application) {\n const { res } = await Api.sendExternalEmails(application.job.id, {\n application_ids: [application.id],\n external_view: {\n emails: emails.join(','),\n full_view: includeAttachments,\n smart_forms: includeSmartForms,\n include_summary: includeSummary,\n notes\n }\n });\n return res;\n }\n },\n onSuccess: (res) => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.message, state: 'success' } });\n handleClose();\n },\n onError: (e: { errors: string; status: number }) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message:\n e.errors ??\n 'Error sending emails, please try again or contact support if the issue persists',\n state: 'error'\n }\n })\n });\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.EMAIL_EXTERNAL}\n handleClose={handleClose}\n label=\"External Email\"\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Email external</Stack>\n <Stack sx={{ rowGap: 2, overflow: 'auto' }}>\n <Stack sx={{ fontSize: '18px', fontWeight: 'bold', color: '#666666' }}>\n Recipient details\n </Stack>\n <Stack ref={emailInputRef}>\n <MultiTagInput\n tags={emails}\n setTags={setEmails}\n validation={emailIsValid}\n validationMessage=\"Must input valid email\"\n label=\"Email address/s\"\n width=\"100%\"\n error={submissionError}\n tagType=\"emails\"\n helperText=\"To copy and paste bulk emails, email addresses must be separated with a comma\"\n required\n />\n <Stack sx={{ flexDirection: 'row', columnGap: 2, marginLeft: '3px' }}>\n <FormControlLabel\n control={\n <Checkbox\n sx={sharedClasses.formCheckbox}\n onChange={(e) => setIncludeAttachments(e.target.checked)}\n value={includeAttachments}\n />\n }\n label=\"Include Attachments\"\n sx={{\n ...sharedClasses.checkboxLabel,\n '.MuiFormControlLabel-label': { fontSize: '14px' }\n }}\n />\n <FormControlLabel\n control={\n <Checkbox\n sx={sharedClasses.formCheckbox}\n onChange={(e) => setIncludeSmartForms(e.target.checked)}\n value={includeSmartForms}\n />\n }\n label=\"Include Smart Forms\"\n sx={{\n ...sharedClasses.checkboxLabel,\n '.MuiFormControlLabel-label': { fontSize: '14px' }\n }}\n />\n {aiSummariesEnabled && (\n <FormControlLabel\n control={\n <Checkbox\n sx={sharedClasses.formCheckbox}\n onChange={(e) => setIncludeSummary(e.target.checked)}\n value={includeSummary}\n />\n }\n label=\"Include Felix AI Summary\"\n sx={{\n ...sharedClasses.checkboxLabel,\n '.MuiFormControlLabel-label': { fontSize: '14px' }\n }}\n />\n )}\n </Stack>\n </Stack>\n <MultilineFormTextField\n label=\"Notes\"\n rows={4}\n value={notes}\n onChange={(e) => setNotes(e.target.value)}\n styles={{ marginLeft: '3px', paddingRight: '4px' }}\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Send\"\n primaryButtonCallback={() =>\n emails.length ? sendEmail() : setSubmissionError('Must input at least one valid email')\n }\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n isLoading={sendingEmail}\n primaryButtonMinWidth=\"75px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Stack } from '@mui/material';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\n\nexport function ExitConfirmationModal({\n exitConfirmation,\n setExitConfirmation,\n handleClose\n}: {\n exitConfirmation: boolean;\n setExitConfirmation: Dispatch<SetStateAction<boolean>>;\n handleClose: () => void;\n}) {\n const ExitDialogDescription = () => (\n <Stack>\n <Stack>Are you sure you want to cancel editing the form?</Stack>\n <Stack>You will lose any progress you have made.</Stack>\n </Stack>\n );\n\n return (\n <GenericDialog\n isDialogOpen={exitConfirmation}\n setDialogOpen={setExitConfirmation}\n title=\"Close without submitting?\"\n description={ExitDialogDescription()}\n buttonCallback={handleClose}\n callbackLoading={false}\n buttonText=\"Yes, close\"\n secondaryButtonText=\"Back to editing\"\n url=\"\"\n />\n );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Stack } from '@mui/material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { ModalType } from '../config';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from './styles';\nimport { SingleDatePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport dayjs from 'dayjs';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\n\nexport default function ExportToOnboard({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const [startDate, setStartDate] = useState<Date | null>(null);\n const [dateError, setDateError] = useState<string>('');\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const { mutate: exportToOnboard, isLoading: exportingToOnboard } = useMutation({\n mutationFn: async () => {\n if (application && startDate) {\n const { res } = await Api.exportToOnboard(application.job.id, application.id, startDate);\n return res;\n }\n },\n onSuccess: (res) => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in exporting candidate to onboard, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n const handleSubmit = () =>\n startDate ? exportToOnboard() : setDateError('Please select a start date');\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.EXPORT_TO_ONBOARD}\n label=\"Export to Onboard modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Export to :Onboard</Stack>\n <Stack sx={{ paddingBottom: 5, paddingTop: 2, overflow: 'auto' }}>\n <SingleDatePicker\n value={startDate}\n label={`When will ${application?.candidate?.firstname} ${application?.candidate?.lastname} start?`}\n inputStyles={{ ...sharedClasses.datePicker, width: '50%' }}\n onChange={(value) => {\n if (!value?.isValid()) {\n setDateError('Please input a valid date');\n } else {\n setDateError('');\n setStartDate(dayjs(value.toDate()).toDate());\n }\n }}\n showTodayButton\n error={dateError}\n required\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Export\"\n primaryButtonCallback={handleSubmit}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n isLoading={exportingToOnboard}\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { Dispatch, useRef, useState } from 'react';\nimport {\n Autocomplete,\n Box,\n Button,\n Collapse,\n FormControlLabel,\n Stack,\n Switch,\n TextField\n} from '@mui/material';\nimport { NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { ControlledStaticDatePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { classes } from '../../Job/Applications/styles';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport API from '../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { checkMissingPlaceholders, INVITE_TO_TIMESLOT_PLACEHOLDER, ModalType } from '../config';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { styles } from './styles';\nimport SmsTemplateComponent from '../../Components/CustomUIElements/SmsTemplateComponent';\nimport { useGetEmailTemplate, useGetEvents, useGetSmsTemplatePlaceholders } from '../helper';\nimport EmailsDropdown from './Components/EmailsDropdown';\nimport EmailBodyComponent from './Components/EmailBodyComponent';\nimport NotificationOptionSwitch from './Components/NotificationOptionsSwitch';\nimport { IEventType, IRecruiter } from '../../../ScoutCalendar/types';\nimport { scrollToElement } from '../../utils/scroll-to-element';\nimport { MissingPlaceholdersConfirmationModal } from './MissingPlaceholdersConfirmationModal';\nimport { ISMSTemplate } from '../../Job/types';\nimport { useDispatch } from '../../hooks/useDispatch';\nimport formatToUserTimeZone from '../../utils/formatToUserTimeZone';\n\nexport default function InviteToTimeslot({\n ApplicationState,\n dispatch,\n smsTemplatePermissions\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n smsTemplatePermissions: boolean;\n}) {\n const [recruiter, setRecruiter] = useState<IRecruiter | null>(null);\n const [eventType, setEventType] = useState<IEventType | null>(null);\n const [showTimeslots, setShowTimeslots] = useState<boolean>(false);\n const [selectedDay, setSelectedDay] = useState<Date | null>(new Date());\n const [step, setStep] = useState<number>(1);\n const [notification, setNotification] = useState<string>('email');\n const [smsMessage, setSmsMessage] = useState<string>('');\n const [smsTemplate, setSmsTemplate] = useState<ISMSTemplate | null>(null);\n const [selectedEmailTemplate, setSelectedEmailTemplate] = useState<string | null>(null);\n const [subject, setSubject] = useState<string>('');\n const [body, setBody] = useState<string>('');\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [missingPlaceholderConfirmation, setMissingPlaceholderConfirmation] =\n useState<boolean>(false);\n const fieldRefs = {\n emailTemplate: useRef<HTMLInputElement>(null),\n body: useRef<HTMLDivElement>(null)\n };\n const { modalsOpen, apiKey } = ApplicationState;\n\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n useGetEmailTemplate({ apiKey, selectedEmailTemplate, setBody, dispatch, setSubject });\n const { events, loadingEvents } = useGetEvents({\n apiKey,\n dispatch,\n eventTypeId: eventType?.id,\n enabled: !!eventType\n });\n const { placeholders } = useGetSmsTemplatePlaceholders({ kind: 'invite', dispatch });\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n const { displayError, displaySuccess } = useDispatch(dispatch);\n\n const { data: recruiters, isLoading: loadingRecruiters } = useQuery({\n queryKey: ['recruiters'],\n queryFn: async () => {\n const { res } = await API.getRecruiters(apiKey);\n return res.users;\n },\n onError: () => displayError('Failed to fetch recruiters data.')\n });\n\n const { data: eventTypes, isLoading: loadingEventTypes } = useQuery({\n queryKey: ['event types'],\n queryFn: async () => {\n const { res } = await API.getEventTypes();\n return res.event_types;\n },\n onError: () => displayError('Failed to fetch event types data.')\n });\n\n const { mutate: sendEmail, isLoading: sendingEmail } = useMutation({\n mutationFn: async () => {\n if (!recruiter || !eventType || !application || !selectedEmailTemplate) return;\n const res = await API.inviteByEmail(apiKey, {\n user_id: recruiter.id,\n event_type_id: eventType.id,\n job_id: application.job.id,\n invitation: {\n application_ids: [application.id],\n subject: subject,\n body: body,\n email_template_id: selectedEmailTemplate.split(' -')[0]\n }\n });\n return res;\n },\n onSuccess: () => {\n displaySuccess('Invite to timeslot email notification has been sent successfully');\n handleClose();\n },\n onError: () => displayError('Failed to send invite to timeslot email')\n });\n\n const { mutate: sendSms, isLoading: sendingSms } = useMutation({\n mutationFn: async () => {\n if (!recruiter || !eventType || !application || !smsMessage) return;\n\n const res = await API.sendInviteSms(\n application.job.id,\n eventType.id,\n [application.id],\n smsMessage,\n smsTemplate?.id\n );\n if (res.success !== 0) {\n displaySuccess('Invite to timeslot SMS notification has been sent successfully');\n handleClose();\n } else {\n displayError('There is an error in sending SMS notification');\n }\n return res;\n }\n });\n\n const selectedDayEvents = events?.filter(\n (e) => formatToUserTimeZone(e.begins_at, 'ymd') === formatToUserTimeZone(selectedDay, 'ymd')\n );\n\n const shouldDisableDate = (date: Date) => {\n if (!events) return true;\n return !events\n .map((e) => formatToUserTimeZone(e.begins_at, 'ymd'))\n .includes(formatToUserTimeZone(date, 'ymd'));\n };\n\n const buttonName = step === 1 ? 'Next' : 'Send';\n\n const validateInput = () => {\n const fieldsErrors: Record<string, string> = {};\n if (step === 1) {\n !recruiter && (fieldsErrors.recruiter = 'Must select a recruiter');\n !eventType && (fieldsErrors.eventType = 'Must select an event type');\n } else {\n if (notification === 'email') {\n !selectedEmailTemplate && (fieldsErrors.template = 'Must select a template');\n !body.trim() && (fieldsErrors.body = 'Must add email body');\n } else {\n !smsMessage.trim() && (fieldsErrors.sms = 'Must add SMS content');\n }\n }\n setErrors(fieldsErrors);\n if (fieldsErrors.template) {\n scrollToElement(fieldRefs.emailTemplate);\n } else if (fieldsErrors.body) {\n scrollToElement(fieldRefs.body);\n }\n return !Object.keys(fieldsErrors).length;\n };\n\n const handleEmailSubmission = () => {\n const missingPlaceholders = checkMissingPlaceholders(\n [INVITE_TO_TIMESLOT_PLACEHOLDER],\n body.trim()\n );\n validateInput() &&\n (missingPlaceholders ? setMissingPlaceholderConfirmation(true) : sendEmail());\n };\n const handleSubmit = () => {\n if (step === 1) {\n validateInput() && setStep(2);\n } else {\n notification === 'email' ? handleEmailSubmission() : validateInput() && sendSms();\n }\n };\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.INVITE_TO_TIMESLOT}\n label=\"Invite to timeslot modal\"\n handleClose={handleClose}\n styleOverrides={{ ...styles.modalStyleOverrides, width: '900px' }}\n disableEnforceFocus\n >\n <Stack sx={{ width: '100%', height: '100%', overflow: 'auto' }}>\n <Stack\n id=\"invite-to-timeslot-title\"\n sx={{ ...classes.actionModalHeader, paddingBottom: 3 }}\n >\n Invite to timeslot\n </Stack>\n {step === 1 ? (\n <Stack sx={{ padding: 1, flexGrow: 1, rowGap: 3, overflow: 'auto' }}>\n <Autocomplete\n disablePortal\n options={recruiters || []}\n getOptionLabel={(option) => option.name}\n value={recruiter}\n sx={{ ...sharedClasses.formAutocomplete, width: '40%', marginTop: 3 }}\n loading={loadingRecruiters}\n loadingText=\"Loading recruiters list...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Recruiter\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n required\n sx={sharedClasses.autoCompleteTextfield}\n helperText={errors.recruiter}\n />\n )}\n onChange={(event, value) => setRecruiter(value)}\n />\n <Autocomplete\n disablePortal\n options={eventTypes || []}\n getOptionLabel={(option) => option.name}\n value={eventType}\n sx={{ ...sharedClasses.formAutocomplete, width: '40%', marginTop: 3 }}\n loading={loadingEventTypes}\n loadingText=\"Loading event types list...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Event type\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n required\n sx={sharedClasses.autoCompleteTextfield}\n helperText={errors.eventType}\n />\n )}\n onChange={(event, value) => setEventType(value)}\n />\n <FormControlLabel\n sx={classes.formSwitchLabels}\n control={\n <Switch\n sx={showTimeslots ? classes.switchActive : classes.switch}\n checked={showTimeslots}\n onChange={() => setShowTimeslots(!showTimeslots)}\n />\n }\n label=\"Show timeslots\"\n labelPlacement=\"start\"\n />\n <Collapse in={showTimeslots}>\n <Stack\n sx={{\n flexDirection: 'row',\n justifyContent: 'space-between'\n }}\n >\n <Box sx={classes.calendar}>\n <ControlledStaticDatePicker\n displayStaticWrapperAs=\"desktop\"\n views={['day']}\n value={selectedDay}\n disablePast\n onChange={(value) => setSelectedDay(value)}\n shouldDisableDate={shouldDisableDate}\n />\n </Box>\n <Box sx={classes.dailyTimeslots}>\n <Box sx={{ ...classes.dailyTimeslotsHeader, marginTop: 2, marginBottom: '20px' }}>\n Timeslots\n </Box>\n {eventType ? (\n <>\n {loadingEvents ? (\n <Box sx={classes.noTimeslots}>\n <CircularProgress size={32} />\n </Box>\n ) : (\n <Stack sx={styles.timeslotsContainer}>\n {selectedDayEvents?.length ? (\n selectedDayEvents?.map((e) => {\n const candidates = e.attendees.filter((a) => a.type === 'Candidate');\n const fullyBooked = candidates.length === e.max_candidates;\n return (\n <Stack\n key={e.id}\n sx={{\n ...styles.timeslot,\n color: `${fullyBooked ? '#D9D9D9' : '#666666'}`,\n background: `${fullyBooked ? '#F2F2F2' : 'inherit'}`\n }}\n >\n <Stack sx={{ fontSize: '14px' }}>\n {formatToUserTimeZone(e.begins_at, 'onlyTime')}\n </Stack>\n <Box sx={styles.timeslotSubject}>{e.subject}</Box>\n </Stack>\n );\n })\n ) : (\n <Stack sx={styles.noTimeslotMessage}>\n No timeslots on selected date\n </Stack>\n )}\n </Stack>\n )}\n </>\n ) : (\n <Stack sx={styles.noTimeslotMessage}>Event type must be selected</Stack>\n )}\n </Box>\n </Stack>\n </Collapse>\n </Stack>\n ) : (\n <Stack sx={classes.addToEventSecondStepContainer}>\n <NotificationOptionSwitch\n setNotification={setNotification}\n notification={notification}\n />\n {notification === 'email' ? (\n <Stack sx={{ paddingTop: 4, rowGap: 3 }}>\n <EmailsDropdown\n apiKey={apiKey}\n selectedEmailTemplate={selectedEmailTemplate}\n setSelectedEmailTemplate={setSelectedEmailTemplate}\n setBody={setBody}\n dispatch={dispatch}\n required\n error={errors.template}\n innerRef={fieldRefs.emailTemplate}\n />\n <EmailBodyComponent\n body={body}\n setBody={setBody}\n error={errors.body}\n innerRef={fieldRefs.body}\n />\n </Stack>\n ) : (\n <SmsTemplateComponent\n smsMessageError={errors.sms}\n {...{\n smsTemplatePermissions,\n smsMessage,\n setSmsMessage,\n smsTemplate,\n setSmsTemplate,\n dispatch,\n placeholders\n }}\n />\n )}\n </Stack>\n )}\n <Box sx={{ ...classes.modalFooter, columnGap: 1, paddingTop: 2 }}>\n <Button\n id=\"close-invite-to-timeslot-modal-button\"\n sx={classes.modalCancelButton}\n onClick={handleClose}\n >\n Cancel\n </Button>\n {step !== 1 && (\n <Button\n onClick={() => {\n setStep(1);\n setErrors({});\n }}\n sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n >\n <NavigateBeforeIcon />\n </Button>\n )}\n <Button\n id=\"invite-to-timeslot-submit-button\"\n type=\"submit\"\n sx={{ ...sharedClasses.genericButton, minWidth: '75px' }}\n onClick={handleSubmit}\n >\n {sendingSms || sendingEmail ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n buttonName\n )}\n </Button>\n </Box>\n </Stack>\n {missingPlaceholderConfirmation && (\n <MissingPlaceholdersConfirmationModal\n missingPlaceholderList={INVITE_TO_TIMESLOT_PLACEHOLDER}\n overrideFunction={sendEmail}\n missingPlaceholderConfirmation={missingPlaceholderConfirmation}\n setMissingPlaceholderConfirmation={setMissingPlaceholderConfirmation}\n overridingLoading={sendingEmail}\n />\n )}\n </StyledModal>\n );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Stack } from '@mui/material';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { classes } from '../../Components/Modals/styles';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\n/**\n * MissingPlaceholdersConfirmationModal component.\n *\n * This component renders a modal dialog to confirm sending an email with missing placeholders.\n *\n * @param missingPlaceholderList - A list of missing placeholders.\n * @param overrideFunction - Callback function to proceed despite missing placeholders.\n * @param missingPlaceholderConfirmation - Boolean to control the modal's open state.\n * @param setMissingPlaceholderConfirmation - Function to set the modal's open state.\n * @param overridingLoading - Boolean to indicate if the override action is loading.\n */\nexport function MissingPlaceholdersConfirmationModal({\n missingPlaceholderList,\n overrideFunction,\n missingPlaceholderConfirmation,\n setMissingPlaceholderConfirmation,\n overridingLoading\n}: {\n missingPlaceholderList: string;\n overrideFunction: () => void;\n missingPlaceholderConfirmation: boolean;\n setMissingPlaceholderConfirmation: Dispatch<SetStateAction<boolean>>;\n overridingLoading: boolean;\n}) {\n const MissingPlaceHolderDialogDescription = () => (\n <Stack>\n <Stack>It looks like there is no {missingPlaceholderList} in</Stack>\n <Stack>your email body. Do you still want to send it?</Stack>\n </Stack>\n );\n\n const Title = () => `Missing ${missingPlaceholderList} placeholder`;\n return (\n <GenericDialog\n isDialogOpen={missingPlaceholderConfirmation}\n setDialogOpen={setMissingPlaceholderConfirmation}\n title={Title()}\n description={<MissingPlaceHolderDialogDescription />}\n buttonCallback={overrideFunction}\n callbackLoading={overridingLoading}\n buttonText=\"Yes, send\"\n secondaryButtonText=\"Back to editing\"\n overrideColor={{\n primary: { ...classes.secondaryButtonAlternateColor, color: theme.palette.action.main },\n secondary: classes.primaryButtonAlternateColor\n }}\n switchOrder\n url=\"\"\n />\n );\n}\n","import React, { Dispatch, useMemo, useState } from 'react';\nimport { Autocomplete, Checkbox, Stack, TextField, Typography } from '@mui/material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { ModalType } from '../config';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from './styles';\nimport FormControlLabel from '@mui/material/FormControlLabel';\n\nexport default function MoveApplicationModal({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const [selectedJob, setSelectedJob] = useState<string | null>(null);\n const { modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [cloneAttachments, setCloneAttachments] = useState<boolean>(false);\n const [error, setError] = useState<string>('');\n\n const { data: jobs, isLoading: loadingJobs } = useQuery({\n queryKey: ['job options'],\n queryFn: async () => {\n if (application?.job) {\n const { res } = await Api.getJobsOptions(application.job.id);\n return res.jobs\n .filter((job: { reference: string; title: string }) => job.reference)\n .map((job: { reference: string; title: string }) => `${job.reference} - ${job.title}`);\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting job options, ${error}`,\n state: 'error'\n }\n }),\n initialData: [],\n enabled: !!application\n });\n const modalState = useMemo(() => {\n switch (modalsOpen) {\n case ModalType.MOVE:\n return {\n errorMessage: 'There was an error moving the application',\n modalTitle: 'Move application',\n textFieldLabel: 'Select job to move application to',\n primaryButtonText: 'Move'\n };\n case ModalType.CLONE:\n return {\n errorMessage: 'There was an error cloning the application',\n modalTitle: 'Clone and move application',\n textFieldLabel: 'Select job to clone and move application to',\n checkboxLabel: 'I want to clone attachments',\n note: 'Please note: By cloning attachments, it may take longer for the cloning process to complete',\n primaryButtonText: 'Clone and move'\n };\n }\n }, [modalsOpen]);\n\n const { errorMessage } = modalState || {};\n const { mutate: handleApplication, isLoading: handlingApplication } = useMutation({\n mutationFn: async () => {\n if (!application?.job || !selectedJob) return;\n switch (modalsOpen) {\n case ModalType.MOVE: {\n const { res } = await Api.moveApplication(application.job.id, {\n target_job: selectedJob.split(' -')[0],\n application_ids: [application.id]\n });\n return res;\n }\n case ModalType.CLONE: {\n const { res } = await Api.cloneApplication(application.job.id, application.id, {\n to_job_id: selectedJob.split(' -')[0],\n cloning_assets: cloneAttachments\n });\n return res;\n }\n }\n },\n onSuccess: (res) => {\n if (modalsOpen === ModalType.MOVE) {\n window.location.href = `${window.location.origin}${res.new_application_link.replace('applications', 'new_applications')}`;\n }\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `${errorMessage}, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.MOVE || modalsOpen === ModalType.CLONE}\n label=\"Move application modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>{modalState?.modalTitle}</Stack>\n <Stack sx={{ paddingRight: '2px', overflow: 'auto', paddingBottom: 3 }}>\n <Autocomplete\n disablePortal\n options={jobs}\n getOptionLabel={(option) => option}\n value={selectedJob}\n sx={{ ...sharedClasses.formAutocomplete, paddingTop: 4, flexGrow: 1 }}\n loading={loadingJobs}\n loadingText=\"Loading workflows...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={modalState?.textFieldLabel}\n InputLabelProps={{ shrink: true }}\n required\n sx={styles.autoCompleteTextfield}\n helperText={error}\n />\n )}\n onChange={(event, value) => {\n value ? setError('') : setError('Must select a job');\n setSelectedJob(value);\n }}\n />\n {modalsOpen === ModalType.CLONE && (\n <Stack sx={{ marginLeft: 0.5 }}>\n <FormControlLabel\n control={\n <Checkbox\n sx={sharedClasses.formCheckbox}\n checked={cloneAttachments}\n onChange={(event) => setCloneAttachments(event.target.checked)}\n />\n }\n label={modalState?.checkboxLabel}\n sx={sharedClasses.checkboxLabel}\n />\n <Typography sx={styles.modalInfoStyle} variant=\"subtitle2\">\n {modalState?.note}\n </Typography>\n </Stack>\n )}\n </Stack>\n <ModalFooterButtons\n primaryButtonText={modalState?.primaryButtonText}\n primaryButtonCallback={() =>\n selectedJob ? handleApplication() : setError('Must select a job')\n }\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n isLoading={handlingApplication}\n primaryButtonMinWidth={modalsOpen === ModalType.CLONE ? '145px' : '75px'}\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Button, Stack, Table, TableBody, TableCell, TableHead, TableRow } from '@mui/material';\nimport { Delete, History } from '@mui/icons-material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { styles } from './styles';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { classes as tableStyles } from '../../../TableStyles';\nimport { ApplicationAction, IApplication } from '../types';\nimport TableContainer from '@mui/material/TableContainer';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport TableSkeleton from '../../Components/Multiposter/TableSkeleton';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport default function SearchIndex({\n isOpen,\n handleClose,\n dispatch\n}: {\n isOpen: boolean;\n handleClose: () => void;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const { data: searchIndexData, isLoading: isLoadingSearchIndex } = useQuery({\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getSearchIndex(application?.job.id, application.id);\n return res;\n }\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in getting Search Index, ${error}`,\n state: 'error'\n }\n });\n },\n refetchOnMount: false,\n queryKey: ['searchIndex']\n });\n\n const { mutate: updateSearchIndex, isLoading: updatingSearchIndex } = useMutation({\n mutationFn: async () => {\n if (!application) return;\n const { res } = await Api.updateSearchIndex(application?.job.id, application.id);\n return res;\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an issue updating search index, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const { mutate: deleteSearchIndex, isLoading: deletingSearchIndex } = useMutation({\n mutationFn: async () => {\n if (!application) return;\n const { res } = await Api.deleteSearchIndex(application?.job.id, application.id);\n return res;\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an issue deleting search index, ${error.error}`,\n state: 'error'\n }\n });\n },\n onSettled: () => {\n setIsDialogOpen(false);\n }\n });\n\n const deleteDialogDescription = () => (\n <Stack>\n <Stack>Are you sure you want to destroy</Stack>\n <Stack>this search index?</Stack>\n </Stack>\n );\n\n return (\n <StyledModal\n isOpen={isOpen}\n label=\"Search Index modal\"\n handleClose={handleClose}\n styleOverrides={{ ...styles.modalStyleOverrides, width: '775px', height: '600px' }}\n closeIconId=\"close-duplicated-candidates-modal-button\"\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Search Index</Stack>\n <Stack flexDirection=\"row\" gap={2}>\n <Button\n sx={{ ...sharedClasses.genericButtonSecondary, minWidth: '200px' }}\n startIcon={\n updatingSearchIndex ? <CircularProgress size={20} color=\"inherit\" /> : <History />\n }\n disabled={updatingSearchIndex}\n onClick={() => updateSearchIndex()}\n >\n {updatingSearchIndex ? 'Updating Search Index' : 'Update Search Index'}\n </Button>\n <Button\n sx={sharedClasses.genericRedButton}\n id=\"delete-search-index-button\"\n startIcon={<Delete />}\n onClick={() => {\n setIsDialogOpen(true);\n }}\n >\n Delete Search Index\n </Button>\n </Stack>\n <Stack>\n <Table sx={tableStyles.tableStyling}>\n <TableHead>\n <TableRow>\n {['Keys', 'Scout Data', 'Search Index'].map((title, index) => (\n <TableCell\n key={index}\n sx={{ ...tableStyles.tableHeader, backgroundColor: 'inherit' }}\n >\n {title}\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n </Table>\n\n {isLoadingSearchIndex ? (\n <TableSkeleton size={4} />\n ) : (\n <TableContainer sx={{ maxHeight: 325 }}>\n <Table sx={tableStyles.tableStyling}>\n <TableBody>\n {searchIndexData &&\n searchIndexData.keys.map((key: string) => {\n const sameData =\n searchIndexData?.scout_data[key] === searchIndexData?.search_data[key];\n return (\n <TableRow key={key} sx={{ td: { overflowWrap: 'anywhere' } }}>\n <TableCell\n sx={{\n fontWeight: 'bold',\n color: theme.palette.common.grey,\n width: '160px'\n }}\n >\n {key}\n </TableCell>\n <TableCell\n sx={{\n width: '252px',\n color: sameData\n ? theme.palette.common.black\n : theme.palette.secondary.mediumRed\n }}\n >\n {searchIndexData?.scout_data[key] || '-'}\n </TableCell>\n <TableCell\n sx={{\n color: sameData\n ? theme.palette.common.black\n : theme.palette.secondary.mediumRed\n }}\n >\n {searchIndexData?.search_data[key] || '-'}\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </TableContainer>\n )}\n </Stack>\n </Stack>\n <GenericDialog\n isDialogOpen={isDialogOpen}\n setDialogOpen={setIsDialogOpen}\n title=\"Destroy search index?\"\n description={deleteDialogDescription()}\n buttonCallback={() => deleteSearchIndex()}\n callbackLoading={deletingSearchIndex}\n buttonText=\"Destroy\"\n url=\"\"\n primaryButtonId=\"delete-search-index-button\"\n secondaryButtonId=\"cancel-delete-search-index-button\"\n />\n </StyledModal>\n );\n}\n","import React, { Dispatch, useRef, useState } from 'react';\nimport { Autocomplete, Stack, TextField } from '@mui/material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication, ITemplateAttachment } from '../types';\nimport { ModalType } from '../config';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from './styles';\nimport EmailsDropdown from './Components/EmailsDropdown';\nimport EmailBodyComponent from './Components/EmailBodyComponent';\nimport { useGetEmailTemplate, useGetEvents } from '../helper';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { IEvent } from '../../Job/types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { IEventType } from '../../../ScoutCalendar/types';\nimport AttachmentSelectorAndPreview from '../../Components/CustomUIElements/AttachmentSelectorAndPreview';\nimport { FileWithPath } from 'react-dropzone';\nimport { stringToSeconds } from '../../Components/Utilities/stringToSeconds';\nimport { serialize } from 'object-to-formdata';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport DelaySelect from '../../EditJob/Automation/shared/DelaySelect';\nimport { scrollToElement } from '../../utils/scroll-to-element';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nexport default function SendEmail({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n const [delay, setDelay] = useState('None');\n const [selectedEmailTemplate, setSelectedEmailTemplate] = useState<string | null>(null);\n const [selectedEvent, setSelectedEvent] = useState<IEvent | null>(null);\n const [selectedCareAdvantageEvent, setSelectedCareAdvantageEvent] = useState<IEventType | null>(\n null\n );\n const [subject, setSubject] = useState<string>('');\n const [body, setBody] = useState<string>('');\n const [attachments, setAttachments] = useState<FileWithPath[]>([]);\n const [templateAttachments, setTemplateAttachments] = useState<ITemplateAttachment[]>([]);\n const [errors, setErrors] = useState<Record<string, string>>({});\n const { modalsOpen, apiKey, emailPlaceholders } = ApplicationState;\n const jobId = application?.job.id;\n const hasEventPermission = permissions?.['Events']?.['Create / Edit Events'];\n const fieldRefs = {\n subject: useRef<HTMLInputElement>(null),\n body: useRef<HTMLDivElement>(null)\n };\n\n const getEmailTemplateEndpoint = (() => {\n if (!hasEventPermission && selectedEmailTemplate && jobId) {\n return Api.getEmailTemplateFromJob(\n apiKey,\n Number(selectedEmailTemplate.split(' -')[0]),\n jobId\n );\n }\n })();\n\n useGetEmailTemplate({\n apiKey,\n selectedEmailTemplate,\n setBody,\n dispatch,\n setSubject,\n endpoint: getEmailTemplateEndpoint\n });\n\n const { events, loadingEvents } = useGetEvents({\n apiKey,\n dispatch,\n enabled: !!hasEventPermission\n });\n\n const { data: careAdvantageEvents } = useQuery({\n queryKey: ['care advantage events'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getCareAdvantageEvents(application?.job.id);\n return res;\n }\n },\n onError: () =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: 'Failed to fetch care advantage events data', state: 'error' }\n })\n });\n\n const { mutate: sendEmail, isLoading: sendingEmail } = useMutation({\n mutationFn: async () => {\n if (application) {\n const data = {\n applications_ids: [application.id],\n email_template_id: selectedEmailTemplate?.split(' -')[0],\n event_id: selectedEvent ? selectedEvent.id : undefined,\n subject,\n body: body,\n delay: stringToSeconds(delay),\n care_advantage_event_id: selectedCareAdvantageEvent ? selectedCareAdvantageEvent.id : '',\n ...(attachments.length > 0 && { new_email_attachments: attachments })\n };\n\n const res = await fetch(`/api/v4/jobs/${application.job.id}/applications/bulk_email`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey\n },\n body: serialize({ email_batch: data })\n });\n return res;\n }\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: 'Email has been sent', state: 'success' }\n });\n handleClose();\n },\n onError: () =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Failed to send email`, state: 'error' }\n })\n });\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n const validateFields = () => {\n const fieldsErrors: Record<string, string> = {};\n !subject.trim() && (fieldsErrors.subject = 'Must add email subject');\n !body.trim() && (fieldsErrors.body = 'Must add email body');\n setErrors(fieldsErrors);\n if (fieldsErrors.subject) {\n scrollToElement(fieldRefs.subject);\n } else if (fieldsErrors.body) {\n scrollToElement(fieldRefs.body);\n }\n return !Object.keys(fieldsErrors).length;\n };\n\n if (!jobId) return null;\n\n const subEntityGroupingEndpoint = Api.getSubEntityGroupedEmailTemplates(apiKey, jobId, {\n group_templates: true\n });\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.SEND_EMAIL}\n label=\"Send email modal\"\n handleClose={handleClose}\n styleOverrides={{ ...styles.modalStyleOverrides, ...styles.wideModal }}\n disableEnforceFocus\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Send email</Stack>\n <Stack sx={{ overflow: 'auto', rowGap: 2, padding: '0px 2px' }}>\n <Stack sx={{ paddingTop: 4, rowGap: 3 }}>\n <EmailsDropdown\n apiKey={apiKey}\n selectedEmailTemplate={selectedEmailTemplate}\n setSelectedEmailTemplate={setSelectedEmailTemplate}\n setBody={setBody}\n dispatch={dispatch}\n dropdownLabel=\"Template\"\n endpoint={subEntityGroupingEndpoint}\n />\n <DelaySelect delay={delay} setDelay={setDelay} />\n {hasEventPermission && (\n <Autocomplete\n disablePortal\n options={events || []}\n getOptionLabel={(option) => option.subject}\n value={selectedEvent}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3, flexGrow: 1 }}\n loading={loadingEvents}\n loadingText=\"Loading events list...\"\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Event\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={{ '& .MuiInputBase-root': { margin: 'unset', marginTop: 0.5 } }}\n />\n )}\n onChange={(event, value) => setSelectedEvent(value)}\n />\n )}\n {careAdvantageEvents?.has_care_advantage_integration && (\n <Autocomplete\n disablePortal\n options={careAdvantageEvents?.care_advantage_events || []}\n getOptionLabel={(option) => option.name}\n value={selectedCareAdvantageEvent}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3, flexGrow: 1 }}\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Select a care advantage event\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={{ '& .MuiInputBase-root': { margin: 'unset', marginTop: 0.5 } }}\n />\n )}\n onChange={(event, value) => setSelectedCareAdvantageEvent(value)}\n />\n )}\n <Stack>\n <FormTextField\n label=\"Subject\"\n value={subject}\n required\n onChange={(v) => setSubject(v.target.value)}\n error={errors.subject}\n innerRef={fieldRefs.subject}\n />\n <Stack\n sx={{ paddingLeft: 0.5, color: '#838383', fontSize: '11px', lineBreak: 'anywhere' }}\n >{`Available placeholders are: ${emailPlaceholders}`}</Stack>\n </Stack>\n <EmailBodyComponent\n body={body}\n setBody={setBody}\n placeholders={emailPlaceholders}\n error={errors.body}\n innerRef={fieldRefs.body}\n />\n <Stack sx={{ rowGap: 1, div: { margin: 'unset' } }}>\n <Stack sx={{ color: theme.palette.common.grey }}>Attachments</Stack>\n <AttachmentSelectorAndPreview\n attachments={attachments}\n setAttachments={setAttachments}\n templateAttachments={templateAttachments}\n />\n </Stack>\n </Stack>\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Send\"\n primaryButtonCallback={() => validateFields() && sendEmail()}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n isLoading={sendingEmail}\n primaryButtonMinWidth=\"75px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { Dispatch, useRef, useState } from 'react';\nimport { Autocomplete, Box, Button, CircularProgress, Stack, TextField } from '@mui/material';\nimport { NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication, IFormsOption } from '../types';\nimport { ADD_FORM_PLACEHOLDER, checkMissingPlaceholders, ModalType } from '../config';\nimport { styles } from './styles';\nimport FormsDropdown from './Components/FormsDropdown';\nimport EmailsDropdown from './Components/EmailsDropdown';\nimport EmailBodyComponent from './Components/EmailBodyComponent';\nimport { useGetEmailTemplate, useGetSmsTemplatePlaceholders } from '../helper';\nimport MultiTagInput from '../../Components/CustomUIElements/MultiTagInput';\nimport { emailIsValid } from '../../Components/Utilities/emailIsValid';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { IApplicationStatus, ISMSTemplate } from '../../Job/types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { scrollToElement } from '../../utils/scroll-to-element';\nimport { classes } from '../../Job/Applications/styles';\nimport NotificationOptionSwitch from './Components/NotificationOptionsSwitch';\nimport SmsTemplateComponent from '../../Components/CustomUIElements/SmsTemplateComponent';\nimport { validatePhone } from './SendSms';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { MissingPlaceholdersConfirmationModal } from './MissingPlaceholdersConfirmationModal';\n\nexport default function SendForm({\n ApplicationState,\n dispatch,\n smsTemplatePermissions\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n smsTemplatePermissions: boolean;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n const applicationStatuses = queryClient.getQueryData<IApplicationStatus[]>([\n 'application statuses'\n ]);\n const [selectedForm, setSelectedForm] = useState<IFormsOption | null>(null);\n const [selectedEmailTemplate, setSelectedEmailTemplate] = useState<string | null>('');\n const [subject, setSubject] = useState<string>('');\n const [body, setBody] = useState<string>('');\n const [emails, setEmails] = useState<string[]>([]);\n const [submissionError, setSubmissionError] = useState<string>('');\n const [status, setStatus] = useState<IApplicationStatus | null>(\n applicationStatuses?.find((s) => s.id === application?.status_details?.id) ||\n applicationStatuses?.[0] ||\n null\n );\n const [errors, setErrors] = useState<Record<string, string>>({});\n const [step, setStep] = useState<number>(1);\n const [notification, setNotification] = useState<string>('email');\n const [smsMessage, setSmsMessage] = useState<string>('');\n const [smsTemplate, setSmsTemplate] = useState<ISMSTemplate | null>(null);\n const [phoneNumbers, setPhoneNumbers] = useState<string[]>([]);\n const [phoneNumberError, setPhoneNumberError] = useState<string>('');\n const jobId = application?.job.id;\n const hasEventPermission = permissions?.['Events']?.['Create / Edit Events'];\n const [missingPlaceholderConfirmation, setMissingPlaceholderConfirmation] =\n useState<boolean>(false);\n\n const fieldRefs = {\n form: useRef<HTMLDivElement>(null),\n template: useRef<HTMLDivElement>(null),\n subject: useRef<HTMLInputElement>(null),\n body: useRef<HTMLDivElement>(null)\n };\n\n const { modalsOpen, apiKey, emailPlaceholders } = ApplicationState;\n\n const getEmailTemplateEndpoint = (() => {\n if (!hasEventPermission && selectedEmailTemplate && jobId) {\n return Api.getEmailTemplateFromJob(\n apiKey,\n Number(selectedEmailTemplate.split(' -')[0]),\n jobId\n );\n }\n })();\n\n useGetEmailTemplate({\n apiKey,\n selectedEmailTemplate,\n setBody,\n dispatch,\n setSubject,\n endpoint: getEmailTemplateEndpoint\n });\n\n const { placeholders } = useGetSmsTemplatePlaceholders({ kind: 'form', dispatch });\n\n const { mutate: sendForm, isLoading: sendingForm } = useMutation({\n mutationFn: async () => {\n if (application) {\n const { res } =\n notification === 'email'\n ? await Api.sendForm(application.job.id, application.id, {\n form_id: selectedForm?.id,\n email_template_id: selectedEmailTemplate?.split(' -')[0],\n status_id: status?.id,\n recipients: emails.join(','),\n subject,\n body\n })\n : await Api.sendFormBySMS(application.job.id, application.id, {\n form_id: selectedForm?.id,\n status_id: status?.id,\n phones: phoneNumbers.join(','),\n body: smsMessage.trim(),\n sms_template_id: smsTemplate?.id\n });\n return res;\n }\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: 'Form has been sent', state: 'success' }\n });\n handleClose();\n },\n onError: () =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Failed to send form`, state: 'error' }\n })\n });\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n const validateFields = () => {\n const fieldsErrors: Record<string, string> = {};\n setPhoneNumberError('');\n setSubmissionError('');\n if (step === 1) {\n !selectedForm && (fieldsErrors.form = 'Must select a form');\n } else {\n if (notification === 'email') {\n !selectedEmailTemplate && (fieldsErrors.template = 'Must select a template');\n !subject.trim() && (fieldsErrors.subject = 'Must add email subject');\n !body.trim() && (fieldsErrors.body = 'Must add email body');\n !emails.length && setSubmissionError('Must input at least one valid email');\n } else {\n !phoneNumbers.length && setPhoneNumberError('Must input at least one valid phone number');\n !smsMessage.length && (fieldsErrors.sms = 'Must add sms message');\n }\n }\n setErrors(fieldsErrors);\n if (fieldsErrors.form) {\n scrollToElement(fieldRefs.form);\n } else if (fieldsErrors.template) {\n scrollToElement(fieldRefs.template);\n } else if (fieldsErrors.subject) {\n scrollToElement(fieldRefs.subject);\n } else if (fieldsErrors.body) {\n scrollToElement(fieldRefs.body);\n }\n return !Object.keys(fieldsErrors).length;\n };\n\n const handleSubmit = () => {\n if (!validateFields()) {\n return;\n }\n if (step === 1) {\n setStep(2);\n return;\n }\n const content = notification === 'email' ? body.trim() : smsMessage.trim();\n const missingPlaceholders = checkMissingPlaceholders([ADD_FORM_PLACEHOLDER], content);\n missingPlaceholders ? setMissingPlaceholderConfirmation(true) : sendForm();\n };\n\n const buttonName = step === 1 ? 'Next' : 'Send';\n\n if (!jobId) return null;\n\n const subEntityGroupingEndpoint = Api.getSubEntityGroupedEmailTemplates(apiKey, jobId, {\n group_templates: true\n });\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.SEND_FORM}\n label=\"Send form modal\"\n handleClose={handleClose}\n styleOverrides={{ ...styles.modalStyleOverrides, ...(step === 1 ? {} : styles.wideModal) }}\n disableEnforceFocus\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Send form</Stack>\n {step === 1 ? (\n <Stack sx={{ rowGap: 3, padding: '0px 4px 16px 2px', overflow: 'auto' }}>\n <FormsDropdown\n applicationId={application?.id}\n selectedForm={selectedForm}\n setSelectedForm={(value) => {\n value && setErrors({ ...errors, form: '' });\n setSelectedForm(value);\n }}\n dispatch={dispatch}\n dropdownLabel=\"Form\"\n error={errors.form}\n innerRef={fieldRefs.form}\n />\n <Autocomplete\n disablePortal\n options={applicationStatuses || []}\n getOptionLabel={(option) => option.name}\n value={status}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3, flexGrow: 1 }}\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"After completing the form, change status to\"\n placeholder=\"Please select\"\n InputLabelProps={{ shrink: true }}\n sx={{ '& .MuiInputBase-root': { margin: 'unset', marginTop: 0.5 } }}\n />\n )}\n onChange={(event, value) => setStatus(value)}\n />\n </Stack>\n ) : (\n <Stack sx={{ overflow: 'auto', flexGrow: 1 }}>\n <NotificationOptionSwitch\n setNotification={setNotification}\n notification={notification}\n />\n {notification === 'email' ? (\n <Stack sx={{ rowGap: 2 }}>\n <MultiTagInput\n tags={emails}\n setTags={setEmails}\n validation={emailIsValid}\n validationMessage=\"Must input valid email\"\n label=\"Recipients\"\n width=\"100%\"\n error={submissionError}\n tagType=\"emails\"\n helperText=\"To copy and paste bulk emails, email addresses must be separated with a comma\"\n required\n styles={{ margin: 'unset' }}\n />\n <Stack sx={{ paddingRight: '2px', paddingTop: 3 }}>\n <EmailsDropdown\n apiKey={apiKey}\n selectedEmailTemplate={selectedEmailTemplate}\n setSelectedEmailTemplate={setSelectedEmailTemplate}\n setBody={setBody}\n dispatch={dispatch}\n required\n dropdownLabel=\"Email template\"\n error={errors.template}\n innerRef={fieldRefs.template}\n endpoint={subEntityGroupingEndpoint}\n />\n </Stack>\n <Stack>\n <FormTextField\n label=\"Subject\"\n value={subject}\n required\n onChange={(v) => setSubject(v.target.value)}\n error={errors.subject}\n innerRef={fieldRefs.subject}\n />\n <Stack\n sx={{\n paddingLeft: 0.5,\n color: '#838383',\n fontSize: '11px',\n lineBreak: 'anywhere'\n }}\n >{`Available placeholders are: ${emailPlaceholders}`}</Stack>\n </Stack>\n <EmailBodyComponent\n body={body}\n setBody={setBody}\n placeholders={emailPlaceholders}\n error={errors.body}\n innerRef={fieldRefs.body}\n />\n </Stack>\n ) : (\n <>\n <MultiTagInput\n tags={phoneNumbers}\n setTags={setPhoneNumbers}\n validation={validatePhone}\n validationMessage=\"Must input valid phone number\"\n label=\"Phone numbers\"\n width=\"100%\"\n error={phoneNumberError}\n tagType=\"phone number\"\n helperText=\"To copy and paste bulk sms, phone numbers must be separated with a comma\"\n required\n styles={{ margin: 'unset' }}\n />\n <SmsTemplateComponent\n smsMessageError={errors.sms}\n {...{\n smsTemplatePermissions,\n smsMessage,\n setSmsMessage,\n smsTemplate,\n setSmsTemplate,\n dispatch,\n placeholders\n }}\n />\n </>\n )}\n </Stack>\n )}\n <Box sx={{ ...classes.modalFooter, columnGap: 1, paddingTop: 1 }}>\n <Button\n id=\"close-add-to-event-modal-button\"\n sx={classes.modalCancelButton}\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: null })}\n >\n Cancel\n </Button>\n {step !== 1 && (\n <Button\n onClick={() => setStep(1)}\n sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n >\n <NavigateBeforeIcon />\n </Button>\n )}\n <Button\n id=\"add-to-event-submit-button\"\n type=\"submit\"\n sx={{\n ...sharedClasses.genericButton,\n '&.Mui-disabled ': { background: '#DDDDDD', color: '#939393' }\n }}\n onClick={handleSubmit}\n >\n {sendingForm ? <CircularProgress size={20} color=\"inherit\" /> : buttonName}\n </Button>\n </Box>\n </Stack>\n {missingPlaceholderConfirmation && (\n <MissingPlaceholdersConfirmationModal\n missingPlaceholderList={ADD_FORM_PLACEHOLDER}\n overrideFunction={sendForm}\n missingPlaceholderConfirmation={missingPlaceholderConfirmation}\n setMissingPlaceholderConfirmation={setMissingPlaceholderConfirmation}\n overridingLoading={sendingForm}\n />\n )}\n </StyledModal>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack } from '@mui/material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport { ModalType } from '../config';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from './styles';\nimport SmsTemplateComponent from '../../Components/CustomUIElements/SmsTemplateComponent';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { ISMSTemplate } from '../../Job/types';\n\nexport const validatePhone = (phone: string) => {\n const phoneRegex = /^[+-\\s0-9()]*$/;\n return phoneRegex.test(phone);\n};\n\nexport default function SendSms({\n smsTemplatePermissions,\n ApplicationState,\n dispatch\n}: {\n smsTemplatePermissions: boolean;\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const [smsMessage, setSmsMessage] = useState<string>('');\n const [smsTemplate, setSmsTemplate] = useState<ISMSTemplate | null>(null);\n const [phone, setPhone] = useState<string>(application?.candidate.phone1 || '');\n const [phoneError, setPhoneError] = useState<string>('');\n const [smsMessageError, setSmsMessageError] = useState<string>('');\n const { modalsOpen } = ApplicationState;\n\n const handleClose = () => dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n\n const { mutate: sendSms, isLoading: sendingSms } = useMutation({\n mutationFn: async () => {\n if (application) {\n const { res } = await Api.sms(application.job.id, application.id, {\n to: phone,\n content: smsMessage,\n sms_template_id: smsTemplate?.id\n });\n return res;\n }\n },\n onSuccess: (res) => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.message, state: 'success' } });\n handleClose();\n },\n onError: () =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Failed to send sms`, state: 'error' }\n })\n });\n\n const handleSubmit = () => {\n !validatePhone(phone) &&\n setPhoneError(\n 'Please use a valid phone format. Digits only or add + for international numbers'\n );\n !phone && setPhoneError('Must add phone number');\n !smsMessage.trim() && setSmsMessageError('Must add SMS content');\n validatePhone(phone) && phone.trim() && smsMessage.trim() && sendSms();\n };\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.SEND_SMS}\n label=\"Send SMS modal\"\n handleClose={handleClose}\n styleOverrides={styles.modalStyleOverrides}\n >\n <Stack sx={styles.modalContainer}>\n <Stack sx={styles.modalTitle}>Send SMS</Stack>\n <Stack sx={{ rowGap: 1, marginTop: 1, overflow: 'auto' }}>\n <FormTextField\n label=\"Phone number\"\n value={phone}\n onChange={(e) => {\n phoneError && setPhoneError('');\n setPhone(e.target.value);\n }}\n styles={{ width: '40%' }}\n required\n error={phoneError}\n />\n <SmsTemplateComponent\n smsMessage={smsMessage}\n setSmsMessage={setSmsMessage}\n smsTemplate={smsTemplate}\n setSmsTemplate={setSmsTemplate}\n smsTemplatePermissions={smsTemplatePermissions}\n dispatch={dispatch}\n dropdownLabel=\"Template\"\n smsMessageError={smsMessageError}\n multipleSms\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Send\"\n primaryButtonCallback={handleSubmit}\n isLoading={sendingSms}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n primaryButtonMinWidth=\"95px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack, Autocomplete, TextField } from '@mui/material';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { IAssignableUsers } from '../../ApprovalForms/types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../../Candidate/styles';\nimport { ApplicationAction, ApplicationState } from '../types';\nimport { IWorkflow } from '../../Candidate/types';\nimport { IApplication } from '../types';\nimport { ModalType } from '../config';\nimport { useGetAssignableUsers } from '../helper';\n\nexport default function TaskWorkflow({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen } = ApplicationState;\n const [assignedUser, setAssignedUser] = useState<IAssignableUsers | null>(null);\n const [workflow, setWorkflow] = useState<IWorkflow | null>(null);\n const [errors, setErrors] = useState<Record<string, string>>({});\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const { assignableUsers, loadingAssignableUsers } = useGetAssignableUsers({ dispatch });\n\n const handleClose = () => {\n dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n };\n\n const { data: workflows, isLoading: loadingWorkflows } = useQuery({\n queryKey: ['workflows'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getWorkflows(application.id);\n return res;\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting candidate data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const { mutate: assignWorkflow, isLoading: assigningWorkflow } = useMutation({\n mutationFn: async () => {\n if (application && workflow && assignedUser) {\n return Api.assignWorkflow(application.id, { id: workflow.id, user_id: assignedUser.id });\n }\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Workflow has been successfully started.`, state: 'success' }\n });\n queryClient.invalidateQueries(['tasks'], { exact: true });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error starting the workflow, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const validateInputs = () => {\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!workflow) inputErrors.workflow = 'Workflow is a required field';\n if (!assignedUser) inputErrors.user = 'Assigned user is a required field';\n setErrors(inputErrors);\n return !Object.keys(inputErrors).length;\n };\n\n return (\n <StyledModal\n isOpen={modalsOpen === ModalType.TASK_WORKFLOW}\n label=\"Application task workflow\"\n handleClose={handleClose}\n styleOverrides={styles.modalContainer}\n closeIconId=\"close-start-workflow-button\"\n >\n <Stack sx={styles.modalContent}>\n <Stack sx={styles.modalTitle}>Start workflow</Stack>\n <Stack sx={styles.modalCandidateName}>\n {`Application #${application?.id} - ${application?.candidate.firstname} ${application?.candidate.lastname}`}\n </Stack>\n <Autocomplete\n disablePortal\n id=\"application-task-workflows-select\"\n options={workflows?.workflows || []}\n getOptionLabel={(option) => option.name}\n value={workflow}\n sx={{ ...sharedClasses.formAutocomplete, paddingTop: 3, width: '35%' }}\n loading={loadingWorkflows}\n loadingText=\"Loading workflows...\"\n ListboxProps={{ style: styles.listboxProps }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Workflow name\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n error={!workflow}\n helperText={!workflow && errors.workflow}\n />\n )}\n onChange={(event, value) => setWorkflow(value)}\n />\n <Autocomplete\n disablePortal\n id=\"application-task-workflow-assigned-users-select\"\n options={assignableUsers || []}\n getOptionLabel={(option: IAssignableUsers) => `${option?.firstname} ${option?.lastname}`}\n value={assignedUser}\n sx={{ ...sharedClasses.formAutocomplete, paddingTop: 3, width: '35%' }}\n loading={loadingAssignableUsers}\n loadingText=\"Loading assignable users...\"\n ListboxProps={{ style: styles.listboxProps }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Assign to\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n error={!assignedUser}\n helperText={!assignedUser && errors.user}\n />\n )}\n onChange={(event, value) => setAssignedUser(value)}\n />\n <ModalFooterButtons\n primaryButtonText=\"Submit\"\n primaryButtonCallback={() => validateInputs() && assignWorkflow()}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n isLoading={assigningWorkflow}\n primaryButtonID=\"submit-workflow-button\"\n secondaryButtonID=\"cancel-workflow-button\"\n primaryButtonMinWidth=\"90px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Popover, Stack } from '@mui/material';\nimport { styles } from './styles';\nimport { ApplicationAction, ApplicationState } from './types';\nimport { ModalType } from './config';\nimport { DARK_RED, RED } from '../../ThemeContext/constants';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IUserPermissions } from '../Components/sharedTypes';\n\ntype IOption = {\n id: string;\n label: string;\n action: () => void;\n permission?: boolean;\n};\n\nconst MoreOptionsPopover = ({\n actionsState,\n dispatch,\n label\n}: {\n actionsState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n label: string;\n}) => {\n const queryClient = useQueryClient();\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n const { isAdminUser } = actionsState;\n\n const options: IOption[] = [\n {\n id: 'clone',\n label: 'Clone',\n action: () => {\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: ModalType.CLONE\n });\n },\n permission: permissions?.Applications?.['Clone and Move Application']\n },\n {\n id: 'resend',\n label: 'Resend Application',\n action: () => {\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: ModalType.RESEND\n });\n },\n permission: permissions?.Applications?.['Re-send Application']\n },\n {\n id: 'trash',\n label: 'Trash',\n action: () => {\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: ModalType.TRASH\n });\n },\n permission: permissions?.Trash?.['Trash Application']\n },\n {\n id: 'delete',\n label: 'Delete',\n action: () => {\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: ModalType.DELETE\n });\n },\n permission: isAdminUser\n },\n {\n id: 'search-index',\n label: 'Search index',\n action: () => {\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: ModalType.SEARCH\n });\n },\n permission: isAdminUser\n }\n ];\n const handleSelectItem = (action: () => void) => {\n dispatch({\n type: 'SET_ACTIONS',\n payload: { anchorEl: null }\n });\n\n action();\n };\n\n return (\n <Popover\n id={`${label}-more-options-popover`}\n sx={styles.actionsMenu}\n open={actionsState?.actions.anchorEl !== null}\n anchorEl={actionsState?.actions.anchorEl}\n onClose={() =>\n dispatch({\n type: 'SET_ACTIONS',\n payload: { anchorEl: null }\n })\n }\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {options\n .filter((option) => option.permission)\n .map((option) => (\n <Stack\n id={`${option.id}${option.id === 'search-index' ? '' : `-application`}-button`}\n sx={{\n ...styles.actionsItem,\n ...(option.id === 'delete'\n ? { color: `${RED}`, ':hover': { color: `${DARK_RED}` } }\n : undefined)\n }}\n key={option.id}\n onClick={() => handleSelectItem(option.action)}\n className={`${option.id}-action-button`}\n >\n {option.label}\n </Stack>\n ))}\n </Popover>\n );\n};\n\nexport default MoreOptionsPopover;\n","import React, { useState, useRef, Dispatch } from 'react';\nimport { Box, CircularProgress, Stack } from '@mui/material';\nimport { Update as UpdateIcon, Autorenew as AutorenewIcon } from '@mui/icons-material';\nimport { useQueryClient, useMutation } from '@tanstack/react-query';\nimport { ApplicationAction, IApplication } from '../types';\nimport AISummaryNoAccess from './AISummaryNoAccess';\nimport { styles } from '../styles';\nimport {\n FelixConfused,\n FelixMessageSVG\n} from '../../../AIStudio/SharedComponents/Graphics/FelixSVG';\nimport DisplayHTMLViewOnly from '../../../AIStudio/SharedComponents/DisplayHTMLViewOnly';\nimport { handleRichCopy } from '../../Components/Utilities/handleRichCopy';\nimport dayjs from 'dayjs';\nimport Api from '../API';\n\nexport default function AISummary({\n dispatch,\n aiSummariesEnabled\n}: {\n dispatch: Dispatch<ApplicationAction>;\n aiSummariesEnabled: boolean;\n}) {\n const [emails, setEmails] = useState<string[]>([]);\n const [emailInputOpen, setEmailInputOpen] = useState<boolean>(false);\n const [copied, setCopied] = useState(false);\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const summaryRef = useRef<HTMLDivElement | null>(null);\n\n const downloadPDF = () => {\n const url = `/api/v4/jobs/${application?.job.id}/applications/${application?.id}/application_summary.pdf`;\n window.open(url, '_blank');\n };\n\n const { mutate: sendEmail, isLoading: sendingEmails } = useMutation({\n mutationFn: async () => {\n if (application) {\n await Api.sendApplicationSummary(application.job.id, application.id, emails);\n }\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Email has been sent successfully`, state: 'success' }\n });\n setEmailInputOpen(false);\n setEmails([]);\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in sending email, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const { mutate: updateSummary, isLoading: updatingSummary } = useMutation({\n mutationFn: async () => {\n if (application) {\n await Api.updateSummary(application.job.id, application.id);\n }\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'Summary is being generated, this may take a few minutes',\n state: 'success'\n }\n });\n queryClient.invalidateQueries(['application'], { exact: true });\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in generating summary, ${error}`,\n state: 'error'\n }\n });\n }\n });\n\n return (\n <Stack sx={styles.AISummaryContainer}>\n <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Felix AI Summary</Stack>\n {aiSummariesEnabled ? (\n <>\n {application?.summary ? (\n <Stack sx={{ rowGap: 2 }}>\n <Stack sx={{ flexDirection: 'row', columnGap: 1, justifyContent: 'space-between' }}>\n <Stack sx={styles.AISummaryHeader}>\n <FelixMessageSVG />\n <Stack sx={{ ...styles.AISummaryMessage, fontSize: '15px' }}>\n <Box>\n I’ve created your <span>candidate summary</span>! This summary\n </Box>\n <Stack>compares your application against the job requirements.</Stack>\n </Stack>\n </Stack>\n <Stack sx={{ rowGap: '4px', marginTop: 2 }}>\n <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n <Stack\n id=\"update-summary-button\"\n sx={styles.generateSummaryButton}\n onClick={() => updateSummary()}\n >\n Update summary{' '}\n {updatingSummary ? (\n <CircularProgress size={12} color=\"inherit\" sx={{ marginRight: '4px' }} />\n ) : (\n <AutorenewIcon sx={{ transform: 'rotate(90deg)', fontSize: '18px' }} />\n )}\n </Stack>\n <Stack\n id=\"copy-summary-button\"\n sx={{\n ...styles.AISummaryButton,\n width: '80px',\n padding: '6px 16px',\n alignItems: 'center'\n }}\n onClick={() => handleRichCopy(summaryRef.current, setCopied)}\n >\n {copied ? 'Copied!' : 'Copy'}\n </Stack>\n </Stack>\n <Stack sx={styles.summaryLastUpdated}>\n <UpdateIcon sx={{ transform: 'scaleX(-1)', fontSize: '14px' }} /> Last updated{' '}\n {dayjs(application?.summary_updated_at).format('D/M/YY, LT')}\n </Stack>\n </Stack>\n </Stack>\n <DisplayHTMLViewOnly\n content={application.summary}\n viewerRef={summaryRef}\n onExportClick={downloadPDF}\n setEmails={setEmails}\n emails={emails}\n onSendEmailClick={sendEmail}\n emailInputOpen={emailInputOpen}\n setEmailInputOpen={setEmailInputOpen}\n sendingEmails={sendingEmails}\n sendEmailButtonId=\"send-email-summary-button\"\n emailButtonId=\"email-summary-button\"\n exportButtonId=\"download-summary-as-pdf-button\"\n />\n </Stack>\n ) : (\n <Stack sx={{ alignItems: 'center', rowGap: 2 }}>\n <Stack sx={{ width: '40px' }}>\n <FelixConfused />\n </Stack>\n <Stack sx={{ color: '#939393', fontWeight: 600 }}>No summary available</Stack>\n <Stack\n id=\"generate-summary-button\"\n sx={{\n ...styles.generateSummaryButton,\n minWidth: '155px',\n justifyContent: 'center'\n }}\n onClick={() => updateSummary()}\n >\n {updatingSummary ? (\n <CircularProgress size={18} color=\"inherit\" sx={{ marginRight: '4px' }} />\n ) : (\n 'Generate summary'\n )}\n </Stack>\n </Stack>\n )}\n </>\n ) : (\n <AISummaryNoAccess />\n )}\n </Stack>\n );\n}\n","import React from 'react';\nimport { Box, Stack } from '@mui/material';\nimport { FelixStarsSVG } from '../../../AIStudio/SharedComponents/Graphics/FelixSVG';\nimport { styles } from '../styles';\n\nexport default function AISummaryNoAccess() {\n return (\n <Stack sx={{ svg: { width: '75px', height: '75px' }, alignItems: 'center', rowGap: 2 }}>\n <FelixStarsSVG />\n <Stack sx={{ ...styles.AISummaryMessage, alignItems: 'center' }}>\n <Box>\n You do not have <span>AI Screen</span> access. Unlock <span>AI Screen</span> for enhanced\n capabilities\n </Box>\n <Stack>that will optimize your workflow and save you valuable time!</Stack>\n </Stack>\n <Stack\n id=\"find-out-more-button\"\n sx={styles.AISummaryButton}\n onClick={() =>\n window.open(`https://scouttalenthq.com/talent-acquisition-software/ai-suite`, '_blank')\n }\n >\n Find out more\n </Stack>\n </Stack>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Button, Stack } from '@mui/material';\nimport {\n Approval as ApprovalIcon,\n DriveFileMove as DriveFileMoveIcon,\n EditNote as EditNoteIcon,\n Email as EmailIcon,\n Event as EventIcon,\n GroupAdd as GroupAddIcon,\n MenuBook as MenuBookIcon,\n NoteAdd as NoteAddIcon,\n Smartphone as SmartphoneIcon\n} from '@mui/icons-material';\nimport { ExternalEmailSVG, SendFormSVG } from './Icons';\nimport { ApplicationAction, IApplication } from '../types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { ModalType } from '../config';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nexport const ActionButton = ({\n action,\n boldFont,\n buttonId\n}: {\n action: { label: string; icon: React.JSX.Element; onClick: () => void };\n boldFont?: boolean;\n buttonId?: string;\n}) => (\n <Button\n id={buttonId}\n sx={{\n ...sharedClasses.genericButtonSecondary,\n fontWeight: boldFont ? 'bold' : 600,\n columnGap: 1,\n svg: { fontSize: '20px' }\n }}\n onClick={action.onClick}\n >\n {action.icon}\n {action.label}\n </Button>\n);\n\nexport default function Actions({ dispatch }: { dispatch: Dispatch<ApplicationAction> }) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n const actions = [\n {\n label: 'Add record',\n icon: <EditNoteIcon />,\n onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_RECORD }),\n permission: permissions?.Applications?.['Add Notes']\n },\n {\n label: 'Add form',\n icon: <NoteAddIcon />,\n onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_FORM }),\n permission: permissions?.Applications?.['Add Form Response']\n },\n {\n label: 'Send form',\n icon: <SendFormSVG />,\n onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.SEND_FORM }),\n permission: permissions?.Applications?.['Send Forms']\n },\n {\n label: 'External email',\n icon: <ExternalEmailSVG />,\n onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.EMAIL_EXTERNAL }),\n permission: permissions?.Applications?.['Email/Bulk Email External']\n },\n {\n label: 'Send email',\n icon: <EmailIcon />,\n onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.SEND_EMAIL }),\n permission: permissions?.Applications?.['Send Emails']\n },\n {\n label: 'Send SMS',\n icon: <SmartphoneIcon />,\n onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.SEND_SMS }),\n permission: permissions?.Applications?.['Send SMS']\n },\n {\n label: 'Add to event',\n icon: <EventIcon />,\n onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_TO_EVENT }),\n permission: permissions?.Events?.['Create / Edit Events']\n },\n {\n label: 'Export to Onboard',\n icon: <DriveFileMoveIcon />,\n onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.EXPORT_TO_ONBOARD }),\n permission: permissions?.Integrations?.['Export To SCOUT Onboard']\n },\n {\n label: 'Invite to timeslot',\n icon: <GroupAddIcon sx={{ transform: 'scaleX(-1)' }} />,\n onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.INVITE_TO_TIMESLOT }),\n permission: permissions?.Applications?.['Invite To Book In']\n },\n {\n label: 'Interview guide',\n icon: <MenuBookIcon />,\n onClick: () => window.open(`${window.location.origin}${application?.interview_guide_url}`),\n permission: !!application?.interview_guide_url\n },\n {\n label: 'Create approval',\n icon: <ApprovalIcon />,\n onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.CREATE_APPROVAL }),\n permission: true\n }\n ];\n\n return (\n <Stack\n sx={{\n padding: 3,\n borderRadius: '6px',\n border: '1px solid #E3E3E3',\n rowGap: 2\n }}\n >\n <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Actions</Stack>\n <Stack sx={{ flexDirection: 'row', flexWrap: 'wrap', columnGap: 2, rowGap: 2 }}>\n {actions\n .filter((a) => a.permission)\n .map((action, index) => (\n <ActionButton\n key={index}\n action={action}\n buttonId={`${action.label.toLowerCase().split(' ').join('-')}-button`}\n />\n ))}\n </Stack>\n </Stack>\n );\n}\n","import React from 'react';\nimport { Link, Stack } from '@mui/material';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IApplication } from '../types';\nimport dayjs from 'dayjs';\nimport { styles } from '../styles';\n\nexport default function AdditionalInfo() {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n if (!application) return null;\n return (\n <Stack sx={styles.additionalInfoContainer}>\n <Stack sx={{ rowGap: 1 }}>\n <Stack sx={{ color: '#084D6D' }}>Lodged by</Stack>\n <Stack>{application.lodged_by || '-'}</Stack>\n </Stack>\n <Stack sx={{ rowGap: 1 }}>\n <Stack sx={{ color: '#084D6D' }}>Applied</Stack>\n <Stack>{dayjs(application.created_at).format('D MMM YYYY, LT')}</Stack>\n </Stack>\n {application.job.privacy_acknowledgement && (\n <Stack sx={{ rowGap: 1 }}>\n <Stack sx={{ color: '#084D6D' }}>Privacy statement</Stack>\n <Stack>{application.privacy_acknowledgement ? 'Agreed' : '-'}</Stack>\n </Stack>\n )}\n {application.source && (\n <Stack sx={{ rowGap: 1 }}>\n <Stack sx={{ color: '#084D6D' }}>Source</Stack>\n <Stack>{application.source || '-'}</Stack>\n </Stack>\n )}\n {application.original_job && (\n <Stack sx={{ rowGap: 1 }}>\n <Stack sx={{ color: '#084D6D' }}>Original job</Stack>\n <Link\n id=\"original-job-link\"\n href={`${window.location.origin}/admin/jobs/${application.original_job.id}`}\n sx={{ color: 'black !important' }}\n >\n {application.original_job?.title || '-'}\n </Link>\n </Stack>\n )}\n </Stack>\n );\n}\n","import React, { useEffect } from 'react';\nimport { classes } from '../../../Components/Modals/styles';\nimport { Box } from '@mui/material';\nimport { IAttachment } from '../../types';\n\nexport default function AudioPreview({\n selectedAttachment,\n setIsLoadingPreview\n}: {\n selectedAttachment: IAttachment;\n setIsLoadingPreview: React.Dispatch<React.SetStateAction<boolean>>;\n}) {\n const BASE_URL = window.location.origin;\n\n useEffect(() => {\n setIsLoadingPreview(true);\n }, [selectedAttachment]);\n\n return (\n <Box sx={{ ...classes.mediaContentContainer, height: '15vh' }}>\n <audio\n controls\n onLoadStart={() => setIsLoadingPreview(true)}\n onCanPlayThrough={() => setIsLoadingPreview(false)}\n >\n <source src={`${BASE_URL}/admin/assets/${selectedAttachment.id}`} />\n Your browser does not support the audio tag.\n </audio>\n </Box>\n );\n}\n","import React from 'react';\nimport { IAttachment } from '../../types';\nimport { classes } from '../../../Components/Modals/styles';\nimport { Box } from '@mui/material';\nimport { useDragScroll } from '../../../hooks';\nimport { ReactDOMAttributes } from '@use-gesture/react/dist/declarations/src/types';\n\nexport default function ImagePreview({\n isLoadingPreview,\n onPinchHandler,\n selectedAttachment,\n setIsLoadingPreview,\n zoom\n}: {\n isLoadingPreview: boolean;\n onPinchHandler: (...args: unknown[]) => ReactDOMAttributes;\n selectedAttachment: IAttachment;\n setIsLoadingPreview: React.Dispatch<React.SetStateAction<boolean>>;\n zoom: number;\n}) {\n const [scrollRef] = useDragScroll();\n const BASE_URL = window.location.origin;\n\n return (\n <Box ref={scrollRef} sx={{ ...classes.imagePreviewContainer }} {...onPinchHandler()}>\n <Box\n component=\"img\"\n alt={selectedAttachment.attached_file_name}\n draggable={false}\n onLoad={() => setIsLoadingPreview(false)}\n src={`${BASE_URL}/admin/assets/${selectedAttachment.id}`}\n sx={{\n ...(classes.imagePreview as React.CSSProperties),\n opacity: isLoadingPreview ? 0 : 1,\n transform: `scale(${zoom})`,\n transformOrigin: '0 0'\n }}\n />\n </Box>\n );\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport { IAttachment } from '../../types';\nimport { classes } from '../../../Components/Modals/styles';\nimport { useDragScroll } from '../../../hooks';\nimport { ReactDOMAttributes } from '@use-gesture/react/dist/declarations/src/types';\n\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n\nexport default function PdfPreview({\n onPinchHandler,\n selectedAttachment,\n setIsLoadingPreview,\n zoom\n}: {\n onPinchHandler: (...args: unknown[]) => ReactDOMAttributes;\n selectedAttachment: IAttachment;\n setIsLoadingPreview: React.Dispatch<React.SetStateAction<boolean>>;\n zoom: number;\n}) {\n const BASE_URL = window.location.origin;\n const [scrollRef] = useDragScroll();\n const scaledDimension = `${(100 / zoom) * 0.1}%`;\n\n const [numPages, setNumPages] = React.useState<number>(0);\n\n function onDocumentLoadSuccess({ numPages }: { numPages: number }) {\n setNumPages(numPages);\n setIsLoadingPreview(false);\n }\n\n function onDocumentLoadProgress({ loaded, total }: { loaded: number; total: number }) {\n if (loaded >= total) {\n setIsLoadingPreview(false);\n }\n }\n\n return (\n <Box sx={{ overflow: 'auto' }} ref={scrollRef} {...onPinchHandler()}>\n <Box\n sx={{\n paddingBottom: '5px',\n touchAction: 'none',\n transform: `scale(${zoom})`,\n width: scaledDimension,\n height: scaledDimension\n }}\n >\n <Document\n file={`${BASE_URL}/admin/assets/${selectedAttachment.id}`}\n loading={<Box sx={classes.previewLoader}></Box>}\n onLoadStart={() => setIsLoadingPreview(true)}\n onLoadError={() => setIsLoadingPreview(false)}\n onLoadSuccess={onDocumentLoadSuccess}\n onLoadProgress={onDocumentLoadProgress}\n >\n {[...Array(numPages)].map((_, page) => (\n <Box sx={{ ...classes.pdfPage }} key={page}>\n <Page\n width={750}\n pageNumber={page + 1}\n renderTextLayer={false}\n renderAnnotationLayer={false}\n />\n </Box>\n ))}\n </Document>\n </Box>\n </Box>\n );\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { useQuery } from '@tanstack/react-query';\nimport { ApplicationAction, IAttachment } from '../../types';\n\nexport default function TextPreview({\n selectedAttachment,\n dispatch,\n setIsLoadingPreview\n}: {\n selectedAttachment: IAttachment;\n dispatch: React.Dispatch<ApplicationAction>;\n setIsLoadingPreview: React.Dispatch<React.SetStateAction<boolean>>;\n}) {\n const BASE_URL = window.location.origin;\n const { data: text } = useQuery({\n queryKey: ['textData', selectedAttachment?.id],\n queryFn: async () => {\n const response = await fetch(`${BASE_URL}/admin/assets/${selectedAttachment?.id}`);\n return response.text();\n },\n onError: (error: Error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting text data, ${error.message}`,\n state: 'error'\n }\n });\n },\n onSettled: () => setIsLoadingPreview(false)\n });\n\n return (\n <>\n <Box>\n <pre>{text}</pre>\n </Box>\n </>\n );\n}\n","import React, { useEffect } from 'react';\nimport { classes } from '../../../Components/Modals/styles';\nimport { Box } from '@mui/material';\nimport { IAttachment, IVideoInterview } from '../../types';\n\nexport default function VideoPreview({\n selectedAttachment,\n videoRef,\n setIsLoadingPreview,\n source\n}: {\n selectedAttachment: IAttachment | IVideoInterview;\n videoRef: React.RefObject<HTMLVideoElement>;\n isLoadingPreview: boolean;\n setIsLoadingPreview: React.Dispatch<React.SetStateAction<boolean>>;\n source: string | undefined;\n}) {\n useEffect(() => {\n setIsLoadingPreview(true);\n }, [selectedAttachment]);\n\n useEffect(() => {\n if (source && videoRef.current) {\n videoRef.current.load();\n setIsLoadingPreview(false);\n }\n }, [source, videoRef, setIsLoadingPreview]);\n\n return (\n <Box sx={classes.mediaContentContainer}>\n <video\n ref={videoRef}\n key={selectedAttachment?.id}\n width=\"100%\"\n controls\n style={{ objectFit: 'contain', maxHeight: '30vh' }}\n onLoadStart={() => setIsLoadingPreview(false)}\n >\n <source src={source} />\n Your browser does not support the video tag.\n </video>\n </Box>\n );\n}\n","import React, { Dispatch, FC, SetStateAction } from 'react';\nimport { Box, Button, Stack } from '@mui/material';\nimport { pdfjs } from 'react-pdf';\nimport { IAttachment, IPreviewData } from '../../types';\nimport { classes } from '../../../Components/Modals/styles';\nimport { ReactDOMAttributes } from '@use-gesture/react/dist/declarations/src/types';\nimport { useDragScroll } from '../../../hooks';\n\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n\ninterface WordPreviewProps {\n onPinchHandler: (...args: unknown[]) => ReactDOMAttributes;\n previewData: IPreviewData;\n selectedAttachment: IAttachment;\n setCurrentIndex: Dispatch<SetStateAction<number>>;\n zoom: number;\n}\n\nconst WordPreview: FC<WordPreviewProps> = ({\n onPinchHandler,\n previewData,\n selectedAttachment,\n setCurrentIndex,\n zoom\n}) => {\n const [scrollRef] = useDragScroll();\n\n if (!('data' in previewData)) return null;\n\n return (\n <Stack>\n <NavigationButtons\n hasPrev={previewData.prev}\n hasNext={previewData.next}\n setCurrentIndex={setCurrentIndex}\n />\n <Box sx={classes.docPreviewContent}>\n <Box ref={scrollRef} {...onPinchHandler()}>\n <ImagePreviewList\n imageData={previewData.data || []}\n attachmentName={selectedAttachment.attached_file_name}\n zoom={zoom}\n />\n </Box>\n </Box>\n </Stack>\n );\n};\n\nconst NavigationButton: FC<{\n onClick: () => void;\n label: string;\n}> = ({ onClick, label }) => (\n <Button sx={classes.downloadButton} onClick={onClick}>\n {label}\n </Button>\n);\n\nconst NavigationButtons: FC<{\n hasPrev: boolean;\n hasNext: boolean;\n setCurrentIndex: Dispatch<SetStateAction<number>>;\n}> = ({ hasPrev, hasNext, setCurrentIndex }) => (\n <Box sx={{ ...classes.docPreviewNavigation, position: 'sticky', top: 0 }}>\n {hasPrev && (\n <NavigationButton onClick={() => setCurrentIndex((prev) => prev - 1)} label=\"Previous\" />\n )}\n {hasNext && (\n <NavigationButton onClick={() => setCurrentIndex((prev) => prev + 1)} label=\"Next\" />\n )}\n </Box>\n);\n\nconst ImagePreviewList: FC<{\n imageData: string[];\n attachmentName: string;\n zoom: number;\n}> = ({ imageData, attachmentName, zoom }) => (\n <>\n {imageData.map((src, index) => (\n <Box\n key={index}\n alt={attachmentName}\n component=\"img\"\n draggable={false}\n src={src || ''}\n sx={{\n ...classes.imagePreview,\n height: '1000px',\n transform: `scale(${zoom})`,\n transformOrigin: '0 0',\n borderBottom: '2px solid black'\n }}\n />\n ))}\n </>\n);\n\nexport default WordPreview;\n","import React, { Dispatch } from 'react';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport {\n ApplicationAction,\n ApplicationState,\n IApplication,\n IAttachment,\n IVideoInterview\n} from '../../types';\nimport {\n Box,\n IconButton,\n Paper,\n Stack,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Tooltip\n} from '@mui/material';\nimport { Delete, Download, OpenInNew, Visibility } from '@mui/icons-material';\nimport { styles } from '../../styles';\nimport { sharedClasses } from '../../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport NoAttachmentsSVG, { CopyLinkSVG } from '../Icons';\nimport DocTypeIcon from '../../../Components/Utilities/DocTypeIcon';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport AttachmentSelector from '../../../Components/Utilities/AttachmentSelector';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport TableSkeleton from '../../../Components/Multiposter/TableSkeleton';\nimport { IUserPermissions } from '../../../Components/sharedTypes';\nimport dayjs from 'dayjs';\nimport {\n categorizeAttachments,\n VIDEO_INTERVIEW_DISPLAY_NAME,\n VIDEO_INTERVIEW_SOURCE_INDEX\n} from '../../config';\n\nconst BASE_URL = window.location.origin;\n\nfunction AttachmentsTab({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { apiKey, userTimeZone } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n const { data: combinedData, isLoading } = useQuery({\n queryKey: ['attachments'],\n queryFn: async () => {\n if (application) {\n const [attachmentsResult, videoInterviewResult] = await Promise.allSettled([\n Api.getApplicationAttachments(application.job.id, application.id),\n Api.getVideoInterview(application.id)\n ]);\n\n const attachmentsData =\n attachmentsResult.status === 'fulfilled'\n ? attachmentsResult.value\n : { res: { attachments: [] } };\n const videoInterviewData =\n videoInterviewResult.status === 'fulfilled' ? videoInterviewResult.value : null;\n\n const categorizedAttachments = categorizeAttachments(attachmentsData.res.attachments);\n\n return {\n attachments: categorizedAttachments,\n videoInterview: videoInterviewData?.res || null\n };\n }\n return { attachments: { files: [], videos: [] }, videoInterview: null };\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error fetching data: ${error}`,\n state: 'error'\n }\n });\n },\n enabled: !!application\n });\n\n function AttachmentTableRow({\n id,\n name,\n publicUrl,\n attachmentTitle,\n attachedBy,\n createdAt,\n format,\n url,\n attachmentType,\n item\n }: {\n id: number | string;\n name: string;\n publicUrl: string;\n attachmentTitle?: string;\n attachedBy: string;\n createdAt?: string;\n format?: string;\n url?: string;\n attachmentType: 'files' | 'video';\n item: IAttachment | IVideoInterview;\n }) {\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const handleCopy = () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'Link copied to clipboard',\n state: 'success'\n }\n });\n };\n\n const handleOpenItem = (Item: IAttachment | IVideoInterview) => {\n dispatch({\n type: 'SET_SELECTED_ATTACHMENT_ACTION',\n payload: { ...ApplicationState.selectedAttachmentAction, preview: Item }\n });\n };\n\n return (\n <TableRow key={id}>\n <TableCell>\n <Box\n id={`${attachmentType === 'video' ? 'video' : 'file'}-details-button`}\n sx={styles.fileIconContainer}\n >\n <Box sx={styles.fileIcon} onClick={() => handleOpenItem(item)}>\n {DocTypeIcon(format)}\n </Box>\n <Box>\n <Stack direction={'row'} alignItems={'center'}>\n <Box sx={styles.fileName} onClick={() => handleOpenItem(item)}>\n {name}\n </Box>\n </Stack>\n <Box sx={styles.fileDate}>\n {createdAt\n ? dayjs(createdAt)\n .tz(userTimeZone || timeZoneString)\n .format('Do MMMM YYYY[,] h:mma')\n : '-'}\n </Box>\n </Box>\n </Box>\n </TableCell>\n <TableCell sx={styles.fileAttachedBy}>\n {attachmentTitle === 'N/A' ? '-' : attachmentTitle}\n </TableCell>\n <TableCell sx={styles.fileAttachedBy}>{attachedBy}</TableCell>\n <TableCell align={'right'}>\n <Tooltip title={'Preview'} placement={'top'} arrow>\n <IconButton\n id={`view-${attachmentType === 'video' ? 'video' : 'file'}-button`}\n onClick={() => handleOpenItem(item)}\n >\n <Visibility sx={styles.preview} />\n </IconButton>\n </Tooltip>\n {permissions?.Applications?.['Download Attachments'] && (\n <Tooltip title={'Download'} placement={'top'} arrow>\n <IconButton\n id={`download-${attachmentType === 'video' ? 'video' : 'file'}-button`}\n sx={styles.tableActionIcon}\n href={url}\n >\n <Download sx={{ fontSize: 16, color: theme.palette.common.grey }} />\n </IconButton>\n </Tooltip>\n )}\n {attachmentType === 'video' && (\n <>\n <CopyToClipboard\n id=\"copy-video-link-button\"\n text={BASE_URL + publicUrl}\n onCopy={handleCopy}\n >\n <Tooltip title={'Copy link'} placement={'top'} arrow>\n <IconButton sx={styles.tableActionIcon}>\n <CopyLinkSVG />\n </IconButton>\n </Tooltip>\n </CopyToClipboard>\n <Tooltip title={'Open video in new tab'} placement={'top'} arrow>\n <IconButton\n id=\"open-video-in-new-tab-button\"\n href={publicUrl}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <OpenInNew sx={{ fontSize: 16, color: theme.palette.common.grey }} />\n </IconButton>\n </Tooltip>\n </>\n )}\n {permissions?.Applications['Delete Application Attachments'] && (\n <Tooltip title={'Delete'} placement={'top'} arrow>\n <IconButton\n id={`delete-${attachmentType === 'video' ? 'video' : 'file'}-button`}\n sx={styles.tableActionIcon}\n onClick={() => {\n dispatch({\n type: 'SET_SELECTED_ATTACHMENT_ACTION',\n payload: { ...ApplicationState.selectedAttachmentAction, delete: item }\n });\n }}\n >\n <Delete sx={{ color: theme.palette.error.main, fontSize: 16 }} />\n </IconButton>\n </Tooltip>\n )}\n </TableCell>\n </TableRow>\n );\n }\n\n function AttachmentTable({\n attachmentsList,\n attachmentType\n }: {\n attachmentsList: IAttachment[];\n attachmentType: 'files' | 'video';\n }) {\n return (\n <>\n {attachmentsList.map((attachment: IAttachment) => (\n <AttachmentTableRow\n key={attachment.id}\n id={attachment.id}\n name={attachment.attached_file_name}\n publicUrl={attachment.public_url}\n attachmentTitle={attachment.attachment_title}\n attachedBy={attachment.attached_by}\n createdAt={attachment.created_at}\n format={attachment.attached_file_name.split('.').pop()}\n url={\n attachmentType === 'video'\n ? attachment.attached_url\n : `${BASE_URL}/admin/assets/${attachment.id}`\n }\n attachmentType={attachmentType}\n item={attachment}\n />\n ))}\n </>\n );\n }\n\n const getAttachmentAvailable = () => {\n let hasVideo = false;\n let hasFile = false;\n let hasVideoInterview = false;\n\n if (!isLoading && combinedData) {\n hasVideo = combinedData.attachments?.videos.length > 0;\n hasFile = combinedData.attachments?.files.length > 0;\n hasVideoInterview = !!combinedData.videoInterview;\n }\n\n return {\n hasVideo,\n hasFile,\n hasVideoInterview\n };\n };\n const { hasVideo, hasFile, hasVideoInterview } = getAttachmentAvailable();\n\n function AttachmentTableHead() {\n return (\n <TableHead>\n <TableRow>\n <TableCell>File Name</TableCell>\n <TableCell>Attachment Title</TableCell>\n <TableCell>Attached by</TableCell>\n </TableRow>\n </TableHead>\n );\n }\n\n return (\n <Stack sx={styles.attachmentsContainer}>\n <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Attachments</Stack>\n {isLoading && (\n <TableSkeleton size={4} borderType={'none'} height={'60px'} padding={'5px 0px'} />\n )}\n {!isLoading && combinedData && !hasVideo && !hasFile && !hasVideoInterview && (\n <Box sx={styles.noAttachments}>\n <NoAttachmentsSVG />\n <Box sx={sharedClasses.emptyStateText}>No attachments added</Box>\n </Box>\n )}\n {!isLoading && combinedData && (\n <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n <Table sx={styles.tableWrapper} aria-label=\"application attachments\">\n <AttachmentTableHead />\n {(hasVideo || hasVideoInterview) && (\n <>\n <TableBody>\n {combinedData.videoInterview && (\n <AttachmentTableRow\n id={combinedData.videoInterview.id}\n name={VIDEO_INTERVIEW_DISPLAY_NAME}\n publicUrl={combinedData.videoInterview.watch_interview_link}\n attachedBy=\"-\"\n format={\n combinedData.videoInterview.sources[VIDEO_INTERVIEW_SOURCE_INDEX]?.format\n }\n url={combinedData.videoInterview.sources[VIDEO_INTERVIEW_SOURCE_INDEX]?.url}\n attachmentType=\"video\"\n item={combinedData.videoInterview}\n />\n )}\n <AttachmentTable\n attachmentsList={combinedData.attachments.videos}\n attachmentType=\"video\"\n />\n </TableBody>\n </>\n )}\n {hasFile && (\n <>\n <TableBody>\n <AttachmentTable\n attachmentsList={combinedData.attachments.files}\n attachmentType=\"files\"\n />\n </TableBody>\n </>\n )}\n </Table>\n </TableContainer>\n )}\n {permissions?.Applications?.['Upload File'] && application && (\n <AttachmentSelector\n heightOverride={'100px'}\n apiKey={apiKey}\n performUpload={true}\n maxSize={50000000}\n uploadUrl={`${BASE_URL}/api/v4/jobs/${application.job.id}/applications/${application.id}/attachments`}\n onUploadComplete={() => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'File successfully uploaded',\n state: 'success'\n }\n });\n queryClient.removeQueries(['attachments']);\n }}\n attachment={true}\n compact={true}\n maxVideoSize={500000000}\n buttonId=\"choose-file-button\"\n />\n )}\n </Stack>\n );\n}\n\nexport default AttachmentsTab;\n","import React from 'react';\n\nexport function ExternalEmailSVG() {\n return (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"icons\">\n <path\n id=\"Vector\"\n d=\"M8.66732 12.6665C8.66732 10.4598 10.4607 8.6665 12.6673 8.6665C13.4007 8.6665 14.0807 8.8665 14.6673 9.2065V3.99984C14.6673 3.64622 14.5268 3.30708 14.2768 3.05703C14.0267 2.80698 13.6876 2.6665 13.334 2.6665H2.66732C1.92732 2.6665 1.33398 3.25984 1.33398 3.99984V11.9998C1.33398 12.3535 1.47446 12.6926 1.72451 12.9426C1.97456 13.1927 2.3137 13.3332 2.66732 13.3332H8.72732C8.69398 13.1132 8.66732 12.8932 8.66732 12.6665ZM2.66732 5.33317V3.99984L8.00065 7.33317L13.334 3.99984V5.33317L8.00065 8.6665L2.66732 5.33317ZM13.334 14.6665V13.3332H10.6673V11.9998H13.334V10.6665L15.334 12.6665L13.334 14.6665Z\"\n fill=\"#5BC4BF\"\n />\n </g>\n </svg>\n );\n}\n\nexport function SendFormSVG() {\n return (\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"icons\">\n <path\n id=\"Path / file-send\"\n d=\"M9.15462 1.00003H3.43544C3.24657 0.998751 3.05933 1.03418 2.88458 1.10426C2.70984 1.17433 2.55108 1.27767 2.41753 1.40825C2.28398 1.53883 2.1783 1.69407 2.10663 1.86493C2.03495 2.03579 1.99872 2.21887 2.00003 2.40354V13.5965C2.00003 13.7808 2.03716 13.9633 2.1093 14.1336C2.18143 14.3039 2.28716 14.4586 2.42045 14.5889C2.55374 14.7193 2.71198 14.8226 2.88613 14.8932C3.06028 14.9637 3.24694 15 3.43544 15H12.0209C12.2094 15 12.3961 14.9637 12.5702 14.8932C12.7444 14.8226 12.9026 14.7193 13.0359 14.5889C13.1692 14.4586 13.2749 14.3039 13.3471 14.1336C13.4192 13.9633 13.4563 13.7808 13.4563 13.5965V5.19739L9.15462 1.00003ZM8.11037 13.1518V11.7483H5.24853V10.3605H8.11037V8.95703L10.2536 11.0597L8.10678 13.1518M8.43602 5.89739V2.05266L12.3708 5.90002L8.43602 5.89739Z\"\n fill=\"#5BC4BF\"\n />\n </g>\n </svg>\n );\n}\n\nexport function FelixSurveySVG() {\n return (\n <svg\n width=\"400\"\n height=\"300\"\n viewBox=\"0 0 600 300\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect width=\"600\" height=\"300\" rx=\"18.75\" fill=\"#EBF8F7\" />\n <path\n d=\"M131.213 149.086C113.817 136.018 112.889 126.315 118.15 119.153C123.404 111.992 132.856 110.088 150.253 123.163C167.649 136.231 186.397 159.33 181.135 166.484C175.881 173.645 148.609 162.153 131.213 149.086Z\"\n fill=\"url(#paint0_linear_24589_17118)\"\n />\n <path\n d=\"M49.5886 145.061C52.199 111.884 75.6378 103.714 103.594 105.845C131.55 107.976 153.433 119.599 150.823 152.777C148.213 185.954 122.101 228.109 94.1449 225.978C66.1888 223.847 46.9783 178.231 49.5886 145.061Z\"\n fill=\"url(#paint1_linear_24589_17118)\"\n />\n <path\n d=\"M46.8464 138.6C55.803 118.861 65.0878 115.876 73.2472 119.461C81.4066 123.045 85.3456 131.846 76.389 151.584C67.4325 171.323 48.98 194.539 40.8128 190.954C32.6456 187.37 37.8898 158.346 46.8464 138.6Z\"\n fill=\"url(#paint2_linear_24589_17118)\"\n />\n <path\n d=\"M61.6752 71.0271C61.0159 91.5804 85.0074 98.4528 114.844 99.3696C144.681 100.286 169.069 94.8961 169.728 74.3505C170.388 53.8049 147.07 25.8635 117.233 24.9467C87.3969 24.0299 62.3345 50.4738 61.6751 71.0194L61.6752 71.0271Z\"\n fill=\"url(#paint3_linear_24589_17118)\"\n />\n <path\n d=\"M74.1728 67.0036C72.946 82.7812 91.1552 88.8762 114.064 90.5894C136.974 92.3027 155.911 88.9835 157.137 73.2059C158.364 57.4283 141.406 35.1629 118.497 33.4496C95.588 31.7364 75.3997 51.226 74.1728 67.0036Z\"\n fill=\"url(#paint4_linear_24589_17118)\"\n />\n <path\n d=\"M101.305 76.724C103.208 76.7568 104.777 75.2648 104.81 73.3915C104.842 71.5182 103.326 69.973 101.423 69.9402C99.5194 69.9074 97.9502 71.3994 97.9177 73.2727C97.8851 75.146 99.4017 76.6912 101.305 76.724Z\"\n fill=\"white\"\n />\n <path\n d=\"M138.49 73.972C140.394 74.0048 141.963 72.5128 141.995 70.6395C142.028 68.7663 140.511 67.2211 138.608 67.1883C136.705 67.1555 135.136 68.6475 135.103 70.5208C135.071 72.394 136.587 73.9392 138.49 73.972Z\"\n fill=\"white\"\n />\n <path\n d=\"M109.515 79.3736C110.47 80.2363 120.34 88.9309 128.653 83.3117C129.926 82.4488 131.554 80.992 133.099 78.4182\"\n stroke=\"white\"\n stroke-width=\"3.44856\"\n stroke-miterlimit=\"10\"\n />\n <rect x=\"194\" y=\"72\" width=\"366\" height=\"194\" rx=\"10.5464\" fill=\"white\" />\n <rect\n x=\"229.697\"\n y=\"105.782\"\n width=\"62.268\"\n height=\"27.7982\"\n rx=\"1.11193\"\n fill=\"#FED500\"\n fill-opacity=\"0.12\"\n />\n <rect\n x=\"300.861\"\n y=\"105.782\"\n width=\"62.268\"\n height=\"27.7982\"\n rx=\"1.11193\"\n fill=\"#3EAA3E\"\n fill-opacity=\"0.12\"\n />\n <rect\n x=\"372.023\"\n y=\"105.782\"\n width=\"62.2681\"\n height=\"27.4276\"\n rx=\"1.11193\"\n fill=\"#E6A052\"\n fill-opacity=\"0.12\"\n />\n <rect\n x=\"443.188\"\n y=\"105.782\"\n width=\"62.2681\"\n height=\"27.4276\"\n rx=\"1.11193\"\n fill=\"#E37D7A\"\n fill-opacity=\"0.12\"\n />\n <rect\n x=\"524.601\"\n y=\"105.968\"\n width=\"20.3854\"\n height=\"14.4551\"\n rx=\"2.03854\"\n stroke=\"#EAEEF0\"\n stroke-width=\"0.370643\"\n />\n <rect width=\"336.544\" height=\"20.756\" transform=\"translate(208.629 85.0254)\" fill=\"white\" />\n <path d=\"M208.764 96.8521H545.308\" stroke=\"#DDDDDD\" stroke-width=\"0.370643\" />\n <rect x=\"241.459\" y=\"86.4038\" width=\"32.694\" height=\"7.38251\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n <rect x=\"208.766\" y=\"86.4038\" width=\"24.2568\" height=\"7.38251\" rx=\"1.48257\" fill=\"#084D6D\" />\n <rect x=\"282.59\" y=\"86.4038\" width=\"35.8579\" height=\"7.38251\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n <rect x=\"326.887\" y=\"86.4038\" width=\"35.8579\" height=\"7.38251\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n <rect x=\"371.182\" y=\"86.4038\" width=\"35.8579\" height=\"7.38251\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n <rect x=\"415.477\" y=\"86.4038\" width=\"35.8579\" height=\"7.38251\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n <rect x=\"460.826\" y=\"86.4038\" width=\"48.5137\" height=\"7.38251\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n <rect x=\"515.851\" y=\"85.5476\" width=\"12.9725\" height=\"9.26608\" rx=\"2.03854\" fill=\"white\" />\n <rect\n x=\"515.851\"\n y=\"85.5476\"\n width=\"12.9725\"\n height=\"9.26608\"\n rx=\"2.03854\"\n stroke=\"#E3E3E3\"\n stroke-width=\"0.370643\"\n />\n <rect x=\"532.16\" y=\"85.5476\" width=\"12.9725\" height=\"9.26608\" rx=\"2.03854\" fill=\"white\" />\n <rect\n x=\"532.16\"\n y=\"85.5476\"\n width=\"12.9725\"\n height=\"9.26608\"\n rx=\"2.03854\"\n stroke=\"#E3E3E3\"\n stroke-width=\"0.370643\"\n />\n <rect\n x=\"209.871\"\n y=\"138.82\"\n width=\"336.173\"\n height=\"117.907\"\n rx=\"1.66789\"\n fill=\"white\"\n stroke=\"#E3E3E3\"\n stroke-width=\"0.370643\"\n />\n <rect x=\"218.256\" y=\"146.518\" width=\"47.459\" height=\"7.38251\" rx=\"1.48257\" fill=\"#939393\" />\n <rect x=\"221.547\" y=\"191.159\" width=\"47.459\" height=\"7.38251\" rx=\"1.48257\" fill=\"#939393\" />\n <rect x=\"221.547\" y=\"204.472\" width=\"172.72\" height=\"7.41286\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n <rect x=\"221.547\" y=\"215.049\" width=\"172.72\" height=\"7.41286\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n <rect\n x=\"468.207\"\n y=\"204.502\"\n width=\"11.1193\"\n height=\"11.1193\"\n rx=\"1.11193\"\n fill=\"#E37D7A\"\n fill-opacity=\"0.12\"\n />\n <rect\n x=\"482.291\"\n y=\"204.502\"\n width=\"11.1193\"\n height=\"11.1193\"\n rx=\"1.11193\"\n fill=\"#E6A052\"\n fill-opacity=\"0.12\"\n />\n <rect\n x=\"496.375\"\n y=\"204.502\"\n width=\"11.1193\"\n height=\"11.1193\"\n rx=\"1.11193\"\n fill=\"#FED500\"\n fill-opacity=\"0.12\"\n />\n <rect\n x=\"510.461\"\n y=\"204.502\"\n width=\"11.1193\"\n height=\"11.1193\"\n rx=\"1.11193\"\n fill=\"#8CCF95\"\n fill-opacity=\"0.12\"\n />\n <rect\n x=\"524.545\"\n y=\"204.502\"\n width=\"11.1193\"\n height=\"11.1193\"\n rx=\"1.11193\"\n fill=\"#3EAA3E\"\n fill-opacity=\"0.12\"\n />\n <rect x=\"509.525\" y=\"231.965\" width=\"29.6515\" height=\"14.7954\" rx=\"2.22386\" fill=\"#5BC4C0\" />\n <rect x=\"222.547\" y=\"163.724\" width=\"312.082\" height=\"17.4202\" rx=\"3.52111\" fill=\"white\" />\n <rect\n x=\"222.547\"\n y=\"163.724\"\n width=\"312.082\"\n height=\"17.4202\"\n rx=\"3.52111\"\n stroke=\"#5BC4BF\"\n stroke-width=\"0.370643\"\n />\n <rect x=\"228.291\" y=\"169.469\" width=\"5.93029\" height=\"5.93029\" rx=\"1\" fill=\"#5BC4BF\" />\n <rect\n width=\"4.44772\"\n height=\"4.44772\"\n rx=\"1\"\n transform=\"matrix(1 0 0 -1 521.471 174.658)\"\n fill=\"#5BC4BF\"\n />\n <rect x=\"241\" y=\"169\" width=\"48\" height=\"7\" rx=\"1.48257\" fill=\"#D9D9D9\" />\n <rect x=\"468.207\" y=\"190.813\" width=\"47.459\" height=\"7.38251\" rx=\"1.48257\" fill=\"#939393\" />\n <defs>\n <linearGradient\n id=\"paint0_linear_24589_17118\"\n x1=\"190.109\"\n y1=\"172.098\"\n x2=\"99.032\"\n y2=\"125.553\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.19\" stop-color=\"#92ADF4\" />\n <stop offset=\"0.46\" stop-color=\"#88A1F2\" />\n <stop offset=\"0.78\" stop-color=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_24589_17118\"\n x1=\"149.466\"\n y1=\"169.521\"\n x2=\"48.1708\"\n y2=\"161.548\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#CDD7F2\" />\n <stop offset=\"0.35\" stop-color=\"#AABFFB\" />\n <stop offset=\"0.72\" stop-color=\"#849BF1\" />\n <stop offset=\"1\" stop-color=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint2_linear_24589_17118\"\n x1=\"37.5373\"\n y1=\"201.013\"\n x2=\"63.1816\"\n y2=\"102.368\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop offset=\"0.19\" stop-color=\"#92ADF4\" />\n <stop offset=\"0.46\" stop-color=\"#88A1F2\" />\n <stop offset=\"0.78\" stop-color=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint3_linear_24589_17118\"\n x1=\"170.065\"\n y1=\"63.8191\"\n x2=\"62.0203\"\n y2=\"60.3484\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#92ADF4\" />\n <stop offset=\"0.35\" stop-color=\"#8EA8F3\" />\n <stop offset=\"0.72\" stop-color=\"#849BF1\" />\n <stop offset=\"1\" stop-color=\"#798DF0\" />\n </linearGradient>\n <linearGradient\n id=\"paint4_linear_24589_17118\"\n x1=\"115.021\"\n y1=\"33.3496\"\n x2=\"116.017\"\n y2=\"91.1537\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"#5656DB\" />\n <stop offset=\"1\" stop-color=\"#4949BB\" />\n </linearGradient>\n </defs>\n </svg>\n );\n}\n\nexport function CopyLinkSVG() {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\">\n <g id=\"icons\">\n <path\n d=\"M7.05969 8.94005C7.33302 9.20005 7.33302 9.62672 7.05969 9.88672C6.79969 10.1467 6.37302 10.1467 6.11302 9.88672C5.4886 9.26137 5.13789 8.41377 5.13789 7.53005C5.13789 6.64633 5.4886 5.79874 6.11302 5.17338L8.47302 2.81338C9.09837 2.18897 9.94597 1.83826 10.8297 1.83826C11.7134 1.83826 12.561 2.18897 13.1864 2.81338C13.8108 3.43874 14.1615 4.28633 14.1615 5.17005C14.1615 6.05377 13.8108 6.90137 13.1864 7.52672L12.193 8.52005C12.1997 7.97338 12.113 7.42672 11.9264 6.90672L12.2397 6.58672C12.4267 6.40193 12.5753 6.18186 12.6766 5.93925C12.778 5.69664 12.8302 5.43632 12.8302 5.17338C12.8302 4.91045 12.778 4.65013 12.6766 4.40752C12.5753 4.16491 12.4267 3.94483 12.2397 3.76005C12.0549 3.573 11.8348 3.42449 11.5922 3.32312C11.3496 3.22176 11.0893 3.16957 10.8264 3.16957C10.5634 3.16957 10.3031 3.22176 10.0605 3.32312C9.81788 3.42449 9.5978 3.573 9.41302 3.76005L7.05969 6.11338C6.87263 6.29817 6.72412 6.51825 6.62276 6.76086C6.5214 7.00347 6.4692 7.26378 6.4692 7.52672C6.4692 7.78965 6.5214 8.04997 6.62276 8.29258C6.72412 8.53519 6.87263 8.75527 7.05969 8.94005ZM8.93968 6.11338C9.19968 5.85338 9.62635 5.85338 9.88635 6.11338C10.5108 6.73874 10.8615 7.58633 10.8615 8.47005C10.8615 9.35377 10.5108 10.2014 9.88635 10.8267L7.52635 13.1867C6.901 13.8111 6.0534 14.1618 5.16969 14.1618C4.28597 14.1618 3.43837 13.8111 2.81302 13.1867C2.1886 12.5614 1.83789 11.7138 1.83789 10.8301C1.83789 9.94633 2.1886 9.09874 2.81302 8.47338L3.80635 7.48005C3.79969 8.02672 3.88635 8.57338 4.07302 9.10005L3.75968 9.41338C3.57263 9.59817 3.42412 9.81825 3.32276 10.0609C3.2214 10.3035 3.1692 10.5638 3.1692 10.8267C3.1692 11.0897 3.2214 11.35 3.32276 11.5926C3.42412 11.8352 3.57263 12.0553 3.75968 12.2401C3.94447 12.4271 4.16455 12.5756 4.40716 12.677C4.64977 12.7783 4.91008 12.8305 5.17302 12.8305C5.43595 12.8305 5.69627 12.7783 5.93888 12.677C6.18149 12.5756 6.40157 12.4271 6.58635 12.2401L8.93968 9.88672C9.12674 9.70193 9.27525 9.48186 9.37661 9.23925C9.47797 8.99664 9.53017 8.73632 9.53017 8.47338C9.53017 8.21045 9.47797 7.95013 9.37661 7.70752C9.27525 7.46491 9.12674 7.24484 8.93968 7.06005C8.87494 6.99938 8.82333 6.92607 8.78804 6.84465C8.75276 6.76324 8.73455 6.67545 8.73455 6.58672C8.73455 6.49799 8.75276 6.4102 8.78804 6.32878C8.82333 6.24737 8.87494 6.17406 8.93968 6.11338Z\"\n fill=\"#666666\"\n />\n </g>\n </svg>\n );\n}\n\nexport default function NoAttachmentsSVG() {\n return (\n <svg\n width=\"104\"\n height=\"104\"\n viewBox=\"0 0 104 104\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M95.0237 41.2065H8.02917C6.77541 41.2065 5.75903 42.2229 5.75903 43.4767V100.016C5.75903 101.27 6.77541 102.286 8.02917 102.286H95.0237C96.2775 102.286 97.2938 101.27 97.2938 100.016V43.4767C97.2938 42.2229 96.2775 41.2065 95.0237 41.2065Z\"\n fill=\"white\"\n />\n <path\n d=\"M96.7358 42.9186H9.74133C8.48757 42.9186 7.47119 43.935 7.47119 45.1887V101.728C7.47119 102.982 8.48757 103.998 9.74133 103.998H96.7358C97.9896 103.998 99.006 102.982 99.006 101.728V45.1887C99.006 43.935 97.9896 42.9186 96.7358 42.9186Z\"\n fill=\"#E3E3E3\"\n />\n <path\n d=\"M94.4708 102.629H8.58056C6.83601 102.629 5.41675 101.209 5.41675 99.4648V44.0297C5.41675 43.8413 5.57083 43.6873 5.75915 43.6873C5.94747 43.6873 6.10156 43.8413 6.10156 44.0297V99.4648C6.10156 100.833 7.21437 101.944 8.58056 101.944H94.4708C95.8387 101.944 96.9498 100.831 96.9498 99.4648V44.0297C96.9498 42.6618 95.837 41.5507 94.4708 41.5507H47.5718C47.3835 41.5507 47.2294 41.3966 47.2294 41.2082C47.2294 41.0199 47.3835 40.8658 47.5718 40.8658H94.4708C96.2154 40.8658 97.6346 42.2851 97.6346 44.0297V99.4648C97.6346 101.209 96.2154 102.629 94.4708 102.629Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M45.4598 9.36829L37.7763 55.3805C37.5897 56.5002 38.3481 57.5599 39.4729 57.7482L80.9294 64.6699C82.0525 64.8582 83.1157 64.1015 83.3023 62.9819L84.499 55.8102L85.1256 51.852L92.4222 8.15789C92.6088 7.03823 91.8504 5.97849 90.7256 5.79017L58.1031 0.342529L45.4615 9.35802V9.36829H45.4598Z\"\n fill=\"white\"\n />\n <path\n d=\"M81.2711 65.0396C81.1393 65.0396 81.0075 65.0293 80.8722 65.007L39.4157 58.0853C38.1077 57.8662 37.2209 56.6284 37.4383 55.3239L45.1236 9.31164C45.1236 9.31164 45.1236 9.30822 45.1236 9.30651V9.29624C45.1407 9.20892 45.1903 9.13017 45.2639 9.07881L57.9055 0.0633176C57.9791 0.010245 58.0716 -0.0102993 58.1606 0.00510891L90.7831 5.45275C91.4166 5.5589 91.9712 5.90473 92.3445 6.42518C92.7177 6.94735 92.8649 7.5825 92.7605 8.21424L85.4639 51.9084L84.839 55.8631L83.6406 63.0365C83.4454 64.2075 82.425 65.0396 81.2711 65.0396ZM45.7776 9.55475L38.1163 55.4351C37.9605 56.3665 38.5956 57.2533 39.5304 57.4091L80.9869 64.3308C81.9234 64.4883 82.8102 63.8549 82.966 62.9235L84.1627 55.7519L84.7876 51.7971L92.0842 8.09953C92.1596 7.64756 92.0534 7.19388 91.7881 6.82237C91.521 6.44915 91.1238 6.20262 90.6701 6.12729L58.188 0.703613L45.7776 9.55475Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M54.5363 11.2188C54.3994 11.2188 54.2607 11.2069 54.122 11.1846L45.401 9.72768C45.264 9.70542 45.1545 9.6027 45.1236 9.46745C45.0928 9.3322 45.1459 9.19182 45.2589 9.11135L57.9278 0.0667586C58.0408 -0.0137063 58.1915 -0.0188424 58.3079 0.0547744C58.426 0.128391 58.4877 0.265353 58.4637 0.402314L57.0068 9.12334C56.803 10.3474 55.7364 11.2188 54.5346 11.2188H54.5363ZM46.3289 9.18839L54.235 10.5084C54.7144 10.5888 55.1972 10.4775 55.5943 10.1933C55.9898 9.91087 56.2535 9.48971 56.3339 9.01034L57.6539 1.10424L46.3306 9.18668L46.3289 9.18839Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M73.745 36.6303C73.7176 36.6303 73.6885 36.6286 73.6594 36.6235L54.555 33.4323C54.276 33.3861 54.0859 33.1207 54.1339 32.8416C54.1801 32.5626 54.4437 32.3726 54.7245 32.4205L73.8289 35.6117C74.108 35.6579 74.298 35.9233 74.2501 36.2023C74.2073 36.454 73.9899 36.6321 73.7433 36.6321L73.745 36.6303Z\"\n fill=\"#E3E3E3\"\n />\n <path\n d=\"M80.0572 50.5216C80.0384 50.5216 80.0196 50.5216 80.0007 50.5165L44.0432 44.5107C43.8566 44.4799 43.7299 44.3036 43.7624 44.117C43.7932 43.9304 43.9696 43.8054 44.1562 43.8362L80.1137 49.842C80.3003 49.8728 80.427 50.0491 80.3945 50.2357C80.3671 50.4035 80.2216 50.5216 80.0572 50.5216Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M80.9029 45.4592C80.8841 45.4592 80.8653 45.4592 80.8464 45.4541L44.8889 39.4483C44.7023 39.4175 44.5756 39.2412 44.6081 39.0545C44.6389 38.8679 44.8153 38.7412 45.0019 38.7738L80.9594 44.7795C81.146 44.8104 81.2727 44.9867 81.2402 45.1733C81.2128 45.3411 81.0673 45.4592 80.9029 45.4592Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M61.3689 52.6035C61.35 52.6035 61.3312 52.6035 61.3124 52.5983L43.1975 49.5732C43.0109 49.5424 42.8842 49.366 42.9167 49.1794C42.9475 48.9928 43.1239 48.8661 43.3105 48.8987L61.4254 51.9238C61.612 51.9546 61.7387 52.1309 61.7061 52.3176C61.6787 52.4853 61.5332 52.6035 61.3689 52.6035Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M65.4422 20.1814C66.038 20.1814 66.668 20.2293 67.3271 20.3389C71.864 21.0973 74.1084 23.9872 74.2009 24.1087C74.3156 24.2594 74.2865 24.4734 74.1358 24.5881C73.9852 24.7028 73.7712 24.6737 73.6565 24.523C73.6359 24.4957 71.4719 21.7239 67.2141 21.0134C62.9615 20.3029 59.9398 22.4344 59.909 22.4549C59.7549 22.5645 59.5409 22.5303 59.4313 22.3779C59.32 22.2255 59.3543 22.0115 59.5084 21.9002C59.6213 21.8181 61.9326 20.1797 65.4405 20.1797L65.4422 20.1814Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M59.1689 16.9353C59.2647 16.36 58.8761 15.8156 58.3009 15.7197C57.7256 15.6239 57.1812 16.0125 57.0853 16.5877C56.9895 17.163 57.3781 17.7074 57.9533 17.8033C58.5286 17.8991 59.073 17.5105 59.1689 16.9353Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M77.3627 19.9741C77.4586 19.3988 77.07 18.8544 76.4947 18.7585C75.9195 18.6627 75.3751 19.0513 75.2792 19.6265C75.1833 20.2018 75.5719 20.7462 76.1472 20.8421C76.7224 20.9379 77.2668 20.5493 77.3627 19.9741Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M96.3849 37.6113C96.3541 37.6113 96.3215 37.6079 96.2907 37.5976C89.0934 35.5432 88.4788 29.7669 88.6551 28.7157C88.6859 28.5291 88.8623 28.4024 89.0489 28.4349C89.2355 28.4657 89.3605 28.6421 89.3297 28.8287C89.3194 28.8869 89.0883 34.8293 96.4773 36.9385C96.6588 36.9899 96.765 37.1799 96.7119 37.3614C96.6691 37.512 96.5321 37.6096 96.3832 37.6096L96.3849 37.6113Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M43.4458 21.7734C43.4235 21.7734 43.4013 21.7717 43.3773 21.7666C43.3225 21.7563 37.6284 20.0871 34.2214 12.9565C34.1393 12.7853 34.2129 12.5816 34.3824 12.4994C34.5536 12.4172 34.7573 12.4908 34.8395 12.6603C37.7585 18.7705 42.6685 20.9242 43.5143 21.0954C43.6992 21.1331 43.819 21.3129 43.7814 21.4995C43.7488 21.6621 43.605 21.7734 43.4458 21.7734Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M57.5015 66.0873C57.4827 66.0873 57.4639 66.0873 57.445 66.0822C57.2584 66.0514 57.1317 65.8751 57.1643 65.6884L57.9741 60.8366C58.0049 60.65 58.1812 60.525 58.3678 60.5558C58.5544 60.5866 58.6811 60.763 58.6486 60.9496L57.8388 65.8014C57.8114 65.9692 57.6659 66.0873 57.5015 66.0873Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M61.2813 66.7174C61.2625 66.7174 61.2437 66.7174 61.2248 66.7123C61.0382 66.6815 60.9115 66.5051 60.9441 66.3185L61.7538 61.4667C61.7847 61.28 61.961 61.1534 62.1476 61.1859C62.3342 61.2167 62.4609 61.393 62.4284 61.5796L61.6186 66.4315C61.5912 66.5993 61.4457 66.7174 61.2813 66.7174Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M97.2938 50.6056H54.519C53.6921 50.6056 52.908 50.2427 52.3722 49.6144L41.7183 37.1218C41.1824 36.4934 40.3966 36.1305 39.5714 36.1305H8.58044C7.0225 36.1305 5.75903 37.394 5.75903 38.9519V99.4632C5.75903 101.021 7.0225 102.285 8.58044 102.285H94.4707C96.0286 102.285 97.2921 101.021 97.2921 99.4632V50.6039L97.2938 50.6056Z\"\n fill=\"white\"\n />\n <path\n d=\"M99.006 52.3175H56.2312C55.4043 52.3175 54.6202 51.9546 54.0843 51.3263L43.4304 38.8337C42.8946 38.2054 42.1088 37.8424 41.2836 37.8424H10.2926C8.73466 37.8424 7.47119 39.1059 7.47119 40.6638V101.175C7.47119 102.733 8.73466 103.997 10.2926 103.997H96.1829C97.7408 103.997 99.0043 102.733 99.0043 101.175V52.3158L99.006 52.3175Z\"\n fill=\"#EAEAEA\"\n />\n <path\n d=\"M94.4708 102.63H8.58056C6.83601 102.63 5.41675 101.211 5.41675 99.4649V38.9553C5.41675 37.2108 6.83601 35.7915 8.58056 35.7915H39.5698C40.4977 35.7915 41.376 36.1973 41.9769 36.9026L52.6308 49.3952C53.1033 49.9482 53.7898 50.2666 54.5174 50.2666H97.2922C97.4806 50.2666 97.6346 50.4207 97.6346 50.609V99.4683C97.6346 101.213 96.2154 102.632 94.4708 102.632V102.63ZM8.58056 36.4746C7.21266 36.4746 6.10156 37.5874 6.10156 38.9536V99.4649C6.10156 100.833 7.21437 101.944 8.58056 101.944H94.4708C95.8387 101.944 96.9498 100.831 96.9498 99.4649V50.948H54.5174C53.5895 50.948 52.7113 50.5423 52.1103 49.8369L41.4565 37.3443C40.9839 36.7913 40.2974 36.4729 39.5698 36.4729H8.58056V36.4746Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M92.6818 89.8228C92.4934 89.8228 92.3394 89.6687 92.3394 89.4804V87.7975C92.3394 87.6092 92.4934 87.4551 92.6818 87.4551C92.8701 87.4551 93.0242 87.6092 93.0242 87.7975V89.4804C93.0242 89.6687 92.8701 89.8228 92.6818 89.8228Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M92.6818 92.4764C92.4934 92.4764 92.3394 92.3223 92.3394 92.134V91.1068C92.3394 90.9185 92.4934 90.7644 92.6818 90.7644C92.8701 90.7644 93.0242 90.9185 93.0242 91.1068V92.134C93.0242 92.3223 92.8701 92.4764 92.6818 92.4764Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M90.1445 99.2971H87.7596C87.5713 99.2971 87.4172 99.143 87.4172 98.9547C87.4172 98.7663 87.5713 98.6123 87.7596 98.6123H90.1445C91.3549 98.6123 92.3393 97.6279 92.3393 96.4175V93.6748C92.3393 93.4865 92.4934 93.3324 92.6817 93.3324C92.87 93.3324 93.0241 93.4865 93.0241 93.6748V96.4175C93.0241 98.0062 91.7315 99.2971 90.1445 99.2971Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M85.4758 99.2971H82.9215C82.7332 99.2971 82.5791 99.143 82.5791 98.9547C82.5791 98.7664 82.7332 98.6123 82.9215 98.6123H85.4758C85.6642 98.6123 85.8182 98.7664 85.8182 98.9547C85.8182 99.143 85.6642 99.2971 85.4758 99.2971Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M27.5194 59.0109C33.5885 59.0109 37.1306 62.2791 37.2796 62.4178C37.4165 62.5479 37.4234 62.7636 37.295 62.9023C37.1649 63.0393 36.9492 63.0461 36.8105 62.9177C36.7762 62.8852 33.306 59.6957 27.5194 59.6957C21.7327 59.6957 18.2145 63.1848 18.1786 63.219C18.045 63.3543 17.8293 63.3543 17.6941 63.2207C17.5605 63.0872 17.5588 62.8715 17.6907 62.7362C17.8413 62.5839 21.44 59.0092 27.5176 59.0092L27.5194 59.0109Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M15.2804 56.4617C16.0445 56.3303 16.5574 55.6043 16.426 54.8402C16.2945 54.0761 15.5685 53.5632 14.8044 53.6946C14.0403 53.8261 13.5274 54.552 13.6589 55.3162C13.7903 56.0803 14.5163 56.5931 15.2804 56.4617Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M39.7898 56.4673C40.5543 56.3383 41.0695 55.6139 40.9404 54.8494C40.8114 54.0849 40.087 53.5697 39.3225 53.6987C38.558 53.8278 38.0428 54.5521 38.1719 55.3167C38.3009 56.0812 39.0253 56.5963 39.7898 56.4673Z\"\n fill=\"#CFCFCF\"\n />\n </svg>\n );\n}\n\nexport function NoFormResponsesSVG() {\n return (\n <svg\n width=\"101\"\n height=\"101\"\n viewBox=\"0 0 101 101\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_19514_18450)\">\n <path\n d=\"M85.4799 21.487V94.6849C85.4782 96.551 83.9677 98.0636 82.1053 98.062H13.373C11.5105 98.0603 10 96.5477 10 94.6833V82.7387L10.0573 76.1557V3.37867C10.0589 1.51259 11.5695 0 13.4319 0H80.2134C83.1216 0 85.4799 2.37082 85.4799 5.29243V18.0327V21.4887V21.487Z\"\n fill=\"#E5E5E5\"\n />\n <path\n d=\"M87.2904 22.5905V95.7884C87.2888 97.6545 85.7782 99.1671 83.9158 99.1655H15.1835C13.3211 99.1638 11.8105 97.6512 11.8105 95.7852V83.8406L11.8678 77.2576V4.48054C11.8695 2.61446 13.38 1.10187 15.2424 1.10352H82.024C84.9321 1.10352 87.2904 3.47434 87.2904 6.39594V19.1346V22.5905Z\"\n fill=\"#F9F9F9\"\n />\n <path\n d=\"M86.8945 22.6973C86.8945 25.6846 86.8945 28.672 86.8945 31.6594C86.8945 38.5564 86.8945 45.4519 86.8945 52.349C86.8945 60.129 86.8945 67.9089 86.8945 75.6889C86.8945 81.3398 86.8945 86.9906 86.8945 92.6415C86.8945 93.7003 86.9174 94.7607 86.8945 95.8195C86.8585 97.4604 85.7767 98.9204 84.0567 98.9845C83.7605 98.996 83.461 98.9845 83.1648 98.9845C78.5218 98.9845 73.8789 98.9845 69.236 98.9845C61.6669 98.9845 54.0978 98.9845 46.5287 98.9845C39.4129 98.9845 32.2988 98.9845 25.183 98.9845C21.9148 98.9845 18.6237 99.1012 15.3571 98.9845C13.3458 98.9121 12.2067 97.2171 12.2067 95.3411C12.2067 93.845 12.2067 92.3488 12.2067 90.8543C12.2067 88.278 12.1903 85.7 12.2116 83.1236C12.2411 79.7598 12.264 76.3959 12.264 73.032C12.264 67.0885 12.264 61.145 12.264 55.2015C12.264 47.4035 12.264 39.6054 12.264 31.8073C12.264 25.124 12.264 18.4423 12.264 11.7589C12.264 9.82215 12.264 7.88373 12.264 5.94695C12.264 4.19596 12.1871 2.11122 14.2704 1.4174C15.2245 1.10008 16.5076 1.28916 17.4912 1.28916C19.7562 1.28916 22.0195 1.28916 24.2845 1.28916C31.3938 1.28916 38.503 1.28916 45.6122 1.28916C53.1306 1.28916 60.6506 1.28916 68.1689 1.28916C72.5451 1.28916 76.9229 1.28916 81.2991 1.28916C81.8506 1.28916 82.3776 1.28916 82.9258 1.41904C85.3299 1.98462 86.8667 4.18117 86.8961 6.60131C86.9321 9.7383 86.8961 12.8769 86.8961 16.0139C86.8961 18.2433 86.8961 20.4711 86.8961 22.7005C86.8961 22.8682 87.6866 22.7449 87.6866 22.4885C87.6866 17.0925 87.7831 11.6899 87.6866 6.29551C87.6408 3.70602 85.798 1.47659 83.245 1.01788C82.7294 0.925808 82.2156 0.925808 81.6951 0.925808C80.124 0.925808 78.5546 0.925808 76.9835 0.925808C70.4732 0.925808 63.963 0.925808 57.4527 0.925808C49.5842 0.925808 41.7156 0.925808 33.8453 0.925808C28.3776 0.925808 22.9082 0.925808 17.4404 0.925808C16.1852 0.925808 14.8121 0.782769 13.6436 1.32369C12.2934 1.94681 11.4948 3.20292 11.4752 4.6892C11.4703 5.06406 11.4752 5.44056 11.4752 5.81542C11.4752 10.6393 11.4752 15.4631 11.4752 20.2853C11.4752 28.0061 11.4752 35.7253 11.4752 43.4461C11.4752 50.8397 11.4752 58.2333 11.4752 65.6269C11.4752 69.4709 11.4817 73.3132 11.4752 77.1571C11.467 82.0336 11.4179 86.9101 11.4179 91.7882C11.4179 93.1216 11.3917 94.4599 11.4179 95.7932C11.4588 97.8484 13.0004 99.3051 15.0232 99.3511C15.9413 99.3725 16.8627 99.3511 17.7808 99.3511C23.4908 99.3511 29.2008 99.3511 34.9091 99.3511C42.8104 99.3511 50.7117 99.3511 58.6131 99.3511C65.1413 99.3511 71.6696 99.3511 78.1978 99.3511C79.8327 99.3511 81.4693 99.3511 83.1042 99.3511C83.3923 99.3511 83.6852 99.3626 83.9732 99.3445C85.9747 99.2163 87.6293 97.7317 87.685 95.6732C87.7717 92.4474 87.685 89.2085 87.685 85.9828C87.685 78.8473 87.685 71.7102 87.685 64.5747C87.685 56.7174 87.685 48.8618 87.685 41.0045C87.685 35.6118 87.685 30.2175 87.685 24.8248C87.685 24.0454 87.685 23.2678 87.685 22.4885C87.685 22.3208 86.8945 22.4441 86.8945 22.7005V22.6973Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M90.5639 24.2346V97.4325C90.5622 99.2986 89.0517 100.811 87.1893 100.81H18.4569C16.5945 100.808 15.084 99.2953 15.084 97.4292V85.4847L15.1413 78.9016V6.12458C15.1429 4.25851 16.6534 2.74592 18.5159 2.74756H85.2974C88.2056 2.74756 90.5639 5.11838 90.5639 8.03999V20.7786V24.2346Z\"\n fill=\"#F9F9F9\"\n />\n <path\n d=\"M88.4475 23.9186V97.5144C88.4458 99.3344 86.9909 100.809 85.1956 100.809H18.3322C16.5369 100.808 15.082 99.3328 15.082 97.5127V85.8625L15.1377 79.4422V8.454C15.1393 6.63396 16.5942 5.15918 18.3895 5.15918H85.5278C87.1415 5.15918 88.4491 6.45639 88.4491 8.05283V23.917L88.4475 23.9186Z\"\n fill=\"white\"\n />\n <path\n d=\"M90.1679 24.3413C90.1679 27.3287 90.1679 30.316 90.1679 33.3034C90.1679 40.2005 90.1679 47.0959 90.1679 53.993C90.1679 61.773 90.1679 69.553 90.1679 77.333C90.1679 82.9838 90.1679 88.6347 90.1679 94.2855C90.1679 95.3443 90.1908 96.4048 90.1679 97.4636C90.1319 99.1044 89.0502 100.564 87.3301 100.629C87.0339 100.64 86.7344 100.629 86.4382 100.629C81.7953 100.629 77.1524 100.629 72.5094 100.629C64.9403 100.629 57.3712 100.629 49.8021 100.629C42.6864 100.629 35.5722 100.629 28.4564 100.629C25.1882 100.629 21.8971 100.745 18.6305 100.629C16.6192 100.556 15.4801 98.8611 15.4801 96.9852C15.4801 95.489 15.4801 93.9929 15.4801 92.4983C15.4801 89.922 15.4638 87.344 15.4851 84.7677C15.5145 81.4038 15.5374 78.0399 15.5374 74.6761C15.5374 68.7326 15.5374 62.7891 15.5374 56.8456C15.5374 49.0475 15.5374 41.2494 15.5374 33.4514C15.5374 26.768 15.5374 20.0863 15.5374 13.403C15.5374 11.4662 15.5374 9.52777 15.5374 7.591C15.5374 5.84001 15.4605 3.75526 17.5439 3.06144C18.498 2.74413 19.781 2.9332 20.7646 2.9332C23.0296 2.9332 25.293 2.9332 27.558 2.9332C34.6672 2.9332 41.7764 2.9332 48.8857 2.9332C56.404 2.9332 63.924 2.9332 71.4424 2.9332C75.8186 2.9332 80.1964 2.9332 84.5725 2.9332C85.124 2.9332 85.651 2.9332 86.1993 3.06309C88.6034 3.62866 90.1401 5.82521 90.1696 8.24536C90.2056 11.3823 90.1696 14.521 90.1696 17.658C90.1696 19.8874 90.1696 22.1152 90.1696 24.3446C90.1696 24.5123 90.96 24.389 90.96 24.1325C90.96 18.7365 91.0566 13.3339 90.96 7.93955C90.9142 5.35006 89.0714 3.12063 86.5184 2.66192C86.0029 2.56985 85.489 2.56985 84.9686 2.56985C83.3975 2.56985 81.828 2.56985 80.2569 2.56985C73.7467 2.56985 67.2364 2.56985 60.7262 2.56985C52.8576 2.56985 44.989 2.56985 37.1188 2.56985C31.651 2.56985 26.1816 2.56985 20.7139 2.56985C19.4586 2.56985 18.0856 2.42681 16.917 2.96773C15.5669 3.59085 14.7682 4.84696 14.7486 6.33324C14.7437 6.7081 14.7486 7.08461 14.7486 7.45947C14.7486 12.2833 14.7486 17.1072 14.7486 21.9294C14.7486 29.6502 14.7486 37.3693 14.7486 45.0901C14.7486 52.4837 14.7486 59.8773 14.7486 67.271C14.7486 71.1149 14.7552 74.9572 14.7486 78.8012C14.7404 83.6776 14.6913 88.5541 14.6913 93.4322C14.6913 94.7656 14.6651 96.1039 14.6913 97.4373C14.7322 99.4924 16.2739 100.949 18.2967 100.995C19.2148 101.017 20.1362 100.995 21.0543 100.995C26.7642 100.995 32.4742 100.995 38.1825 100.995C46.0839 100.995 53.9852 100.995 61.8865 100.995C68.4147 100.995 74.943 100.995 81.4712 100.995C83.1062 100.995 84.7427 100.995 86.3777 100.995C86.6657 100.995 86.9586 101.007 87.2467 100.989C89.2482 100.86 90.9027 99.3757 90.9584 97.3173C91.0451 94.0915 90.9584 90.8526 90.9584 87.6268C90.9584 80.4913 90.9584 73.3542 90.9584 66.2187C90.9584 58.3615 90.9584 50.5058 90.9584 42.6486C90.9584 37.2559 90.9584 31.8615 90.9584 26.4688C90.9584 25.6895 90.9584 24.9118 90.9584 24.1325C90.9584 23.9648 90.1679 24.0881 90.1679 24.3446V24.3413Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M30.7071 43.3785H83.5681C84.005 43.3785 84.1867 42.8359 83.6483 42.8359H30.7873C30.3504 42.8359 30.1687 43.3785 30.7071 43.3785Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M22.1974 48.3108H81.0645C81.8468 48.3108 82.6863 48.3979 83.4653 48.3108C83.4997 48.3075 83.5357 48.3108 83.5701 48.3108C84.007 48.3108 84.1887 47.7682 83.6503 47.7682H24.7831C24.0009 47.7682 23.1613 47.6811 22.3823 47.7682C22.3479 47.7715 22.3119 47.7682 22.2776 47.7682C21.8406 47.7682 21.6589 48.3108 22.1974 48.3108Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M22.1974 53.2432H73.9127C74.3497 53.2432 74.5313 52.7007 73.9929 52.7007H22.2776C21.8406 52.7007 21.6589 53.2432 22.1974 53.2432Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M30.0372 58.1754H83.5675C84.0045 58.1754 84.1861 57.6328 83.6477 57.6328H30.1174C29.6804 57.6328 29.4988 58.1754 30.0372 58.1754Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M22.1974 63.1081H81.0645C81.8468 63.1081 82.6863 63.1953 83.4653 63.1081C83.4997 63.1049 83.5357 63.1081 83.5701 63.1081C84.007 63.1081 84.1887 62.5656 83.6503 62.5656H24.7831C24.0009 62.5656 23.1613 62.4784 22.3823 62.5656C22.3479 62.5689 22.3119 62.5656 22.2776 62.5656C21.8406 62.5656 21.6589 63.1081 22.1974 63.1081Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M22.1974 68.0401H73.569C74.006 68.0401 74.1877 67.4976 73.6492 67.4976H22.2776C21.8406 67.4976 21.6589 68.0401 22.1974 68.0401Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M67.2159 32.3794H38.941C38.2929 32.3794 37.7676 32.9072 37.7676 33.5582V33.5599C37.7676 34.2109 38.2929 34.7387 38.941 34.7387H67.2159C67.8639 34.7387 68.3893 34.2109 68.3893 33.5599V33.5582C68.3893 32.9072 67.8639 32.3794 67.2159 32.3794Z\"\n fill=\"#EFEFEF\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_19514_18450\">\n <rect width=\"81\" height=\"101\" fill=\"white\" transform=\"translate(10)\" />\n </clipPath>\n </defs>\n </svg>\n );\n}\n\nexport function ZoomOutSVG() {\n return (\n <svg\n width=\"24\"\n height=\"25.5\"\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M1.33301 7.50005C1.33308 6.59644 1.54925 5.70596 1.96347 4.90288C2.37769 4.09981 2.97795 3.40744 3.71418 2.88354C4.4504 2.35963 5.30124 2.01939 6.1957 1.89119C7.09017 1.76298 8.00232 1.85055 8.85606 2.14657C9.70981 2.44259 10.4804 2.93848 11.1035 3.59287C11.7266 4.24727 12.1842 5.04118 12.4381 5.90839C12.692 6.7756 12.7348 7.69094 12.563 8.57806C12.3911 9.46518 12.0096 10.2983 11.4503 11.008L13.885 13.4427C14.0064 13.5684 14.0736 13.7369 14.0721 13.9116C14.0706 14.0864 14.0005 14.2537 13.8769 14.3773C13.7533 14.5009 13.5861 14.571 13.4113 14.5725C13.2365 14.574 13.0681 14.5068 12.9423 14.3854L10.5077 11.9507C9.67209 12.6094 8.66794 13.0195 7.61016 13.1341C6.55237 13.2487 5.48369 13.0632 4.5264 12.5989C3.56912 12.1345 2.76191 11.41 2.19716 10.5082C1.63241 9.60653 1.33294 8.56402 1.33301 7.50005ZM4.66634 6.83338C4.48953 6.83338 4.31996 6.90362 4.19494 7.02864C4.06991 7.15367 3.99967 7.32324 3.99967 7.50005C3.99967 7.67686 4.06991 7.84643 4.19494 7.97145C4.31996 8.09648 4.48953 8.16671 4.66634 8.16671H9.33301C9.50982 8.16671 9.67939 8.09648 9.80441 7.97145C9.92944 7.84643 9.99967 7.67686 9.99967 7.50005C9.99967 7.32324 9.92944 7.15367 9.80441 7.02864C9.67939 6.90362 9.50982 6.83338 9.33301 6.83338H4.66634Z\"\n fill=\"#666666\"\n />\n </svg>\n );\n}\n\nexport function ZoomInSVG() {\n return (\n <svg\n width=\"24\"\n height=\"25.5\"\n viewBox=\"0 0 16 17\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M7.00017 1.83337C6.09656 1.83345 5.20608 2.04962 4.40301 2.46384C3.59994 2.87806 2.90756 3.47832 2.38366 4.21454C1.85976 4.95077 1.51951 5.80161 1.39131 6.69607C1.26311 7.59053 1.35067 8.50269 1.64669 9.35643C1.94271 10.2102 2.4386 10.9807 3.09299 11.6039C3.74739 12.227 4.54131 12.6846 5.40851 12.9384C6.27572 13.1923 7.19106 13.2351 8.07818 13.0633C8.9653 12.8915 9.79847 12.51 10.5082 11.9507L12.9428 14.3854C13.0686 14.5068 13.237 14.574 13.4118 14.5725C13.5866 14.571 13.7538 14.5009 13.8774 14.3773C14.001 14.2536 14.0711 14.0864 14.0726 13.9116C14.0741 13.7368 14.0069 13.5684 13.8855 13.4427L11.4508 11.008C12.1095 10.1725 12.5196 9.16831 12.6342 8.11052C12.7489 7.05274 12.5634 5.98405 12.099 5.02677C11.6346 4.06948 10.9101 3.26228 10.0084 2.69753C9.10665 2.13278 8.06415 1.8333 7.00017 1.83337ZM4.00017 7.50004C4.00017 7.32323 4.07041 7.15366 4.19543 7.02864C4.32046 6.90361 4.49002 6.83337 4.66684 6.83337H6.3335V5.16671C6.3335 4.9899 6.40374 4.82033 6.52876 4.6953C6.65379 4.57028 6.82336 4.50004 7.00017 4.50004C7.17698 4.50004 7.34655 4.57028 7.47157 4.6953C7.5966 4.82033 7.66684 4.9899 7.66684 5.16671V6.83337H9.3335C9.51031 6.83337 9.67988 6.90361 9.80491 7.02864C9.92993 7.15366 10.0002 7.32323 10.0002 7.50004C10.0002 7.67685 9.92993 7.84642 9.80491 7.97145C9.67988 8.09647 9.51031 8.16671 9.3335 8.16671H7.66684V9.83337C7.66684 10.0102 7.5966 10.1798 7.47157 10.3048C7.34655 10.4298 7.17698 10.5 7.00017 10.5C6.82336 10.5 6.65379 10.4298 6.52876 10.3048C6.40374 10.1798 6.3335 10.0102 6.3335 9.83337V8.16671H4.66684C4.49002 8.16671 4.32046 8.09647 4.19543 7.97145C4.07041 7.84642 4.00017 7.67685 4.00017 7.50004Z\"\n fill=\"#666666\"\n />\n </svg>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Skeleton, Stack } from '@mui/material';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ApplicationAction, IApplication } from '../types';\nimport { styles } from '../styles';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { UseQueryResult, useMutation } from '@tanstack/react-query';\nimport QuestionFieldGenerator from '../../Components/Utilities/QuestionFieldGenerator';\nimport Api from '../API';\n\nexport default function Questionnaire({\n hrQuestion,\n dispatch\n}: {\n hrQuestion: UseQueryResult<any, unknown>;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const [hrAnswer, setHrAnswer] = useState<string | number | Record<string, boolean | string>>('');\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const formatSavedAnswer = () => {\n if (hrQuestion.data.type === 'CheckBoxField') {\n const answer: { [key: number]: boolean } = {};\n hrQuestion.data.field_choices.map((c: { id: number }) => {\n if (hrQuestion.data.answer.map((a: { id: number }) => a.id).includes(c.id)) {\n answer[c.id] = true;\n } else {\n answer[c.id] = false;\n }\n });\n return answer;\n } else if (\n hrQuestion.data.type === 'SelectField' ||\n hrQuestion.data.type === 'RadioButtonField'\n ) {\n return hrQuestion.data.answer[0]?.id || '';\n } else {\n return hrQuestion.data.answer || '';\n }\n };\n\n const formatHrAnswer = () => {\n if (hrQuestion.data.type === 'CheckBoxField') {\n if (typeof hrAnswer === 'object') {\n return {\n field_choice_ids: Object.keys(hrAnswer).map((key) => (hrAnswer[key] ? key : ''))\n };\n }\n } else if (\n hrQuestion.data.type === 'SelectField' ||\n hrQuestion.data.type === 'RadioButtonField'\n ) {\n return { field_choice_id: hrAnswer };\n } else {\n return { data: hrAnswer };\n }\n };\n\n const { mutate: saveHrQuestion, isLoading: savingHrQuestion } = useMutation({\n mutationFn: async () => {\n if (application) {\n const { res } = await Api.saveHrQuestion(\n application.job.id,\n application.id,\n hrQuestion.data.id,\n {\n answers_attributes: {\n 0: {\n field_id: hrQuestion.data.question_id,\n ...formatHrAnswer()\n }\n }\n }\n );\n return res;\n }\n },\n onSuccess: (res) => {\n queryClient.setQueryData(['hr questions'], res.hr_answer[0]);\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Application questionnaire has been saved successfully`,\n state: 'success'\n }\n });\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in saving application questionnaire, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n if (!hrQuestion.data) return null;\n\n return (\n <Stack sx={styles.questionnaireContainer}>\n <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Application Questionnaire</Stack>\n {hrQuestion.isLoading ? (\n [...Array(3)].map((_, index) => <Skeleton key={index} height={30} animation=\"wave\" />)\n ) : (\n <QuestionFieldGenerator\n question={hrQuestion.data}\n answer={formatSavedAnswer()}\n onChangeCallback={(id, value) => setHrAnswer(value)}\n fullWidth={hrQuestion.data.type === 'TextAreaField' ? true : undefined}\n />\n )}\n <ModalFooterButtons\n primaryButtonText=\"Save\"\n primaryButtonCallback={saveHrQuestion}\n isLoading={savingHrQuestion}\n primaryButtonMinWidth=\"75px\"\n primaryButtonID=\"save-application-questionnaire-button\"\n />\n </Stack>\n );\n}\n","import React, { Dispatch, SetStateAction, MutableRefObject } from 'react';\nimport { Grid, Stack } from '@mui/material';\nimport QuestionFieldGenerator, {\n IApplicantQuestion\n} from '../../Components/Utilities/QuestionFieldGenerator';\nimport Rating from './Rating';\nimport { styles } from '../styles';\nimport { getAnswerValue } from '../SmartFormsTab/get-answer-value';\nimport { IAnswer } from '../../ApprovalForms/types';\n\nexport default function QuestionsAndRatings({\n questions,\n questionErrors,\n setQuestionErrors,\n ratings,\n setRatings,\n setAnswers,\n questionsRef,\n formResponseAnswers\n}: {\n questions?: IApplicantQuestion[];\n questionErrors: Record<number, string>;\n setQuestionErrors: Dispatch<SetStateAction<Record<number, string>>>;\n ratings: Record<number, number>;\n setRatings: Dispatch<SetStateAction<Record<number, number>>>;\n setAnswers: Dispatch<\n SetStateAction<Record<number, string | number | Record<string, string | boolean>>>\n >;\n questionsRef: MutableRefObject<(HTMLDivElement | null)[]>;\n formResponseAnswers?: IAnswer[];\n}) {\n return (\n <Stack sx={styles.questionsAndRatingsContainer}>\n <Grid container spacing={2}>\n <Grid item xs={8}>\n <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Questions/Answers</Stack>\n </Grid>\n <Grid item xs={4}>\n <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Rating</Stack>\n </Grid>\n </Grid>\n {questions?.map((q, index) => (\n <Grid key={q.id} container spacing={2}>\n <Grid item xs={8}>\n <QuestionFieldGenerator\n question={q}\n questionRef={(el) => (questionsRef.current[index] = el)}\n questionError={questionErrors[q.id]}\n onChangeCallback={(id, value) => {\n setAnswers((prev) => ({ ...prev, [id]: value }));\n setQuestionErrors((prev) => ({\n ...prev,\n [id]: value || !q.required ? '' : 'This field is required'\n }));\n }}\n answer={formResponseAnswers && getAnswerValue(q, index, formResponseAnswers)}\n fullWidth={q.type === 'TextAreaField' ? true : undefined}\n />\n </Grid>\n <Grid item xs={4}>\n {q.rateable && (\n <Rating\n value={ratings[q.id]}\n setValue={(rate) => setRatings({ ...ratings, [q.id]: rate })}\n />\n )}\n </Grid>\n </Grid>\n ))}\n </Stack>\n );\n}\n","import React, { useState } from 'react';\nimport { Stack } from '@mui/material';\nimport { styles } from '../styles';\n\nexport default function Rating({\n value,\n setValue,\n disabled = false\n}: {\n value: number;\n setValue: (rating: number) => void;\n disabled?: boolean;\n}) {\n const [hover, setHover] = useState<number>(0);\n const ratings: (1 | 2 | 3 | 4 | 5)[] = [1, 2, 3, 4, 5];\n return (\n <Stack sx={{ flexDirection: 'row', columnGap: 1 }}>\n {ratings.map((r) => (\n <Stack\n key={r}\n sx={{\n ...styles.ratingButton,\n ...((hover || value) >= r && styles.ratingColor[r]),\n cursor: disabled ? 'inherit' : 'pointer'\n }}\n onClick={() => !disabled && setValue(r)}\n onMouseEnter={() => !disabled && setHover(r)}\n onMouseLeave={() => !disabled && setHover(0)}\n >\n {r}\n </Stack>\n ))}\n </Stack>\n );\n}\n","import React from 'react';\nimport { Stack } from '@mui/material';\nimport { styles } from '../styles';\nimport { getApplicationRatingColor } from '../config';\n\nexport default function RatingCard({\n rating,\n children\n}: {\n rating: number | null;\n children: React.ReactNode;\n}) {\n return (\n <Stack\n sx={{\n ...styles.ratingCard,\n ...getApplicationRatingColor(rating)\n }}\n >\n {children}\n </Stack>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack, Popover, Button, CircularProgress, Tooltip } from '@mui/material';\nimport {\n Menu as MenuIcon,\n Edit as EditIcon,\n Done as DoneIcon,\n Close as CloseIcon\n} from '@mui/icons-material';\nimport { useMutation, useQueryClient, UseQueryResult } from '@tanstack/react-query';\nimport { IApplication } from '../types';\nimport { FormNumberField } from '../../Components/CustomUIElements/FormTextField';\nimport { styles } from '../styles';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableSection from './SortableSection';\nimport { ApplicationState, ApplicationAction } from '../types';\nimport { defaultSections } from '../config';\nimport Api from '../API';\nimport { theme } from '../../../../components/ThemeContext/ThemeObject';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport RatingCard from './RatingCard';\n\nconst RatingLabel = ({ label }: { label: string }) => (\n <Tooltip\n title={`${label} rating`}\n placement=\"bottom-start\"\n PopperProps={{ modifiers: [{ name: 'offset', options: { offset: [8, -10] } }] }}\n >\n <Stack sx={{ color: '#333333' }}>{label}</Stack>\n </Tooltip>\n);\n\nexport default function Ratings({\n ApplicationState,\n dispatch,\n hrQuestion\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n hrQuestion: UseQueryResult<any, unknown>;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n const { sortableSections } = ApplicationState;\n const [editRating, setEditRating] = useState<{ interview: boolean; ref: boolean }>({\n interview: false,\n ref: false\n });\n const [interviewRating, setInterviewRating] = useState<string>(\n application?.ratings.interview_rating === null\n ? ''\n : String(application?.ratings.interview_rating)\n );\n const [refRating, setRefRating] = useState<string>(\n application?.ratings.ref_check_rating === null\n ? ''\n : String(application?.ratings.ref_check_rating)\n );\n const [ratingErrors, setRatingErrors] = useState<{ ref: boolean; interview: boolean }>({\n ref: false,\n interview: false\n });\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n\n const { mutate: rateApplication, isLoading: ratingApplication } = useMutation({\n mutationFn: async () => {\n if (application) {\n const { res } = await Api.updateApplicationRating(application.job.id, application.id, {\n ref_check_rating: refRating ? refRating : null,\n interview_rating: interviewRating ? interviewRating : null\n });\n return res;\n }\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `${refRating ? 'Ref check' : 'Interview'} rating has been updated successfully`,\n state: 'success'\n }\n });\n queryClient.setQueryData(['application'], {\n ...res,\n surround_application: application?.surround_application\n });\n queryClient.invalidateQueries(['application']);\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in updating ${refRating ? 'ref check' : 'interview'} rating, ${error.error}`,\n state: 'error'\n }\n });\n setInterviewRating(String(application?.ratings.interview_rating));\n setRefRating(String(application?.ratings.ref_check_rating));\n }\n });\n\n const { mutate: updateUiPreferences } = useMutation({\n mutationFn: async (sections: string[]) => {\n if (application) {\n await Api.updateUiPreferences({ sorting: { order: sections }, source: 'application' });\n }\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error saving your preferences, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n if (active.id !== over?.id) {\n const oldIndex = sortableSections.findIndex((e) => e === active.id);\n const newIndex = sortableSections.findIndex((e) => e === over?.id);\n const newArray = arrayMove(sortableSections, oldIndex, newIndex);\n dispatch({ type: 'SET_SORTABLE_SECTIONS', payload: newArray });\n updateUiPreferences(newArray);\n }\n }\n\n const RatingValue = ({ value }: { value: number | null }) => {\n const displayValue = value === null ? 'Unrated' : `${value}%`;\n return (\n <Stack sx={{ fontWeight: 'bold', fontSize: '12px' }}>\n {ratingApplication ? (\n <CircularProgress size={15} color=\"inherit\" sx={{ marginTop: 0.5 }} />\n ) : (\n displayValue\n )}\n </Stack>\n );\n };\n\n const filteredSortableSections = hrQuestion.data\n ? sortableSections\n : sortableSections.filter((t) => t !== 'Application questionnaire');\n\n const RatingErrorMessage = () => (\n <Stack sx={{ color: theme.palette.error.main, fontSize: '8px' }}>\n Number must be between 0-100\n </Stack>\n );\n\n if (!application) return null;\n\n return (\n <Stack sx={{ flexDirection: 'row', columnGap: 1 }}>\n <Stack sx={{ flexDirection: 'row', width: '100%', justifyContent: 'space-evenly' }}>\n {!permissions?.Applications?.['Hide Overall Rating'] && (\n <RatingCard rating={application.ratings.overall_rating}>\n <RatingLabel label=\"Overall\" />\n <RatingValue value={application.ratings.overall_rating} />\n </RatingCard>\n )}\n <RatingCard rating={application.ratings.qa_rating}>\n <RatingLabel label=\"Q/A\" />\n <RatingValue value={application.ratings.qa_rating} />\n </RatingCard>\n <RatingCard rating={application.ratings.interview_rating}>\n <RatingLabel label=\"Interview\" />\n <Stack sx={styles.editableRatings}>\n {editRating.interview ? (\n <Stack>\n <Stack sx={styles.ratingInput}>\n <FormNumberField\n value={interviewRating}\n onChange={(e) => setInterviewRating(e.target.value)}\n styles={styles.editRating}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n if (Number(interviewRating) >= 0 && Number(interviewRating) <= 100) {\n rateApplication();\n setEditRating({ ...editRating, interview: !editRating.interview });\n } else {\n setRatingErrors({ ...ratingErrors, interview: true });\n }\n }\n }}\n placeholder=\"e.g.100\"\n />\n {ratingApplication ? (\n <CircularProgress size={15} />\n ) : (\n <DoneIcon\n id=\"save-interview-rating-button\"\n sx={{ color: '#5BC4C0', cursor: 'pointer', fontSize: '16px' }}\n onClick={() => {\n if (Number(interviewRating) >= 0 && Number(interviewRating) <= 100) {\n rateApplication();\n setEditRating({ ...editRating, interview: !editRating.interview });\n } else {\n setRatingErrors({ ...ratingErrors, interview: true });\n }\n }}\n />\n )}\n <CloseIcon\n sx={{ ...styles.clickableGreyIcon, fontSize: '16px' }}\n onClick={() => {\n setEditRating({ ...editRating, interview: !editRating.interview });\n setRatingErrors({ ...ratingErrors, interview: false });\n setInterviewRating(\n application.ratings.interview_rating === null\n ? ''\n : String(application.ratings.interview_rating)\n );\n }}\n />\n </Stack>\n {ratingErrors.interview && <RatingErrorMessage />}\n </Stack>\n ) : (\n <Stack sx={{ flexDirection: 'row', columnGap: 1, alignItems: 'center' }}>\n <RatingValue value={application.ratings.interview_rating} />\n {permissions?.Applications?.['Add Advanced Ratings'] &&\n permissions.Applications?.['Rate Applications'] &&\n !editRating.interview &&\n !application.original_job && (\n <EditIcon\n id=\"edit-interview-rating-button\"\n sx={{ cursor: 'pointer' }}\n onClick={() => {\n setEditRating({ ...editRating, interview: !editRating.interview });\n }}\n />\n )}\n </Stack>\n )}\n </Stack>\n </RatingCard>\n <RatingCard rating={application.ratings.ref_check_rating}>\n <RatingLabel label=\"Ref check\" />\n <Stack sx={styles.editableRatings}>\n {editRating.ref ? (\n <Stack>\n <Stack sx={styles.ratingInput}>\n <FormNumberField\n value={refRating}\n onChange={(e) => setRefRating(e.target.value)}\n styles={styles.editRating}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n if (Number(refRating) >= 0 && Number(refRating) <= 100) {\n rateApplication();\n setEditRating({ ...editRating, ref: !editRating.ref });\n } else {\n setRatingErrors({ ...ratingErrors, ref: true });\n }\n }\n }}\n placeholder=\"e.g.100\"\n />\n {ratingApplication ? (\n <CircularProgress size={15} />\n ) : (\n <DoneIcon\n id=\"save-ref-check-rating-button\"\n sx={{ color: '#5BC4C0', cursor: 'pointer', fontSize: '16px' }}\n onClick={() => {\n if (Number(refRating) >= 0 && Number(refRating) <= 100) {\n rateApplication();\n setEditRating({ ...editRating, ref: !editRating.ref });\n } else {\n setRatingErrors({ ...ratingErrors, ref: true });\n }\n }}\n />\n )}\n <CloseIcon\n sx={{ ...styles.clickableGreyIcon, fontSize: '16px' }}\n onClick={() => {\n setEditRating({ ...editRating, ref: !editRating.ref });\n setRatingErrors({ ...ratingErrors, ref: false });\n setRefRating(\n application.ratings.ref_check_rating === null\n ? ''\n : String(application.ratings.ref_check_rating)\n );\n }}\n />\n </Stack>\n {ratingErrors.ref && <RatingErrorMessage />}\n </Stack>\n ) : (\n <Stack sx={{ flexDirection: 'row', columnGap: 1, alignItems: 'center' }}>\n <RatingValue value={application.ratings.ref_check_rating} />\n {permissions?.Applications?.['Add Advanced Ratings'] &&\n permissions.Applications?.['Rate Applications'] &&\n !editRating.ref &&\n !application.original_job && (\n <EditIcon\n id=\"edit-ref-check-rating-button\"\n sx={{ cursor: 'pointer' }}\n onClick={() => {\n setEditRating({ ...editRating, ref: !editRating.ref });\n }}\n />\n )}\n </Stack>\n )}\n </Stack>\n </RatingCard>\n </Stack>\n <Stack\n id=\"sections-button\"\n sx={{\n ...styles.sortableSectionsButton,\n backgroundColor: anchorEl ? 'rgba(8,77,109,0.121)' : '#FFFFFF'\n }}\n onClick={(e) => setAnchorEl(e.currentTarget)}\n >\n <MenuIcon />\n </Stack>\n <Popover\n open={!!anchorEl}\n anchorEl={anchorEl}\n onClose={() => setAnchorEl(null)}\n sx={{ marginTop: 1 }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <Stack sx={{ padding: 3, rowGap: 1 }}>\n <Stack sx={styles.sortableSectionsHeader}>\n <Stack sx={{ fontWeight: 'bold' }}>Sections</Stack>\n <Button\n id=\"reset-sections-button\"\n sx={{ ...sharedClasses.genericButton, padding: '2px 12px', borderRadius: '4px' }}\n onClick={() => {\n dispatch({ type: 'SET_SORTABLE_SECTIONS', payload: defaultSections });\n updateUiPreferences(defaultSections);\n }}\n >\n Reset\n </Button>\n </Stack>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={sortableSections} strategy={verticalListSortingStrategy}>\n {filteredSortableSections\n .filter((s) =>\n permissions?.Applications?.['Add Suitability Comment'] ? s : s !== 'Notepad'\n )\n .map((section, index) => (\n <SortableSection key={index} section={section} />\n ))}\n </SortableContext>\n </DndContext>\n </Stack>\n </Popover>\n </Stack>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Collapse, Divider, Grid, Stack, ToggleButtonGroup, ToggleButton } from '@mui/material';\nimport {\n Info as InfoIcon,\n ExpandMore as ExpandMoreIcon,\n ExpandLess as ExpandLessIcon,\n ContentPaste as ContentPasteIcon\n} from '@mui/icons-material';\nimport { useQueryClient, useMutation, useQuery } from '@tanstack/react-query';\nimport { ApplicationAction, IApplication, IJobQuestion } from '../types';\nimport { styles } from '../styles';\nimport Rating from './Rating';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport Api from '../API';\nimport AvailabilityPreview from '../../ApprovalForms/Questions/Modals/AvailabilityPreview';\nimport dompurify from 'dompurify';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { IAnswer } from '../../ApprovalForms/types';\nimport { IApplicantQuestion } from '../../EditJob/types';\n\nexport default function Responses({ dispatch }: { dispatch: Dispatch<ApplicationAction> }) {\n const [showRatingInfo, setShowRatingInfo] = useState<boolean>(false);\n const [ratings, setRatings] = useState<Record<number, number>>({});\n const [jobQuestions, setJobQuestions] = useState<string>('current');\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n const handleToggle = (event: React.MouseEvent<HTMLElement>, newSelected: string) => {\n if (newSelected !== null) {\n setJobQuestions(newSelected);\n }\n };\n\n const formatRatings = () => {\n const ratingsObject: { [key: number]: { field_value_id: number; rating: number } } = {};\n Object.keys(ratings)\n .filter((t) => ratings[Number(t)])\n .map(\n (m, index) =>\n (ratingsObject[index] = { field_value_id: Number(m), rating: ratings[Number(m)] })\n );\n return ratingsObject;\n };\n\n const { mutate: rateResponses, isLoading: ratingResponses } = useMutation({\n mutationFn: async () => {\n if (application) {\n if (Object.keys(formatRatings()).length === 0) {\n const { res } = await Api.resetRatingForApplication(application.job.id, application.id);\n return res;\n } else {\n const { res } = await Api.rateResponses(application.job.id, application.id, {\n ratings_attributes: formatRatings()\n });\n return res;\n }\n }\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Application responses has been rated successfully`,\n state: 'success'\n }\n });\n queryClient.setQueryData(['application'], {\n ...res,\n surround_application: application?.surround_application\n });\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in rating application responses, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const { isLoading: loadingRatings } = useQuery({\n queryKey: ['rating set'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getRatingSetForApplication(application.job.id, application.id);\n return res.ratings;\n }\n },\n onSuccess: (res) => {\n setRatings(res);\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting rating set for application, ${error}`,\n state: 'error'\n }\n })\n });\n\n const questions =\n jobQuestions === 'current' ? application?.job.questions : application?.original_job?.questions;\n\n const showRatings = !application?.original_job;\n\n const renderAnswer = (question: IApplicantQuestion | IJobQuestion, answer?: IAnswer) => {\n switch (answer?.type) {\n case 'AvailabilityField':\n return (\n <AvailabilityPreview\n availabilityConfig={question.availability_config}\n answer={typeof answer.answer === 'object' ? answer.answer : undefined}\n disabled\n removePadding\n />\n );\n case 'CheckBoxField':\n return (\n <Stack sx={{ rowGap: 1 }}>\n {answer?.field_choices\n .filter((choice) => answer.field_choice_ids.includes(choice.id))\n .map((choice) => <Stack key={choice.id}>{choice.name}</Stack>)}\n </Stack>\n );\n default:\n return (\n <Stack\n sx={{\n color: answer?.answer ? '#333333' : '#939393',\n fontStyle: answer?.answer ? 'none' : 'italic',\n whiteSpace: 'pre-wrap'\n }}\n >\n {answer ? answer.answer || 'Question unanswered' : 'Question unavailable to candidate'}\n </Stack>\n );\n }\n };\n\n if (!application) return null;\n\n return (\n <Stack\n sx={{\n padding: 3,\n borderRadius: '6px',\n border: '1px solid #E3E3E3',\n rowGap: 2\n }}\n >\n <Stack sx={{ fontSize: '16px', fontWeight: 600 }}>Responses</Stack>\n {application.original_job && (\n <Stack sx={{ paddingLeft: 1 }}>\n <ToggleButtonGroup\n value={jobQuestions}\n exclusive\n onChange={handleToggle}\n aria-label=\"approval forms or templates\"\n >\n <ToggleButton value=\"current\" sx={sharedClasses.toggleButton}>\n Current Job\n </ToggleButton>\n <ToggleButton value=\"original\" sx={sharedClasses.toggleButton}>\n Original Job\n </ToggleButton>\n </ToggleButtonGroup>\n </Stack>\n )}\n {questions?.length ? (\n <>\n {application.ratings_label && (\n <Stack sx={styles.ratingInfoContainer}>\n <Stack\n sx={styles.ratingInfoClickable}\n onClick={() => setShowRatingInfo(!showRatingInfo)}\n >\n <Stack sx={{ flexDirection: 'row', columnGap: 1 }}>\n <InfoIcon fontSize=\"small\" />\n <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Rating information</Stack>\n </Stack>\n {showRatingInfo ? (\n <ExpandLessIcon fontSize=\"large\" />\n ) : (\n <ExpandMoreIcon fontSize=\"large\" />\n )}\n </Stack>\n <Collapse in={showRatingInfo}>\n <Stack sx={{ rowGap: 0.5, padding: '0px 0px 8px 30px', color: '#666666' }}>\n {Object.keys(application.ratings_label).map((key) => (\n <Stack\n key={key}\n sx={{ flexDirection: 'row', columnGap: 0.5, alignItems: 'center' }}\n >\n <Stack sx={{ fontWeight: 'bold' }}>{key}</Stack>\n <Divider sx={{ width: '8px', border: '1px solid #E5E5E5' }} />\n <Stack>{application.ratings_label?.[Number(key)]}</Stack>\n </Stack>\n ))}\n </Stack>\n </Collapse>\n </Stack>\n )}\n <Stack sx={{ rowGap: 2, padding: 1 }}>\n <Grid container spacing={2}>\n <Grid item xs={9}>\n <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Questions/Answers</Stack>\n </Grid>\n {showRatings && (\n <Grid item xs={3}>\n <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Rating</Stack>\n </Grid>\n )}\n </Grid>\n {questions?.map((q) => {\n const answerFound = application.question_answers.find((r) => r.field_id === q.id);\n return (\n <Grid key={q.id} container spacing={2}>\n <Grid item xs={9}>\n <Stack sx={{ rowGap: 1 }}>\n <Stack\n key={q.id}\n sx={{ color: '#084D6D', fontWeight: 'bold' }}\n dangerouslySetInnerHTML={{\n __html: dompurify.sanitize(q.title)\n }}\n />\n {renderAnswer(q, answerFound)}\n </Stack>\n </Grid>\n {showRatings && !loadingRatings && (\n <Grid item xs={3}>\n {q.rateable && answerFound && (\n <Rating\n value={ratings[answerFound?.id]}\n setValue={(rate) => {\n rate === ratings[answerFound?.id]\n ? setRatings({ ...ratings, [answerFound?.id]: 0 })\n : setRatings({ ...ratings, [answerFound?.id]: rate });\n }}\n disabled={!permissions?.Applications?.['Rate Applications']}\n />\n )}\n </Grid>\n )}\n </Grid>\n );\n })}\n {showRatings && permissions?.Applications?.['Rate Applications'] && (\n <ModalFooterButtons\n primaryButtonText=\"Rate\"\n primaryButtonCallback={rateResponses}\n isLoading={ratingResponses}\n primaryButtonMinWidth=\"75px\"\n primaryButtonID=\"rate-responses-button\"\n />\n )}\n </Stack>\n </>\n ) : (\n <Stack sx={{ padding: 5, alignItems: 'center', rowGap: 2 }}>\n <ContentPasteIcon sx={styles.emptyStateIcon} />\n <Stack sx={styles.emptyStateMessage}>No questions found for this job</Stack>\n </Stack>\n )}\n </Stack>\n );\n}\n","/* eslint-disable react/prop-types */\nimport React, { FC } from 'react';\nimport CandidateTags from '../../../Candidate/CandidateTags';\nimport AISummary from '../AISummary';\nimport Responses from '../Responses';\nimport Actions from '../Actions';\nimport Questionnaire from '../Questionnaire';\nimport AttachmentsTab from '../Attachments';\nimport Notepad from '../../../Candidate/Notepad';\nimport { IApplication } from '../../types';\nimport { OverviewTabProps, SectionProps } from './types';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IUserPermissions } from '../../../Components/sharedTypes';\nimport { SectionName } from '../../config';\n\nconst sectionComponents: Record<SectionName, FC<OverviewTabProps>> = {\n [SectionName.CandidateTags]: ({ ApplicationState, application, dispatch }) => (\n <CandidateTags\n focused={ApplicationState.focused}\n candidate={application.candidate}\n dispatch={dispatch}\n inputId=\"candidate-tags-field\"\n />\n ),\n [SectionName.FelixAISummary]: ({ dispatch, aiSummariesEnabled }) => (\n <AISummary dispatch={dispatch} aiSummariesEnabled={aiSummariesEnabled} />\n ),\n [SectionName.Responses]: ({ dispatch }) => <Responses dispatch={dispatch} />,\n Notepad: ({\n ApplicationState,\n updateApplicationNotepad,\n updatingApplicationNotepad,\n dispatch,\n permissions\n }) => (\n <>\n {permissions?.Applications?.['Add Suitability Comment'] && (\n <Notepad\n note={ApplicationState.overviewTab.note}\n updateNote={updateApplicationNotepad}\n updatingNote={updatingApplicationNotepad}\n inputId=\"application-notepad-field\"\n buttonId=\"save-application-notepad-button\"\n onChangeCallback={(value) =>\n dispatch({\n type: 'SET_OVERVIEW_TAB',\n payload: { note: value, hasUnsavedChanges: true }\n })\n }\n primaryButtonDisabled={!ApplicationState.overviewTab.hasUnsavedChanges}\n />\n )}\n </>\n ),\n [SectionName.Actions]: ({ dispatch }) => <Actions dispatch={dispatch} />,\n [SectionName.ApplicationQuestionnaire]: ({ hrQuestion, dispatch }) => (\n <Questionnaire hrQuestion={hrQuestion} dispatch={dispatch} />\n ),\n [SectionName.Attachments]: ({ ApplicationState, dispatch }) => (\n <AttachmentsTab ApplicationState={ApplicationState} dispatch={dispatch} />\n )\n};\n\nexport const Section = ({ section, ...props }: SectionProps) => {\n const SectionComponent = sectionComponents[section];\n\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n if (!application || !SectionComponent) return null;\n return <SectionComponent {...props} application={application} permissions={permissions} />;\n};\n","import React from 'react';\nimport { Stack, IconButton } from '@mui/material';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\n\nexport default function SortableSection({ section }: { section: string }) {\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n useSortable({ id: section });\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition\n };\n\n return (\n <Stack\n key={section}\n style={style}\n sx={{ flexDirection: 'row', alignItems: 'center', columnGap: 0.5 }}\n ref={setNodeRef}\n {...attributes}\n >\n <IconButton ref={setActivatorNodeRef} {...listeners} sx={{ padding: 0.5 }}>\n <DragIndicatorIcon sx={{ fontSize: 16 }} />\n </IconButton>\n <Stack sx={{ color: 'rgba(8, 77, 109, 1)', fontWeight: 'bold' }}>{section}</Stack>\n </Stack>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Stack } from '@mui/material';\nimport { UseMutateFunction, useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport Ratings from './Ratings';\nimport Api from '../API';\nimport { defaultSections, ModalType } from '../config';\nimport AddRecord from '../../Candidate/AddRecord';\nimport CreateApproval from '../Modals/CreateApproval';\nimport EmailExternal from '../Modals/EmailExternal';\nimport SendSms from '../Modals/SendSms';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { DeleteAttachment } from '../Modals/DeleteAttachment';\nimport AttachmentPreviewModal from '../Modals/AttachmentPreviewModal';\nimport AdditionalInfo from './AdditionalInfo';\nimport { Section } from './Section';\n\nexport default function OverviewTab({\n aiSummariesEnabled,\n ApplicationState,\n dispatch,\n updateApplicationNotepad,\n updatingApplicationNotepad\n}: {\n aiSummariesEnabled: boolean;\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n updateApplicationNotepad: UseMutateFunction<unknown, { error: string }, string, unknown>;\n updatingApplicationNotepad: boolean;\n}) {\n const { sortableSections, modalsOpen } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n useQuery({\n queryKey: ['ui preferences'],\n queryFn: async () => {\n const { res } = await Api.getUiPreferences();\n return res.ui_preferences;\n },\n onSuccess: (res) =>\n dispatch({\n type: 'SET_SORTABLE_SECTIONS',\n payload:\n res[0]?.sorting.order && res[0]?.sorting.order.length === defaultSections.length\n ? res[0]?.sorting.order\n : defaultSections\n }),\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting ui preferences data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const { mutate: addRecord, isLoading: addingRecord } = useMutation({\n mutationFn: async ({ subject, body }: { subject: string; body: string }) => {\n if (application) {\n const { res } = await Api.addRecord(application.job.id, application?.id, {\n subject,\n body\n });\n return res;\n }\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Permanent record successfully added`,\n state: 'success'\n }\n });\n dispatch({ type: 'SET_MODALS_OPEN', payload: null });\n queryClient.invalidateQueries(['application']);\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in adding permanent record, ${error}`,\n state: 'error'\n }\n });\n }\n });\n\n const hrQuestion = useQuery({\n queryKey: ['hr questions'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getHrQuestions(application.job.id, application.id);\n return res.hr_answers[0] || null;\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting application questionnaire data, ${error}`,\n state: 'error'\n }\n }),\n enabled: !!application && !!permissions?.Jobs?.AnswerApplicationHRQuestions\n });\n\n if (!application) return null;\n\n return (\n <Stack sx={{ rowGap: 3 }}>\n <Ratings ApplicationState={ApplicationState} dispatch={dispatch} hrQuestion={hrQuestion} />\n {sortableSections.map((section, index) => (\n <Section\n key={index}\n aiSummariesEnabled={aiSummariesEnabled}\n ApplicationState={ApplicationState}\n dispatch={dispatch}\n hrQuestion={hrQuestion}\n section={section}\n updateApplicationNotepad={updateApplicationNotepad}\n updatingApplicationNotepad={updatingApplicationNotepad}\n />\n ))}\n <AdditionalInfo />\n {modalsOpen === ModalType.ADD_RECORD && (\n <AddRecord\n isOpen={modalsOpen === ModalType.ADD_RECORD}\n handleClose={() => dispatch({ type: 'SET_MODALS_OPEN', payload: null })}\n addRecord={addRecord}\n addingRecord={addingRecord}\n styleOverrides={{ maxHeight: '84vh' }}\n />\n )}\n {modalsOpen === ModalType.CREATE_APPROVAL && (\n <CreateApproval ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.EMAIL_EXTERNAL && (\n <EmailExternal\n ApplicationState={ApplicationState}\n dispatch={dispatch}\n aiSummariesEnabled={aiSummariesEnabled}\n />\n )}\n {modalsOpen === ModalType.SEND_SMS && (\n <SendSms\n smsTemplatePermissions={true}\n ApplicationState={ApplicationState}\n dispatch={dispatch}\n />\n )}\n {ApplicationState.selectedAttachmentAction.delete && (\n <DeleteAttachment\n dispatch={dispatch}\n isDialogOpen={!!ApplicationState.selectedAttachmentAction.delete}\n selectedAttachment={ApplicationState.selectedAttachmentAction.delete}\n />\n )}\n {ApplicationState.selectedAttachmentAction.preview && (\n <AttachmentPreviewModal\n previewOpen={!!ApplicationState.selectedAttachmentAction.preview}\n selectedAttachment={ApplicationState.selectedAttachmentAction.preview}\n {...{ dispatch, ApplicationState, permissions }}\n />\n )}\n </Stack>\n );\n}\n","import { ApplicationAction, IFormResponseListItem } from '../types';\nimport { Box, IconButton, TableCell, Tooltip } from '@mui/material';\nimport { styles } from '../styles';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { getApplicationRatingColor } from '../config';\nimport { Delete, Edit, ExpandLess, ExpandMore } from '@mui/icons-material';\nimport React, { Dispatch } from 'react';\nimport formatToUserTimeZone from '../../utils/formatToUserTimeZone';\n\nexport default function RenderFormResponseActions({\n formResponse,\n dispatch,\n expandedRows,\n setExpandedRows\n}: {\n formResponse: IFormResponseListItem;\n dispatch: Dispatch<ApplicationAction>;\n expandedRows: number[];\n setExpandedRows: React.Dispatch<React.SetStateAction<number[]>>;\n}) {\n const formattedUpdatedAtTime = formatToUserTimeZone(formResponse.updated_at);\n const handleExpandClick = (id: number) => {\n setExpandedRows(() =>\n expandedRows.includes(id)\n ? expandedRows.filter((rowId) => rowId !== id)\n : [...expandedRows, id]\n );\n };\n\n const handleDeleteFormResponse = () => {\n dispatch({\n type: 'SET_SELECTED_FORM_RESPONSE_ACTION',\n payload: { delete: formResponse, edit: null }\n });\n };\n\n const handleEditFormResponse = () => {\n dispatch({\n type: 'SET_SELECTED_FORM_RESPONSE_ACTION',\n payload: { delete: null, edit: formResponse }\n });\n };\n\n return (\n <>\n <TableCell sx={styles.fileAttachedBy}>{formResponse.id}</TableCell>\n <TableCell\n sx={{\n color: '#666666',\n fontSize: '15px',\n fontWeight: 'bold'\n }}\n >\n {formResponse.form_name}\n </TableCell>\n\n <TableCell sx={styles.fileAttachedBy}>{formattedUpdatedAtTime}</TableCell>\n <TableCell\n sx={{\n color: '#000000',\n fontWeight: '600'\n }}\n >\n <Box sx={{ display: 'flex', justifyContent: 'center' }}>\n <Box\n sx={{\n ...styles.ratingCell,\n backgroundColor: getApplicationRatingColor(\n formResponse.rating === 'N/A' ? 101 : Number(formResponse.rating)\n )\n }}\n >\n {!isNaN(parseFloat(formResponse.rating))\n ? Math.ceil(parseFloat(formResponse.rating)) + '%'\n : '-'}\n </Box>\n </Box>\n </TableCell>\n <TableCell\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end'\n }}\n >\n <Tooltip title=\"Edit\" placement=\"top\" arrow>\n <IconButton\n id=\"edit-form-button\"\n onClick={() => handleEditFormResponse()}\n sx={styles.tableActionIcon}\n >\n <Edit sx={{ fontSize: 16 }} />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Delete\" placement=\"top\" arrow>\n <IconButton\n id=\"delete-form-button\"\n onClick={() => handleDeleteFormResponse()}\n sx={styles.tableActionIcon}\n >\n <Delete sx={{ color: theme.palette.error.main, fontSize: 16 }} />\n </IconButton>\n </Tooltip>\n <Box\n id=\"show-form-button\"\n sx={{ width: '30%', maxWidth: '80px', cursor: 'pointer', color: '#333333' }}\n onClick={() => handleExpandClick(formResponse.id)}\n >\n {expandedRows.includes(formResponse.id) ? 'Show less' : 'Show more'}\n </Box>\n\n <IconButton\n id=\"show-form-arrow-button\"\n sx={styles.tableActionIcon}\n onClick={() => handleExpandClick(formResponse.id)}\n >\n {expandedRows.includes(formResponse.id) ? (\n <ExpandLess sx={{ fontSize: 16 }} />\n ) : (\n <ExpandMore sx={{ fontSize: 16 }} />\n )}\n </IconButton>\n </TableCell>\n </>\n );\n}\n","import { ApplicationAction, IApplication } from '../types';\nimport React, { Dispatch, useState } from 'react';\nimport { Box, Grid, Skeleton, Stack } from '@mui/material';\nimport { RenderFormResponseBlocks } from '../Modals/Components/FormResponseInfo';\nimport { styles } from '../styles';\nimport AnswersView from '../../ApprovalForms/ApprovalForm/AnswersView';\nimport Rating from '../OverviewTab/Rating';\nimport { useFormResponse } from '../helper';\n\nexport default function FormResponseDetails({\n FormResponseId,\n application,\n dispatch,\n created_at,\n submitted_by,\n rating,\n expandedRows,\n linkToUser\n}: {\n FormResponseId: number;\n application: IApplication;\n dispatch: Dispatch<ApplicationAction>;\n created_at: string;\n submitted_by: string;\n rating: string;\n expandedRows: number[];\n linkToUser: string;\n}) {\n const { data: formResponse, isLoading: loadingFormResponse } = useFormResponse({\n FormResponseId,\n dispatch,\n application\n });\n const [ratings, setRatings] = useState<Record<number, number>>({});\n return (\n <Stack sx={{ rowGap: 2, padding: 1 }}>\n <Box margin={1}>\n <RenderFormResponseBlocks\n ApplicationId={application.id}\n name={application.candidate.firstname + ' ' + application.candidate.lastname}\n created_at={created_at}\n submitted_by={submitted_by}\n rating={rating}\n isLoading={loadingFormResponse}\n expandedRows={expandedRows}\n linkToUser={linkToUser}\n />\n </Box>\n <Stack sx={{ rowGap: 2, padding: 1 }}>\n <Grid container spacing={2}>\n <Grid item xs={9}>\n <Stack sx={{ color: '#666666', fontWeight: 'bold', fontSize: '16px' }}>Responses</Stack>\n </Grid>\n <Grid item xs={3}>\n <Stack sx={{ color: '#666666', fontWeight: 'bold', fontSize: '16px' }}>Rating</Stack>\n </Grid>\n </Grid>\n {loadingFormResponse &&\n Array.from({ length: 3 }).map((_, index) => (\n <Grid key={index} container spacing={2}>\n <Grid item xs={9}>\n <Skeleton animation=\"wave\" height={60} />\n </Grid>\n <Grid item xs={3}>\n <Skeleton animation=\"wave\" height={60} />\n </Grid>\n </Grid>\n ))}\n {formResponse &&\n formResponse.map((questionsAndAnswers) => {\n return (\n <Grid key={questionsAndAnswers.id} container spacing={2}>\n <Grid item xs={9}>\n <Stack sx={{ rowGap: 1 }}>\n <Stack sx={styles.smartFormsAnswersPreviewContainer}>\n <AnswersView answer={questionsAndAnswers} />\n </Stack>\n </Stack>\n </Grid>\n <Grid item xs={3} alignContent={'center'}>\n {questionsAndAnswers.rateable && (\n <Rating\n value={questionsAndAnswers.rating}\n setValue={(rate) =>\n setRatings({ ...ratings, [questionsAndAnswers.id]: rate })\n }\n disabled={true}\n />\n )}\n </Grid>\n </Grid>\n );\n })}\n </Stack>\n </Stack>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { ApplicationAction, ApplicationState, IApplication } from '../types';\nimport {\n Box,\n Button,\n Collapse,\n Paper,\n Stack,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow\n} from '@mui/material';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { styles } from '../styles';\nimport TableSkeleton from '../../Components/Multiposter/TableSkeleton';\nimport { ModalType } from '../config';\nimport EditFormResponseModal from '../Modals/EditFormResponseModal';\nimport { DeleteFormResponse } from '../Modals/DeleteFormResponse';\nimport { NoFormResponsesSVG } from '../OverviewTab/Icons';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport FormResponseDetails from './FormResponseDetails';\nimport RenderFormResponseActions from './FormResponseActions';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nfunction SmartFormsTab({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n const [expandedRows, setExpandedRows] = useState<number[]>([]);\n const { data: formResponses, isLoading: loadingFormResponses } = useQuery({\n queryKey: ['formResponses'],\n queryFn: async () => {\n if (application?.job) {\n const { res } = await Api.getFormResponses(application.job.id, application.id);\n return res.form_responses;\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting form responses, ${error}`,\n state: 'error'\n }\n }),\n enabled: !!application\n });\n\n const NoResponses = () => (\n <TableRow>\n <TableCell style={{ paddingBottom: 0, paddingTop: 0 }} colSpan={5}>\n <Box sx={styles.emptyStateContainer}>\n <NoFormResponsesSVG />\n <Box sx={sharedClasses.emptyStateText}>No smart forms added</Box>\n </Box>\n </TableCell>\n </TableRow>\n );\n\n const TableHeader = () => (\n <TableHead>\n <TableRow>\n <TableCell sx={{ width: '8%' }}>ID</TableCell>\n <TableCell sx={{ width: '24%' }}>Form Name</TableCell>\n <TableCell sx={{ width: '16%' }}>Updated At</TableCell>\n <TableCell sx={{ width: '8%', textAlign: 'center' }}>Rating</TableCell>\n <TableCell\n sx={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'flex-end',\n columnGap: 2\n }}\n >\n {permissions?.Applications?.['Add Form Response'] && (\n <Button\n id=\"add-form-button\"\n sx={sharedClasses.genericButtonSecondary}\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_FORM })}\n >\n Add form\n </Button>\n )}\n {permissions?.Applications?.['Send Forms'] && (\n <Button\n id=\"send-form-button\"\n sx={sharedClasses.genericButtonSecondary}\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.SEND_FORM })}\n >\n Send form\n </Button>\n )}\n </TableCell>\n </TableRow>\n </TableHead>\n );\n\n return (\n <>\n <Stack>\n <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n <Table sx={styles.smartFormsTableContainer}>\n <TableHeader />\n {!loadingFormResponses && (\n <TableBody>\n {formResponses && formResponses?.length === 0 ? (\n <NoResponses />\n ) : (\n formResponses &&\n formResponses.map((formResponse, index) => (\n <React.Fragment key={index}>\n <TableRow>\n <RenderFormResponseActions\n formResponse={formResponse}\n dispatch={dispatch}\n expandedRows={expandedRows}\n setExpandedRows={setExpandedRows}\n />\n </TableRow>\n <TableRow>\n <TableCell style={{ paddingBottom: 0, paddingTop: 0 }} colSpan={5}>\n <Collapse\n in={expandedRows.includes(formResponse.id)}\n timeout=\"auto\"\n unmountOnExit\n >\n <Box margin={1}>\n {application?.job && (\n <FormResponseDetails\n FormResponseId={formResponse.id}\n application={application}\n dispatch={dispatch}\n created_at={formResponse.created_at}\n submitted_by={formResponse.submitted_by}\n rating={formResponse.rating}\n expandedRows={expandedRows}\n linkToUser={formResponse.link_to_user}\n />\n )}\n </Box>\n </Collapse>\n </TableCell>\n </TableRow>\n </React.Fragment>\n ))\n )}\n </TableBody>\n )}\n </Table>\n </TableContainer>\n </Stack>\n\n {loadingFormResponses && <TableSkeleton size={4} borderType={'bottom'} />}\n\n {ApplicationState.selectedFormResponseAction.edit && (\n <EditFormResponseModal\n dispatch={dispatch}\n ApplicationState={ApplicationState}\n selectedFormId={ApplicationState.selectedFormResponseAction.edit?.form_id}\n EditingFormResponseId={ApplicationState.selectedFormResponseAction.edit.id}\n FormName={ApplicationState.selectedFormResponseAction.edit.form_name}\n />\n )}\n {ApplicationState.selectedFormResponseAction.delete && (\n <DeleteFormResponse\n dispatch={dispatch}\n ApplicationState={ApplicationState}\n formResponseId={ApplicationState.selectedFormResponseAction.delete.id}\n />\n )}\n </>\n );\n}\n\nexport default SmartFormsTab;\n","import React, { Dispatch } from 'react';\nimport { Stack, Avatar, Chip, Tooltip, CircularProgress } from '@mui/material';\nimport {\n Alarm as AlarmIcon,\n CheckCircleOutline as CheckCircleOutlineIcon,\n CheckCircle as CheckCircleIcon,\n Task as TaskIcon\n} from '@mui/icons-material';\nimport dayjs from 'dayjs';\nimport { styles } from '../../../Candidate/styles';\nimport { ApplicationAction, IApplicationTask } from '../../types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { IApplication } from '../../types';\nimport Api from '../../API';\nimport { ModalType } from '../../config';\n\nexport default function Task({\n task,\n dispatch\n}: {\n task: IApplicationTask;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const tasks = queryClient.getQueryData<IApplicationTask[]>(['tasks']);\n\n const { mutate: completeTask, isLoading: completingTask } = useMutation({\n mutationFn: async () => {\n if (application) {\n const { res } = await Api.updateApplicationTask(\n application.job.id,\n application.id,\n task.id,\n {\n completed_at: task.completed_at ? null : dayjs().toISOString()\n }\n );\n return res;\n }\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Task has been successfully updated`, state: 'success' }\n });\n if (tasks) {\n const newTasks = [...tasks];\n const index = tasks.findIndex((t) => t.id === task?.id);\n newTasks[index] = res;\n queryClient.setQueryData(['tasks'], newTasks);\n }\n },\n onError: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `There was an error updating application task`, state: 'error' }\n });\n }\n });\n return (\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <Stack sx={{ flexDirection: 'row', columnGap: 2, alignItems: 'center' }}>\n <Tooltip\n placement=\"top\"\n title={`${task.priority === 'Normal' ? 'Medium' : task.priority} priority`}\n arrow\n >\n <Avatar variant=\"rounded\" sx={{ ...styles[task.priority], borderRadius: '6px' }}>\n <TaskIcon sx={{ fontSize: '1.1rem' }} />\n </Avatar>\n </Tooltip>\n <Stack\n id=\"task-subject-link\"\n sx={{ fontSize: '16px', fontWeight: 'bold', cursor: 'pointer', color: '#333333' }}\n onClick={() => {\n dispatch({ type: 'SET_EDITED_TASK', payload: task });\n dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_EDIT_TASK });\n }}\n >\n {task.subject}\n </Stack>\n </Stack>\n <Stack sx={{ flexDirection: 'row', columnGap: 2, alignItems: 'center' }}>\n <Chip\n label={`Assigned to: ${task.assigned_user}`}\n sx={{ ...styles.candidateTaskChip, color: '#084D6D', background: '#EDF2F5' }}\n />\n <Chip\n icon={<AlarmIcon sx={{ fontSize: '16px' }} />}\n label={dayjs(task.due_at).format('ddd, D MMM YYYY, LT')}\n sx={{ ...styles.candidateTaskChip, color: '#666666', minWidth: '210px' }}\n />\n {completingTask ? (\n <CircularProgress size={24} sx={{ color: '#5BC4BF' }} />\n ) : (\n <Stack\n id=\"application-complete-task-button\"\n onClick={() => completeTask()}\n sx={{ cursor: 'pointer' }}\n >\n {task.completed_at ? (\n <CheckCircleIcon sx={{ color: '#5BC4C0' }} />\n ) : (\n <CheckCircleOutlineIcon sx={{ color: '#DDDDDD' }} />\n )}\n </Stack>\n )}\n </Stack>\n </Stack>\n );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { Stack, Box, Divider, Skeleton, Tabs, Tab } from '@mui/material';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport EmptyTab from '../../../Candidate/CandidateTasks/EmptyTab';\nimport { ApplicationAction, IApplication } from '../../types';\nimport { styles } from '../../../Candidate/styles';\nimport Api from '../../API';\nimport Task from './Task';\n\nexport default function TasksTab({ dispatch }: { dispatch: Dispatch<ApplicationAction> }) {\n const [tabValue, setTabValue] = useState<number>(0);\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const { data: tasks, isFetching: fetchingTasks } = useQuery({\n queryKey: ['tasks'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getApplicationTasks(application.job.id, application.id);\n return res.tasks;\n }\n },\n onError: () =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: 'Failed in fetching application tasks', state: 'error' }\n })\n });\n\n const filteredTasks = tabValue\n ? tasks?.filter((task) => !!task.completed_at) // completed tasks\n : tasks?.filter((task) => !task.completed_at); // pending tasks\n return (\n <>\n <Tabs\n value={tabValue}\n onChange={(e, value) => setTabValue(value)}\n TabIndicatorProps={{\n sx: { ...styles.candidateTabIndicator, maxWidth: tabValue ? '5.6em' : '4.3em' }\n }}\n sx={styles.candidateTabs}\n >\n <Tab label=\"Pending\" id=\"application-tasks-pending-tab\" />\n <Tab label=\"Completed\" id=\"application-tasks-completed-tab\" />\n </Tabs>\n <Divider />\n {fetchingTasks ? (\n <>\n {[...Array(5)].map((_, index) => (\n <Box key={index}>\n <Skeleton animation=\"wave\" height={60} />\n </Box>\n ))}\n </>\n ) : (\n <>\n {tasks && filteredTasks?.length ? (\n <Stack sx={{ paddingTop: 3, rowGap: 3 }}>\n {filteredTasks.map((task) => {\n return <Task key={task.id} task={task} dispatch={dispatch} />;\n })}\n </Stack>\n ) : (\n <EmptyTab tabValue={tabValue} />\n )}\n </>\n )}\n </>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Stack, Button } from '@mui/material';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { styles } from '../../../Candidate/styles';\nimport { ApplicationAction, ApplicationState } from '../../types';\nimport TasksTab from './TasksTab';\nimport TaskWorkflow from '../../Modals/TaskWorkflow';\nimport { ModalType } from '../../config';\nimport AddEditTask from '../../Modals/AddEditTask';\n\nexport default function Tasks({\n ApplicationState,\n dispatch\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n}) {\n const { modalsOpen } = ApplicationState;\n return (\n <Stack sx={styles.candidateSectionContainer}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n <Stack sx={{ fontSize: '18px', fontWeight: 600, color: '#333333' }}>Tasks</Stack>\n <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n <Button\n id=\"application-add-task-button\"\n sx={sharedClasses.genericButtonSecondary}\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_EDIT_TASK })}\n >\n Add task\n </Button>\n <Button\n id=\"application-start-workflow-button\"\n sx={sharedClasses.genericButtonSecondary}\n onClick={() => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.TASK_WORKFLOW })}\n >\n Start workflow\n </Button>\n </Stack>\n </Stack>\n <TasksTab dispatch={dispatch} />\n {modalsOpen === ModalType.TASK_WORKFLOW && (\n <TaskWorkflow ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n {modalsOpen === ModalType.ADD_EDIT_TASK && (\n <AddEditTask ApplicationState={ApplicationState} dispatch={dispatch} />\n )}\n </Stack>\n );\n}\n","import React, { Dispatch, useEffect, useReducer } from 'react';\nimport { Skeleton, Stack, Table, TableHead, TableBody, TableRow, TableCell } from '@mui/material';\nimport { CalendarMonth as CalendarMonthIcon } from '@mui/icons-material';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { ApplicationAction, IApplication, ApplicationState } from '../types';\nimport Api from '../API';\nimport Tasks from './Tasks';\nimport { classes as tableStyles } from '../../../TableStyles';\nimport dayjs from 'dayjs';\nimport { ScoutCalendarReducer, InitialScoutCalendarState } from '../../../ScoutCalendar/reducer';\nimport CreateEvent from '../../../ScoutCalendar/CreateEvent/CreateEvent';\nimport ViewEvent from '../../../ScoutCalendar/ViewEvent';\nimport { IEvent } from 'app/javascript/components/ScoutCalendar/types';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { ISnackbarInput } from '../../Components/CustomUIElements/StyledSnackbar';\nimport { styles } from '../styles';\nimport { ModalType } from '../config';\nimport { ActionButton } from '../OverviewTab/Actions';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nexport default function TasksAndEventsTab({\n ApplicationState,\n dispatch,\n currentUserId\n}: {\n ApplicationState: ApplicationState;\n dispatch: Dispatch<ApplicationAction>;\n currentUserId: number;\n}) {\n const { apiKey, userTimeZone } = ApplicationState;\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n\n const [ScoutCalendarState, eventDispatch] = useReducer(\n ScoutCalendarReducer,\n InitialScoutCalendarState\n );\n const { createEventObject } = ScoutCalendarState;\n\n const { data: events, isLoading: loadingEvents } = useQuery({\n queryKey: ['application events'],\n queryFn: async () => {\n if (application) {\n const { res } = await Api.getApplicationEvents(application.job.id, application.id);\n return res.events;\n }\n },\n onError: () =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `There was an error in loading events`, state: 'error' }\n })\n });\n\n useEffect(() => {\n eventDispatch({ type: 'SET_APIKEY', payload: apiKey });\n permissions && eventDispatch({ type: 'SET_PERMISSIONS', payload: permissions });\n }, [eventDispatch, apiKey, permissions]);\n\n const headerStyle = (name: string) => {\n switch (name) {\n case 'Event':\n return {\n minWidth: '150px'\n };\n case 'Type':\n return { minWidth: '150px' };\n case 'Scheduled':\n return { minWidth: '120px' };\n case 'Event Owner':\n return { minWidth: '120px' };\n default:\n return { minWidth: '90px' };\n }\n };\n\n function handleSelectEvent(event: IEvent) {\n eventDispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: {\n ...createEventObject,\n eventName: event.subject,\n eventDescription: event.note || '',\n maxCandidates: String(event.max_candidates),\n recruiters: event.attendees\n .filter((a) => a.type === 'User')\n .map((a) => ({\n id: a.id,\n name: a.name,\n checked: false,\n attendeeId: a.attendee_id,\n state: a.state\n })),\n eventType: event.event_type,\n duration: String(event.duration_in_minutes),\n eventDate: new Date(event.begins_at),\n eventId: event.id,\n candidates: event.attendees.filter((a) => a.type === 'Candidate'),\n dates: [new Date(event.begins_at)],\n owner: event.owner\n }\n });\n eventDispatch({ type: 'SET_SHOW_VIEW_EVENT_MODAL', payload: true });\n }\n\n const actions = [\n {\n label: 'Add to event',\n icon: <></>,\n onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.ADD_TO_EVENT }),\n permission: true\n },\n {\n label: 'Invite to timeslot',\n icon: <></>,\n onClick: () => dispatch({ type: 'SET_MODALS_OPEN', payload: ModalType.INVITE_TO_TIMESLOT }),\n permission: permissions?.Applications?.['Invite To Book In']\n }\n ];\n\n return (\n <Stack sx={{ rowGap: 3 }}>\n <Tasks ApplicationState={ApplicationState} dispatch={dispatch} />\n <Stack\n sx={{\n padding: 3,\n borderRadius: '6px',\n border: '1px solid #E3E3E3',\n rowGap: 2\n }}\n >\n <Stack\n sx={{\n fontSize: '18px',\n fontWeight: 600,\n color: '#333333',\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center'\n }}\n >\n <Stack>Events</Stack>\n <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n {actions\n .filter((a) => a.permission)\n .map((action, i) => (\n <ActionButton\n key={i}\n action={action}\n boldFont={true}\n buttonId={`${action.label.toLowerCase().split(' ').join('-')}-button`}\n />\n ))}\n </Stack>\n </Stack>\n {loadingEvents ? (\n [...Array(5)].map((_, index) => <Skeleton key={index} height={30} animation=\"wave\" />)\n ) : (\n <>\n <Table stickyHeader sx={tableStyles.tableStyling}>\n <TableHead>\n <TableRow>\n {['Event', 'Type', 'Scheduled', 'Event Owner'].map((title, index) => (\n <TableCell\n sx={{ ...tableStyles.tableHeader, ...headerStyle(title) }}\n key={index}\n >\n <Stack>{title}</Stack>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {events?.length ? (\n <>\n {events?.map((e) => (\n <TableRow\n id=\"application-event-link\"\n key={e.id}\n onClick={() => handleSelectEvent(e)}\n sx={{ cursor: 'pointer' }}\n >\n <TableCell sx={{ fontWeight: 'bold', color: '#666666' }}>\n {e.subject}\n </TableCell>\n <TableCell>{e.event_type.name}</TableCell>\n <TableCell>\n <Stack>\n <Stack>{dayjs(e.begins_at).format('ddd, D MMM YYYY')}</Stack>\n <Stack>\n {dayjs(e.begins_at).format('LT')} - {dayjs(e.ends_at).format('LT')}\n </Stack>\n </Stack>\n </TableCell>\n <TableCell>{e.owner}</TableCell>\n </TableRow>\n ))}\n </>\n ) : (\n <TableRow>\n <TableCell colSpan={4}>\n <Stack sx={{ padding: 7.5, alignItems: 'center', rowGap: 2 }}>\n <CalendarMonthIcon sx={styles.emptyStateIcon} />\n <Stack sx={styles.emptyStateMessage}>No events added</Stack>\n </Stack>\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </>\n )}\n </Stack>\n {ScoutCalendarState.showCreateEventModal && events && (\n <CreateEvent\n events={events}\n ScoutCalendarState={ScoutCalendarState}\n dispatch={eventDispatch}\n userTimezone={userTimeZone}\n />\n )}\n {ScoutCalendarState.showViewEventModal && events && (\n <ViewEvent\n events={events}\n ScoutCalendarState={ScoutCalendarState}\n dispatch={eventDispatch}\n currentUserId={currentUserId}\n userTimezone={userTimeZone}\n newApplicationEnabled={true} // because to see this page, the new application must already be enabled\n />\n )}\n <StyledSnackbar\n message={ScoutCalendarState.snackbar.message}\n state={ScoutCalendarState.snackbar.state}\n setSnackbarState={(snackbarInput: ISnackbarInput) =>\n eventDispatch({ type: 'SET_SNACKBAR', payload: snackbarInput })\n }\n />\n </Stack>\n );\n}\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport Application from './Application';\n\nexport interface IApplicationPageProps {\n applicationId: number;\n jobId: number;\n showLinkedInURL: boolean;\n aiSummariesEnabled: boolean;\n currentUser: { id: number; api_key: string; admin: boolean; timeZone: string; email: string };\n newIntegrationEnabled: boolean;\n}\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\nexport default function ApplicationPage({\n applicationId,\n jobId,\n showLinkedInURL,\n aiSummariesEnabled,\n currentUser,\n newIntegrationEnabled\n}: IApplicationPageProps) {\n return (\n <QueryClientProvider client={queryClient}>\n <Application\n {...{\n applicationId,\n jobId,\n showLinkedInURL,\n aiSummariesEnabled,\n currentUser,\n newIntegrationEnabled\n }}\n />\n </QueryClientProvider>\n );\n}\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport {\n Autocomplete,\n Box,\n CircularProgress,\n Modal,\n Button,\n TextField,\n FormHelperText\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { styles } from '../styles';\nimport { IApproversData } from '../types';\nimport Api from '../API';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { MultilineFormTextField } from '../../Components/CustomUIElements/FormTextField';\n\nexport default function ActionModal({\n apiKey,\n approver,\n setModalsOpen,\n modalsOpen,\n setSnackbar,\n requisitionId,\n getApprovalFormData,\n index\n}: {\n apiKey: string;\n approver: IApproversData;\n modalsOpen: boolean;\n setModalsOpen: Dispatch<SetStateAction<boolean>>;\n setSnackbar: Dispatch<\n SetStateAction<{\n message: string;\n state: string;\n }>\n >;\n requisitionId: number;\n getApprovalFormData: () => void;\n index: number;\n}) {\n const [isUpdating, setIsUpdating] = useState<boolean>(false);\n const [approval, setApproval] = useState<string>('');\n const [comment, setComment] = useState<string>('');\n\n const handleClose = () => {\n setModalsOpen(false);\n setApproval('');\n setComment('');\n };\n\n const updateApprover = async () => {\n setIsUpdating(true);\n\n try {\n const response = await Api.putApprovalForm(requisitionId, {\n requisition: {\n approvers_attributes: {\n [index]: { id: approver.id, comment: comment }\n }\n },\n approval: approval\n });\n if (response.res.success) {\n setSnackbar({\n message: response.res.success,\n state: 'success'\n });\n }\n } catch (err) {\n setSnackbar({\n message: `Failed to update approver, ${err}`,\n state: 'error'\n });\n } finally {\n setIsUpdating(false);\n setModalsOpen(false);\n getApprovalFormData();\n }\n };\n\n return (\n <Modal open={modalsOpen}>\n <Box sx={{ ...styles.actionsModal, height: '640px' }}>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n padding: '20px 0',\n minWidth: '255px'\n }}\n >\n <Box>\n <CloseIcon onClick={() => handleClose()} sx={styles.closeIcon} />\n </Box>\n <Box sx={styles.modalHeader}>Approve/decline Approval</Box>\n </Box>\n <Box>\n <Box sx={{ padding: '32px 0px' }}>\n <Autocomplete\n disablePortal\n options={['Approve', 'Decline']}\n getOptionLabel={(option) => option}\n value={approval || null}\n onChange={(_event, value) => (value ? setApproval(value) : setApproval(''))}\n sx={{ ...sharedClasses.formAutocomplete, width: '290px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Approve/decline\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n <FormHelperText sx={{ margin: '3px' }}>This action cannot be reversed.</FormHelperText>\n </Box>\n <Box>\n <MultilineFormTextField\n value={approver.comment || comment}\n onChange={(e) => {\n setComment(e.target.value);\n }}\n styles={{ width: '680px', margin: '20px, 0px' }}\n rows={6}\n label={'Comments'}\n />\n </Box>\n </Box>\n <Box sx={{ ...styles.modalActions, marginBottom: 2 }}>\n <Button\n disableElevation\n sx={{ ...styles.buttonRedLight }}\n variant=\"text\"\n onClick={() => handleClose()}\n >\n Cancel\n </Button>\n <Button\n id=\"approval-form-action-button\"\n type=\"submit\"\n disabled={isUpdating}\n sx={styles.modalEditButton}\n onClick={() => updateApprover()}\n >\n {isUpdating ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React from 'react';\nimport { Box, Stack } from '@mui/material';\nimport { styles } from '../styles';\nimport dompurify from 'dompurify';\nimport { IAnswer } from '../types';\nimport AvailabilityAnswer from './AvailabilityAnswer';\n\nfunction parseAnswers(answer: string) {\n const answers = answer.split(', ');\n if (answers.length === 1 && answers[0].includes('and')) {\n return answers[0].split(' and ');\n }\n if (answers.length > 1) {\n answers[answers.length - 1] = answers[answers.length - 1].split('and ')[1];\n }\n\n return answers;\n}\n\nconst host = window.location.host;\n\nexport default function AnswersView({ answer }: { answer: IAnswer }) {\n switch (answer.type) {\n case 'RadioButtonField':\n case 'SelectField':\n case 'TextField':\n case 'TextAreaField':\n return (\n <Box sx={{ padding: 2 }}>\n <Box\n sx={styles.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n />\n <Box>\n <Stack sx={{ overflowWrap: 'anywhere' }}>{answer.answer || '-'}</Stack>\n </Box>\n </Box>\n );\n case 'DateField': {\n let date = '-';\n if (answer.answer) {\n const [year, month, day] = answer.answer?.split('-');\n date = host.includes('scout') ? `${month}-${day}-${year}` : `${day}-${month}-${year}`;\n }\n return (\n <Box sx={{ padding: 2 }}>\n <Box\n sx={styles.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n />\n <Box>\n <Stack>{date}</Stack>\n </Box>\n </Box>\n );\n }\n case 'CheckBoxField': {\n const answers = parseAnswers(answer.answer);\n return (\n <Box sx={{ padding: 2 }}>\n <Box\n sx={styles.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n />\n {answers.map((answer, i) => {\n return (\n <Box key={i} sx={{ paddingBottom: 1 }}>\n <Stack>{answer}</Stack>\n </Box>\n );\n })}\n </Box>\n );\n }\n case 'RankField': {\n const answers = answer.answer ? answer.answer.split('; ') : [];\n return (\n <Box sx={{ padding: 2 }}>\n <Box\n sx={styles.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n />\n <Box sx={{ paddingBottom: 1 }}>\n {answers.length > 0 ? (\n answers.map((ans, i) => <Stack key={i}>{ans.replace(')', '.')}</Stack>)\n ) : (\n <Stack>-</Stack>\n )}\n </Box>\n </Box>\n );\n }\n case 'CsvDataLookupField':\n return (\n <Box sx={{ padding: 2 }}>\n <Box\n sx={styles.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n />\n <Box>\n <Stack sx={{ textTransform: 'capitalize', marginTop: 1 }}>{answer.answer[0]}</Stack>\n </Box>\n <Box>\n <Stack sx={{ fontWeight: 'bold', marginTop: 2 }}>Position ID</Stack>\n </Box>\n <Box>\n <Stack sx={{ marginTop: 2 }}>{answer.answer[1]}</Stack>\n </Box>\n </Box>\n );\n case 'AvailabilityField': {\n return (\n <Box sx={{ padding: 2 }}>\n <Box\n sx={styles.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n />\n <AvailabilityAnswer\n availabilityTableData={answer.answer}\n config={answer.config}\n shift={answer.shift}\n totalTime={answer.total_availability_time}\n />\n </Box>\n );\n }\n case 'JobReferenceLookupField':\n return null;\n default:\n return (\n <Box sx={{ padding: 2 }}>\n <Box\n sx={styles.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(answer.question) }}\n />\n Invalid question type\n </Box>\n );\n }\n}\n","import React, { useRef, useState, useCallback, useEffect, useMemo } from 'react';\nimport {\n Box,\n Button,\n CircularProgress,\n IconButton,\n Skeleton,\n Stack,\n Tooltip,\n Tab,\n Tabs,\n Typography\n} from '@mui/material';\nimport {\n ArrowCircleLeft as ArrowCircleLeftIcon,\n Edit as EditIcon,\n FileCopy as FileCopyIcon,\n AssignmentInd as AssignmentIndIcon\n} from '@mui/icons-material';\nimport { ITabs, IApprovalForm, IAnswer } from '../types';\nimport { styles } from '../styles';\nimport { PDFIcon } from '../../Job/Applications/CustomIcons';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport Api from '../API';\nimport AnswersView from './AnswersView';\nimport ApproversTable from './ApproversTable';\nimport NewJob from '../../Jobs/NewJob/NewJob';\nimport DocumentViewer from './DocumentViewer';\nimport { IPermissions } from '../../Jobs/types';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { getPermissions } from '../../../shared/permissionHelpers';\nimport QuestionFieldGenerator, {\n IApplicantQuestion\n} from '../../Components/Utilities/QuestionFieldGenerator';\n\nconst BASE_URL = window.location.origin;\n\nexport default function ApprovalForm({\n apiKey,\n requisitionId,\n newApplicationEnabled\n}: {\n apiKey: string;\n requisitionId: number;\n newApplicationEnabled: boolean;\n}) {\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n const [approvalFormData, setApprovalFormData] = useState<IApprovalForm>({});\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [isLoadingPermissions, setIsLoadingPermissions] = useState<boolean>(false);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: string;\n }>({\n message: '',\n state: 'success'\n });\n const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\n const [isCloning, setIsCloning] = useState<boolean>(false);\n const [isGeneratingBulkPdf, setIsGeneratingBulkPdf] = useState<boolean>(false);\n const [userPermissions, setUserPermissions] = useState<IUserPermissions | null>(null);\n const [reorderedAnswers, setReorderedAnswers] = useState<IAnswer[]>([]);\n const [emailTemplateQuestions, setEmailTemplateQuestions] = useState<IApplicantQuestion[]>([]);\n\n const fieldRefs = {\n questions: useRef<Array<HTMLDivElement | null>>([])\n };\n\n const getUserPermissions = useCallback(async () => {\n setIsLoadingPermissions(true);\n try {\n const data = await getPermissions(apiKey);\n const allRoles: Record<string, Record<string, boolean>> = {};\n data.roles.forEach((role: IPermissions) =>\n role.feature_groups.forEach((group) => {\n !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n })\n );\n setUserPermissions(allRoles);\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting permissions',\n state: 'error'\n });\n } finally {\n setIsLoadingPermissions(false);\n }\n }, [apiKey]);\n\n const getApprovalFormData = useCallback(async () => {\n setIsLoading(true);\n try {\n const data = await Api.getApprovalForm(requisitionId);\n const answers = data.res.answers;\n\n const orderedAnswers = answers.sort((a, b) => a.position - b.position);\n setApprovalFormData(data.res);\n setReorderedAnswers(orderedAnswers);\n setEmailTemplateQuestions(data.res.email_template_fields);\n } catch (err) {\n setSnackbar({\n message: `Failed to fetch approval form data, ${err}`,\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n }, [requisitionId]);\n\n useEffect(() => {\n getApprovalFormData();\n getUserPermissions();\n }, [getApprovalFormData, getUserPermissions]);\n\n const headerRefs = useRef(null);\n\n const TabPanel = useCallback((props: ITabs) => {\n const { children, tabValue, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={tabValue !== index}\n id={`approvals-tabpanel-${index}`}\n aria-labelledby={`approvals-tab-${index}`}\n {...other}\n >\n {tabValue === index && <>{children}</>}\n </div>\n );\n }, []);\n\n const TabProps = useCallback((index: number) => {\n return {\n id: `approvals-tab-${index}`,\n 'aria-controls': `approvals-tabpanel-${index}`\n };\n }, []);\n\n const navigateToEditApproval = () => {\n window.location.href = `/admin/requisitions/${requisitionId}/edit`;\n };\n\n useEffect(() => {\n setIndicatorWidth(headerRefs?.current.clientWidth - 32);\n }, []);\n\n const cloneApprovalForm = async () => {\n setIsCloning(true);\n try {\n const response = await Api.cloneApprovalForm(requisitionId);\n if (response.res.success === 'Approval cloned') {\n setSnackbar({\n message: 'Approval form has been successfully cloned.',\n state: 'success'\n });\n window.location.href = `${BASE_URL}${response.res.url}`;\n }\n } catch (error) {\n setSnackbar({\n message: `Failed to clone approval form, ${error?.errors}`,\n state: 'error'\n });\n } finally {\n setIsCloning(false);\n }\n };\n\n const generateBulkPdf = async () => {\n setIsGeneratingBulkPdf(true);\n try {\n const response = await Api.generateBulkPdf(requisitionId);\n if (response.res.success === 'Report submitted') {\n setSnackbar({\n message: 'Bulk pdf has been successfully submitted.',\n state: 'success'\n });\n }\n } catch (error) {\n setSnackbar({\n message: `Failed to generate bulk pdf, ${error?.errors}`,\n state: 'error'\n });\n } finally {\n setIsGeneratingBulkPdf(false);\n }\n };\n\n const jobDefaults = useMemo(() => {\n if (!approvalFormData.answers?.length) return {};\n return approvalFormData.answers\n .filter((answer) => !!answer.job_field)\n .filter((answer) =>\n answer.type === 'RankField' ||\n (answer.job_field === 'expires_at' && answer.type !== 'DateField') ||\n !answer.answer\n ? false\n : true\n )\n .reduce(\n (acc, cur) => {\n acc[cur.job_field] = cur.answer;\n return acc;\n },\n { title: approvalFormData.position_title }\n );\n }, [approvalFormData.answers, approvalFormData.position_title]);\n\n return (\n <Box sx={styles.jobPageContainer}>\n {isLoading ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Box sx={{ ...styles.jobPageHeader, marginBottom: 'unset', alignItems: 'start' }}>\n <h1>{approvalFormData.position_title}</h1>\n <Stack>\n <Stack sx={styles.approvalFormIconsContainer}>\n {(userPermissions?.['Approval Forms']?.['Edit Approval Form at Any Stage (HR use)'] ||\n ((approvalFormData.state === 'draft' || approvalFormData.state === 'pending') &&\n userPermissions?.['Approval Forms']?.['Edit Previously Submitted Form'])) && (\n <Tooltip title=\"Edit\">\n <IconButton\n sx={styles.iconGrey}\n id=\"edit-approval-form-button\"\n onClick={navigateToEditApproval}\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n )}\n {userPermissions?.['Approval Forms']?.['Clone Previously Submitted Form'] && (\n <Tooltip title=\"Clone\">\n <IconButton\n sx={styles.iconGrey}\n id=\"clone-approval-form-button\"\n onClick={cloneApprovalForm}\n >\n {isCloning ? (\n <CircularProgress size={24} color={'inherit'} />\n ) : (\n <FileCopyIcon />\n )}\n </IconButton>\n </Tooltip>\n )}\n {userPermissions?.['Applications']?.['Bulk PDF'] && (\n <Tooltip title=\"Bulk PDF\">\n <IconButton\n sx={styles.iconGrey}\n id=\"export-approval-form-pdf-button\"\n onClick={generateBulkPdf}\n >\n {isGeneratingBulkPdf ? (\n <CircularProgress size={24} color={'inherit'} />\n ) : (\n <PDFIcon />\n )}\n </IconButton>\n </Tooltip>\n )}\n {approvalFormData.state === 'approved' &&\n userPermissions?.['Approval Forms']?.['Create Job From Approval Form'] && (\n <Button\n sx={{ ...styles.modalSaveButton, marginLeft: 1, width: '100px' }}\n onClick={() => setIsDialogOpen(true)}\n >\n Create Job\n </Button>\n )}\n </Stack>\n </Stack>\n </Box>\n )}\n <Stack sx={styles.approvalFormSubtitle}>{`Approval #${requisitionId}`}</Stack>\n {isLoading ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Box sx={styles.statusContainer}>\n <Typography\n sx={{\n ...styles[approvalFormData.state],\n fontSize: '13px',\n fontWeight: 'bold',\n textTransform: 'uppercase',\n padding: '6px 16px',\n borderRadius: (theme) => theme.spacing(0.5)\n }}\n >\n {approvalFormData.state}\n </Typography>\n </Box>\n )}\n <Box sx={styles.tabsContainer}>\n <Tabs\n value={0}\n variant=\"scrollable\"\n scrollButtons={false}\n aria-label=\"Approvals\"\n sx={{\n ...styles.tabs,\n '& .MuiTabs-indicator': { ...styles.tabIndicator, maxWidth: indicatorWidth + 'px' }\n }}\n >\n <Tab ref={headerRefs} label=\"Approval form summary\" {...TabProps(0)} />\n </Tabs>\n </Box>\n <Box>\n <TabPanel tabValue={0} index={0} />\n </Box>\n <Box sx={styles.backToApprovalFormsButton}>\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n onClick={() => {\n window.location.href = '/admin/requisitions';\n }}\n >\n <IconButton sx={styles.iconGrey}>\n <ArrowCircleLeftIcon />\n </IconButton>\n <Box>Back to approval forms</Box>\n </Stack>\n </Box>\n {isLoading ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <>\n {approvalFormData?.requisition_requester && (\n <Box sx={{ padding: 2, marginBottom: 2 }}>\n <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>\n Approval created with a public link\n </Stack>\n <Stack sx={{ rowGap: 2 }}>\n <Stack>Requested by: {approvalFormData?.requisition_requester.name}</Stack>\n <Stack>Email: {approvalFormData?.requisition_requester.email}</Stack>\n <Stack>Phone: {approvalFormData?.requisition_requester.phone}</Stack>\n </Stack>\n </Box>\n )}\n <Box>\n <Stack sx={{ ...styles.sectionHeader, paddingLeft: 2 }}>Form</Stack>\n {reorderedAnswers?.map((answer) => <AnswersView answer={answer} key={answer.id} />)}\n </Box>\n {/* TODO:Hide this section for now */}\n {/* <Box>\n {emailTemplateQuestions.length > 0 && (\n <Stack sx={{ ...styles.sectionHeader, paddingLeft: 2 }}>\n Email Template Questions\n </Stack>\n )}\n {emailTemplateQuestions?.map((question, index) => (\n <Box sx={{ paddingLeft: 2 }} key={question.id}>\n <QuestionFieldGenerator\n question={question}\n questionRef={(el) => (fieldRefs.questions.current[index] = el)}\n questionError={''}\n onChangeCallback={() => {}}\n answer={''}\n disabled={true}\n />\n </Box>\n ))}\n </Box> */}\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>Documents</Stack>\n <Stack sx={{ rowGap: 2 }}>\n {approvalFormData.documents?.map((document) => (\n <DocumentViewer document={document} key={document.id} />\n ))}\n </Stack>\n </Box>\n {!Number(approvalFormData?.template_config?.hide_assigned_user) &&\n userPermissions?.['Approval Forms']?.['Assign User To Requisition'] && (\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>Assigned User</Stack>\n <Stack>\n {approvalFormData.assigned_user ? approvalFormData.assigned_user : '-'}\n </Stack>\n </Box>\n )}\n {!Number(approvalFormData?.template_config?.hide_approval_administrator) && (\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>\n Approval Administrator\n </Stack>\n <Stack>\n {approvalFormData.approval_administrator\n ? approvalFormData.approval_administrator\n : '-'}\n </Stack>\n </Box>\n )}\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>Approvers</Stack>\n <Stack>\n {approvalFormData.approvers?.length > 0 ? (\n <ApproversTable\n apiKey={apiKey}\n approvers={approvalFormData.approvers}\n setSnackbar={setSnackbar}\n requisitionId={requisitionId}\n approvalFormState={approvalFormData?.state}\n getApprovalFormData={getApprovalFormData}\n userPermissions={userPermissions}\n />\n ) : (\n 'No approvers yet.'\n )}\n </Stack>\n </Box>\n {userPermissions?.['Approval Forms']?.['Manage Approval Form Notes'] && (\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>Notes</Stack>\n <Stack>{approvalFormData.note ? approvalFormData.note : '-'}</Stack>\n </Box>\n )}\n {approvalFormData.application && (\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>Application</Stack>\n <Stack flexDirection=\"row\" alignItems=\"center\">\n <Box\n sx={{ ...styles.fileIcon, ...styles.applicationIcon, cursor: 'pointer' }}\n onClick={() => (window.location.href = newApplicationEnabled ? approvalFormData.application.url.replace('/applications/', '/new_applications/') : approvalFormData.application.url)}\n >\n <AssignmentIndIcon />\n </Box>\n <Box\n sx={{ ...styles.fileName, cursor: 'pointer' }}\n onClick={() => (window.location.href = newApplicationEnabled ? approvalFormData.application.url.replace('/applications/', '/new_applications/') : approvalFormData.application.url)}\n >\n {approvalFormData.application.id} - {approvalFormData.application.name}\n </Box>\n </Stack>\n </Box>\n )}\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ ...styles.sectionHeader, paddingBottom: 2 }}>Email Template</Stack>\n <Stack>{approvalFormData.email_template ? approvalFormData.email_template.name : '(Default)'}</Stack>\n </Box>\n </>\n )}\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n <NewJob\n apiKey={apiKey}\n jobDefaults={jobDefaults}\n isDialogOpen={isDialogOpen}\n setIsDialogOpen={setIsDialogOpen}\n fromApproval\n approvalFormId={requisitionId}\n />\n </Box>\n );\n}\n","import React, { useEffect, useState, useRef } from 'react';\nimport { Box, ToggleButtonGroup, ToggleButton } from '@mui/material';\nimport { IApprovalTemplate, IApprovalTemplateFields } from '../types';\nimport QuestionFieldGenerator, {\n IApplicantQuestion\n} from '../../Components/Utilities/QuestionFieldGenerator';\nimport dompurify from 'dompurify';\nimport { MultilineFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { styles } from './styles';\nimport InfoIcon from '@mui/icons-material/Info';\nimport LoadingButton from '../../Components/Buttons/LoadingButton';\n\nconst BASE_URL = window.location.origin;\n\nconst createApprovalFormQuestionsObject = (questions: IApplicantQuestion[]) => {\n const newObject = {};\n questions.forEach((question: IApplicantQuestion) => {\n newObject[question.id] = {\n ...question,\n data: '',\n inputText: ''\n };\n });\n return newObject;\n};\n\nconst createQuestionErrorsObject = (questions: IApplicantQuestion[]) => {\n const errors: Record<number, string> = {};\n questions.forEach((question: IApplicantQuestion) => {\n errors[question.id] = '';\n });\n return errors;\n};\n\nexport default function ApprovalFormPage({\n approvalTemplateData,\n requisitionId,\n authenticity_token,\n hash,\n state\n}: {\n approvalTemplateData?: IApprovalTemplate;\n requisitionId: number;\n authenticity_token: string;\n hash: string;\n state: string;\n}) {\n const [emailTemplateQuestions, setEmailTemplateQuestions] = useState<IApplicantQuestion[]>([]);\n const [approvalFormQuestions, setApprovalFormQuestions] = useState(() =>\n createApprovalFormQuestionsObject([])\n );\n const [questionErrors, setQuestionErrors] = useState(() =>\n createQuestionErrorsObject(emailTemplateQuestions || [])\n );\n const [selected, setSelected] = useState('approve');\n const [comment, setComment] = useState('');\n const [isValid, setIsValid] = useState(false);\n const [actioned, setActioned] = useState(false);\n\n const fieldRefs = {\n questions: useRef<Array<HTMLDivElement | null>>([])\n };\n\n const handleToggle = (event: React.MouseEvent<HTMLElement>, newSelected: string) => {\n if (newSelected !== null) {\n setSelected(newSelected);\n }\n };\n\n const submitEmailTemplateRequisition = async () => {\n const coi_response = Object.values(approvalFormQuestions)\n .map((question) => question.inputText)\n .join('. ');\n\n // Approve or decline requisition\n try {\n const response = await fetch(`${BASE_URL}/requisition_approval`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n authenticity_token: authenticity_token,\n id: requisitionId,\n hash: hash,\n approval: selected,\n coi_response: coi_response,\n comment: comment,\n commit: 'Submit'\n })\n });\n if (response.ok) {\n setActioned(true);\n } else {\n console.log('Error:', response.status, response.statusText);\n }\n } catch (error) {\n console.log(error);\n }\n };\n\n useEffect(() => {\n if (!approvalTemplateData) return;\n const questionsData = approvalTemplateData.fields.filter(\n (question) => question.enabled && question.for_email_template\n );\n setEmailTemplateQuestions(questionsData);\n\n if (Object.keys(approvalFormQuestions).length !== questionsData.length) return;\n Object.values(approvalFormQuestions).every(\n (question) => question.index === 0 || question.inputText.length > 0\n )\n ? setIsValid(true)\n : setIsValid(false);\n }, [approvalTemplateData, approvalFormQuestions]);\n\n return (\n <Box>\n {actioned ? (\n <Box>\n <h2>Request {selected === 'approve' ? 'Approved' : 'Declined'}</h2>\n <p>{`Thank you, this Request has been ${selected}d. It is safe to leave this page.`}</p>\n </Box>\n ) : (\n <>\n <Box sx={styles.noticeContainer}>\n <InfoIcon sx={styles.noticeIcon} />\n <Box sx={{ marginLeft: 1 }}>\n {state === 'pending'\n ? `Please note – your request has not yet been submitted! Please check the form that was emailed to you, select approve or decline, and add any comments before submitting your response.`\n : `This approval was already ${state} by you.`}\n </Box>\n </Box>\n {state === 'pending' && (\n <Box sx={{ padding: 4 }}>\n {emailTemplateQuestions?.map((question, index) => (\n <Box sx={{ paddingBottom: 3 }} key={question.id}>\n <QuestionFieldGenerator\n question={question}\n questionRef={(el) => (fieldRefs.questions.current[index] = el)}\n questionError={questionErrors[question.id]}\n onChangeCallback={(id, value) => {\n const label = question.field_choices.find(\n (choice) => choice.id === Number(value)\n )?.name;\n setApprovalFormQuestions((prev) => ({\n ...prev,\n [id]: {\n ...prev[id],\n data: value,\n index: question.field_choices.findIndex(\n (choice) => choice.id === Number(value)\n ),\n inputText:\n question.field_choices.findIndex(\n (choice) => choice.id === Number(value)\n ) === 0\n ? label\n : ''\n }\n }));\n setQuestionErrors((prev) => ({\n ...prev,\n [id]: value || !question.required ? '' : 'This field is required'\n }));\n }}\n answer={approvalFormQuestions[question.id]?.data}\n inputText={approvalFormQuestions[question.id]?.inputText}\n setApprovalFormQuestions={setApprovalFormQuestions}\n approvalPage={true}\n />\n </Box>\n ))}\n <Box sx={styles.toggleButtonsContainer}>\n <ToggleButtonGroup\n value={selected}\n exclusive\n onChange={handleToggle}\n aria-label=\"enabled or disabled questions\"\n >\n <ToggleButton\n value=\"approve\"\n sx={{\n ...styles.toggleButton,\n '&.Mui-selected': {\n backgroundColor: `#41BF56 !important`,\n color: `#FFFFFF !important`\n }\n }}\n >\n APPROVE\n </ToggleButton>\n <ToggleButton\n value=\"decline\"\n sx={{\n ...styles.toggleButton,\n '&.Mui-selected': {\n backgroundColor: `#E2583e !important`,\n color: `#FFFFFF !important`\n }\n }}\n >\n DECLINE\n </ToggleButton>\n </ToggleButtonGroup>\n </Box>\n <Box sx={{ marginTop: '60px', width: '100%' }}>\n <Box\n sx={styles.label}\n dangerouslySetInnerHTML={{\n __html: dompurify.sanitize(\n 'Additionally, you can leave a comment (emojis are not supported):'\n )\n }}\n />\n <MultilineFormTextField\n value={comment}\n onChange={(e) => setComment(e.target.value)}\n required={false}\n fullWidth={true}\n />\n </Box>\n <LoadingButton\n id=\"approve-or-decline-approval\"\n type=\"submit\"\n task={submitEmailTemplateRequisition}\n sx={{ ...styles.saveButton, marginTop: '20px' }}\n disabled={!isValid}\n >\n Submit\n </LoadingButton>\n </Box>\n )}\n </>\n )}\n </Box>\n );\n}\n","import React, { SetStateAction, useState, Dispatch, useCallback } from 'react';\nimport {\n Button,\n Table,\n TableHead,\n TableRow,\n TableCell,\n TableBody,\n Stack,\n IconButton,\n Box\n} from '@mui/material';\nimport { styles } from '../styles';\nimport { IApproversData } from '../types';\nimport EditApproverModal from './EditApproverModal';\nimport ActionModal from './ActionModal';\nimport moment from 'moment-timezone';\nimport Api from '../API';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { StylesProvider } from '@material-ui/core';\n\nconst tableHeaders = [\n 'Name',\n 'State',\n 'Sent At',\n 'Actioned At',\n 'Comments',\n 'COI Response',\n 'Actions'\n];\n\nconst TableData = ({\n apiKey,\n approver,\n setSnackbar,\n requisitionId,\n approvalFormState,\n getApprovalFormData,\n index,\n previousApproverActioned,\n userPermissions\n}: {\n apiKey: string;\n approver: IApproversData;\n setSnackbar: Dispatch<\n SetStateAction<{\n message: string;\n state: string;\n }>\n >;\n requisitionId: number;\n approvalFormState: string;\n getApprovalFormData: () => void;\n index: number;\n previousApproverActioned: boolean;\n userPermissions: IUserPermissions;\n}) => {\n const [editModalOpen, setEditModalOpen] = useState<boolean>(false);\n const [actionModalOpen, setActionModalOpen] = useState<boolean>(false);\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const [trashAlertOpen, setTrashAlertOpen] = useState(false);\n const [selectedApprover, setSelectedApprover] = useState<IApproversData>();\n const [showMore, setShowMore] = useState([]);\n const sentAt = approver.sent_at\n ? moment\n .tz(approver.sent_at, timeZoneString)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${approver.id}-${line}`}>{line}</div>)\n : '-';\n const actionAt = approver.action_at\n ? moment\n .tz(approver.action_at, timeZoneString)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${approver.id}-${line}`}>{line}</div>)\n : '-';\n\n const resendEmail = async (approverId: number) => {\n try {\n await Api.postResendEmail(requisitionId, { approver_id: approverId });\n setSnackbar({\n message: 'Email sent successfully',\n state: 'success'\n });\n } catch (err) {\n setSnackbar({\n message: 'Failed to resend email',\n state: 'error'\n });\n } finally {\n getApprovalFormData();\n }\n };\n\n const removeApprover = async (approver: IApproversData) => {\n try {\n const response = await Api.putApprovalForm(requisitionId, {\n requisition: {\n approvers_attributes: {\n [index]: { id: approver.id, _destroy: 1 }\n }\n }\n });\n if (response.res.success) {\n setSnackbar({\n message: response.res.success,\n state: 'success'\n });\n }\n } catch (err) {\n setSnackbar({\n message: `Failed to remove approver, ${err}`,\n state: 'error'\n });\n } finally {\n setTrashAlertOpen(false);\n getApprovalFormData();\n }\n };\n\n const handleShowMore = useCallback(\n (id: number) => {\n if (!showMore.includes(id)) {\n const copy = [...showMore];\n copy.push(id);\n setShowMore(copy);\n }\n const flag = showMore.indexOf(id);\n if (flag > -1) {\n const copy = [...showMore];\n copy.splice(flag, 1);\n setShowMore(copy);\n }\n },\n [showMore]\n );\n\n return (\n <TableRow>\n <TableCell sx={{ ...styles.approversTableCell, paddingLeft: 'unset' }}>\n <Stack>\n {approver.email === '*' ? 'Please select an approval manager' : approver.name}\n </Stack>\n </TableCell>\n <TableCell sx={{ ...styles.approversTableCell, display: 'flex', justifyContent: 'center' }}>\n <Stack sx={{ ...styles[approver.state], ...styles.approverTableStateButton }}>\n {approver.state}\n </Stack>\n </TableCell>\n <TableCell sx={styles.approversTableCell}>\n <Stack>{sentAt}</Stack>\n </TableCell>\n <TableCell sx={styles.approversTableCell}>\n <Stack>{actionAt}</Stack>\n </TableCell>\n <TableCell sx={styles.approversTableCell}>\n <Stack>{approver.comment ? approver.comment : '-'}</Stack>\n </TableCell>\n <TableCell sx={{ ...styles.approversTableCell, minWidth: '140px' }}>\n <Box sx={!showMore.includes(approver.id) ? styles.coiColumn : {}}>\n <Box>{approver.coi_response || '-'}</Box>\n </Box>\n {approver.coi_response && (\n <Box\n key={`show-${approver.id}`}\n sx={styles.link}\n onClick={() => handleShowMore(approver.id)}\n >\n {showMore.includes(approver.id) ? 'Show less' : 'Show more'}\n </Box>\n )}\n </TableCell>\n {approvalFormState !== 'declined' &&\n (approver.state === 'pending' || approver.state === 'failed') && (\n <TableCell sx={styles.approversTableCell}>\n <Button\n disableElevation\n sx={styles.normalButton}\n variant=\"text\"\n onClick={() => setEditModalOpen(true)}\n >\n Edit\n </Button>\n {!approver.name.includes('deleted') && (\n <Button\n disabled={!previousApproverActioned}\n disableElevation\n sx={styles.normalButton}\n variant=\"text\"\n onClick={() => resendEmail(approver.id)}\n >\n Resend\n </Button>\n )}\n {previousApproverActioned && approver.editable && (\n <Button\n disableElevation\n sx={styles.normalButton}\n variant=\"text\"\n onClick={() => setActionModalOpen(true)}\n >\n Approve/Decline\n </Button>\n )}\n {approvalFormState === 'pending' &&\n userPermissions?.['Approval Forms']?.['Edit Approval Form at Any Stage (HR use)'] && (\n <IconButton\n sx={{ color: '#D6827D' }}\n onClick={() => {\n setTrashAlertOpen(true);\n setSelectedApprover(approver);\n }}\n >\n <DeleteIcon sx={{ fontSize: '18px' }} />\n </IconButton>\n )}\n </TableCell>\n )}\n <EditApproverModal\n apiKey={apiKey}\n approver={approver}\n modalsOpen={editModalOpen}\n setModalsOpen={setEditModalOpen}\n setSnackbar={setSnackbar}\n requisitionId={requisitionId}\n getApprovalFormData={getApprovalFormData}\n index={index}\n />\n <ActionModal\n apiKey={apiKey}\n approver={approver}\n modalsOpen={actionModalOpen}\n setModalsOpen={setActionModalOpen}\n setSnackbar={setSnackbar}\n requisitionId={requisitionId}\n getApprovalFormData={getApprovalFormData}\n index={index}\n />\n <GenericDialog\n isDialogOpen={trashAlertOpen}\n setDialogOpen={setTrashAlertOpen}\n title={'Remove approver?'}\n description={'Are you sure want to remove this approver?'}\n buttonCallback={() => {\n setTrashAlertOpen(false);\n if (selectedApprover) {\n removeApprover(selectedApprover);\n }\n setSelectedApprover(undefined);\n }}\n callbackLoading={false}\n buttonText=\"Remove\"\n url=\"\"\n />\n </TableRow>\n );\n};\n\nexport default function ApproversTable({\n apiKey,\n approvers,\n setSnackbar,\n requisitionId,\n approvalFormState,\n getApprovalFormData,\n userPermissions\n}: {\n apiKey: string;\n approvers: IApproversData[];\n setSnackbar: Dispatch<\n SetStateAction<{\n message: string;\n state: string;\n }>\n >;\n requisitionId: number;\n approvalFormState: string;\n getApprovalFormData: () => void;\n userPermissions: IUserPermissions;\n}) {\n return (\n <Table>\n <TableHead>\n <TableRow>\n {tableHeaders.map((header, i) => (\n <TableCell\n sx={{\n ...styles.approversTableHeader,\n paddingLeft: `${header === 'Name' ? 'unset' : ''}`\n }}\n key={i}\n >\n <Stack\n sx={{\n alignItems: `${['State'].includes(header) ? 'center' : ''}`,\n marginLeft: `${['Actions'].includes(header) ? '18px' : ''}`\n }}\n >\n {header}\n </Stack>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {approvers.map((approver, i) => (\n <TableData\n key={approver.id}\n approver={approver}\n apiKey={apiKey}\n setSnackbar={setSnackbar}\n requisitionId={requisitionId}\n approvalFormState={approvalFormState}\n getApprovalFormData={getApprovalFormData}\n index={i}\n previousApproverActioned={i === 0 || approvers[i - 1]?.state === 'approved'}\n userPermissions={userPermissions}\n />\n ))}\n </TableBody>\n </Table>\n );\n}\n","import React from 'react';\nimport {\n Box,\n Table,\n TableHead,\n TableCell,\n TableBody,\n TableRow,\n Stack,\n Divider\n} from '@mui/material';\nimport { styles } from '../styles';\nimport { IAvailabilityTableData } from '../types';\n\nconst DayRow = ({\n payrollDay,\n day,\n data,\n allowBreak\n}: {\n payrollDay: number;\n day: string;\n data: IAvailabilityTableData;\n allowBreak: boolean;\n}) => (\n <TableRow>\n <TableCell sx={styles.availabilityTableBody}>\n <Stack alignItems=\"center\">{payrollDay}</Stack>\n </TableCell>\n <TableCell sx={styles.availabilityTableBody}>\n <Stack alignItems=\"center\">{day}</Stack>\n </TableCell>\n <TableCell sx={styles.availabilityTableBody}>\n <Stack alignItems=\"center\">{data.heading_1 ? data.heading_1 : '-'}</Stack>\n </TableCell>\n <TableCell sx={styles.availabilityTableBody}>\n <Stack alignItems=\"center\">{data.heading_2 ? data.heading_2 : '-'}</Stack>\n </TableCell>\n <TableCell sx={styles.availabilityTableBody}>\n <Stack flexDirection=\"row\" justifyContent=\"space-around\">\n <Stack>{data.from_time}</Stack>\n <Stack>{data.to_time}</Stack>\n </Stack>\n </TableCell>\n {allowBreak && (\n <TableCell sx={styles.availabilityTableBody}>\n <Stack alignItems=\"center\">{data.break_time} mins</Stack>\n </TableCell>\n )}\n <TableCell sx={styles.availabilityTableBody}>\n <Stack alignItems=\"center\">{Math.round(data.total_time * 100) / 100}</Stack>\n </TableCell>\n </TableRow>\n);\n\nexport default function AvailabilityAnswer({\n availabilityTableData,\n config,\n shift,\n totalTime\n}: {\n availabilityTableData: { [key: string]: IAvailabilityTableData };\n config: { heading_1: string; heading_2: string; week_start_day: number; allow_break: boolean };\n shift: number;\n totalTime: number;\n}) {\n const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n return (\n <Box>\n <Table>\n <TableHead>\n <TableRow>\n <TableCell sx={styles.availabilityTableHeader}>\n <Stack alignItems=\"center\">Payroll Day</Stack>\n </TableCell>\n <TableCell sx={styles.availabilityTableHeader}>\n <Stack alignItems=\"center\">Day</Stack>\n </TableCell>\n <TableCell sx={styles.availabilityTableHeader}>\n <Stack alignItems=\"center\">{config.heading_1}</Stack>\n </TableCell>\n <TableCell sx={styles.availabilityTableHeader}>\n <Stack alignItems=\"center\">{config.heading_2}</Stack>\n </TableCell>\n <TableCell sx={styles.availabilityTableHeader}>\n <Stack alignItems=\"center\" height=\"14px\">\n Shift times\n </Stack>\n <Stack flexDirection=\"row\" justifyContent=\"space-around\">\n <Stack fontSize=\"10px\" height=\"10px\">\n From\n </Stack>\n <Stack fontSize=\"10px\" height=\"10px\">\n To\n </Stack>\n </Stack>\n </TableCell>\n {config.allow_break && (\n <TableCell sx={styles.availabilityTableHeader}>\n <Stack alignItems=\"center\">Break</Stack>\n </TableCell>\n )}\n <TableCell sx={styles.availabilityTableHeader}>\n <Stack alignItems=\"center\">Paid Hours</Stack>\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {Object.keys(availabilityTableData).map((key: string, index) => {\n const data = availabilityTableData[key];\n return (\n <React.Fragment key={index}>\n {index === 7 && (\n <TableRow>\n {Array(config.allow_break ? 7 : 6)\n .fill(0)\n .map((e, index) => (\n <TableCell sx={{ padding: '4px 0px', border: 'unset' }} key={index}>\n <Divider />\n </TableCell>\n ))}\n </TableRow>\n )}\n <DayRow\n payrollDay={index + 1}\n day={days[(index + config.week_start_day) % days.length].slice(0, 3)}\n data={data}\n allowBreak={config.allow_break}\n />\n </React.Fragment>\n );\n })}\n <TableRow>\n <TableCell sx={styles.availabilityTableBody} colSpan={4}>\n <Stack alignItems=\"center\">TOTAL</Stack>\n </TableCell>\n <TableCell sx={styles.availabilityTableBody} colSpan={config.allow_break ? 2 : 1}>\n <Stack alignItems=\"center\">{shift} Shifts</Stack>\n </TableCell>\n <TableCell sx={styles.availabilityTableBody}>\n <Stack alignItems=\"center\">{totalTime}</Stack>\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </Box>\n );\n}\n","import React from 'react';\nimport { Box, Stack } from '@mui/material';\nimport { styles } from '../styles';\nimport DocTypeIcon from '../../Components/Utilities/DocTypeIcon';\nimport moment from 'moment';\nimport { IApprovalFormAttachment } from '../types';\n\nconst BASE_URL = window.location.origin;\n\nexport default function DocumentViewer({ document }: { document: IApprovalFormAttachment }) {\n return (\n <Stack flexDirection=\"row\">\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n sx={{ cursor: 'pointer' }}\n onClick={() => (window.location.href = `${BASE_URL}/admin/assets/${document.id}`)}\n >\n <Box sx={styles.fileIcon}>{DocTypeIcon(document.attached_file_name.split('.').pop())}</Box>\n <Box>\n <Box sx={styles.fileName}>{document.attached_file_name}</Box>\n <Box sx={{ color: '#999999' }}>\n {moment(document.created_at).format('Do MMMM YYYY[,] h:mma')}\n </Box>\n </Box>\n </Stack>\n </Stack>\n );\n}\n","import React, { useState, Dispatch, SetStateAction, useEffect } from 'react';\nimport { Autocomplete, Box, CircularProgress, Modal, Button, TextField } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { styles } from '../styles';\nimport { IApprovalManagers, IApproversData } from '../types';\nimport Api from '../API';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\n\nexport default function EditApproverModal({\n apiKey,\n approver,\n setModalsOpen,\n modalsOpen,\n setSnackbar,\n requisitionId,\n getApprovalFormData,\n index\n}: {\n apiKey: string;\n approver: IApproversData;\n modalsOpen: boolean;\n setModalsOpen: Dispatch<SetStateAction<boolean>>;\n setSnackbar: Dispatch<\n SetStateAction<{\n message: string;\n state: string;\n }>\n >;\n requisitionId: number;\n getApprovalFormData: () => void;\n index: number;\n}) {\n const [approvalManagers, setApprovalManagers] = useState<IApprovalManagers[]>([]);\n const [newApprover, setNewApprover] = useState<IApprovalManagers | null>(approver);\n const [isUpdating, setIsUpdating] = useState<boolean>(false);\n\n const handleClose = () => {\n setModalsOpen(false);\n setNewApprover(null);\n };\n\n async function getApprovers() {\n try {\n const data = await Api.getApprovalManagers({\n override_limit: true,\n limit: 2000,\n sort: 'name',\n sort_order: 'asc'\n });\n setApprovalManagers(data.res.requisition_managers);\n } catch (err) {\n setSnackbar({\n message: 'Failed to fetch approvers list',\n state: 'error'\n });\n }\n }\n\n useEffect(() => {\n getApprovers();\n }, []);\n\n const updateApprover = async () => {\n setIsUpdating(true);\n\n try {\n const response = await Api.putApprovalForm(requisitionId, {\n requisition: {\n approvers_attributes: {\n [index]: { email: newApprover?.email, id: approver.id }\n }\n }\n });\n if (response.res.success) {\n setSnackbar({\n message: response.res.success,\n state: 'success'\n });\n }\n } catch (err) {\n setSnackbar({\n message: `Failed to update approver, ${err}`,\n state: 'error'\n });\n } finally {\n setIsUpdating(false);\n setModalsOpen(false);\n getApprovalFormData();\n }\n };\n\n const isMandatoryApprover = approver.email.includes('*');\n const defaultValue = approvalManagers.find(\n (manager) => (isMandatoryApprover ? approver.email.slice(1) : approver.email) === manager.email\n );\n\n return (\n <Modal open={modalsOpen}>\n <Box sx={{ ...styles.actionsModal, height: '640px' }}>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n padding: '20px 0',\n minWidth: '255px'\n }}\n >\n <Box>\n <CloseIcon onClick={() => handleClose()} sx={styles.closeIcon} />\n </Box>\n <Box sx={styles.modalHeader}>Edit/change Approver</Box>\n </Box>\n <Box sx={{ padding: '32px 0px' }}>\n <Autocomplete\n disabled={isMandatoryApprover}\n disablePortal\n options={approvalManagers}\n getOptionLabel={(option) => `${option.name} (${option.email})`}\n value={newApprover || defaultValue}\n onChange={(event, value) => (value ? setNewApprover(value) : setNewApprover(null))}\n sx={sharedClasses.formAutocomplete}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Change approver\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n </Box>\n <Box sx={{ ...styles.modalActions, marginBottom: 2 }}>\n <Button\n disableElevation\n sx={{ ...styles.buttonRedLight }}\n variant=\"text\"\n onClick={() => handleClose()}\n >\n Cancel\n </Button>\n <Button\n id=\"approval-form-edit-approver-button\"\n type=\"submit\"\n disabled={isUpdating}\n sx={styles.modalEditButton}\n onClick={() => updateApprover()}\n >\n {isUpdating ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useRef, useState, useCallback, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport CreateNewApproval from './NewApproval/NewApprovalModal';\nimport { styles } from './styles';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport { ITabs } from './types';\nimport Api from './API';\nimport { IPermissions } from '../Jobs/types';\nimport ApprovalTemplates from './ApprovalTemplates/ApprovalTemplates';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport ApprovalManagers from './ApprovalManagers/ApprovalManagers';\nimport ApprovalPublicLinks from './ApprovalPublicLinks/ApprovalPublicLinks';\nimport ArchivedFormsAndTemplates from './ArchivedFormsAndTemplates/ArchivedFormsAndTemplates';\nimport ApprovalFormsTab from './ApprovalFormsTab';\nimport Popover from '@mui/material/Popover';\nimport ApprovalTemplateSettings from './ApprovalTemplateSettings/ApprovalTemplateSettings';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport CreateButton from '../Components/Buttons/CreateButton';\nimport { getPermissions } from '../../shared/permissionHelpers';\n\nconst URL_PARAMS = new URL(window.location.href);\n\nconst getTabNumber = (urlParams: string) => {\n switch (urlParams) {\n case '?templates':\n return 1;\n case '?managers':\n return 2;\n case '?public-links':\n return 3;\n case '?archived':\n return 4;\n default:\n return 0;\n }\n};\n\nexport default function ApprovalForms({\n apiKey,\n enableEmailTemplateFields\n}: {\n apiKey: string;\n enableEmailTemplateFields: boolean;\n}) {\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n const [tabValue, setTabValue] = useState(0);\n const [newApprovalOptions, setNewApprovalOptions] = useState<string[]>([]);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const [userPermissions, setUserPermissions] = useState<IUserPermissions | undefined>(undefined);\n const [isPublicLinkDialogOpen, setIsPublicLinkDialogOpen] = useState(false);\n const [isApprovalManagerDialogOpen, setIsApprovalManagerDialogOpen] = useState<boolean>(false);\n const [actionsAnchorEl, setActionsAnchorEl] = useState<HTMLDivElement | null>(null);\n const [newApprovalFormModal, setNewApprovalFormModal] = useState<boolean>(false);\n const [newApprovalTemplateModal, setNewApprovalTemplateModal] = useState<boolean>(false);\n const [templateArchived, setTemplateArchived] = useState<boolean>(false);\n const [entityDefaultApprovers, setEntityDefaultApprovers] = useState<string[]>([]);\n\n const headerRefs = useRef<HTMLDivElement[]>([]);\n\n const TabPanel = useCallback((props: ITabs) => {\n const { children, tabValue, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={tabValue !== index}\n id={`approvals-tabpanel-${index}`}\n aria-labelledby={`approvals-tab-${index}`}\n {...other}\n >\n {tabValue === index && <>{children}</>}\n </div>\n );\n }, []);\n\n const TabProps = useCallback((index: number) => {\n return {\n id: `approvals-tab-${index}`,\n value: index,\n 'aria-controls': `approvals-tabpanel-${index}`\n };\n }, []);\n\n const getUserPermissions = useCallback(async () => {\n try {\n const data = await getPermissions(apiKey);\n const allRoles: Record<string, Record<string, boolean>> = {};\n data.roles.forEach((role: IPermissions) =>\n role.feature_groups.forEach((group) => {\n !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n })\n );\n setUserPermissions(allRoles);\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting permissions',\n state: 'error'\n });\n } finally {\n setTabValue(getTabNumber(URL_PARAMS.search));\n }\n }, [setUserPermissions, apiKey]);\n\n const getEntityDefaultApprovers = useCallback(async () => {\n try {\n const data = await Api.getEntityApprovers();\n setEntityDefaultApprovers(data.res.entity_default_approvers);\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting entity default approvers',\n state: 'error'\n });\n }\n }, []);\n\n useEffect(() => {\n setIndicatorWidth(headerRefs.current[tabValue].clientWidth - 32);\n getUserPermissions();\n getEntityDefaultApprovers();\n }, [tabValue, apiKey, getUserPermissions, getEntityDefaultApprovers]);\n\n const handleTabChange = (event?: React.SyntheticEvent, newValue: number) => {\n setTabValue(newValue);\n URL_PARAMS.search = getPageParams(newValue);\n window.history.pushState(null, null, URL_PARAMS.href);\n };\n\n const getPageParams = (tabNo: number) => {\n switch (tabNo) {\n case 0:\n return '';\n case 1:\n return '?templates';\n case 2:\n return '?managers';\n case 3:\n return '?public-links';\n case 4:\n return '?archived';\n default:\n return '';\n }\n };\n\n return (\n <Box sx={styles.jobPageContainer}>\n <Box sx={styles.jobPageHeader}>\n <h1>Approvals</h1>\n {(userPermissions?.['Approval Forms']?.['Submit Approval Form'] ||\n userPermissions?.['Approval Forms']?.['Create / Edit Approval Forms (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Manage Approval Managers (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Manage Public Link']) && (\n <CreateButton\n id=\"approvals-create-button\"\n ariaLabel=\"Add new action button\"\n onClick={(e) => {\n setActionsAnchorEl(e.currentTarget);\n }}\n isOpen={Boolean(actionsAnchorEl)}\n />\n )}\n <Popover\n id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n sx={styles.actionsMenu}\n open={Boolean(actionsAnchorEl)}\n anchorEl={actionsAnchorEl}\n onClose={() => {\n setActionsAnchorEl(null);\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {userPermissions?.['Approval Forms']?.['Submit Approval Form'] && (\n <span\n onClick={() => {\n setActionsAnchorEl(null);\n setNewApprovalFormModal(true);\n }}\n className=\"create-approval-form-action-button\"\n >\n Approval Form\n </span>\n )}\n {userPermissions?.['Approval Forms']?.['Create / Edit Approval Forms (HR use)'] && (\n <span\n onClick={() => {\n setActionsAnchorEl(null);\n setNewApprovalTemplateModal(true);\n }}\n className=\"create-approval-template-action-button\"\n >\n Approval Template\n </span>\n )}\n {userPermissions?.['Approval Forms']?.['Manage Approval Managers (HR use)'] && (\n <span\n onClick={() => {\n setActionsAnchorEl(null);\n handleTabChange(undefined, 2);\n setIsApprovalManagerDialogOpen(true);\n }}\n className=\"create-approval-manager-action-button\"\n >\n Approval Manager\n </span>\n )}\n {userPermissions?.['Approval Forms']?.['Manage Public Link'] && (\n <span\n onClick={() => {\n setActionsAnchorEl(null);\n handleTabChange(undefined, 3);\n setIsPublicLinkDialogOpen(true);\n }}\n className=\"create-approval-public-link-action-button\"\n >\n Approval Public Link\n </span>\n )}\n </Popover>\n </Box>\n <Box sx={styles.tabsContainer}>\n <Tabs\n value={tabValue}\n onChange={handleTabChange}\n variant=\"scrollable\"\n scrollButtons={false}\n aria-label=\"Approvals\"\n sx={{\n ...styles.tabs,\n '& .MuiTabs-indicator': { ...styles.tabIndicator, maxWidth: indicatorWidth + 'px' }\n }}\n >\n <Tab ref={(el) => (headerRefs.current[0] = el)} label=\"Approval forms\" {...TabProps(0)} />\n {userPermissions?.['Approval Forms']?.['Create / Edit Approval Forms (HR use)'] && (\n <Tab\n ref={(el) => (headerRefs.current[1] = el)}\n label=\"Approval templates\"\n {...TabProps(1)}\n />\n )}\n {userPermissions?.['Approval Forms']?.['Manage Approval Managers (HR use)'] && (\n <Tab\n ref={(el) => (headerRefs.current[2] = el)}\n label=\"Approval managers\"\n {...TabProps(2)}\n />\n )}\n {userPermissions?.['Approval Forms']?.['Manage Public Link'] && (\n <Tab\n ref={(el) => (headerRefs.current[3] = el)}\n label=\"Approval public links\"\n {...TabProps(3)}\n />\n )}\n {(userPermissions?.['Approval Forms']?.['Archive Approval Forms (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Archive Approval Forms']) && (\n <Tab\n ref={(el) => (headerRefs.current[4] = el)}\n label=\"Archived approvals/templates\"\n {...TabProps(4)}\n />\n )}\n </Tabs>\n </Box>\n <Box>\n <TabPanel tabValue={tabValue} index={0}>\n <ApprovalFormsTab apiKey={apiKey} userPermissions={userPermissions} archived={false} />\n </TabPanel>\n <TabPanel tabValue={tabValue} index={1}>\n <ApprovalTemplates\n apiKey={apiKey}\n userPermissions={userPermissions}\n archived={false}\n setTemplateArchived={setTemplateArchived}\n enableEmailTemplateFields={enableEmailTemplateFields}\n />\n </TabPanel>\n <TabPanel tabValue={tabValue} index={2}>\n <ApprovalManagers\n apiKey={apiKey}\n userPermissions={userPermissions}\n isApprovalManagerDialogOpen={isApprovalManagerDialogOpen}\n setIsApprovalManagerDialogOpen={setIsApprovalManagerDialogOpen}\n />\n </TabPanel>\n <TabPanel tabValue={tabValue} index={3}>\n <ApprovalPublicLinks\n apiKey={apiKey}\n userPermissions={userPermissions}\n isPublicLinkDialogOpen={isPublicLinkDialogOpen}\n setIsPublicLinkDialogOpen={setIsPublicLinkDialogOpen}\n />\n </TabPanel>\n <TabPanel tabValue={tabValue} index={4}>\n <ArchivedFormsAndTemplates\n apiKey={apiKey}\n userPermissions={userPermissions}\n setTemplateArchived={setTemplateArchived}\n />\n </TabPanel>\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n <CreateNewApproval\n apiKey={apiKey}\n newApprovalOptions={newApprovalOptions}\n setNewApprovalOptions={setNewApprovalOptions}\n isDialogOpen={newApprovalFormModal}\n setIsDialogOpen={setNewApprovalFormModal}\n setSnackbar={setSnackbar}\n templateArchived={templateArchived}\n setTemplateArchived={setTemplateArchived}\n />\n {newApprovalTemplateModal && (\n <ApprovalTemplateSettings\n modalsOpen={newApprovalTemplateModal}\n entityDefaultApprovers={entityDefaultApprovers}\n setModalsOpen={() => setNewApprovalTemplateModal(false)}\n setSnackbar={setSnackbar}\n enableEmailTemplateFields={enableEmailTemplateFields}\n />\n )}\n </Box>\n );\n}\n","import React, { useState, useEffect, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport { styles } from './styles';\nimport Search from './Search';\nimport FilterDropdown from './Dropdowns/FilterDropdown';\nimport DndFieldDropdown from './Dropdowns/DndFieldDropdown';\nimport { defaultFilters, sortableColumnsDefaults } from './config';\nimport Api from './API';\nimport ApprovalFormsTable from './ApprovalFormsTable';\nimport {\n IFilterDropdownProps,\n IGetApprovalForms,\n TSetUserPreferences,\n IGetAllApprovalForms,\n IApprovalForm\n} from './types';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport { updateUiSettings, fetchPreferences } from '../helpers/uiPreferencesHelpers';\n\nexport default function ApprovalFormsTab({\n apiKey,\n userPermissions,\n archived\n}: {\n apiKey: string;\n userPermissions: IUserPermissions | undefined;\n archived: boolean;\n}) {\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const [selected, setSelected] = useState<number[]>([]);\n const [approvalForms, setApprovalForms] = useState<IApprovalForm[]>([]);\n const [globalSelected, setGlobalSelected] = useState([]);\n const [selectAllIsChecked, setSelectAllIsChecked] = useState(false);\n const [selectAllIsIndeterminate, setSelectAllIsIndeterminate] = useState(false);\n const [search, setSearch] = useState('');\n const [filters, setFilters] = useState<IFilterDropdownProps['filters']>(defaultFilters);\n const [sortableColumns, setSortableColumns] = useState(sortableColumnsDefaults);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [totalPages, setTotalPages] = useState(0);\n const [totalApprovalForms, setTotalApprovalForms] = useState(0);\n const [sortBy, setSortBy] = useState<string>('created_at');\n const [sortOrder, setSortOrder] = useState<string>('desc');\n const [currentPage, setCurrentPage] = useState(1);\n const [density, setDensity] = useState<string>('Default');\n const [filterableEntities, setFilterableEntities] = useState([]);\n const [filterableAssignedUsers, setFilterableAssignedUsers] = useState([]);\n const [filterableRequesters, setFilterableRequesters] = useState([]);\n\n const getFirstApprovalFormsAndPreferences = useCallback(async () => {\n setIsLoading(true);\n try {\n const { res: preferenceData } = await fetchPreferences(\n `approval_forms${archived ? '_archived' : ''}`\n );\n const { res: densityData } = await fetchPreferences('universal');\n const preference = preferenceData?.ui_preferences[0];\n const densityPreference = densityData?.ui_preferences[0];\n preference?.sorting?.sortBy && setSortBy(preference.sorting.sortBy);\n preference?.sorting?.sortOrder && setSortOrder(preference.sorting.sortOrder.toLowerCase());\n preference?.filters && setFilters(preference.filters);\n const selectedStates = preference?.filters?.state?.map((state) => state.value);\n const selectedEntityIds = preference?.filters?.entity_ids?.map((entity) => entity.id);\n const selectedAssignedUserIds = preference?.filters?.assigned_user_ids?.map(\n (user) => user.id\n );\n const selectedRequesters = preference?.filters?.requested_by_users?.map(\n (requester) => requester.name\n );\n const sessionPage = sessionStorage.getItem(`approvalFormsTablePage`);\n !archived && sessionPage && setCurrentPage(Number(sessionPage));\n preference?.row_count && setRowsPerPage(preference.row_count);\n preference?.sortable_columns && setSortableColumns(preference.sortable_columns);\n densityPreference?.columns?.density && setDensity(densityPreference?.columns?.density);\n\n const response = await Api.getApprovalForms(\n {\n archived: archived || false,\n page: !archived && sessionPage ? Number(sessionPage) : 1,\n limit: preference?.row_count || rowsPerPage,\n sort: preference?.sorting?.sortBy || 'created_at',\n sort_order: (preference?.sorting?.sortOrder?.toLowerCase() || 'desc').toUpperCase(),\n 'q[search]': search,\n 'filter[state]': selectedStates?.filters?.length === 0 ? [] : selectedStates,\n 'filter[entity_ids]': selectedEntityIds?.filters?.length === 0 ? [] : selectedEntityIds,\n 'filter[assigned_user_ids]':\n selectedAssignedUserIds?.filters?.length === 0 ? [] : selectedAssignedUserIds,\n 'filter[requested_by_users]':\n selectedRequesters?.filters?.length === 0 ? [] : selectedRequesters\n }\n );\n setApprovalForms(response.res.requisitions);\n setTotalPages(parseInt(response.resHead['x-total-pages']));\n setTotalApprovalForms(parseInt(response.resHead['x-total-count']));\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting all approval forms',\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, search]);\n\n const setUserPreferences: TSetUserPreferences = useCallback(\n async (limit, sort, columns, newFilters, density) => {\n if (density) {\n await updateUiSettings({ columns: { density }, source: 'universal' }, (errorMessage) => {\n setSnackbar({\n message: `There was an error saving your preferences, ${errorMessage}`,\n state: 'error'\n });\n });\n } else {\n await updateUiSettings(\n {\n sortable_columns: columns || sortableColumns,\n row_count: limit || rowsPerPage,\n filters: newFilters || filters,\n sorting: sort,\n source: `approval_forms${archived ? '_archived' : ''}`\n },\n () => {\n setSnackbar({\n message: 'There was an error saving your preferences',\n state: 'error'\n });\n }\n );\n }\n },\n [apiKey, archived, filters, rowsPerPage, sortBy, sortOrder, sortableColumns]\n );\n\n const getAllApprovalForms: IGetAllApprovalForms = async (\n limit,\n searchQuery,\n sort,\n updatedFilters,\n archived\n ) => {\n setIsLoading(true);\n try {\n const selectedStates = (updatedFilters?.state || filters.state)?.map((state) => state.value);\n const selectedEntityIds = (updatedFilters?.entity_ids || filters.entity_ids)?.map(\n (entity) => entity.id\n );\n const selectedAssignedUserIds = (\n updatedFilters?.assigned_user_ids || filters.assigned_user_ids\n )?.map((user) => user.id);\n const selectedRequesters = (\n updatedFilters?.requested_by_users || filters.requested_by_users\n )?.map((requester) => requester.name);\n const response = await Api.getApprovalForms(\n {\n archived: archived || false,\n override_limit: true,\n limit: totalApprovalForms,\n sort: sort?.sortBy || sortBy,\n sort_order: (sort?.sortOrder || sortOrder).toUpperCase(),\n 'filter[position_title]': searchQuery !== null ? searchQuery : search,\n 'filter[state]': selectedStates?.length === 0 ? [] : selectedStates,\n 'filter[entity_ids]': selectedEntityIds?.length === 0 ? [] : selectedEntityIds,\n 'filter[assigned_user_ids]':\n selectedAssignedUserIds?.length === 0 ? [] : selectedAssignedUserIds,\n 'filter[requested_by_users]': selectedRequesters?.length === 0 ? [] : selectedRequesters\n }\n );\n return response.res.requisitions;\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting all approval forms',\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n };\n\n const getApprovalForms: IGetApprovalForms = async (\n page,\n limit,\n searchQuery,\n sort,\n updatedFilters,\n archived\n ) => {\n setIsLoading(true);\n try {\n const selectedStates = (updatedFilters?.state || filters.state)?.map((state) => state.value);\n const selectedEntityIds = (updatedFilters?.entity_ids || filters.entity_ids)?.map(\n (entity) => entity.id\n );\n const selectedAssignedUserIds = (\n updatedFilters?.assigned_user_ids || filters.assigned_user_ids\n )?.map((user) => user.id);\n const selectedRequesters = (\n updatedFilters?.requested_by_users || filters.requested_by_users\n )?.map((requester) => requester.name);\n const response = await Api.getApprovalForms(\n {\n archived: archived || false,\n page: page || currentPage,\n limit: limit || rowsPerPage,\n sort: sort?.sortBy || sortBy,\n sort_order: (sort?.sortOrder || sortOrder).toUpperCase(),\n 'q[search]': searchQuery !== null ? searchQuery : search,\n 'filter[state]': selectedStates?.length === 0 ? [] : selectedStates,\n 'filter[entity_ids]': selectedEntityIds?.length === 0 ? [] : selectedEntityIds,\n 'filter[assigned_user_ids]':\n selectedAssignedUserIds?.length === 0 ? [] : selectedAssignedUserIds,\n 'filter[requested_by_users]': selectedRequesters?.length === 0 ? [] : selectedRequesters\n }\n );\n setApprovalForms(response.res.requisitions);\n setTotalPages(parseInt(response.resHead['x-total-pages']));\n setTotalApprovalForms(parseInt(response.resHead['x-total-count']));\n setSelectAllIsChecked(\n response.res.requisitions\n .map((requisition) => requisition.id)\n .every((id: number) => globalSelected.map((requisition) => requisition.id).includes(id))\n );\n setSelectAllIsIndeterminate(\n response.res.requisitions\n .map((requisition) => requisition.id)\n .some((id: number) => globalSelected.map((requisition) => requisition.id).includes(id))\n );\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting approval forms',\n state: 'error'\n });\n } finally {\n if (sort || updatedFilters) {\n setUserPreferences(null, sort, null, updatedFilters, null);\n } else if (limit) {\n setUserPreferences(limit, null, null, null, null);\n }\n setIsLoading(false);\n }\n };\n\n const getFilterableEntities = useCallback(async () => {\n try {\n const response = await Api.getFilters('entities', {});\n setFilterableEntities(response.res.entities);\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting entities',\n state: 'error'\n });\n }\n }, []);\n\n const getFilterableAssignedUsers = useCallback(async () => {\n try {\n const response = await Api.getFilters('assigned_users', {});\n setFilterableAssignedUsers(response.res.assigned_users);\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting assigned users',\n state: 'error'\n });\n }\n }, []);\n\n const getFilterableRequesters = useCallback(async () => {\n try {\n const response = await Api.getFilters(\n 'requested_by_users',\n {}\n );\n setFilterableRequesters(response.res.requested_by_users);\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting requesters',\n state: 'error'\n });\n }\n }, []);\n\n useEffect(() => {\n getFirstApprovalFormsAndPreferences();\n getFilterableEntities();\n getFilterableAssignedUsers();\n getFilterableRequesters();\n }, [\n apiKey,\n getFirstApprovalFormsAndPreferences,\n getFilterableEntities,\n getFilterableAssignedUsers,\n getFilterableRequesters\n ]);\n\n return (\n <Box>\n <Box sx={styles.filtersRow}>\n <Search setSearch={setSearch} getApprovalForms={getApprovalForms} archived={archived} />\n <FilterDropdown\n filters={filters}\n setFilters={setFilters}\n getApprovalForms={getApprovalForms}\n entityList={filterableEntities}\n assignedUserList={filterableAssignedUsers}\n requesterList={filterableRequesters}\n setUserPreferences={setUserPreferences}\n setCurrentPage={setCurrentPage}\n archived={archived}\n />\n <DndFieldDropdown\n sortableColumns={sortableColumns}\n setSortableColumns={setSortableColumns}\n density={density}\n setDensity={setDensity}\n setUserPreferences={setUserPreferences}\n label=\"approval-forms\"\n userPermissions={userPermissions}\n />\n </Box>\n <ApprovalFormsTable\n approvalForms={approvalForms}\n setApprovalForms={setApprovalForms}\n getApprovalForms={getApprovalForms}\n getAllApprovalForms={getAllApprovalForms}\n globalSelected={globalSelected}\n setGlobalSelected={setGlobalSelected}\n selectAllIsChecked={selectAllIsChecked}\n setSelectAllIsChecked={setSelectAllIsChecked}\n selectAllIsIndeterminate={selectAllIsIndeterminate}\n setSelectAllIsIndeterminate={setSelectAllIsIndeterminate}\n setSnackbarState={setSnackbar}\n isLoading={isLoading}\n setIsLoading={setIsLoading}\n selected={selected}\n setSelected={setSelected}\n currentPage={currentPage}\n setCurrentPage={setCurrentPage}\n rowsPerPage={rowsPerPage}\n setRowsPerPage={setRowsPerPage}\n totalPages={totalPages}\n totalApprovalForms={totalApprovalForms}\n sortBy={sortBy}\n setSortBy={setSortBy}\n sortOrder={sortOrder}\n setSortOrder={setSortOrder}\n sortableColumns={sortableColumns}\n apiKey={apiKey}\n userPermissions={userPermissions}\n density={density}\n archived={archived}\n />\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { useState, useRef, useCallback } from 'react';\nimport moment from 'moment-timezone';\nimport Api from './API';\nimport { IApprovalForm, IApprovalFormTableProps } from './types';\nimport { classes } from '../Job/Applications/styles';\nimport GenericDialog from '../Components/Modals/GenericDialog';\nimport NotePopover from './NotePopover';\nimport {\n Edit as EditIcon,\n Unarchive as UnarchiveIcon,\n KeyboardArrowLeft as KeyboardArrowLeftIcon,\n KeyboardArrowRight as KeyboardArrowRightIcon,\n MoreVert as MoreVertIcon,\n NoteAdd as NoteAddIcon\n} from '@mui/icons-material';\nimport { isPermittedOption } from './helper';\nimport {\n Popover,\n Button,\n Skeleton,\n Checkbox,\n Select,\n FormControl,\n MenuItem,\n Pagination,\n Paper,\n TableSortLabel,\n TableRow,\n TableHead,\n TableContainer,\n IconButton,\n TableCell,\n TableBody,\n Table,\n Box,\n Tooltip\n} from '@mui/material';\n\nconst BASE_URL = window.location.origin;\n\nconst CHECKBOX_CELL_WIDTH = 58;\nconst ID_CELL_WIDTH = 80;\nconst CANDIDATE_CELL_WIDTH = 200;\n\nconst tablePadding = (density: string) => {\n if (density === 'Default') {\n return '22px';\n } else if (density === 'Compact') {\n return '15px';\n } else {\n return '8px';\n }\n};\n\nexport default function ApprovalFormsTable({\n approvalForms,\n setApprovalForms,\n getApprovalForms,\n getAllApprovalForms,\n globalSelected,\n setGlobalSelected,\n selectAllIsChecked,\n setSelectAllIsChecked,\n selectAllIsIndeterminate,\n setSelectAllIsIndeterminate,\n setSnackbarState,\n isLoading,\n setIsLoading,\n selected,\n setSelected,\n currentPage,\n setCurrentPage,\n rowsPerPage,\n setRowsPerPage,\n totalPages,\n totalApprovalForms,\n sortBy,\n setSortBy,\n sortOrder,\n setSortOrder,\n sortableColumns,\n apiKey,\n userPermissions,\n density,\n archived\n}: IApprovalFormTableProps) {\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const [selectedApprovalForm, setSelectedApprovalForm] = useState<{\n id: null | number;\n note: null | string;\n }>({ id: null, note: null });\n const [selectAllApprovalForms, setSelectAllApprovalForms] = useState<boolean>(false);\n const [isFetchingAllApprovalForms, setIsFetchingAllApprovalForms] = useState<boolean>(false);\n const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n const [tableHovered, setTableHovered] = useState(false);\n const [canScroll, setCanScroll] = useState([false, true]);\n const tableRef = useRef<HTMLDivElement>(null);\n const actionCellRef = useRef(null);\n const titleCellRef = useRef(null);\n const preventLoop = useRef(0);\n const [trashAlertOpen, setTrashAlertOpen] = useState(false);\n const [deleteApprovalForms, setDeleteApprovalForms] = useState([]);\n const firstThreeColumnsWidth = CHECKBOX_CELL_WIDTH + CANDIDATE_CELL_WIDTH + ID_CELL_WIDTH;\n const [noteAnchorEl, setNoteAnchorEl] = useState<HTMLButtonElement | null>(null);\n\n const handleSelectAll = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newGlobalSelected = globalSelected.filter(\n (currentApp) => !approvalForms.map((app) => app.id).includes(currentApp.id)\n );\n if (event.target.checked) {\n const selectAllGlobalSelected = [...newGlobalSelected, ...approvalForms];\n setSelected(selectAllGlobalSelected.map((approvalForm) => approvalForm.id));\n setGlobalSelected(selectAllGlobalSelected);\n setSelectAllIsChecked(true);\n setSelectAllIsIndeterminate(false);\n setSelectAllApprovalForms(true);\n return;\n }\n setSelected(newGlobalSelected.map((approvalForm) => approvalForm.id));\n setGlobalSelected([]);\n setSelectAllIsChecked(false);\n setSelectAllIsIndeterminate(false);\n setSelectAllApprovalForms(false);\n };\n\n const handleSelectAllApprovalForms = async () => {\n setIsFetchingAllApprovalForms(true);\n const allApprovalForms = await getAllApprovalForms(\n totalApprovalForms,\n null,\n null,\n null,\n archived\n );\n setGlobalSelected(allApprovalForms);\n setSelected(allApprovalForms.map((approvalForm) => approvalForm.id));\n setSelectAllIsChecked(true);\n setSelectAllApprovalForms(true);\n setSelectAllIsIndeterminate(false);\n setIsFetchingAllApprovalForms(false);\n };\n\n const clearAllSelection = () => {\n setSelectAllApprovalForms(false);\n setGlobalSelected([]);\n setSelected([]);\n setSelectAllIsChecked(false);\n setSelectAllIsIndeterminate(false);\n };\n\n const handleArchiveApprovalForms = async (ids: Array<number>) => {\n setIsLoading(true);\n try {\n const response = await Api.postArchiveApprovalForms(\n { requisition_ids: ids }\n );\n if (response.res?.requisition_ids?.failure?.length) {\n const message =\n response.res.requisition_ids.success?.length > 0 ||\n response.res.requisition_ids.failure?.length > 1\n ? `${response.res.requisition_ids.failure?.length} ${\n response.res.requisition_ids.failure?.length > 1\n ? 'approval forms were'\n : 'approval form was'\n } unable to be archived.`\n : `${\n response.res.requisition_ids.failure?.length === 1\n ? 'Unable to archive approval form.'\n : ''\n }`;\n setSnackbarState({\n message: message,\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbarState({\n message: error?.errors,\n state: 'error'\n });\n alert('Something went wrong. Please try again.');\n } finally {\n setSelected([]);\n setGlobalSelected([]);\n setSelectedApprovalForm({ id: null, note: null });\n setActionsAnchorEl(null);\n getApprovalForms(null, null, null, null, null, archived);\n }\n };\n\n const handleUnarchiveApprovalForms = async (ids: Array<number>) => {\n setIsLoading(true);\n try {\n const response = await Api.postUnarchiveApprovalForms(\n { requisition_ids: ids }\n );\n if (response.res?.requisition_ids?.failure?.length) {\n const message =\n response.res.requisition_ids.success?.length > 0 ||\n response.res.requisition_ids.failure?.length > 1\n ? `${response.res.requisition_ids.failure?.length} ${\n response.res.requisition_ids.failure?.length > 1\n ? 'approval forms were'\n : 'approval form was'\n } unable to be unarchived.`\n : `${\n response.res.requisition_ids.failure?.length === 1\n ? 'Unable to unarchive approval form.'\n : ''\n }`;\n setSnackbarState({\n message: message,\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbarState({\n message: error?.errors,\n state: 'error'\n });\n alert('Something went wrong. Please try again.');\n } finally {\n setSelected([]);\n setGlobalSelected([]);\n setSelectedApprovalForm({ id: null, note: null });\n setActionsAnchorEl(null);\n getApprovalForms(null, null, null, null, null, archived);\n }\n };\n\n const handleTrashApprovalForms = async (ids: Array<number>) => {\n setIsLoading(true);\n try {\n const response = await Api.deleteTrashApprovalForms(\n { requisition_ids: ids }\n );\n if (response.res?.requisition_ids?.failure?.length) {\n const message =\n response.res.requisition_ids.success?.length > 0 ||\n response.res.requisition_ids.failure?.length > 1\n ? `${response.res.requisition_ids.failure?.length} ${\n response.res.requisition_ids.failure?.length > 1\n ? 'approval forms were'\n : 'approval form was'\n } unable to be trashed.`\n : `${\n response.res.requisition_ids.failure?.length === 1\n ? 'Unable to trash approval form.'\n : ''\n }`;\n setSnackbarState({\n message: message,\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbarState({\n message: error?.errors,\n state: 'error'\n });\n alert('Something went wrong. Please try again.');\n } finally {\n setSelected([]);\n setGlobalSelected([]);\n setSelectedApprovalForm({ id: null, note: null });\n setActionsAnchorEl(null);\n getApprovalForms(null, null, null, null, null, archived);\n }\n };\n\n const cloneApprovalForm = async (id: number) => {\n setIsLoading(true);\n\n try {\n const response = await fetch(`/api/v4/requisitions/${id}/clone`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n }\n }).then((response) => response.json());\n if (response.url) {\n window.location.href = `${BASE_URL}${response.url}`;\n }\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleSelectOne = (\n event: React.ChangeEvent<HTMLInputElement>,\n approvalForm: IApprovalForm\n ) => {\n let newGlobalSelected = [...globalSelected];\n event.target.checked\n ? newGlobalSelected.push(approvalForm)\n : (newGlobalSelected = newGlobalSelected.filter((app) => app.id !== approvalForm.id));\n const newSelected = newGlobalSelected.map((app) => app.id);\n setSelected(newSelected);\n setGlobalSelected(newGlobalSelected);\n setSelectAllIsChecked(\n approvalForms.map((app) => app.id).every((id) => newSelected.includes(id))\n );\n setSelectAllIsIndeterminate(\n approvalForms.map((app) => app.id).some((id) => newSelected.includes(id))\n );\n };\n\n const handleRowsPerPageChange = (selection: number) => {\n if (selection === rowsPerPage) return;\n setRowsPerPage(selection);\n getApprovalForms(null, selection, null, null, null, archived);\n };\n\n const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n if (newPage === currentPage) return;\n setCurrentPage(newPage);\n sessionStorage.setItem(`approvalFormsTablePage`, newPage);\n getApprovalForms(newPage, null, null, null, null, archived);\n };\n\n const handleSortChange = (\n event: React.MouseEvent<HTMLSpanElement, MouseEvent>,\n columnValue: string\n ) => {\n const isAsc = sortBy === columnValue && sortOrder === 'asc';\n const newSortOrder = isAsc ? 'desc' : 'asc';\n setSortOrder(newSortOrder);\n setSortBy(columnValue);\n getApprovalForms(\n null,\n null,\n null,\n { sortBy: columnValue, sortOrder: newSortOrder },\n null,\n archived\n );\n };\n\n const handleScroll = () => {\n if (tableRef.current.scrollLeft < 10) {\n setCanScroll([false, true]);\n } else if (\n tableRef.current.scrollLeft >\n tableRef.current.scrollWidth - tableRef.current.clientWidth - 10\n ) {\n setCanScroll([true, false]);\n } else {\n setCanScroll([true, true]);\n }\n };\n\n const handleScrollLeft = () => {\n tableRef.current.scrollLeft > 360\n ? (tableRef.current.scrollLeft -= 300)\n : (tableRef.current.scrollLeft = 0);\n };\n\n const handleScrollRight = () => {\n tableRef.current.scrollWidth - tableRef.current.clientWidth > 360\n ? (tableRef.current.scrollLeft += 300)\n : (tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth);\n };\n\n function isScrollable(element: HTMLElement) {\n return element && element.scrollWidth > element.clientWidth + 20;\n }\n\n const handleScrollableEnter = () => {\n if (isScrollable(tableRef?.current) && !isLoading) setTableHovered(true);\n };\n\n const handleScrollableExit = () => {\n setTableHovered(false);\n };\n\n const handleOpenNote = (\n event: React.MouseEvent<HTMLElement>,\n id: number,\n note: string | null\n ) => {\n setSelectedApprovalForm({ id, note });\n setNoteAnchorEl(event.currentTarget);\n };\n\n const handleCloseNote = () => {\n setNoteAnchorEl(null);\n setSelectedApprovalForm({ id: null, note: null });\n preventLoop.current = 0;\n };\n\n const headerStyle = (name: string) => {\n switch (name) {\n case 'position_title':\n return {\n ...classes.sticky,\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible),\n minWidth: `${CANDIDATE_CELL_WIDTH}px`,\n left: '138px'\n };\n case 'id':\n return { ...classes.sticky, minWidth: `${ID_CELL_WIDTH}px`, left: '58px' };\n case 'note':\n return { minWidth: '300px' };\n case 'created_at':\n return { minWidth: '120px' };\n case 'updated_at':\n return { minWidth: '120px' };\n case 'requested_by':\n return { minWidth: '140px' };\n case 'form_template':\n return { minWidth: '145px' };\n case 'assigned_user':\n return { minWidth: '135px' };\n case 'state':\n return { minWidth: '120px', textAlign: 'center' };\n default:\n return { minWidth: '90px' };\n }\n };\n\n const displaySelectAll =\n selectAllApprovalForms &&\n globalSelected.length !== totalApprovalForms &&\n totalApprovalForms > rowsPerPage;\n\n const renderTableCell = useCallback(\n (\n column: IApprovalFormTableProps['sortableColumns'][0],\n approvalForm: IApprovalForm,\n createdAt: JSX.Element[] | '-',\n updatedAt: JSX.Element[] | '-'\n ) => {\n switch (column.id) {\n case 'id':\n return (\n <TableCell\n key={approvalForm.id + column.id}\n sx={{\n ...classes.noLinkStyling,\n ...classes.sticky,\n minWidth: '80px',\n left: '58px'\n }}\n >\n <a href={approvalForm.requisition_link} className=\"approval-form-id-link\">\n {approvalForm.id || '-'}\n </a>\n </TableCell>\n );\n case 'position_title':\n return (\n <TableCell\n key={approvalForm.id + column.id}\n sx={{\n ...classes.sticky,\n minWidth: '200px',\n left: '138px',\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n >\n <Box\n sx={{\n '& a': {\n color: '#666666',\n fontWeight: 'bold',\n '&:hover': {\n textDecoration: 'none'\n }\n }\n }}\n >\n <a href={approvalForm.requisition_link} className=\"approval-form-title-link\">\n {approvalForm.position_title || '-'}\n </a>\n </Box>\n </TableCell>\n );\n case 'created_at':\n return <TableCell key={approvalForm.id + column.id}>{createdAt}</TableCell>;\n case 'updated_at':\n return <TableCell key={approvalForm.id + column.id}>{updatedAt}</TableCell>;\n case 'requested_by':\n return (\n <TableCell key={approvalForm.id + column.id}>\n {approvalForm.requested_by || '-'}\n </TableCell>\n );\n case 'state':\n return (\n <TableCell>\n <Box\n sx={{\n ...classes[approvalForm.state],\n width: '112px',\n textAlign: 'center'\n }}\n >\n {approvalForm.state}\n </Box>\n </TableCell>\n );\n case 'entity':\n return <TableCell>{approvalForm.entity_name || '-'}</TableCell>;\n case 'form_template':\n return <TableCell>{approvalForm.form_template || '-'}</TableCell>;\n case 'assigned_user':\n return <TableCell>{approvalForm.assigned_user || '-'}</TableCell>;\n case 'note':\n return <TableCell>{approvalForm.note || '-'}</TableCell>;\n default:\n return <TableCell></TableCell>;\n }\n },\n [currentPage, rowsPerPage, selectedApprovalForm.id, tableHovered, userPermissions]\n );\n\n return (\n <Box>\n <Box sx={{ position: 'relative' }}>\n {\n <Box\n onMouseEnter={handleScrollableEnter}\n sx={{\n ...classes.arrowsContainer,\n position: 'absolute !important',\n left: `${firstThreeColumnsWidth}px`,\n top: 0\n }}\n >\n <Box\n onClick={handleScrollLeft}\n sx={{\n ...classes.leftArrow,\n ...(tableHovered && canScroll[0] && classes.showArrows),\n top: 0\n }}\n id=\"left-arrow\"\n >\n <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n }\n <Box\n onMouseEnter={handleScrollableEnter}\n sx={{\n ...classes.arrowsContainer,\n position: 'absolute !important',\n right: `${actionCellRef.current?.offsetWidth}px`,\n top: 0\n }}\n >\n <Box\n onClick={handleScrollRight}\n sx={{\n ...classes.rightArrow,\n ...(tableHovered && canScroll[1] && classes.showArrows),\n top: 0\n }}\n id=\"right-arrow\"\n >\n <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n <TableContainer\n sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}\n component={Paper}\n onMouseEnter={handleScrollableEnter}\n onMouseLeave={handleScrollableExit}\n ref={tableRef}\n onScroll={handleScroll}\n >\n <Table\n sx={{\n ...classes.tableWrapper,\n 'th, td, tr, thead': { padding: `${tablePadding(density)} 10px` }\n }}\n aria-label=\"approval forms\"\n >\n <TableHead>\n <TableRow>\n <TableCell sx={{ ...classes.sticky, width: `${CHECKBOX_CELL_WIDTH}px` }}>\n <Checkbox\n id=\"select-all-checkbox\"\n sx={classes.checkbox}\n indeterminate={!selectAllIsChecked && selectAllIsIndeterminate}\n checked={selectAllIsChecked}\n onChange={handleSelectAll}\n inputProps={{\n 'aria-label': 'select all approval forms'\n }}\n />\n </TableCell>\n {sortableColumns.map(\n (column) =>\n column.enabled &&\n isPermittedOption(column.id, userPermissions) && (\n <TableCell\n key={column.id}\n sx={headerStyle(column.id)}\n ref={column.id === 'position_title' ? titleCellRef : null}\n >\n <TableSortLabel\n active={sortBy === column.id}\n direction={sortBy === column.id ? (sortOrder as 'asc' | 'desc') : 'asc'}\n onClick={(event) => handleSortChange(event, column.id)}\n sx={column.sortable ? classes.sortable : null}\n disabled={!column.sortable}\n id={`${column.id}-sort-label-approval-forms`}\n >\n {column.label}\n </TableSortLabel>\n </TableCell>\n )\n )}\n {(userPermissions?.['Approval Forms']?.['Archive Approval Forms'] ||\n userPermissions?.['Approval Forms']?.['Manage Approval Form Notes'] ||\n userPermissions?.['Approval Forms']?.[\n 'Edit Approval Form at Any Stage (HR use)'\n ] ||\n userPermissions?.['Approval Forms']?.['Edit Previously Submitted Form'] ||\n userPermissions?.['Approval Forms']?.['Clone Previously Submitted Form']) && (\n <TableCell\n sx={{\n zIndex: '4',\n ...classes.attachmentsHeader,\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n />\n )}\n </TableRow>\n </TableHead>\n <TableBody>\n {approvalForms &&\n !isLoading &&\n approvalForms.map((approvalForm: IApprovalForm, index) => {\n const createdAt = approvalForm.created_at\n ? moment\n .tz(approvalForm.created_at, timeZoneString)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${approvalForm.id}-${line}`}>{line}</div>)\n : '-';\n const updatedAt = approvalForm.updated_at\n ? moment\n .tz(approvalForm.updated_at, timeZoneString)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${approvalForm.id}-${line}`}>{line}</div>)\n : '-';\n return (\n <TableRow key={approvalForm.id}>\n <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n <Checkbox\n id={`select-checkbox-${approvalForm.id}`}\n sx={classes.checkbox}\n checked={selected.includes(approvalForm.id)}\n onChange={(event) => handleSelectOne(event, approvalForm)}\n inputProps={{\n 'aria-label': `select approval form ${approvalForm.position_title}`\n }}\n />\n </TableCell>\n {sortableColumns.map((column) => {\n if (column.enabled && isPermittedOption(column.id, userPermissions)) {\n return renderTableCell(column, approvalForm, createdAt, updatedAt);\n }\n })}\n {userPermissions?.['Approval Forms']?.['Archive Approval Forms'] ||\n userPermissions?.['Approval Forms']?.['Manage Approval Form Notes'] ||\n userPermissions?.['Approval Forms']?.[\n 'Edit Approval Form at Any Stage (HR use)'\n ] ||\n userPermissions?.['Approval Forms']?.['Edit Previously Submitted Form'] ||\n userPermissions?.['Approval Forms']?.['Clone Previously Submitted Form'] ? (\n <TableCell\n sx={{\n zIndex: '4',\n ...classes.attachmentsCell,\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n ref={actionCellRef}\n >\n <Box sx={classes.actionItems}>\n {archived ? (\n <>\n {userPermissions?.['Approval Forms']?.[\n 'Archive Approval Forms'\n ] && (\n <Tooltip placement=\"right\" title=\"Unarchive\" arrow>\n <IconButton\n className=\"unarchive-button\"\n onClick={(e) =>\n handleUnarchiveApprovalForms([approvalForm.id])\n }\n >\n <UnarchiveIcon />\n </IconButton>\n </Tooltip>\n )}\n </>\n ) : (\n <>\n {userPermissions?.['Approval Forms']?.[\n 'Manage Approval Form Notes'\n ] && (\n <Tooltip placement=\"top\" title=\"Add note\" arrow>\n <IconButton\n className=\"note-button\"\n onClick={(e) =>\n handleOpenNote(e, approvalForm.id, approvalForm.note)\n }\n >\n <NoteAddIcon />\n </IconButton>\n </Tooltip>\n )}\n {(userPermissions?.['Approval Forms']?.[\n 'Edit Approval Form at Any Stage (HR use)'\n ] ||\n ((approvalForm.state === 'draft' ||\n approvalForm.state === 'pending') &&\n userPermissions?.['Approval Forms']?.[\n 'Edit Previously Submitted Form'\n ])) && (\n <Tooltip placement=\"top\" title=\"Edit\" arrow>\n <IconButton\n onClick={() => {\n window.location.href =\n BASE_URL + `/admin/requisitions/${approvalForm.id}/edit`;\n }}\n className=\"edit-approval-form-action-button\"\n >\n <EditIcon sx={{ color: '#666666' }} />\n </IconButton>\n </Tooltip>\n )}\n {(userPermissions?.['Approval Forms']?.[\n 'Clone Previously Submitted Form'\n ] ||\n userPermissions?.['Approval Forms']?.['Archive Approval Forms'] ||\n userPermissions?.['Approval Forms']?.[\n 'Edit Approval Form at Any Stage (HR use)'\n ] ||\n userPermissions?.['Approval Forms']?.[\n 'Edit Previously Submitted Form'\n ]) && (\n <Tooltip placement=\"top\" title=\"More options\" arrow>\n <IconButton\n onClick={(e) => {\n setActionsAnchorEl(e.currentTarget);\n setSelectedApprovalForm({\n id: approvalForm.id,\n note: null\n });\n }}\n className=\"approval-form-action-dropdown-button\"\n >\n <MoreVertIcon sx={{ color: '#666666' }} />\n </IconButton>\n </Tooltip>\n )}\n </>\n )}\n </Box>\n </TableCell>\n ) : (\n <TableCell ref={actionCellRef}></TableCell>\n )}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n {!isLoading && approvalForms?.length === 0 && (\n <Box sx={classes.noApplications}>No Approval Forms found</Box>\n )}\n {isLoading && (\n <>\n {[...Array(10)].map((_, index) => (\n <Box key={index} sx={classes.skeletonContainer}>\n <Skeleton animation=\"wave\" height={60} />\n </Box>\n ))}\n </>\n )}\n </TableContainer>\n </Box>\n <Box sx={classes.paginationParent}>\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n sx={classes.rowSelect}\n value={rowsPerPage}\n onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" value={10}>\n 10\n </MenuItem>\n <MenuItem id=\"second-rpp-item\" value={20}>\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer}>\n <Pagination\n id=\"pagination-menu\"\n count={totalPages}\n page={currentPage}\n siblingCount={0}\n onChange={handlePageChange}\n sx={classes.pagination}\n />\n <span id=\"total-jobs\">{totalApprovalForms} Total</span>\n </Box>\n </Box>\n <Box\n id=\"selected-tooltip\"\n sx={\n globalSelected?.length > 0\n ? { ...classes.selectedTooltip, ...classes.fadeIn }\n : { ...classes.selectedTooltip, ...classes.fadeOut }\n }\n >\n <Box\n id=\"selected-tooltip-text\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n ...classes.selectedTooltipText\n }}\n >\n {globalSelected.length === totalApprovalForms\n ? `All ${globalSelected?.length} approval forms are selected`\n : `${globalSelected?.length} selected`}\n <IconButton\n size=\"small\"\n sx={{\n ...classes.selectedTooltipText,\n ...classes.selectedAllTooltipText,\n marginLeft: 1,\n color: '#666666'\n }}\n onClick={clearAllSelection}\n >\n Clear selection\n </IconButton>\n </Box>\n {displaySelectAll && (\n <IconButton\n disabled={isFetchingAllApprovalForms}\n size=\"small\"\n sx={{ ...classes.selectedTooltipText, ...classes.selectedAllTooltipText }}\n onClick={handleSelectAllApprovalForms}\n >\n Select all {totalApprovalForms} approval forms\n </IconButton>\n )}\n {!archived && (\n <NotePopover\n setApprovalForms={setApprovalForms}\n anchorEl={noteAnchorEl}\n handleCloseNote={handleCloseNote}\n approvalFormId={selectedApprovalForm?.id}\n approvalFormNote={selectedApprovalForm?.note}\n apiKey={apiKey}\n setSnackbarState={setSnackbarState}\n />\n )}\n {!archived && (\n <Popover\n id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n sx={classes.actionsMenu}\n open={Boolean(actionsAnchorEl)}\n anchorEl={actionsAnchorEl}\n onClose={() => {\n setActionsAnchorEl(null);\n setSelectedApprovalForm({ id: null, note: null });\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {userPermissions?.['Approval Forms']?.['Clone Previously Submitted Form'] && (\n <span\n onClick={() => {\n setActionsAnchorEl(null);\n cloneApprovalForm(selectedApprovalForm.id);\n }}\n className=\"clone-approval-form-action-button\"\n >\n Clone\n </span>\n )}\n {userPermissions?.['Approval Forms']?.['Archive Approval Forms'] && (\n <span\n onClick={() => handleArchiveApprovalForms([selectedApprovalForm.id])}\n className=\"archive-approval-form-action-button\"\n >\n Archive\n </span>\n )}\n {(userPermissions?.['Approval Forms']?.['Edit Approval Form at Any Stage (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Edit Previously Submitted Form']) && (\n <span\n onClick={() => {\n setActionsAnchorEl(null);\n setTimeout(() => setTrashAlertOpen(true), 100);\n setDeleteApprovalForms([selectedApprovalForm.id]);\n }}\n className=\"trash-approval-form-action-button\"\n >\n Trash\n </span>\n )}\n </Popover>\n )}\n {(userPermissions?.['Approval Forms']?.['Archive Approval Forms'] ||\n userPermissions?.['Approval Forms']?.['Edit Approval Form at Any Stage (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Edit Previously Submitted Form']) && (\n <Box sx={classes.selectedTooltipButtonsContainer}>\n {userPermissions?.['Approval Forms']?.['Archive Approval Forms'] &&\n (archived ? (\n <Button\n variant=\"contained\"\n sx={classes.selectedTooltipButton}\n onClick={() => handleUnarchiveApprovalForms(selected)}\n >\n Unarchive\n </Button>\n ) : (\n <Button\n variant=\"contained\"\n sx={classes.selectedTooltipButton}\n onClick={() => handleArchiveApprovalForms(selected)}\n >\n Archive\n </Button>\n ))}\n {(userPermissions?.['Approval Forms']?.['Edit Approval Form at Any Stage (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Edit Previously Submitted Form']) && (\n <Button\n variant=\"contained\"\n sx={classes.selectedTooltipButton}\n onClick={() => {\n setDeleteApprovalForms(selected);\n setTrashAlertOpen(true);\n }}\n >\n Trash\n </Button>\n )}\n </Box>\n )}\n </Box>\n <GenericDialog\n isDialogOpen={trashAlertOpen}\n setDialogOpen={setTrashAlertOpen}\n title={deleteApprovalForms.length > 1 ? 'Trash approval forms?' : 'Trash approval form?'}\n description={\n deleteApprovalForms.length > 1\n ? 'Are you sure want to trash these approval forms?'\n : 'Are you sure want to trash this approval form?'\n }\n buttonCallback={() => {\n setTrashAlertOpen(false);\n handleTrashApprovalForms(deleteApprovalForms);\n setDeleteApprovalForms([]);\n }}\n callbackLoading={false}\n buttonText=\"Trash\"\n url=\"\"\n />\n </Box>\n );\n}\n","import React, { Dispatch, useState, useEffect, useCallback, SetStateAction } from 'react';\nimport Box from '@mui/material/Box';\nimport ApprovalManagersTable from './ApprovalManagersTable';\nimport Api from '../API';\nimport { IApprovalManagers } from '../types';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport Search from './Search';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { fetchPreferences, updateUiSettings } from '../../helpers/uiPreferencesHelpers';\n\nexport default function ApprovalManagers({\n apiKey,\n userPermissions,\n isApprovalManagerDialogOpen,\n setIsApprovalManagerDialogOpen\n}: {\n apiKey: string;\n userPermissions: IUserPermissions | undefined;\n isApprovalManagerDialogOpen: boolean;\n setIsApprovalManagerDialogOpen: Dispatch<SetStateAction<boolean>>;\n}) {\n const [approvalManagers, setApprovalManagers] = useState<IApprovalManagers[]>([]);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const [selected, setSelected] = useState<number[]>([]);\n const [globalSelected, setGlobalSelected] = useState<IApprovalManagers[]>([]);\n const [selectAllIsChecked, setSelectAllIsChecked] = useState(false);\n const [selectAllIsIndeterminate, setSelectAllIsIndeterminate] = useState(false);\n const [search, setSearch] = useState('');\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [totalPages, setTotalPages] = useState(0);\n const [totalApprovalManagers, setTotalApprovalManagers] = useState(0);\n const [sortBy, setSortBy] = useState<string>('created_at');\n const [sortOrder, setSortOrder] = useState<string>('desc');\n const [currentPage, setCurrentPage] = useState(1);\n const [density, setDensity] = useState<string>('Default');\n\n const getFirstApprovalManagersAndPreferences = useCallback(async () => {\n setIsLoading(true);\n try {\n const { res: preferenceData } = await fetchPreferences('approval_managers');\n const { res: densityData } = await fetchPreferences('universal');\n const preference = preferenceData?.ui_preferences[0];\n const densityPreference = densityData?.ui_preferences[0];\n preference?.sorting?.sortBy && setSortBy(preference.sorting.sortBy);\n preference?.sorting?.sortOrder && setSortOrder(preference.sorting.sortOrder.toLowerCase());\n const sessionPage = sessionStorage.getItem(`approvalManagersTablePage`);\n sessionPage && setCurrentPage(Number(sessionPage));\n preference?.row_count && setRowsPerPage(preference.row_count);\n densityPreference?.columns?.density && setDensity(densityPreference?.columns?.density);\n\n const response = await Api.getApprovalManagers({\n page: sessionPage ? Number(sessionPage) : 1,\n limit: preference?.row_count || rowsPerPage,\n sort: preference?.sorting?.sortBy || 'name',\n sort_order: (preference?.sorting?.sortOrder?.toLowerCase() || 'desc').toUpperCase(),\n 'q[search]': search\n });\n setApprovalManagers(response.res.requisition_managers);\n setTotalPages(parseInt(response.resHead['x-total-pages']));\n setTotalApprovalManagers(parseInt(response.resHead['x-total-count']));\n } catch (error) {\n setSnackbar({\n message: `There was an error getting approval managers, ${error?.errors}`,\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n const setUserPreferences = async (\n limit: number | null,\n sort: { sortBy: string; sortOrder: string } | null\n ) => {\n await updateUiSettings(\n {\n row_count: limit || rowsPerPage,\n sorting: sort,\n source: `approval_managers`\n },\n () => {\n setSnackbar({\n message: 'There was an error saving your preferences',\n state: 'error'\n });\n }\n );\n };\n\n const getApprovalManagers = async (\n page: number | null,\n limit: number | null,\n searchQuery: string | null,\n sort: { sortBy: string; sortOrder: string } | null\n ) => {\n setIsLoading(true);\n try {\n const response = await Api.getApprovalManagers({\n page: page || currentPage,\n limit: limit || rowsPerPage,\n sort: sort?.sortBy || sortBy,\n sort_order: (sort?.sortOrder || sortOrder).toUpperCase(),\n 'q[search]': searchQuery !== null ? searchQuery : search\n });\n setApprovalManagers(response.res.requisition_managers);\n setTotalPages(parseInt(response.resHead['x-total-pages']));\n setTotalApprovalManagers(parseInt(response.resHead['x-total-count']));\n } catch (error) {\n setSnackbar({\n message: `There was an error getting approval managers, ${error}`,\n state: 'error'\n });\n } finally {\n if (sort) {\n setUserPreferences(null, sort);\n } else if (limit) {\n setUserPreferences(limit, null);\n setCurrentPage(1);\n }\n setIsLoading(false);\n }\n };\n\n const getAllApprovalManagers = async () => {\n setIsLoading(true);\n try {\n const response = await Api.getApprovalManagers({\n override_limit: true,\n limit: totalApprovalManagers,\n sort: sortBy,\n sort_order: sortOrder.toUpperCase(),\n 'q[search]': search\n });\n return response.res.requisition_managers;\n } catch (error) {\n setSnackbar({\n message: `There was an error getting all approval managers, ${error.errors}`,\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n getFirstApprovalManagersAndPreferences();\n }, [getFirstApprovalManagersAndPreferences]);\n\n return (\n <Box>\n <Box sx={{ marginBottom: 3, paddingTop: '6px' }}>\n <Search setSearch={setSearch} getApprovalManagers={getApprovalManagers} />\n </Box>\n <ApprovalManagersTable\n apiKey={apiKey}\n approvalManagers={approvalManagers}\n density={density}\n isLoading={isLoading}\n setIsLoading={setIsLoading}\n sortBy={sortBy}\n setSortBy={setSortBy}\n sortOrder={sortOrder}\n setSortOrder={setSortOrder}\n rowsPerPage={rowsPerPage}\n setRowsPerPage={setRowsPerPage}\n totalPages={totalPages}\n currentPage={currentPage}\n setCurrentPage={setCurrentPage}\n totalApprovalManagers={totalApprovalManagers}\n selected={selected}\n setSelected={setSelected}\n globalSelected={globalSelected}\n setGlobalSelected={setGlobalSelected}\n selectAllIsChecked={selectAllIsChecked}\n setSelectAllIsChecked={setSelectAllIsChecked}\n selectAllIsIndeterminate={selectAllIsIndeterminate}\n setSelectAllIsIndeterminate={setSelectAllIsIndeterminate}\n getApprovalManagers={getApprovalManagers}\n userPermissions={userPermissions}\n setSnackbar={setSnackbar}\n isApprovalManagerDialogOpen={isApprovalManagerDialogOpen}\n setIsApprovalManagerDialogOpen={setIsApprovalManagerDialogOpen}\n getAllApprovalManagers={getAllApprovalManagers}\n />\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { useState } from 'react';\nimport {\n Box,\n Button,\n FormControl,\n IconButton,\n Select,\n Skeleton,\n MenuItem,\n Pagination,\n TableContainer,\n Table,\n TableBody,\n TableHead,\n TableRow,\n TableCell,\n TableSortLabel,\n Checkbox,\n Tooltip\n} from '@mui/material';\nimport { Delete as DeleteIcon, Edit as EditIcon } from '@mui/icons-material';\nimport { IApprovalManagers, IApprovalManagersTableProps } from '../types';\nimport { approvalManagersTableHeaders } from '../config';\nimport { classes } from '../../Job/Applications/styles';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport NewApprovalManager from './NewApprovalManager';\nimport Api from '../API';\n\nconst tablePadding = (density: string) => {\n if (density === 'Default') {\n return '22px';\n } else if (density === 'Compact') {\n return '15px';\n } else {\n return '8px';\n }\n};\n\nexport default function ApprovalManagersTable({\n apiKey,\n approvalManagers,\n density,\n isLoading,\n sortBy,\n setSortBy,\n sortOrder,\n setSortOrder,\n rowsPerPage,\n setRowsPerPage,\n totalPages,\n currentPage,\n setCurrentPage,\n totalApprovalManagers,\n selected,\n setSelected,\n globalSelected,\n setGlobalSelected,\n selectAllIsChecked,\n setSelectAllIsChecked,\n selectAllIsIndeterminate,\n setSelectAllIsIndeterminate,\n getApprovalManagers,\n userPermissions,\n setSnackbar,\n isApprovalManagerDialogOpen,\n setIsApprovalManagerDialogOpen,\n getAllApprovalManagers\n}: IApprovalManagersTableProps) {\n const [selectAllApprovalManagers, setSelectAllApprovalManagers] = useState<boolean>(false);\n const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\n const [deleteApprovalManagers, setDeleteApprovalManagers] = useState<number[]>([]);\n const [editedManager, setEditedManager] = useState<IApprovalManagers | null>(null);\n const [isDeleting, setIsDeleting] = useState<boolean>(false);\n const [isFetchingAllApprovalManagers, setIsFetchingAllApprovalManagers] =\n useState<boolean>(false);\n\n const handleDeleteApprovalManager = async (id: number) => {\n setIsDeleting(true);\n const approvalManagerId = id;\n try {\n const { res } = await Api.deleteApprovalManager(approvalManagerId);\n if (res.success) {\n setSnackbar({\n message: `Approval manager has been successfully deleted.`,\n state: 'success'\n });\n getApprovalManagers(null, null, null, null);\n }\n } catch (error) {\n setSnackbar({\n message: `Failed to delete approval manager, ${error?.errors}`,\n state: 'error'\n });\n } finally {\n setIsDeleting(false);\n setIsDialogOpen(false);\n setSelected([]);\n setGlobalSelected([]);\n }\n };\n\n const handleDeleteMultipleManagers = async (ids: number[]) => {\n setIsDeleting(true);\n try {\n const { res } = await Api.deleteApprovalManagers(\n { requisition_manager_ids: ids }\n );\n if (res.requisition_manager_ids.failure.length) {\n setSnackbar({\n message: `Failed to delete the approval manager id(s): ${res.requisition_manager_ids.failure.join(\n ', '\n )}`,\n state: 'error'\n });\n } else {\n setSnackbar({\n message: `Approval managers have been successfully deleted.`,\n state: 'success'\n });\n getApprovalManagers(null, null, null, null);\n }\n } catch (error) {\n setSnackbar({\n message: `Failed to delete the approval managers, ${error?.errors}`,\n state: 'error'\n });\n } finally {\n setIsDeleting(false);\n setIsDialogOpen(false);\n setSelected([]);\n setGlobalSelected([]);\n }\n };\n\n const handleSortChange = (\n event: React.MouseEvent<HTMLSpanElement, MouseEvent>,\n columnValue: string\n ) => {\n const isAsc = sortBy === columnValue && sortOrder === 'asc';\n const newSortOrder = isAsc ? 'desc' : 'asc';\n setSortOrder(newSortOrder);\n setSortBy(columnValue);\n getApprovalManagers(null, null, null, { sortBy: columnValue, sortOrder: newSortOrder });\n };\n\n const handleSelectOne = (\n event: React.ChangeEvent<HTMLInputElement>,\n approvalManager: IApprovalManagers\n ) => {\n let newGlobalSelected = [...globalSelected];\n event.target.checked\n ? newGlobalSelected.push(approvalManager)\n : (newGlobalSelected = newGlobalSelected.filter((app) => app.id !== approvalManager.id));\n const newSelected = newGlobalSelected.map((app) => app.id);\n setSelected(newSelected);\n setGlobalSelected(newGlobalSelected);\n setSelectAllIsChecked(\n approvalManagers.map((app) => app.id).every((id) => newSelected.includes(id))\n );\n setSelectAllIsIndeterminate(\n approvalManagers.map((app) => app.id).some((id) => newSelected.includes(id))\n );\n };\n\n const handleSelectAll = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newGlobalSelected = globalSelected.filter(\n (currentApp) => !approvalManagers.map((app) => app.id).includes(currentApp.id)\n );\n if (event.target.checked) {\n const selectAllGlobalSelected = [...newGlobalSelected, ...approvalManagers];\n setSelected(selectAllGlobalSelected.map((approvalManager) => approvalManager.id));\n setGlobalSelected(selectAllGlobalSelected);\n setSelectAllIsChecked(true);\n setSelectAllIsIndeterminate(false);\n setSelectAllApprovalManagers(true);\n return;\n }\n setSelected(newGlobalSelected.map((approvalManager) => approvalManager.id));\n setGlobalSelected(newGlobalSelected);\n setSelectAllIsChecked(false);\n setSelectAllIsIndeterminate(false);\n setSelectAllApprovalManagers(false);\n };\n\n const handleSelectAllApprovalManagers = async () => {\n setIsFetchingAllApprovalManagers(true);\n const allApprovalManagers = await getAllApprovalManagers();\n if (allApprovalManagers) {\n setGlobalSelected(allApprovalManagers);\n setSelected(allApprovalManagers.map((manager) => manager.id));\n setSelectAllIsChecked(true);\n setSelectAllApprovalManagers(true);\n setSelectAllIsIndeterminate(false);\n }\n setIsFetchingAllApprovalManagers(false);\n };\n\n const handleRowsPerPageChange = (selection: number) => {\n if (selection === rowsPerPage) return;\n setRowsPerPage(selection);\n getApprovalManagers(1, selection, null, null);\n };\n\n const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n if (newPage === currentPage) return;\n setCurrentPage(newPage);\n sessionStorage.setItem(`approvalManagersTablePage`, newPage);\n getApprovalManagers(newPage, null, null, null);\n };\n\n const clearAllSelection = () => {\n setSelectAllApprovalManagers(false);\n setGlobalSelected([]);\n setSelected([]);\n setSelectAllIsChecked(false);\n setSelectAllIsIndeterminate(false);\n };\n\n const handleEditManager = (manager: IApprovalManagers) => {\n setIsApprovalManagerDialogOpen(true);\n setEditedManager(manager);\n };\n\n const displaySelectAll =\n selectAllApprovalManagers &&\n globalSelected.length !== totalApprovalManagers &&\n totalApprovalManagers > rowsPerPage;\n\n return (\n <Box>\n <Box sx={{ position: 'relative' }}>\n <TableContainer sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}>\n <Table\n sx={{\n ...classes.tableWrapper,\n minWidth: 'unset',\n 'th, td, tr, thead': { padding: `${tablePadding(density)} 10px` }\n }}\n aria-label=\"approval managers\"\n >\n <TableHead>\n <TableRow>\n <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n <Checkbox\n id=\"select-all-checkbox\"\n sx={classes.checkbox}\n indeterminate={!selectAllIsChecked && selectAllIsIndeterminate}\n checked={selectAllIsChecked}\n onChange={handleSelectAll}\n inputProps={{\n 'aria-label': 'select all approval managers'\n }}\n />\n </TableCell>\n {approvalManagersTableHeaders.map((header) => (\n <TableCell key={header.name}>\n <TableSortLabel\n active={sortBy === header.name}\n direction={sortBy === header.name ? (sortOrder as 'asc' | 'desc') : 'asc'}\n onClick={(event) => handleSortChange(event, header.name)}\n sx={header.sortable ? classes.sortable : null}\n disabled={!header.sortable}\n id={`${header.name}-sort-label-approval-managers`}\n >\n {header.label}\n </TableSortLabel>\n </TableCell>\n ))}\n <TableCell />\n </TableRow>\n </TableHead>\n <TableBody>\n {approvalManagers &&\n !isLoading &&\n approvalManagers.map((manager) => (\n <TableRow key={manager.id}>\n <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n <Checkbox\n id={`select-checkbox-${manager.id}`}\n sx={classes.checkbox}\n checked={selected.includes(manager.id)}\n onChange={(event) => handleSelectOne(event, manager)}\n inputProps={{\n 'aria-label': `select approval managers ${manager.name}`\n }}\n />\n </TableCell>\n <TableCell sx={{ minWidth: '150px' }}>{manager.name}</TableCell>\n <TableCell sx={{ minWidth: '200px' }}>{manager.email}</TableCell>\n <TableCell>\n <Box sx={classes.actionItems}>\n <Tooltip placement=\"top\" title=\"Edit\" arrow>\n <IconButton\n className=\"approval-manager-edit-button\"\n onClick={() => handleEditManager(manager)}\n >\n <EditIcon sx={{ fontSize: '18px' }} />\n </IconButton>\n </Tooltip>\n <Tooltip placement=\"top\" title=\"Delete\" arrow>\n <IconButton\n className=\"approval-manager-delete-button\"\n sx={{ color: '#E37D7A' }}\n onClick={() => {\n setIsDialogOpen(true);\n setDeleteApprovalManagers([manager.id]);\n }}\n >\n <DeleteIcon sx={{ fontSize: '18px' }} />\n </IconButton>\n </Tooltip>\n </Box>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n {!isLoading && approvalManagers?.length === 0 && (\n <Box sx={classes.noApplications}>No Approval Managers found</Box>\n )}\n {isLoading && (\n <>\n {[...Array(10)].map((_, index) => (\n <Box key={index} sx={classes.skeletonContainer}>\n <Skeleton animation=\"wave\" height={60} />\n </Box>\n ))}\n </>\n )}\n </TableContainer>\n </Box>\n <Box sx={classes.paginationParent}>\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n sx={classes.rowSelect}\n value={rowsPerPage}\n onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" value={10}>\n 10\n </MenuItem>\n <MenuItem id=\"second-rpp-item\" value={20}>\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer}>\n <Pagination\n id=\"pagination-menu\"\n count={totalPages}\n page={currentPage}\n siblingCount={0}\n onChange={handlePageChange}\n sx={classes.pagination}\n />\n <span id=\"total-jobs\">{totalApprovalManagers} Total</span>\n </Box>\n </Box>\n <Box\n id=\"selected-tooltip\"\n sx={\n globalSelected?.length > 0\n ? { ...classes.selectedTooltip, ...classes.fadeIn }\n : { ...classes.selectedTooltip, ...classes.fadeOut }\n }\n >\n <Box\n id=\"selected-tooltip-text\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n ...classes.selectedTooltipText\n }}\n >\n {globalSelected.length === totalApprovalManagers\n ? `All ${globalSelected?.length} approval managers are selected`\n : `${globalSelected?.length} selected`}\n <IconButton\n size=\"small\"\n sx={{\n ...classes.selectedTooltipText,\n ...classes.selectedAllTooltipText,\n marginLeft: 1,\n color: '#666666'\n }}\n onClick={clearAllSelection}\n >\n Clear selection\n </IconButton>\n </Box>\n {displaySelectAll && (\n <IconButton\n disabled={isFetchingAllApprovalManagers}\n size=\"small\"\n sx={{ ...classes.selectedTooltipText, ...classes.selectedAllTooltipText }}\n onClick={handleSelectAllApprovalManagers}\n >\n Select all {totalApprovalManagers} approval managers\n </IconButton>\n )}\n <Box sx={classes.selectedTooltipButtonsContainer}>\n <Button\n variant=\"contained\"\n sx={classes.selectedTooltipButton}\n onClick={() => {\n setIsDialogOpen(true);\n setDeleteApprovalManagers(selected);\n }}\n >\n Delete\n </Button>\n </Box>\n </Box>\n <NewApprovalManager\n apiKey={apiKey}\n setSnackbar={setSnackbar}\n isApprovalManagerDialogOpen={isApprovalManagerDialogOpen}\n setIsApprovalManagerDialogOpen={setIsApprovalManagerDialogOpen}\n editedManager={editedManager}\n setEditedManager={setEditedManager}\n getApprovalManagers={getApprovalManagers}\n />\n <GenericDialog\n isDialogOpen={isDialogOpen}\n setDialogOpen={setIsDialogOpen}\n title={`Are you sure you want to delete ${\n deleteApprovalManagers.length > 1 ? 'these' : 'this'\n } approval ${deleteApprovalManagers.length > 1 ? 'managers' : 'manager'}?`}\n description=\"\"\n buttonCallback={() => {\n deleteApprovalManagers.length > 1\n ? handleDeleteMultipleManagers(deleteApprovalManagers)\n : handleDeleteApprovalManager(deleteApprovalManagers[0]);\n }}\n callbackLoading={isDeleting}\n buttonText=\"Delete\"\n url=\"\"\n />\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport { Box, Button, Modal, CircularProgress } from '@mui/material';\nimport { Close as CloseIcon } from '@mui/icons-material';\nimport { DebouncedFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { styles } from '../styles';\nimport Api from '../API';\nimport { IApprovalManagers, IGetApprovalManagers } from '../types';\nimport LoadingButton from '../../Components/Buttons/LoadingButton';\n\nexport default function NewApprovalManager({\n apiKey,\n setSnackbar,\n isApprovalManagerDialogOpen,\n setIsApprovalManagerDialogOpen,\n editedManager,\n setEditedManager,\n getApprovalManagers\n}: {\n apiKey: string;\n setSnackbar: Dispatch<\n SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n >;\n isApprovalManagerDialogOpen: boolean;\n setIsApprovalManagerDialogOpen: Dispatch<SetStateAction<boolean>>;\n editedManager: IApprovalManagers | null;\n setEditedManager: Dispatch<SetStateAction<IApprovalManagers | null>>;\n getApprovalManagers: IGetApprovalManagers;\n}) {\n const [nameError, setNameError] = useState<string>('');\n const [emailError, setEmailError] = useState<string>('');\n\n const createApprovalManager = async () => {\n if (!validateInputs()) return;\n try {\n const name = editedManager.name;\n const email = editedManager.email;\n const { res } = await Api.createApprovalManager(\n { requisition_manager: { name, email } }\n );\n if (res.success) {\n setSnackbar({\n message: `Approval manager has been successfully created.`,\n state: 'success'\n });\n getApprovalManagers(null, null, null, null);\n handleClose();\n }\n } catch (error) {\n setSnackbar({\n message: `Failed to create approval manager. ${error.error}`,\n state: 'error'\n });\n }\n };\n\n const updateApprovalManager = async () => {\n const approvalManagerId = editedManager?.id;\n if (!approvalManagerId) return;\n if (!validateInputs()) return;\n try {\n const name = editedManager.name;\n const email = editedManager.email;\n const { res } = await Api.updateApprovalManager(\n { requisition_manager: { name, email } },\n approvalManagerId\n );\n if (res.success) {\n setSnackbar({\n message: `Approval manager has been successfully updated.`,\n state: 'success'\n });\n getApprovalManagers(null, null, null, null);\n handleClose();\n }\n } catch (error) {\n setSnackbar({\n message: `Failed to update approval manager. ${error.error}`,\n state: 'error'\n });\n }\n };\n\n const handleClose = () => {\n setIsApprovalManagerDialogOpen(false);\n setEditedManager(null);\n setNameError('');\n setEmailError('');\n };\n\n const validateEmail = () => {\n if (!editedManager || !editedManager.email) return false;\n return String(editedManager.email)\n .toLowerCase()\n .match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|.(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n );\n };\n\n const validateInputs = () => {\n setNameError('');\n setEmailError('');\n if (!editedManager || !editedManager.name)\n setNameError(`Name is required, please enter a name`);\n if (!validateEmail()) setEmailError(`Please enter a proper email address`);\n if (!editedManager || !editedManager.name || !validateEmail()) {\n return false;\n } else {\n return true;\n }\n };\n\n return (\n <Box>\n <Modal\n open={isApprovalManagerDialogOpen}\n onClose={handleClose}\n aria-labelledby=\"new-approval-manager-modal\"\n >\n <Box sx={styles.actionsModal}>\n <Box sx={{ padding: '30px 0px' }}>\n <Box id=\"new-approval-manager-modal-title\" sx={styles.modalHeader}>\n {editedManager?.id ? 'Edit' : 'New'} approval manager\n </Box>\n </Box>\n <Box sx={{ ...styles.modalFormLine, paddingTop: 2 }}>\n <Box sx={{ position: 'relative' }}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n const newEditedManager = { ...editedManager };\n newEditedManager.name = value;\n setEditedManager(newEditedManager);\n }}\n id=\"approval_manager_name\"\n label=\"Name\"\n defaultValue={editedManager?.name}\n required\n styles={{ width: '250px' }}\n error={nameError}\n />\n </Box>\n </Box>\n <Box sx={{ ...styles.modalFormLine, paddingTop: 1 }}>\n <Box sx={{ position: 'relative' }}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n const newEditedManager = { ...editedManager };\n newEditedManager.email = value;\n setEditedManager(newEditedManager);\n }}\n id=\"approval_manager_email\"\n label=\"Email\"\n defaultValue={editedManager?.email}\n required\n styles={{ width: '250px' }}\n error={emailError}\n />\n </Box>\n </Box>\n <Box sx={{ marginTop: 5 }}>\n <CloseIcon onClick={handleClose} sx={styles.closeIcon} />\n <Box sx={styles.modalActions}>\n <Button\n disableElevation\n sx={{ ...styles.buttonRedLight }}\n variant=\"text\"\n onClick={handleClose}\n >\n Cancel\n </Button>\n <LoadingButton\n id=\"submit-new-approval-manager-button\"\n type=\"submit\"\n sx={styles.modalEditButton}\n task={() => (editedManager?.id ? updateApprovalManager() : createApprovalManager())}\n >\n Submit\n </LoadingButton>\n </Box>\n </Box>\n </Box>\n </Modal>\n </Box>\n );\n}\n","import React, { useState } from 'react';\nimport {Box, FormControl, OutlinedInput, InputAdornment} from '@mui/material';\nimport {Search as SearchIcon} from '@mui/icons-material';\nimport { IGetApprovalManagers } from '../types';\nimport { styles } from '../styles';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function Search({\n setSearch,\n getApprovalManagers\n}: {\n setSearch: (query: string) => void;\n getApprovalManagers: IGetApprovalManagers;\n}) {\n const [tempSearch, setTempSearch] = useState('');\n const debouncedAPICall = useDebouncedCallback((searchQuery) => {\n getApprovalManagers(null, null, searchQuery, null);\n setSearch(searchQuery);\n }, 600);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTempSearch(event.target.value);\n debouncedAPICall(event.target.value);\n };\n\n return (\n <Box sx={{ width: '100%'}}>\n <FormControl fullWidth>\n <OutlinedInput\n id=\"approval-manager-search\"\n sx={styles.searchInput}\n placeholder={'Search by name or email'}\n value={tempSearch}\n onChange={handleChange}\n startAdornment={\n <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n <SearchIcon />\n </InputAdornment>\n }\n />\n </FormControl>\n </Box>\n );\n}\n","import React, { useRef, useState, useEffect } from 'react';\nimport { Autocomplete, Box, Button, IconButton, Stack, Skeleton, TextField } from '@mui/material';\nimport { Close as CloseIcon } from '@mui/icons-material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { IApprovalTemplate, IApprovalManagers, IApprovers } from '../types';\nimport { classes } from '../NewApproval/styles';\nimport Api from '../API';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { DebouncedFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport QuestionFieldGenerator, {\n IApplicantQuestion,\n IFieldChoice\n} from '../../Components/Utilities/QuestionFieldGenerator';\nimport { FileWithPath } from 'react-dropzone';\nimport DocTypeIcon from '../../Components/Utilities/DocTypeIcon';\nimport { serialize } from 'object-to-formdata';\nimport moment from 'moment';\nimport LoadingButton from '../../Components/Buttons/LoadingButton';\nimport { scrollToElement } from '../../utils/scroll-to-element';\nimport AttachmentSelector from '../../Components/Utilities/AttachmentSelector';\n\nconst BASE_URL = window.location.origin;\n\nconst createApprovalFormQuestionsObject = (questions: IApplicantQuestion[]) => {\n const newObject = {};\n questions.forEach((question: IApplicantQuestion) => {\n if (question.type === 'RankField') {\n newObject[question.id] = {\n ...question,\n data: {}\n };\n question.field_choices.forEach((choice: IFieldChoice, index: number) => {\n newObject[question.id]['data'][choice.id] = index + 1;\n });\n } else if (question.type === 'JobReferenceLookupField') {\n newObject[question.id] = {\n ...question,\n data: 'validation bypass'\n };\n } else {\n newObject[question.id] = {\n ...question,\n data: ''\n };\n }\n });\n return newObject;\n};\n\nconst createQuestionErrorsObject = (questions: IApplicantQuestion[]) => {\n const errors: Record<number, string> = {};\n questions.forEach((question: IApplicantQuestion) => {\n errors[question.id] = '';\n });\n return errors;\n};\n\nconst getAnswerAttributes = (id: number, value: any) => {\n if (value.type === 'RadioButtonField' || value.type === 'SelectField') {\n return {\n field_id: id,\n field_choice_id: value.data\n };\n } else if (value.type === 'CheckBoxField') {\n return {\n field_id: id,\n field_choice_ids: Object.entries(value.data)\n .filter(([_, value]) => value)\n .map(([id]) => id)\n };\n } else {\n return {\n field_id: id,\n data: value.data\n };\n }\n};\n\nexport default function ApprovalPublicLink({\n apiKey,\n templateId,\n token,\n approvalTemplateData,\n approvalManagers\n}: {\n apiKey: string;\n templateId: number;\n token: string;\n approvalTemplateData?: IApprovalTemplate;\n approvalManagers?: IApprovalManagers[];\n}) {\n const [loadingData, setLoadingData] = useState<boolean>(false);\n const [loadingApprovers, setLoadingApprovers] = useState<boolean>(false);\n const [approvers, setApprovers] = useState<\n { email: string; id?: number; destroyed?: boolean; error?: string; mandatoryBlank?: boolean }[]\n >([]);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const [approvalAdministrator, setApprovalAdministrator] = useState<string>('');\n const [administratorList, setAdministratorList] = useState<IApprovers[]>([]);\n const [fileList, setFileList] = useState<FileWithPath[]>([]);\n const [questions, setQuestions] = useState<IApplicantQuestion[]>([]);\n const [approvalFormQuestions, setApprovalFormQuestions] = useState(() =>\n createApprovalFormQuestionsObject([])\n );\n const [questionErrors, setQuestionErrors] = useState(() =>\n createQuestionErrorsObject(questions || [])\n );\n\n const fieldRefs = {\n positionTitle: useRef<HTMLDivElement>(null),\n approvalManagers: useRef<HTMLDivElement>(null),\n requesterAttributes: useRef<HTMLDivElement>(null),\n questions: useRef<Array<HTMLDivElement | null>>([])\n };\n\n const [fetchingCSV, setFetchingCSV] = useState<boolean>(false);\n const [positionTitle, setPositionTitle] = useState<string>('');\n const [positionTitleError, setPositionTitleError] = useState<string>('');\n const [name, setName] = useState<string>('');\n const [email, setEmail] = useState<string>('');\n const [phone, setPhone] = useState<string>('');\n const [requesterAttributesErrors, setRequesterAttributesErrors] = useState<{\n name: string;\n email: string;\n phone: string;\n }>({ name: '', email: '', phone: '' });\n const [requisitionId, setRequisitionId] = useState<number | null>(null);\n\n const containsDuplicates = (array: string[]) => {\n return new Set(array).size !== array.length;\n };\n\n // Validate approval question fields\n const validateQuestions = () => {\n let isValid = true;\n let questionError: number | undefined = undefined;\n\n questions.forEach((question: IApplicantQuestion, index: number) => {\n let tempErrorMessage = '';\n if (question.type === 'CheckBoxField') {\n const isChecked = Object.values(approvalFormQuestions?.[question.id]?.data).some(\n (value) => value === true\n );\n if (question.required && !isChecked) {\n tempErrorMessage = 'Must select at least one option';\n if (questionError === undefined) {\n questionError = index;\n }\n isValid = false;\n }\n } else if (question.type === 'RankField') {\n const duplicates = containsDuplicates(\n Object.values(approvalFormQuestions?.[question.id]?.data)\n );\n if (duplicates) {\n tempErrorMessage = 'Ranked choices must be unique';\n if (questionError === undefined) {\n questionError = index;\n }\n isValid = false;\n }\n } else if (question.required && !approvalFormQuestions?.[question.id]?.data) {\n tempErrorMessage =\n question.type !== 'RadioButtonField' ? 'This field is required' : 'Must select an option';\n if (questionError === undefined) {\n questionError = index;\n }\n isValid = false;\n }\n setQuestionErrors((prev) => ({\n ...prev,\n [question.id]: tempErrorMessage\n }));\n });\n\n if (questionError !== undefined) {\n scrollToElement(fieldRefs.questions.current[questionError]);\n }\n return isValid;\n };\n\n const validatePositionTitle = () => {\n if (approvalTemplateData?.config.hide_position_title) return true;\n setPositionTitleError('');\n if (positionTitle) {\n return true;\n } else {\n setPositionTitleError('Position title is required to create an approval form.');\n scrollToElement(fieldRefs.positionTitle);\n return false;\n }\n };\n\n const validateApprovalManagers = () => {\n const newApprovers = [...approvers];\n let isValid = true;\n newApprovers.map((approver, i) => {\n approver.error = '';\n if (!approver.email) {\n newApprovers[i].error = 'Please choose an approver or delete the row.';\n isValid = false;\n } else if (!validateEmail(approver.email)) {\n newApprovers[i].error = 'Please enter a valid email address.';\n isValid = false;\n }\n });\n if (!isValid) {\n scrollToElement(fieldRefs.approvalManagers);\n }\n setApprovers(newApprovers);\n return isValid;\n };\n\n const validateEmail = (email: string) => {\n return String(email)\n .toLowerCase()\n .match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|.(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n );\n };\n\n const validateRequesterAttributes = () => {\n const errors = { name: '', email: '', phone: '' };\n let isValid = true;\n if (!name) {\n errors.name = 'Please fill in the name field.';\n isValid = false;\n }\n if (!email) {\n errors.email = 'Please fill in the email field.';\n isValid = false;\n } else if (!validateEmail(email)) {\n errors.email = 'Please enter a proper email address';\n isValid = false;\n }\n if (\n phone !== '' &&\n !/^[\\+]?[(]?[0-9]{3}[)]?[-\\s\\.]?[0-9]{3}[-\\s\\.]?[0-9]{4,6}$/im.test(phone)\n ) {\n errors.phone = 'Please enter a proper phone number.';\n isValid = false;\n }\n if (!isValid) {\n scrollToElement(fieldRefs.requesterAttributes);\n }\n setRequesterAttributesErrors(errors);\n return isValid;\n };\n\n const answers_attributes = {};\n Object.entries(approvalFormQuestions).forEach(([id, value], index) => {\n answers_attributes[index] = getAnswerAttributes(id, value);\n });\n\n const approvers_attributes = {};\n approvers.map((approver, i) => {\n approvers_attributes[i] = {\n id: approver.id,\n email: approver.email.includes('*') ? approver.email.slice(1) : approver.email,\n position: 0,\n required: approver.email.includes('*'),\n _destroy: approver.destroyed\n };\n });\n\n const documents_attributes = {};\n fileList.map((document, i) => {\n documents_attributes[i] = {\n attached: document\n };\n });\n\n const requisition_requester_attributes = {\n name,\n email,\n phone\n };\n\n const approvalAttributes = {\n requisition_form_id: templateId,\n position_title: positionTitle,\n documents_attributes,\n to_email: approvalAdministrator,\n approvers_attributes\n };\n\n const approvalData = {\n requisition: {\n ...approvalAttributes,\n answers_attributes,\n requisition_requester_attributes\n }\n };\n\n const handleSubmitApproval = async () => {\n if (\n !validateRequesterAttributes() ||\n !validatePositionTitle() ||\n !validateQuestions() ||\n !validateApprovalManagers()\n )\n return;\n const formData = serialize(approvalData);\n\n try {\n const response = await fetch(\n `${BASE_URL}/api/v4/requisitions/submit_public_requisition?token=${token}`,\n {\n method: 'POST',\n body: formData\n }\n ).then((res) => res.json());\n if (response.success) {\n setRequisitionId(response.requisition_id);\n } else {\n throw response.errors;\n }\n } catch (error) {\n setSnackbar({\n message: `Something went wrong: ${error}. Please try again.`,\n state: 'error'\n });\n }\n };\n\n const handleLookUpButton = async (questionId: number, positionId: number) => {\n setFetchingCSV(true);\n try {\n const data = await Api.getCSVData(questionId, positionId);\n setApprovers(\n data.res.approvers.map((approver: string) => ({\n email: approver.toLowerCase(),\n destroyed: false\n }))\n );\n questions?.map((question) => {\n const answerExist = data.res.fields[0][question.original_title];\n if (answerExist) {\n setApprovalFormQuestions((prev) => ({\n ...prev,\n [question.id]: {\n ...prev[question.id],\n data:\n question.type === 'SelectField' || question.type === 'RadioButtonField'\n ? question.field_choices.find((e) => e.name === answerExist)?.id\n : answerExist\n }\n }));\n }\n });\n } catch (err) {\n setSnackbar({\n message: `Failed to fetch csv data, ${err}`,\n state: 'error'\n });\n } finally {\n setFetchingCSV(false);\n }\n };\n\n useEffect(() => {\n if (!approvalTemplateData) return;\n const questionsData = approvalTemplateData.fields.filter((question) => question.enabled);\n setAdministratorList(approvalTemplateData.approvers);\n setQuestions(questionsData);\n questionsData && setApprovalFormQuestions(createApprovalFormQuestionsObject(questionsData));\n // If no default approvers set in approval template but has default approvers in entity level\n if (approvalTemplateData.config.default_approvers) {\n setApprovers(\n approvalTemplateData.config.default_approvers.split(',').map((approver) => ({\n email: approver,\n destroyed: false,\n mandatoryBlank: approver === '*'\n }))\n );\n } else if (approvalTemplateData.entity_default_approver) {\n setApprovers(\n approvalTemplateData.entity_default_approver.map((approver) => ({\n email: approver.required ? `*${approver.email}` : approver.email,\n destroyed: false,\n mandatoryBlank: approver.required\n }))\n );\n }\n }, [approvalTemplateData]);\n\n const handleAddApprover = () => {\n setApprovers([...approvers, { email: '', destroyed: false }]);\n };\n\n const removeApprover = (i: number) => {\n if (approvers.length > 1) {\n const newApprovers = [...approvers];\n if (newApprovers[i].id) {\n newApprovers[i].destroyed = true;\n } else {\n newApprovers.splice(i, 1);\n }\n setApprovers(newApprovers);\n }\n };\n\n const handleEmailChange = (i: number, value: IApprovalManagers) => {\n const newApprovers = [...approvers];\n newApprovers[i].email = value ? value.email : '';\n setApprovers(newApprovers);\n };\n\n const handleDeleteAttachment = (index: number) => {\n const updatedFileList = fileList.filter((file, i) => i !== index);\n\n setFileList(updatedFileList);\n };\n\n return (\n <Box>\n {requisitionId ? (\n <Stack sx={{ rowGap: 2, fontSize: '16px' }}>\n <Stack sx={{ fontSize: '22px', fontWeight: 'bold' }}>\n Your request was successfully submitted.\n </Stack>\n <Stack>Your requisition number is {requisitionId}.</Stack>\n <Stack>\n You will receive a notification when your requisition is approved or declined.\n </Stack>\n <Stack>It is safe to leave this page.</Stack>\n </Stack>\n ) : (\n <Box>\n <Box sx={{ padding: 2, paddingLeft: 'unset' }} ref={fieldRefs.requesterAttributes}>\n <Box sx={{ paddingBottom: 3 }}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setName(value);\n }}\n label=\"Your full name\"\n styles={{ width: '300px' }}\n required\n id=\"full-name\"\n defaultValue={name}\n error={requesterAttributesErrors.name}\n />\n </Box>\n <Box sx={{ paddingBottom: 3 }}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setEmail(value);\n }}\n label=\"Your email\"\n styles={{ width: '300px' }}\n required\n id=\"email\"\n defaultValue={email}\n error={requesterAttributesErrors.email}\n />\n </Box>\n <Box sx={{ paddingBottom: 3 }}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setPhone(value);\n }}\n label=\"Your phone number\"\n styles={{ width: '300px' }}\n // eslint-disable-next-line max-lines\n id=\"phone-number\"\n defaultValue={phone}\n error={requesterAttributesErrors.phone}\n />\n </Box>\n </Box>\n <Box sx={{ padding: 2, paddingLeft: 'unset' }}>\n {loadingData ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <>\n {!Number(approvalTemplateData?.config.hide_position_title) && (\n <Box sx={{ paddingBottom: 3 }}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setPositionTitle(value);\n }}\n label=\"Vacancy position title\"\n defaultValue={positionTitle}\n styles={{ width: '300px' }}\n required\n innerRef={fieldRefs.positionTitle}\n error={positionTitleError}\n />\n </Box>\n )}\n {questions?.map((question, index) => (\n <Box sx={{ paddingBottom: 3 }} key={question.id}>\n <QuestionFieldGenerator\n question={question}\n questionRef={(el) => (fieldRefs.questions.current[index] = el)}\n questionError={questionErrors[question.id]}\n onChangeCallback={(id, value) => {\n setApprovalFormQuestions((prev) => ({\n ...prev,\n [id]: {\n ...prev[id],\n data: value\n }\n }));\n setQuestionErrors((prev) => ({\n ...prev,\n [id]: value || !question.required ? '' : 'This field is required'\n }));\n }}\n handleLookUpButton={handleLookUpButton}\n answer={approvalFormQuestions[question.id]?.data}\n fetchingCSV={fetchingCSV}\n />\n </Box>\n ))}\n </>\n )}\n </Box>\n <Box sx={{ padding: 2, paddingLeft: 'unset' }}>\n <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>Documents</Stack>\n <AttachmentSelector\n performUpload={false}\n apiKey={apiKey}\n setFileList={(file) => {\n setFileList((previous) => [...previous, ...file]);\n }}\n maxSize={50000000}\n />\n {fileList &&\n fileList.map(\n (file, index) =>\n file.name && (\n <Box key={index} sx={classes.fileContainer}>\n <Box sx={classes.fileIconContainer}>\n <Box sx={classes.fileIcon}>{DocTypeIcon(file.name.split('.').pop())}</Box>\n <Box>\n <Box sx={classes.fileName}>{file.name}</Box>\n <Box sx={classes.fileSize}>\n {moment(file.lastModified).format('Do MMMM YYYY[,] h:mma')}\n </Box>\n </Box>\n </Box>\n <IconButton onClick={() => handleDeleteAttachment(index)}>\n <DeleteIcon sx={{ color: '#D6827D' }} />\n </IconButton>\n </Box>\n )\n )}\n </Box>\n {loadingData ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <>\n {!Number(approvalTemplateData?.config.hide_approval_administrator) &&\n administratorList && (\n <Box sx={{ padding: 2, paddingLeft: 'unset' }}>\n <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>\n Approval Administrator\n </Stack>\n <Autocomplete\n disablePortal\n options={administratorList}\n getOptionLabel={(option) => option.label}\n value={\n administratorList.find(\n (manager) => manager.value === approvalAdministrator\n ) || null\n }\n onChange={(event, value) =>\n value ? setApprovalAdministrator(value.value) : setApprovalAdministrator('')\n }\n sx={{ width: '300px', paddingTop: 3, ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pßro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Send to\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n </Box>\n )}\n </>\n )}\n {loadingApprovers ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <Box sx={{ padding: 2, paddingLeft: 'unset' }}>\n <Stack sx={classes.sectionHeader} ref={fieldRefs.approvalManagers}>\n Approvers\n </Stack>\n {approvers.map((approver, index) => {\n const mandatory = approver.email.includes('*');\n const mandatoryBlank = approver.mandatoryBlank;\n const value = approvalManagers.find(\n (manager) =>\n (mandatory ? approver.email.slice(1) : approver.email) === manager.email\n );\n return (\n <React.Fragment key={`${value?.id}-${index}`}>\n {!approver.destroyed && (\n <Box sx={classes.approversContainer}>\n <Autocomplete\n disablePortal\n disabled={!mandatoryBlank && mandatory}\n options={approvalManagers}\n getOptionLabel={(option) => `${option.name} (${option.email})`}\n value={value || null}\n onChange={(event, value) => handleEmailChange(index, value)}\n sx={{ width: '300px', ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <>\n <TextField\n {...params}\n label=\"Email\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n {approver.error && (\n <Stack sx={{ color: '#E37D7A', fontSize: '13px', paddingLeft: 1 }}>\n {approver.error}\n </Stack>\n )}\n </>\n )}\n />\n {!mandatoryBlank && !mandatory && (\n <Button\n sx={{ '&:hover': { backgroundColor: 'inherit' } }}\n onClick={() => removeApprover(index)}\n >\n <CloseIcon color=\"warning\" sx={{ cursor: 'pointer' }} />\n </Button>\n )}\n </Box>\n )}\n </React.Fragment>\n );\n })}\n <Box sx={{ paddingTop: 1 }}>\n <Button\n sx={{\n ...classes.draftButton,\n fontSize: '12px',\n padding: '4px 12px',\n height: '30px'\n }}\n onClick={handleAddApprover}\n >\n Add approver\n </Button>\n </Box>\n </Box>\n )}\n <Box\n sx={{ ...classes.footerButtons, justifyContent: 'flex-start', paddingLeft: 'unset' }}\n >\n <LoadingButton\n id=\"submit-new-approval\"\n type=\"submit\"\n sx={{ ...sharedClasses.saveButton, width: 'auto' }}\n task={handleSubmitApproval}\n >\n Submit Requisition for Approval\n </LoadingButton>\n </Box>\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n )}\n </Box>\n );\n}\n","import React, { useState, useCallback, useEffect, SetStateAction, Dispatch } from 'react';\nimport Box from '@mui/material/Box';\nimport ApprovalPublicLinksTable from './ApprovalPublicLinksTable';\nimport Api from '../API';\nimport { IApprovalPublicLink, IGetApprovalPublicLinks, TSetApprovalPublicLinkPreferences } from '../ApprovalTemplates/types';\nimport { styles } from '../styles';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { fetchPreferences, updateUiSettings } from '../../helpers/uiPreferencesHelpers';\n\nexport default function ApprovalPublicLinks({\n apiKey,\n userPermissions,\n isPublicLinkDialogOpen,\n setIsPublicLinkDialogOpen\n}: {\n apiKey: string;\n userPermissions: IUserPermissions | undefined;\n isPublicLinkDialogOpen: boolean;\n setIsPublicLinkDialogOpen: Dispatch<SetStateAction<boolean>>;\n}) {\n const [approvalPublicLinks, setApprovalPublicLinks] = useState<IApprovalPublicLink[]>([]);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const [selected, setSelected] = useState<number[]>([]);\n const [globalSelected, setGlobalSelected] = useState([]);\n const [selectAllIsChecked, setSelectAllIsChecked] = useState(false);\n const [selectAllIsIndeterminate, setSelectAllIsIndeterminate] = useState(false);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [totalPages, setTotalPages] = useState(0);\n const [totalApprovalPublicLinks, setTotalApprovalPublicLinks] = useState(0);\n const [sortBy, setSortBy] = useState<string>('created_at');\n const [sortOrder, setSortOrder] = useState<string>('desc');\n const [currentPage, setCurrentPage] = useState(1);\n const [density, setDensity] = useState<string>('Default');\n\n const getFirstApprovalPublicLinksAndPreferences = useCallback(async () => {\n setIsLoading(true);\n try {\n const { res: preferenceData } = await fetchPreferences('approval_public_links');\n const { res: densityData } = await fetchPreferences('universal');\n const preference = preferenceData?.ui_preferences[0];\n const densityPreference = densityData?.ui_preferences[0];\n preference?.sorting?.sortBy && setSortBy(preference.sorting.sortBy);\n preference?.sorting?.sortOrder && setSortOrder(preference.sorting.sortOrder.toLowerCase());\n const sessionPage = sessionStorage.getItem(`approvalPublicLinksTablePage`);\n sessionPage && setCurrentPage(Number(sessionPage));\n preference?.row_count && setRowsPerPage(preference.row_count);\n densityPreference?.columns?.density && setDensity(densityPreference?.columns?.density);\n\n const response = await Api.getApprovalPublicLinks(\n {\n page: sessionPage ? Number(sessionPage) : 1,\n limit: preference?.row_count || rowsPerPage,\n sort: preference?.sorting?.sortBy || 'updated_at',\n sort_order: (preference?.sorting?.sortOrder?.toLowerCase() || 'desc').toUpperCase()\n }\n );\n setApprovalPublicLinks(response.res.requisition_public_links);\n setTotalPages(parseInt(response.resHead['x-total-pages']));\n setTotalApprovalPublicLinks(parseInt(response.resHead['x-total-count']));\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting approval public links',\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n const setUserPreferences: TSetApprovalPublicLinkPreferences = async (limit, sort) => {\n await updateUiSettings(\n {\n source: 'approval_public_links',\n row_count: limit || rowsPerPage,\n sorting: sort\n },\n () => alertError('There was an error saving your preferences')\n );\n };\n\n const alertError = (message: string) => {\n setSnackbar({ message, state: 'error' });\n };\n\n const getApprovalPublicLinks: IGetApprovalPublicLinks = async (page, limit, sort) => {\n setIsLoading(true);\n try {\n const response = await Api.getApprovalPublicLinks(\n {\n page: page || currentPage,\n limit: limit || rowsPerPage,\n sort: sort?.sortBy || sortBy,\n sort_order: (sort?.sortOrder || sortOrder).toUpperCase()\n }\n );\n setApprovalPublicLinks(response.res.requisition_public_links);\n setTotalPages(parseInt(response.resHead['x-total-pages']));\n setTotalApprovalPublicLinks(parseInt(response.resHead['x-total-count']));\n setSelectAllIsChecked(\n response.res.requisition_public_links\n .map((requisitionPublicLink) => requisitionPublicLink.created_by)\n .every((id: number) =>\n globalSelected\n .map((requisitionPublicLink) => requisitionPublicLink.created_by)\n .includes(id)\n )\n );\n setSelectAllIsIndeterminate(\n response.res.requisition_public_links\n .map((requisitionPublicLink) => requisitionPublicLink.created_by)\n .some((id: number) =>\n globalSelected\n .map((requisitionPublicLink) => requisitionPublicLink.created_by)\n .includes(id)\n )\n );\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting approval templates',\n state: 'error'\n });\n } finally {\n if (sort) {\n setUserPreferences(null, sort);\n } else if (limit) {\n setUserPreferences(limit, null);\n }\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n getFirstApprovalPublicLinksAndPreferences();\n }, [apiKey, getFirstApprovalPublicLinksAndPreferences]);\n\n return (\n <Box>\n <ApprovalPublicLinksTable\n approvalPublicLinks={approvalPublicLinks}\n setApprovalPublicLinks={setApprovalPublicLinks}\n getApprovalPublicLinks={getApprovalPublicLinks}\n globalSelected={globalSelected}\n setGlobalSelected={setGlobalSelected}\n selectAllIsChecked={selectAllIsChecked}\n setSelectAllIsChecked={setSelectAllIsChecked}\n selectAllIsIndeterminate={selectAllIsIndeterminate}\n setSelectAllIsIndeterminate={setSelectAllIsIndeterminate}\n setSnackbarState={setSnackbar}\n isLoading={isLoading}\n setIsLoading={setIsLoading}\n selected={selected}\n setSelected={setSelected}\n currentPage={currentPage}\n setCurrentPage={setCurrentPage}\n rowsPerPage={rowsPerPage}\n setRowsPerPage={setRowsPerPage}\n totalPages={totalPages}\n totalApprovalPublicLinks={totalApprovalPublicLinks}\n sortBy={sortBy}\n setSortBy={setSortBy}\n sortOrder={sortOrder}\n setSortOrder={setSortOrder}\n apiKey={apiKey}\n userPermissions={userPermissions}\n density={density}\n isPublicLinkDialogOpen={isPublicLinkDialogOpen}\n setIsPublicLinkDialogOpen={setIsPublicLinkDialogOpen}\n />\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { useState, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport { IApprovalPublicLinkTableProps, IApprovalPublicLink } from '../ApprovalTemplates/types';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport TableSortLabel from '@mui/material/TableSortLabel';\nimport Paper from '@mui/material/Paper';\nimport Pagination from '@mui/material/Pagination';\nimport MenuItem from '@mui/material/MenuItem';\nimport FormControl from '@mui/material/FormControl';\nimport Select from '@mui/material/Select';\nimport Checkbox from '@mui/material/Checkbox';\nimport Button from '@mui/material/Button';\nimport Skeleton from '@mui/material/Skeleton';\nimport IconButton from '@mui/material/IconButton';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport moment from 'moment-timezone';\nimport { classes } from '../../Job/Applications/styles';\nimport { approvalPublicLinkHeaders } from '../config';\nimport Api from '../API';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport NewApprovalPublicLink from '../NewApprovalPublicLink/NewApprovalPublicLinkModal';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport Tooltip from '@mui/material/Tooltip';\n\nconst tablePadding = (density: string) => {\n if (density === 'Default') {\n return '22px';\n } else if (density === 'Compact') {\n return '15px';\n } else {\n return '8px';\n }\n};\n\nexport default function ApprovalPublicLinksTable({\n approvalPublicLinks,\n setApprovalPublicLinks,\n getApprovalPublicLinks,\n globalSelected,\n setGlobalSelected,\n selectAllIsChecked,\n setSelectAllIsChecked,\n selectAllIsIndeterminate,\n setSelectAllIsIndeterminate,\n setSnackbarState,\n isLoading,\n setIsLoading,\n selected,\n setSelected,\n currentPage,\n setCurrentPage,\n rowsPerPage,\n setRowsPerPage,\n totalPages,\n totalApprovalPublicLinks,\n sortBy,\n setSortBy,\n sortOrder,\n setSortOrder,\n apiKey,\n userPermissions,\n density,\n isPublicLinkDialogOpen,\n setIsPublicLinkDialogOpen\n}: IApprovalPublicLinkTableProps) {\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const [selectedApprovalPublicLink, setSelectedApprovalPublicLink] = useState<{\n id: null | number;\n }>({ id: null });\n const [selectAllApprovalPublicLinks, setSelectAllApprovalPublicLinks] = useState<boolean>(false);\n const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n const [tableHovered, setTableHovered] = useState(false);\n const [canScroll, setCanScroll] = useState([false, true]);\n const tableRef = useRef<HTMLDivElement>(null);\n const actionCellRef = useRef(null);\n const titleCellRef = useRef(null);\n const [deleteAlertOpen, setDeleteAlertOpen] = useState(false);\n const [deleteApprovalPublicLinks, setDeleteApprovalPublicLinks] = useState([]);\n const [newApprovalOptions, setNewApprovalOptions] = useState<string[]>([]);\n const [editingApprovalPublicLink, setEditingApprovalPublicLink] =\n useState<IApprovalPublicLink | null>(null);\n const [copied, setCopied] = useState<number>(0);\n\n const handleSelectAll = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newGlobalSelected = globalSelected.filter(\n (currentApp) => !approvalPublicLinks.map((app) => app.id).includes(currentApp.id)\n );\n if (event.target.checked) {\n const selectAllGlobalSelected = [...newGlobalSelected, ...approvalPublicLinks];\n setSelected(selectAllGlobalSelected.map((approvalPublicLink) => approvalPublicLink.id));\n setGlobalSelected(selectAllGlobalSelected);\n setSelectAllIsChecked(true);\n setSelectAllIsIndeterminate(false);\n setSelectAllApprovalPublicLinks(true);\n return;\n }\n setSelected(newGlobalSelected.map((approvalPublicLink) => approvalPublicLink.id));\n setGlobalSelected([]);\n setSelectAllIsChecked(false);\n setSelectAllIsIndeterminate(false);\n setSelectAllApprovalPublicLinks(false);\n };\n\n const clearAllSelection = () => {\n setSelectAllApprovalPublicLinks(false);\n setGlobalSelected([]);\n setSelected([]);\n setSelectAllIsChecked(false);\n setSelectAllIsIndeterminate(false);\n };\n\n const handleDeleteApprovalPublicLinks = async (ids: Array<number>) => {\n setIsLoading(true);\n try {\n const response = await Api.deleteApprovalPublicLinks(\n { requisition_public_link_ids: ids }\n );\n\n if (response.res?.requisition_public_link_ids?.failure?.length) {\n const message =\n response.res.requisition_public_link_ids.success?.length > 0 ||\n response.res.requisition_public_link_ids.failure?.length > 1\n ? `${response.res.requisition_public_link_ids.failure?.length} ${\n response.res.requisition_public_link_ids.failure?.length > 1\n ? 'approval public links were'\n : 'approval public link was'\n } unable to be trashed.`\n : `${\n response.res.requisition_public_link_ids.failure?.length === 1\n ? `Unable to trash approval public link.`\n : ''\n }`;\n setSnackbarState({\n message: message,\n state: 'error'\n });\n } else {\n setSnackbarState({\n message: `Approval public ${\n ids.length > 1 ? 'links were' : 'link was'\n } successfully removed.`,\n state: 'success'\n });\n }\n } catch (error) {\n setSnackbarState({\n message: error?.errors,\n state: 'error'\n });\n } finally {\n setSelected([]);\n setGlobalSelected([]);\n setSelectedApprovalPublicLink({ id: null });\n setActionsAnchorEl(null);\n getApprovalPublicLinks();\n }\n };\n\n const handleSelectOne = (\n event: React.ChangeEvent<HTMLInputElement>,\n approvalPublicLink: IApprovalPublicLink\n ) => {\n let newGlobalSelected = [...globalSelected];\n event.target.checked\n ? newGlobalSelected.push(approvalPublicLink)\n : (newGlobalSelected = newGlobalSelected.filter((app) => app.id !== approvalPublicLink.id));\n const newSelected = newGlobalSelected.map((app) => app.id);\n setSelected(newSelected);\n setGlobalSelected(newGlobalSelected);\n setSelectAllIsChecked(\n approvalPublicLinks.map((app) => app.id).every((id) => newSelected.includes(id))\n );\n setSelectAllIsIndeterminate(\n approvalPublicLinks.map((app) => app.id).some((id) => newSelected.includes(id))\n );\n };\n\n const handleRowsPerPageChange = (selection: number) => {\n if (selection === rowsPerPage) return;\n setRowsPerPage(selection);\n getApprovalPublicLinks(null, selection, null, null, null);\n };\n\n const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n if (newPage === currentPage) return;\n setCurrentPage(newPage);\n sessionStorage.setItem(`approvalPublicLinksTablePage`, newPage);\n getApprovalPublicLinks(newPage, null, null, null, null);\n };\n\n const handleSortChange = (\n event: React.MouseEvent<HTMLSpanElement, MouseEvent>,\n columnValue: string\n ) => {\n const isAsc = sortBy === columnValue && sortOrder === 'asc';\n const newSortOrder = isAsc ? 'desc' : 'asc';\n setSortOrder(newSortOrder);\n setSortBy(columnValue);\n getApprovalPublicLinks(null, null, { sortBy: columnValue, sortOrder: newSortOrder });\n };\n\n const handleScroll = () => {\n if (tableRef.current.scrollLeft < 10) {\n setCanScroll([false, true]);\n } else if (\n tableRef.current.scrollLeft >\n tableRef.current.scrollWidth - tableRef.current.clientWidth - 10\n ) {\n setCanScroll([true, false]);\n } else {\n setCanScroll([true, true]);\n }\n };\n\n const handleScrollLeft = () => {\n tableRef.current.scrollLeft > 360\n ? (tableRef.current.scrollLeft -= 300)\n : (tableRef.current.scrollLeft = 0);\n };\n\n const handleScrollRight = () => {\n tableRef.current.scrollWidth - tableRef.current.clientWidth > 360\n ? (tableRef.current.scrollLeft += 300)\n : (tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth);\n };\n\n function isScrollable(element: HTMLElement) {\n return element && element.scrollWidth > element.clientWidth + 20;\n }\n\n const handleScrollableEnter = () => {\n if (isScrollable(tableRef.current)) setTableHovered(true);\n };\n\n const handleScrollableExit = () => {\n setTableHovered(false);\n };\n\n const handleEditApprovalPublicLink = (publicLink: IApprovalPublicLink) => {\n setIsPublicLinkDialogOpen(true);\n setEditingApprovalPublicLink(publicLink);\n };\n\n const handleCopy = (id: number) => {\n setCopied(id);\n setTimeout(() => setCopied(0), 3000);\n };\n\n const headerStyle = (name: string) => {\n switch (name) {\n case 'name':\n return {\n ...classes.sticky,\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible),\n minWidth: '200px',\n left: '58px'\n };\n case 'approval_template_name':\n return { minWidth: '210px' };\n case 'created_by':\n return { minWidth: '140px' };\n default:\n return { minWidth: '90px' };\n }\n };\n\n return (\n <Box>\n <Box sx={{ position: 'relative' }}>\n <Box sx={classes.arrowsContainer}>\n <Box\n onClick={handleScrollLeft}\n onMouseEnter={handleScrollableEnter}\n sx={{\n ...classes.leftArrow,\n ...(tableHovered && canScroll[0] && classes.showArrows),\n left: `${titleCellRef.current?.getBoundingClientRect().right}px`,\n top: 0\n }}\n id=\"left-arrow\"\n >\n <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n <Box sx={classes.arrowsContainer}>\n <Box\n onMouseEnter={handleScrollableEnter}\n onClick={handleScrollRight}\n sx={{\n ...classes.rightArrow,\n ...(tableHovered && canScroll[1] && classes.showArrows),\n left: `${actionCellRef.current?.getBoundingClientRect().left - 40}px`,\n top: 0\n }}\n id=\"right-arrow\"\n >\n <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n <TableContainer\n sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}\n component={Paper}\n onMouseEnter={handleScrollableEnter}\n onMouseLeave={handleScrollableExit}\n ref={tableRef}\n onScroll={handleScroll}\n >\n <Table\n sx={{\n ...classes.tableWrapper,\n 'th, td, tr, thead': { padding: `${tablePadding(density)} 10px` }\n }}\n aria-label=\"approval PublicLinks\"\n >\n <TableHead>\n <TableRow>\n <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n <Checkbox\n id=\"select-all-checkbox\"\n sx={classes.checkbox}\n indeterminate={!selectAllIsChecked && selectAllIsIndeterminate}\n checked={selectAllIsChecked}\n onChange={handleSelectAll}\n inputProps={{\n 'aria-label': 'select all approval PublicLinks'\n }}\n />\n </TableCell>\n {approvalPublicLinkHeaders.map((header) => (\n <TableCell\n key={header.name}\n sx={headerStyle(header.name)}\n ref={header.name === 'name' ? titleCellRef : null}\n >\n <TableSortLabel\n active={sortBy === header.name}\n direction={sortBy === header.name ? (sortOrder as 'asc' | 'desc') : 'asc'}\n onClick={(event) => handleSortChange(event, header.name)}\n sx={header.sortable ? classes.sortable : null}\n disabled={!header.sortable}\n id={`${header.name}-sort-label-approval-public-links`}\n >\n {header.label}\n </TableSortLabel>\n </TableCell>\n ))}\n <TableCell\n sx={{\n ...classes.attachmentsHeader,\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n />\n </TableRow>\n </TableHead>\n <TableBody>\n {approvalPublicLinks &&\n !isLoading &&\n approvalPublicLinks.map((approvalPublicLink: IApprovalPublicLink, index) => {\n const updatedAt = approvalPublicLink.updated_at\n ? moment\n .tz(approvalPublicLink.updated_at, timeZoneString)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${approvalPublicLink.id}-${line}`}>{line}</div>)\n : '-';\n return (\n <TableRow key={approvalPublicLink.id}>\n <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n <Checkbox\n id={`select-checkbox-${approvalPublicLink.id}`}\n sx={classes.checkbox}\n checked={selected.includes(approvalPublicLink.id)}\n onChange={(event) => handleSelectOne(event, approvalPublicLink)}\n inputProps={{\n 'aria-label': `select approval public link ${approvalPublicLink.name}`\n }}\n />\n </TableCell>\n <TableCell\n sx={{\n ...classes.sticky,\n minWidth: '200px',\n left: '58px',\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n >\n <Box\n sx={{\n '& a': {\n color: '#666666',\n fontWeight: 'bold',\n '&:hover': {\n textDecoration: 'none'\n }\n }\n }}\n >\n <a className=\"approval-public-link-title-link\">\n {approvalPublicLink.name || '-'}\n </a>\n </Box>\n </TableCell>\n <TableCell>\n <Box sx={classes.linkContainer}>\n <>\n <a\n href={approvalPublicLink?.public_link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <Box id=\"public-link-external-link\" sx={classes.link}>\n {approvalPublicLink.public_link}\n </Box>\n </a>\n <CopyToClipboard\n text={approvalPublicLink?.public_link}\n onCopy={() => handleCopy(approvalPublicLink.id)}\n >\n <Button sx={classes.copyButton} id=\"copy-link-public-link-button\">\n {copied === approvalPublicLink?.id ? 'Copied!' : 'Copy'}\n </Button>\n </CopyToClipboard>\n </>\n </Box>\n </TableCell>\n <TableCell>{approvalPublicLink.approval_template_name}</TableCell>\n <TableCell>{approvalPublicLink.created_by}</TableCell>\n <TableCell\n sx={{\n ...classes.attachmentsCell,\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n ref={actionCellRef}\n >\n <Box sx={classes.actionItems}>\n <Tooltip placement=\"top\" title=\"Edit\" arrow>\n <IconButton\n onClick={() => handleEditApprovalPublicLink(approvalPublicLink)}\n className=\"approval-public-link-edit-button\"\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n <Tooltip placement=\"top\" title=\"Trash\" arrow>\n <IconButton\n onClick={(e) => {\n setDeleteApprovalPublicLinks([approvalPublicLink.id]);\n setDeleteAlertOpen(true);\n }}\n className=\"approval-public-link-delete-button\"\n >\n <DeleteIcon sx={{ color: '#E37D7A !important' }} />\n </IconButton>\n </Tooltip>\n </Box>\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n {!isLoading && approvalPublicLinks?.length === 0 && (\n <Box sx={classes.noApplications}>No Approval PublicLinks found</Box>\n )}\n {isLoading && (\n <>\n {[...Array(10)].map((_, index) => (\n <Box key={index} sx={classes.skeletonContainer}>\n <Skeleton animation=\"wave\" height={60} />\n </Box>\n ))}\n </>\n )}\n </TableContainer>\n </Box>\n <Box sx={classes.paginationParent}>\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n sx={classes.rowSelect}\n value={rowsPerPage}\n onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" value={10}>\n 10\n </MenuItem>\n <MenuItem id=\"second-rpp-item\" value={20}>\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer}>\n <Pagination\n id=\"pagination-menu\"\n count={totalPages}\n page={currentPage}\n siblingCount={0}\n onChange={handlePageChange}\n sx={classes.pagination}\n />\n <span id=\"total-jobs\">{totalApprovalPublicLinks} Total</span>\n </Box>\n </Box>\n <Box\n id=\"selected-tooltip\"\n sx={\n globalSelected?.length > 0\n ? { ...classes.selectedTooltip, ...classes.fadeIn }\n : { ...classes.selectedTooltip, ...classes.fadeOut }\n }\n >\n <Box\n id=\"selected-tooltip-text\"\n sx={{\n display: 'flex',\n alignItems: 'center',\n ...classes.selectedTooltipText\n }}\n >\n {globalSelected.length === totalApprovalPublicLinks\n ? `All ${globalSelected?.length} approval public links are selected`\n : `${globalSelected?.length} selected`}\n <IconButton\n size=\"small\"\n sx={{\n ...classes.selectedTooltipText,\n ...classes.selectedAllTooltipText,\n marginLeft: 1,\n color: '#666666'\n }}\n onClick={clearAllSelection}\n >\n Clear selection\n </IconButton>\n </Box>\n <Box sx={classes.selectedTooltipButtonsContainer}>\n <Button\n variant=\"contained\"\n sx={classes.selectedTooltipButton}\n onClick={() => {\n setDeleteApprovalPublicLinks(selected);\n setDeleteAlertOpen(true);\n }}\n >\n Trash\n </Button>\n </Box>\n </Box>\n <GenericDialog\n isDialogOpen={deleteAlertOpen}\n setDialogOpen={setDeleteAlertOpen}\n title={\n deleteApprovalPublicLinks.length > 1\n ? 'Trash approval public links?'\n : 'Trash approval public link?'\n }\n description={\n deleteApprovalPublicLinks.length > 1\n ? 'Are you sure want to trash these approval public links?'\n : 'Are you sure want to trash this approval public link?'\n }\n buttonCallback={() => {\n setDeleteAlertOpen(false);\n handleDeleteApprovalPublicLinks(deleteApprovalPublicLinks);\n setDeleteApprovalPublicLinks([]);\n }}\n callbackLoading={false}\n buttonText=\"Trash\"\n url=\"\"\n />\n <NewApprovalPublicLink\n apiKey={apiKey}\n newApprovalOptions={newApprovalOptions}\n setNewApprovalOptions={setNewApprovalOptions}\n isPublicLinkDialogOpen={isPublicLinkDialogOpen}\n setIsPublicLinkDialogOpen={setIsPublicLinkDialogOpen}\n getApprovalPublicLinks={getApprovalPublicLinks}\n setSnackbarState={setSnackbarState}\n editingApprovalPublicLink={editingApprovalPublicLink}\n setEditingApprovalPublicLink={setEditingApprovalPublicLink}\n />\n </Box>\n );\n}\n","import React, { useRef, useState, useEffect, useCallback } from 'react';\nimport { styles } from '../styles';\nimport { Box, Skeleton, Stack, IconButton, Tabs, Tab } from '@mui/material';\nimport { ArrowCircleLeft as ArrowCircleLeftIcon } from '@mui/icons-material';\nimport Questions from '../Questions/Questions';\nimport { IApprovalTemplate } from '../types';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { getPermissions } from '../../../shared/permissionHelpers';\nimport Api from '../API';\nimport { IPermissions } from '../../Jobs/types';\n\nconst getTabNumber = () => {\n return 0;\n};\n\nconst BASE_URL = window.location.origin;\n\nexport default function ApprovalTemplate({\n apiKey,\n approvalTemplateId,\n entityId,\n enableEmailTemplateFields\n}: {\n apiKey: string;\n approvalTemplateId: number;\n entityId: number;\n enableEmailTemplateFields?: boolean;\n}) {\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n const [tabValue, setTabValue] = useState(getTabNumber());\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [approvalTemplateData, setApprovalTemplateData] = useState<IApprovalTemplate>({});\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const [userPermissions, setUserPermissions] = useState<Record<string, Record<string, boolean>>>(\n {}\n );\n\n const headerRefs = useRef<HTMLDivElement[]>([]);\n\n const getUserPermissions = useCallback(async () => {\n try {\n const data = await getPermissions(apiKey);\n const allRoles: Record<string, Record<string, boolean>> = {};\n data.roles.forEach((role: IPermissions) =>\n role.feature_groups.forEach((group) => {\n !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n })\n );\n setUserPermissions(allRoles);\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting permissions',\n state: 'error'\n });\n }\n }, [apiKey]);\n\n const getApprovalTemplate = useCallback(async () => {\n setIsLoading(true);\n try {\n const data = await Api.getApprovalTemplate(approvalTemplateId);\n setApprovalTemplateData(data.res);\n } catch (err) {\n setSnackbar({\n message: `Failed to fetch approval template data, ${err}`,\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n }, [approvalTemplateId]);\n\n useEffect(() => {\n setIndicatorWidth(headerRefs.current[tabValue].clientWidth - 32);\n }, [tabValue]);\n\n useEffect(() => {\n getApprovalTemplate();\n getUserPermissions();\n }, [getApprovalTemplate, getUserPermissions]);\n\n return (\n <Box sx={styles.jobPageContainer}>\n {isLoading ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Box sx={styles.jobPageHeader}>\n <h1>{approvalTemplateData.name}</h1>\n </Box>\n )}\n <Box sx={styles.tabsContainer}>\n <Tabs\n value={0}\n aria-label=\"Edit Approval Template Fields\"\n sx={{\n ...styles.tabs,\n '& .MuiTabs-indicator': { ...styles.tabIndicator, maxWidth: indicatorWidth + 'px' }\n }}\n >\n <Tab ref={(el) => (headerRefs.current[0] = el)} label=\"Add/Edit fields\" />\n </Tabs>\n </Box>\n {isLoading ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Box sx={styles.backButton}>\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n onClick={() => {\n window.location.href = `${BASE_URL}/admin/requisitions?templates`;\n }}\n >\n <IconButton>\n <ArrowCircleLeftIcon />\n </IconButton>\n <Box>Back to approval templates</Box>\n </Stack>\n </Box>\n )}\n <Box>\n {isLoading ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Questions\n apiKey={apiKey}\n entityId={entityId}\n approvalTemplateId={approvalTemplateId}\n approvalTemplateData={approvalTemplateData}\n setApprovalTemplateData={setApprovalTemplateData}\n getApprovalTemplate={getApprovalTemplate}\n userPermissions={userPermissions}\n enableEmailTemplateFields={enableEmailTemplateFields}\n />\n )}\n </Box>\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Autocomplete, Box, TextField } from '@mui/material';\nimport { styles } from './styles';\nimport FormCheckboxGroup from '../../Components/CustomUIElements/FormCheckboxGroup';\nimport { approvalTemplateFormOptions } from '../config';\nimport { IApprovalTemplateOptions } from '../types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\n\nexport default function AdvancedTab({\n options,\n setOptions,\n emailTemplates,\n approvalTemplateEmail,\n setApprovalTemplateEmail,\n enableEmailTemplateFields\n}: {\n options: IApprovalTemplateOptions | null;\n setOptions: Dispatch<SetStateAction<IApprovalTemplateOptions | null>>;\n emailTemplates: [string, Array<{ id: number; name: string }>][];\n approvalTemplateEmail: number | null;\n setApprovalTemplateEmail: Dispatch<SetStateAction<number | null>>;\n enableEmailTemplateFields?: boolean;\n}) {\n const templates = emailTemplates.reduce(\n (acc, currVal) => {\n const entity: string = currVal[0];\n const arrayOfTemplates: { id: number; name: string }[] = currVal[1];\n return [...acc, ...arrayOfTemplates.map((template) => ({ ...template, entity }))];\n },\n [] as { id: number; name: string; entity: string }[]\n );\n\n const updatedApprovalTemplateFormOptions = enableEmailTemplateFields\n ? [\n ...approvalTemplateFormOptions,\n {\n id: 'enable_declaration_of_conflict_of_interest',\n name: 'Enable Declaration of Conflict of Interest'\n }\n ]\n : approvalTemplateFormOptions;\n\n return (\n <Box sx={styles.tabContent}>\n <Box sx={styles.tabContentTitle}>Advanced settings</Box>\n <Box sx={styles.tabContentBody}>\n <FormCheckboxGroup\n options={updatedApprovalTemplateFormOptions}\n defaultValues={options}\n onChange={(value: IApprovalTemplateOptions) => setOptions(value)}\n color={'#838383'}\n />\n </Box>\n <Box sx={{ ...styles.tabContentBody, marginTop: 3 }}>\n <Autocomplete\n disablePortal\n options={templates}\n groupBy={(option) => option.entity}\n getOptionLabel={(option) => option.name || ''}\n value={templates.find((e) => e.id === approvalTemplateEmail) || null}\n onChange={(event, value) =>\n value ? setApprovalTemplateEmail(value.id) : setApprovalTemplateEmail(null)\n }\n sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n sx={{ input: { '&::placeholder': { opacity: 1 } } }}\n {...params}\n label=\"Selected default email template\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"(Use default template)\"\n />\n )}\n />\n </Box>\n </Box>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { Box, Modal, Divider, Stack, Button } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { styles } from './styles';\nimport TemplateTitleTab from './TemplateTitleTab';\nimport DefaultApproversTab from './DefaultApproversTab';\nimport AdvancedTab from './AdvancedTab';\nimport FormTitleTab from './FormTitleTab';\nimport {\n IApprovalTemplate,\n IApprovalTemplateOptions,\n IApprovalManagers,\n IApprovalTemplateFields\n} from '../types';\nimport { optionsBooleanValues, optionsNumericValues, settingTabs } from '../config';\nimport Api from '../API';\nimport LoadingButton from '../../Components/Buttons/LoadingButton';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\nimport { emailIsValid } from '../../Components/Utilities/emailIsValid';\n\nconst BASE_URL = window.location.origin;\n\nexport default function ApprovalTemplateSettings({\n setModalsOpen,\n modalsOpen,\n approvalTemplateData,\n getApprovalTemplate,\n entityDefaultApprovers,\n questions,\n setSnackbar,\n action,\n enableEmailTemplateFields\n}: {\n modalsOpen: boolean;\n setModalsOpen: () => void;\n approvalTemplateData?: IApprovalTemplate;\n getApprovalTemplate?: () => Promise<void>;\n entityDefaultApprovers?: string[];\n questions?: IApprovalTemplateFields[];\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n action?: string;\n enableEmailTemplateFields?: boolean;\n}) {\n const [templateName, setTemplateName] = useState<string>(approvalTemplateData?.name || '');\n const [approvalManagers, setApprovalManagers] = useState<IApprovalManagers[]>([]);\n const [selectedQuestion, setSelectedQuestion] = useState<number | null>(null);\n const [tabNumber, setTabNumber] = useState<number>(0);\n const [templateApprovers, setTemplateApprovers] = useState<string[]>(['']);\n const [approvalTemplateEmail, setApprovalTemplateEmail] = useState<number | null>(null);\n const [options, setOptions] = useState<IApprovalTemplateOptions | null>(null);\n const [emailTemplates, setEmailTemplates] = useState<\n [string, Array<{ id: number; name: string }>][]\n >([]);\n const [tempErrorMessage, setTempErrorMessage] = useState<string | null>(null);\n const [invalidEmailIndex, setInvalidEmailIndex] = useState<number[]>([]);\n\n useEffect(() => {\n const isMounted = { current: true };\n getApprovers(isMounted);\n getEmailTemplates(isMounted);\n return () => {\n isMounted.current = false;\n };\n }, [modalsOpen]);\n\n useEffect(() => {\n setTemplateName(approvalTemplateData?.name || '');\n setOptions(optionsBooleanValues(approvalTemplateData?.config) || null);\n setApprovalTemplateEmail(approvalTemplateData?.email_template_id || null);\n setSelectedQuestion(\n approvalTemplateData?.config?.approval_form_title_position === null\n ? null\n : Number(approvalTemplateData?.config?.approval_form_title_position)\n );\n if (approvalTemplateData?.config?.default_approvers) {\n setTemplateApprovers(\n approvalTemplateData.config.default_approvers.split(',').map((email) => email.trim())\n );\n } else if (approvalTemplateData?.entity_default_approver) {\n setTemplateApprovers(\n approvalTemplateData.entity_default_approver.map((approver) => {\n return approver.required ? `*${approver.email}` : approver.email;\n })\n );\n } else if (entityDefaultApprovers) {\n setTemplateApprovers(entityDefaultApprovers);\n } else {\n setTemplateApprovers(['']);\n }\n }, [approvalTemplateData, entityDefaultApprovers]);\n\n async function getApprovers(isMounted: { current: boolean }) {\n try {\n const data = await Api.getApprovalManagers({\n override_limit: true,\n limit: 2000,\n sort: 'name',\n sort_order: 'asc'\n });\n let defaultApprovers;\n if (entityDefaultApprovers) {\n defaultApprovers = entityDefaultApprovers?.map((approver, index) => {\n return { email: approver, name: approver, id: index };\n });\n } else\n defaultApprovers = approvalTemplateData?.entity_default_approver?.map((approver, index) => {\n return {\n email: approver.required ? `*${approver.email}` : approver.email,\n name: approver.email,\n id: index\n };\n });\n\n const approvalOptions = defaultApprovers?.length\n ? [...data.res.requisition_managers, ...defaultApprovers]\n : data.res.requisition_managers;\n\n if (isMounted.current) setApprovalManagers(approvalOptions);\n } catch (err) {\n if (isMounted.current)\n setSnackbar({\n message: 'Failed to fetch approvers list',\n state: 'error'\n });\n }\n }\n\n const validateEmail = () => {\n if (!templateApprovers) return false;\n const invalid = [];\n templateApprovers.map((approver, index) => {\n if (!emailIsValid(approver) && approver !== '' && approver !== '*') {\n invalid.push(index);\n }\n });\n if (invalid.length > 0) {\n setTabNumber(1);\n setInvalidEmailIndex(invalid);\n return false;\n } else {\n return true;\n }\n };\n\n async function getEmailTemplates(isMounted: { current: boolean }) {\n try {\n const data = await Api.getEmailTemplates();\n if (isMounted.current) setEmailTemplates(data.res.email_templates);\n } catch (err) {\n if (isMounted.current)\n setSnackbar({\n message: 'Failed to fetch email templates',\n state: 'error'\n });\n }\n }\n\n const approvalTemplateObj = {\n name: templateName,\n default_approvers: templateApprovers.join(','),\n ...(options?.hide_position_title\n ? { approval_form_title_position: selectedQuestion || 0 }\n : {}),\n email_template_id: approvalTemplateEmail,\n for_application: 1,\n ...optionsNumericValues(options)\n };\n\n const handleSubmitAction = async () => {\n if (!handleValidateTitle() || !validateEmail()) return;\n\n try {\n if (approvalTemplateData) {\n if (action === 'Clone') {\n // for cloning\n const response = await Api.cloneApprovalTemplate(approvalTemplateData?.id, {\n requisition_form: approvalTemplateObj\n });\n if (response.res.success) {\n setSnackbar({\n message: response.res.success,\n state: 'success'\n });\n }\n if (response.res.redirect_url) {\n const fieldsUrl = response.res.redirect_url.replace('edit', 'fields');\n window.location.href = `${BASE_URL}${fieldsUrl}`;\n }\n } else {\n // for editing and settings\n const approvalTemplateId = approvalTemplateData?.id;\n await Api.updateApprovalTemplate(approvalTemplateId, {\n requisition_form: approvalTemplateObj\n });\n setSnackbar({\n message: 'Approval template updated',\n state: 'success'\n });\n setModalsOpen();\n }\n } else {\n // for new approval template\n const response = await Api.createApprovalTemplate({\n requisition_form: approvalTemplateObj\n });\n if (response.res.id) {\n setSnackbar({\n message: 'Approval template has been created',\n state: 'success'\n });\n }\n const path = response.res.link;\n window.location.href = `${BASE_URL}${path}`;\n }\n // }\n } catch (error) {\n setSnackbar({\n message: `Failed to ${buttonName().toLowerCase()} approval template, ${error}`,\n state: 'error'\n });\n } finally {\n getApprovalTemplate && getApprovalTemplate();\n }\n };\n\n const handleNextAction = () => {\n switch (tabNumber) {\n case 0:\n if (!handleValidateTitle()) return;\n break;\n case 1:\n if (!validateEmail()) return;\n break;\n }\n if (tabNumber === 1) {\n setInvalidEmailIndex([]);\n }\n setTabNumber((prev) => prev + 1);\n };\n\n const handleValidateTitle = () => {\n setTempErrorMessage(null);\n if (tabNumber === 0 && !templateName) {\n setTempErrorMessage('This field is required');\n return false;\n } else {\n return true;\n }\n };\n\n const modalTitle = () => {\n if (action) {\n return action;\n } else if (approvalTemplateData) {\n return 'Settings';\n } else {\n return 'Create';\n }\n };\n\n const buttonName = () => {\n if (!approvalTemplateData && !action) {\n return 'Create';\n } else if (action === 'Clone') {\n return 'Clone';\n } else {\n return 'Save';\n }\n };\n\n return (\n <Modal\n open={modalsOpen}\n aria-labelledby=\"approval-template-settings-modal\"\n onClose={setModalsOpen}\n >\n <Box sx={styles.actionsModal}>\n <Box sx={styles.modalTabsContainer}>\n <Box id=\"approval-template-settings-modal-title\" sx={styles.modalHeader}>\n {modalTitle()}\n </Box>\n {settingTabs.map((tab, index) => {\n if (tab === 'Approval form title' && !options?.hide_position_title) {\n return;\n } else {\n return (\n <Stack\n sx={{\n ...styles.tabTitle,\n backgroundColor: index === tabNumber ? 'rgba(8,77,109,0.07)' : 'transparent',\n fontWeight: index === tabNumber ? 'bold' : ''\n }}\n key={index}\n >\n <Stack sx={styles.hoverTabTitle} onClick={() => setTabNumber(index)}>\n {tab}\n </Stack>\n </Stack>\n );\n }\n })}\n </Box>\n <Divider orientation=\"vertical\" flexItem />\n <Box sx={styles.modalFormContainer}>\n <Box sx={styles.closeIconContainer}>\n <CloseIcon onClick={setModalsOpen} sx={styles.closeIcon} />\n </Box>\n {tabNumber === 0 && (\n <TemplateTitleTab\n templateName={templateName}\n setTemplateName={setTemplateName}\n tempErrorMessage={tempErrorMessage}\n />\n )}\n {tabNumber === 1 && (\n <DefaultApproversTab\n approvalManagers={approvalManagers}\n templateApprovers={templateApprovers}\n setTemplateApprovers={setTemplateApprovers}\n invalidEmailIndex={invalidEmailIndex}\n setInvalidEmailIndex={setInvalidEmailIndex}\n />\n )}\n {tabNumber === 2 && (\n <AdvancedTab\n options={options}\n setOptions={setOptions}\n emailTemplates={emailTemplates}\n approvalTemplateEmail={approvalTemplateEmail}\n setApprovalTemplateEmail={setApprovalTemplateEmail}\n enableEmailTemplateFields={enableEmailTemplateFields}\n />\n )}\n {tabNumber === 3 && options?.hide_position_title && (\n <FormTitleTab\n questionsList={questions?.filter((question) => question.enabled)}\n selectedQuestion={selectedQuestion}\n setSelectedQuestion={setSelectedQuestion}\n action={buttonName()}\n />\n )}\n <Box sx={styles.modalActions}>\n {modalTitle() === 'Create' || modalTitle() === 'Clone' ? (\n (options?.hide_position_title && tabNumber === 3) ||\n (!options?.hide_position_title && tabNumber === 2) ? (\n <LoadingButton\n id=\"save-approval-template-settings-button\"\n type=\"submit\"\n task={handleSubmitAction}\n sx={styles.modalSaveButton}\n >\n {buttonName()}\n </LoadingButton>\n ) : (\n <Button\n id=\"next-approval-template-settings-button\"\n type=\"button\"\n onClick={handleNextAction}\n sx={styles.modalSaveButton}\n >\n Next\n </Button>\n )\n ) : (\n <LoadingButton\n id=\"save-approval-template-settings-button\"\n type=\"submit\"\n task={handleSubmitAction}\n sx={styles.modalSaveButton}\n >\n {buttonName()}\n </LoadingButton>\n )}\n </Box>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React from 'react';\nimport { Autocomplete, Box, FormControlLabel, Switch, TextField, Typography } from '@mui/material';\nimport { Close as CloseIcon } from '@mui/icons-material';\nimport { styles } from '../styles';\nimport { IApprovalManagers } from '../types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\n\nexport default function ApproversListAutoComplete({\n approvalManagers,\n approver,\n index,\n handleEmailChange,\n removeApprover,\n handleMandatoryButton\n}: {\n approvalManagers: IApprovalManagers[];\n approver: string;\n index: number;\n handleEmailChange: (index: number, value: IApprovalManagers | null) => void;\n removeApprover: (index: number) => void;\n handleMandatoryButton: (index: number) => void;\n}) {\n const mandatory = approver.includes('*');\n let value = approvalManagers.find((manager) => approver === manager.email);\n if (!value) {\n const email = mandatory ? approver : `*${approver}`;\n value = approvalManagers.find((manager) => email === `*${manager.email}`);\n if (!value) value = approvalManagers.find((manager) => email === manager.email);\n }\n\n return (\n <Box sx={styles.approverItemList}>\n <Autocomplete\n disablePortal\n options={approvalManagers}\n getOptionLabel={(option) => option.email}\n id=\"default-approvers\"\n value={value || null}\n onChange={(event, value) => handleEmailChange(index, value)}\n sx={{ width: '290px', marginTop: '24px', ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Email\" InputLabelProps={{ shrink: true }} />\n )}\n />\n <CloseIcon\n color=\"warning\"\n onClick={() => removeApprover(index)}\n sx={{ cursor: 'pointer', marginRight: 'auto' }}\n />\n <FormControlLabel\n control={\n <Switch\n sx={mandatory ? styles.switchActive : styles.switch}\n checked={mandatory}\n onChange={() => handleMandatoryButton(index)}\n />\n }\n label={\n <Typography\n sx={{ ...styles.mandatoryLabel, color: `${mandatory ? 'black' : '#939393'}` }}\n >\n Mandatory\n </Typography>\n }\n />\n </Box>\n );\n}\n","import React from 'react';\nimport { Box, FormControlLabel, Switch, Typography } from '@mui/material';\nimport { Close as CloseIcon } from '@mui/icons-material';\nimport { styles } from '../styles';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\n\nexport default function ApproversListText({\n approver,\n index,\n handleEmailInput,\n removeApprover,\n handleMandatoryButton,\n invalidEmail\n}: {\n approver: string;\n index: number;\n handleEmailInput: (index: number, value: string) => void;\n removeApprover: (index: number) => void;\n handleMandatoryButton: (index: number) => void;\n invalidEmail?: boolean;\n}) {\n const mandatory = approver.includes('*');\n\n return (\n <Box sx={styles.approverItemList}>\n <FormTextField\n label=\"Email\"\n onChange={(e) => {\n handleEmailInput(index, e.target.value);\n }}\n value={mandatory ? approver.slice(1) : approver}\n styles={{ width: '290px' }}\n error={invalidEmail ? 'Please enter a proper email address' : ''}\n />\n <CloseIcon\n color=\"warning\"\n onClick={() => removeApprover(index)}\n sx={{ cursor: 'pointer', marginRight: 'auto' }}\n />\n {approver && (\n <FormControlLabel\n control={\n <Switch\n sx={mandatory ? styles.switchActive : styles.switch}\n checked={mandatory}\n onChange={() => handleMandatoryButton(index)}\n />\n }\n label={\n <Typography\n sx={{ ...styles.mandatoryLabel, color: `${mandatory ? 'black' : '#939393'}` }}\n >\n Mandatory\n </Typography>\n }\n />\n )}\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, Button, Stack } from '@mui/material';\nimport { styles } from './styles';\nimport { IApprovalManagers } from '../types';\nimport ApproversListAutoComplete from './ApproversListAutoComplete';\nimport ApproversListText from './ApproversListText';\n\nexport default function DefaultApproversTab({\n approvalManagers,\n templateApprovers,\n setTemplateApprovers,\n invalidEmailIndex,\n setInvalidEmailIndex\n}: {\n approvalManagers: IApprovalManagers[];\n templateApprovers: string[];\n setTemplateApprovers: Dispatch<SetStateAction<string[]>>;\n invalidEmailIndex: number[];\n setInvalidEmailIndex: Dispatch<SetStateAction<number[]>>;\n}) {\n const handleAddApprover = () => {\n setTemplateApprovers([...templateApprovers, '']);\n };\n const removeApprover = (i: number) => {\n const newApprovers = [...templateApprovers];\n const newInvalidEmailIndex = [...invalidEmailIndex];\n newApprovers.splice(i, 1);\n setTemplateApprovers(newApprovers);\n if (newInvalidEmailIndex.includes(i)) {\n newInvalidEmailIndex.splice(newInvalidEmailIndex.indexOf(i), 1);\n setInvalidEmailIndex(newInvalidEmailIndex);\n }\n };\n const handleMandatoryButton = (i: number) => {\n const newApprovers = [...templateApprovers];\n const currentApprover = newApprovers[i];\n if (currentApprover.includes('*')) {\n newApprovers[i] = currentApprover.slice(1);\n setTemplateApprovers(newApprovers);\n } else {\n newApprovers[i] = '*' + currentApprover;\n setTemplateApprovers(newApprovers);\n }\n };\n\n const handleEmailChange = (i: number, value: IApprovalManagers | null) => {\n const newApprovers = [...templateApprovers];\n newApprovers[i] = value ? value.email : '';\n setTemplateApprovers(newApprovers);\n };\n\n const handleEmailInput = (i: number, value: string) => {\n const newApprovers = [...templateApprovers];\n newApprovers[i] = value;\n setTemplateApprovers(newApprovers);\n };\n\n return (\n <Box sx={styles.tabContent}>\n <Box sx={styles.tabContentTitle}>Default approvers</Box>\n {approvalManagers.length === 0 ? (\n <Stack sx={{ padding: 2, rowGap: 2 }}>\n {templateApprovers.map((approver, index) => (\n <ApproversListText\n key={index}\n approvalManagers={approvalManagers}\n approver={approver}\n index={index}\n handleEmailInput={handleEmailInput}\n removeApprover={removeApprover}\n handleMandatoryButton={handleMandatoryButton}\n invalidEmail={invalidEmailIndex && invalidEmailIndex.includes(index)}\n />\n ))}\n </Stack>\n ) : (\n <Stack sx={{ padding: 2, rowGap: 2 }}>\n {templateApprovers.map((approver, index) => (\n <ApproversListAutoComplete\n key={index}\n approvalManagers={approvalManagers}\n approver={approver}\n index={index}\n handleEmailChange={handleEmailChange}\n removeApprover={removeApprover}\n handleMandatoryButton={handleMandatoryButton}\n />\n ))}\n </Stack>\n )}\n <Box sx={{ padding: '10px 0 0 20px' }}>\n <Button\n sx={{ ...styles.modalSaveButton, fontSize: '12px', padding: '4px 12px' }}\n onClick={handleAddApprover}\n >\n Add approver\n </Button>\n </Box>\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, Button } from '@mui/material';\nimport { styles } from './styles';\nimport { IApprovalTemplateFields } from '../types';\nimport DoneIcon from '@mui/icons-material/Done';\n\nexport default function FormTitleTab({\n questionsList,\n selectedQuestion,\n setSelectedQuestion,\n action\n}: {\n questionsList?: IApprovalTemplateFields[];\n selectedQuestion: number | null;\n setSelectedQuestion: Dispatch<SetStateAction<number | null>>;\n action: string;\n}) {\n return (\n <Box sx={styles.tabContent}>\n <Box sx={styles.tabContentTitle}>Approval form title selection</Box>\n {action === 'Create' ? (\n <Box sx={styles.tabContentBody}>\n Once an approval form has been created from this template, the title of the form will be\n selectable from your created questions.\n <br />\n <br />\n All approval forms using this template will use the response to your selected question as\n the title.\n <br />\n <br />\n When you a ready, please press 'create' below to create your approval template.\n <br />\n <br />\n You will see a selectable checkbox underneath any question you create allowing you to make\n that question the title for the approval form.\n </Box>\n ) : (\n <Box sx={styles.tabContentBody}>\n All approvals using this approval template will use your selected question's response\n as the title.\n </Box>\n )}\n <Box sx={{ marginTop: 1 }}>\n {questionsList && questionsList.length > 0 ? (\n questionsList.map(\n (question, index) =>\n question.enabled && (\n <Box\n key={question.id}\n sx={\n index === selectedQuestion\n ? styles.questionListItemSelected\n : styles.questionListItem\n }\n >\n Question {index + 1}: {question.title}\n <Button\n sx={{ ...styles.selectButton, padding: '0px 12px', fontSize: '12px' }}\n onClick={() => setSelectedQuestion(index)}\n >\n {index === selectedQuestion ? 'Selected ' : 'Select'}\n {index === selectedQuestion && (\n <DoneIcon sx={{ fontSize: '12px', marginLeft: '2px', marginBottom: '2px' }} />\n )}\n </Button>\n </Box>\n )\n )\n ) : (\n <Box sx={{ padding: 6, marginTop: 2, fontWeight: 'bold', color: '#939393' }}>\n You have no questions set up on this approval template\n </Box>\n )}\n </Box>\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport Box from '@mui/material/Box';\nimport { styles } from './styles';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\n\nexport default function TemplateTitleTab({\n templateName,\n setTemplateName,\n tempErrorMessage\n}: {\n templateName: string;\n setTemplateName: Dispatch<SetStateAction<string>>;\n tempErrorMessage: string | null;\n}) {\n return (\n <Box sx={styles.tabContent}>\n <Box sx={styles.tabContentTitle}>Approval template title</Box>\n <Box sx={styles.tabContentBody}>\n <FormTextField\n onChange={(e) => setTemplateName(e.target.value)}\n label=\"Title\"\n value={templateName ? templateName : ''}\n required\n styles={{ width: '350px' }}\n />\n {tempErrorMessage && <Box sx={styles.tabContentError}>{tempErrorMessage}</Box>}\n </Box>\n </Box>\n );\n}\n","import React, { useState, useEffect, useCallback, Dispatch, SetStateAction } from 'react';\nimport Box from '@mui/material/Box';\nimport { defaultFilters, dropdownSetting, dropdownOptions } from './config';\nimport ApprovalTemplatesTable from './ApprovalTemplatesTable';\nimport Api from '../API';\nimport {\n IFilterDropdownProps,\n IGetApprovalTemplates,\n TSetUserPreferences,\n IApprovalTemplateCreators,\n IApprovalTemplate\n} from './types';\nimport { styles } from '../styles';\nimport FieldDropdown from '../Dropdowns/FieldDropdown';\nimport FilterDropdown from './FilterDropdown';\nimport Search from './Search';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport { fetchPreferences, updateUiSettings } from '../../helpers/uiPreferencesHelpers';\n\nexport default function ApprovalTemplates({\n apiKey,\n userPermissions,\n archived,\n setTemplateArchived,\n enableEmailTemplateFields\n}: {\n apiKey: string;\n userPermissions: IUserPermissions | undefined;\n archived: boolean;\n setTemplateArchived: Dispatch<SetStateAction<boolean>>;\n enableEmailTemplateFields?: boolean;\n}) {\n const [approvalTemplates, setApprovalTemplates] = useState<IApprovalTemplate[]>([]);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const [search, setSearch] = useState('');\n const [filters, setFilters] = useState<IFilterDropdownProps['filters']>(defaultFilters);\n const [creators, setCreators] = useState<IApprovalTemplateCreators[]>([]);\n const [activeColumns, setActiveColumns] = useState(dropdownSetting);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [totalPages, setTotalPages] = useState(0);\n const [totalApprovalTemplates, setTotalApprovalTemplates] = useState(0);\n const [sortBy, setSortBy] = useState<string>('created_at');\n const [sortOrder, setSortOrder] = useState<string>('desc');\n const [currentPage, setCurrentPage] = useState(1);\n const [density, setDensity] = useState<string>('Default');\n\n const getFirstApprovalTemplatesAndPreferences = useCallback(async () => {\n setIsLoading(true);\n try {\n const { res: preferenceData } = await fetchPreferences(\n `approval_templates${archived ? '_archived' : ''}`\n );\n const { res: densityData } = await fetchPreferences('universal');\n const preference = preferenceData?.ui_preferences[0];\n const densityPreference = densityData?.ui_preferences[0];\n preference?.sorting?.sortBy && setSortBy(preference.sorting.sortBy);\n preference?.sorting?.sortOrder && setSortOrder(preference.sorting.sortOrder.toLowerCase());\n preference?.filters && setFilters(preference.filters);\n const selectedCreatedBy = preference?.filters?.created_by?.map((x) => x.id);\n const sessionPage = sessionStorage.getItem(`approvalTemplatesTablePage`);\n !archived && sessionPage && setCurrentPage(Number(sessionPage));\n preference?.row_count && setRowsPerPage(preference.row_count);\n preference?.columns && setActiveColumns(preference.columns);\n densityPreference?.columns?.density && setDensity(densityPreference?.columns?.density);\n const response = await Api.getApprovalTemplates(\n {\n archived: archived || false,\n page: !archived && sessionPage ? Number(sessionPage) : 1,\n limit: preference?.row_count || rowsPerPage,\n sort: preference?.sorting?.sortBy || 'updated_at',\n sort_order: (preference?.sorting?.sortOrder?.toLowerCase() || 'desc').toUpperCase(),\n 'q[search]': search,\n 'filter[user_ids]': selectedCreatedBy?.filters?.length === 0 ? [] : selectedCreatedBy\n }\n );\n setApprovalTemplates(response.res.requisition_forms);\n setTotalPages(parseInt(response.resHead['x-total-pages']));\n setTotalApprovalTemplates(parseInt(response.resHead['x-total-count']));\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting approval templates',\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n }, [search]);\n\n const setUserPreferences: TSetUserPreferences = async (\n limit,\n sort,\n columns,\n newFilters,\n density\n ) => {\n if (density) {\n await updateUiSettings({ columns: { density }, source: 'universal' }, (errorMessage) => {\n setSnackbar({\n message: `There was an error saving your preferences, ${errorMessage}`,\n state: 'error'\n });\n });\n } else {\n await updateUiSettings(\n {\n sortable_columns: columns || activeColumns,\n row_count: limit || rowsPerPage,\n filters: newFilters || filters,\n sorting: sort,\n source: `approval_templates${archived ? '_archived' : ''}`\n },\n () => {\n setSnackbar({\n message: 'There was an error saving your preferences',\n state: 'error'\n });\n }\n );\n }\n };\n\n const getApprovalTemplates: IGetApprovalTemplates = async (\n page,\n limit,\n searchQuery,\n sort,\n updatedFilters,\n archived\n ) => {\n setIsLoading(true);\n try {\n const selectedCreatedBy = (updatedFilters?.created_by || filters.created_by).map((x) => x.id);\n const response = await Api.getApprovalTemplates(\n {\n archived: archived || false,\n page: page || currentPage,\n limit: limit || rowsPerPage,\n sort: sort?.sortBy || sortBy,\n sort_order: (sort?.sortOrder || sortOrder).toUpperCase(),\n 'q[search]': searchQuery !== null ? searchQuery : search,\n 'filter[user_ids]': selectedCreatedBy?.length === 0 ? [] : selectedCreatedBy\n }\n );\n setApprovalTemplates(response.res.requisition_forms);\n setTotalPages(parseInt(response.resHead['x-total-pages']));\n setTotalApprovalTemplates(parseInt(response.resHead['x-total-count']));\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting approval templates',\n state: 'error'\n });\n } finally {\n if (sort || updatedFilters) {\n setUserPreferences(null, sort, null, updatedFilters, null);\n } else if (limit) {\n setUserPreferences(limit, null, null, null, null);\n }\n setIsLoading(false);\n }\n };\n\n const getCreators = useCallback(async () => {\n try {\n const response = await Api.getCreators();\n setCreators(response.res.creators);\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting creators',\n state: 'error'\n });\n }\n }, [apiKey]);\n\n const handleChangeActiveColumns = async (columns: Record<string, boolean>) => {\n setActiveColumns(columns);\n setUserPreferences(null, null, columns, null, null);\n };\n\n useEffect(() => {\n getFirstApprovalTemplatesAndPreferences();\n getCreators();\n }, [apiKey, getFirstApprovalTemplatesAndPreferences, getCreators]);\n\n return (\n <Box>\n <Box sx={styles.filtersRow}>\n <Search\n setSearch={setSearch}\n getApprovalTemplates={getApprovalTemplates}\n archived={archived}\n />\n <FilterDropdown\n filters={filters}\n setFilters={setFilters}\n getApprovalTemplates={getApprovalTemplates}\n creators={creators}\n setUserPreferences={setUserPreferences}\n setCurrentPage={setCurrentPage}\n archived={archived}\n />\n <FieldDropdown\n options={dropdownOptions}\n activeColumns={activeColumns}\n handleChangeActiveColumns={handleChangeActiveColumns}\n density={density}\n setDensity={setDensity}\n userPermissions={userPermissions}\n setUserPreferences={setUserPreferences}\n label=\"approval-templates\"\n />\n </Box>\n <ApprovalTemplatesTable\n approvalTemplates={approvalTemplates}\n setApprovalTemplates={setApprovalTemplates}\n getApprovalTemplates={getApprovalTemplates}\n setSnackbarState={setSnackbar}\n isLoading={isLoading}\n setIsLoading={setIsLoading}\n currentPage={currentPage}\n setCurrentPage={setCurrentPage}\n rowsPerPage={rowsPerPage}\n setRowsPerPage={setRowsPerPage}\n totalPages={totalPages}\n totalApprovalTemplates={totalApprovalTemplates}\n sortBy={sortBy}\n setSortBy={setSortBy}\n sortOrder={sortOrder}\n setSortOrder={setSortOrder}\n activeColumns={activeColumns}\n apiKey={apiKey}\n userPermissions={userPermissions}\n density={density}\n archived={archived}\n setTemplateArchived={setTemplateArchived}\n enableEmailTemplateFields={enableEmailTemplateFields}\n />\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { useState, useRef } from 'react';\nimport {\n Box,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TableSortLabel,\n Paper,\n Pagination,\n MenuItem,\n FormControl,\n Select,\n Skeleton,\n Popover,\n IconButton,\n Tooltip\n} from '@mui/material';\nimport {\n MoreVert as MoreVertIcon,\n KeyboardArrowLeft as KeyboardArrowLeftIcon,\n KeyboardArrowRight as KeyboardArrowRightIcon,\n Edit as EditIcon,\n FileCopy as FileCopyIcon,\n Unarchive as UnarchiveIcon,\n Delete as DeleteIcon\n} from '@mui/icons-material';\nimport { IApprovalTemplateTableProps, IApprovalTemplate } from './types';\nimport moment from 'moment-timezone';\nimport { classes } from '../../Job/Applications/styles';\nimport { approvalTemplateHeaders } from './config';\nimport Api from '../API';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport MoveApprovalTemplate from './MoveApprovalTemplate';\nimport ApprovalTemplateSettings from '../ApprovalTemplateSettings/ApprovalTemplateSettings';\nimport NoteAddIcon from '@mui/icons-material/NoteAdd';\nimport NotePopover from './NotePopover';\n\nconst tablePadding = (density: string) => {\n if (density === 'Default') {\n return '22px';\n } else if (density === 'Compact') {\n return '15px';\n } else {\n return '8px';\n }\n};\n\nexport default function ApprovalTemplatesTable({\n approvalTemplates,\n setApprovalTemplates,\n getApprovalTemplates,\n setSnackbarState,\n isLoading,\n setIsLoading,\n currentPage,\n setCurrentPage,\n rowsPerPage,\n setRowsPerPage,\n totalPages,\n totalApprovalTemplates,\n sortBy,\n setSortBy,\n sortOrder,\n setSortOrder,\n activeColumns,\n apiKey,\n userPermissions,\n density,\n archived,\n setTemplateArchived,\n enableEmailTemplateFields\n}: IApprovalTemplateTableProps) {\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n const [tableHovered, setTableHovered] = useState(false);\n const [canScroll, setCanScroll] = useState([false, true]);\n const tableRef = useRef<HTMLDivElement>(null);\n const actionCellRef = useRef(null);\n const titleCellRef = useRef(null);\n const [trashAlertOpen, setTrashAlertOpen] = useState(false);\n const [editModalOpen, setEditModalOpen] = useState(false);\n const [deleteApprovalTemplates, setDeleteApprovalTemplates] = useState([]);\n const [editingApprovalTemplate, setEditingApprovalTemplate] = useState<IApprovalTemplate | null>(\n null\n );\n const [action, setAction] = useState('');\n const [noteAnchorEl, setNoteAnchorEl] = useState(null);\n\n const handleArchiveOrTrashApprovalTemplates = async (ids: Array<number>, action: string) => {\n setIsLoading(true);\n try {\n const response =\n action === 'archive'\n ? await Api.postArchiveApprovalTemplates(\n { approval_template_ids: ids }\n )\n : await Api.deleteTrashApprovalTemplates(\n { approval_template_ids: ids }\n );\n setSnackbarState({\n message: response.res.success,\n state: 'success'\n });\n } catch (error) {\n setSnackbarState({\n message: error?.errors,\n state: 'error'\n });\n } finally {\n setActionsAnchorEl(null);\n getApprovalTemplates(null, null, null, null, null, archived);\n setTemplateArchived(true);\n }\n };\n\n const handleUnarchiveApprovalTemplates = async (ids: Array<number>) => {\n setIsLoading(true);\n try {\n const response = await Api.postUnarchiveApprovalTemplates(\n { approval_template_ids: ids }\n );\n } catch (error) {\n setSnackbarState({\n message: `Unable to unarchive approval template, ${error?.errors.join('. ')}`,\n state: 'error'\n });\n } finally {\n setActionsAnchorEl(null);\n getApprovalTemplates(null, null, null, null, null, archived);\n setTemplateArchived(true);\n }\n };\n\n const handleRowsPerPageChange = (selection: number) => {\n if (selection === rowsPerPage) return;\n setRowsPerPage(selection);\n getApprovalTemplates(null, selection, null, null, null, archived);\n };\n\n const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n if (newPage === currentPage) return;\n setCurrentPage(newPage);\n sessionStorage.setItem(`approvalTemplatesTablePage`, newPage);\n getApprovalTemplates(newPage, null, null, null, null, archived);\n };\n\n const handleSortChange = (\n event: React.MouseEvent<HTMLSpanElement, MouseEvent>,\n columnValue: string\n ) => {\n const isAsc = sortBy === columnValue && sortOrder === 'asc';\n const newSortOrder = isAsc ? 'desc' : 'asc';\n setSortOrder(newSortOrder);\n setSortBy(columnValue);\n getApprovalTemplates(\n null,\n null,\n null,\n { sortBy: columnValue, sortOrder: newSortOrder },\n null,\n archived\n );\n };\n\n const handleScroll = () => {\n if (tableRef.current.scrollLeft < 10) {\n setCanScroll([false, true]);\n } else if (\n tableRef.current.scrollLeft >\n tableRef.current.scrollWidth - tableRef.current.clientWidth - 10\n ) {\n setCanScroll([true, false]);\n } else {\n setCanScroll([true, true]);\n }\n };\n\n const handleScrollLeft = () => {\n tableRef.current.scrollLeft > 360\n ? (tableRef.current.scrollLeft -= 300)\n : (tableRef.current.scrollLeft = 0);\n };\n\n const handleScrollRight = () => {\n tableRef.current.scrollWidth - tableRef.current.clientWidth > 360\n ? (tableRef.current.scrollLeft += 300)\n : (tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth);\n };\n\n function isScrollable(element: HTMLElement) {\n return element && element.scrollWidth > element.clientWidth + 20;\n }\n\n const handleScrollableEnter = () => {\n if (isScrollable(tableRef.current)) setTableHovered(true);\n };\n\n const handleScrollableExit = () => {\n setTableHovered(false);\n };\n\n const handleAction = (template: IApprovalTemplate, action: string) => {\n setEditModalOpen(true);\n setEditingApprovalTemplate(template);\n setAction(action);\n };\n\n const handleOpenNote = (event: React.MouseEvent<HTMLElement>, template: IApprovalTemplate) => {\n setEditingApprovalTemplate(template);\n setNoteAnchorEl(event.currentTarget);\n };\n\n const handleCloseNote = () => {\n setEditingApprovalTemplate(null);\n setNoteAnchorEl(null);\n };\n\n const headerStyle = (name: string) => {\n switch (name) {\n case 'name':\n return {\n ...classes.sticky,\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible),\n width: '200px'\n };\n case 'updated_at':\n return { width: '120px' };\n case 'created_by':\n return { width: '140px' };\n case 'note':\n return { width: '150px' };\n default:\n return { width: '90px' };\n }\n };\n\n return (\n <Box>\n <Box sx={{ position: 'relative' }}>\n <Box sx={classes.arrowsContainer}>\n <Box\n onClick={handleScrollLeft}\n onMouseEnter={handleScrollableEnter}\n sx={{\n ...classes.leftArrow,\n ...(tableHovered && canScroll[0] && classes.showArrows),\n left: `${titleCellRef.current?.getBoundingClientRect().right}px`,\n top: 0\n }}\n id=\"left-arrow\"\n >\n <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n <Box sx={classes.arrowsContainer}>\n <Box\n onMouseEnter={handleScrollableEnter}\n onClick={handleScrollRight}\n sx={{\n ...classes.rightArrow,\n ...(tableHovered && canScroll[1] && classes.showArrows),\n left: `${actionCellRef.current?.getBoundingClientRect().left - 40}px`,\n top: 0\n }}\n id=\"right-arrow\"\n >\n <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n <TableContainer\n sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}\n component={Paper}\n onMouseEnter={handleScrollableEnter}\n onMouseLeave={handleScrollableExit}\n ref={tableRef}\n onScroll={handleScroll}\n >\n <Table\n sx={{\n ...classes.tableWrapper,\n 'th, td, tr, thead': { padding: `${tablePadding(density)} 10px` }\n }}\n aria-label=\"approval templates\"\n >\n <TableHead>\n <TableRow>\n {approvalTemplateHeaders.map((header, index) => {\n if (\n header.name === 'note' &&\n !userPermissions?.['Approval Forms']?.['Manage Approval Form Notes']\n ) {\n return;\n }\n return (\n activeColumns[header.name] && (\n <TableCell\n key={header.name}\n sx={headerStyle(header.name)}\n ref={header.name === 'name' ? titleCellRef : null}\n >\n <TableSortLabel\n active={sortBy === header.name}\n direction={sortBy === header.name ? (sortOrder as 'asc' | 'desc') : 'asc'}\n onClick={(event) => handleSortChange(event, header.name)}\n sx={{ ...classes.sortable, paddingLeft: `${index === 0 ? '16px' : ''}` }}\n disabled={!header.sortable}\n id={`${header.name}-sort-label-approval-templates`}\n >\n {header.label}\n </TableSortLabel>\n </TableCell>\n )\n );\n })}\n {(userPermissions?.['Approval Forms']?.['Create / Edit Approval Forms (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Edit Approval Form (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Clone Approval Form (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Archive Approval Forms (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Move Approval Template']) && (\n <TableCell\n sx={{\n zIndex: '4',\n ...classes.attachmentsHeader,\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n />\n )}\n </TableRow>\n </TableHead>\n <TableBody>\n {approvalTemplates &&\n !isLoading &&\n approvalTemplates.map((approvalTemplate: IApprovalTemplate, index) => {\n const updatedAt = approvalTemplate.updated_at\n ? moment\n .tz(approvalTemplate.updated_at, timeZoneString)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${approvalTemplate.id}-${line}`}>{line}</div>)\n : '-';\n return (\n <TableRow key={approvalTemplate.id}>\n {activeColumns.name && (\n <TableCell\n sx={{\n ...classes.sticky,\n minWidth: '200px',\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n >\n <Box sx={classes.titleLink}>\n <a\n href={approvalTemplate.requisition_form_fields_link}\n className=\"approval-template-title-link\"\n >\n {approvalTemplate.name || '-'}\n </a>\n </Box>\n </TableCell>\n )}\n {activeColumns.updated_at && <TableCell>{updatedAt || '-'}</TableCell>}\n {activeColumns.created_by && (\n <TableCell>{approvalTemplate.created_by || '-'}</TableCell>\n )}\n {userPermissions?.['Approval Forms']?.['Manage Approval Form Notes'] &&\n activeColumns.note && <TableCell>{approvalTemplate.note || '-'}</TableCell>}\n {userPermissions?.['Approval Forms']?.[\n 'Create / Edit Approval Forms (HR use)'\n ] ||\n userPermissions?.['Approval Forms']?.['Edit Approval Form (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Clone Approval Form (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Archive Approval Forms (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Move Approval Template'] ||\n userPermissions?.['Approval Forms']?.['Manage Approval Form Notes'] ? (\n <TableCell\n sx={{\n zIndex: '4 !important',\n ...classes.attachmentsCell,\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n ref={actionCellRef}\n >\n <Box sx={{ ...classes.actionItems, justifyContent: 'end' }}>\n {!archived &&\n userPermissions?.['Approval Forms']?.[\n 'Manage Approval Form Notes'\n ] && (\n <Tooltip placement=\"top\" title=\"Add Note\" arrow>\n <IconButton\n onClick={(e) => handleOpenNote(e, approvalTemplate)}\n className=\"approval-template-add-note-button\"\n >\n <NoteAddIcon />\n </IconButton>\n </Tooltip>\n )}\n {!archived &&\n (userPermissions?.['Approval Forms']?.[\n 'Create / Edit Approval Forms (HR use)'\n ] ||\n userPermissions?.['Approval Forms']?.[\n 'Edit Approval Form (HR use)'\n ]) && (\n <Tooltip placement=\"top\" title=\"Edit\" arrow>\n <IconButton\n onClick={() => handleAction(approvalTemplate, 'Edit')}\n className=\"approval-template-edit-button\"\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n )}\n {!archived &&\n userPermissions?.['Approval Forms']?.[\n 'Clone Approval Form (HR use)'\n ] && (\n <Tooltip placement=\"top\" title=\"Clone\" arrow>\n <IconButton\n onClick={() => handleAction(approvalTemplate, 'Clone')}\n className=\"approval-template-clone-button\"\n >\n <FileCopyIcon />\n </IconButton>\n </Tooltip>\n )}\n {userPermissions?.['Approval Forms']?.[\n 'Archive Approval Forms (HR use)'\n ] || userPermissions?.['Approval Forms']?.['Move Approval Template']\n ? !archived && (\n <Tooltip placement=\"top\" title=\"More options\" arrow>\n <IconButton\n onClick={(e) => {\n setActionsAnchorEl(e.currentTarget);\n setEditingApprovalTemplate(approvalTemplate);\n }}\n className=\"approval-template-action-button\"\n >\n <MoreVertIcon sx={{ color: '#666666' }} />\n </IconButton>\n </Tooltip>\n )\n : !archived &&\n (userPermissions?.['Approval Forms']?.[\n 'Create / Edit Approval Forms (HR use)'\n ] ||\n userPermissions?.['Approval Forms']?.[\n 'Edit Approval Form (HR use)'\n ]) && (\n <Tooltip placement=\"top\" title=\"Archive\" arrow>\n <IconButton\n className=\"approval-template-delete-button\"\n onClick={() => {\n setDeleteApprovalTemplates(approvalTemplate.id);\n setTrashAlertOpen(true);\n }}\n >\n <DeleteIcon\n sx={{ fontSize: '18px', color: '#E37D7A !important' }}\n />\n </IconButton>\n </Tooltip>\n )}\n {archived &&\n userPermissions?.['Approval Forms']?.[\n 'Archive Approval Forms (HR use)'\n ] && (\n <Tooltip placement=\"top\" title=\"Unarchive\" arrow>\n <IconButton\n className=\"unarchive-button\"\n onClick={(e) =>\n handleUnarchiveApprovalTemplates([approvalTemplate.id])\n }\n >\n <UnarchiveIcon />\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </TableCell>\n ) : (\n <TableCell ref={actionCellRef}></TableCell>\n )}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n {!isLoading && approvalTemplates?.length === 0 && (\n <Box sx={classes.noApplications}>No Approval Templates found</Box>\n )}\n {isLoading && (\n <>\n {[...Array(10)].map((_, index) => (\n <Box key={index} sx={classes.skeletonContainer}>\n <Skeleton animation=\"wave\" height={60} />\n </Box>\n ))}\n </>\n )}\n </TableContainer>\n </Box>\n <Box sx={classes.paginationParent}>\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n sx={classes.rowSelect}\n value={rowsPerPage}\n onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" value={10}>\n 10\n </MenuItem>\n <MenuItem id=\"second-rpp-item\" value={20}>\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer}>\n <Pagination\n id=\"pagination-menu\"\n count={totalPages}\n page={currentPage}\n siblingCount={0}\n onChange={handlePageChange}\n sx={classes.pagination}\n />\n <span id=\"total-jobs\">{totalApprovalTemplates} Total</span>\n </Box>\n </Box>\n {!archived && noteAnchorEl && (\n <NotePopover\n setApprovalTemplates={setApprovalTemplates}\n anchorEl={noteAnchorEl}\n handleCloseNote={handleCloseNote}\n approvalTemplateId={editingApprovalTemplate?.id}\n approvalTemplateNote={editingApprovalTemplate?.note}\n apiKey={apiKey}\n setSnackbarState={setSnackbarState}\n />\n )}\n {!archived && (\n <Popover\n id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n sx={classes.actionsMenu}\n open={Boolean(actionsAnchorEl)}\n anchorEl={actionsAnchorEl}\n onClose={() => setActionsAnchorEl(null)}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {userPermissions?.['Approval Forms']?.['Move Approval Template'] && (\n <span>\n <MoveApprovalTemplate\n apiKey={apiKey}\n approvalTemplateId={editingApprovalTemplate?.id}\n entity={editingApprovalTemplate?.entity_name}\n getApprovalTemplates={getApprovalTemplates}\n setSnackbarState={setSnackbarState}\n setActionsAnchorEl={setActionsAnchorEl}\n />\n </span>\n )}\n {userPermissions?.['Approval Forms']?.['Archive Approval Forms (HR use)'] && (\n <span\n onClick={() =>\n handleArchiveOrTrashApprovalTemplates(editingApprovalTemplate.id, 'archive')\n }\n className=\"archive-approval-template-action-button\"\n >\n Archive\n </span>\n )}\n {(userPermissions?.['Approval Forms']?.['Create / Edit Approval Forms (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Edit Approval Form (HR use)']) && (\n <span\n onClick={() => {\n setDeleteApprovalTemplates(editingApprovalTemplate.id);\n setTrashAlertOpen(true);\n setActionsAnchorEl(null);\n }}\n className=\"trash-approval-template-action-button\"\n >\n Trash\n </span>\n )}\n </Popover>\n )}\n <GenericDialog\n isDialogOpen={trashAlertOpen}\n setDialogOpen={setTrashAlertOpen}\n title=\"Trash approval template?\"\n description=\"Are you sure want to trash this approval template?\"\n buttonCallback={() => {\n setTrashAlertOpen(false);\n handleArchiveOrTrashApprovalTemplates(deleteApprovalTemplates, 'trash');\n setDeleteApprovalTemplates([]);\n }}\n callbackLoading={false}\n buttonText=\"Trash\"\n url=\"\"\n />\n {editingApprovalTemplate && editModalOpen && (\n <ApprovalTemplateSettings\n modalsOpen={editModalOpen}\n setModalsOpen={() => setEditModalOpen(false)}\n setSnackbar={setSnackbarState}\n approvalTemplateData={editingApprovalTemplate}\n getApprovalTemplate={async () =>\n await getApprovalTemplates(null, null, null, null, null, false)\n }\n action={action}\n questions={editingApprovalTemplate.fields.filter(\n (question) => question.enabled && !question.for_email_template\n )}\n enableEmailTemplateFields={enableEmailTemplateFields}\n />\n )}\n </Box>\n );\n}\n","import React, { useState, useMemo, useCallback, useEffect } from 'react';\nimport MultiSelect, { IOptionType } from '../../Components/CustomUIElements/MultiSelect';\nimport Box from '@mui/material/Box';\nimport Popover from '@mui/material/Popover';\nimport IconButton from '@mui/material/IconButton';\nimport Badge from '@mui/material/Badge';\nimport Button from '@mui/material/Button';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport SortIcon from '@mui/icons-material/Sort';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { defaultFilters } from './config';\nimport { IFilterDropdownProps } from './types';\nimport { styles } from '../styles';\nimport Tooltip from '@mui/material/Tooltip';\n\nexport default function FilterDropdown({\n filters,\n setFilters,\n getApprovalTemplates,\n creators,\n setUserPreferences,\n setCurrentPage,\n archived\n}: IFilterDropdownProps) {\n const [anchorEl, setAnchorEl] = useState(null);\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const [loadingFilters, setLoadingFilters] = useState(false);\n const [tempFilters, setTempFilters] = useState({ ...filters });\n const [numberOfFilters, setNumberOfFilters] = useState(0);\n\n const calculateNumberOfFilters = useCallback((newFilters) => {\n return Number(!!newFilters.created_by.length);\n }, []);\n\n const handleDropdownOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n setDropdownOpen(true);\n };\n\n const handleFilterChange = (name: string, value: IOptionType[] | number[] | boolean) => {\n setTempFilters({ ...tempFilters, [name]: value });\n };\n\n const handleApplyFilters = () => {\n setFilters({ ...tempFilters });\n setCurrentPage(1);\n sessionStorage.setItem(`approvalTemplatesTablePage`, 1);\n setUserPreferences(null, null, null, { ...tempFilters }, null);\n getApprovalTemplates(1, null, null, null, tempFilters, archived);\n setDropdownOpen(false);\n setAnchorEl(null);\n setNumberOfFilters(calculateNumberOfFilters(tempFilters));\n };\n\n const handleResetFilters = () => {\n setTempFilters({ ...defaultFilters });\n setUserPreferences(null, null, null, { ...defaultFilters }, null);\n setFilters({ ...defaultFilters });\n getApprovalTemplates(null, null, null, null, defaultFilters, archived);\n setDropdownOpen(false);\n setAnchorEl(null);\n setNumberOfFilters(0);\n };\n\n const creatorOptions = useMemo(() => {\n return creators?.map((creator) => ({\n name: creator.name,\n id: creator.id\n }));\n }, [creators]);\n\n useEffect(() => {\n setTempFilters({ ...filters });\n setNumberOfFilters(calculateNumberOfFilters(filters));\n }, [filters, calculateNumberOfFilters]);\n\n return (\n <Tooltip title=\"Filter\" placement=\"top\" arrow>\n <Box>\n <Badge\n badgeContent={numberOfFilters}\n sx={{ '& .MuiBadge-badge': { backgroundColor: '#E37D7A', color: '#FFF' } }}\n >\n <IconButton\n id=\"filter-approval-templates-button\"\n sx={\n dropdownOpen ? { ...styles.iconButton, ...styles.iconButtonOpen } : styles.iconButton\n }\n onClick={handleDropdownOpen}\n >\n {loadingFilters ? <CircularProgress size={24} /> : <SortIcon />}\n </IconButton>\n </Badge>\n <Popover\n id=\"filter-dropdown-popover\"\n sx={{\n ...styles.popover,\n background: 'none',\n '& .MuiBox-root': {\n marginTop: 0\n }\n }}\n open={dropdownOpen}\n anchorEl={anchorEl}\n onClose={() => setDropdownOpen(false)}\n PaperProps={{\n sx: {\n overflow: 'unset',\n boxShadow: '0px 2px 14px rgba(48,90,111,0.16)'\n }\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <Box sx={styles.filterPopoverContent}>\n <Box sx={styles.scrollableFilters}>\n <Box sx={styles.filterPopoverHeader}>\n <Button\n id=\"reset-filters-button\"\n variant=\"contained\"\n endIcon={<CancelIcon />}\n sx={styles.clearButton}\n onClick={handleResetFilters}\n >\n Clear all\n </Button>\n <Button\n id=\"apply-filters-button\"\n variant=\"contained\"\n onClick={handleApplyFilters}\n sx={styles.applyButton}\n >\n Apply\n </Button>\n </Box>\n <Box\n sx={{ ...styles.filterOptionContainer, marginBottom: '20px' }}\n id=\"created-by-filter\"\n >\n Created By\n <MultiSelect\n handleFilterChange={(name, value) => handleFilterChange(name, value)}\n selectOptions={creatorOptions}\n name={'created_by'}\n filters={tempFilters.created_by}\n />\n </Box>\n </Box>\n </Box>\n </Popover>\n </Box>\n </Tooltip>\n );\n}\n","import React, { useState, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport { Virtualize } from '../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport Api from '../API';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { classes } from '../../Job/ActionModals/MoveJob/styles';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\n\nexport default function MoveApprovalTemplate({\n apiKey,\n approvalTemplateId,\n entity,\n getApprovalTemplates,\n setSnackbarState,\n setActionsAnchorEl\n}: {\n apiKey: string;\n entity: string | undefined;\n approvalTemplateId: number;\n getApprovalTemplates: () => void;\n setActionsAnchorEl: (value: null) => void;\n setSnackbarState: StyledSnackbarProps['setSnackBarState'];\n}) {\n const [isLoading, setIsLoading] = useState<boolean>(false);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [hasError, setHasError] = useState(false);\n const [assignedMoveOptions, setMoveJobOptions] = useState<string[] | null>(null);\n const [moveTo, setMoveTo] = useState(null);\n\n const fetchMoveJobData = useCallback(async () => {\n setIsLoading(true);\n try {\n const data = await Api.getTargetEntities();\n setMoveJobOptions(data?.res?.entities.map((a) => `${a.id} - ${a.name}`));\n } catch (error) {\n setSnackbarState({\n message: error?.error,\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n }, [apiKey]);\n\n const moveApprovalTemplate = async () => {\n if (moveTo) {\n if (typeof moveTo !== 'string') return setHasError(true);\n else setHasError(false);\n } else return setHasError(true);\n try {\n const entityId = moveTo.split(' -')[0];\n await Api.moveApprovalTemplate(approvalTemplateId, entityId);\n setSnackbarState({\n message: 'Your approval template has been moved',\n state: 'success'\n });\n setMoveTo(null);\n setIsDialogOpen(false);\n setActionsAnchorEl(null);\n getApprovalTemplates();\n } catch (error) {\n setSnackbarState({\n message: error?.error,\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n };\n\n function setValue(value: string) {\n setMoveTo(value);\n }\n\n return (\n <Box>\n <Box\n onClick={() => {\n setIsDialogOpen(true);\n !assignedMoveOptions && fetchMoveJobData();\n }}\n id=\"move-approval-template-button\"\n >\n Move\n </Box>\n <Modal\n open={isDialogOpen}\n aria-labelledby=\"modal-modal-title\"\n onClose={() => setIsDialogOpen(false)}\n >\n <Box sx={classes.modalContent}>\n <CloseIcon onClick={() => setIsDialogOpen(false)} sx={classes.closeIcon} />\n <Box id=\"modal-modal-title\" sx={classes.modalTitle}>\n Move Approval Template\n </Box>\n <Box sx={{ marginTop: '1rem', display: 'grid' }}>\n <Box sx={classes.subTitle}>Current entity: </Box>\n <Box sx={{ margin: '0.75rem 0' }}>{entity}</Box>\n <Box sx={{ marginTop: '2.25rem' }}>\n {assignedMoveOptions ? (\n <Box sx={{ marginTop: '1rem' }}>\n {!isLoading ? (\n <Box sx={classes.modalFormLine}>\n <Virtualize\n value={moveTo}\n passOptions={assignedMoveOptions}\n setValue={setValue}\n passedStyles={{ width: '290px', ...sharedClasses.formAutocomplete }}\n errorStyles={{ ...sharedClasses.errorBox, top: '-24px', right: '0px' }}\n error={!moveTo && hasError}\n label=\"Move to\"\n />\n </Box>\n ) : (\n <CircularProgress size={20} color=\"inherit\" />\n )}\n </Box>\n ) : (\n <Box>\n {isLoading ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n <Box sx={classes.noEntitys}>No Entities are available</Box>\n )}\n </Box>\n )}\n </Box>\n </Box>\n <Box sx={classes.modalActions}>\n <Button\n disableElevation\n sx={{ ...classes.buttonRedLight }}\n variant=\"text\"\n onClick={() => {\n setIsDialogOpen(false);\n setActionsAnchorEl(null);\n }}\n >\n Cancel\n </Button>\n <Button sx={classes.revertloadButton} onClick={() => moveApprovalTemplate()}>\n Submit\n </Button>\n </Box>\n </Box>\n </Modal>\n </Box>\n );\n}\n","import React, { useState } from 'react';\nimport Popover from '@mui/material/Popover';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { INoteProps } from './types';\nimport { classes } from '../../Job/Applications/styles';\n\nconst NotePopover = ({\n setApprovalTemplates,\n anchorEl,\n handleCloseNote,\n approvalTemplateId,\n approvalTemplateNote,\n apiKey,\n setSnackbarState\n}: INoteProps) => {\n const [noteBody, setNoteBody] = useState(approvalTemplateNote || '');\n const [savingNote, setSavingNote] = useState<boolean>(false);\n\n async function saveNote() {\n setSavingNote(true);\n try {\n const response = await fetch(`/api/v4/requisition_forms/${approvalTemplateId}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n requisition_form: {\n note: noteBody\n }\n })\n }).then((res) => res.json());\n if (response) {\n setApprovalTemplates((prevApprovalTemplates) => {\n const newApprovalTemplates = [...prevApprovalTemplates];\n const approvalTemplateIndex = newApprovalTemplates.findIndex(\n (approvalTemplate) => approvalTemplate.id === approvalTemplateId\n );\n newApprovalTemplates[approvalTemplateIndex].note = noteBody;\n return newApprovalTemplates;\n });\n }\n } catch (error) {\n setSnackbarState({\n message: `Error saving note, ${error}`,\n state: 'error'\n });\n } finally {\n handleCloseNote();\n }\n }\n\n return (\n <Popover\n id={anchorEl ? 'edit-note-popover' : undefined}\n sx={classes.editNotePopover}\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleCloseNote}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <>\n <Box sx={classes.notesTitle}>Add approval template note</Box>\n <TextField\n id=\"note-input\"\n sx={classes.noteInput}\n label=\"Note\"\n multiline\n fullWidth\n maxRows={4}\n variant=\"outlined\"\n defaultValue={approvalTemplateNote || noteBody}\n onChange={(e) => setNoteBody(e.target.value)}\n InputLabelProps={{\n shrink: true\n }}\n />\n <Box id=\"notes-button-container\" sx={classes.notesButtonContainer}>\n <Button sx={classes.notesCancelButton} endIcon={<CloseIcon />} onClick={handleCloseNote}>\n Cancel\n </Button>\n <Button\n id=\"save-note-approval-templates-button\"\n sx={classes.notesEditSaveButton}\n endIcon={savingNote ? <CircularProgress size={16} /> : <DoneIcon />}\n onClick={() => {\n saveNote();\n }}\n disabled={savingNote}\n >\n {approvalTemplateNote ? 'Update' : 'Save'}\n </Button>\n </Box>\n </>\n </Popover>\n );\n};\n\nexport default NotePopover;\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\nimport { IGetApprovalTemplates } from './types';\nimport { styles } from '../styles';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function Search({\n setSearch,\n getApprovalTemplates,\n archived\n}: {\n setSearch: (query: string) => void;\n getApprovalTemplates: IGetApprovalTemplates;\n archived: boolean;\n}) {\n const [tempSearch, setTempSearch] = useState('');\n const debouncedAPICall = useDebouncedCallback((searchQuery) => {\n getApprovalTemplates(null, null, searchQuery, null, null, archived);\n setSearch(searchQuery);\n }, 600);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTempSearch(event.target.value);\n debouncedAPICall(event.target.value);\n };\n\n return (\n <Box sx={{ width: '100%' }}>\n <FormControl fullWidth>\n <OutlinedInput\n id=\"approval-template-search\"\n sx={styles.searchInput}\n placeholder={'Search by title'}\n value={tempSearch}\n onChange={handleChange}\n startAdornment={\n <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n <SearchIcon />\n </InputAdornment>\n }\n />\n </FormControl>\n </Box>\n );\n}\n","import React, { Dispatch, useState, SetStateAction } from 'react';\nimport { Box, ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport { styles } from '../styles';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport ApprovalTemplates from '../ApprovalTemplates/ApprovalTemplates';\nimport ApprovalFormsTab from '../ApprovalFormsTab';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nexport default function ArchivedFormsAndTemplates({\n apiKey,\n userPermissions,\n setTemplateArchived\n}: {\n apiKey: string;\n userPermissions: IUserPermissions | undefined;\n setTemplateArchived: Dispatch<SetStateAction<boolean>>;\n}) {\n const [selected, setSelected] = useState(\n userPermissions?.['Approval Forms']?.['Archive Approval Forms']\n ? 'approvalForms'\n : 'approvalTemplates'\n );\n\n const handleToggle = (event: React.MouseEvent<HTMLElement>, newSelected: string) => {\n if (newSelected !== null) {\n setSelected(newSelected);\n }\n };\n\n return (\n <Box>\n <Box sx={styles.automationContainer}>\n <Box sx={styles.toggleButtonsContainer}>\n <ToggleButtonGroup\n value={selected}\n exclusive\n onChange={handleToggle}\n aria-label=\"approval forms or templates\"\n >\n {userPermissions?.['Approval Forms']?.['Archive Approval Forms'] && (\n <ToggleButton value=\"approvalForms\" sx={sharedClasses.toggleButton}>\n Approval forms\n </ToggleButton>\n )}\n {userPermissions?.['Approval Forms']?.['Archive Approval Forms (HR use)'] && (\n <ToggleButton value=\"approvalTemplates\" sx={sharedClasses.toggleButton}>\n Approval templates\n </ToggleButton>\n )}\n </ToggleButtonGroup>\n </Box>\n {selected === 'approvalForms' ? (\n <ApprovalFormsTab apiKey={apiKey} userPermissions={userPermissions} archived={true} />\n ) : (\n <ApprovalTemplates\n apiKey={apiKey}\n userPermissions={userPermissions}\n archived={true}\n setTemplateArchived={setTemplateArchived}\n />\n )}\n </Box>\n </Box>\n );\n}\n","import React, { useState } from 'react';\nimport {\n Box,\n IconButton,\n FormControl,\n FormGroup,\n FormControlLabel,\n Switch,\n Stack,\n Tooltip,\n Popper\n} from '@mui/material';\nimport ViewColumnIcon from '@mui/icons-material/ViewColumn';\nimport { IDropdownProps } from '../types';\nimport { styles } from '../styles';\nimport { ClickAwayListener } from '@mui/base/ClickAwayListener';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableField from './SortableField';\nimport { isPermittedOption } from '../helper';\n\nexport default function DndFieldDropdown({\n sortableColumns,\n setSortableColumns,\n density,\n setDensity,\n setUserPreferences,\n label,\n userPermissions\n}: IDropdownProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n const [dropdownOpen, setDropdownOpen] = useState(false);\n\n const handleFieldSwitchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newSortableColumns = sortableColumns.map((field) => {\n if (field.id === event.target.name) {\n return { ...field, enabled: event.target.checked };\n } else {\n return field;\n }\n });\n setSortableColumns(newSortableColumns);\n setUserPreferences(null, null, newSortableColumns, null, null);\n };\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n setDropdownOpen((prev) => !prev);\n };\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n function handleDragEnd(event) {\n const { active, over } = event;\n\n if (active.id !== over.id) {\n const oldIndex = sortableColumns.map((c) => c.id).indexOf(active.id);\n const newIndex = sortableColumns.map((c) => c.id).indexOf(over.id);\n const newArray = arrayMove(sortableColumns, oldIndex, newIndex);\n\n setSortableColumns(newArray);\n setUserPreferences(null, null, newArray, null, null);\n }\n }\n\n return (\n <ClickAwayListener onClickAway={() => setDropdownOpen(false)}>\n <Box>\n <Tooltip title=\"Table settings\" placement=\"top\" arrow>\n <IconButton\n id={`field-dropdown-${label}-button`}\n sx={\n dropdownOpen ? { ...styles.iconButton, ...styles.iconButtonOpen } : styles.iconButton\n }\n onClick={handleClick}\n >\n <ViewColumnIcon />\n </IconButton>\n </Tooltip>\n <Popper\n id=\"field-dropdown-popover\"\n sx={styles.popover}\n open={dropdownOpen}\n anchorEl={anchorEl}\n placement=\"bottom-end\"\n >\n <Box sx={styles.popoverContent}>\n <FormControl component=\"fieldset\" variant=\"standard\">\n <Stack sx={styles.tableSettingsHeader}>Column</Stack>\n <FormGroup id=\"field-dropdown-switches\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={sortableColumns} strategy={verticalListSortingStrategy}>\n {sortableColumns.map((field, index) => {\n if (\n field.canToggle === false ||\n !isPermittedOption(field.id, userPermissions)\n )\n return null;\n return (\n <SortableField\n key={index}\n field={field}\n handleFieldSwitchChange={handleFieldSwitchChange}\n />\n );\n })}\n </SortableContext>\n </DndContext>\n </FormGroup>\n </FormControl>\n <Stack sx={{ ...styles.tableSettingsHeader, paddingTop: 2 }}>Density</Stack>\n <FormControl>\n <FormGroup>\n {['Default', 'Compact', 'Ultra Compact'].map((size, index) => {\n const isSwitched = size === density;\n return (\n <FormControlLabel\n sx={\n !isSwitched\n ? { ...styles.switchLabels, ...styles.labelActive }\n : styles.switchLabels\n }\n key={index}\n control={\n <Switch\n sx={isSwitched ? styles.switchActive : styles.switch}\n checked={isSwitched}\n onChange={(event) => {\n setDensity(size);\n setUserPreferences(null, null, null, null, size);\n }}\n name={'density'}\n />\n }\n label={size}\n labelPlacement=\"start\"\n />\n );\n })}\n </FormGroup>\n </FormControl>\n </Box>\n </Popper>\n </Box>\n </ClickAwayListener>\n );\n}\n","import React, { useState } from 'react';\nimport {\n Box,\n IconButton,\n FormControl,\n FormGroup,\n FormControlLabel,\n Switch,\n Stack,\n Tooltip,\n Popper\n} from '@mui/material';\nimport ViewColumnIcon from '@mui/icons-material/ViewColumn';\nimport { IDropdownProps } from '../types';\nimport { styles } from '../styles';\nimport { ClickAwayListener } from '@mui/base/ClickAwayListener';\n\nexport default function FieldDropdown({\n options,\n activeColumns,\n handleChangeActiveColumns,\n density,\n setDensity,\n userPermissions,\n setUserPreferences,\n label\n}: IDropdownProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n const [dropdownOpen, setDropdownOpen] = useState(false);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n handleChangeActiveColumns({\n ...activeColumns,\n [event.target.name]: event.target.checked\n });\n setUserPreferences(\n null,\n null,\n {\n ...activeColumns,\n [event.target.name]: event.target.checked\n },\n null,\n null\n );\n };\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n setDropdownOpen((prev) => !prev);\n };\n\n return (\n <ClickAwayListener onClickAway={() => setDropdownOpen(false)}>\n <Box>\n <Tooltip title=\"Table settings\" placement=\"top\" arrow>\n <IconButton\n id={`field-dropdown-${label}-button`}\n sx={\n dropdownOpen ? { ...styles.iconButton, ...styles.iconButtonOpen } : styles.iconButton\n }\n onClick={handleClick}\n >\n <ViewColumnIcon />\n </IconButton>\n </Tooltip>\n <Popper\n id=\"field-dropdown-popover\"\n sx={styles.popover}\n open={dropdownOpen}\n anchorEl={anchorEl}\n placement=\"bottom-end\"\n >\n <Box sx={styles.popoverContent}>\n <FormControl component=\"fieldset\" variant=\"standard\">\n <Stack sx={styles.tableSettingsHeader}>Column</Stack>\n <FormGroup id=\"field-dropdown-switches\">\n {options.map((field, index) => {\n if (\n field.name === 'note' &&\n !userPermissions?.['Approval Forms']?.['Manage Approval Form Notes']\n ) {\n return;\n }\n const isSwitched = activeColumns[field.name as keyof typeof activeColumns];\n return (\n <FormControlLabel\n sx={\n !isSwitched\n ? { ...styles.switchLabels, ...styles.labelActive }\n : styles.switchLabels\n }\n key={index}\n control={\n <Switch\n sx={isSwitched ? styles.switchActive : styles.switch}\n checked={isSwitched}\n onChange={handleChange}\n name={field.name}\n />\n }\n label={field.label}\n labelPlacement=\"start\"\n />\n );\n })}\n </FormGroup>\n </FormControl>\n <Stack sx={{ ...styles.tableSettingsHeader, paddingTop: 2 }}>Density</Stack>\n <FormControl>\n <FormGroup>\n {['Default', 'Compact', 'Ultra Compact'].map((size, index) => {\n const isSwitched = size === density;\n return (\n <FormControlLabel\n sx={\n !isSwitched\n ? { ...styles.switchLabels, ...styles.labelActive }\n : styles.switchLabels\n }\n key={index}\n control={\n <Switch\n sx={isSwitched ? styles.switchActive : styles.switch}\n checked={isSwitched}\n onChange={(event) => {\n setDensity(size);\n setUserPreferences(null, null, null, null, size);\n }}\n name={'density'}\n />\n }\n label={size}\n labelPlacement=\"start\"\n />\n );\n })}\n </FormGroup>\n </FormControl>\n </Box>\n </Popper>\n </Box>\n </ClickAwayListener>\n );\n}\n","import React, { useState, useCallback, useEffect, useMemo } from 'react';\nimport MultiSelect, { IOptionType } from '../../Components/CustomUIElements/MultiSelect';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport Badge from '@mui/material/Badge';\nimport Button from '@mui/material/Button';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport SortIcon from '@mui/icons-material/Sort';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { defaultFilters, defaultFilterOptions } from '../config';\nimport { IFilterDropdownProps } from '../types';\nimport { styles } from '../styles';\nimport Tooltip from '@mui/material/Tooltip';\nimport { ClickAwayListener } from '@mui/base/ClickAwayListener';\nimport Popper from '@mui/material/Popper';\n\nexport default function FilterDropdown({\n filters,\n setFilters,\n getApprovalForms,\n entityList,\n assignedUserList,\n requesterList,\n setUserPreferences,\n setCurrentPage,\n archived\n}: IFilterDropdownProps) {\n const [anchorEl, setAnchorEl] = useState(null);\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const [loadingFilters, setLoadingFilters] = useState(false);\n const [tempFilters, setTempFilters] = useState({ ...filters });\n const [numberOfFilters, setNumberOfFilters] = useState(0);\n\n const calculateNumberOfFilters = useCallback((newFilters) => {\n return (\n Number(!!newFilters?.state.length) +\n Number(!!newFilters?.entity_ids?.length) +\n Number(!!newFilters?.assigned_user_ids?.length) +\n Number(!!newFilters?.requested_by_users?.length)\n );\n }, []);\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n setDropdownOpen((prev) => !prev);\n };\n\n const handleFilterChange = (name: string, value: IOptionType[] | number[] | boolean) => {\n setTempFilters({ ...tempFilters, [name]: value });\n };\n\n const handleApplyFilters = () => {\n setFilters({ ...tempFilters });\n setCurrentPage(1);\n sessionStorage.setItem(`approvalFormsTablePage`, 1);\n setUserPreferences(null, null, null, { ...tempFilters }, null);\n getApprovalForms(1, null, null, null, tempFilters, archived);\n setDropdownOpen(false);\n setAnchorEl(null);\n setNumberOfFilters(calculateNumberOfFilters(tempFilters));\n };\n\n const handleResetFilters = () => {\n setTempFilters({ ...defaultFilters });\n setUserPreferences(null, null, null, { ...defaultFilters }, null);\n setFilters({ ...defaultFilters });\n getApprovalForms(null, null, null, null, defaultFilters, archived);\n setDropdownOpen(false);\n setAnchorEl(null);\n setNumberOfFilters(0);\n };\n\n const entityOptions = useMemo(() => {\n return entityList?.map((entity) => ({\n name: entity.name,\n id: entity.id\n }));\n }, [entityList]);\n\n const assignedUserOptions = useMemo(() => {\n return assignedUserList?.map((user) => ({\n name: user.name,\n id: user.id\n }));\n }, [assignedUserList]);\n\n const requesterOptions = useMemo(() => {\n return requesterList?.map((requester) => ({\n name: requester.name,\n id: requester.id\n }));\n }, [requesterList]);\n\n useEffect(() => {\n setTempFilters({ ...filters });\n setNumberOfFilters(calculateNumberOfFilters(filters));\n }, [filters, calculateNumberOfFilters]);\n\n return (\n <ClickAwayListener onClickAway={() => setDropdownOpen(false)}>\n <Box>\n <Tooltip title=\"Filter\" placement=\"top\" arrow>\n <Badge\n badgeContent={numberOfFilters}\n sx={{ '& .MuiBadge-badge': { backgroundColor: '#E37D7A', color: '#FFF' } }}\n >\n <IconButton\n id=\"filter-approval-forms-button\"\n sx={\n dropdownOpen ? { ...styles.iconButton, ...styles.iconButtonOpen } : styles.iconButton\n }\n onClick={handleClick}\n >\n {loadingFilters ? <CircularProgress size={24} /> : <SortIcon />}\n </IconButton>\n </Badge>\n </Tooltip>\n <Popper\n id=\"filter-approval-forms-dropdown-popover\"\n sx={styles.popover}\n open={dropdownOpen}\n anchorEl={anchorEl}\n placement=\"bottom-end\"\n >\n <Box sx={styles.filterPopoverContent}>\n <Box sx={styles.scrollableFilters}>\n <Box sx={styles.filterPopoverHeader}>\n <Button\n id=\"reset-filters-button\"\n variant=\"contained\"\n endIcon={<CancelIcon />}\n sx={styles.clearButton}\n onClick={handleResetFilters}\n >\n Clear all\n </Button>\n <Button\n id=\"apply-filters-button\"\n variant=\"contained\"\n onClick={handleApplyFilters}\n sx={styles.applyButton}\n >\n Apply\n </Button>\n </Box>\n <Box sx={{ ...styles.filterOptionContainer, marginBottom: '20px' }} id=\"state-filter\">\n State\n <MultiSelect\n handleFilterChange={(name, value) => handleFilterChange(name, value)}\n selectOptions={defaultFilterOptions.state}\n name={'state'}\n filters={tempFilters.state}\n />\n </Box>\n <Box\n sx={{ ...styles.filterOptionContainer, marginBottom: '20px' }}\n id=\"entity-filter\"\n >\n Entity\n <MultiSelect\n handleFilterChange={(name, value) => handleFilterChange(name, value)}\n selectOptions={entityOptions}\n name={'entity_ids'}\n filters={tempFilters.entity_ids}\n />\n </Box>\n <Box\n sx={{ ...styles.filterOptionContainer, marginBottom: '20px' }}\n id=\"assigned-user-filter\"\n >\n Assigned User\n <MultiSelect\n handleFilterChange={(name, value) => handleFilterChange(name, value)}\n selectOptions={assignedUserOptions}\n name={'assigned_user_ids'}\n filters={tempFilters.assigned_user_ids}\n />\n </Box>\n <Box\n sx={{ ...styles.filterOptionContainer, marginBottom: '20px' }}\n id=\"requester-filter\"\n >\n Requested By\n <MultiSelect\n handleFilterChange={(name, value) => handleFilterChange(name, value)}\n selectOptions={requesterOptions}\n name={'requested_by_users'}\n filters={tempFilters.requested_by_users}\n />\n </Box>\n </Box>\n </Box>\n </Popper>\n </Box>\n </ClickAwayListener>\n );\n}\n","import React from 'react';\nimport { Box, IconButton, FormControlLabel, Switch } from '@mui/material';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { IDropdownProps } from '../types';\nimport { styles } from '../styles';\n\nconst SortableField = ({\n field,\n handleFieldSwitchChange\n}: {\n field: IDropdownProps['sortableColumns'][0];\n handleFieldSwitchChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) => {\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n useSortable({ id: field.id });\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition\n };\n\n return (\n <Box key={field.id} sx={styles.sortableField} style={style} ref={setNodeRef} {...attributes}>\n <IconButton ref={setActivatorNodeRef} {...listeners}>\n <DragIndicatorIcon sx={{ fontSize: 16 }} />\n </IconButton>\n <FormControlLabel\n sx={\n !field.enabled\n ? { ...styles.sortableSwitchLabels, ...styles.labelActive }\n : styles.sortableSwitchLabels\n }\n control={\n <Switch\n sx={field.enabled ? styles.switchActive : styles.switch}\n checked={field.enabled}\n onChange={handleFieldSwitchChange}\n name={field.id}\n />\n }\n label={field.label}\n labelPlacement=\"start\"\n />\n </Box>\n );\n};\n\nexport default SortableField;\n","import React, { useRef, useState, useCallback, useEffect } from 'react';\nimport {\n Autocomplete,\n Box,\n Button,\n IconButton,\n Stack,\n Skeleton,\n Tab,\n Tabs,\n TextField,\n Typography\n} from '@mui/material';\nimport { ArrowCircleLeft as ArrowCircleLeftIcon, Close as CloseIcon } from '@mui/icons-material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport {\n ITabs,\n IApprovalTemplate,\n IApprovalManagers,\n IApprovers,\n IAssignableUsers,\n IApprovalForm,\n IAnswer,\n IAttachedDocument\n} from '../types';\nimport { classes } from './styles';\nimport Api from '../API';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { DebouncedFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport QuestionFieldGenerator, {\n IApplicantQuestion,\n IFieldChoice\n} from '../../Components/Utilities/QuestionFieldGenerator';\nimport { FileWithPath } from 'react-dropzone';\nimport DocTypeIcon from '../../Components/Utilities/DocTypeIcon';\nimport AttachmentSelector from '../../Components/Utilities/AttachmentSelector';\nimport { serialize } from 'object-to-formdata';\nimport moment from 'moment';\nimport { IJob, IPermissions } from '../../Jobs/types';\nimport LoadingButton from '../../Components/Buttons/LoadingButton';\nimport { scrollToElement } from '../../utils/scroll-to-element';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { emailIsValid } from '../../Components/Utilities/emailIsValid';\nimport { getPermissions } from '../../../shared/permissionHelpers';\n\nconst urlParams = new URLSearchParams(window.location.search);\nconst template_id = urlParams.get('form_id'); // used for new approval created from the approval forms page\nconst jobId = urlParams.get('job_id'); // used for new approval created from the candidate application\nconst applicationId = urlParams.get('application_id'); // used for new approval created from the candidate application\nconst cognologyRecordId = urlParams.get('cognology_record_id'); // used for new approval created from the application export cognology\nconst newUI = urlParams.get('new_ui'); // used for new approval created from the NEW UI application export cognology\nconst BASE_URL = window.location.origin;\n\nconst createApprovalFormQuestionsObject = (questions: IApplicantQuestion[]) => {\n const newObject = {};\n questions.forEach((question: IApplicantQuestion) => {\n if (question.type === 'RankField') {\n newObject[question.id] = {\n ...question,\n data: {}\n };\n question.field_choices.forEach((choice: IFieldChoice, index: number) => {\n newObject[question.id]['data'][choice.id] = index + 1;\n });\n } else if (question.type === 'JobReferenceLookupField') {\n newObject[question.id] = {\n ...question,\n data: 'validation bypass'\n };\n } else {\n newObject[question.id] = {\n ...question,\n data: ''\n };\n }\n });\n return newObject;\n};\n\nexport const createQuestionErrorsObject = (questions: IApplicantQuestion[]) => {\n const errors: Record<number, string> = {};\n questions.forEach((question: IApplicantQuestion) => {\n errors[question.id] = '';\n });\n return errors;\n};\n\nexport const containsDuplicates = (array: string[]) => {\n return new Set(array).size !== array.length;\n};\n\nconst getAnswerAttributes = (id: number, value: any, answers?: IAnswer[]) => {\n const questionObj = answers?.find((answer: IAnswer) => answer.field_id === value.id);\n if (value.type === 'RadioButtonField' || value.type === 'SelectField') {\n return {\n field_id: id,\n field_choice_id: value.data,\n id: questionObj?.id\n };\n } else if (value.type === 'CheckBoxField') {\n return {\n field_id: id,\n field_choice_ids: Object.entries(value.data)\n .filter(([_, value]) => value)\n .map(([id]) => id),\n id: questionObj?.id\n };\n } else {\n return {\n field_id: id,\n data: value.data,\n id: questionObj?.id\n };\n }\n};\n\nexport default function NewApproval({\n apiKey,\n entityApprovalAdmin,\n requisitionId, // used for editing new approval\n templateId // used for editing new approval\n}: {\n apiKey: string;\n entityApprovalAdmin: string;\n requisitionId?: number;\n templateId?: number;\n}) {\n const [approvalTemplateData, setApprovalTemplateData] = useState<IApprovalTemplate | null>(null);\n const [loadingData, setLoadingData] = useState<boolean>(false);\n const [loadingApprovers, setLoadingApprovers] = useState<boolean>(false);\n const [loadingEmailTemplates, setLoadingEmailTemplates] = useState<boolean>(false);\n const [loadingAssignableUsers, setLoadingAssignableUsers] = useState<boolean>(false);\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n const [approvers, setApprovers] = useState<\n {\n email: string;\n name?: string;\n id?: number;\n destroyed?: boolean;\n error?: string;\n mandatoryBlank?: boolean;\n }[]\n >([]);\n const [approvalManagers, setApprovalManagers] = useState<IApprovalManagers[]>([]);\n const [notes, setNotes] = useState<string>('');\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const [emailTemplates, setEmailTemplates] = useState<\n [string, Array<{ id: number; name: string }>][]\n >([]);\n const [approvalEmailTemplate, setApprovalEmailTemplate] = useState<number | null>(null);\n const [approvalAdministrator, setApprovalAdministrator] = useState<string>(\n entityApprovalAdmin || ''\n );\n const [administratorList, setAdministratorList] = useState<IApprovers[]>([]);\n const [fileList, setFileList] = useState<FileWithPath[]>([]);\n const [attachedDocuments, setAttachedDocuments] = useState<IAttachedDocument[]>([]);\n const [questions, setQuestions] = useState<IApplicantQuestion[]>([]);\n const [emailTemplateQuestions, setEmailTemplateQuestions] = useState<IApplicantQuestion[]>([]);\n const [approvalFormQuestions, setApprovalFormQuestions] = useState(() =>\n createApprovalFormQuestionsObject([])\n );\n const [questionErrors, setQuestionErrors] = useState(() =>\n createQuestionErrorsObject(questions || [])\n );\n\n const fieldRefs = {\n positionTitle: useRef<HTMLDivElement>(null),\n approvalManagers: useRef<HTMLDivElement>(null),\n questions: useRef<Array<HTMLDivElement | null>>([])\n };\n\n const [assignableUsers, setAssignableUsers] = useState<IAssignableUsers[]>([]);\n const [assignedUser, setAssignedUser] = useState<number | null>(null);\n const [fetchingCSV, setFetchingCSV] = useState<boolean>(false);\n const [positionTitle, setPositionTitle] = useState<string>('');\n const [approvalFormData, setApprovalFormData] = useState<IApprovalForm>({});\n const [loadingFormData, setLoadingFormData] = useState<boolean>(false);\n const [dataInitialized, setDataInitialized] = useState<boolean>(true);\n const [jobs, setJobs] = useState<IJob[]>([]);\n const [job, setJob] = useState<number | null>(null);\n const [applications, setApplications] = useState<{ id: number; candidate_name: string }[]>([]);\n const [application, setApplication] = useState<number | null>(null);\n const [fetchingJobs, setFetchingJobs] = useState<boolean>(false);\n const [fetchingApplications, setFetchingApplications] = useState<boolean>(false);\n const [fetchingInitialJobsAndApplications, setFetchingInitialJobsAndApplications] =\n useState<boolean>(false);\n const [positionTitleError, setPositionTitleError] = useState<string>('');\n const [approvalAnsweredIds, setApprovalAnsweredIds] = useState<number[] | null>(null);\n const [userPermissions, setUserPermissions] = useState<Record<string, Record<string, boolean>>>(\n {}\n );\n\n const showPositionTitle = !Number(approvalTemplateData?.config?.hide_position_title);\n\n async function getUserPermissions(apiKey: string) {\n try {\n const data = await getPermissions(apiKey);\n const allRoles: Record<string, Record<string, boolean>> = {};\n data.roles.forEach((role: IPermissions) =>\n role.feature_groups.forEach((group) => {\n !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n })\n );\n setUserPermissions(allRoles);\n } catch (error) {\n setSnackbar({\n message: 'There was an error getting permissions',\n state: 'error'\n });\n }\n }\n\n // Validate approval question fields\n const validateQuestions = () => {\n let isValid = true;\n let questionError: number | undefined = undefined;\n\n questions\n .filter((question) => (requisitionId ? approvalAnsweredIds?.includes(question.id) : true))\n .forEach((question: IApplicantQuestion, index: number) => {\n let tempErrorMessage = '';\n if (question.type === 'CheckBoxField') {\n const isChecked = Object.values(approvalFormQuestions[question.id].data).some(\n (value) => value === true\n );\n if (question.required && !isChecked) {\n tempErrorMessage = 'Must select at least one option';\n if (questionError === undefined) {\n questionError = index;\n }\n isValid = false;\n }\n } else if (question.type === 'RankField') {\n const duplicates = containsDuplicates(\n Object.values(approvalFormQuestions[question.id].data)\n );\n if (duplicates) {\n tempErrorMessage = 'Ranked choices must be unique';\n if (questionError === undefined) {\n questionError = index;\n }\n isValid = false;\n }\n } else if (question.required && !approvalFormQuestions[question.id].data) {\n tempErrorMessage =\n question.type !== 'RadioButtonField'\n ? 'This field is required'\n : 'Must select an option';\n if (questionError === undefined) {\n questionError = index;\n }\n isValid = false;\n }\n setQuestionErrors((prev) => ({\n ...prev,\n [question.id]: tempErrorMessage\n }));\n });\n\n if (questionError !== undefined) {\n scrollToElement(fieldRefs.questions.current[questionError]);\n }\n\n return isValid;\n };\n\n const validatePositionTitle = () => {\n if (!showPositionTitle) return true;\n\n setPositionTitleError('');\n\n if (!positionTitle) {\n setPositionTitleError('Position title is required to create an approval form.');\n scrollToElement(fieldRefs.positionTitle);\n return false;\n }\n\n return true;\n };\n\n const validateApprovalManagers = () => {\n const newApprovers = [...approvers];\n let isValid = true;\n newApprovers.map((approver, i) => {\n approver.error = '';\n if (!approver.email) {\n newApprovers[i].error = 'Please choose an approver or delete the row.';\n isValid = false;\n }\n if (!emailIsValid(approver.email)) {\n newApprovers[i].error = 'Please enter a valid email address.';\n isValid = false;\n }\n });\n if (!isValid) {\n scrollToElement(fieldRefs.approvalManagers);\n }\n setApprovers(newApprovers);\n return isValid;\n };\n\n const answers_attributes = {};\n const sorted_questions = Object.entries(approvalFormQuestions).sort(\n (a, b) => a[1].position - b[1].position\n );\n sorted_questions.forEach(([id, value], index) => {\n if (requisitionId && !approvalAnsweredIds?.includes(value.id)) return;\n const answers = approvalFormData.answers;\n answers_attributes[index] = getAnswerAttributes(id, value, answers);\n });\n\n const approvers_attributes = {};\n approvers.map((approver, i) => {\n approvers_attributes[i] = {\n id: approver.id,\n email: approver.email.includes('*') ? approver.email.slice(1) : approver.email,\n position: 0,\n required: approver.email.includes('*'),\n _destroy: approver.destroyed\n };\n });\n\n const documents_attributes = {};\n fileList.map((document, i) => {\n documents_attributes[i] = {\n attached: document\n };\n });\n\n const approvalAttributes = {\n requisition_form_id: template_id || templateId,\n cognology_record_id: cognologyRecordId,\n position_title: positionTitle,\n note: notes,\n email_template_id: approvalEmailTemplate,\n assigned_user_id: assignedUser,\n documents_attributes,\n to_email: approvalAdministrator,\n application_id: application,\n approvers_attributes\n };\n\n const approvalData = {\n requisition: {\n ...approvalAttributes,\n answers_attributes\n },\n new_ui: newUI ? true : undefined\n };\n\n const handleSaveDraft = async () => {\n const formData = serialize({ ...approvalData, draft: true });\n\n try {\n const response = await fetch(`${BASE_URL}/api/v4/requisitions`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey\n },\n body: formData\n }).then((res) => res.json());\n if (response.success === 'Draft created') {\n window.location.href = response.url;\n setSnackbar({\n message: 'Approval form was saved successfully',\n state: 'success'\n });\n } else {\n throw new Error('Error saving Approval form');\n }\n } catch (error) {\n setSnackbar({\n message: `Something went wrong. Please try again. ${error}`,\n state: 'error'\n });\n }\n };\n\n const handleSubmitApproval = async () => {\n if (!validatePositionTitle() || !validateQuestions() || !validateApprovalManagers()) return;\n const formData = serialize(approvalData);\n\n try {\n const response = await fetch(`${BASE_URL}/api/v4/requisitions`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey\n },\n body: formData\n }).then((res) => res.json());\n if (response.success === 'Approval created') {\n window.location.href = response.url;\n setSnackbar({\n message: 'Approval form created successfully',\n state: 'success'\n });\n } else {\n throw response.errors;\n }\n } catch (error) {\n setSnackbar({\n message: error.error || `Something went wrong. Please try again. ${error}`,\n state: 'error'\n });\n }\n };\n\n const updateApprovalForm = async (state?: string) => {\n if (!state && (!validatePositionTitle() || !validateQuestions() || !validateApprovalManagers()))\n return;\n const formData = state ? serialize({ ...approvalData, draft: true }) : serialize(approvalData);\n\n try {\n const response = await fetch(`${BASE_URL}/api/v4/requisitions/${requisitionId}`, {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey\n },\n body: formData\n }).then((res) => res.json());\n if (response.success === 'Approval updated') {\n window.location.href = response.url;\n setSnackbar({\n message: 'Approval form updated successfully',\n state: 'success'\n });\n } else {\n throw response.errors;\n }\n } catch (error) {\n setSnackbar({\n message: `Something went wrong. Please try again. ${error}`,\n state: 'error'\n });\n }\n };\n\n const getApprovalTemplateData = useCallback(async () => {\n setLoadingData(true);\n const approvalTemplateId = Number(template_id) || templateId;\n if (!approvalTemplateId) return;\n try {\n const data = await Api.getApprovalTemplate(approvalTemplateId);\n setApprovalTemplateData(data.res);\n } catch (err) {\n setSnackbar({\n message: `Failed to fetch approval template data, ${err}`,\n state: 'error'\n });\n } finally {\n setLoadingData(false);\n }\n }, [templateId]);\n\n const handleLookUpButton = async (questionId: number, positionId: number) => {\n setFetchingCSV(true);\n try {\n const data = await Api.getCSVData(questionId, positionId);\n setApprovers(\n data.res.approvers.map((approver: string) => ({\n email: approver.toLowerCase(),\n destroyed: false\n }))\n );\n questions?.map((question) => {\n const answerExist = data.res.fields[0][question.original_title];\n if (answerExist) {\n setApprovalFormQuestions((prev) => ({\n ...prev,\n [question.id]: {\n ...prev[question.id],\n data:\n question.type === 'SelectField' || question.type === 'RadioButtonField'\n ? question.field_choices.find((e) => e.name === answerExist)?.id\n : answerExist\n }\n }));\n }\n });\n } catch (err) {\n setSnackbar({\n message: `Failed to fetch csv data, ${err}`,\n state: 'error'\n });\n } finally {\n setFetchingCSV(false);\n }\n };\n\n async function getEmailTemplates(apiKey: string) {\n setLoadingEmailTemplates(true);\n try {\n const data = await Api.getEmailTemplates();\n setEmailTemplates(data.res.email_templates);\n } catch (err) {\n setSnackbar({\n message: `Failed to fetch email templates, ${err}`,\n state: 'error'\n });\n } finally {\n setLoadingEmailTemplates(false);\n }\n }\n\n async function getApproverManagers() {\n setLoadingApprovers(true);\n try {\n const data = await Api.getApprovalManagers({\n override_limit: true,\n limit: 2000,\n sort: 'name',\n sort_order: 'asc'\n });\n setApprovalManagers(data.res.requisition_managers);\n } catch (err) {\n setSnackbar({\n message: `Failed to fetch approval managers, ${err}`,\n state: 'error'\n });\n } finally {\n setLoadingApprovers(false);\n }\n }\n\n async function getAssignableUsers(apiKey: string) {\n setLoadingAssignableUsers(true);\n try {\n const data = await Api.getAssignableUsers();\n setAssignableUsers(data.res.assignable_users);\n } catch (err) {\n setSnackbar({\n message: `Failed to fetch assignable users, ${err}`,\n state: 'error'\n });\n } finally {\n setLoadingAssignableUsers(false);\n }\n }\n\n const getApprovalFormData = useCallback(async () => {\n if (!requisitionId) return;\n setLoadingFormData(true);\n try {\n const data = await Api.getApprovalForm(requisitionId);\n setApprovalFormData(data.res);\n\n // Only previous answered questions will be displayed, newly added questions will not show in edit page\n const ids = data.res.answers.map((answer) => parseInt(answer.field_id));\n setApprovalAnsweredIds(ids);\n } catch (err) {\n setSnackbar({\n message: `Failed to fetch approval form data, ${err}`,\n state: 'error'\n });\n } finally {\n setLoadingFormData(false);\n }\n }, [requisitionId]);\n\n const headerRefs = useRef(null);\n\n const TabPanel = useCallback((props: ITabs) => {\n const { children, tabValue, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={tabValue !== index}\n id={`approvals-tabpanel-${index}`}\n aria-labelledby={`approvals-tab-${index}`}\n {...other}\n >\n {tabValue === index && <>{children}</>}\n </div>\n );\n }, []);\n\n const TabProps = useCallback((index: number) => {\n return {\n id: `approvals-tab-${index}`,\n 'aria-controls': `approvals-tabpanel-${index}`\n };\n }, []);\n\n useEffect(() => {\n setIndicatorWidth(headerRefs?.current.clientWidth - 32);\n getApprovalTemplateData();\n }, [getApprovalTemplateData]);\n\n useEffect(() => {\n getApprovalFormData();\n }, [getApprovalFormData]);\n\n useEffect(() => {\n setDataInitialized(false);\n if (!approvalTemplateData) return;\n const fullAdministratorList = entityApprovalAdmin\n ? [\n { label: `Entity Default (${entityApprovalAdmin})`, value: entityApprovalAdmin },\n ...approvalTemplateData.approvers\n ]\n : [...approvalTemplateData.approvers];\n setAdministratorList(fullAdministratorList);\n if (template_id) {\n // Only enabled questions for New approval form\n const questionsData = approvalTemplateData.fields.filter(\n (question) => question.enabled && !question.for_email_template\n );\n const emailTemplateQuestionsData = approvalTemplateData.fields.filter(\n (question) => question.enabled && question.for_email_template\n );\n setQuestions(questionsData);\n setEmailTemplateQuestions(emailTemplateQuestionsData);\n\n // initial data load for NEW approval form\n questionsData && setApprovalFormQuestions(createApprovalFormQuestionsObject(questionsData));\n\n // If no default approvers set in approval template but has default approvers in entity level\n if (approvalTemplateData.config.default_approvers) {\n setApprovers(\n approvalTemplateData.config.default_approvers.split(',').map((approver) => ({\n email: approver,\n destroyed: false,\n mandatoryBlank: approver === '*'\n }))\n );\n } else if (approvalTemplateData.entity_default_approver) {\n setApprovers(\n approvalTemplateData.entity_default_approver.map((approver) => ({\n email: approver.required ? `*${approver.email}` : approver.email,\n destroyed: false,\n mandatoryBlank: approver.required\n }))\n );\n }\n setApprovalEmailTemplate(approvalTemplateData?.email_template_id);\n if (jobId && applicationId) {\n setFetchingInitialJobsAndApplications(true);\n getApplications(Number(jobId));\n setJob(Number(jobId));\n setApplication(Number(applicationId));\n }\n } else {\n // All questions for EDIT approval form which includes answered but disabled questions\n const questionsData = approvalTemplateData.fields.filter(\n (question) => !question.for_email_template\n );\n const emailTemplateQuestionsData = approvalTemplateData.fields.filter(\n (question) => question.for_email_template\n );\n setQuestions(questionsData);\n setEmailTemplateQuestions(emailTemplateQuestionsData);\n\n // initial data load for EDIT approval form\n showPositionTitle && setPositionTitle(approvalFormData.position_title);\n setNotes(approvalFormData.note);\n setApprovalEmailTemplate(approvalFormData.email_template?.id);\n fullAdministratorList.some(\n (approver) => approver.value === approvalFormData.approval_administrator\n )\n ? setApprovalAdministrator(approvalFormData.approval_administrator)\n : setApprovalAdministrator('');\n const formApprovers =\n approvalFormData.approvers?.map((approver, index) => ({\n email: approver.email,\n id: approver.id,\n destroyed: false,\n name: approver.name,\n mandatoryBlank:\n approvalTemplateData?.config?.default_approvers?.split(',')?.[index] === '*'\n })) || [];\n setApprovers(formApprovers);\n const formAssignedUser = assignableUsers.find(\n (user) => `${user.firstname} ${user.lastname}` === approvalFormData.assigned_user\n );\n setAssignedUser(formAssignedUser?.id);\n setAttachedDocuments(approvalFormData.documents);\n const questionObj = createApprovalFormQuestionsObject(questionsData);\n approvalFormData.answers?.forEach((answer) => {\n const questionId = Object.keys(questionObj).find(\n (key) => questionObj[key].id === answer.field_id\n );\n if (questionId) {\n if (\n answer.type === 'TextField' ||\n answer.type === 'TextAreaField' ||\n answer.type === 'CsvDataLookupField' ||\n answer.type === 'DateField'\n ) {\n questionObj[questionId].data = answer.answer;\n } else if (answer.type === 'SelectField' || answer.type === 'RadioButtonField') {\n questionObj[questionId].data = answer.field_choice_ids[0];\n } else if (answer.type === 'RankField') {\n const rankObj = {};\n answer.field_choice_ids.map((id, i) => {\n rankObj[id] = (i + 1).toString();\n });\n questionObj[questionId].data = rankObj;\n } else if (answer.type === 'CheckBoxField') {\n const checkBoxObj = {};\n answer.field_choice_ids.map((id) => (checkBoxObj[id] = true));\n questionObj[questionId].data = checkBoxObj;\n } else if (answer.type === 'AvailabilityField') {\n const convertAnswer = (answer: Record<string, string>) =>\n Object.keys(answer).reduce(\n (acc, key, index) => ({ ...acc, [index + 1]: answer[key] }),\n {}\n );\n questionObj[questionId].data = convertAnswer(answer.answer);\n }\n }\n });\n setApprovalFormQuestions(questionObj);\n if (approvalFormData.application) {\n setFetchingInitialJobsAndApplications(true);\n getApplications(approvalFormData.application.job_id);\n setJob(approvalFormData.application.job_id);\n setApplication(approvalFormData.application.id);\n }\n }\n }, [approvalTemplateData, approvalFormData, assignableUsers]);\n\n useEffect(() => {\n setDataInitialized(true);\n }, [approvalFormQuestions]);\n\n useEffect(() => {\n if (applications.length > 0) {\n setFetchingInitialJobsAndApplications(false);\n }\n }, [applications]);\n\n useEffect(() => {\n getApproverManagers();\n getEmailTemplates(apiKey);\n getAssignableUsers(apiKey);\n getJobs(apiKey);\n getUserPermissions(apiKey);\n }, [apiKey]);\n\n const handleAddApprover = () => {\n setApprovers([...approvers, { email: '', destroyed: false }]);\n };\n\n const removeApprover = (i: number) => {\n if (approvers.length > 1) {\n const newApprovers = [...approvers];\n if (newApprovers[i].id) {\n newApprovers[i].destroyed = true;\n } else {\n newApprovers.splice(i, 1);\n }\n setApprovers(newApprovers);\n }\n };\n\n const handleEmailChange = (i: number, value: IApprovalManagers) => {\n const newApprovers = [...approvers];\n newApprovers[i].email = value ? value.email : '';\n setApprovers(newApprovers);\n };\n\n const handleDeleteAttachment = (index: number) => {\n const updatedFileList = fileList.filter((file, i) => i !== index);\n\n setFileList(updatedFileList);\n };\n\n const templates = emailTemplates.reduce(\n (acc, currVal) => {\n const entity: string = currVal[0];\n const arrayOfTemplates: { id: number; name: string }[] = currVal[1];\n return [...acc, ...arrayOfTemplates.map((template) => ({ ...template, entity }))];\n },\n [] as { id: number; name: string; entity: string }[]\n );\n\n const handleDeleteDocument = async (i: number, id: number) => {\n try {\n await Api.putApprovalForm(requisitionId, {\n requisition: { documents_attributes: { [i]: { id: id, _destroy: true } } }\n });\n } catch (err) {\n setSnackbar({\n message: `Failed to delete document, ${err}`,\n state: 'error'\n });\n } finally {\n const newAttachedDocuments = [...attachedDocuments];\n newAttachedDocuments.splice(i, 1);\n setAttachedDocuments(newAttachedDocuments);\n }\n };\n\n async function getJobs(apiKey: string) {\n setFetchingJobs(true);\n try {\n const data = await Api.getJobs();\n setJobs(data.res.jobs);\n } catch (err) {\n setSnackbar({\n message: `Failed fetching job options. Please try again. ${error}`,\n state: 'error'\n });\n } finally {\n setFetchingJobs(false);\n }\n }\n\n async function getApplications(jobId: number) {\n setFetchingApplications(true);\n try {\n const data = await Api.getApplications(jobId);\n setApplications(data.res);\n } catch (err) {\n setSnackbar({\n message: `Failed fetching application options. Please try again. ${error}`,\n state: 'error'\n });\n } finally {\n setFetchingApplications(false);\n }\n }\n\n const handleJobChange = (id: number) => {\n if (id === job) return;\n setApplications([]);\n setJob(id);\n getApplications(id);\n setApplication(null);\n };\n\n const handleDeleteJob = () => {\n setJob(null);\n setApplication(null);\n setApplications([]);\n };\n\n const handleEmailInput = (i: number, value: string) => {\n const newApprovers = [...approvers];\n newApprovers[i].email = value;\n setApprovers(newApprovers);\n };\n\n return (\n <Box sx={classes.jobPageContainer}>\n <Box sx={classes.jobPageHeader}>\n {loadingData ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <h1>{approvalFormData?.position_title || approvalTemplateData?.name}</h1>\n )}\n </Box>\n <Box sx={classes.tabsContainer}>\n <Tabs\n value={0}\n variant=\"scrollable\"\n scrollButtons={false}\n aria-label=\"Approvals\"\n sx={{\n ...classes.tabs,\n '& .MuiTabs-indicator': { ...classes.tabIndicator, maxWidth: indicatorWidth + 'px' }\n }}\n >\n <Tab\n ref={headerRefs}\n label={requisitionId ? 'Edit approval form' : 'New approval form'}\n {...TabProps(0)}\n />\n </Tabs>\n </Box>\n <Box>\n <TabPanel tabValue={0} index={0} />\n </Box>\n <Box sx={classes.backToJobButton}>\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n onClick={() => {\n window.location.href = '/admin/requisitions';\n }}\n >\n <IconButton sx={classes.iconGrey}>\n <ArrowCircleLeftIcon />\n </IconButton>\n <Box>Back to approval forms</Box>\n </Stack>\n </Box>\n <Box sx={{ padding: 2 }}>\n {loadingData || !dataInitialized ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <>\n {showPositionTitle && (\n <Box sx={{ paddingBottom: 3 }}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setPositionTitle(value);\n }}\n label=\"Vacancy position title\"\n defaultValue={positionTitle}\n styles={{ width: '300px' }}\n required\n innerRef={fieldRefs.positionTitle}\n error={positionTitleError}\n />\n </Box>\n )}\n {questions?.map(\n (question, index) =>\n (!approvalAnsweredIds || approvalAnsweredIds.includes(question.id)) && (\n <Box sx={{ paddingBottom: 3 }} key={question.id}>\n <QuestionFieldGenerator\n question={question}\n questionRef={(el) => (fieldRefs.questions.current[index] = el)}\n questionError={questionErrors[question.id]}\n onChangeCallback={(id, value) => {\n setApprovalFormQuestions((prev) => ({\n ...prev,\n [id]: {\n ...prev[id],\n data: value\n }\n }));\n setQuestionErrors((prev) => ({\n ...prev,\n [id]: value || !question.required ? '' : 'This field is required'\n }));\n }}\n handleLookUpButton={handleLookUpButton}\n answer={approvalFormQuestions[question.id]?.data}\n fetchingCSV={fetchingCSV}\n />\n </Box>\n )\n )}\n {/* TODO: Hide this section for now */}\n {/* {emailTemplateQuestions.length > 0 && (\n <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>\n Email Template Questions\n </Stack>\n )}\n {emailTemplateQuestions?.map((question, index) => (\n <Box sx={{ paddingBottom: 3 }} key={question.id}>\n <QuestionFieldGenerator\n question={question}\n questionRef={(el) => (fieldRefs.questions.current[index] = el)}\n questionError={questionErrors[question.id]}\n onChangeCallback={(id, value) => {\n setApprovalFormQuestions((prev) => ({\n ...prev,\n [id]: {\n ...prev[id],\n data: value\n }\n }));\n setQuestionErrors((prev) => ({\n ...prev,\n [id]: value || !question.required ? '' : 'This field is required'\n }));\n }}\n answer={approvalFormQuestions[question.id]?.data}\n disabled={true}\n />\n </Box>\n ))} */}\n </>\n )}\n </Box>\n {userPermissions?.['Approval Forms']?.[\n `Add/attach documents (complementary to 'Submit Approval Form')`\n ] && (\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ paddingBottom: 1 }}>\n <Typography sx={{ ...classes.sectionHeader, paddingY: 0 }}>Documents</Typography>\n <Typography sx={classes.sectionSubtitle}>\n {/* Please upload a copy of this roles Position Description below */}\n Please upload required documents below\n </Typography>\n </Stack>\n <AttachmentSelector\n performUpload={false}\n apiKey={apiKey}\n setFileList={(file) => {\n setFileList((previous) => [...previous, ...file]);\n }}\n maxSize={50000000}\n />\n {attachedDocuments &&\n attachedDocuments.map((document, index) => (\n <Box key={index} sx={classes.fileContainer}>\n <Box sx={classes.fileIconContainer}>\n <Box sx={classes.fileIcon}>\n {DocTypeIcon(document?.attached_file_name?.split('.').pop())}\n </Box>\n <Box>\n <Box sx={classes.fileName}>{document.attached_file_name}</Box>\n <Box sx={classes.fileSize}>\n {moment(document.created_at).format('Do MMMM YYYY[,] h:mma')}\n </Box>\n </Box>\n </Box>\n <IconButton onClick={() => handleDeleteDocument(index, document.id)}>\n <DeleteIcon sx={{ color: '#D6827D' }} />\n </IconButton>\n </Box>\n ))}\n {fileList &&\n fileList.map(\n (file, index) =>\n file.name && (\n <Box key={index} sx={classes.fileContainer}>\n <Box sx={classes.fileIconContainer}>\n <Box sx={classes.fileIcon}>{DocTypeIcon(file?.name?.split('.').pop())}</Box>\n <Box>\n <Box sx={classes.fileName}>{file.name}</Box>\n <Box sx={classes.fileSize}>\n {moment(file.lastModified).format('Do MMMM YYYY[,] h:mma')}\n </Box>\n </Box>\n </Box>\n <IconButton onClick={() => handleDeleteAttachment(index)}>\n <DeleteIcon sx={{ color: '#D6827D' }} />\n </IconButton>\n </Box>\n )\n )}\n </Box>\n )}\n {(requisitionId\n ? userPermissions?.['Approval Forms']?.['Edit the assigned user of a requisition']\n : userPermissions?.['Approval Forms']?.['Assign User To Requisition']) &&\n !approvalTemplateData?.config.hide_assigned_user && (\n <>\n {loadingAssignableUsers ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>Assigned User</Stack>\n <Autocomplete\n disablePortal\n options={assignableUsers}\n getOptionLabel={(option) => `${option.firstname} ${option.lastname}`}\n value={assignableUsers.find((e) => e.id === assignedUser) || null}\n onChange={(event, value) =>\n value ? setAssignedUser(value.id) : setAssignedUser(null)\n }\n sx={{ width: '300px', paddingTop: 3, ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pßro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Assigned user\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n </Box>\n )}\n </>\n )}\n {loadingData ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <>\n {!Number(approvalTemplateData?.config.hide_approval_administrator) &&\n administratorList && (\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>\n Approval Administrator\n </Stack>\n <Autocomplete\n disablePortal\n options={administratorList}\n getOptionLabel={(option) => option.label}\n value={\n administratorList.find((manager) => manager.value === approvalAdministrator) ||\n null\n }\n onChange={(event, value) =>\n value ? setApprovalAdministrator(value.value) : setApprovalAdministrator('')\n }\n sx={{ width: '300px', paddingTop: 3, ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pßro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Send to\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n </Box>\n )}\n </>\n )}\n {userPermissions?.['Approval Forms']?.[\n `Add approvers (complementary to 'Submit Approval Form')`\n ] && (\n <>\n {loadingApprovers ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <Box sx={{ padding: 2 }}>\n <Stack sx={classes.sectionHeader} ref={fieldRefs.approvalManagers}>\n Approvers\n </Stack>\n {approvers.map((approver, index) => {\n const deleted = approver?.name?.includes('deleted');\n const mandatory = approver.email.includes('*');\n const mandatoryBlank = approver.mandatoryBlank;\n let value = deleted\n ? approver\n : approvalManagers.find(\n (manager) =>\n (mandatory ? approver.email.slice(1) : approver.email) === manager.email\n );\n if (!value) {\n value = approvers.find(\n (manager) =>\n (mandatory ? approver.email.slice(1) : approver.email) === manager.email\n );\n if (!value) value = mandatory ? approver.email.slice(1) : approver.email;\n }\n const approverOptions = [\n ...approvalTemplateData?.entity_default_approver,\n ...approvalManagers\n ];\n return (\n <Box>\n <React.Fragment key={`${value?.id}-${index}`}>\n {!approver.destroyed && (\n <Box sx={classes.approversContainer}>\n {approverOptions.length === 0 ? (\n <FormTextField\n label=\"Email\"\n onChange={(e) => {\n handleEmailInput(index, e.target.value);\n }}\n draggable={mandatory}\n value={mandatory ? approver.email.slice(1) : approver.email}\n styles={{ width: '290px' }}\n error={approver.error ? 'Please enter a proper email address' : ''}\n />\n ) : (\n <Autocomplete\n key={`${value?.id}-${index}`}\n disablePortal\n disabled={!mandatoryBlank && (mandatory || deleted)}\n options={approverOptions}\n getOptionLabel={(option) =>\n option?.name?.includes('deleted')\n ? approvalFormData.state === 'draft'\n ? 'Please select an approval manager'\n : option.name\n : option.email\n }\n value={value || null}\n onChange={(event, value) => handleEmailChange(index, value)}\n sx={{ width: '450px', ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <>\n <TextField\n {...params}\n label=\"Email\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n {approver.error && (\n <Stack\n sx={{ color: '#E37D7A', fontSize: '13px', paddingLeft: 1 }}\n >\n {approver.error}\n </Stack>\n )}\n </>\n )}\n renderOption={(\n props: React.HTMLAttributes<HTMLLIElement>,\n option: INewApprovalOptions\n ) => (\n <Box {...props} key={option.id}>\n {option.email}\n </Box>\n )}\n />\n )}\n {!mandatoryBlank && !mandatory && !deleted && (\n <Button\n sx={{ '&:hover': { backgroundColor: 'inherit' } }}\n onClick={() => removeApprover(index)}\n >\n <CloseIcon color=\"warning\" sx={{ cursor: 'pointer' }} />\n </Button>\n )}\n </Box>\n )}\n </React.Fragment>\n </Box>\n );\n })}\n <Box sx={{ paddingTop: 1 }}>\n <Button\n sx={{\n ...classes.draftButton,\n fontSize: '12px',\n padding: '4px 12px',\n height: '30px'\n }}\n onClick={handleAddApprover}\n >\n Add approver\n </Button>\n </Box>\n </Box>\n )}\n </>\n )}\n {userPermissions?.['Approval Forms']?.['Manage Approval Form Notes'] && (\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>Notes</Stack>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setNotes(value);\n }}\n label=\"Add Note\"\n defaultValue={notes}\n styles={{ width: '300px' }}\n />\n </Box>\n )}\n {loadingEmailTemplates || loadingData || loadingFormData ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <>\n {!approvalTemplateData?.config.hide_email_template && (\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>Email template</Stack>\n <Autocomplete\n disablePortal\n options={templates}\n groupBy={(option) => option.entity}\n getOptionLabel={(option) => option.name}\n value={templates.find((e) => e.id === approvalEmailTemplate) || null}\n onChange={(event, value) =>\n value ? setApprovalEmailTemplate(value.id) : setApprovalEmailTemplate(null)\n }\n sx={{ width: '300px', paddingTop: 3, ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pßro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n sx={{ input: { '&::placeholder': { opacity: 1 } } }}\n label=\"Select email template\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"(Use default template)\"\n />\n )}\n />\n </Box>\n )}\n </>\n )}\n {fetchingInitialJobsAndApplications ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <>\n {parseInt(approvalTemplateData?.config?.enable_approval_template_for_applications) ===\n 1 && (\n <Box sx={{ padding: 2 }}>\n <Stack sx={{ ...classes.sectionHeader, paddingBottom: 2 }}>Application</Stack>\n <Autocomplete\n disablePortal\n options={jobs}\n getOptionLabel={(option) => `${option.reference} - ${option.title}`}\n value={jobs.find((e) => e.id === job) || null}\n onChange={(event, value) => (value ? handleJobChange(value.id) : handleDeleteJob())}\n sx={{ width: '300px', paddingTop: 3, ...sharedClasses.formAutocomplete }}\n loading={fetchingJobs}\n loadingText={'Loading jobs...'}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pßro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Job\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Select Job\"\n />\n )}\n />\n <Autocomplete\n disablePortal\n options={applications}\n getOptionLabel={(option) => `${option.id} - ${option.candidate_name}`}\n value={applications.find((e) => e.id === application) || null}\n noOptionsText={job ? 'No applications found for this job' : 'Please choose a job'}\n onChange={(event, value) => {\n value ? setApplication(value.id) : setApplication(null);\n }}\n loading={fetchingApplications}\n loadingText={'Loading applications...'}\n sx={{ width: '300px', paddingTop: 5, ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pßro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Application\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Select Application\"\n />\n )}\n />\n </Box>\n )}\n </>\n )}\n <Box sx={classes.footerButtons}>\n <Button\n sx={classes.cancelButton}\n onClick={() => {\n window.location.href = requisitionId\n ? `/admin/requisitions/${requisitionId}`\n : '/admin/requisitions';\n }}\n >\n Cancel\n </Button>\n {(template_id || approvalFormData.state === 'draft') && (\n <LoadingButton\n id=\"save-approval-draft-button\"\n type=\"submit\"\n task={() =>\n approvalFormData.state === 'draft' ? updateApprovalForm('draft') : handleSaveDraft()\n }\n sx={{ ...classes.draftButton, minWidth: 100 }}\n >\n Save draft\n </LoadingButton>\n )}\n\n <LoadingButton\n id=\"submit-new-approval\"\n type=\"submit\"\n task={() => (template_id ? handleSubmitApproval() : updateApprovalForm())}\n sx={{ ...sharedClasses.saveButton }}\n >\n Submit\n </LoadingButton>\n </Box>\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction, useState, useRef, useEffect, useCallback } from 'react';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { Box, Autocomplete, TextField, Modal, Button, CircularProgress } from '@mui/material';\nimport { classes } from './styles';\nimport { INewApprovalOptions } from '../types';\nimport Api from '../API';\n\nexport default function NewApprovalModal({\n apiKey,\n newApprovalOptions,\n setNewApprovalOptions,\n isDialogOpen,\n setIsDialogOpen,\n setSnackbar,\n templateArchived,\n setTemplateArchived\n}: {\n apiKey: string;\n newApprovalOptions: INewApprovalOptions;\n setNewApprovalOptions: (approvals: INewApprovalOptions) => void;\n isDialogOpen: boolean;\n setIsDialogOpen: Dispatch<SetStateAction<boolean>>;\n setSnackbar: Dispatch<\n SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n >;\n templateArchived: boolean;\n setTemplateArchived: Dispatch<SetStateAction<boolean>>;\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [approvalTemplate, setApprovalTemplate] = useState(null);\n const [isNavigating, setIsNavigating] = useState(false);\n\n const fieldRefs = {\n approvalTemplate: useRef<HTMLInputElement>(null)\n };\n\n const fetchApprovalTemplates = useCallback(async () => {\n setIsLoading(true);\n try {\n const { res } = await Api.getApprovalTemplates(\n {\n archived: false,\n override_limit: true,\n limit: 500,\n sort: 'name',\n sort_order: 'ASC'\n }\n );\n setNewApprovalOptions(res?.requisition_forms.filter((form) => form.name.trim() !== ''));\n } catch (error) {\n setSnackbar({\n message: `There was an error getting approval templates, ${error.errors}`,\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n const navigateToNewApproval = () => {\n if (approvalTemplate === null) return;\n window.location.href = `/admin/requisitions/new?form_id=${approvalTemplate.id}`;\n setIsNavigating(true);\n };\n\n const handleClose = () => {\n setIsDialogOpen(false);\n setApprovalTemplate(null);\n };\n\n useEffect(() => {\n newApprovalOptions?.length === 0 && !isLoading && fetchApprovalTemplates();\n }, [fetchApprovalTemplates]);\n\n useEffect(() => {\n if (templateArchived) {\n fetchApprovalTemplates();\n setTemplateArchived(false);\n }\n }, [templateArchived, setTemplateArchived, fetchApprovalTemplates]);\n\n return (\n <Box>\n <Modal open={isDialogOpen} onClose={handleClose} aria-labelledby=\"new-approval-modal\">\n <Box sx={classes.actionsModal}>\n <Box sx={{ padding: '12px 0px 30px 0px' }}>\n <Box id=\"new-approval-modal-title\" sx={classes.modalHeader}>\n New approval form\n </Box>\n </Box>\n <Box sx={{ marginTop: '1.75rem' }}>\n <Box sx={classes.modalFormLine}>\n <Box sx={{ position: 'relative' }}>\n <Autocomplete\n disablePortal\n options={newApprovalOptions}\n ref={fieldRefs.approvalTemplate}\n getOptionLabel={(option) => option?.name}\n id=\"state-region-province\"\n loading={newApprovalOptions?.length < 1}\n loadingText={\n isLoading ? 'Loading approval templates...' : 'No approval templates'\n }\n value={approvalTemplate}\n onChange={(event, value) => setApprovalTemplate(value)}\n sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Select an approval template\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n renderOption={(\n props: React.HTMLAttributes<HTMLLIElement>,\n option: INewApprovalOptions\n ) => (\n <Box {...props} key={option.id}>\n {option.name}\n </Box>\n )}\n />\n </Box>\n </Box>\n </Box>\n <Box>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box sx={classes.modalActions}>\n <Button\n disableElevation\n sx={{ ...classes.buttonRedLight }}\n variant=\"text\"\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-new-approval-button\"\n type=\"submit\"\n sx={classes.modalEditButton}\n disabled={approvalTemplate === null}\n onClick={navigateToNewApproval}\n >\n {isNavigating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n </Box>\n </Box>\n </Modal>\n </Box>\n );\n}\n","import React, { useState, useRef, useEffect, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport { classes } from './styles';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport Api from '../API';\n\nexport default function NewApprovalModalFromCandidate({\n apiKey,\n jobId,\n applicationId\n}: {\n apiKey: string;\n jobId: number;\n applicationId: number;\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [approvalTemplate, setApprovalTemplate] = useState(null);\n const [isNavigating, setIsNavigating] = useState(false);\n const [templateOptions, setTemplateOptions] = useState([]);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n\n const fieldRefs = {\n approvalTemplate: useRef<HTMLInputElement>(null)\n };\n\n const fetchEnabledApprovalTemplates = useCallback(async () => {\n setIsLoading(true);\n try {\n const { res } = await Api.getEnabledApprovalTemplates();\n setTemplateOptions(res?.enabled_requisition_forms);\n } catch (error) {\n setSnackbar({\n message: `There was an error getting approval templates, ${error.errors}`,\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n const navigateToNewApproval = () => {\n if (approvalTemplate === null) return;\n window.location.href = `/admin/requisitions/new?form_id=${approvalTemplate.id}&job_id=${jobId}&application_id=${applicationId}`;\n setIsNavigating(true);\n };\n\n useEffect(() => {\n templateOptions?.length === 0 && !isLoading && fetchEnabledApprovalTemplates();\n }, [fetchEnabledApprovalTemplates]);\n\n return (\n <Box>\n <Button\n disableRipple\n variant=\"contained\"\n onClick={() => {\n setIsDialogOpen(true);\n }}\n sx={{\n padding: '0px 4px 1px 4px',\n fontSize: '10px',\n background: '#98A4AE',\n color: 'black',\n fontWeight: 'bold',\n fontFamily: 'inherit',\n margin: '0px 1px',\n '&:hover': {\n background: '#88939c'\n },\n '&:focus': {\n outline: 'none'\n }\n }}\n >\n Create an approval\n </Button>\n <Modal\n open={isDialogOpen}\n onClose={() => setIsDialogOpen(false)}\n aria-labelledby=\"new-approval-modal\"\n >\n <Box sx={classes.actionsModal}>\n <Box sx={{ padding: '12px 0px 30px 0px' }}>\n <Box id=\"new-approval-modal-title\" sx={classes.modalHeader}>\n New approval\n </Box>\n </Box>\n <Box sx={{ marginTop: '1.75rem' }}>\n <Box sx={classes.modalFormLine}>\n <Box sx={{ position: 'relative' }}>\n <Autocomplete\n disablePortal\n options={templateOptions}\n ref={fieldRefs.approvalTemplate}\n getOptionLabel={(option) => option?.name}\n id=\"state-region-province\"\n loading={templateOptions?.length < 1}\n loadingText={\n isLoading ? 'Loading approval templates...' : 'No approval templates enabled'\n }\n value={approvalTemplate}\n onChange={(event, value) => setApprovalTemplate(value)}\n sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Select an approval template\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n />\n )}\n />\n </Box>\n </Box>\n </Box>\n <Box>\n <CloseIcon onClick={() => setIsDialogOpen(false)} sx={classes.closeIcon} />\n <Box sx={classes.modalActions}>\n <Button\n disableElevation\n sx={{ ...classes.buttonRedLight }}\n variant=\"text\"\n onClick={() => {\n setIsDialogOpen(false);\n }}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-new-approval-button\"\n type=\"submit\"\n sx={classes.modalEditButton}\n disabled={approvalTemplate === null}\n onClick={navigateToNewApproval}\n >\n {isNavigating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n </Box>\n </Box>\n </Modal>\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { useState, useRef, useEffect, useCallback, Dispatch, SetStateAction } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport { classes } from './styles';\nimport { INewApprovalOptions } from '../types';\nimport { IGetApprovalPublicLinks, IApprovalPublicLink } from '../ApprovalTemplates/types';\nimport Api from '../API';\nimport { DebouncedFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\n\nexport default function NewApprovalPublicLink({\n apiKey,\n newApprovalOptions,\n setNewApprovalOptions,\n isPublicLinkDialogOpen,\n setIsPublicLinkDialogOpen,\n getApprovalPublicLinks,\n setSnackbarState,\n editingApprovalPublicLink,\n setEditingApprovalPublicLink\n}: {\n apiKey: string;\n newApprovalOptions: INewApprovalOptions;\n setNewApprovalOptions: (approvals: INewApprovalOptions) => void;\n isPublicLinkDialogOpen: boolean;\n setIsPublicLinkDialogOpen: Dispatch<SetStateAction<boolean>>;\n getApprovalPublicLinks: IGetApprovalPublicLinks;\n setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n editingApprovalPublicLink?: IApprovalPublicLink;\n setEditingApprovalPublicLink?: Dispatch<SetStateAction<IApprovalPublicLink | null>>;\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [approvalTemplate, setApprovalTemplate] = useState(null);\n const [publicLinkName, setPublicLinkName] = useState('');\n const [isCreating, setIsCreating] = useState(false);\n\n const fieldRefs = {\n approvalTemplate: useRef<HTMLInputElement>(null)\n };\n\n const fetchApprovalTemplates = useCallback(async () => {\n setIsLoading(true);\n try {\n const { res } = await Api.getApprovalTemplates(\n {\n archived: false,\n override_limit: true,\n limit: 500,\n sort: 'name',\n sort_order: 'ASC'\n }\n );\n setNewApprovalOptions(res?.requisition_forms.filter((form) => form.name.trim() !== ''));\n } catch (error) {\n setSnackbarState({\n message: error?.errors,\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n const handleApprovalPublicLinkAction = async () => {\n setIsCreating(true);\n const approvalPublicLinkObj = {\n name: publicLinkName || editingApprovalPublicLink?.name,\n requisition_form_id: approvalTemplate?.id || editingApprovalPublicLink?.approval_template_id,\n };\n try {\n const response = editingApprovalPublicLink ? await Api.updateApprovalPublicLink(\n editingApprovalPublicLink?.id,\n {\n requisition_public_link: approvalPublicLinkObj\n }\n ) : await Api.createApprovalPublicLink(\n {\n requisition_public_link: approvalPublicLinkObj\n }\n );\n if (response.res?.success) {\n setSnackbarState({\n message: response.res?.success,\n state: 'success'\n });\n }\n } catch (error) {\n setSnackbarState({\n message: error?.error,\n state: 'error'\n });\n } finally {\n setIsCreating(false);\n setIsPublicLinkDialogOpen(false);\n getApprovalPublicLinks();\n }\n };\n\n useEffect(() => {\n newApprovalOptions?.length === 0 && !isLoading && fetchApprovalTemplates();\n }, [fetchApprovalTemplates]);\n\n useEffect(() => {\n setPublicLinkName('');\n setApprovalTemplate(null);\n }, [isPublicLinkDialogOpen]);\n\n return (\n <Box>\n <Modal\n open={isPublicLinkDialogOpen}\n onClose={() => {\n setIsPublicLinkDialogOpen(false);\n setEditingApprovalPublicLink(null);\n }}\n aria-labelledby=\"new-approval-public-link-modal\"\n >\n <Box sx={classes.actionsModal}>\n <Box sx={{ padding: '12px 0px 30px 0px' }}>\n <Box id=\"new-approval-modal-title\" sx={classes.modalHeader}>\n {`${editingApprovalPublicLink ? 'Edit' : 'New'} approval public link`}\n </Box>\n </Box>\n <Box sx={{ marginTop: '1.75rem' }}>\n <Box sx={{ ...classes.modalFormLine, marginBottom: '40px !important' }}>\n <Box sx={{ position: 'relative' }}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setPublicLinkName(value);\n }}\n id=\"public_link_name\"\n label=\"Name\"\n defaultValue={editingApprovalPublicLink?.name}\n required\n styles={{ width: '250px' }}\n />\n </Box>\n </Box>\n <Box sx={classes.modalFormLine}>\n <Autocomplete\n disablePortal\n options={newApprovalOptions}\n ref={fieldRefs.approvalTemplate}\n getOptionLabel={(option) => option?.name}\n id=\"approval-templates\"\n loading={newApprovalOptions?.length < 1}\n loadingText={\n isLoading ? 'Loading approval templates...' : 'No approval templates'\n }\n value={approvalTemplate || newApprovalOptions.find(template => template.id === editingApprovalPublicLink?.approval_template_id)}\n onChange={(event, value) => setApprovalTemplate(value)}\n sx={{ width: '400px', ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Select an approval template\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n />\n </Box>\n </Box>\n <Box>\n <CloseIcon\n onClick={() => {\n setIsPublicLinkDialogOpen(false);\n setEditingApprovalPublicLink(null);\n }}\n sx={classes.closeIcon}\n />\n <Box sx={classes.modalActions}>\n <Button\n disableElevation\n sx={{ ...classes.buttonRedLight }}\n variant=\"text\"\n onClick={() => {\n setIsPublicLinkDialogOpen(false);\n setEditingApprovalPublicLink(null);\n }}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-new-approval-button\"\n type=\"submit\"\n sx={classes.modalEditButton}\n disabled={approvalTemplate === null && editingApprovalPublicLink === null}\n onClick={handleApprovalPublicLinkAction}\n >\n {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : (editingApprovalPublicLink ? 'Update' : 'Save')}\n </Button>\n </Box>\n </Box>\n </Box>\n </Modal>\n </Box>\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport Popover from '@mui/material/Popover';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { INoteProps } from './types';\nimport { classes } from '../Job/Applications/styles';\n\nconst NotePopover = ({\n setApprovalForms,\n anchorEl,\n handleCloseNote,\n approvalFormId,\n approvalFormNote,\n apiKey,\n setSnackbarState\n}: INoteProps) => {\n const [noteBody, setNoteBody] = useState('');\n const [savingNote, setSavingNote] = useState(0);\n\n async function saveNote() {\n setSavingNote((prevValue) => prevValue + 1);\n try {\n const response = await fetch(`/api/v4/requisitions/${approvalFormId}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n requisition: {\n note: noteBody\n }\n })\n }).then((res) => res.json());\n if (response.success) {\n setApprovalForms((prevApprovalForms) => {\n const newApprovalForms = [...prevApprovalForms];\n const approvalFormIndex = newApprovalForms.findIndex(\n (approvalForm) => approvalForm.id === approvalFormId\n );\n newApprovalForms[approvalFormIndex].note = noteBody\n return newApprovalForms;\n });\n setNoteBody('');\n handleCloseNote();\n }\n } catch (error) {\n setSnackbarState({\n message: `Error saving note, ${error}`,\n state: 'error'\n });\n } finally {\n setSavingNote((prevValue) => prevValue - 1);\n }\n }\n\n useEffect(() => {\n if (!anchorEl) return;\n setNoteBody('');\n }, [anchorEl]);\n\n return (\n <Popover\n id={anchorEl ? 'edit-note-popover' : undefined}\n sx={classes.editNotePopover}\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={handleCloseNote}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <>\n <Box sx={classes.notesTitle}>Add approval form note</Box>\n <TextField\n id=\"note-input\"\n sx={classes.noteInput}\n label=\"Note\"\n multiline\n fullWidth\n maxRows={4}\n variant=\"outlined\"\n defaultValue={approvalFormNote || noteBody}\n onChange={(e) => setNoteBody(e.target.value)}\n InputLabelProps={{\n shrink: true\n }}\n />\n <Box id=\"notes-button-container\" sx={classes.notesButtonContainer}>\n <Button sx={classes.notesCancelButton} endIcon={<CloseIcon />} onClick={handleCloseNote}>\n Cancel\n </Button>\n <Button\n id=\"save-note-approval-forms-button\"\n sx={classes.notesEditSaveButton}\n endIcon={savingNote ? <CircularProgress size={16} /> : <DoneIcon />}\n onClick={() => {\n saveNote();\n }}\n disabled={!!savingNote}\n >\n {approvalFormNote ? \"Update\" : \"Save\"}\n </Button>\n </Box>\n </>\n </Popover>\n );\n};\n\nexport default NotePopover;\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport { Box, Modal, Button } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../API';\n\nexport default function AddSystemField({\n apiKey,\n approvalTemplateId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n getQuestions\n}: {\n apiKey: string;\n modalsOpen: Record<string, boolean>;\n setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n approvalTemplateId: number;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n getQuestions: any;\n}) {\n const [isCreating, setIsCreating] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const selectStatusRef = useRef(null);\n const [systemFields, setSystemFields] = useState([]);\n const [selectedField, setSelectedField] = useState(null);\n const [errorField, setErrorField] = useState('');\n\n const handleClose = () => {\n setSelectedField(null);\n setErrorField('');\n setModalsOpen((prev) => ({ ...prev, addSystemField: false }));\n };\n\n const getSystemFields = useCallback(async (isMounted: { current: boolean }) => {\n if (isMounted.current) setIsLoading(true);\n try {\n const response = await fetch(`/api/v4/system_fields?form_type=RequisitionForm`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n if (isMounted.current) setSystemFields(\n response?.system_fields.map(\n (field: { id: number; title: string }) => `${field.id} - ${field.title}`\n )\n );\n } catch (error) {\n if (isMounted.current) setSnackbar({\n message: `Failed to fetch system fields, ${error}`,\n state: 'error'\n });\n } finally {\n if (isMounted.current) setIsLoading(false);\n }\n }, [apiKey]);\n\n useEffect(() => {\n const isMounted = { current: true };\n getSystemFields(isMounted);\n return () => { isMounted.current = false };\n }, [getSystemFields]);\n\n const handleSubmit = async () => {\n if (!selectedField) {\n setErrorField('This field is required');\n return;\n }\n setIsCreating(true);\n try {\n const data = await Api.addSystemField(\n approvalTemplateId,\n selectedField.split('-')[0]\n );\n setSnackbar({\n message: 'Field has been added',\n state: 'success'\n });\n handleClose();\n setSelectedField(null);\n setErrorField('');\n } catch (error) {\n console.log(error);\n } finally {\n setIsCreating(false);\n getQuestions();\n }\n };\n\n return (\n <Modal\n open={modalsOpen.addSystemField}\n onClose={handleClose}\n aria-labelledby=\"add-system-field-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box id=\"add-system-title\" sx={classes.actionModalHeader}>\n Add system field\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"add-system-modal-content\"\n aria-label=\"Add System Field Modal Content\"\n >\n <Box role=\"form\" id=\"add-system-form\" aria-label=\"Add System Field form\">\n <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={selectStatusRef}>\n <Virtualize\n value={selectedField}\n passOptions={systemFields}\n setValue={(value: string) => {\n setSelectedField(value);\n setErrorField('');\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '700px',\n marginTop: '20px'\n }}\n label=\"Select a system field\"\n loading={isLoading}\n loadingText=\"Loading system fields...\"\n />\n\n {errorField && <Box sx={{ ...classes.formError, top: '63px' }}>{errorField}</Box>}\n </Box>\n </Box>\n </Box>\n <Box sx={classes.modalFooterSmallerSection}>\n <Button id=\"close-add-system-button\" sx={classes.modalCancelButton} onClick={handleClose}>\n Cancel\n </Button>\n <Button\n id=\"submit-add-system-button\"\n type=\"submit\"\n sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState } from 'react';\nimport {\n Box,\n Table,\n TableHead,\n TableCell,\n TableBody,\n TableRow,\n Stack,\n Divider\n} from '@mui/material';\nimport { IAvailabilityConfig } from '../../../Components/Utilities/QuestionFieldViewer';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport { classes } from '../styles';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { TimePicker } from '@mui/x-date-pickers/TimePicker';\nimport dayjs, { Dayjs } from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IAvailabilityTableData } from '../../types';\n\nconst DayRow = ({\n payrollDay,\n day,\n allowBreak,\n onChange,\n data,\n disabled = false\n}: {\n payrollDay: number;\n day: string;\n allowBreak: boolean;\n onChange: any;\n data: AvailabilityPreviewData;\n disabled?: boolean;\n}) => {\n const [fromTime, setFromTime] = React.useState<Dayjs | null>(\n dayjs(data?.from_time || '00:00', 'HH:mm')\n );\n const [toTime, setToTime] = React.useState<Dayjs | null>(\n dayjs(data?.to_time || '00:00', 'HH:mm')\n );\n\n dayjs.extend(duration);\n\n const calculateTotalTime = ({\n from = fromTime,\n to = toTime,\n breakTime = data?.break_time\n }: {\n from?: Dayjs | null;\n to?: Dayjs | null;\n breakTime?: number;\n }) => {\n const shiftStart = dayjs(from);\n let shiftEnd = dayjs(to);\n\n // Check if the shift is overnight\n if (shiftEnd.isBefore(shiftStart)) {\n // If so, add 24 hours to the end time\n shiftEnd = shiftEnd.add(1, 'day');\n }\n const shiftTime = dayjs.duration(shiftEnd.diff(shiftStart)).format('HH:mm');\n const timeDiff = shiftTime.split(':');\n const totalTime = Number(timeDiff[0]) + Number(timeDiff[1]) / 60 - (breakTime || 0) / 60;\n return Math.round(totalTime * 100) / 100;\n };\n\n return (\n <TableRow>\n <TableCell sx={classes.availabilityTableBody}>\n <Stack alignItems=\"center\">{payrollDay}</Stack>\n </TableCell>\n <TableCell sx={classes.availabilityTableBody}>\n <Stack alignItems=\"center\">{day}</Stack>\n </TableCell>\n <TableCell sx={classes.availabilityTableBody}>\n <Stack alignItems=\"center\">\n <FormTextField\n value={data?.heading_1}\n onChange={(event) => onChange({ ...data, heading_1: event.target.value })}\n styles={classes.tableTextfield}\n draggable={disabled}\n />\n </Stack>\n </TableCell>\n <TableCell sx={classes.availabilityTableBody}>\n <Stack alignItems=\"center\">\n <FormTextField\n value={data?.heading_2}\n onChange={(event) => onChange({ ...data, heading_2: event.target.value })}\n styles={classes.tableTextfield}\n draggable={disabled}\n />\n </Stack>\n </TableCell>\n <TableCell sx={classes.availabilityTableBody}>\n <Stack flexDirection=\"row\" justifyContent=\"space-around\" columnGap=\"8px\">\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <TimePicker\n views={['hours', 'minutes']}\n format=\"HH:mm\"\n mask=\"__:__\"\n value={dayjs(fromTime)}\n disableOpenPicker\n onChange={(newValue) => {\n const timeString = newValue?.format('HH:mm');\n setFromTime(dayjs(timeString, 'HH:mm'));\n const newData = {\n ...data,\n from_time:\n timeString === 'Invalid Date'\n ? dayjs('00:00', 'HH:mm').format('HH:mm')\n : dayjs(timeString, 'HH:mm').format('HH:mm')\n };\n onChange({\n ...newData,\n total_time: calculateTotalTime({ from: dayjs(timeString, 'HH:mm') })\n });\n }}\n slotProps={{\n textField: {\n InputProps: {\n disableUnderline: true,\n sx: {\n width: '70px',\n border: '1px solid #DDDDDD',\n padding: '0px 8px',\n margin: '2px 0px',\n borderRadius: '6px',\n '& .MuiInputBase-input': { padding: '6px', fontSize: '12px' }\n }\n },\n variant: 'standard'\n }\n }}\n disabled={disabled}\n />\n </LocalizationProvider>\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <TimePicker\n views={['hours', 'minutes']}\n format=\"HH:mm\"\n mask=\"__:__\"\n value={dayjs(toTime)}\n disableOpenPicker\n onChange={(newValue) => {\n const timeString = newValue?.format('HH:mm');\n setToTime(dayjs(timeString, 'HH:mm'));\n const newData = {\n ...data,\n to_time:\n timeString === 'Invalid Date'\n ? dayjs('00:00', 'HH:mm').format('HH:mm')\n : dayjs(timeString, 'HH:mm').format('HH:mm')\n };\n onChange({\n ...newData,\n total_time: calculateTotalTime({ to: dayjs(timeString, 'HH:mm') })\n });\n }}\n disabled={disabled}\n slotProps={{\n textField: {\n InputProps: {\n disableUnderline: true,\n sx: {\n width: '70px',\n border: '1px solid #DDDDDD',\n padding: '0px 8px',\n margin: '2px 0px',\n borderRadius: '6px',\n '& .MuiInputBase-input': { padding: '6px', fontSize: '12px' }\n }\n },\n variant: 'standard'\n }\n }}\n />\n </LocalizationProvider>\n </Stack>\n </TableCell>\n {allowBreak && (\n <TableCell sx={classes.availabilityTableBody}>\n <Stack alignItems=\"center\">\n <FormSelectField\n isDisabled={disabled}\n options={[\n { value: '0', label: '0 mins' },\n { value: '15', label: '15 mins' },\n { value: '30', label: '30 mins' },\n { value: '45', label: '45 mins' },\n { value: '60', label: '1 hour' }\n ]}\n defaultValue={data?.break_time?.toString()}\n styles={{\n minWidth: '80px',\n '& .MuiInputBase-input': { fontSize: '12px', margin: 'unset' },\n '& .MuiInputBase-input.MuiSelect-select': {\n display: 'flex',\n height: '18px',\n alignItems: 'center'\n }\n }}\n onChange={(value) => {\n const newData = { ...data, break_time: Number(value) };\n onChange({\n ...newData,\n total_time: calculateTotalTime({ breakTime: Number(value) })\n });\n }}\n />\n </Stack>\n </TableCell>\n )}\n <TableCell sx={classes.availabilityTableBody}>\n <Stack alignItems=\"center\">{data?.total_time}</Stack>\n </TableCell>\n </TableRow>\n );\n};\n\ntype AvailabilityPreviewData = {\n heading_1: string;\n heading_2: string;\n from_time: string;\n to_time: string;\n break_time?: number;\n total_time: number;\n};\n\nexport default function AvailabilityPreview({\n availabilityConfig,\n onChange,\n answer,\n disabled = false,\n error,\n innerRef,\n removePadding\n}: {\n availabilityConfig: IAvailabilityConfig;\n onChange?: any;\n answer?: Record<string, IAvailabilityTableData>;\n disabled?: boolean;\n error?: string;\n innerRef?: React.Ref<HTMLDivElement>;\n removePadding?: boolean;\n}) {\n const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n const weekDuration = availabilityConfig.week_duration === 'weekly' ? 7 : 14;\n\n const defaultState = Array.from({ length: weekDuration }, (_, index) => ({\n heading_1: '',\n heading_2: '',\n from_time: '00:00',\n to_time: '00:00',\n break_time: 0,\n total_time: 0\n })).reduce(\n (acc, val, index) => {\n acc[index + 1] = val;\n return acc;\n },\n {} as { [key: string]: AvailabilityPreviewData }\n );\n const calculateTotalShiftsAndHours = (newState: typeof defaultState | typeof answer) => {\n if (!newState) return { totalShifts: 0, totalHours: 0 };\n const totalShifts = Object.values(newState).filter((e) => e.total_time !== 0).length;\n const totalHours = Object.values(newState)\n .map((e) => e.total_time)\n .reduce((acc, val) => acc + val, 0);\n return { totalShifts, totalHours };\n };\n const [state, setState] = useState(answer || defaultState);\n const [totalShiftsAndHours, setTotalShiftsAndHours] = useState(\n calculateTotalShiftsAndHours(answer || defaultState)\n );\n\n const onRowChange = (index: number) => (value: AvailabilityPreviewData) => {\n const newState = { ...state };\n newState[index] = value;\n setTotalShiftsAndHours(calculateTotalShiftsAndHours(newState));\n setState(newState);\n onChange(newState);\n };\n\n const tableHeaderStyling = {\n ...classes.availabilityTableHeader,\n ...(removePadding && { padding: 'unset' })\n };\n\n return (\n <Box sx={{ padding: removePadding ? 0 : 1, overflow: 'auto' }} ref={innerRef}>\n <Table sx={{ backgroundColor: 'inherit', tableLayout: 'auto !important' }}>\n <TableHead>\n <TableRow>\n <TableCell sx={tableHeaderStyling}>\n <Stack alignItems=\"center\" minWidth=\"75px\">\n Payroll Day\n </Stack>\n </TableCell>\n <TableCell sx={tableHeaderStyling}>\n <Stack alignItems=\"center\">Day</Stack>\n </TableCell>\n <TableCell sx={tableHeaderStyling}>\n <Stack alignItems=\"center\">{availabilityConfig.heading_1}</Stack>\n </TableCell>\n <TableCell sx={tableHeaderStyling}>\n <Stack alignItems=\"center\">{availabilityConfig.heading_2}</Stack>\n </TableCell>\n <TableCell sx={tableHeaderStyling}>\n <Stack alignItems=\"center\" height=\"14px\">\n Shift times\n </Stack>\n <Stack flexDirection=\"row\" justifyContent=\"space-around\">\n <Stack fontSize=\"10px\" height=\"16px\">\n From\n </Stack>\n <Stack fontSize=\"10px\" height=\"16px\">\n To\n </Stack>\n </Stack>\n </TableCell>\n {availabilityConfig.allow_break && (\n <TableCell sx={tableHeaderStyling}>\n <Stack alignItems=\"center\">Break</Stack>\n </TableCell>\n )}\n <TableCell sx={tableHeaderStyling}>\n <Stack alignItems=\"center\" minWidth=\"75px\">\n Paid Hours\n </Stack>\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {Array.from({ length: weekDuration }, (_, index) => (\n <React.Fragment key={index}>\n {index === 7 && (\n <TableRow>\n {Array(availabilityConfig.allow_break ? 7 : 6)\n .fill(_)\n .map((e, index) => (\n <TableCell sx={classes.tableDivider} key={index}>\n <Divider />\n </TableCell>\n ))}\n </TableRow>\n )}\n <DayRow\n payrollDay={index + 1}\n day={days[(index + availabilityConfig.week_start_day) % days.length].slice(0, 3)}\n allowBreak={availabilityConfig.allow_break}\n onChange={onRowChange(index + 1)}\n data={state[index + 1]}\n disabled={disabled}\n />\n </React.Fragment>\n ))}\n <TableRow>\n <TableCell sx={classes.availabilityTableBody} colSpan={4}>\n <Stack alignItems=\"center\">TOTAL</Stack>\n </TableCell>\n <TableCell\n sx={classes.availabilityTableBody}\n colSpan={availabilityConfig.allow_break ? 2 : 1}\n >\n <Stack alignItems=\"center\">{totalShiftsAndHours.totalShifts} Shifts</Stack>\n </TableCell>\n <TableCell sx={classes.availabilityTableBody}>\n <Stack alignItems=\"center\">{totalShiftsAndHours.totalHours}</Stack>\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n {error && <Box sx={{ ...sharedClasses.errorBoxCheckbox, marginLeft: '14px' }}>{error}</Box>}\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Switch, FormControlLabel } from '@mui/material';\nimport { classes } from '../styles';\n\nexport default function BooleanFieldSwitch({\n fieldValue,\n setFieldValue,\n label,\n isSystemField\n}: {\n fieldValue: boolean;\n setFieldValue: Dispatch<SetStateAction<boolean>>;\n label: string;\n isSystemField: boolean;\n}) {\n const labelSx = !fieldValue\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels;\n\n return (\n <FormControlLabel\n sx={labelSx}\n control={\n <Switch\n sx={fieldValue ? classes.switchActive : classes.switch}\n checked={fieldValue}\n disabled={isSystemField}\n onChange={() => setFieldValue(!fieldValue)}\n />\n }\n label={label}\n labelPlacement=\"end\"\n />\n );\n}\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport { Box, Modal, Button, CircularProgress } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { MultilineFormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport Api from '../../API';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from '@dnd-kit/core';\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableChoice from './SortableChoice';\nimport { IUserPermissions } from '../../../Components/sharedTypes';\nimport { useFieldChoiceList } from '../../../hooks/useFieldChoiceList';\n\nexport default function NewEmailTemplateField({\n apiKey,\n approvalTemplateId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n editingQuestion,\n getQuestions,\n userPermissions\n}: {\n apiKey: string;\n modalsOpen: Record<string, boolean>;\n setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n approvalTemplateId: number;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n editingQuestion?: any;\n getQuestions: any;\n userPermissions: IUserPermissions;\n}) {\n const [isCreating, setIsCreating] = useState(false);\n const [label, setLabel] = useState('');\n const [errorLabel, setErrorLabel] = useState('');\n const [errorField, setErrorField] = useState('');\n const [errorChoices, setErrorChoices] = useState('');\n const {\n choiceList,\n setChoiceList,\n addChoice,\n removeChoice,\n clearChoices,\n updateChoice,\n switchChoices\n } = useFieldChoiceList();\n\n const labelRef = useRef<HTMLInputElement>(null);\n const fieldTypeRef = useRef<HTMLInputElement>(null);\n const choicesRef = useRef<HTMLInputElement>(null);\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n function handleDragEnd(event) {\n const { active, over } = event;\n switchChoices(active.id, over.id);\n }\n\n const setDefaultValue = useCallback(async () => {\n if (editingQuestion) {\n setLabel(editingQuestion.title);\n setChoiceList(editingQuestion.field_choices);\n }\n }, [editingQuestion]);\n\n const handleClose = () => {\n setModalsOpen((prev) => ({ ...prev, newEmailTemplateField: false }));\n clearData();\n };\n\n const handleSubmit = async (approvalTemplateId: number) => {\n if (!label) {\n labelRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorLabel('This field is required');\n return;\n }\n setIsCreating(true);\n\n let fieldObject = {\n title: label,\n enabled: true,\n required: true,\n rateable: false,\n field_type: 'radio_button_field',\n for_email_template: true\n };\n\n choiceList.map((choice, index) => {\n if (!choice?.name) {\n choicesRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorChoices('All field choices must each have a value');\n return;\n }\n choice.position = index;\n if (choice.id.toString().length == 13) {\n choice.id = '';\n }\n });\n\n const jsonString = JSON.stringify(Object.assign({}, choiceList));\n const attributes = JSON.parse(jsonString);\n fieldObject['field_choices_attributes'] = attributes;\n\n try {\n if (editingQuestion) {\n const data = await Api.putQuestion(\n editingQuestion.id,\n approvalTemplateId,\n {\n field: fieldObject\n }\n );\n setSnackbar({\n message: 'Field has been updated',\n state: 'success'\n });\n } else {\n const data = await Api.newField(approvalTemplateId, {\n field: fieldObject\n });\n setSnackbar({\n message: 'Field has been created',\n state: 'success'\n });\n clearData();\n }\n handleClose();\n } catch (error) {\n setSnackbar({\n message: `Field failed to create: ${error}`,\n state: 'error'\n });\n } finally {\n setIsCreating(false);\n getQuestions();\n }\n };\n\n const handleChoiceInput = (e, index: number) => {\n const { value } = e.target;\n updateChoice(value, index);\n };\n\n const clearData = () => {\n setLabel('');\n clearChoices();\n setErrorLabel('');\n setErrorField('');\n setErrorChoices('');\n };\n\n useEffect(() => {\n setDefaultValue();\n }, [setDefaultValue, editingQuestion]);\n\n return (\n <Modal\n open={modalsOpen.newEmailTemplateField}\n onClose={() => handleClose(true)}\n aria-labelledby=\"new-email-template-field-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <Box sx={classes.modalWrapper}>\n <CloseIcon onClick={() => handleClose(true)} sx={classes.closeIcon} />\n <Box id=\"new-email-template-field-title\" sx={classes.actionModalHeader}>\n New email template field\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"new-email-template-field-modal-content\"\n aria-label=\"New Email Template Field Modal Content\"\n >\n <Box sx={{ marginLeft: '15px' }}>\n <Box sx={classes.modalFormLine}>\n <MultilineFormTextField\n value={label}\n onChange={(e) => {\n setErrorLabel('');\n setLabel(e.target.value);\n }}\n styles={{ width: '600px', marginTop: '20px' }}\n rows={6}\n innerRef={labelRef}\n error={errorLabel}\n label={'Field label'}\n />\n </Box>\n </Box>\n <Box sx={classes.addChoiceContainer} ref={choicesRef}>\n <Box sx={classes.addChoiceHead}>\n <Box id=\"add-choice-title\" sx={classes.addChoiceLabel}>\n Choices\n </Box>\n <Button\n id=\"add-choice-button\"\n sx={classes.modalAddChoiceButton}\n onClick={addChoice}\n >\n Add choice\n </Button>\n </Box>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={choiceList} strategy={verticalListSortingStrategy}>\n {choiceList.map(\n (choice, index) =>\n !(choice?._destroy === 1) && (\n <SortableChoice\n key={choice.id}\n id={choice.id}\n choice={choice}\n index={index}\n handleChoiceInput={handleChoiceInput}\n onRemoveChoice={removeChoice}\n />\n )\n )}\n </SortableContext>\n </DndContext>\n {errorChoices && <Box sx={{ ...classes.inlineError }}>{errorChoices}</Box>}\n </Box>\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-new-email-template-field-button\"\n sx={classes.modalCancelButton}\n onClick={() => handleClose(true)}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-new-email-template-field-button\"\n type=\"submit\"\n sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n onClick={() => handleSubmit(approvalTemplateId)}\n >\n {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n </Box>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport { Box, Modal, Button, CircularProgress } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport {\n MultilineFormTextField,\n FormTextField\n} from '../../../Components/CustomUIElements/FormTextField';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../API';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from '@dnd-kit/core';\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableChoice from './SortableChoice';\nimport { IUserPermissions } from '../../../Components/sharedTypes';\nimport { useFieldChoiceList } from '../../../hooks/useFieldChoiceList';\nimport BooleanFieldSwitch from './BooleanFieldSwitch';\n\nconst fieldTypeOptions = [\n 'Availability',\n 'Date',\n 'Text',\n 'Textarea',\n 'Radio Button',\n 'Select',\n 'Rank',\n 'CSV Data Lookup',\n 'Checkbox'\n];\n\nconst fieldTypeValues = {\n Select: 'select_field',\n 'CSV Data Lookup': 'csv_data_lookup_field',\n Date: 'date_field',\n Text: 'text_field',\n 'Radio Button': 'radio_button_field',\n Rank: 'rank_field',\n 'Job Reference Lookup': 'job_reference_lookup_field',\n Availability: 'availability_field',\n Checkbox: 'check_box_field',\n Textarea: 'text_area_field'\n};\n\nconst DateOptions = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport default function NewField({\n apiKey,\n approvalTemplateId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n editingQuestion,\n getQuestions,\n userPermissions\n}: {\n apiKey: string;\n modalsOpen: Record<string, boolean>;\n setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n approvalTemplateId: number;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n editingQuestion?: any;\n getQuestions: any;\n userPermissions: IUserPermissions;\n}) {\n const [isCreating, setIsCreating] = useState(false);\n const [fieldType, setFieldType] = useState('');\n const [label, setLabel] = useState('');\n const [enabledSwitch, setEnabledSwitch] = useState(true);\n const [requiredSwitch, setRequiredSwitch] = useState(false);\n const [confidentialSwitch, setConfidentialSwitch] = useState(false);\n const [rateableSwitch, setRateableSwitch] = useState(false);\n const [weekDuration, setWeekDuration] = useState('Weekly');\n const [weekStartDay, setWeekStartDay] = useState<string>('Sunday');\n const [headingOne, setHeadingOne] = useState('');\n const [headingTwo, setHeadingTwo] = useState('');\n const [allowBreak, setAllowBreak] = useState('No');\n const [errorLabel, setErrorLabel] = useState('');\n const [errorField, setErrorField] = useState('');\n const [errorChoices, setErrorChoices] = useState('');\n const {\n choiceList,\n setChoiceList,\n addChoice,\n removeChoice,\n clearChoices,\n updateChoice,\n switchChoices\n } = useFieldChoiceList();\n\n const labelRef = useRef<HTMLInputElement>(null);\n const fieldTypeRef = useRef<HTMLInputElement>(null);\n const choicesRef = useRef<HTMLInputElement>(null);\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n const isSystemField = editingQuestion && !editingQuestion.editable;\n\n function handleDragEnd(event) {\n const { active, over } = event;\n switchChoices(active.id, over.id);\n }\n\n const getKeyByValue = (object, value) => {\n return Object.keys(object).find((key) => object[key] === value);\n };\n\n const setDefaultValue = useCallback(async () => {\n if (editingQuestion) {\n setFieldType(getKeyByValue(fieldTypeValues, editingQuestion.field_type));\n setLabel(editingQuestion.title);\n setEnabledSwitch(editingQuestion.enabled);\n setRequiredSwitch(editingQuestion.required);\n setConfidentialSwitch(editingQuestion.confidential);\n setRateableSwitch(editingQuestion.rateable);\n setChoiceList(editingQuestion.field_choices);\n if (editingQuestion.availability_config) {\n const duration = editingQuestion.availability_config.week_duration;\n setWeekDuration(duration.charAt(0).toUpperCase() + duration.slice(1));\n setWeekStartDay(DateOptions[editingQuestion.availability_config.week_start_day]);\n setHeadingOne(editingQuestion.availability_config.heading_1);\n setHeadingTwo(editingQuestion.availability_config.heading_2);\n setAllowBreak(editingQuestion.availability_config.allow_break === true ? 'Yes' : 'No');\n }\n }\n }, [editingQuestion]);\n\n const handleClose = () => {\n setModalsOpen((prev) => ({ ...prev, newField: false }));\n clearData();\n };\n\n const handleSubmit = async (approvalTemplateId: number) => {\n if (!fieldType || !label) {\n if (!fieldType) {\n fieldTypeRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorField('This field is required');\n } else {\n labelRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorLabel('This field is required');\n }\n return;\n }\n setIsCreating(true);\n\n let fieldObject = {\n title: label,\n enabled: enabledSwitch,\n required: requiredSwitch,\n confidential: confidentialSwitch,\n rateable: rateableSwitch,\n field_type: fieldTypeValues[fieldType]\n };\n\n if (['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType)) {\n choiceList.map((choice, index) => {\n if (!choice?.name) {\n choicesRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorChoices('All field choices must each have a value');\n return;\n }\n choice.position = index;\n if (choice.id.toString().length == 13) {\n choice.id = '';\n }\n });\n\n const jsonString = JSON.stringify(Object.assign({}, choiceList));\n const attributes = JSON.parse(jsonString);\n fieldObject['field_choices_attributes'] = attributes;\n } else if (['Availability'].includes(fieldType)) {\n fieldObject['availability_config_attributes'] = {\n week_duration: weekDuration.toLowerCase(),\n week_start_day: DateOptions.indexOf(weekStartDay),\n heading_1: headingOne,\n heading_2: headingTwo,\n allow_break: allowBreak === 'Yes'\n };\n }\n\n try {\n if (editingQuestion) {\n const data = await Api.putQuestion(\n editingQuestion.id,\n approvalTemplateId,\n {\n field: fieldObject\n }\n );\n setSnackbar({\n message: 'Field has been updated',\n state: 'success'\n });\n } else {\n const data = await Api.newField(approvalTemplateId, {\n field: fieldObject\n });\n setSnackbar({\n message: 'Field has been created',\n state: 'success'\n });\n clearData();\n }\n handleClose();\n } catch (error) {\n setSnackbar({\n message: `Field failed to create: ${error}`,\n state: 'error'\n });\n } finally {\n setIsCreating(false);\n getQuestions();\n }\n };\n\n const handleChoiceInput = (e, index: number) => {\n const { value } = e.target;\n updateChoice(value, index);\n };\n\n const clearData = () => {\n setFieldType('');\n setLabel('');\n setEnabledSwitch(true);\n setRequiredSwitch(false);\n setConfidentialSwitch(false);\n setRateableSwitch(false);\n clearChoices();\n setWeekDuration('Weekly');\n setWeekStartDay('Sunday');\n setHeadingOne('');\n setHeadingTwo('');\n setAllowBreak('No');\n setErrorLabel('');\n setErrorField('');\n setErrorChoices('');\n };\n\n useEffect(() => {\n setDefaultValue();\n }, [setDefaultValue, editingQuestion]);\n\n return (\n <Modal\n open={modalsOpen.newField}\n onClose={() => handleClose(true)}\n aria-labelledby=\"new-field-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <Box sx={classes.modalWrapper}>\n <CloseIcon onClick={() => handleClose(true)} sx={classes.closeIcon} />\n <Box id=\"new-field-title\" sx={classes.actionModalHeader}>\n New field\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"new-field-modal-content\"\n aria-label=\"New Field Modal Content\"\n >\n <Box role=\"form\" id=\"new-field-form\" aria-label=\"New Field form\">\n {!isSystemField && (\n <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={fieldTypeRef}>\n <Virtualize\n value={fieldType}\n passOptions={\n userPermissions?.['Approval Forms']?.['Use Availability Questions']\n ? fieldTypeOptions\n : fieldTypeOptions.slice(1)\n }\n setValue={(value: string) => {\n setFieldType(value);\n setErrorField('');\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '300px',\n marginTop: '20px'\n }}\n label=\"Field type\"\n />\n {errorField && <Box sx={{ ...classes.formError, top: '63px' }}>{errorField}</Box>}\n </Box>\n )}\n </Box>\n <Box sx={{ marginLeft: '15px' }}>\n <Box sx={classes.modalFormLine}>\n <MultilineFormTextField\n value={label}\n onChange={(e) => {\n setErrorLabel('');\n setLabel(e.target.value);\n }}\n styles={{ width: '600px', marginTop: '20px' }}\n rows={6}\n innerRef={labelRef}\n error={errorLabel}\n label={'Field label'}\n />\n </Box>\n </Box>\n <Box sx={classes.checkboxContainer} id=\"enabled-filter\">\n <BooleanFieldSwitch\n fieldValue={enabledSwitch}\n setFieldValue={setEnabledSwitch}\n label=\"Enabled\"\n isSystemField={false}\n />\n <BooleanFieldSwitch\n fieldValue={requiredSwitch}\n setFieldValue={setRequiredSwitch}\n label=\"Required\"\n isSystemField={isSystemField}\n />\n <BooleanFieldSwitch\n fieldValue={confidentialSwitch}\n setFieldValue={setConfidentialSwitch}\n label=\"Confidential\"\n isSystemField={isSystemField}\n />\n </Box>\n {['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType) && (\n <Box sx={classes.addChoiceContainer} ref={choicesRef}>\n <Box sx={classes.addChoiceHead}>\n <Box id=\"add-choice-title\" sx={classes.addChoiceLabel}>\n Choices\n </Box>\n <Button\n id=\"add-choice-button\"\n sx={classes.modalAddChoiceButton}\n onClick={addChoice}\n >\n Add choice\n </Button>\n </Box>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={choiceList} strategy={verticalListSortingStrategy}>\n {choiceList.map(\n (choice, index) =>\n !(choice?._destroy === 1) && (\n <SortableChoice\n key={choice.id}\n id={choice.id}\n choice={choice}\n index={index}\n handleChoiceInput={handleChoiceInput}\n onRemoveChoice={removeChoice}\n />\n )\n )}\n </SortableContext>\n </DndContext>\n {errorChoices && <Box sx={{ ...classes.inlineError }}>{errorChoices}</Box>}\n </Box>\n )}\n {['Availability'].includes(fieldType) && (\n <Box sx={classes.availabilityContainer}>\n <Box id=\"availability-config-title\" sx={classes.addChoiceLabel}>\n Availability Config\n </Box>\n <Box sx={classes.config}>\n <FormSelectField\n options={['Weekly', 'Fortnightly']}\n defaultValue={weekDuration}\n value={weekDuration}\n onChange={(value) => setWeekDuration(value)}\n label={'How long is your work period?'}\n styles={{ width: '290px', marginBottom: '15px' }}\n required={true}\n />\n <FormSelectField\n options={DateOptions}\n defaultValue={weekStartDay}\n value={weekStartDay}\n onChange={(value) => {\n setWeekStartDay(value);\n }}\n label={'When does the work period start?'}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n <FormTextField\n label=\"Heading 1\"\n value={headingOne}\n onChange={(e) => setHeadingOne(e.target.value)}\n required={false}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n <FormTextField\n label=\"Heading 2\"\n value={headingTwo}\n onChange={(e) => setHeadingTwo(e.target.value)}\n required={false}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n <FormSelectField\n options={['Yes', 'No']}\n defaultValue={allowBreak}\n value={allowBreak}\n onChange={(value) => setAllowBreak(value)}\n label={'Allow break?'}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n </Box>\n </Box>\n )}\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-new-field-button\"\n sx={classes.modalCancelButton}\n onClick={() => handleClose(true)}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-new-field-button\"\n type=\"submit\"\n sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n onClick={() => handleSubmit(approvalTemplateId)}\n >\n {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n </Box>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from '../styles';\nimport IconButton from '@mui/material/IconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport Box from '@mui/material/Box';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\nexport default function SortableChoice({\n id,\n choice,\n index,\n handleChoiceInput,\n onRemoveChoice\n}: {\n id: string;\n choice: any;\n index: number;\n handleChoiceInput: any;\n onRemoveChoice: any;\n}) {\n const {\n attributes,\n listeners,\n setNodeRef,\n setActivatorNodeRef,\n transform,\n transition,\n } = useSortable({ id: id });\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition,\n };\n\n return (\n <Box\n key={index}\n sx={classes.choice}\n style={style}\n ref={setNodeRef}\n {...attributes}\n >\n <IconButton ref={setActivatorNodeRef} {...listeners}>\n <DragIndicatorIcon sx={{ fontSize: 18 }}/>\n </IconButton>\n <FormTextField\n value={choice.name}\n onChange={(e) => handleChoiceInput(e, index)}\n required={true}\n styles={{ width: '150px'}}\n />\n <IconButton\n onClick={() => onRemoveChoice(index)}\n sx={{ marginLeft: '35px' }}\n >\n <DeleteIcon sx={{ color: theme.palette.error.main, fontSize: 18 }} />\n </IconButton>\n </Box>\n );\n}","import React from 'react';\n\nexport default function NewSystemFieldSVG() {\nreturn (<svg id=\"MDI_alpha-s-box\" data-name=\"MDI / alpha-s-box\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20.719\" height=\"20.719\" viewBox=\"0 0 18.719 18.719\">\n<g id=\"Boundary\" fill=\"#666\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"19.719\" height=\"19.719\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"18.719\" height=\"18.719\" fill=\"none\"/>\n</g>\n<path id=\"Path_alpha-s-box\" data-name=\"Path / alpha-s-box\" d=\"M9.1,6.049A1.524,1.524,0,0,0,7.573,7.573V9.1A1.524,1.524,0,0,0,9.1,10.622h1.524v1.524H7.573V13.67h3.049a1.524,1.524,0,0,0,1.524-1.524V10.622A1.524,1.524,0,0,0,10.622,9.1H9.1V7.573h3.049V6.049H9.1M4.524,3h10.67a1.524,1.524,0,0,1,1.524,1.524v10.67a1.524,1.524,0,0,1-1.524,1.524H4.524A1.524,1.524,0,0,1,3,15.194V4.524A1.524,1.524,0,0,1,4.524,3Z\" transform=\"translate(0)\" fill=\"#666\"/>\n</svg>\n)\n}\n","import type { PointerEvent } from \"react\";\nimport { PointerSensor } from \"@dnd-kit/core\";\n\n/**\n * An extended \"PointerSensor\" that prevent some\n * interactive html element(button, input, textarea, select, option...) from dragging\n */\n\nexport class QuestionCardSensor extends PointerSensor {\n static activators = [\n {\n eventName: \"onPointerDown\" as any,\n handler: ({ nativeEvent: event }: PointerEvent) => {\n if (\n !event.isPrimary ||\n event.button !== 0 ||\n isInteractiveElement(event.target as Element)\n ) {\n return false;\n }\n\n return true;\n },\n },\n ];\n}\n\nfunction isInteractiveElement(element: Element | null) {\n if (element?.dataset?.testid === \"DragIndicatorIcon\" \n || element?.className?.baseVal.toLowerCase().includes(\"select\")\n ) return false; \n\n const interactiveElements = [\n \"button\",\n \"input\",\n \"textarea\",\n \"select\",\n \"option\",\n \"icon\",\n \"svg\",\n \"path\",\n \"ul\",\n \"li\",\n \"span\",\n ];\n if (\n element?.tagName &&\n interactiveElements.includes(element.tagName.toLowerCase())\n ) {\n return true;\n }\n\n return false;\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Box, Button, Stack, Skeleton } from '@mui/material';\nimport LiveHelpIcon from '@mui/icons-material/LiveHelp';\nimport NewSystemFieldSVG from './NewSystemFieldSVG';\nimport NewField from './Modals/NewField';\nimport NewEmailTemplateField from './Modals/NewEmailTemplateField';\nimport AddSystemField from './Modals/AddSystemField';\nimport ApprovalTemplateSettings from '../ApprovalTemplateSettings/ApprovalTemplateSettings';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IApplicantQuestion } from '../../Components/Utilities/QuestionFieldViewer';\nimport { classes } from './styles';\nimport { DndContext, closestCenter, KeyboardSensor, useSensor, useSensors } from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy\n} from '@dnd-kit/sortable';\n\nimport SortableItem from './SortableItem';\nimport { QuestionCardSensor } from './QuestionCardSensor';\nimport { IApprovalTemplate, IApprovalTemplateFields } from '../types';\nimport Api from '../API';\nimport { IUserPermissions } from '../../Components/sharedTypes';\nimport InfoIcon from '@mui/icons-material/Info';\nimport { OptionToggleGroup } from '../../Components/OptionToggleGroup';\n\nconst toggleButtonOptions = [\n { value: 'enabledQuestions', label: 'Enabled questions' },\n { value: 'disabledQuestions', label: 'Disabled questions' }\n];\n\nexport default function Questions({\n apiKey,\n entityId,\n approvalTemplateId,\n approvalTemplateData,\n setApprovalTemplateData,\n getApprovalTemplate,\n userPermissions,\n enableEmailTemplateFields\n}: {\n apiKey: string;\n entityId: number;\n approvalTemplateId: number;\n approvalTemplateData: IApprovalTemplate;\n setApprovalTemplateData: React.Dispatch<React.SetStateAction<IApprovalTemplate>>;\n getApprovalTemplate: () => Promise<void>;\n userPermissions: IUserPermissions;\n enableEmailTemplateFields?: boolean;\n}) {\n const [questions, setQuestions] = useState<IApprovalTemplateFields[]>([]);\n const [emailTemplateQuestions, setEmailTemplateQuestions] = useState<IApprovalTemplateFields[]>(\n []\n );\n const [allQuestions, setAllQuestions] = useState<IApprovalTemplateFields[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [modalsOpen, setModalsOpen] = useState<Record<string, boolean>>({\n newField: false,\n addSystemField: false,\n approvalTemplateSettings: false,\n newEmailTemplateField: false\n });\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n\n const [editingQuestion, setEditingQuestion] = useState<IApplicantQuestion | null>();\n const [selected, setSelected] = useState('enabledQuestions');\n\n const sensors = useSensors(\n useSensor(QuestionCardSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n function handleDragEnd(event) {\n const { active, over } = event;\n\n if (active.id !== over.id) {\n // Use full questions list to swap positions\n const oldIndex = allQuestions.map((question) => question.id).indexOf(active.id);\n const newIndex = allQuestions.map((question) => question.id).indexOf(over.id);\n const newArray = arrayMove(allQuestions, oldIndex, newIndex);\n setAllQuestions(newArray);\n updateApprovalFormQuestions(newArray);\n }\n }\n\n const updateApprovalFormQuestions = async (questions) => {\n const fieldObject = {};\n questions.map(\n (question, index) =>\n (fieldObject[question.id] = {\n position: index\n })\n );\n\n const questionIndex = questions\n ?.filter((question) => question.enabled)\n .findIndex((question) => question.is_approval_form_title);\n\n const newTemplateData = { ...approvalTemplateData };\n newTemplateData.config.approval_form_title_position = questionIndex;\n setApprovalTemplateData(newTemplateData);\n\n try {\n await Api.updateApprovalTemplate(approvalTemplateId, {\n requisition_form: {\n approval_form_title_position: questionIndex\n }\n });\n } catch (error) {\n setSnackbar({\n message: `Failed to update approval template, ${error}`,\n state: 'error'\n });\n }\n\n try {\n const response = await fetch(\n `/api/v4/requisition_forms/${approvalTemplateId}/update_questions`,\n {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fields: fieldObject\n })\n }\n ).then((response) => response.json());\n setAllQuestions(response.fields);\n setQuestions(response.fields.filter((field) => !field.for_email_template));\n setEmailTemplateQuestions(response.fields.filter((field) => field.for_email_template));\n setSnackbar({\n message: 'Questions have been updated',\n state: 'success'\n });\n } catch (error) {\n setSnackbar({\n message: 'There was an error saving your changes',\n state: 'error'\n });\n }\n };\n\n const getQuestions = useCallback(async () => {\n setIsLoading(true);\n try {\n const data = await Api.getQuestions(\n { entity_id: entityId, requisition_form_id: approvalTemplateId }\n );\n setAllQuestions(data.res.fields);\n setQuestions(data.res.fields.filter((field) => !field.for_email_template));\n setEmailTemplateQuestions(data.res.fields.filter((field) => field.for_email_template));\n } catch (err) {\n setSnackbar({\n message: `Failed to fetch questions, ${err}`,\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n }, [approvalTemplateId, entityId]);\n\n const handleToggle = (event: React.MouseEvent<HTMLElement>, newSelected: string) => {\n if (newSelected !== null) {\n setSelected(newSelected);\n }\n };\n\n useEffect(() => {\n let isMounted = true;\n setIsLoading(true);\n Api.getQuestions(\n { entity_id: entityId, requisition_form_id: approvalTemplateId }\n )\n .then((data) => {\n if (isMounted) {\n setAllQuestions(data.res.fields);\n setQuestions(data.res.fields.filter((field) => !field.for_email_template));\n setEmailTemplateQuestions(data.res.fields.filter((field) => field.for_email_template));\n }\n })\n .catch((err) => {\n if (isMounted)\n setSnackbar({\n message: `Failed to fetch system fields, ${err}`,\n state: 'error'\n });\n })\n .finally(() => {\n if (isMounted) setIsLoading(false);\n });\n return () => {\n isMounted = false;\n };\n }, [apiKey, approvalTemplateId, entityId]);\n\n return (\n <Box sx={classes.questionsPageContainer}>\n <Box sx={classes.noticeContainer}>\n <InfoIcon sx={classes.infoIcon} />\n <Box sx={{ marginLeft: 1 }}>\n <b>All changes will be automatically saved and applied immediately. </b>\n All fields that have been answered by a user are not able to be deleted. To remove a\n field, you will need to disable it and create a new field.\n </Box>\n </Box>\n {!!approvalTemplateData.config?.enable_declaration_of_conflict_of_interest && (\n <Box sx={classes.actionsContianer}>\n {isLoading ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Stack sx={{ flexDirection: 'row', gap: '22px' }}>\n <Button\n variant=\"outlined\"\n startIcon={<LiveHelpIcon />}\n sx={classes.actionButton}\n onClick={() => {\n setEditingQuestion(null);\n setModalsOpen((prev) => ({ ...prev, newEmailTemplateField: true }));\n }}\n >\n New email template field\n </Button>\n </Stack>\n )}\n </Box>\n )}\n {!!approvalTemplateData.config?.enable_declaration_of_conflict_of_interest &&\n emailTemplateQuestions.length > 0 && (\n <Box sx={{ overflow: 'auto' }}>\n <Box sx={classes.questionsContainer}>\n <Box sx={classes.questionsHeader}>Email Template Questions</Box>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={emailTemplateQuestions}\n strategy={verticalListSortingStrategy}\n >\n {emailTemplateQuestions.map((question, index) => (\n <SortableItem\n allQuestions={emailTemplateQuestions}\n questions={emailTemplateQuestions}\n setQuestions={setQuestions}\n getQuestions={getQuestions}\n index={index}\n key={question.id}\n approvalTemplateId={approvalTemplateId}\n approvalTemplateData={approvalTemplateData}\n setApprovalTemplateData={setApprovalTemplateData}\n apiKey={apiKey}\n setModalsOpen={setModalsOpen}\n editingQuestion={question}\n setEditingQuestion={setEditingQuestion}\n setSnackbar={setSnackbar}\n />\n ))}\n </SortableContext>\n </DndContext>\n </Box>\n </Box>\n )}\n <OptionToggleGroup\n options={toggleButtonOptions}\n selected={selected}\n setSelected={setSelected}\n />\n <Box sx={classes.actionsContianer}>\n {isLoading ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Stack sx={{ flexDirection: 'row', gap: '22px' }}>\n {selected === 'enabledQuestions' && (\n <>\n <Button\n variant=\"outlined\"\n startIcon={<LiveHelpIcon />}\n sx={classes.actionButton}\n onClick={() => {\n setEditingQuestion(null);\n setModalsOpen((prev) => ({ ...prev, newField: true }));\n }}\n >\n New field\n </Button>\n <Button\n variant=\"outlined\"\n startIcon={<NewSystemFieldSVG />}\n sx={classes.actionButton}\n onClick={() => {\n setEditingQuestion(null);\n setModalsOpen((prev) => ({ ...prev, addSystemField: true }));\n }}\n >\n Add system field\n </Button>\n </>\n )}\n </Stack>\n )}\n {(userPermissions?.['Approval Forms']?.['Create / Edit Approval Forms (HR use)'] ||\n userPermissions?.['Approval Forms']?.['Edit Approval Form (HR use)']) && (\n <>\n {isLoading ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Stack>\n <Button\n sx={classes.settingButton}\n onClick={() => {\n setModalsOpen((prev) => ({ ...prev, approvalTemplateSettings: true }));\n }}\n >\n Settings\n </Button>\n </Stack>\n )}\n </>\n )}\n </Box>\n {selected === 'enabledQuestions'\n ? !isLoading &&\n questions.filter((question) => question.enabled).length > 0 && (\n <Box sx={{ overflow: 'auto' }}>\n <Box sx={classes.questionsContainer}>\n <Box sx={classes.questionsHeader}>Questions</Box>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={questions.filter((question) => question.enabled)}\n strategy={verticalListSortingStrategy}\n >\n {questions\n .filter((question) => question.enabled)\n .map((question, index) => (\n <SortableItem\n allQuestions={questions}\n questions={questions.filter((question) => question.enabled)}\n setQuestions={setQuestions}\n getQuestions={getQuestions}\n index={index}\n key={question.id}\n approvalTemplateId={approvalTemplateId}\n approvalTemplateData={approvalTemplateData}\n setApprovalTemplateData={setApprovalTemplateData}\n apiKey={apiKey}\n setModalsOpen={setModalsOpen}\n editingQuestion={question}\n setEditingQuestion={setEditingQuestion}\n setSnackbar={setSnackbar}\n userPermissions={userPermissions}\n />\n ))}\n </SortableContext>\n </DndContext>\n </Box>\n </Box>\n )\n : !isLoading &&\n questions.filter((question) => !question.enabled).length > 0 && (\n <Box sx={{ overflow: 'auto' }}>\n <Box sx={classes.questionsContainer}>\n <Box sx={classes.questionsHeader}>Questions</Box>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={questions.filter((question) => !question.enabled)}\n strategy={verticalListSortingStrategy}\n >\n {questions\n .filter((question) => !question.enabled)\n .map((question, index) => (\n <SortableItem\n allQuestions={questions}\n questions={questions.filter((question) => !question.enabled)}\n setQuestions={setQuestions}\n getQuestions={getQuestions}\n index={index}\n key={question.id}\n approvalTemplateId={approvalTemplateId}\n approvalTemplateData={approvalTemplateData}\n setApprovalTemplateData={setApprovalTemplateData}\n apiKey={apiKey}\n setModalsOpen={setModalsOpen}\n editingQuestion={question}\n setEditingQuestion={setEditingQuestion}\n setSnackbar={setSnackbar}\n />\n ))}\n </SortableContext>\n </DndContext>\n </Box>\n </Box>\n )}\n {!isLoading && questions?.length === 0 && (\n <Box sx={{ ...classes.noQuestionsContainer, margin: '150px 0px' }}>\n <Box sx={classes.noQuestionsText}>\n Add questions to your approval template\n <br />\n from the above options\n </Box>\n </Box>\n )}\n <NewField\n apiKey={apiKey}\n getQuestions={getQuestions}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n approvalTemplateId={approvalTemplateId}\n setSnackbar={setSnackbar}\n editingQuestion={editingQuestion}\n userPermissions={userPermissions}\n />\n <NewEmailTemplateField\n apiKey={apiKey}\n getQuestions={getQuestions}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n approvalTemplateId={approvalTemplateId}\n setSnackbar={setSnackbar}\n editingQuestion={editingQuestion}\n userPermissions={userPermissions}\n />\n <AddSystemField\n apiKey={apiKey}\n getQuestions={getQuestions}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n approvalTemplateId={approvalTemplateId}\n setSnackbar={setSnackbar}\n />\n {modalsOpen.approvalTemplateSettings && (\n <ApprovalTemplateSettings\n modalsOpen={modalsOpen.approvalTemplateSettings}\n setModalsOpen={() => setModalsOpen({ ...modalsOpen, approvalTemplateSettings: false })}\n approvalTemplateData={approvalTemplateData}\n getApprovalTemplate={getApprovalTemplate}\n questions={questions.length ? questions : undefined}\n setSnackbar={setSnackbar}\n enableEmailTemplateFields={enableEmailTemplateFields}\n />\n )}\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { Box, Stack, Switch, IconButton } from '@mui/material';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from './styles';\nimport QuestionFieldViewer from '../../Components/Utilities/QuestionFieldViewer';\nimport {\n DragIndicator as DragIndicatorIcon,\n Edit as EditIcon,\n Delete as DeleteIcon,\n ContentCopy as ContentCopyIcon\n} from '@mui/icons-material';\nimport Api from '../API';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IApplicantQuestion } from '../../Components/Utilities/QuestionFieldViewer';\nimport { IApprovalTemplate } from '../types';\nimport AvailabilityFieldQuestion from '../../Components/CustomUIElements/AvailabilityFieldQuestion';\n\nexport default function SortableItem({\n allQuestions,\n questions,\n setQuestions,\n getQuestions,\n index,\n approvalTemplateId,\n approvalTemplateData,\n setApprovalTemplateData,\n apiKey,\n setModalsOpen,\n editingQuestion,\n setEditingQuestion,\n setSnackbar,\n userPermissions\n}: {\n allQuestions: IApplicantQuestion[];\n questions: IApplicantQuestion[];\n setQuestions: Dispatch<SetStateAction<IApplicantQuestion[]>>;\n getQuestions: any;\n index: number;\n approvalTemplateId: number;\n approvalTemplateData: IApprovalTemplate;\n setApprovalTemplateData: Dispatch<SetStateAction<IApprovalTemplate>>;\n apiKey: string;\n setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n editingQuestion: IApplicantQuestion;\n setEditingQuestion: Dispatch<SetStateAction<Record<IApplicantQuestion, null>>>;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n userPermissions: Record<string, Record<string, boolean>>;\n}) {\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [isDeleting, setIsDeleting] = useState(false);\n const [isCloning, setIsCloning] = useState(false);\n const [tempEnabled, setTempEnabled] = useState(questions[index].enabled);\n const [tempRequired, setTempRequired] = useState(questions[index].required);\n const [tempConfidential, setTempConfidential] = useState(questions[index].confidential);\n const [tempIsFormTitle, setTempIsFormTitle] = useState(questions[index].is_approval_form_title);\n\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: questions[index].id,\n data: {\n for_email_template: questions[index].for_email_template\n }\n });\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition,\n filter: isDragging ? 'brightness(75%)' : 'brightness(100%)',\n zIndex: isDragging ? 10 : 1\n };\n\n const deleteQuestion = async (url: string, questionId: number) => {\n setIsDeleting(true);\n try {\n const response = await Api.deleteQuestion(\n questionId,\n approvalTemplateId\n );\n if (response.res.errors) {\n setSnackbar({\n message: 'You do not have right to delete this field',\n state: 'error'\n });\n } else {\n setSnackbar({\n message: 'Field has been deleted',\n state: 'success'\n });\n }\n } catch (error) {\n setSnackbar({\n message: `Field failed to delete: ${error}`,\n state: 'error'\n });\n } finally {\n setIsDeleting(false);\n setIsDialogOpen(false);\n getQuestions();\n }\n };\n\n const cloneQuestion = async (url: string, questionId: number) => {\n setIsCloning(true);\n try {\n const response = await Api.cloneQuestion(\n questionId,\n approvalTemplateId\n );\n } catch (error) {\n setSnackbar({\n message: `Field failed to clone: ${error}`,\n state: 'error'\n });\n } finally {\n setIsCloning(false);\n setIsDialogOpen(false);\n getQuestions();\n }\n };\n\n const handleUpdateActions = async (\n event?: React.ChangeEvent<HTMLInputElement>,\n action: keyof (typeof questions)[0]\n ) => {\n action === 'enabled' && setTempEnabled(!tempEnabled);\n action === 'required' && setTempRequired(!tempRequired);\n action === 'confidential' && setTempConfidential(!tempConfidential);\n const fieldId = questions[index].id;\n try {\n const response = await fetch(\n `/api/v4/fields/${fieldId}?requisition_form_id=${approvalTemplateId}`,\n {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n field: {\n [action]: event?.target.checked\n }\n })\n }\n ).then((response) => response.json());\n if (response.id) {\n setSnackbar({\n message: 'The change has been saved',\n state: 'success'\n });\n const newQuestions = [...allQuestions];\n const indexOfAllquestions = allQuestions.findIndex((item) => item.id === fieldId);\n newQuestions[indexOfAllquestions][action] = !allQuestions[indexOfAllquestions][action];\n\n if (action === 'enabled') {\n // If disabling a position title question, automatically set the next or the first question as the position title question\n if (!questions[index].enabled && questions[index].is_approval_form_title) {\n const newApprivalFormTitleQuestionId =\n questions[index + 1]?.id || questions[0]?.id || 0;\n handleSelectApprovalFormTitle(null, newApprivalFormTitleQuestionId, true);\n }\n // If enabled questions list is empty, automatically set the first enabled question as position title question\n else if (\n allQuestions?.filter((question) => question.enabled).length === 1 &&\n questions[index].enabled\n ) {\n const newApprivalFormTitleQuestionId = questions[index]?.id;\n newApprivalFormTitleQuestionId &&\n handleSelectApprovalFormTitle(null, newApprivalFormTitleQuestionId, true);\n } else if (\n // If enabling questions, update the position title index based on the enabled questions\n allQuestions?.filter((question) => question.enabled).length > 1 &&\n questions[index].enabled\n ) {\n const newApprivalFormTitleQuestionId =\n allQuestions\n ?.filter((question) => question.enabled)\n .find((question) => question.is_approval_form_title)?.id || 0;\n handleSelectApprovalFormTitle(null, newApprivalFormTitleQuestionId, true);\n } else if (!questions[index].enabled) {\n // If disabling other questions, we still need to update the position title index based on the rest enabled questions\n const newApprivalFormTitleQuestionId =\n questions.find((question) => question.is_approval_form_title)?.id || 0;\n handleSelectApprovalFormTitle(null, newApprivalFormTitleQuestionId, true);\n }\n }\n\n setTimeout(() => {\n setQuestions(newQuestions);\n }, 500);\n } else if (response.errors) {\n setSnackbar({\n message: `There was an error saving your changes. ${response.errors}`,\n state: 'error'\n });\n setTimeout(() => {\n action === 'enabled' && setTempEnabled(!event?.target.checked);\n action === 'required' && setTempRequired(!event?.target.checked);\n action === 'confidential' && setTempConfidential(!event?.target.checked);\n }, 500);\n }\n } catch (error) {\n setSnackbar({\n message: `There was an error saving your changes. ${error}`,\n state: 'error'\n });\n setTimeout(() => {\n action === 'enabled' && setTempEnabled(!event?.target.checked);\n action === 'required' && setTempRequired(!event?.target.checked);\n action === 'confidential' && setTempConfidential(!event?.target.checked);\n }, 500);\n }\n };\n\n const handleSelectApprovalFormTitle = async (\n event: React.ChangeEvent<HTMLInputElement> | null,\n questionId: number,\n manual?: boolean\n ) => {\n questions.map((question) => {\n if (question.id === questionId) {\n question.is_approval_form_title = manual || !!event?.target.checked;\n } else {\n question.is_approval_form_title = false;\n }\n });\n\n let questionIndex = allQuestions\n ?.filter((question) => question.enabled)\n .findIndex((question) => question.id === questionId);\n\n if (questionIndex === -1) {\n questionIndex = 0;\n }\n\n const checked = manual || event?.target.checked;\n\n setTempIsFormTitle(!tempIsFormTitle);\n const newTemplateData = { ...approvalTemplateData };\n newTemplateData.config.approval_form_title_position = checked ? questionIndex : null;\n setApprovalTemplateData(newTemplateData);\n\n try {\n await Api.updateApprovalTemplate(approvalTemplateId, {\n requisition_form: {\n approval_form_title_position: checked ? questionIndex : null\n }\n });\n setSnackbar({\n message: 'Approval template updated',\n state: 'success'\n });\n } catch (error) {\n setSnackbar({\n message: `Failed to update approval template, ${error}`,\n state: 'error'\n });\n }\n };\n\n const [dialogProps, setDialogProps] = useState({\n url: '',\n title: 'Permanently delete question?',\n description: '',\n buttonText: 'Delete',\n buttonCallback: deleteQuestion,\n callbackLoading: false,\n dialogId: 0\n });\n\n const handleDeleteQuestion = (questionId: number) => {\n setDialogProps((prev) => ({\n ...prev,\n url: `/api/v4/fields/${questionId}?requisition_form_id=${approvalTemplateId}`,\n title: 'Permanently delete question?',\n description: `Are you sure you want to delete this question? This action cannot be undone.`,\n buttonText: 'Delete',\n dialogId: questionId,\n buttonCallback: deleteQuestion\n }));\n setIsDialogOpen(true);\n };\n\n const handleEditQuestion = () => {\n setEditingQuestion({\n ...editingQuestion,\n enabled: questions[index].enabled,\n required: questions[index].required\n });\n questions[index].for_email_template\n ? setModalsOpen((prev) => ({ ...prev, newEmailTemplateField: true }))\n : setModalsOpen((prev) => ({ ...prev, newField: true }));\n };\n\n const handleCloneQuestion = (questionId: number) => {\n setDialogProps((prev) => ({\n ...prev,\n url: `/api/v4/fields/${questionId}/clone?requisition_form_id=${approvalTemplateId}`,\n title: 'Clone question',\n description: `Are you sure you want to clone this question?`,\n buttonText: 'Clone',\n dialogId: questionId,\n buttonCallback: cloneQuestion\n }));\n setIsDialogOpen(true);\n };\n\n return (\n <Box ref={setNodeRef} style={style}>\n <Box key={questions[index].id}>\n {questions[index].type === 'JobReferenceLookupField' ? (\n <span />\n ) : (\n <Box sx={classes.questionsWrapper}>\n <Box sx={{ display: 'flex' }}>\n <DragIndicatorIcon\n sx={{ cursor: isDragging ? 'grabbing' : 'pointer', ...classes.dragHandle }}\n {...listeners}\n {...attributes}\n />\n <Box sx={{ marginRight: 'auto', ...classes.questionInput }}>\n <Box sx={{ height: '6px' }} />\n <Box sx={{ ...classes.modalFormLine, position: 'relative', minWidth: '300px' }}>\n <QuestionFieldViewer question={questions[index]} draggable={true} />\n </Box>\n </Box>\n {!questions[index].for_email_template && (\n <Box\n sx={{\n ...classes.sortableItemSwitchContainer,\n fontWeight: questions[index].enabled ? 'bold' : ''\n }}\n >\n <Box sx={{ marginTop: '12px' }}>\n <Switch\n sx={questions[index].enabled ? classes.switchActive : classes.switch}\n checked={tempEnabled}\n onChange={(event) => handleUpdateActions(event, 'enabled')}\n />\n <Stack sx={{ fontSize: '12px' }}>Enabled</Stack>\n </Box>\n </Box>\n )}\n {!questions[index].for_email_template && (\n <Box\n sx={{\n ...classes.sortableItemSwitchContainer,\n fontWeight: questions[index].required ? 'bold' : ''\n }}\n >\n <Box sx={{ marginTop: '12px' }}>\n <Switch\n sx={questions[index].required ? classes.switchActive : classes.switch}\n checked={tempRequired}\n onChange={(event) => handleUpdateActions(event, 'required')}\n disabled={!questions[index].editable}\n />\n <Stack sx={{ fontSize: '12px' }}>Required</Stack>\n </Box>\n </Box>\n )}\n {!questions[index].for_email_template && (\n <Box\n sx={{\n ...classes.sortableItemSwitchContainer,\n fontWeight: questions[index].confidential ? 'bold' : ''\n }}\n >\n <Box sx={{ marginTop: '12px' }}>\n <Switch\n sx={questions[index].confidential ? classes.switchActive : classes.switch}\n checked={tempConfidential}\n onChange={(event) => handleUpdateActions(event, 'confidential')}\n disabled={!questions[index].editable}\n />\n <Stack sx={{ fontSize: '12px' }}>Confidential</Stack>\n </Box>\n </Box>\n )}\n {Number(approvalTemplateData?.config?.hide_position_title) === 1 &&\n questions[index].enabled &&\n !questions[index].for_email_template && (\n <Box\n sx={{\n ...classes.sortableItemSwitchContainer,\n fontWeight: questions[index].is_approval_form_title ? 'bold' : ''\n }}\n >\n <Box sx={{ marginTop: '12px' }}>\n <Switch\n sx={\n questions[index].is_approval_form_title\n ? classes.switchActive\n : classes.switch\n }\n checked={!!questions[index].is_approval_form_title}\n onChange={(event) =>\n handleSelectApprovalFormTitle(event, questions[index].id)\n }\n disabled={!!questions[index].is_approval_form_title}\n />\n <Stack sx={{ fontSize: '12px' }}>Approval Form Title</Stack>\n </Box>\n </Box>\n )}\n <Box sx={{ padding: '0 6px', minWidth: '120px' }}>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'flex-start',\n marginTop: '-8px'\n }}\n >\n {!questions[index].answered && (\n <IconButton onClick={() => handleEditQuestion()}>\n <EditIcon sx={{ fontSize: 16 }} />\n </IconButton>\n )}\n {questions[index].editable && (\n <IconButton onClick={() => handleCloneQuestion(questions[index].id)}>\n <ContentCopyIcon sx={{ fontSize: 16 }} />\n </IconButton>\n )}\n {questions[index].deletable && (\n <IconButton\n onClick={() => {\n handleDeleteQuestion(questions[index].id);\n }}\n >\n <DeleteIcon sx={{ color: '#E37D7A', fontSize: 16 }} />\n </IconButton>\n )}\n </Box>\n </Box>\n </Box>\n {questions[index].type === 'AvailabilityField' && (\n <AvailabilityFieldQuestion question={questions[index]} />\n )}\n {tempConfidential && (\n <Box sx={{ padding: '0 6px', color: '#838383', fontSize: '12px' }}>\n <span style={{ fontWeight: 'bold' }}>Confidential Setting Enabled:</span> For DE&I\n compliance, only authorised users (HR Admins), can view responses. Hiring Managers\n will not have access.\n </Box>\n )}\n </Box>\n )}\n </Box>\n <GenericDialog\n url={dialogProps.url}\n title={dialogProps.title}\n description={dialogProps.description}\n buttonText={dialogProps.buttonText}\n buttonCallback={dialogProps.buttonCallback}\n callbackLoading={isDeleting || isCloning}\n isDialogOpen={isDialogOpen}\n setDialogOpen={setIsDialogOpen}\n dialogId={dialogProps.dialogId}\n />\n </Box>\n );\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\nimport { IGetApprovalForms } from './types';\nimport { styles } from './styles';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function Search({\n setSearch,\n getApprovalForms,\n archived\n}: {\n setSearch: (query: string) => void;\n getApprovalForms: IGetApprovalForms;\n archived: boolean;\n}) {\n const [tempSearch, setTempSearch] = useState('');\n const debouncedAPICall = useDebouncedCallback((searchQuery) => {\n getApprovalForms(null, null, searchQuery, null, null, archived);\n setSearch(searchQuery);\n }, 600);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTempSearch(event.target.value);\n debouncedAPICall(event.target.value);\n };\n\n return (\n <Box sx={{ width: '100%' }}>\n <FormControl fullWidth>\n <OutlinedInput\n id=\"applicant-search\"\n sx={styles.searchInput}\n placeholder={'Search by title or ID'}\n value={tempSearch}\n onChange={handleChange}\n startAdornment={\n <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n <SearchIcon />\n </InputAdornment>\n }\n />\n </FormControl>\n </Box>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Avatar, Box, Button, Collapse, Skeleton, Stack } from '@mui/material';\nimport {\n EditNote as EditNoteIcon,\n Email as EmailIcon,\n ExpandLess as ExpandLessIcon,\n ExpandMore as ExpandMoreIcon,\n Monitor as MonitorIcon,\n Person as PersonIcon\n} from '@mui/icons-material';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from './API';\nimport { CandidateAction, IActivity } from './types';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport dayjs from 'dayjs';\nimport dompurify from 'dompurify';\nimport AddRecord from './AddRecord';\nimport { styles } from './styles';\nimport { getStatusColor } from '../../NewEngage/helper';\nimport { ApplicationAction, IApplication } from '../Application/types';\nimport ApplicationApi from '../Application/API';\n\ninterface ActivitiesTabProps {\n candidateId?: number;\n dispatch: Dispatch<CandidateAction> | Dispatch<ApplicationAction>;\n}\nconst toTitleCase = (sentence: string) => {\n return sentence\n .toLowerCase()\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n};\n\nconst ActivityIcon = ({ activity }: { activity: IActivity }) => {\n if (\n (activity.verb.includes('sent') || activity.verb.includes('enqueued')) &&\n !activity.verb.includes('sms')\n ) {\n return (\n <Avatar sx={{ background: '#B89FFF', width: 20, height: 20 }}>\n <EmailIcon sx={{ fontSize: '10px' }} />\n </Avatar>\n );\n } else if (activity.actor?.system) {\n return (\n <Avatar sx={{ background: '#666666', width: 20, height: 20 }}>\n <MonitorIcon sx={{ fontSize: '12px' }} />\n </Avatar>\n );\n } else {\n return (\n <Avatar sx={{ background: '#6892FF', width: 20, height: 20 }}>\n <PersonIcon sx={{ fontSize: '14px' }} />\n </Avatar>\n );\n }\n};\n\nexport default function ActivitiesTab({ candidateId, dispatch }: ActivitiesTabProps) {\n const [addRecord, setAddRecord] = useState<boolean>(false);\n const [showMore, setShowMore] = useState<number[]>([]);\n\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n\n const { data: activities, isLoading: loadingActivities } = useQuery({\n queryKey: ['activities'],\n queryFn: async () => {\n if (candidateId) {\n const { res } = await Api.getCandidateActivities(candidateId);\n return res;\n } else if (application) {\n const { res } = await ApplicationApi.getApplicationActivities(\n application?.job.id,\n application?.id\n );\n return res;\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting ${candidateId ? 'candidate' : 'application'} activities, ${error}`,\n state: 'error'\n }\n })\n });\n\n const { mutate: addCandidateNote, isLoading: addingCandidateNote } = useMutation({\n mutationFn: async ({ subject, body }: { subject: string; body: string }) => {\n if (candidateId) {\n const { res } = await Api.addCandidateNote(candidateId, { subject: subject, body: body });\n return res;\n }\n },\n onSuccess: (res) => {\n queryClient.invalidateQueries(['activities']);\n dispatch({ type: 'SET_SNACKBAR', payload: { message: res.success, state: 'success' } });\n setAddRecord(false);\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in adding permanent record, ${error}`,\n state: 'error'\n }\n });\n }\n });\n\n return (\n <Stack>\n {candidateId && (\n <Stack sx={{ flexDirection: 'row', padding: '16px 0px', columnGap: 2 }}>\n <Button\n id=\"add-record-button\"\n sx={sharedClasses.genericButtonSecondary}\n startIcon={<EditNoteIcon />}\n onClick={() => setAddRecord(true)}\n >\n Add record\n </Button>\n </Stack>\n )}\n {loadingActivities ? (\n [...Array(5)].map((_, index) => (\n <Skeleton\n key={index}\n sx={{\n height: '60px',\n borderRadius: '6px'\n }}\n animation=\"wave\"\n />\n ))\n ) : (\n <Stack sx={{ rowGap: 2 }}>\n {activities?.activities.map((activity: IActivity, index: number) => {\n const isSms = activity.verb.includes('sent_sms');\n const previousActivityIsOnDifferentDate =\n index === 0 ||\n dayjs(activity.timestamp).format('L') !==\n dayjs(activities.activities[index - 1].timestamp).format('L');\n const activitiesDateHeader = () => {\n if (dayjs(activity.timestamp).format('L') === dayjs().format('L')) {\n return 'Today';\n } else if (\n dayjs(activity.timestamp).format('L') === dayjs().subtract(1, 'day').format('L')\n ) {\n return 'Yesterday';\n } else {\n return dayjs(activity.timestamp).format('DD MMM YYYY');\n }\n };\n return (\n <Stack key={activity.id}>\n {previousActivityIsOnDifferentDate && (\n <Stack sx={{ color: '#666666', fontWeight: 600, padding: '8px 0px' }}>\n {activitiesDateHeader()}\n </Stack>\n )}\n <Stack key={activity.id} sx={{ flexDirection: 'row', columnGap: 2 }}>\n <ActivityIcon activity={activity} />\n <Stack sx={{ flexGrow: 1 }}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <Box\n dangerouslySetInnerHTML={{\n __html:\n dompurify.sanitize(`<b>${activity.actor?.name || ''}</b>`) +\n ' ' +\n activity.activity_html\n .replace('Added note', 'Added permanent record') // needed to rename the existing note on candidates to permanent record\n .replace('with no template', '')\n }}\n sx={{ color: '#333333' }}\n />\n <Stack sx={styles.timestamp}>{dayjs(activity.timestamp).format('LT')}</Stack>\n </Stack>\n {activity.email_status && (\n <Stack\n sx={{\n ...styles.emailStatus,\n color: getStatusColor(toTitleCase(activity.email_status))[0],\n background: `${getStatusColor(toTitleCase(activity.email_status))[1]}`\n }}\n >\n {activity.email_status}\n </Stack>\n )}\n {!activity.verb.includes('Updated the note') &&\n (activity.verb.includes('sent') ||\n activity.verb.includes('enqueued') ||\n activity.verb.includes('note') ||\n activity.verb.includes('permanent record')) && (\n <Stack\n sx={{\n flexDirection: 'row',\n color: '#939393',\n width: 'fit-content',\n cursor: 'pointer'\n }}\n onClick={() => {\n if (showMore.includes(activity.id)) {\n setShowMore(showMore.filter((s) => s !== activity.id));\n } else {\n setShowMore([...showMore, activity.id]);\n }\n }}\n >\n <Stack sx={{ fontSize: '12px' }}>Show</Stack>\n {showMore.includes(activity.id) ? (\n <ExpandLessIcon sx={{ fontSize: '1rem' }} />\n ) : (\n <ExpandMoreIcon sx={{ fontSize: '1rem' }} />\n )}\n </Stack>\n )}\n </Stack>\n </Stack>\n <Collapse\n in={showMore.includes(activity.id)}\n sx={{ padding: '8px 0px', paddingLeft: 4 }}\n >\n {activity.verb.includes('note') ||\n activity.verb.includes('permanent record') ||\n activity.verb.includes('SMS') ? (\n <Stack sx={styles.showNoteContainer}>\n {activity.indirect_object.subject && (\n <Stack sx={{ fontWeight: 'bold', color: '#333333' }}>\n {activity.indirect_object.subject}\n </Stack>\n )}\n <Stack sx={{ color: '#333333' }}>{activity.indirect_object.body}</Stack>\n </Stack>\n ) : (\n <Stack sx={styles.showNoteContainer}>\n {!isSms && (\n <Stack sx={{ fontWeight: 'bold', color: '#333333' }}>\n {activity.indirect_object.subject}\n </Stack>\n )}\n <Box\n dangerouslySetInnerHTML={{\n __html: dompurify.sanitize(`${activity.indirect_object.body || ''}`)\n }}\n sx={{ color: '#333333', overflowY: 'auto' }}\n />\n </Stack>\n )}\n </Collapse>\n </Stack>\n );\n })}\n </Stack>\n )}\n {candidateId && addRecord && (\n <AddRecord\n isOpen={addRecord}\n handleClose={() => setAddRecord(false)}\n addRecord={addCandidateNote}\n addingRecord={addingCandidateNote}\n />\n )}\n </Stack>\n );\n}\n","import React, { useState } from 'react';\nimport { Stack } from '@mui/material';\nimport StyledModal from '../Components/GenericModal/StyledModal';\nimport {\n FormTextField,\n MultilineFormTextField\n} from '../Components/CustomUIElements/FormTextField';\nimport ModalFooterButtons from '../Components/GenericModal/ModalFooterButtons';\nimport { styles } from './styles';\n\nexport default function AddRecord({\n isOpen,\n handleClose,\n addRecord,\n addingRecord,\n styleOverrides\n}: {\n isOpen: boolean;\n handleClose: () => void;\n addRecord: ({ subject, body }: { subject: string; body: string }) => void;\n addingRecord: boolean;\n styleOverrides?: Record<string, string>;\n}) {\n const [subject, setSubject] = useState<string>('');\n const [body, setBody] = useState<string>('');\n\n return (\n <StyledModal\n isOpen={isOpen}\n label=\"Add candidate permanent record\"\n handleClose={handleClose}\n styleOverrides={{ ...styles.modalContainer, width: '700px', ...styleOverrides }}\n closeIconId=\"close-permanent-record-button\"\n >\n <Stack sx={styles.modalContent}>\n <Stack sx={styles.modalTitle}>Permanent record</Stack>\n <Stack sx={{ rowGap: 3, overflow: 'auto' }}>\n <FormTextField\n label=\"Subject\"\n value={subject}\n required\n onChange={(v) => setSubject(v.target.value)}\n styles={{ width: '35%' }}\n />\n <MultilineFormTextField\n label=\"Body\"\n value={body}\n onChange={(e) => setBody(e.target.value)}\n fullWidth\n rows={5}\n required\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Save\"\n primaryButtonCallback={() => addRecord({ subject, body })}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n isLoading={addingRecord}\n primaryButtonDisabled={!subject || !body}\n primaryButtonID=\"save-permanent-record-button\"\n secondaryButtonID=\"cancel-permanent-record-button\"\n primaryButtonMinWidth=\"75px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { useState, useReducer } from 'react';\nimport { Divider, Stack, Tabs, Tab, Skeleton, Tooltip } from '@mui/material';\nimport {\n Edit as EditIcon,\n Delete as DeleteIcon,\n PeopleAlt as PeopleAltIcon\n} from '@mui/icons-material';\nimport { CandidateReducer, InitialCandidateState } from './reducer';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport { ISnackbarInput } from '../Components/CustomUIElements/StyledSnackbar';\nimport { useQuery } from '@tanstack/react-query';\nimport Api from './API';\nimport ProfileTab from './ProfileTab';\nimport ActivitiesTab from './ActivitiesTab';\nimport { styles } from './styles';\nimport EditCandidate from '../Candidates/EditCandidate';\nimport DeleteCandidate from '../Candidates/DeleteCandidate';\nimport MergeCandidates from './MergeCandidates';\nimport { formatUserPermissions } from '../Components/Utilities/formatUserPermissions';\nimport { getPermissions } from '../../shared/permissionHelpers';\n\nexport default function Candidate({\n candidateId,\n isAdminUser\n}: {\n candidateId: number;\n isAdminUser: boolean;\n}) {\n const [CandidateState, dispatch] = useReducer(CandidateReducer, InitialCandidateState);\n const [tabValue, setTabValue] = useState<number>(0);\n const [openMergeModal, setOpenMergeModal] = useState<boolean>(false);\n\n const { data: candidate, isLoading: loadingCandidate } = useQuery({\n queryKey: ['candidate'],\n queryFn: async () => {\n const { res } = await Api.getCandidateData(candidateId);\n return res;\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting candidate data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const { data: permissions } = useQuery({\n queryKey: ['permissions'],\n queryFn: async () => {\n const res = await getPermissions();\n return formatUserPermissions(res);\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting user permissions, ${error}`,\n state: 'error'\n }\n });\n }\n });\n\n return (\n <Stack sx={{ padding: 5 }}>\n <Stack sx={styles.candidateHeaderContainer}>\n {loadingCandidate ? (\n <Skeleton animation=\"wave\" width={500} height={45} />\n ) : (\n <Stack sx={styles.candidateNameHeader}>\n {candidate?.firstname} {candidate?.lastname}\n </Stack>\n )}\n {loadingCandidate ? (\n <Skeleton animation=\"wave\" width={200} height={45} />\n ) : (\n <Stack sx={styles.candidateActionIconsContainer}>\n {permissions?.Candidates?.['Edit Candidates'] && (\n <Tooltip placement=\"top\" title=\"Edit\" arrow>\n <EditIcon\n onClick={() => dispatch({ type: 'OPEN_EDIT_MODAL', payload: true })}\n id=\"edit-candidate-button\"\n />\n </Tooltip>\n )}\n {isAdminUser && (\n <Tooltip placement=\"top\" title=\"Delete\" arrow>\n <DeleteIcon\n sx={{ color: '#E37D7A' }}\n onClick={() => dispatch({ type: 'OPEN_DELETE_MODAL', payload: true })}\n id=\"delete-candidate-button\"\n />\n </Tooltip>\n )}\n {candidate?.duplicated_candidates.length > 1 && (\n <Tooltip placement=\"top\" title=\"Duplicated\" arrow>\n <PeopleAltIcon\n onClick={() => setOpenMergeModal(true)}\n id=\"duplicated-candidate-button\"\n />\n </Tooltip>\n )}\n </Stack>\n )}\n </Stack>\n <Tabs\n value={tabValue}\n onChange={(e, value) => setTabValue(value)}\n TabIndicatorProps={{\n sx: { ...styles.candidateTabIndicator, maxWidth: tabValue ? '4.8em' : '3.5em' }\n }}\n sx={styles.candidateTabs}\n >\n <Tab label=\"Profile\" id=\"candidate-profile-tab\" />\n <Tab label=\"Activities\" id=\"candidate-activities-tab\" />\n </Tabs>\n <Divider />\n {tabValue ? (\n <ActivitiesTab candidateId={candidateId} dispatch={dispatch} />\n ) : (\n candidate && (\n <ProfileTab\n candidate={candidate}\n CandidateState={CandidateState}\n dispatch={dispatch}\n permissions={permissions}\n />\n )\n )}\n {CandidateState.openEditModal && (\n <EditCandidate\n CandidateState={CandidateState}\n editedCandidate={candidate}\n CandidateDispatch={dispatch}\n />\n )}\n <DeleteCandidate\n isDialogOpen={CandidateState.openDeleteModal}\n candidateId={candidateId}\n CandidateDispatch={dispatch}\n />\n <StyledSnackbar\n message={CandidateState.snackbar.message}\n state={CandidateState.snackbar.state}\n setSnackbarState={(snackbarInput: ISnackbarInput) =>\n dispatch({ type: 'SET_SNACKBAR', payload: snackbarInput })\n }\n />\n <MergeCandidates\n isOpen={openMergeModal}\n handleClose={() => setOpenMergeModal(false)}\n candidateId={candidateId}\n candidates={candidate?.duplicated_candidates}\n dispatch={dispatch}\n />\n </Stack>\n );\n}\n","import React, { useState } from 'react';\nimport { CandidateState } from './types';\nimport { TableCell, Stack, Collapse } from '@mui/material';\nimport { Circle as CircleIcon } from '@mui/icons-material';\nimport { classes } from '../../NewUI/Components/GenericTable/styles';\nimport { ICandidateApplication } from './types';\nimport dayjs from 'dayjs';\nimport { styles } from './styles';\nimport { getRatingColor } from '../Job/Applications/SelectedApplicants';\n\nconst CandidateApplicationsTableRows = ({\n column,\n item,\n tableHovered\n}: {\n column: CandidateState['candidateApplicationsTableState']['columns'][number];\n item: ICandidateApplication;\n tableHovered: boolean;\n}) => {\n const [showMore, setShowMore] = useState<number[]>([]);\n if (!column.enabled) return null;\n switch (column.id) {\n case 'id':\n return (\n <TableCell\n key={item.id + column.id}\n sx={{\n ...classes.sticky,\n ...classes.idTableCell,\n minWidth: '100px',\n left: '0px',\n ...styles.candidateApplicationsTableLink\n }}\n >\n <a\n href={item.sister_entity_application ? undefined : item.application_link}\n id=\"application-id-link\"\n >\n {item.id || '-'}\n </a>\n </TableCell>\n );\n case 'job':\n return (\n <TableCell\n key={item.id + column.id}\n sx={{\n ...classes.sticky,\n ...classes.itemTitleTableCell,\n ...(tableHovered && classes.scrollShadowVisible),\n left: '100px',\n minWidth: '150px',\n ...styles.candidateApplicationsTableLink\n }}\n >\n <a href={item.sister_entity_application ? undefined : item.job_link} id=\"job-name-link\">\n {item.job_title || '-'}\n </a>\n </TableCell>\n );\n case 'entity':\n return (\n <TableCell key={item.id + column.id} sx={styles.candidateApplicationsTableLink}>\n <a\n href={item.sister_entity_application ? undefined : item.entity_link}\n id=\"entity-name-link\"\n >\n {item.entity || '-'}\n </a>\n </TableCell>\n );\n case 'created_at':\n return (\n <TableCell key={item.id + column.id}>\n {dayjs(item.created_at).format('D MMM YYYY, LT') || '-'}\n </TableCell>\n );\n case 'rating':\n return (\n <TableCell key={item.id + column.id}>\n {item.rating ? (\n <Stack\n sx={{\n ...styles.candidateApplicationsRating,\n background: getRatingColor(Number(item.rating))\n }}\n >\n {item.rating.replace('.0', '')}%\n </Stack>\n ) : (\n '-'\n )}\n </TableCell>\n );\n case 'status':\n return (\n <TableCell key={item.id + column.id}>\n {item.status ? (\n <Stack sx={styles.candidateApplicationsTableStatusContainer}>\n <CircleIcon sx={{ fontSize: '0.5rem', color: item.status_colour || '#808080' }} />\n {item.status}\n </Stack>\n ) : (\n '-'\n )}\n </TableCell>\n );\n case 'attachments':\n return (\n <TableCell key={item.id + column.id}>\n {item.attachments.length ? (\n <Stack>\n <Stack>{item.attachments[0]}</Stack>\n <Collapse in={showMore.includes(item.id)}>\n {item.attachments.slice(1).map((i, index) => (\n <Stack key={index}>{i}</Stack>\n ))}\n </Collapse>\n {item.attachments.length > 1 && (\n <Stack\n sx={{ color: '#084D6D', cursor: 'pointer', width: 'fit-content' }}\n onClick={() => {\n if (showMore.includes(item.id)) {\n setShowMore(showMore.filter((s) => s !== item.id));\n } else {\n setShowMore([...showMore, item.id]);\n }\n }}\n >\n Show {showMore.includes(item.id) ? 'less' : 'all'}\n </Stack>\n )}\n </Stack>\n ) : (\n '-'\n )}\n </TableCell>\n );\n default:\n return <TableCell></TableCell>;\n }\n};\n\nexport default CandidateApplicationsTableRows;\n","import React, { FC } from 'react';\nimport PersonIcon from '@mui/icons-material/Person';\nimport { SxProps } from '@mui/material';\nimport { theme } from '../../ThemeContext/ThemeObject';\n\ninterface IProps {\n existingCandidate: boolean;\n sx?: SxProps;\n}\n\nconst CandidateIcon: FC<IProps> = ({ existingCandidate, sx }) => {\n return (\n <PersonIcon\n sx={{\n fontSize: '21px',\n color: existingCandidate ? theme.palette.error.main : theme.palette.success.main,\n ...sx\n }}\n />\n );\n};\n\nexport default CandidateIcon;\n","import React, { Dispatch, useState, useRef, SyntheticEvent } from 'react';\nimport {\n Autocomplete,\n Chip,\n FilterOptionsState,\n Stack,\n TextField,\n createFilterOptions\n} from '@mui/material';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from './API';\nimport { TCandidate } from '../Candidates/types';\nimport { CandidateAction } from './types';\nimport { ApplicationAction, IApplication } from '../Application/types';\nimport { styles } from './styles';\n\nconst CREATE_TEXT = 'Create \"';\n\nexport default function CandidateTags({\n focused,\n candidate,\n dispatch,\n inputId\n}: {\n focused: boolean;\n candidate: TCandidate;\n dispatch: Dispatch<CandidateAction> | Dispatch<ApplicationAction>;\n inputId?: string;\n}) {\n const [tags, setTags] = useState<string[]>(candidate.tag_list);\n const queryClient = useQueryClient();\n const application = queryClient.getQueryData<IApplication>(['application']);\n const ref = useRef<HTMLDivElement>(null);\n\n const { mutate: updateCandidateTags } = useMutation({\n mutationFn: async (value: string[]) => {\n const { res } = await Api.updateCandidateTags(candidate.id, value);\n return res;\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Candidate tags have been successfully updated`, state: 'success' }\n });\n // updating candidate data when the component is called from the individual candidate page\n queryClient.setQueryData(['candidate'], res);\n queryClient.invalidateQueries(['candidate'], { exact: true });\n // updating application candidate data when the component is called from the individual application page\n queryClient.setQueryData(['application'], { ...application, candidate: res });\n queryClient.invalidateQueries(['application'], { exact: true });\n ref.current?.focus();\n },\n onError: (error: { error: string }) => {\n setTags(candidate.tag_list);\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in updating candidate tags, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const handleTagsChange = (_e: SyntheticEvent, value: string[]) => {\n const newTags = value.map((val) =>\n val.startsWith(CREATE_TEXT) ? val.slice(CREATE_TEXT.length, -1) : val\n );\n\n setTags(newTags);\n updateCandidateTags(newTags);\n dispatch({ type: 'SET_FOCUSED', payload: true });\n };\n\n // function to filter options and suggest creating a new option\n const filterOptions = (options: string[], state: FilterOptionsState<string>) => {\n const { inputValue } = state;\n\n const filtered = options.filter((option) =>\n option.toLowerCase().includes(inputValue.toLowerCase())\n );\n\n const isNew = !options.some((option) => option.toLowerCase() === inputValue.toLowerCase());\n\n if (inputValue && isNew) {\n filtered.push(`${CREATE_TEXT}${inputValue}\"`);\n }\n\n return filtered;\n };\n\n return (\n <Stack sx={{ ...styles.candidateSectionContainer, rowGap: 1 }}>\n <Stack sx={styles.candidateSectionHeader}>Candidate Tags</Stack>\n <Autocomplete\n id={inputId || 'candidate-tags-input'}\n clearIcon={false}\n options={candidate.entity_tags?.map((tag) => tag.value)}\n value={tags}\n onChange={handleTagsChange}\n filterOptions={filterOptions}\n freeSolo\n multiple\n sx={{ ...sharedClasses.formAutocomplete, '.MuiInputBase-root': { margin: 'unset' } }}\n ListboxProps={{ style: styles.listStyle }}\n renderTags={(value, props) =>\n value.map((option, index) => <Chip label={option} {...props({ index })} key={index} />)\n }\n slotProps={{ popper: { sx: { zIndex: 1 } } }}\n renderInput={(params) => (\n <TextField\n onBlur={() => dispatch({ type: 'SET_FOCUSED', payload: false })}\n autoFocus={focused}\n placeholder=\"Type your tag here...\"\n {...params}\n sx={{ '& .MuiOutlinedInput-root': { padding: 0.5 } }}\n ref={ref}\n />\n )}\n />\n </Stack>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport {\n Autocomplete,\n Button,\n Checkbox,\n FormControlLabel,\n InputLabel,\n Stack,\n TextField\n} from '@mui/material';\nimport { Delete as DeleteIcon } from '@mui/icons-material';\nimport { CandidateAction, CandidateState, ICandidateTask } from '../types';\nimport dayjs from 'dayjs';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { TCandidate } from '../../Candidates/types';\nimport {\n FormTextField,\n MultilineFormTextField\n} from '../../Components/CustomUIElements/FormTextField';\nimport { SingleDateTimePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { classes as importClasses } from '../../../ScoutCalendar/CreateEvent/EventProgress/styles';\nimport FormSelectWithIconField from '../../Components/CustomUIElements/FormSelectWithIconField';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { IAssignableUsers } from '../../ApprovalForms/types';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { styles } from '../styles';\n\nconst priorities = [\n { label: 'Low', value: '1', color: '#8CCF95' },\n { label: 'Normal', value: '0', color: '#E6A052' },\n { label: 'High', value: '-1', color: '#E37D7A' }\n];\n\nexport default function AddEditTaskModal({\n tasks,\n candidate,\n assignableUsers,\n loadingAssignableUsers,\n CandidateState,\n dispatch\n}: {\n tasks: ICandidateTask[];\n candidate: TCandidate;\n assignableUsers: IAssignableUsers[];\n loadingAssignableUsers: boolean;\n CandidateState: CandidateState;\n dispatch: Dispatch<CandidateAction>;\n}) {\n const { editedTask } = CandidateState;\n const [subject, setSubject] = useState<string>(editedTask?.subject || '');\n const [note, setNote] = useState<string>(editedTask?.note || '');\n const [date, setDate] = useState<Date>(new Date(editedTask?.due_at || Date.now()));\n const [priority, setPriority] = useState<{ label: string; value: string; color: string }>(\n priorities.find((p) => p.label === editedTask?.priority) || priorities[0]\n );\n const [assignedUser, setAssignedUser] = useState<IAssignableUsers | null>(null);\n const [taskCompleted, setTaskCompleted] = useState<boolean>(!!editedTask?.completed_at);\n const [deleteTaskDialogOpen, setDeleteTaskDialogOpen] = useState<boolean>(false);\n const [errors, setErrors] = useState<Record<string, string>>({});\n const queryClient = useQueryClient();\n\n const { mutate: createCandidateTask, isLoading: creatingCandidateTask } = useMutation({\n mutationFn: async () => {\n if (!assignedUser) return;\n const { res } = await Api.createCandidateTask(candidate.id, {\n subject,\n note,\n priority: Number(priority.value),\n due_at: dayjs(date).toISOString(),\n user_id: assignedUser.id\n });\n return res;\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Task has been successfully added`, state: 'success' }\n });\n queryClient.setQueryData(['tasks'], { tasks: [...tasks, res] });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error creating candidate task, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const { mutate: updateCandidateTask, isLoading: updatingCandidateTask } = useMutation({\n mutationFn: async () => {\n if (!editedTask) return;\n const { res } = await Api.updateCandidateTask(candidate.id, editedTask.id, {\n subject,\n note,\n priority: Number(priority.value),\n due_at: dayjs(date).toISOString(),\n completed_at: taskCompleted ? dayjs().toISOString() : null\n });\n return res;\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Task has been successfully updated`, state: 'success' }\n });\n const newTasks = [...tasks];\n const index = tasks.findIndex((t) => t.id === editedTask?.id);\n newTasks[index] = res;\n queryClient.setQueryData(['tasks'], { tasks: newTasks });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error updating candidate task, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const { mutate: deleteCandidateTask, isLoading: deletingCandidateTask } = useMutation({\n mutationFn: async () => {\n editedTask && Api.deleteCandidateTask(candidate.id, editedTask.id);\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Task has been successfully deleted`, state: 'success' }\n });\n const newTasks = tasks.filter((task) => task.id !== editedTask?.id);\n queryClient.setQueryData(['tasks'], { tasks: newTasks });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error deleting candidate task, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const handleClose = () => {\n editedTask && dispatch({ type: 'SET_EDITED_TASK', payload: null });\n dispatch({ type: 'OPEN_TASK_MODAL', payload: false });\n };\n\n const DeleteDialogDescription = () => (\n <Stack>\n <Stack>Are you sure you want to delete the current task?</Stack>\n <Stack>{`You will lose the task you've made.`}</Stack>\n </Stack>\n );\n\n const validateInputs = () => {\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!subject.trim()) inputErrors.subject = 'Subject can not be empty';\n if (!note.trim()) inputErrors.note = 'Note can not be empty';\n if (!assignedUser && !editedTask) inputErrors.user = 'Assigned user can not be empty';\n setErrors(inputErrors);\n return !Object.keys(inputErrors).length;\n };\n\n const handleSubmit = () => {\n if (validateInputs()) {\n editedTask ? updateCandidateTask() : createCandidateTask();\n }\n };\n\n return (\n <StyledModal\n isOpen={CandidateState.candidateTaskModalIsOpen}\n label=\"Add/Edit candidate task\"\n handleClose={handleClose}\n styleOverrides={styles.modalContainer}\n closeIconId={`close-${editedTask ? 'edit' : 'add'}-task-button`}\n >\n <Stack sx={styles.modalContent}>\n <Stack sx={styles.modalTitle}>{editedTask ? 'Edit' : 'Add'} task</Stack>\n <Stack sx={styles.modalCandidateName}>\n {candidate.firstname} {candidate.lastname}\n </Stack>\n <FormTextField\n label=\"Subject\"\n value={subject}\n required\n onChange={(v) => setSubject(v.target.value)}\n error={errors.subject}\n />\n <MultilineFormTextField\n label=\"Note\"\n value={note}\n onChange={(e) => setNote(e.target.value)}\n fullWidth\n rows={5}\n required\n error={errors.note}\n />\n <Stack sx={{ flexDirection: 'row', columnGap: 5 }}>\n <Stack sx={{ width: '45%', flexDirection: 'row', columnGap: 2 }}>\n <Stack>\n <SingleDateTimePicker\n value={date}\n label={\n <InputLabel htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n Expiry date and time<span>*</span>\n </InputLabel>\n }\n inputStyles={importClasses.datePicker}\n disablePast\n onChange={(value) => value && setDate(value)}\n />\n </Stack>\n </Stack>\n <FormSelectWithIconField\n options={priorities}\n defaultValue={priority.value}\n onChange={(value) =>\n setPriority(priorities.find((p) => p.value === value) || priorities[0])\n }\n label={'Priority'}\n styles={styles.prioritySelectStyling}\n />\n </Stack>\n {!editedTask && (\n <Autocomplete\n disablePortal\n id=\"add-candidate-task-assigned-users-select\"\n options={assignableUsers || []}\n getOptionLabel={(option: IAssignableUsers) =>\n `${option?.firstname} ${option?.lastname}`\n }\n value={assignedUser}\n sx={{ ...sharedClasses.formAutocomplete, paddingTop: 3, width: '45%' }}\n loading={loadingAssignableUsers}\n loadingText=\"Loading assignable users...\"\n ListboxProps={{ style: styles.listboxProps }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Assign to user\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n error={!assignedUser}\n helperText={!assignedUser && errors.user}\n />\n )}\n onChange={(event, value) => setAssignedUser(value)}\n />\n )}\n {editedTask && (\n <FormControlLabel\n control={\n <Checkbox\n id=\"mark-as-complete-check-box\"\n sx={sharedClasses.formCheckbox}\n checked={taskCompleted}\n onClick={() => setTaskCompleted(!taskCompleted)}\n disableRipple\n />\n }\n label=\"Mark as complete\"\n sx={sharedClasses.checkboxLabel}\n />\n )}\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n {editedTask && (\n <Button\n id=\"delete-task-button\"\n sx={{\n ...sharedClasses.genericRedButton,\n marginTop: '10px',\n columnGap: 0.5,\n minWidth: '135px'\n }}\n onClick={() => setDeleteTaskDialogOpen(true)}\n >\n <DeleteIcon />\n Delete task\n </Button>\n )}\n <ModalFooterButtons\n primaryButtonText={editedTask ? 'Save' : 'Submit'}\n primaryButtonCallback={handleSubmit}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n isLoading={creatingCandidateTask || updatingCandidateTask}\n primaryButtonID={`${editedTask ? 'save' : 'submit'}-task-button`}\n secondaryButtonID={`cancel-${editedTask ? 'edit' : 'add'}-task-button`}\n />\n </Stack>\n </Stack>\n <GenericDialog\n isDialogOpen={deleteTaskDialogOpen}\n setDialogOpen={setDeleteTaskDialogOpen}\n title={`Delete task?`}\n description={DeleteDialogDescription()}\n buttonCallback={() => deleteCandidateTask()}\n callbackLoading={deletingCandidateTask}\n buttonText=\"Delete\"\n secondaryButtonText=\"Cancel\"\n url=\"\"\n primaryButtonId=\"confirm-delete-task-button\"\n secondaryButtonId=\"cancel-delete-task-button\"\n />\n </StyledModal>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Stack, Avatar, Chip, Tooltip, CircularProgress } from '@mui/material';\nimport {\n Alarm as AlarmIcon,\n CheckCircleOutline as CheckCircleOutlineIcon,\n CheckCircle as CheckCircleIcon,\n Task as TaskIcon\n} from '@mui/icons-material';\nimport { CandidateAction, ICandidateTask } from '../types';\nimport dayjs from 'dayjs';\nimport { styles } from '../styles';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\n\nexport default function CandidateTask({\n task,\n dispatch,\n candidateId,\n tasks\n}: {\n task: ICandidateTask;\n dispatch: Dispatch<CandidateAction>;\n candidateId: number;\n tasks: ICandidateTask[];\n}) {\n const queryClient = useQueryClient();\n const { mutate: completeCandidateTask, isLoading: completingCandidateTask } = useMutation({\n mutationFn: async () => {\n const { res } = await Api.updateCandidateTask(candidateId, task.id, {\n completed_at: task.completed_at ? null : dayjs().toISOString()\n });\n return res;\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Task has been successfully updated`, state: 'success' }\n });\n const newTasks = [...tasks];\n const index = tasks.findIndex((t) => t.id === task?.id);\n newTasks[index] = res;\n queryClient.setQueryData(['tasks'], { tasks: newTasks });\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error updating candidate task, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n return (\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <Stack sx={{ flexDirection: 'row', columnGap: 2, alignItems: 'center' }}>\n <Tooltip\n placement=\"top\"\n title={`${task.priority === 'Normal' ? 'Medium' : task.priority} priority`}\n arrow\n >\n <Avatar variant=\"rounded\" sx={{ ...styles[task.priority], borderRadius: '6px' }}>\n <TaskIcon sx={{ fontSize: '1.1rem' }} />\n </Avatar>\n </Tooltip>\n <Stack\n id=\"task-name-link\"\n sx={{ fontSize: '16px', fontWeight: 'bold', cursor: 'pointer' }}\n onClick={() => {\n dispatch({ type: 'SET_EDITED_TASK', payload: task });\n dispatch({ type: 'OPEN_TASK_MODAL', payload: true });\n }}\n >\n {task.subject}\n </Stack>\n </Stack>\n <Stack sx={{ flexDirection: 'row', columnGap: 2, alignItems: 'center' }}>\n <Chip\n label={`Assigned to: ${task.assigned_user}`}\n sx={{ ...styles.candidateTaskChip, color: '#084D6D', background: '#EDF2F5' }}\n />\n <Chip\n icon={<AlarmIcon sx={{ fontSize: '16px' }} />}\n label={dayjs(task.due_at).format('ddd, D MMM YYYY, LT')}\n sx={{ ...styles.candidateTaskChip, color: '#666666', minWidth: '210px' }}\n />\n {completingCandidateTask ? (\n <CircularProgress size={24} sx={{ color: '#5BC4BF' }} />\n ) : (\n <Stack\n id=\"complete-task-button\"\n onClick={() => completeCandidateTask()}\n sx={{ cursor: 'pointer' }}\n >\n {task.completed_at ? (\n <CheckCircleIcon sx={{ color: '#5BC4C0' }} />\n ) : (\n <CheckCircleOutlineIcon sx={{ color: '#DDDDDD' }} />\n )}\n </Stack>\n )}\n </Stack>\n </Stack>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Stack, Box, Skeleton } from '@mui/material';\nimport { CandidateAction, ICandidateTask } from '../types';\nimport CandidateTask from './CandidateTask';\nimport EmptyTab from './EmptyTab';\n\nexport default function CandidateTasksTab({\n tasks,\n tabValue,\n fetchingTasks,\n dispatch,\n candidateId\n}: {\n tasks?: ICandidateTask[];\n tabValue: number;\n fetchingTasks: boolean;\n dispatch: Dispatch<CandidateAction>;\n candidateId: number;\n}) {\n const filteredTasks = tabValue\n ? tasks?.filter((task) => !!task.completed_at) // completed tasks\n : tasks?.filter((task) => !task.completed_at); // pending tasks\n return (\n <>\n {fetchingTasks ? (\n <>\n {[...Array(5)].map((_, index) => (\n <Box key={index}>\n <Skeleton animation=\"wave\" height={60} />\n </Box>\n ))}\n </>\n ) : (\n <>\n {tasks && filteredTasks?.length ? (\n <Stack sx={{ paddingTop: 3, rowGap: 3 }}>\n {filteredTasks.map((task) => {\n return (\n <CandidateTask\n task={task}\n key={task.id}\n dispatch={dispatch}\n candidateId={candidateId}\n tasks={tasks}\n />\n );\n })}\n </Stack>\n ) : (\n <EmptyTab tabValue={tabValue} />\n )}\n </>\n )}\n </>\n );\n}\n","import React from 'react';\nimport { Stack, Avatar } from '@mui/material';\nimport { Assignment as AssignmentIcon } from '@mui/icons-material';\n\nexport default function EmptyTab({ tabValue }: { tabValue: number }) {\n return (\n <Stack sx={{ padding: 7.5, alignItems: 'center', rowGap: 2 }}>\n <Avatar\n variant=\"rounded\"\n sx={{ borderRadius: '6px', background: '#EAEAEA', width: '60px', height: '70px' }}\n >\n <AssignmentIcon sx={{ fontSize: '3.5rem' }} />\n </Avatar>\n <Stack sx={{ color: '#DDDDDD', fontWeight: 'bold' }}>\n {`You have no ${tabValue ? 'completed' : 'pending'} tasks`}\n </Stack>\n </Stack>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack, Autocomplete, TextField } from '@mui/material';\nimport { CandidateAction, CandidateState, IWorkflow } from '../types';\nimport StyledModal from '../../Components/GenericModal/StyledModal';\nimport { TCandidate } from '../../Candidates/types';\nimport { IAssignableUsers } from '../../ApprovalForms/types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport ModalFooterButtons from '../../Components/GenericModal/ModalFooterButtons';\nimport { styles } from '../styles';\n\nexport default function TaskWorkflowModal({\n candidate,\n assignableUsers,\n loadingAssignableUsers,\n CandidateState,\n dispatch\n}: {\n candidate: TCandidate;\n assignableUsers: IAssignableUsers[];\n loadingAssignableUsers: boolean;\n CandidateState: CandidateState;\n dispatch: Dispatch<CandidateAction>;\n}) {\n const [assignedUser, setAssignedUser] = useState<IAssignableUsers | null>(null);\n const [workflow, setWorkflow] = useState<IWorkflow | null>(null);\n const [errors, setErrors] = useState<Record<string, string>>({});\n const queryClient = useQueryClient();\n\n const handleClose = () => {\n dispatch({ type: 'OPEN_TASK_WORKFLOW_MODAL', payload: false });\n };\n\n const { data: workflows, isLoading: loadingWorkflows } = useQuery({\n queryKey: ['workflows'],\n queryFn: async () => {\n const { res } = await Api.getWorkflows(candidate.id);\n return res;\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting candidate data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const { mutate: assignWorkflow, isLoading: assigningWorkflow } = useMutation({\n mutationFn: async () => {\n if (!workflow || !assignedUser) return;\n return Api.assignWorkflow(candidate.id, { id: workflow?.id, user_id: assignedUser?.id });\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `Workflow has been successfully started.`, state: 'success' }\n });\n queryClient.invalidateQueries(['tasks'], { exact: true });\n handleClose();\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error starting the workflow, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const validateInputs = () => {\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!workflow) inputErrors.workflow = 'Workflow is a required field';\n if (!assignedUser) inputErrors.user = 'Assigned user is a required field';\n setErrors(inputErrors);\n return !Object.keys(inputErrors).length;\n };\n\n return (\n <StyledModal\n isOpen={CandidateState.taskWorkflowModalIsOpen}\n label=\"Candidate task workflow\"\n handleClose={handleClose}\n styleOverrides={styles.modalContainer}\n closeIconId=\"close-start-workflow-button\"\n >\n <Stack sx={styles.modalContent}>\n <Stack sx={styles.modalTitle}>Start workflow</Stack>\n <Stack sx={styles.modalCandidateName}>\n {candidate.firstname} {candidate.lastname}\n </Stack>\n <Autocomplete\n disablePortal\n id=\"candidate-task-workflows-select\"\n options={workflows?.workflows || []}\n getOptionLabel={(option) => option.name}\n value={workflow}\n sx={{ ...sharedClasses.formAutocomplete, paddingTop: 3, width: '35%' }}\n loading={loadingWorkflows}\n loadingText=\"Loading workflows...\"\n ListboxProps={{ style: styles.listboxProps }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Workflow name\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n error={!workflow}\n helperText={!workflow && errors.workflow}\n />\n )}\n onChange={(event, value) => setWorkflow(value)}\n />\n <Autocomplete\n disablePortal\n id=\"candidate-task-workflow-assigned-users-select\"\n options={assignableUsers || []}\n getOptionLabel={(option: IAssignableUsers) => `${option?.firstname} ${option?.lastname}`}\n value={assignedUser}\n sx={{ ...sharedClasses.formAutocomplete, paddingTop: 3, width: '35%' }}\n loading={loadingAssignableUsers}\n loadingText=\"Loading assignable users...\"\n ListboxProps={{ style: styles.listboxProps }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Assign to\"\n InputLabelProps={{ shrink: true }}\n sx={styles.autoCompleteTextfield}\n required\n error={!assignedUser}\n helperText={!assignedUser && errors.user}\n />\n )}\n onChange={(event, value) => setAssignedUser(value)}\n />\n <ModalFooterButtons\n primaryButtonText=\"Submit\"\n primaryButtonCallback={() => validateInputs() && assignWorkflow()}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n isLoading={assigningWorkflow}\n primaryButtonID=\"submit-workflow-button\"\n secondaryButtonID=\"cancel-workflow-button\"\n primaryButtonMinWidth=\"90px\"\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack, Button, Tabs, Tab, Divider } from '@mui/material';\nimport { CandidateAction, CandidateState, ICandidateTask } from '../types';\nimport CandidateTasksTab from './CandidateTasksTab';\nimport { useQuery } from '@tanstack/react-query';\nimport Api from '../API';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { styles } from '../styles';\nimport AddEditTaskModal from './AddEditTaskModal';\nimport { TCandidate } from '../../Candidates/types';\nimport TaskWorkflowModal from './TaskWorkflowModal';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nexport default function CandidateTasks({\n candidate,\n CandidateState,\n dispatch,\n permissions\n}: {\n candidate: TCandidate;\n CandidateState: CandidateState;\n dispatch: Dispatch<CandidateAction>;\n permissions?: IUserPermissions;\n}) {\n const [tabValue, setTabValue] = useState<number>(0);\n\n const { data: tasks, isFetching: fetchingTasks } = useQuery({\n queryKey: ['tasks'],\n queryFn: async () => {\n const { res } = await Api.getCandidateTasks(candidate.id);\n return res as { tasks: ICandidateTask[] };\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting candidate data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const { data: assignableUsers, isLoading: loadingAssignableUsers } = useQuery({\n queryKey: ['assignable users'],\n queryFn: async () => {\n const { res } = await Api.getAssignableUsers();\n return res;\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting assignable users data, ${error}`,\n state: 'error'\n }\n })\n });\n\n return (\n <Stack sx={styles.candidateSectionContainer}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <Stack sx={styles.candidateSectionHeader}>Tasks</Stack>\n <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n <Button\n id=\"add-task-button\"\n sx={sharedClasses.genericButtonSecondary}\n onClick={() => dispatch({ type: 'OPEN_TASK_MODAL', payload: true })}\n >\n Add task\n </Button>\n {permissions?.Entities?.['Task Workflow'] && (\n <Button\n id=\"start-workflow-button\"\n sx={sharedClasses.genericButtonSecondary}\n onClick={() => dispatch({ type: 'OPEN_TASK_WORKFLOW_MODAL', payload: true })}\n >\n Start workflow\n </Button>\n )}\n </Stack>\n </Stack>\n <Tabs\n value={tabValue}\n onChange={(e, value) => setTabValue(value)}\n TabIndicatorProps={{\n sx: { ...styles.candidateTabIndicator, maxWidth: tabValue ? '5.6em' : '4.3em' }\n }}\n sx={styles.candidateTabs}\n >\n <Tab label=\"Pending\" id=\"pending-tab\" />\n <Tab label=\"Completed\" id=\"completed-tab\" />\n </Tabs>\n <Divider />\n <CandidateTasksTab\n tasks={tasks?.tasks}\n tabValue={tabValue}\n fetchingTasks={fetchingTasks}\n dispatch={dispatch}\n candidateId={candidate.id}\n />\n {tasks && CandidateState.candidateTaskModalIsOpen && (\n <AddEditTaskModal\n tasks={tasks.tasks}\n candidate={candidate}\n assignableUsers={assignableUsers.assignable_users}\n loadingAssignableUsers={loadingAssignableUsers}\n CandidateState={CandidateState}\n dispatch={dispatch}\n />\n )}\n {CandidateState.taskWorkflowModalIsOpen && (\n <TaskWorkflowModal\n candidate={candidate}\n assignableUsers={assignableUsers.assignable_users}\n loadingAssignableUsers={loadingAssignableUsers}\n CandidateState={CandidateState}\n dispatch={dispatch}\n />\n )}\n </Stack>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport {\n Stack,\n Box,\n Button,\n Link,\n Table,\n TableHead,\n TableRow,\n TableCell,\n TableBody,\n TableContainer\n} from '@mui/material';\nimport { Diversity3 } from '@mui/icons-material';\nimport StyledModal from '../Components/GenericModal/StyledModal';\nimport { useMutation } from '@tanstack/react-query';\nimport Api from './API';\nimport { styles } from './styles';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport { CandidateAction, IDuplicatedCandidate } from './types';\nimport { classes as tableStyles } from '../../TableStyles';\nimport GenericDialog from '../Components/Modals/GenericDialog';\nimport { FormTextField } from '../Components/CustomUIElements/FormTextField';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport advanced from 'dayjs/plugin/advancedFormat';\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(advanced);\n\nconst BASE_URL = window.location.origin;\n\nconst headerStyle = (name: string) => {\n switch (name) {\n case 'ID':\n return {\n minWidth: '90px'\n };\n case 'Name':\n return { minWidth: '102px' };\n case 'Email':\n return { minWidth: '120px' };\n case 'Address':\n return { minWidth: '165px' };\n case 'Phone':\n return { minWidth: '93px' };\n case 'Created':\n return { minWidth: '123px' };\n default:\n return { minWidth: '90px' };\n }\n};\n\nexport default function MergeCandidates({\n isOpen,\n handleClose,\n candidateId,\n candidates,\n dispatch\n}: {\n isOpen: boolean;\n handleClose: () => void;\n candidateId: number;\n candidates?: IDuplicatedCandidate[];\n dispatch: Dispatch<CandidateAction>;\n}) {\n const [isDialogOpen, setIsDialogOpen] = useState<boolean>(false);\n const [confirmMerge, setConfirmMerge] = useState<string>('');\n\n const { mutate: mergeCandidates, isLoading: mergingCandidates } = useMutation({\n mutationFn: async () => {\n const { res } = await Api.mergeCandidates(candidateId);\n return res;\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n handleClose();\n window.location.href = `${BASE_URL}${res.url}`;\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in merging candidates, ${error}`,\n state: 'error'\n }\n });\n }\n });\n\n const dialogDescription = (\n <Stack sx={{ color: '#000000', rowGap: 2 }}>\n <Box>\n This will <b>permanently</b> merge the candidates and all associated resources will belong\n to newest candidate\n </Box>\n <Stack sx={{ rowGap: 1, alignItems: 'center' }}>\n <Box sx={{ color: '#939393', fontSize: '14px', '& b': { color: '#000000' } }}>\n Type the word <b>MERGE</b> in the text field below to\n <Box>confirm the merge</Box>\n </Box>\n <FormTextField value={confirmMerge} onChange={(e) => setConfirmMerge(e.target.value)} />\n </Stack>\n </Stack>\n );\n\n return (\n <StyledModal\n isOpen={isOpen}\n label=\"Duplicated candidates modal\"\n handleClose={handleClose}\n styleOverrides={{ ...styles.modalContainer, width: '775px' }}\n closeIconId=\"close-duplicated-candidates-modal-button\"\n >\n <Stack sx={styles.modalContent}>\n <Stack sx={styles.modalTitle}>Duplicated candidates</Stack>\n <Stack flexDirection=\"row\">\n <Button\n sx={sharedClasses.genericButtonSecondary}\n id=\"merge-candidate-button\"\n startIcon={<Diversity3 />}\n onClick={() => setIsDialogOpen(true)}\n >\n Merge\n </Button>\n </Stack>\n <Stack>\n <Table stickyHeader aria-label=\"sticky table\" sx={tableStyles.tableStyling}>\n <TableHead>\n <TableRow>\n {['ID', 'Name', 'Email', 'Address', 'Phone', 'Created'].map((title, index) => (\n <TableCell sx={{ ...tableStyles.tableHeader, ...headerStyle(title) }} key={index}>\n <Stack>{title}</Stack>\n </TableCell>\n ))}\n </TableRow>\n </TableHead>\n </Table>\n <TableContainer sx={{ maxHeight: 350 }}>\n <Table sx={tableStyles.tableStyling}>\n <TableBody>\n {candidates?.map((c) => (\n <TableRow key={c.id} sx={{ td: { overflowWrap: 'anywhere', minWidth: '90px' } }}>\n <TableCell>\n <Link\n id=\"candidate-id-duplicated-link\"\n href={`${BASE_URL}/admin/candidates/${c.id}`}\n sx={{ color: 'black !important' }}\n target=\"_blank\"\n >\n {c.id}\n </Link>\n </TableCell>\n <TableCell>{c.name}</TableCell>\n <TableCell>{c.email}</TableCell>\n <TableCell>\n {c.address1.filter((a) => a).join(' ')}{' '}\n {c.address2.filter((a) => a).join(' ')}\n </TableCell>\n <TableCell>{c.phone}</TableCell>\n <TableCell>{dayjs(c.created_at).format('llll z')}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n </Stack>\n </Stack>\n <GenericDialog\n isDialogOpen={isDialogOpen}\n setDialogOpen={setIsDialogOpen}\n title=\"Are you sure you want to merge these candidates?\"\n description={dialogDescription}\n buttonCallback={() => mergeCandidates()}\n callbackLoading={mergingCandidates}\n buttonText=\"Merge\"\n url=\"\"\n disablePrimaryButton={confirmMerge !== 'MERGE'}\n primaryButtonId=\"confirm-merge-candidate-button\"\n secondaryButtonId=\"cancel-merge-candidate-button\"\n />\n </StyledModal>\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { Stack } from '@mui/material';\nimport { styles } from './styles';\nimport { MultilineFormTextField } from '../Components/CustomUIElements/FormTextField';\nimport ModalFooterButtons from '../Components/GenericModal/ModalFooterButtons';\n\nexport default function Notepad({\n note = '',\n updateNote,\n updatingNote,\n inputId,\n buttonId,\n onChangeCallback,\n primaryButtonDisabled\n}: {\n note?: string;\n updateNote: (note: string) => void;\n updatingNote: boolean;\n inputId?: string;\n buttonId?: string;\n onChangeCallback?: (value: string) => void;\n primaryButtonDisabled?: boolean;\n}) {\n const [notepad, setNotepad] = useState<string>(note);\n\n useEffect(() => {\n setNotepad(note);\n }, [note]);\n\n return (\n <Stack sx={{ ...styles.candidateSectionContainer, rowGap: 1 }}>\n <Stack sx={styles.candidateSectionHeader}>Notepad</Stack>\n <MultilineFormTextField\n value={notepad}\n onChange={(e) => {\n const { value } = e.target;\n setNotepad(value);\n onChangeCallback?.(value);\n }}\n placeholder=\"Write a comment here...\"\n id={inputId || 'candidate-notepad-input'}\n rows={5}\n />\n <ModalFooterButtons\n primaryButtonText=\"Save\"\n primaryButtonID={buttonId || 'candidate-save-notepad-button'}\n primaryButtonCallback={() => updateNote(notepad)}\n isLoading={updatingNote}\n primaryButtonDisabled={primaryButtonDisabled}\n />\n </Stack>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Button, Stack, Avatar } from '@mui/material';\nimport {\n Phone as PhoneIcon,\n PhoneIphone as PhoneIphoneIcon,\n Email as EmailIcon,\n LocationOn as LocationOnIcon,\n LinkedIn as LinkedInIcon\n} from '@mui/icons-material';\nimport { IAddressDetails, TCandidate } from '../Candidates/types';\nimport { useMutation, useQueryClient, useQuery } from '@tanstack/react-query';\nimport Api from './API';\nimport { CandidateAction, CandidateState } from './types';\nimport { styles } from './styles';\nimport GenericTable from '../Components/GenericTable/GenericTable';\nimport CandidateApplicationsTableRows from './CandidateApplicationsTableRows';\nimport { headerStyle } from './config';\nimport CandidateTasks from './CandidateTasks';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport CandidateTags from './CandidateTags';\nimport Notepad from './Notepad';\nimport CandidateIcon from './CandidateIcon';\n\nexport const formatAddress = (address_details: IAddressDetails) => {\n const streetDetails = [\n address_details?.street_number,\n address_details?.street1,\n address_details?.street2,\n address_details?.street_type\n ]\n .filter((s) => s)\n .join(' ');\n\n const countryDetails = [address_details?.country?.printable_name, address_details?.postcode]\n .filter((d) => d)\n .join(' ');\n\n const fullAddress = [\n streetDetails,\n address_details?.suburb,\n address_details?.state?.name,\n countryDetails\n ]\n .filter((a) => a)\n .join(', ');\n\n return fullAddress;\n};\n\nexport default function ProfileTab({\n candidate,\n CandidateState,\n dispatch,\n permissions\n}: {\n candidate: TCandidate;\n CandidateState: CandidateState;\n dispatch: Dispatch<CandidateAction>;\n permissions?: IUserPermissions;\n}) {\n const queryClient = useQueryClient();\n\n const { mutate: updateCandidateNotepad, isLoading: updatingCandidateNotepad } = useMutation({\n mutationFn: async (note: string) => {\n const { res } = await Api.updateCandidateNotepad(candidate.id, note);\n return res;\n },\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n queryClient.invalidateQueries(['candidate'], { exact: true });\n },\n onError: (error: { error: string }) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in updating candidate notepad, ${error.error}`,\n state: 'error'\n }\n });\n }\n });\n\n const { data: applications, isLoading: loadingApplications } = useQuery({\n queryKey: ['applications', CandidateState.candidateApplicationsTableSettings],\n queryFn: () =>\n Api.getCandidateApplications(candidate.id, {\n page: CandidateState.candidateApplicationsTableSettings.page,\n limit: CandidateState.candidateApplicationsTableSettings.limit,\n sort: CandidateState.candidateApplicationsTableSettings.sort,\n sort_order: CandidateState.candidateApplicationsTableSettings.sort_order\n }),\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting candidate data, ${error}`,\n state: 'error'\n }\n })\n });\n\n return (\n <Stack sx={{ rowGap: 3 }}>\n <Stack sx={{ padding: 4, flexDirection: 'row', columnGap: 3, paddingBottom: 1 }}>\n <Avatar sx={{ background: '#DDDDDD', width: '5rem', height: '5rem' }}>\n <CandidateIcon\n existingCandidate={candidate?.existing_candidate}\n sx={{ fontSize: '4rem' }}\n />\n </Avatar>\n <Stack>\n {candidate.employee_id && (\n <Stack\n sx={{ color: '#666666', fontSize: '10px', fontWeight: 'bold', marginLeft: '2px' }}\n >\n EMPLOYEE ID: {candidate.employee_id}\n </Stack>\n )}\n <Stack sx={{ rowGap: 1 }}>\n <Stack sx={styles.candidateNameContainer}>\n <Stack>\n {candidate.firstname} {candidate.lastname}\n </Stack>\n {candidate.linkedin_url && (\n <Button\n variant=\"outlined\"\n sx={styles.linkedInButton}\n disableRipple\n onClick={() =>\n candidate.linkedin_url && window.open(candidate.linkedin_url, '_blank')\n }\n >\n <LinkedInIcon sx={{ fontSize: '17px' }} />\n </Button>\n )}\n </Stack>\n <Stack sx={{ flexDirection: 'row', columnGap: '5rem' }}>\n <Stack sx={{ rowGap: 1 }}>\n <Stack sx={styles.candidateProfileDetails}>\n <PhoneIcon sx={{ color: '#084D6D' }} />\n {candidate.phone1}\n </Stack>\n <Stack sx={styles.candidateProfileDetails}>\n <EmailIcon sx={{ color: '#084D6D' }} />\n {candidate.email}\n </Stack>\n </Stack>\n <Stack sx={{ rowGap: 1 }}>\n {candidate.phone2 && (\n <Stack sx={styles.candidateProfileDetails}>\n <PhoneIphoneIcon sx={{ color: '#084D6D' }} />\n {candidate.phone2 || '-'}\n </Stack>\n )}\n <Stack sx={styles.candidateProfileAddress}>\n <LocationOnIcon sx={{ color: '#084D6D' }} />\n {candidate.address_details ? formatAddress(candidate.address_details) : '-'}\n </Stack>\n </Stack>\n </Stack>\n </Stack>\n </Stack>\n </Stack>\n <Stack sx={styles.candidateSectionContainer}>\n <Stack sx={styles.candidateSectionHeader}>Applications</Stack>\n <GenericTable\n label=\"candidate applications\"\n items={applications?.res?.applications || []}\n isLoadingItems={loadingApplications}\n tableState={CandidateState.candidateApplicationsTableState}\n dispatch={dispatch}\n headerStyle={headerStyle}\n paginationState={CandidateState.candidateApplicationsTableSettings}\n pagination={{\n totalItems: Number(applications?.resHead['x-total-count']) || 0,\n totalPages: Number(applications?.resHead['x-total-pages']) || 0\n }}\n TableRows={CandidateApplicationsTableRows}\n allowMultipleSelection={false}\n titleCellId=\"job\"\n />\n </Stack>\n <CandidateTags focused={CandidateState.focused} candidate={candidate} dispatch={dispatch} />\n <Notepad\n note={candidate.notepad?.body}\n updateNote={updateCandidateNotepad}\n updatingNote={updatingCandidateNotepad}\n />\n <CandidateTasks\n candidate={candidate}\n CandidateState={CandidateState}\n dispatch={dispatch}\n permissions={permissions}\n />\n </Stack>\n );\n}\n","import { SxProps } from '@mui/material';\nimport { classes } from '../Components/GenericTable/styles';\n\nexport const candidateApplicationsTableColumn = [\n {\n id: 'id',\n label: 'ID',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'job',\n label: 'Job',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'entity',\n label: 'Entity',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'created_at',\n label: 'Date',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'rating',\n label: 'Rating',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'status',\n label: 'Status',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'attachments',\n label: 'Attachments',\n sortable: false,\n canToggle: false,\n enabled: true\n }\n];\n\nexport const headerStyle = (\n name: (typeof candidateApplicationsTableColumn)[number]['id'] | 'checkbox' | 'actions',\n tableHovered: boolean\n): SxProps => {\n switch (name) {\n case 'id':\n return { ...classes.sticky, maxWidth: '100px', width: '100px' };\n case 'job':\n return {\n ...classes.sticky,\n ...classes.itemTitleTableCell,\n ...(tableHovered && classes.scrollShadowVisible),\n left: '100px',\n minWidth: '150px'\n };\n case 'entity':\n return { minWidth: '100px' };\n case 'created_at':\n return { minWidth: '75px' };\n case 'rating':\n return { minWidth: '75px' };\n case 'status':\n return { minWidth: '120px' };\n case 'attachments':\n return { minWidth: '150px' };\n case 'actions':\n return {\n ...classes.actionsColumnHeader,\n ...(tableHovered && classes.scrollShadowVisible)\n };\n default:\n return { minWidth: '90px' };\n }\n};\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport Candidate from './Candidate';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\nexport default function CandidatePage({\n candidateId,\n isAdminUser\n}: {\n candidateId: number;\n isAdminUser: boolean;\n}) {\n return (\n <QueryClientProvider client={queryClient}>\n <Candidate candidateId={candidateId} isAdminUser={isAdminUser} />\n </QueryClientProvider>\n );\n}\n","import React, { useReducer } from 'react';\nimport { InitialCandidatesState, CandidatesReducer } from './reducer';\nimport { Stack } from '@mui/material';\nimport { useQuery, useMutation } from '@tanstack/react-query';\nimport Api from './API';\nimport { styles } from './styles';\nimport Search from '../SmartForms/Search';\nimport GenericTable from '../Components/GenericTable/GenericTable';\nimport { headerStyle, candidatesActionsListItem } from './config';\nimport CandidatesTableRows from './CandidatesTableRows';\nimport StyledSnackbar, { ISnackbarInput } from '../Components/CustomUIElements/StyledSnackbar';\nimport EditCandidate from './EditCandidate';\nimport DeleteCandidate from './DeleteCandidate';\nimport { formatUserPermissions } from '../Components/Utilities/formatUserPermissions';\nimport { getPermissions } from '../../shared/permissionHelpers';\n\nexport default function Candidates({ isAdminUser }: { isAdminUser: boolean }) {\n const [CandidatesState, dispatch] = useReducer(CandidatesReducer, InitialCandidatesState);\n\n const { data: permissions } = useQuery({\n queryKey: ['permissions'],\n queryFn: async () => {\n const res = await getPermissions();\n return formatUserPermissions(res);\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting user permissions, ${error}`,\n state: 'error'\n }\n });\n }\n });\n\n const { isFetched: fetchedPreferences } = useQuery({\n queryKey: ['preferences'],\n queryFn: () => Api.getPreferences(),\n onSuccess: (pref) => {\n dispatch({\n type: 'SET_LIMIT',\n payload: pref.res.ui_preferences[0]?.row_count || 10\n });\n dispatch({\n type: 'SET_SORT',\n payload: {\n sortBy: pref.res.ui_preferences[0]?.sorting?.sortBy || 'lastname',\n sortOrder: pref.res.ui_preferences[0]?.sorting?.sortOrder?.toLowerCase() || 'asc'\n }\n });\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting user preference data, ${error}`,\n state: 'error'\n }\n })\n });\n\n useQuery({\n queryKey: ['table density'],\n queryFn: () => Api.getDensityPreferences(),\n onSuccess: (res) => {\n dispatch({ type: 'SET_DENSITY', payload: res.res.ui_preferences[0]?.columns?.density });\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting table density preference, ${error}`,\n state: 'error'\n }\n })\n });\n\n const handleUserPreferenceChange = useMutation({\n mutationFn: () =>\n Api.postUserPreferences({\n limit: CandidatesState.candidatesTableSettings.limit,\n sort: CandidatesState.candidatesTableSettings.sort,\n sortOrder: CandidatesState.candidatesTableSettings.sort_order\n }),\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error updating user preferences, ${error}`,\n state: 'error'\n }\n })\n });\n\n const { data: candidates, isLoading: loadingCandidates } = useQuery({\n queryKey: ['candidates', CandidatesState.candidatesTableSettings, CandidatesState.searchQuery],\n queryFn: async () => {\n const res = await Api.getCandidates({\n page: CandidatesState.candidatesTableSettings.page,\n limit: CandidatesState.candidatesTableSettings.limit,\n sort: CandidatesState.candidatesTableSettings.sort,\n sort_order: CandidatesState.candidatesTableSettings.sort_order,\n 'q[search]': CandidatesState.searchQuery.replace('+', '%2B')\n });\n return res;\n },\n onSuccess: () => {\n handleUserPreferenceChange.mutate();\n sessionStorage.setItem(\n `candidatesTablePage`,\n CandidatesState.candidatesTableSettings.page.toString()\n );\n },\n enabled: fetchedPreferences\n });\n\n const editedCandidate = CandidatesState.candidatesTableState.actions.selectedItem;\n const openEditModal = CandidatesState.candidatesTableState.actions.isOpen.edit;\n const filteredTableActionList = () => {\n if (isAdminUser) {\n return candidatesActionsListItem;\n } else if (permissions?.Candidates['Edit Candidates']) {\n return candidatesActionsListItem.filter((item) => item.id !== 'delete');\n } else {\n return undefined;\n }\n };\n\n return (\n <Stack sx={styles.candidatesPageContainer}>\n <Stack sx={styles.candidatesPageHeader}>Candidates</Stack>\n <Search\n idLabel=\"candidates\"\n placeholder=\"Search by name or email\"\n setSearch={(query) => dispatch({ type: 'SET_SEARCH_QUERY', payload: query })}\n />\n <GenericTable\n label=\"candidates list\"\n items={candidates?.res?.candidates || []}\n isLoadingItems={loadingCandidates}\n tableState={CandidatesState.candidatesTableState}\n dispatch={dispatch}\n headerStyle={headerStyle}\n paginationState={CandidatesState.candidatesTableSettings}\n pagination={{\n totalItems: Number(candidates?.resHead['x-total-count']) || 0,\n totalPages: Number(candidates?.resHead['x-total-pages']) || 0\n }}\n TableRows={CandidatesTableRows}\n TableActionList={filteredTableActionList()}\n allowMultipleSelection={false}\n titleCellId=\"lastname\"\n />\n <StyledSnackbar\n message={CandidatesState.snackbar.message}\n state={CandidatesState.snackbar.state}\n setSnackbarState={(snackbarInput: ISnackbarInput) =>\n dispatch({ type: 'SET_SNACKBAR', payload: snackbarInput })\n }\n />\n {CandidatesState.candidatesTableState.actions.selectedItem?.id && (\n <DeleteCandidate\n isDialogOpen={CandidatesState.candidatesTableState.actions.isOpen.delete}\n candidateId={CandidatesState.candidatesTableState.actions.selectedItem?.id}\n CandidatesDispatch={dispatch}\n />\n )}\n {editedCandidate && openEditModal && (\n <EditCandidate\n candidates={candidates}\n CandidatesState={CandidatesState}\n editedCandidate={editedCandidate}\n CandidatesDispatch={dispatch}\n />\n )}\n </Stack>\n );\n}\n","import React from 'react';\nimport { CandidatesState } from './types';\nimport { TCandidate } from './types';\nimport { TableCell } from '@mui/material';\nimport { classes } from '../../NewUI/Components/GenericTable/styles';\nimport CandidateIcon from '../Candidate/CandidateIcon';\n\nconst CandidatesTableRows = ({\n column,\n item,\n tableHovered\n}: {\n column: CandidatesState['candidatesTableState']['columns'][number];\n item: TCandidate;\n tableHovered: boolean;\n}) => {\n if (!column.enabled) return null;\n const Link = ({ attribute }: { attribute: 'id' | 'lastname' | 'firstname' }) => (\n <a href={`/admin/candidates/${item.id}`} id={`candidate-${attribute}-link`}>\n {item[attribute] || '-'}\n </a>\n );\n switch (column.id) {\n case 'id':\n return (\n <TableCell\n key={item.id + column.id}\n sx={{\n ...classes.sticky,\n ...classes.idTableCell,\n minWidth: '100px',\n left: '0px'\n }}\n >\n <CandidateIcon\n existingCandidate={item?.existing_candidate}\n sx={{\n fontSize: '1rem',\n margin: '-3px 7px 0 0'\n }}\n />\n <Link attribute=\"id\" />\n </TableCell>\n );\n case 'lastname':\n return (\n <TableCell\n key={item.id + column.id}\n sx={{\n ...classes.sticky,\n ...classes.itemTitleTableCell,\n ...(tableHovered && classes.scrollShadowVisible),\n left: '100px',\n minWidth: '125px'\n }}\n >\n <Link attribute=\"lastname\" />\n </TableCell>\n );\n case 'firstname':\n return (\n <TableCell\n key={item.id + column.id}\n sx={{ ...classes.itemTitleTableCell, minWidth: '125px' }}\n >\n <Link attribute=\"firstname\" />\n </TableCell>\n );\n case 'email':\n return <TableCell key={item.id + column.id}>{item.email || '-'}</TableCell>;\n case 'location':\n return (\n <TableCell key={item.id + column.id}>\n {item.address_details?.suburb || '-'}\n {item.address_details?.state?.abbreviation &&\n `, ${item.address_details.state.abbreviation}`}\n </TableCell>\n );\n case 'applications':\n return <TableCell key={item.id + column.id}>{item.number_of_applications || '-'}</TableCell>;\n default:\n return <TableCell></TableCell>;\n }\n};\n\nexport default CandidatesTableRows;\n","import React, { useState, Dispatch } from 'react';\nimport { Box, Stack } from '@mui/material';\nimport GenericDialog from '../Components/Modals/GenericDialog';\nimport { FormTextField } from '../Components/CustomUIElements/FormTextField';\nimport { CandidatesAction } from './types';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from './API';\nimport { CandidateAction } from '../Candidate/types';\n\nexport default function DeleteCandidate({\n isDialogOpen,\n candidateId,\n CandidatesDispatch,\n CandidateDispatch\n}: {\n isDialogOpen: boolean;\n candidateId: number;\n CandidatesDispatch?: Dispatch<CandidatesAction>;\n CandidateDispatch?: Dispatch<CandidateAction>;\n}) {\n const [confirmDelete, setConfirmDelete] = useState<string>('');\n const queryClient = useQueryClient();\n\n const deleteCandidate = useMutation({\n mutationFn: () => Api.deleteCandidate(candidateId),\n onSuccess: () => {\n const successSnackbarPayload: {\n type: 'SET_SNACKBAR';\n payload: { message: string; state: 'success' };\n } = {\n type: 'SET_SNACKBAR',\n payload: {\n message: `Candidate has been deleted`,\n state: 'success'\n }\n };\n CandidatesDispatch && CandidatesDispatch(successSnackbarPayload);\n CandidateDispatch && CandidateDispatch(successSnackbarPayload);\n if (CandidatesDispatch) {\n queryClient.removeQueries(['candidates']);\n CandidatesDispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'delete' });\n } else {\n CandidateDispatch && CandidateDispatch({ type: 'OPEN_DELETE_MODAL', payload: false });\n window.location.href = `${window.location.origin}/admin/candidates`;\n }\n },\n onError: (error) => {\n const errorSnackbarPayload: {\n type: 'SET_SNACKBAR';\n payload: { message: string; state: 'error' };\n } = {\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error deleting candidate, ${error}`,\n state: 'error'\n }\n };\n CandidatesDispatch && CandidatesDispatch(errorSnackbarPayload);\n CandidateDispatch && CandidateDispatch(errorSnackbarPayload);\n }\n });\n\n const dialogDescription = (\n <Stack sx={{ color: '#000000', rowGap: 2 }}>\n <Box>\n This will <b>permanently</b> delete the candidate and all associated applications\n </Box>\n <Stack sx={{ rowGap: 1, alignItems: 'center' }}>\n <Box sx={{ color: '#939393', fontSize: '14px', '& b': { color: '#000000' } }}>\n Type the word <b>DELETE</b> in the text field below to\n <Box>confirm deletion</Box>\n </Box>\n <FormTextField value={confirmDelete} onChange={(e) => setConfirmDelete(e.target.value)} />\n </Stack>\n </Stack>\n );\n return (\n <GenericDialog\n isDialogOpen={isDialogOpen}\n setDialogOpen={() => {\n CandidatesDispatch &&\n CandidatesDispatch({\n type: 'CLOSE_ACTION_ITEM',\n payload: 'delete'\n });\n CandidateDispatch && CandidateDispatch({ type: 'OPEN_DELETE_MODAL', payload: false });\n }}\n title=\"Are you sure you want to delete this candidate?\"\n description={dialogDescription}\n buttonCallback={() => deleteCandidate.mutate()}\n callbackLoading={deleteCandidate.isLoading}\n buttonText=\"Delete\"\n url=\"\"\n disablePrimaryButton={confirmDelete !== 'DELETE'}\n primaryButtonId=\"delete-candidate-button\"\n secondaryButtonId=\"cancel-delete-candidate-button\"\n />\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack, Autocomplete, TextField } from '@mui/material';\nimport StyledModal from '../Components/GenericModal/StyledModal';\nimport { CandidatesAction, CandidatesState } from './types';\nimport { FormTextField } from '../Components/CustomUIElements/FormTextField';\nimport ModalFooterButtons from '../Components/GenericModal/ModalFooterButtons';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from './API';\nimport { ICountries, IStates } from '../Components/sharedTypes';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport { TCandidate } from './types';\nimport { styles } from './styles';\nimport { CandidateAction, CandidateState } from '../Candidate/types';\nimport { streetTypes } from './config';\n\nexport const validateEmail = (email: string) => {\n return String(email)\n .toLowerCase()\n .match(\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|.(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/\n );\n};\n\nconst EditCandidate = ({\n candidates,\n editedCandidate,\n CandidateState,\n CandidateDispatch,\n CandidatesState,\n CandidatesDispatch\n}: {\n candidates?: { res: { candidates: TCandidate[] }; resHead: any };\n editedCandidate: TCandidate;\n CandidateState?: CandidateState;\n CandidateDispatch?: Dispatch<CandidateAction>;\n CandidatesState?: CandidatesState;\n CandidatesDispatch?: Dispatch<CandidatesAction>;\n}) => {\n const [country, setCountry] = useState<ICountries | null>(null);\n const [state, setState] = useState<IStates | null>(null);\n const [candidate, setCandidate] = useState<TCandidate>(editedCandidate);\n const [errors, setErrors] = useState<Record<string, string>>({});\n const queryClient = useQueryClient();\n\n const validateLinkedInURL = (url: string) => {\n return String(url)\n .toLowerCase()\n .match(/^(http(s)?:\\/\\/)?([\\w]+\\.)?linkedin\\.com\\/(pub|in|profile)\\/([-a-zA-Z0-9]+)\\/*/gm);\n };\n\n const validateInputs = () => {\n setErrors({});\n const inputErrors: Record<string, string> = {};\n if (!candidate.firstname.trim()) inputErrors.firstname = 'First name can not be empty';\n if (!candidate.lastname.trim()) inputErrors.lastname = 'Last name can not be empty';\n if (!validateEmail(candidate.email)) inputErrors.email = 'Please enter a proper email address';\n if (candidate.linkedin_url && !validateLinkedInURL(candidate.linkedin_url))\n inputErrors.linkedin = 'Please enter a proper LinkedIn URL';\n if (!candidate.phone1.trim()) {\n inputErrors.phone = 'Phone can not be empty';\n } else if (!Number(candidate.phone1)) {\n inputErrors.phone = 'Please enter a proper phone number';\n }\n if (candidate.phone2?.trim() && !Number(candidate.phone2))\n inputErrors.mobile = 'Please enter a proper mobile number';\n if (!candidate?.address_details?.street1?.trim())\n inputErrors.address = 'Street address can not be empty';\n if (!candidate?.address_details?.suburb?.trim())\n inputErrors.suburb = 'City, town or suburb can not be empty';\n if (!candidate?.address_details?.postcode?.trim())\n inputErrors.postcode = 'Postcode can not be empty';\n if (!country) inputErrors.country = 'Country can not be empty';\n if (!state) inputErrors.state = 'State can not be empty';\n setErrors(inputErrors);\n return !Object.keys(inputErrors).length;\n };\n\n const { data: countriesStates } = useQuery({\n queryKey: ['countries states'],\n queryFn: async () => {\n const { res } = await Api.getCountriesStates();\n return res;\n },\n onSuccess: (res) => {\n setCountry(res.find((r: ICountries) => r.id === candidate?.address_details?.country?.id));\n setState(\n res\n .find((r: ICountries) => r.id === candidate?.address_details?.country?.id)\n ?.states?.find((s: IStates) => s.id === candidate?.address_details?.state?.id)\n );\n },\n onError: (error) => {\n const errorSnackbarPayload: {\n type: 'SET_SNACKBAR';\n payload: { message: string; state: 'error' };\n } = {\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting countries and states data, ${error}`,\n state: 'error'\n }\n };\n CandidatesDispatch && CandidatesDispatch(errorSnackbarPayload);\n CandidateDispatch && CandidateDispatch(errorSnackbarPayload);\n }\n });\n\n const candidateData = {\n firstname: candidate.firstname,\n lastname: candidate.lastname,\n employee_id: candidate.employee_id,\n email: candidate.email,\n linkedin_url: candidate.linkedin_url,\n phone1: candidate.phone1,\n phone2: candidate.phone2\n };\n\n const candidateAddress = {\n street1: candidate?.address_details?.street1,\n street2: candidate?.address_details?.street2,\n suburb: candidate?.address_details?.suburb,\n postcode: candidate?.address_details?.postcode,\n street_number: candidate?.address_details?.street_number || '',\n street_type: candidate?.address_details?.street_type\n };\n\n const { mutate: updateCandidate, isLoading: updatingCandidate } = useMutation({\n mutationFn: (arg: { countryId: number; stateId: number }) =>\n Api.updateCandidate(candidate.id, {\n ...candidateData,\n address_attributes: {\n ...candidateAddress,\n country_id: arg.countryId,\n state_id: arg.stateId\n }\n }),\n onError: (error: { error: string }) => {\n const errorSnackbarPayload: {\n type: 'SET_SNACKBAR';\n payload: { message: string; state: 'error' };\n } = {\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error updating candidate, ${error.error}`,\n state: 'error'\n }\n };\n CandidatesDispatch && CandidatesDispatch(errorSnackbarPayload);\n CandidateDispatch && CandidateDispatch(errorSnackbarPayload);\n },\n onSuccess: () => {\n if (!country || !state) return;\n const successSnackbarPayload: {\n type: 'SET_SNACKBAR';\n payload: { message: string; state: 'success' };\n } = {\n type: 'SET_SNACKBAR',\n payload: {\n message: `Candidate has been updated.`,\n state: 'success'\n }\n };\n CandidatesDispatch && CandidatesDispatch(successSnackbarPayload);\n CandidateDispatch && CandidateDispatch(successSnackbarPayload);\n if (candidates) {\n const newCandidates = [...candidates.res.candidates];\n const index = newCandidates.findIndex((e) => e.id === candidate.id);\n newCandidates[index] = {\n ...newCandidates[index],\n ...candidateData,\n address_details: {\n ...newCandidates[index].address_details,\n ...candidateAddress,\n country: {\n ...newCandidates[index].address_details.country,\n id: country.id,\n name: country.name\n },\n state: state\n }\n };\n queryClient.setQueryData(\n ['candidates', CandidatesState?.candidatesTableSettings, CandidatesState?.searchQuery],\n {\n ...candidates,\n res: { candidates: newCandidates }\n }\n );\n queryClient.invalidateQueries(['candidates']);\n CandidatesDispatch && CandidatesDispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'edit' });\n } else {\n const updatedCandidate = {\n ...editedCandidate,\n ...candidateData,\n address_details: {\n ...editedCandidate.address_details,\n ...candidateAddress,\n country: country,\n state: state\n }\n };\n queryClient.setQueryData(['candidate'], updatedCandidate);\n queryClient.invalidateQueries(['candidate']);\n CandidateDispatch && CandidateDispatch({ type: 'OPEN_EDIT_MODAL', payload: false });\n }\n }\n });\n\n return (\n <StyledModal\n isOpen={\n !!CandidatesState?.candidatesTableState.actions.isOpen.edit ||\n !!CandidateState?.openEditModal\n }\n label=\"Edit Candidate\"\n handleClose={() => {\n CandidatesDispatch && CandidatesDispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'edit' });\n CandidateDispatch && CandidateDispatch({ type: 'OPEN_EDIT_MODAL', payload: false });\n }}\n styleOverrides={{ maxHeight: '625px', maxWidth: '800px', padding: '40px' }}\n closeIconId=\"close-edit-candidate-button\"\n >\n <Stack sx={{ width: '100%', height: '100%', rowGap: 4 }}>\n <Stack sx={{ fontWeight: 'bold', color: '#084D6D', fontSize: '25px' }}>\n {editedCandidate.firstname} {editedCandidate.lastname}\n </Stack>\n <Stack sx={styles.editCandidateModalContent}>\n <Stack sx={{ rowGap: 2 }}>\n <Stack sx={styles.editCandidateModalDetailsHeader}>Candidate Details</Stack>\n <Stack sx={styles.editCandidateModalDetailsRows}>\n <FormTextField\n label=\"First name\"\n value={candidate.firstname}\n required\n fullWidth\n onChange={(v) => setCandidate({ ...candidate, firstname: v.target.value })}\n error={errors.firstname}\n />\n <FormTextField\n label=\"Last name\"\n value={candidate.lastname}\n required\n fullWidth\n onChange={(v) => setCandidate({ ...candidate, lastname: v.target.value })}\n error={errors.lastname}\n />\n </Stack>\n <Stack sx={styles.editCandidateModalDetailsRows}>\n <FormTextField\n label=\"Employee ID\"\n value={candidate.employee_id || ''}\n fullWidth\n onChange={(v) => setCandidate({ ...candidate, employee_id: v.target.value })}\n />\n <FormTextField\n label=\"LinkedIn URL\"\n value={candidate.linkedin_url || ''}\n fullWidth\n onChange={(v) => setCandidate({ ...candidate, linkedin_url: v.target.value })}\n error={errors.linkedin}\n />\n </Stack>\n </Stack>\n <Stack sx={{ rowGap: 2 }}>\n <Stack sx={styles.editCandidateModalDetailsHeader}>Contact Details</Stack>\n <Stack>\n <FormTextField\n label=\"Email\"\n value={candidate.email}\n required\n fullWidth\n onChange={(v) => setCandidate({ ...candidate, email: v.target.value })}\n error={errors.email}\n />\n </Stack>\n <Stack sx={styles.editCandidateModalDetailsRows}>\n <FormTextField\n label=\"Phone\"\n value={candidate.phone1}\n onChange={(v) => setCandidate({ ...candidate, phone1: v.target.value })}\n fullWidth\n required\n helperText=\"Digits only or add + for international numbers\"\n error={errors.phone}\n />\n <FormTextField\n label=\"Mobile\"\n value={candidate.phone2}\n onChange={(v) => setCandidate({ ...candidate, phone2: v.target.value })}\n fullWidth\n helperText=\"Digits only or add + for international numbers\"\n error={errors.mobile}\n />\n </Stack>\n <Stack sx={styles.editCandidateModalDetailsRows}>\n <FormTextField\n label=\"Street address\"\n value={candidate?.address_details?.street1 || ''}\n fullWidth\n onChange={(v) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, street1: v.target.value }\n })\n }\n required\n error={errors.address}\n />\n <FormTextField\n label=\"Street address cont'd\"\n value={candidate?.address_details?.street2 || ''}\n fullWidth\n onChange={(v) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, street2: v.target.value }\n })\n }\n />\n </Stack>\n <Stack sx={styles.editCandidateModalDetailsRows}>\n <FormTextField\n label=\"Street number\"\n value={candidate?.address_details?.street_number || ''}\n fullWidth\n onChange={(v) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, street_number: v.target.value }\n })\n }\n />\n <Autocomplete\n filterSelectedOptions\n disablePortal\n autoHighlight\n includeInputInList\n value={candidate?.address_details?.street_type}\n options={streetTypes}\n getOptionLabel={(option) => option}\n onChange={(_event, newValue) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, street_type: newValue }\n })\n }\n sx={{\n ...sharedClasses.formAutocomplete,\n ...styles.streetTypesAutocomplete\n }}\n ListboxProps={{ style: styles.editCandidateListboxStyle }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Street type\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n sx={styles.editCandidateAutocompleteTextfield}\n />\n )}\n />\n </Stack>\n <Stack sx={styles.editCandidateModalDetailsRows}>\n <FormTextField\n label=\"City, town or suburb\"\n value={candidate?.address_details?.suburb || ''}\n fullWidth\n onChange={(v) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, suburb: v.target.value }\n })\n }\n required\n error={errors.suburb}\n />\n <FormTextField\n label=\"Postcode or zipcode\"\n value={candidate?.address_details?.postcode || ''}\n fullWidth\n onChange={(v) =>\n setCandidate({\n ...candidate,\n address_details: { ...candidate.address_details, postcode: v.target.value }\n })\n }\n required\n error={errors.postcode}\n />\n </Stack>\n <Stack sx={styles.editCandidateModalDetailsRows}>\n <Autocomplete\n filterSelectedOptions\n disablePortal\n autoHighlight\n includeInputInList\n value={country}\n options={countriesStates || []}\n getOptionLabel={(option) => option.name}\n onChange={(_event, newValue) => {\n if (newValue) {\n const newErrors = { ...errors };\n delete newErrors.country;\n setErrors(newErrors);\n }\n setCountry(newValue);\n setState(null);\n }}\n sx={{\n ...sharedClasses.formAutocomplete,\n width: '100%',\n paddingTop: 3,\n '.MuiInputBase-root': { margin: '3px 0px' }\n }}\n ListboxProps={{ style: styles.editCandidateListboxStyle }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Country\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n sx={styles.editCandidateAutocompleteTextfield}\n required\n error={!country}\n helperText={errors.country}\n />\n )}\n />\n <Autocomplete\n filterSelectedOptions\n disablePortal\n autoHighlight\n includeInputInList\n value={state}\n options={country?.states || []}\n getOptionLabel={(option) => option.name}\n onChange={(_event, newValue) => {\n if (newValue) {\n const newErrors = { ...errors };\n delete newErrors.state;\n setErrors(newErrors);\n }\n setState(newValue);\n }}\n disabled={!country}\n sx={{\n ...sharedClasses.formAutocomplete,\n width: '100%',\n paddingTop: 3,\n '.MuiInputBase-root': { margin: '3px 0px' }\n }}\n ListboxProps={{ style: styles.editCandidateListboxStyle }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"State, region or province\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"Please select\"\n sx={styles.editCandidateAutocompleteTextfield}\n required\n error={!state}\n helperText={errors.state}\n />\n )}\n />\n </Stack>\n </Stack>\n </Stack>\n <ModalFooterButtons\n primaryButtonText=\"Save\"\n primaryButtonCallback={() => {\n if (validateInputs() && country && state)\n updateCandidate({ countryId: country.id, stateId: state.id });\n }}\n primaryButtonID=\"save-candidate-button\"\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={() => {\n CandidatesDispatch &&\n CandidatesDispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'edit' });\n CandidateDispatch && CandidateDispatch({ type: 'OPEN_EDIT_MODAL', payload: false });\n }}\n secondaryButtonID=\"cancel-edit-candidate-button\"\n isLoading={updatingCandidate}\n />\n </Stack>\n </StyledModal>\n );\n};\n\nexport default EditCandidate;\n","import React from 'react';\nimport { SxProps } from '@mui/material';\nimport { classes } from '../Components/GenericTable/styles';\nimport { ActionListItem } from '../Components/GenericTable/GenericTableActions';\nimport { Edit as EditIcon, Delete as DeleteIcon } from '@mui/icons-material';\n\nexport const candidatesTableColumn = [\n {\n id: 'id',\n label: 'ID',\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: 'lastname',\n label: 'Last Name',\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: 'firstname',\n label: 'First Name',\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: 'email',\n label: 'Email Address',\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: 'location',\n label: 'Location',\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: 'applications',\n label: 'Applications',\n sortable: false,\n canToggle: false,\n enabled: true\n }\n];\n\nexport const headerStyle = (\n name: (typeof candidatesTableColumn)[number]['id'] | 'checkbox' | 'actions',\n tableHovered: boolean\n): SxProps => {\n switch (name) {\n case 'id':\n return { ...classes.sticky, maxWidth: '100px', width: '100px' };\n case 'lastname':\n return {\n ...classes.sticky,\n ...classes.itemTitleTableCell,\n ...(tableHovered && classes.scrollShadowVisible),\n left: '100px',\n minWidth: '125px'\n };\n case 'firstname':\n return { minWidth: '125px' };\n case 'email':\n return { minWidth: '240px' };\n case 'location':\n return { minWidth: '150px' };\n case 'applications':\n return { minWidth: '200px' };\n case 'actions':\n return {\n ...classes.actionsColumnHeader,\n ...(tableHovered && classes.scrollShadowVisible)\n };\n default:\n return { minWidth: '90px' };\n }\n};\n\nexport const candidatesActionsListItem: ActionListItem[] = [\n {\n id: 'edit',\n tooltipLabel: 'Edit',\n icon: <EditIcon />,\n elementId: 'edit-candidate-button'\n },\n {\n id: 'delete',\n tooltipLabel: 'Delete',\n icon: <DeleteIcon sx={{ color: '#E37D7A !important' }} />,\n elementId: 'delete-candidate-button'\n }\n];\n\nexport const streetTypes = [\n 'Alley',\n 'Arcade',\n 'Avenue',\n 'Boulevard',\n 'Bypass',\n 'Circuit',\n 'Close',\n 'Corner',\n 'Court',\n 'Crescent',\n 'Cul-de-sac',\n 'Drive',\n 'Esplanade',\n 'Green',\n 'Grove',\n 'Highway',\n 'Junction',\n 'Lane',\n 'Link',\n 'Mews',\n 'Parade',\n 'Place',\n 'Ridge',\n 'Road',\n 'Square',\n 'Street',\n 'Terrace'\n];\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport Candidates from './Candidates';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\nexport default function CandidatesPage({ isAdminUser }: { isAdminUser: boolean }) {\n return (\n <QueryClientProvider client={queryClient}>\n <Candidates isAdminUser={isAdminUser} />\n </QueryClientProvider>\n );\n}\n","import React, { forwardRef } from 'react';\nimport { Box, SxProps } from '@mui/material';\nimport { sharedClasses } from '../CustomUIElements/sharedClasses';\n\nconst BetaButton = forwardRef<HTMLElement, { sx?: SxProps }>(({ sx, ...props }, ref) => {\n return (\n <Box sx={{ ...sharedClasses.applicationBetaButton, ...sx }} ref={ref} {...props}>\n BETA\n </Box>\n );\n});\nBetaButton.displayName = 'BetaButton';\nexport default BetaButton;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { AddCircle as AddCircleIcon } from '@mui/icons-material';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport { sharedClasses } from '../CustomUIElements/sharedClasses';\n\nconst CreateButton = ({\n id,\n ariaLabel,\n onClick,\n isOpen,\n disableDropDown = false\n}: {\n id: string;\n ariaLabel: string;\n onClick: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n isOpen?: boolean;\n disableDropDown?: boolean;\n}) => {\n return (\n <Box\n id={id}\n aria-label={ariaLabel}\n sx={{\n ...sharedClasses.createButtonAction,\n '& div': {\n ...sharedClasses.createButtonDiv\n },\n ...(disableDropDown && {\n '& div': {\n ...sharedClasses.createButtonDiv,\n paddingRight: '16px'\n }\n })\n }}\n data-testid={id}\n onClick={onClick}\n >\n <AddCircleIcon sx={sharedClasses.addIcon} />\n <Box>Create</Box>\n {!disableDropDown && (\n <ArrowDropDownIcon\n sx={{\n ...sharedClasses.dropdownIcon,\n transform: isOpen ? 'rotate(180deg)' : null\n }}\n />\n )}\n </Box>\n );\n};\n\nexport default CreateButton;\n","import { Button, ButtonProps, CircularProgress } from '@mui/material';\nimport React, { FC, Fragment, PropsWithChildren, useEffect, useState } from 'react';\n\ninterface Props extends PropsWithChildren<ButtonProps> {\n loadingCaption?: string;\n task: () => Promise<unknown>;\n}\n\ninterface ViewProps extends Props {\n isLoading: boolean;\n}\n\nexport const LoadingButtonView: FC<ViewProps> = (props) => {\n const { children, disabled, isLoading, loadingCaption, sx, task, variant, ...rest } = props;\n\n return (\n <Button\n {...rest}\n disabled={isLoading || disabled}\n onClick={\n !isLoading\n ? (e) => {\n e.preventDefault();\n return task();\n }\n : undefined\n }\n sx={{ display: 'flex', alignItems: 'center', ...sx }}\n variant={variant ?? 'contained'}\n >\n {isLoading ? (\n <Fragment>\n <CircularProgress color=\"inherit\" role=\"status\" size={20} />\n <span>{loadingCaption}</span>\n </Fragment>\n ) : (\n children\n )}\n </Button>\n );\n};\n\nexport const LoadingButton: FC<Props> = (props) => {\n const { children, task, ...rest } = props;\n const [isLoading, setLoading] = useState(false);\n\n const wrappedTask = (): Promise<unknown> => {\n setLoading(true);\n return task()\n .catch()\n .finally(() => setLoading(false));\n };\n\n useEffect(() => {\n return () => {\n setLoading(false);\n };\n }, []);\n\n return (\n <LoadingButtonView {...rest} isLoading={isLoading} task={wrappedTask}>\n {children}\n </LoadingButtonView>\n );\n};\n\nexport default LoadingButton;\n","import React from 'react';\nimport { Button } from '@mui/material';\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft';\n\ninterface StepperLeftButtonProps {\n activeStep: number;\n onClick: () => void;\n classes: any;\n}\n\nconst StepperLeftButton: React.FC<StepperLeftButtonProps> = ({ activeStep, onClick, classes }) => {\n return activeStep !== 0 ? (\n <Button disableElevation className={classes.buttonSecondaryLight} onClick={onClick}>\n <ChevronLeftIcon />\n </Button>\n ) : null;\n};\n\nexport default StepperLeftButton;\n","import React from 'react';\nimport { Button, CircularProgress } from '@mui/material';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\n\ninterface StepperRightButtonProps {\n activeStep: number;\n steps: string[];\n isSaving: boolean;\n onClick: () => void;\n classes: any;\n disabled?: boolean;\n}\n\nconst StepperRightButton: React.FC<StepperRightButtonProps> = ({\n activeStep,\n steps,\n isSaving,\n onClick,\n classes,\n disabled\n}) => {\n return (\n <Button\n disabled={disabled || false}\n disableElevation\n className={classes.buttonSecondary}\n style={{ minWidth: 130 }}\n onClick={onClick}\n endIcon={isSaving ? null : <ChevronRightIcon />}\n >\n {isSaving ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : activeStep + 1 === steps.length ? (\n 'Submit'\n ) : (\n 'Next'\n )}\n </Button>\n );\n};\n\nexport default StepperRightButton;\n","import React from 'react';\nimport { Chart as ChartJS, ArcElement, Tooltip, Legend, defaults } from 'chart.js';\nimport { Doughnut } from 'react-chartjs-2';\nimport { externalTooltipHandler } from './DonutTooltip';\nimport { IChartData } from './types';\n\nChartJS.register(ArcElement, Tooltip, Legend);\n\nexport default function DonutChart({ data }: { data: IChartData }) {\n defaults.font.family = 'Source Sans Pro';\n\n const options = {\n responsive: true,\n maintainAspectRatio: false,\n cutout: 56,\n borderWidth: 1,\n plugins: {\n legend: {\n display: true,\n position: 'right',\n labels: {\n fontSize: 12,\n color: '#084D6D'\n }\n },\n tooltip: {\n enabled: false,\n external: externalTooltipHandler\n }\n },\n layout: {\n padding: {\n left: 10,\n right: 10,\n top: 10,\n bottom: 10\n }\n }\n };\n const dataset = {\n labels: data?.labels,\n datasets: [\n {\n data: data?.data,\n backgroundColor: [\n '#71E599',\n '#4D91ED',\n '#F5DD5B',\n '#F46F6F',\n '#D958F0',\n '#5AC7EF',\n '#4242EF',\n '#8045F0',\n '#FC8D47',\n '#9DED2F',\n '#91EBDA',\n '#F569E0',\n '#E85096',\n '#5FA362'\n ],\n hoverBackgroundColor: [\n '#45dd79',\n '#2176e8',\n '#f2d32b',\n '#f03d3d',\n '#ce2aeb',\n '#2cb7ea',\n '#1717eb',\n '#6219ec',\n '#fb6f17',\n '#88dd13',\n '#60e2c9',\n '#f137d5',\n '#e2267d',\n '#4f8b52'\n ],\n hoverOffset: 8\n }\n ]\n };\n\n return <Doughnut data={dataset} options={options} />;\n}\n","import React from 'react';\nimport {\n Chart as ChartJS,\n CategoryScale,\n LinearScale,\n PointElement,\n LineElement,\n Title,\n Tooltip,\n Legend,\n defaults\n} from 'chart.js';\nimport { Line } from 'react-chartjs-2';\nimport { externalTooltipHandler } from './LineTooltip';\nimport { IChartData } from './types';\nimport moment from 'moment';\n\nChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend);\n\nexport default function LineChart({ data }: { data: IChartData }) {\n defaults.font.family = 'Source Sans Pro';\n\n const chartAreaBorder = {\n id: 'chartAreaBorder',\n beforeDraw(chart, args, options) {\n const {\n ctx,\n chartArea: { left, top, width, height }\n } = chart;\n ctx.save();\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.setLineDash(options.borderDash || []);\n ctx.lineDashOffset = options.borderDashOffset;\n ctx.strokeRect(left, top, width, height);\n ctx.restore();\n }\n };\n\n const options = {\n responsive: true,\n maintainAspectRatio: false,\n tension: 0.4,\n plugins: {\n legend: {\n display: false\n },\n tooltip: {\n enabled: false,\n position: 'nearest',\n external: externalTooltipHandler\n },\n chartAreaBorder: {\n borderColor: '#F0F0F0',\n borderWidth: 1\n }\n },\n scales: {\n x: {\n ticks: {\n font: {\n size: 14\n },\n color: '#333333'\n },\n grid: {\n display: false,\n drawBorder: false\n }\n },\n y: {\n ticks: {\n font: {\n size: 12\n },\n color: '#A3A3A3'\n },\n grid: {\n display: true,\n color: '#F0F0F0',\n drawTicks: false,\n drawBorder: false\n }\n }\n }\n };\n const dataset = {\n labels: data?.labels.map((date) => moment(date).format('MMM DD')),\n datasets: [\n {\n data: data?.data,\n pointRadius: 4.5,\n pointHoverRadius: 7.5,\n hoverBorderWidth: 18,\n borderColor: '#084D6D80',\n hoverBorderColor: '#084D6D24',\n pointBackgroundColor: '#084D6D',\n pointBorderColor: '#084D6D70'\n }\n ]\n };\n\n return <Line options={options} plugins={[chartAreaBorder, Tooltip]} data={dataset} />;\n}\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { FormControl, FormLabel, TextField, Grid, Typography, IconButton } from '@material-ui/core';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport LocationOnIcon from '@material-ui/icons/LocationOn';\nimport CloseIcon from '@material-ui/icons/Close';\nimport ErrorIcon from '@material-ui/icons/Error';\nimport throttle from 'lodash/throttle';\nimport parse from 'autosuggest-highlight/parse';\n\ninterface AddressInputProps {\n requiredRef: React.Ref<any>;\n classes: any;\n value: any;\n setValue: (value: any) => void;\n activeError: boolean;\n answers: any;\n setAnswers: (answers: any) => void;\n viewJobsAd?: boolean;\n}\n\nfunction loadScript(src, position, id) {\n if (!position) {\n return;\n }\n\n const script = document.createElement('script');\n script.setAttribute('async', '');\n script.setAttribute('id', id);\n script.src = src;\n position.appendChild(script);\n}\n\nconst autocompleteService = { current: null };\nconst placesService = { current: null };\n\nconst COUNTRY_ABBR: Record<string, string> = {\n Australia: 'au',\n Canada: 'ca',\n 'New Zealand': 'nz'\n // Add more countries as necessary\n};\n\nconst AddressInput: React.FC<AddressInputProps> = ({\n requiredRef,\n classes,\n value,\n setValue,\n activeError,\n answers,\n setAnswers,\n viewJobsAd\n}) => {\n const [inputValue, setInputValue] = React.useState(\n [answers.address, answers.city, answers.state].filter((cur) => cur).join(', ')\n );\n const [options, setOptions] = useState([]);\n const loaded = React.useRef(false);\n\n if (typeof window !== 'undefined' && !loaded.current) {\n if (!document.querySelector('#google-maps')) {\n loadScript(\n 'https://maps.googleapis.com/maps/api/js?key=AIzaSyAF83260uv1i9sjdtsQkK-skJ8fgGCe9_4&libraries=places',\n document.querySelector('head'),\n 'google-maps'\n );\n }\n\n loaded.current = true;\n }\n\n const fetch = useMemo(\n () =>\n throttle(\n (request, callback) => {\n autocompleteService.current.getPlacePredictions(request, callback);\n },\n 1000,\n { trailing: true, leading: false }\n ),\n []\n );\n\n useEffect(() => {\n let active = true;\n\n if (!autocompleteService.current && window.google) {\n autocompleteService.current = new window.google.maps.places.AutocompleteService();\n }\n\n if (viewJobsAd && window.google && !placesService.current) {\n placesService.current = new window.google.maps.places.PlacesService(\n document.createElement('div')\n );\n }\n\n if (!autocompleteService.current) return undefined;\n\n if (inputValue === '') {\n setOptions(value ? [value] : []);\n return undefined;\n }\n\n fetch(\n {\n input: inputValue,\n componentRestrictions: {\n country: COUNTRY_ABBR[answers.country] || 'au'\n },\n token: new window.google.maps.places.AutocompleteSessionToken(),\n types: ['address']\n },\n (results) => {\n if (active) {\n let newOptions = results ? [...(value ? [value] : []), ...results] : [value];\n setOptions(newOptions);\n }\n }\n );\n\n if (value && value.terms) {\n const [country, state, city, ...address] = value.terms.reverse();\n if (viewJobsAd) {\n if (inputValue !== answers.address) {\n setAnswers((prevAnswers) => ({\n ...prevAnswers,\n address: inputValue\n }));\n }\n } else {\n setAnswers((prevAnswers) => ({\n ...prevAnswers,\n city: city.value,\n state: state.value,\n address: address\n .reverse()\n .map((cur) => cur.value)\n .join(' ')\n }));\n }\n }\n\n return () => {\n active = false;\n };\n }, [value, inputValue, fetch, answers.country]);\n\n function removeCountryFromAddress(formattedAddress: string) {\n const addressComponents = formattedAddress.split(',');\n\n if (addressComponents.length < 2) {\n return formattedAddress;\n }\n\n const addressWithoutCountry = addressComponents\n .slice(0, -1)\n .map((component) => component.trim());\n\n return addressWithoutCountry.join(', ');\n }\n\n const handlePlaceSelect = (newValue) => {\n if (newValue && placesService.current) {\n const request = {\n placeId: newValue.place_id,\n fields: ['formatted_address', 'place_id']\n };\n\n placesService.current.getDetails(request, (place, status) => {\n if (status === window.google.maps.places.PlacesServiceStatus.OK) {\n const formattedAddress = removeCountryFromAddress(place.formatted_address);\n setValue(newValue);\n setInputValue(formattedAddress);\n } else {\n console.error('Error fetching place details:', status);\n }\n });\n }\n };\n\n useEffect(() => {\n if (!inputValue && inputValue !== answers.address) {\n setAnswers({\n ...answers,\n city: '',\n state: '',\n address: ''\n });\n }\n }, [inputValue, setAnswers, answers]);\n\n return (\n <FormControl\n ref={requiredRef}\n fullWidth={true}\n className={`${classes.formControl} ${classes.medium}`}\n >\n <FormLabel required={true} className={classes.label}>\n {viewJobsAd ? 'Job address' : 'Enter a street address'}\n </FormLabel>\n {!viewJobsAd && (\n <span className={classes.subLabel}>\n We won’t share your street address. We use your location to find candidates in your area.\n </span>\n )}\n <Autocomplete\n forcePopupIcon={false}\n fullWidth={true}\n getOptionLabel={(option) => (typeof option === 'string' ? option : option.description)}\n classes={{ root: classes.autoComplete, popper: classes.autoCompletePopper }}\n filterOptions={(x) => x}\n options={options}\n autoComplete\n includeInputInList\n filterSelectedOptions\n value={value}\n onChange={(event, newValue) => {\n setOptions(newValue ? [newValue, ...options] : options);\n viewJobsAd ? handlePlaceSelect(newValue) : setValue(newValue);\n }}\n onInputChange={(event, newInputValue) => {\n setInputValue(newInputValue);\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n error={activeError}\n value={value}\n placeholder=\"Select an address\"\n variant=\"outlined\"\n fullWidth\n InputProps={{\n ...params.InputProps,\n classes: {\n root: classes.autoCompleteRoot\n },\n endAdornment: (\n <React.Fragment>\n {activeError && (\n <div className={classes.error}>\n <ErrorIcon color=\"error\" />\n <span>This field is required</span>\n </div>\n )}\n {inputValue && (\n <IconButton\n className={classes.autoCompleteClose}\n onClick={() => {\n setAnswers({ ...answers, address: '', city: '', state: '' });\n setValue(null);\n setInputValue('');\n }}\n >\n <CloseIcon />\n </IconButton>\n )}\n </React.Fragment>\n )\n }}\n />\n )}\n renderOption={(option) => {\n if (!option.structured_formatting) return null;\n const matches = option.structured_formatting.main_text_matched_substrings;\n const parts = parse(\n option.structured_formatting.main_text,\n matches.map((match) => [match.offset, match.offset + match.length])\n );\n\n return (\n <Grid container alignItems=\"center\">\n <Grid item>\n <LocationOnIcon className={classes.icon} />\n </Grid>\n <Grid item xs>\n {parts.map((part, index) => (\n <span key={index} style={{ fontWeight: part.highlight ? 700 : 400 }}>\n {part.text}\n </span>\n ))}\n <Typography variant=\"body2\" color=\"textSecondary\">\n {option.structured_formatting.secondary_text}\n </Typography>\n </Grid>\n </Grid>\n );\n }}\n />\n </FormControl>\n );\n};\n\nexport default AddressInput;\n","import React, { useState } from 'react';\nimport { Box, SxProps } from '@mui/material';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport AttachmentSelector from '../Utilities/AttachmentSelector';\nimport DocTypeIcon from '../Utilities/DocTypeIcon';\nimport { humanFileSize } from '../Utilities/humanFileSize';\nimport { sharedClasses } from './sharedClasses';\n\nconst AttachmentSelectorAndPreview = ({\n attachments,\n setAttachments,\n templateAttachments,\n selectedPoolIds,\n styleOverrides\n}: {\n attachments: any[];\n setAttachments: any;\n templateAttachments?: any[];\n selectedPoolIds?: number[];\n styleOverrides?: SxProps;\n}) => {\n const [attachmentHovered, setAttachmentHovered] = useState(-1);\n const removeAttachment = (index: number) => {\n if (index === -1) return;\n const newAttachments = [...attachments];\n newAttachments.splice(index, 1);\n setAttachments(newAttachments);\n };\n return (\n <Box sx={{ ...sharedClasses.modalSection, paddingRight: '3px', ...styleOverrides }}>\n {!selectedPoolIds && (\n <AttachmentSelector\n performUpload={false}\n setFileList={setAttachments}\n maxSize={50000000}\n heightOverride=\"240px\"\n />\n )}\n {(attachments?.length > 0 || templateAttachments?.length > 0) && (\n <>\n <h3>Attachments</h3>\n <Box sx={sharedClasses.emailAttachmentsList}>\n {templateAttachments &&\n templateAttachments.map((templateAttachment, index) => (\n <Box\n key={templateAttachment.id}\n sx={{\n ...sharedClasses.emailAttachmentContainer\n }}\n >\n <Box sx={sharedClasses.emailAttachmentIcon}>\n {DocTypeIcon(templateAttachment.attached_file_name.split('.').pop())}\n </Box>\n <Box>\n <Box sx={sharedClasses.emailAttachmentName}>\n {templateAttachment.attached_file_name}\n </Box>\n <Box sx={sharedClasses.fileSize}>\n {humanFileSize(templateAttachment.attached_file_size)}\n </Box>\n </Box>\n </Box>\n ))}\n {attachments.map((attachment, index) => (\n <Box\n key={attachment.path}\n sx={{\n ...sharedClasses.emailAttachmentContainer,\n ...(attachmentHovered === index && { cursor: 'pointer' })\n }}\n onMouseEnter={() => setAttachmentHovered(index)}\n onMouseLeave={() => setAttachmentHovered(-1)}\n onClick={() => removeAttachment(index)}\n >\n <Box sx={sharedClasses.emailAttachmentIcon}>\n {attachmentHovered === index ? (\n <ClearIcon sx={{ '& svg': { color: '#D6827D !important' } }} />\n ) : (\n DocTypeIcon(attachment.name.split('.').pop())\n )}\n </Box>\n <Box>\n <Box sx={sharedClasses.emailAttachmentName}>\n {attachmentHovered === index ? 'Click to remove attachment' : attachment.name}\n </Box>\n <Box sx={sharedClasses.fileSize}>{humanFileSize(attachment.size)}</Box>\n </Box>\n </Box>\n ))}\n </Box>\n </>\n )}\n </Box>\n );\n};\n\nexport default AttachmentSelectorAndPreview;\n","import React, { useState } from 'react';\nimport { Box } from '@mui/material';\nimport DocTypeIcon from '../Utilities/DocTypeIcon';\nimport { humanFileSize } from '../Utilities/humanFileSize';\nimport { sharedClasses } from './sharedClasses';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nconst AttachmentPreview = ({ templateAttachments }: { templateAttachments: any[] }) => {\n return (\n <Box sx={{ marginTop: '25px' }}>\n {templateAttachments?.length > 0 && (\n <>\n <Box sx={{ color: theme.palette.primary.main, fontSize: '16px', fontWeight: 'bold' }}>\n Attachments\n </Box>\n <Box sx={{ ...sharedClasses.emailAttachmentsList, marginTop: '2rem' }}>\n {templateAttachments &&\n templateAttachments.map((templateAttachment, index) => (\n <Box\n key={templateAttachment.id}\n sx={{\n ...sharedClasses.emailAttachmentContainer\n }}\n >\n <Box sx={sharedClasses.emailAttachmentIcon}>\n {DocTypeIcon(templateAttachment.attached_file_name.split('.').pop())}\n </Box>\n <Box>\n <Box sx={{ ...sharedClasses.emailAttachmentName, maxWidth: 'fit-content' }}>\n {templateAttachment.attached_file_name}\n </Box>\n <Box sx={sharedClasses.fileSize}>\n {humanFileSize(templateAttachment.attached_file_size)}\n </Box>\n </Box>\n </Box>\n ))}\n </Box>\n </>\n )}\n </Box>\n );\n};\n\nexport default AttachmentPreview;\n","import React from 'react';\nimport { TextField, InputLabel, Autocomplete } from '@mui/material';\nimport { sharedClasses } from './sharedClasses';\n\ninterface IValueType {\n key: string | number;\n label: string;\n}\n\ninterface IArrayValueType {\n key: string;\n name: string;\n}\n\ninterface ISelectFieldProps {\n label?: string;\n options: any;\n value: IValueType | IArrayValueType[];\n optionLabel: any;\n onChange: (value: string) => void;\n id?: string;\n required?: boolean;\n isLoading?: boolean;\n multiple?: boolean;\n loadingText: [string, string];\n dateField?: boolean;\n}\n\nexport default function AutocompleteInput({\n label,\n options,\n optionLabel,\n value,\n onChange,\n id,\n required,\n multiple,\n isLoading,\n loadingText,\n dateField\n}: ISelectFieldProps) {\n const defaultValue: IArrayValueType[] = [];\n if (Array.isArray(value)) {\n value.map((v) => {\n const matchedValue = options.find((o) => o.key === v.key);\n if (matchedValue) defaultValue.push(matchedValue);\n });\n }\n return (\n <Autocomplete\n id={id}\n options={options}\n getOptionLabel={(option) => optionLabel(option)}\n disableClearable={dateField ? dateField : false}\n value={multiple ? defaultValue : value}\n multiple={multiple}\n sx={sharedClasses.autocomplete}\n ListboxProps={{ style: { ...sharedClasses.autoCompleteListStyles } }}\n loading={options?.length < 1}\n loadingText={isLoading ? loadingText[0] : loadingText[1]}\n renderInput={(params) => (\n <>\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n {label}\n {required && <span>*</span>}\n </InputLabel>\n {dateField ? (\n <TextField\n {...params}\n onKeyPress={(e) => e.preventDefault()}\n onKeyDown={(event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Backspace' || event.key === 'Delete') event.preventDefault();\n }}\n />\n ) : (\n <TextField {...params} InputLabelProps={{ shrink: true }} />\n )}\n </>\n )}\n onChange={(event, data) => onChange(data)}\n />\n );\n}\n","import React, { useState } from 'react';\nimport AvailabilityPreview from '../../ApprovalForms/Questions/Modals/AvailabilityPreview';\nimport Box from '@mui/material/Box';\nimport Stack from '@mui/material/Stack';\nimport ExpandLessIcon from '@mui/icons-material/ExpandLess';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport { IApplicantQuestion } from '../../EditJob/types';\n\ninterface AvailabilityFieldQuestionProps {\n question: IApplicantQuestion;\n}\nconst AvailabilityFieldQuestion: React.FC<AvailabilityFieldQuestionProps> = ({ question }: AvailabilityFieldQuestionProps\n) => {\n const [showPreview, setShowPreview] = useState(false);\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n marginTop: 1,\n alignItems: 'center',\n alignSelf: 'center'\n }}\n >\n {showPreview && (\n <AvailabilityPreview availabilityConfig={question.availability_config} />\n )}\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n onClick={() => setShowPreview(!showPreview)}\n sx={{\n fontFamily: 'Source Sans Pro',\n fontSize: '12px',\n '&:hover': {\n cursor: 'pointer'\n }\n }}\n >\n {showPreview ? 'Hide preview' : 'Show preview'}\n {showPreview ? <ExpandLessIcon /> : <ExpandMoreIcon />}\n </Stack>\n </Box>\n );\n}\n\nexport default AvailabilityFieldQuestion;\n","import * as React from 'react';\nimport CircularProgress, { CircularProgressProps } from '@mui/material/CircularProgress';\nimport Typography from '@mui/material/Typography';\nimport Box from '@mui/material/Box';\n\nexport default function CircularProgressWithLabel(\n props: CircularProgressProps & { value: number; size?: number }\n) {\n return (\n <Box sx={{ position: 'relative', display: 'inline-flex' }}>\n <CircularProgress\n size={props.size ? props.size : 120}\n thickness={6}\n variant=\"determinate\"\n sx={{\n color: '#5BC4BF',\n circle: {\n strokeLinecap: 'round'\n }\n }}\n {...props}\n />\n <Box\n sx={{\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n position: 'absolute',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: '16px',\n fontFamily: 'Source Sans Pro',\n fontWeight: 'bold'\n }}\n >\n {Math.round(props.value)}\n </Box>\n </Box>\n );\n}\n\nexport function CircularStatic() {\n const [progress, setProgress] = React.useState(10);\n\n React.useEffect(() => {\n const timer = setInterval(() => {\n setProgress((prevProgress) => (prevProgress >= 100 ? 0 : prevProgress + 10));\n }, 800);\n return () => {\n clearInterval(timer);\n };\n }, []);\n\n return <CircularProgressWithLabel value={progress} />;\n}\n","import { Stack, Typography } from '@mui/material';\nimport React, { ReactNode } from 'react';\nimport { sharedClasses } from './sharedClasses';\n\ninterface IEmptyStateProps {\n svgIcon: ReactNode;\n label: string;\n}\n\nexport function EmptyState({ svgIcon, label }: IEmptyStateProps) {\n return (\n <Stack sx={{ padding: 7.5, alignItems: 'center', rowGap: 2 }}>\n {svgIcon}\n <Typography sx={sharedClasses.emptyStateText}>{label}</Typography>\n </Stack>\n );\n}\n","import React, { useState } from 'react';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport Box from '@mui/material/Box';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormGroup from '@mui/material/FormGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport FormLabel from '@mui/material/FormLabel';\nimport { sharedClasses } from './sharedClasses';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport InfoIcon from '@mui/icons-material/Info';\n\nconst populateValue = (options: { name: string; id: number }[]) => {\n const value = {} as { [key: string]: boolean };\n options.forEach((option) => {\n value[option.id] = false;\n });\n return value;\n};\n\nexport default function FormCheckboxGroup({\n options,\n defaultValues,\n onChange,\n groupLabel,\n directionRow,\n innerRef,\n error,\n color,\n required,\n disabled\n}: {\n options: { name: string; id: number; tip: string }[];\n onChange: (value: Record<string, boolean>) => void;\n directionRow?: boolean;\n groupLabel?: string;\n defaultValues?: Record<string | number, boolean>;\n innerRef?: React.Ref<HTMLDivElement>;\n error?: string;\n color?: string;\n required?: boolean;\n disabled?: boolean;\n}) {\n const [value, setValue] = useState(defaultValues ? defaultValues : populateValue(options));\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>, id: number) => {\n setValue({\n ...value,\n [id]: event.target.checked\n });\n onChange({ ...value, [id]: event.target.checked });\n };\n\n const checkboxStyle = {\n color: '#DDDDDD',\n '&.Mui-checked': {\n color: theme.palette.action.main\n },\n '& .MuiSvgIcon-root': {\n fontSize: '22px'\n },\n paddingLeft: 'unset',\n paddingRight: 1\n };\n\n const labelStyle = {\n '& .MuiTypography-root': {\n color: color ? color : '#333333',\n fontSize: '16px',\n marginLeft: '2px',\n fontFamily: 'Source Sans Pro, sans-serif'\n },\n paddingRight: 2\n };\n\n return (\n <FormControl>\n {groupLabel && (\n <FormLabel\n id={groupLabel?.toLowerCase().split(' ').join('-')}\n sx={{ ...sharedClasses.inputLabel, fontSize: '16px' }}\n >\n {groupLabel}\n {required && <span>*</span>}\n </FormLabel>\n )}\n <FormGroup\n ref={innerRef}\n aria-labelledby={groupLabel?.toLowerCase().split(' ').join('-')}\n sx={{ padding: '8px 0px 10px 12px', flexDirection: directionRow ? 'row' : 'column' }}\n >\n {options.map((option, index) => (\n <Box key={index} sx={{ display: 'flex', alignItems: 'center' }}>\n <FormControlLabel\n key={index}\n control={\n <Checkbox\n disableRipple\n sx={checkboxStyle}\n onChange={(event) => handleChange(event, option.id)}\n value={value[option.id]}\n defaultChecked={value[option.id]}\n name={option.name}\n disabled={disabled}\n />\n }\n label={option.name}\n sx={labelStyle}\n />\n {option.tip && (\n <Tooltip title={option.tip}>\n <InfoIcon sx={sharedClasses.infoIcon} />\n </Tooltip>\n )}\n </Box>\n ))}\n {error && <Box sx={sharedClasses.errorBoxCheckbox}>{error}</Box>}\n </FormGroup>\n </FormControl>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport Box from '@mui/material/Box';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport FormLabel from '@mui/material/FormLabel';\nimport { sharedClasses } from './sharedClasses';\n\nexport default function FormRadioButtonGroup({\n options,\n onChange,\n defaultValue,\n groupLabel,\n directionRow,\n innerRef,\n error,\n required,\n color,\n draggable\n}: {\n options: { label: string; value: string | number }[];\n onChange: (value: string | number) => void;\n directionRow?: boolean;\n defaultValue?: string | number;\n groupLabel?: string;\n innerRef?: React.Ref<HTMLDivElement>;\n error?: string;\n color?: string;\n required?: boolean;\n draggable?: boolean;\n}) {\n const [value, setValue] = useState(defaultValue || '');\n\n const onInternalChange = (value: string) => {\n setValue(value);\n onChange(value);\n };\n\n const radioStyle = {\n color: '#DDDDDD',\n '&.Mui-checked': {\n color: theme.palette.action.main\n },\n '& .MuiSvgIcon-root': {\n fontSize: '22px'\n }\n };\n\n const labelStyle = {\n '& .MuiTypography-root': {\n color: color ? color : '#333333 !important',\n fontSize: '14px',\n marginLeft: '2px',\n fontFamily: 'Source Sans Pro, sans-serif'\n }\n };\n\n useEffect(() => {\n setValue(defaultValue ?? '');\n }, [defaultValue]);\n\n return (\n <FormControl>\n {groupLabel && (\n <FormLabel\n id={groupLabel?.toLowerCase().split(' ').join('-')}\n data-testid={groupLabel?.toLowerCase().split(' ').join('-')}\n sx={{ ...sharedClasses.inputLabel, fontSize: '14px' }}\n >\n {groupLabel}\n {required && <span>*</span>}\n </FormLabel>\n )}\n <RadioGroup\n ref={innerRef}\n aria-labelledby={groupLabel?.toLowerCase().split(' ').join('-')}\n name=\"radio-buttons-group\"\n value={value}\n onChange={(e) => onInternalChange(e.target.value)}\n sx={{ padding: '8px 0px 10px 12px', flexDirection: directionRow ? 'row' : 'column' }}\n >\n {options.map((option, index) => {\n return (\n <FormControlLabel\n id={option.label.toLowerCase().split(' ').join('-')}\n data-testid={option.label.toLowerCase().split(' ').join('-')}\n key={index}\n value={draggable ? 'disabled' : option.value}\n control={<Radio sx={radioStyle} />}\n label={option.label}\n sx={labelStyle}\n disabled={draggable ? true : false}\n />\n );\n })}\n {error && <Box sx={sharedClasses.errorBoxCheckbox}>{error}</Box>}\n </RadioGroup>\n </FormControl>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport Box from '@mui/material/Box';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormControl from '@mui/material/FormControl';\nimport FormLabel from '@mui/material/FormLabel';\n// import TextField from '@mui/material/TextField';\nimport { sharedClasses } from './sharedClasses';\nimport { IApplicantQuestion } from '../Utilities/QuestionFieldGenerator';\nimport { MultilineFormTextField } from './FormTextField';\n\nexport default function FormRadioButtonWithTextInputGroup({\n options,\n onChange,\n defaultValue,\n groupLabel,\n directionRow,\n innerRef,\n error,\n required,\n color,\n draggable,\n question,\n inputText,\n setApprovalFormQuestions\n}: {\n options: { label: string; value: string | number }[];\n onChange: (value: string | number) => void;\n directionRow?: boolean;\n defaultValue?: string | number;\n groupLabel?: string;\n innerRef?: React.Ref<HTMLDivElement>;\n error?: string;\n color?: string;\n required?: boolean;\n draggable?: boolean;\n question: IApplicantQuestion;\n inputText: string;\n setApprovalFormQuestions?: (value: Record<string, { data: string; inputText: string }>) => void;\n}) {\n const [value, setValue] = useState(defaultValue || '');\n // const [inputValue, setInputValue] = useState('');\n\n const onInternalChange = (value: string) => {\n setValue(value);\n onChange(value);\n };\n\n const radioStyle = {\n color: '#DDDDDD',\n '&.Mui-checked': {\n color: theme.palette.action.main\n },\n '& .MuiSvgIcon-root': {\n fontSize: '22px'\n }\n };\n\n const labelStyle = {\n '& .MuiTypography-root': {\n color: color ? color : '#333333 !important',\n fontSize: '16px',\n marginLeft: '2px',\n fontFamily: 'Source Sans Pro, sans-serif'\n }\n };\n\n useEffect(() => {\n setValue(defaultValue ?? '');\n }, [defaultValue]);\n\n return (\n <FormControl>\n <RadioGroup\n ref={innerRef}\n aria-labelledby={groupLabel?.toLowerCase().split(' ').join('-')}\n name=\"radio-buttons-group\"\n value={value}\n onChange={(e) => onInternalChange(e.target.value)}\n sx={{ padding: '8px 0px 10px 12px', flexDirection: directionRow ? 'row' : 'column' }}\n >\n {options.map((option, index) => {\n return (\n <>\n <FormControlLabel\n id={option.label.toLowerCase().split(' ').join('-')}\n key={index}\n value={draggable ? 'disabled' : option.value}\n control={<Radio sx={radioStyle} />}\n label={option.label}\n sx={labelStyle}\n disabled={draggable ? true : false}\n />\n {options.findIndex((option) => Number(value) === option.value) === index &&\n index != 0 && (\n <MultilineFormTextField\n rows={4}\n key={index}\n value={inputText}\n onChange={(e) => {\n setApprovalFormQuestions((prev) => ({\n ...prev,\n [question.id]: {\n ...prev[question.id],\n inputText: e.target.value\n }\n }));\n }}\n styles={{ marginLeft: '30px', width: 'calc(100% - 50px)' }}\n required={question.required}\n placeholder={\n 'Please type your selected response into this box and insert names and details where required'\n }\n />\n )}\n </>\n );\n })}\n {error && <Box sx={sharedClasses.errorBoxCheckbox}>{error}</Box>}\n </RadioGroup>\n </FormControl>\n );\n}\n","import React from 'react';\nimport { IFieldChoice } from '../Utilities/QuestionFieldGenerator';\nimport Box from '@mui/material/Box';\nimport FormSelectField from './FormSelectField';\nimport { sharedClasses } from './sharedClasses';\n\nconst populateRanks = (choices: IFieldChoice[]) => {\n const ranks: Record<string, string> = {};\n choices.forEach((choice, index) => {\n ranks[choice.id] = (index + 1).toString();\n });\n return ranks;\n};\n\nexport default function FormRankField({\n choices,\n onChange,\n groupLabel,\n innerRef,\n error,\n required,\n defaultValue,\n disabled = false\n}: {\n choices: IFieldChoice[];\n onChange: (value: Record<string | number, string>) => void;\n groupLabel?: string;\n innerRef?: React.Ref<HTMLDivElement>;\n error?: string;\n required?: boolean;\n defaultValue?: Record<string, number>;\n disabled?: boolean;\n}) {\n const [ranks, setRanks] = React.useState(defaultValue || populateRanks(choices));\n const options = choices.map((_, index: number) => (index + 1).toString());\n\n const handleChange = (value: string | number, name: string | number) => {\n const newRanks = { ...ranks, [name]: value };\n setRanks(newRanks);\n onChange(newRanks);\n };\n\n return (\n <Box ref={innerRef}>\n {groupLabel && (\n <Box sx={sharedClasses.groupLabel}>\n {groupLabel}\n {required && <span>*</span>}\n </Box>\n )}\n {choices.map((choice) => (\n <Box key={choice.id} sx={sharedClasses.rankFieldOption}>\n <FormSelectField\n defaultValue={ranks[choice.id]}\n options={options}\n isDisabled={disabled}\n styles={sharedClasses.rankFieldSelect}\n onChange={(value) => {\n handleChange(value, choice.id);\n }}\n />\n <Box sx={{ width: '80%', color: '#333333' }}>{choice.name}</Box>\n </Box>\n ))}\n {error && <Box sx={{ ...sharedClasses.errorBoxCheckbox, marginLeft: '14px' }}>{error}</Box>}\n </Box>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport { alpha, styled } from '@mui/material/styles';\nimport Select, { SelectChangeEvent } from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport InputBase from '@mui/material/InputBase';\nimport InputLabel from '@mui/material/InputLabel';\nimport FormControl from '@mui/material/FormControl';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { sharedClasses } from './sharedClasses';\n\ninterface IFormSelectFieldProps {\n label?: string;\n options: string[] | { value: string; label: string }[];\n defaultValue?: string;\n onChange: (value: string | number) => void;\n id?: string;\n innerRef?: React.RefObject<HTMLInputElement> | ((el: HTMLDivElement) => void);\n styles?: React.CSSProperties | Record<string, React.CSSProperties>;\n error?: string;\n required?: boolean;\n isDisabled?: boolean;\n}\n\nconst SelectInput = styled(InputBase)(() => ({\n 'label + &': {\n marginTop: '24px'\n },\n '& .MuiInputBase-input': {\n borderRadius: '6px',\n position: 'relative',\n backgroundColor: '#FFFFFF',\n color: '#333333',\n border: '1px solid #DDDDDD',\n fontSize: '16px',\n padding: '6px 10px',\n margin: '3px',\n fontFamily: 'Source Sans Pro, sans-serif',\n '&:focus': {\n boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n borderColor: theme.palette.primary.main\n }\n },\n '& .MuiInputBase-input:focus': {\n backgroundColor: '#ffffff',\n borderRadius: '6px'\n },\n '& .MuiSvgIcon-root': {\n color: '#AAAAAA',\n marginRight: '10px',\n transition: 'all 0.16s ease-in-out'\n }\n}));\n\nconst menuItemStyle = {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n};\n\nexport default function FormSelectField({\n label,\n options,\n defaultValue,\n onChange,\n id,\n innerRef,\n styles,\n error,\n required,\n isDisabled = false\n}: IFormSelectFieldProps) {\n const [value, setValue] = useState(defaultValue ?? '');\n\n const handleChange = (event: SelectChangeEvent<string>) => {\n setValue(event.target.value);\n onChange(event.target.value);\n };\n\n useEffect(() => {\n setValue(defaultValue ?? '')\n }, [defaultValue])\n\n return (\n <FormControl variant=\"standard\" sx={{ position: 'relative' }} ref={innerRef}>\n {label && (\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n {label}\n {required && <span>*</span>}\n </InputLabel>\n )}\n <Select\n sx={styles}\n value={value}\n id={id}\n onChange={handleChange}\n input={<SelectInput />}\n disabled={isDisabled}\n MenuProps={{\n PaperProps: {\n style: {\n maxHeight: 500,\n }\n }\n }}\n >\n {options?.map((option, index) =>\n typeof option === 'string' ? (\n <MenuItem key={index} value={option} sx={menuItemStyle}>\n {option}\n </MenuItem>\n ) : (\n <MenuItem key={index} value={option.value} sx={menuItemStyle}>\n {option.label}\n </MenuItem>\n )\n )}\n </Select>\n {error && <Box sx={sharedClasses.errorBox}>{error}</Box>}\n </FormControl>\n );\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport { alpha, styled } from '@mui/material/styles';\nimport Select, { SelectChangeEvent } from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport InputBase from '@mui/material/InputBase';\nimport InputLabel from '@mui/material/InputLabel';\nimport FormControl from '@mui/material/FormControl';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { sharedClasses } from './sharedClasses';\nimport CircleIcon from '@mui/icons-material/Circle';\n\ninterface IFormSelectWithIconFieldProps {\n label?: string;\n options: string[] | { value: string; label: string; color?: string }[];\n defaultValue?: string;\n onChange: (value: string | number) => void;\n id?: string;\n innerRef?: React.RefObject<HTMLInputElement> | ((el: HTMLDivElement) => void);\n styles?: React.CSSProperties | Record<string, React.CSSProperties>;\n error?: string;\n required?: boolean;\n isDisabled?: boolean;\n}\n\nconst SelectInput = styled(InputBase)(() => ({\n 'label + &': {\n marginTop: '24px'\n },\n '& .MuiInputBase-input': {\n borderRadius: '6px',\n position: 'relative',\n backgroundColor: '#FFFFFF',\n color: '#333333',\n border: '1px solid #DDDDDD',\n fontSize: '16px',\n padding: '6px 10px',\n margin: '3px',\n fontFamily: 'Source Sans Pro, sans-serif',\n '&:focus': {\n boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n borderColor: theme.palette.primary.main\n }\n },\n '& .MuiInputBase-input:focus': {\n backgroundColor: '#ffffff',\n borderRadius: '6px'\n },\n '& .MuiSelect-icon': {\n color: '#AAAAAA !important',\n marginRight: '10px',\n transition: 'all 0.16s ease-in-out'\n }\n}));\n\nconst menuItemStyle = {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n};\n\nexport default function FormSelectWithIconField({\n label,\n options,\n defaultValue,\n onChange,\n id,\n innerRef,\n styles,\n error,\n required,\n isDisabled\n}: IFormSelectWithIconFieldProps) {\n const [value, setValue] = useState(defaultValue ?? '');\n\n const handleChange = (event: SelectChangeEvent<string>) => {\n setValue(event.target.value);\n onChange(event.target.value);\n };\n\n return (\n <FormControl variant=\"standard\" sx={{ position: 'relative' }} ref={innerRef}>\n {label && (\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n {label}\n {required && <span>*</span>}\n </InputLabel>\n )}\n <Select\n sx={styles}\n value={value}\n id={id}\n onChange={handleChange}\n input={<SelectInput />}\n disabled={isDisabled || false}\n MenuProps={{\n PaperProps: {\n style: {\n maxHeight: 500,\n }\n }\n }}\n >\n {options?.map((option, index) =>\n typeof option === 'string' ? (\n <MenuItem key={index} value={option} sx={menuItemStyle}>\n {option}\n </MenuItem>\n ) : (\n <MenuItem key={index} value={option.value} sx={menuItemStyle}>\n {option.label}\n {option.color && <CircleIcon sx={{marginLeft: '10px', fontSize: '12px', color: option.color}}/>}\n </MenuItem>\n )\n )}\n </Select>\n {error && <Box sx={sharedClasses.errorBox}>{error}</Box>}\n </FormControl>\n );\n}\n","import React, { ChangeEvent, CSSProperties, Dispatch, FocusEventHandler, RefObject } from 'react';\nimport {\n alpha,\n Box,\n FormControl,\n FormHelperText,\n InputBase,\n InputLabel,\n Stack,\n styled\n} from '@mui/material';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { sharedClasses } from './sharedClasses';\nimport DebounceInput from '../Utilities/DebounceInput';\n\ntype IStyle = {\n [className: string]: CSSProperties | IStyle;\n};\n\ninterface IFormTextFieldProps {\n label?: string;\n value: string | number;\n onChange: Dispatch<ChangeEvent<HTMLInputElement>>;\n onBlur?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n required?: boolean;\n error?: string;\n id?: string;\n innerRef?: RefObject<HTMLInputElement> | ((el: HTMLDivElement) => void);\n styles?: CSSProperties | IStyle;\n draggable?: boolean;\n helperText?: string;\n fullWidth?: boolean;\n dataTestId?: string;\n maxLength?: number;\n placeholder?: string;\n onFocus?: FocusEventHandler<HTMLInputElement | HTMLTextAreaElement>;\n noWrapError?: boolean;\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement> | undefined;\n}\n\ninterface IFormNumberFieldProps extends IFormTextFieldProps {\n unit?: string;\n disabled?: boolean;\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement | HTMLTextAreaElement> | undefined;\n}\n\ninterface IMultilineTextFieldProps extends IFormTextFieldProps {\n rows?: number;\n placeholder?: string;\n}\n\ninterface IDebouncedMultilineTextFieldProps extends IDebouncedFormTextFieldProps {\n rows?: number;\n}\n\ninterface IDebouncedFormTextFieldProps {\n label?: string;\n onDebouncedChange: (value: string) => void;\n onBlur?: (value: string) => void;\n debounceTime?: number;\n defaultValue?: string;\n required?: boolean;\n error?: string;\n id?: string;\n innerRef?: RefObject<HTMLInputElement> | ((el: HTMLDivElement) => void);\n styles?: CSSProperties | IStyle;\n draggable?: boolean;\n helperText?: string;\n fullWidth?: boolean;\n dataTestId?: string;\n placeholder?: string;\n unit?: string;\n}\n\ninterface IDebouncedFormNumberField\n extends Omit<IDebouncedFormTextFieldProps, 'onDebouncedChange' | 'defaultValue'> {\n onDebouncedChange: (value: number) => void;\n defaultValue?: number;\n}\n\nconst TextInput = styled(InputBase)(() => ({\n 'label + &': {\n marginTop: '24px'\n },\n '& .MuiInputBase-input': {\n borderRadius: '6px',\n position: 'relative',\n backgroundColor: '#FFFFFF',\n color: '#333333',\n border: '1px solid #DDDDDD',\n fontSize: '16px',\n padding: '6px 10px',\n margin: '3px 0',\n fontFamily: 'Source Sans Pro, sans-serif',\n transition: 'all 0.16s ease-in-out',\n '&:focus': {\n boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n borderColor: theme.palette.primary.main\n },\n '&.MuiInputBase-inputMultiline': {\n transition: 'border-color 0.16s ease-in-out, box-shadow 0.16s ease-in-out',\n resize: 'vertical',\n overflowY: 'auto',\n willChange: 'height',\n minHeight: '1.5em'\n }\n }\n}));\n\nexport function FormTextField({\n label,\n value,\n onChange,\n onBlur,\n required,\n error,\n id,\n innerRef,\n styles,\n draggable,\n helperText,\n fullWidth = false,\n dataTestId,\n maxLength,\n placeholder,\n onFocus,\n noWrapError,\n onKeyDown\n}: IFormTextFieldProps) {\n return (\n <FormControl variant=\"standard\" sx={{ width: fullWidth ? '100%' : undefined }}>\n {label && (\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n {label}\n {required && <span>*</span>}\n </InputLabel>\n )}\n <TextInput\n inputProps={{\n 'data-testid': dataTestId,\n maxLength: maxLength\n }}\n disabled={draggable}\n sx={styles}\n value={value}\n id={id}\n onChange={onChange}\n onBlur={onBlur}\n inputRef={innerRef}\n placeholder={placeholder}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n />\n {error && (\n <Box sx={{ ...sharedClasses.errorBox, textWrap: noWrapError ? 'nowrap' : 'wrap' }}>\n {error}\n </Box>\n )}\n {helperText && (\n <FormHelperText sx={{ marginLeft: '4px', fontFamily: 'Source Sans Pro' }}>\n {helperText}\n </FormHelperText>\n )}\n </FormControl>\n );\n}\n\nexport function FormNumberField({\n label,\n value,\n onChange,\n required,\n error,\n id,\n innerRef,\n styles,\n unit,\n fullWidth,\n onKeyDown,\n placeholder,\n disabled\n}: IFormNumberFieldProps) {\n return (\n <FormControl variant=\"standard\" sx={{ width: '100%' }}>\n {label && (\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n {label}\n {required && <span>*</span>}\n </InputLabel>\n )}\n <Stack\n sx={{\n flexDirection: 'row',\n alignItems: 'center',\n marginTop: 3,\n columnGap: 1,\n color: '#838383'\n }}\n >\n <TextInput\n type=\"number\"\n sx={styles}\n value={value}\n id={id}\n onChange={onChange}\n inputRef={innerRef}\n fullWidth={fullWidth}\n onKeyDown={onKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n />\n {unit}\n </Stack>\n {error && <Box sx={sharedClasses.errorBox}>{error}</Box>}\n </FormControl>\n );\n}\n\nexport function FormTextFieldBlur({\n label,\n value,\n onChange,\n required,\n onBlur,\n error,\n id,\n innerRef,\n styles\n}: IFormTextFieldProps) {\n return (\n <FormControl variant=\"standard\">\n {label && (\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n {label}\n {required && <span>*</span>}\n </InputLabel>\n )}\n <TextInput\n sx={styles}\n value={value}\n onBlur={onBlur}\n id={id}\n onChange={onChange}\n inputRef={innerRef}\n />\n {error && <Box sx={sharedClasses.errorBox}>{error}</Box>}\n </FormControl>\n );\n}\n\nexport function DebouncedFormTextField({\n label,\n defaultValue,\n onDebouncedChange,\n required,\n error,\n debounceTime,\n id,\n innerRef,\n styles,\n helperText,\n fullWidth = false,\n dataTestId\n}: IDebouncedFormTextFieldProps) {\n return (\n <DebounceInput\n defaultValue={defaultValue}\n onDebouncedChange={onDebouncedChange}\n debounceTime={debounceTime}\n >\n {({ value, onChange }) => (\n <FormTextField\n dataTestId={dataTestId}\n label={label}\n value={value}\n onChange={onChange}\n required={required}\n error={error}\n id={id}\n innerRef={innerRef}\n styles={styles}\n helperText={helperText}\n fullWidth={fullWidth}\n />\n )}\n </DebounceInput>\n );\n}\n\nexport function DebouncedFormNumberField({\n label,\n defaultValue,\n onDebouncedChange,\n required,\n error,\n debounceTime,\n id,\n innerRef,\n styles,\n dataTestId,\n unit,\n fullWidth\n}: IDebouncedFormNumberField) {\n return (\n <DebounceInput\n defaultValue={defaultValue}\n onDebouncedChange={onDebouncedChange}\n debounceTime={debounceTime}\n >\n {({ value, onChange }) => (\n <FormNumberField\n dataTestId={dataTestId}\n label={label}\n value={value as number}\n onChange={onChange}\n required={required}\n error={error}\n id={id}\n innerRef={innerRef}\n styles={styles}\n unit={unit}\n fullWidth={fullWidth}\n />\n )}\n </DebounceInput>\n );\n}\n\nexport function DebouncedFormTextFieldBlur({\n label,\n defaultValue,\n onDebouncedChange,\n onBlur,\n required,\n error,\n debounceTime,\n id,\n innerRef,\n styles,\n dataTestId\n}: IDebouncedFormTextFieldProps) {\n return (\n <DebounceInput\n defaultValue={defaultValue}\n onDebouncedChange={onDebouncedChange}\n debounceTime={debounceTime}\n >\n {({ value, onChange }) => (\n <FormTextFieldBlur\n label={label}\n value={value}\n onChange={onChange}\n onBlur={onBlur}\n required={required}\n error={error}\n id={id}\n dataTestId={dataTestId}\n innerRef={innerRef}\n styles={styles}\n />\n )}\n </DebounceInput>\n );\n}\n\nexport function MultilineFormTextField({\n label,\n value,\n onChange,\n required,\n error,\n id,\n innerRef,\n styles,\n rows,\n helperText,\n draggable = false,\n dataTestId,\n fullWidth = false,\n placeholder,\n maxLength\n}: IMultilineTextFieldProps) {\n return (\n <FormControl variant=\"standard\" sx={{ width: fullWidth ? '100%' : undefined }}>\n {label && (\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n {label}\n {required && <span>*</span>}\n </InputLabel>\n )}\n <TextInput\n id={id}\n inputProps={{\n 'data-testid': dataTestId,\n maxLength: maxLength\n }}\n multiline\n rows={rows || 6}\n required={required}\n fullWidth\n value={value}\n inputRef={innerRef}\n onChange={onChange}\n sx={styles}\n disabled={draggable}\n placeholder={placeholder}\n />\n {error && <Box sx={sharedClasses.errorBox}>{error}</Box>}\n {helperText && <FormHelperText sx={{ marginLeft: '4px' }}>{helperText}</FormHelperText>}\n </FormControl>\n );\n}\n\nexport function MultilineDebouncedFormTextField({\n label,\n defaultValue,\n onDebouncedChange,\n debounceTime,\n required,\n error,\n id,\n innerRef,\n styles,\n rows,\n fullWidth,\n placeholder\n}: IDebouncedMultilineTextFieldProps) {\n return (\n <DebounceInput\n defaultValue={defaultValue}\n onDebouncedChange={onDebouncedChange}\n debounceTime={debounceTime}\n >\n {({ value, onChange }) => (\n <MultilineFormTextField\n label={label}\n value={value}\n onChange={onChange}\n required={required}\n error={error}\n id={id}\n innerRef={innerRef}\n styles={styles}\n rows={rows}\n fullWidth={fullWidth}\n placeholder={placeholder}\n />\n )}\n </DebounceInput>\n );\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport InfoIcon from '@mui/icons-material/Info';\nimport { sharedClasses } from './sharedClasses';\n\nconst InfoBox = ({ message }: { message: string | JSX.Element }) => {\n return (\n <Box sx={sharedClasses.noticeContainer}>\n <Box sx={{ display: 'flex' }}>\n <InfoIcon sx={sharedClasses.noticeIcon} />\n {message}\n </Box>\n </Box>\n );\n};\n\nexport default InfoBox;\n","import React from 'react';\nimport { Dialog, Button } from '@mui/material';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport ChevronRightIcon from '@material-ui/icons/ChevronRight';\n\ninterface JobAdSuccessDialogProps {\n open: boolean;\n onClose: () => void;\n answers: any;\n classes: any;\n adType: string;\n jobId?: string;\n}\n\nconst JobAdSuccessDialog: React.FC<JobAdSuccessDialogProps> = ({\n open,\n onClose,\n answers,\n classes,\n adType,\n jobId\n}) => {\n return (\n <Dialog open={open} onClose={onClose} classes={{ paper: classes.successDialog }}>\n <div className={classes.successCheck}>\n <CheckCircleIcon />\n </div>\n <h4>Success!</h4>\n <div className={classes.successDialogText}>\n {answers && answers.advertisement_id ? (\n <span>Your ad has been updated on {adType}</span>\n ) : (\n <span>Your ad has been posted to {adType}</span>\n )}\n </div>\n <div className={`${classes.dialogButtonContainer} ${classes.successDialogContainer}`}>\n <Button\n disableElevation\n className={classes.buttonSecondary}\n onClick={() => {\n if (jobId) {\n location.href = `/admin/jobs/${jobId}/job_ads`;\n } else {\n window.history.back();\n }\n }}\n endIcon={<ChevronRightIcon />}\n >\n Back to ads\n </Button>\n </div>\n </Dialog>\n );\n};\n\nexport default JobAdSuccessDialog;\n","import React, { useState } from 'react';\nimport CheckIcon from '@mui/icons-material/Check';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport { styled } from '@mui/material/styles';\nimport { AutocompleteGetTagProps, useAutocomplete } from '@mui/material';\n\nexport interface IMultiSelectProps {\n name: string;\n selectOptions: IOptionType[];\n handleFilterChange: (filter: string, newValues: (string | IOptionType)[]) => void;\n filters: IOptionType[];\n freeInput?: boolean;\n disabled?: boolean;\n displayLabel?: boolean;\n}\n\nexport interface IOptionType {\n name: string;\n value?: string;\n id?: number;\n state?: string;\n label?: string;\n}\n\nconst InputWrapper = styled('div')(\n () => `\n width: 100%;\n min-height: 41px;\n border: 1px solid #DADEE0;\n background-color: #ffffff;\n border-radius: 6px;\n padding: 6px 22px 6px 6px;\n display: flex;\n flex-wrap: wrap;\n margin-top: 3px;\n &:hover {\n border-color: #DADEE0;\n }\n\n &.focused {\n border-color: #77C2BE;\n box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\n }\n\n & input {\n background-color: transparent;\n color: #000000;\n box-sizing: border-box;\n padding: 4px 6px 2px 6px;\n width: 0;\n height: 26px;\n flex-grow: 1;\n border: 0;\n margin: 0;\n outline: 0;\n z-index: 1;\n }\n\n & .select-placeholder {\n font-size: 12px;\n font-weight: 500;\n color: #000000;\n margin-left: 8px;\n margin-top: 2px;\n position: absolute;\n z-index: 0;\n }\n\n & .select-arrow {\n position: absolute;\n right: 4px;\n bottom: 0px;\n height: 100%;\n fontSize: 1.1rem;\n color: #AAAAAA;\n transition: transform 0.25s ease-in-out;\n }\n`\n);\n\ninterface TagProps extends ReturnType<AutocompleteGetTagProps> {\n label: string;\n}\n\nfunction Tag(props: TagProps) {\n const { label, onDelete, ...other } = props;\n return (\n <div {...other}>\n <span>{label}</span>\n <CancelIcon onClick={onDelete} />\n </div>\n );\n}\n\nconst StyledTag = styled(Tag)<TagProps>(\n () => `\n display: flex;\n align-items: center;\n font-size: 10px;\n font-weight: 500;\n color: #000000;\n height: 23px;\n margin: 2px;\n line-height: 22px;\n background-color: #F3F3F3;\n border: none;\n border-radius: 0px;\n box-sizing: content-box;\n padding: 0 4px 0 10px;\n outline: 0;\n overflow: hidden;\n\n & span {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n & svg {\n font-size: 9px;\n cursor: pointer;\n margin: 0px 4px 0px 6px;\n }\n`\n);\n\nconst Listbox = styled('ul')(\n () => `\n width: 220px;\n margin: 4px 0 0;\n padding: 0;\n position: absolute;\n list-style: none;\n background-color: #FFFFFF;\n overflow: auto;\n overflow-x: hidden;\n max-height: 160px;\n border-radius: 4px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 2;\n\n & .Mui-focused {\n background: #F1F1F1 !important;\n }\n\n & li {\n padding: 5px 12px;\n display: flex;\n font-weight: 600;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n cursor: pointer;\n\n & span {\n flex-grow: 1;\n }\n\n & svg {\n color: transparent;\n }\n\n }\n\n & li[aria-selected='true'] {\n background-color: #FAFAFA;\n font-weight: 600;\n\n & svg {\n color: #5BC4BF;\n }\n }\n\n & li[data-focus='true'] {\n background-color: #e6f7ff;\n cursor: pointer; \n\n & svg {\n color: currentColor;\n }\n }\n`\n);\n\nexport default function MultiSelect({\n name,\n selectOptions,\n handleFilterChange,\n filters,\n freeInput = false,\n disabled = false,\n displayLabel = false\n}: IMultiSelectProps) {\n const [open, setOpen] = useState(false);\n const {\n getRootProps,\n getInputProps,\n getTagProps,\n getListboxProps,\n getOptionProps,\n groupedOptions,\n value,\n focused,\n setAnchorEl\n } = useAutocomplete({\n open: open,\n onOpen: () => setOpen(true),\n onClose: () => setOpen(false),\n id: 'multi-select',\n multiple: true,\n options: selectOptions ? selectOptions : [],\n getOptionLabel: (option: IOptionType) => option.name,\n value: filters,\n onChange: (event, value) => handleFilterChange(name, value),\n freeSolo: freeInput,\n autoSelect: freeInput,\n disabled: disabled && filters.length === 0\n });\n const displayOption = (option: IOptionType) => {\n if (freeInput) {\n return option;\n } else {\n return displayLabel ? option.label : option.name;\n }\n };\n return (\n <>\n <div {...getRootProps()}>\n <InputWrapper\n ref={setAnchorEl}\n className={focused ? 'focused' : ''}\n sx={{ position: 'relative', ...(disabled && { opacity: 0.5 }) }}\n >\n {value.length < 1 && !focused && !disabled && (\n <span className=\"select-placeholder\">\n {freeInput ? 'Input one or more' : 'Please select'}\n </span>\n )}\n {!freeInput && (\n <ArrowDropDownIcon\n className={'select-arrow'}\n sx={\n open\n ? { transform: 'rotate(-180deg)', '&:hover': { cursor: 'pointer' } }\n : { '&:hover': { cursor: 'pointer' } }\n }\n onClick={() => setOpen(!open)}\n />\n )}\n {value.map((option: IOptionType, index: number) => (\n <StyledTag label={displayOption(option)} {...getTagProps({ index })} />\n ))}\n <input {...getInputProps()} />\n </InputWrapper>\n </div>\n {groupedOptions.length > 0 ? (\n <Listbox {...getListboxProps()}>\n {(groupedOptions as typeof selectOptions).map((option, index) => (\n <li {...getOptionProps({ option, index })} key={index} data-testid={`option-${index}`}>\n <span>{displayLabel ? option.label : option.name}</span>\n <CheckIcon fontSize=\"small\" />\n </li>\n ))}\n </Listbox>\n ) : null}\n </>\n );\n}\n","import React, { useState } from 'react';\nimport CheckIcon from '@mui/icons-material/Check';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport { styled } from '@mui/material/styles';\nimport { AutocompleteGetTagProps, CircularProgress, useAutocomplete } from '@mui/material';\n\nexport interface IMultiSelectProps {\n dropdownOptions: IOptionType[];\n onChange: (newValues: (string | IOptionType)[]) => void;\n values: IOptionType[];\n loadingOptions: boolean;\n creatingOption: boolean;\n hasMaximumCharacter?: number;\n}\n\nexport interface IOptionType {\n id: number;\n label?: string;\n title?: string;\n name?: string;\n}\n\ninterface TagProps extends ReturnType<AutocompleteGetTagProps> {\n label: string;\n}\n\nfunction Tag(props: TagProps) {\n const { label, onDelete, ...other } = props;\n return (\n <div {...other}>\n <span>{label}</span>\n <CancelIcon onClick={onDelete} />\n </div>\n );\n}\n\nexport default function MultiSelectWithCreate({\n dropdownOptions,\n onChange,\n values,\n loadingOptions,\n creatingOption,\n hasMaximumCharacter\n}: IMultiSelectProps) {\n const [open, setOpen] = useState(false);\n const {\n getRootProps,\n getInputProps,\n getTagProps,\n getListboxProps,\n getOptionProps,\n groupedOptions,\n value,\n focused,\n setAnchorEl,\n anchorEl,\n inputValue\n } = useAutocomplete({\n open: open,\n onOpen: () => setOpen(true),\n onClose: () => setOpen(false),\n id: 'multi-select',\n multiple: true,\n options: dropdownOptions ? dropdownOptions : [],\n getOptionLabel: (option: IOptionType) => option.name || option.label || option.title,\n value: values,\n onChange: (event, value) => onChange(value),\n freeSolo: true,\n autoHighlight: true,\n disabled: loadingOptions || creatingOption\n });\n\n return (\n <>\n <div {...getRootProps()}>\n <InputWrapper\n ref={setAnchorEl}\n className={focused ? 'focused' : ''}\n sx={{ position: 'relative' }}\n >\n {value.length < 1 && inputValue.length < 1 && !focused && (\n <span className=\"select-placeholder\">\n {loadingOptions ? 'Loading options...' : 'Select or create one or more'}\n </span>\n )}\n {creatingOption ? (\n <CircularProgress size={24} sx={{ position: 'absolute', right: '14px', top: '8px' }} />\n ) : (\n <ArrowDropDownIcon\n className={'select-arrow'}\n sx={\n open\n ? { transform: 'rotate(-180deg)', '&:hover': { cursor: 'pointer' } }\n : { '&:hover': { cursor: 'pointer' } }\n }\n onClick={() => setOpen(!open)}\n />\n )}\n {value.map((option: IOptionType | string, index: number) => {\n if (typeof option === 'string') {\n return <StyledTag label={option} {...getTagProps({ index })} />;\n } else {\n return (\n <StyledTag\n label={option.name || option.label || option.title}\n {...getTagProps({ index })}\n />\n );\n }\n })}\n <input {...getInputProps()} />\n </InputWrapper>\n </div>\n {groupedOptions.length > 0 ? (\n <Listbox {...getListboxProps()} sx={{ maxWidth: anchorEl?.getBoundingClientRect().width }}>\n {(groupedOptions as typeof dropdownOptions).map((option, index) => (\n <li {...getOptionProps({ option, index })} key={index}>\n <span>{option.name || option.label || option.title}</span>\n <CheckIcon fontSize=\"small\" />\n </li>\n ))}\n </Listbox>\n ) : open ? (\n <Listbox sx={{ maxWidth: anchorEl?.getBoundingClientRect().width }}>\n <li>\n <span>No pools found, press enter to create a new one</span>\n </li>\n </Listbox>\n ) : null}\n </>\n );\n}\n\nconst InputWrapper = styled('div')(\n () => `\n width: 100%;\n min-height: 41px;\n border: 1px solid #DADEE0;\n background-color: #ffffff;\n border-radius: 6px;\n padding: 6px 22px 6px 6px;\n display: flex;\n flex-wrap: wrap;\n margin-top: 3px;\n &:hover {\n border-color: #DADEE0;\n }\n\n &.focused {\n border-color: #77C2BE;\n box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\n }\n\n & input {\n background-color: transparent;\n color: #000000;\n box-sizing: border-box;\n padding: 4px 6px 2px 6px;\n width: 0;\n height: 26px;\n flex-grow: 1;\n border: 0;\n margin: 0;\n outline: 0;\n z-index: 1;\n }\n\n & .select-placeholder {\n font-size: 15px;\n font-weight: 500;\n color: #939393;\n margin-left: 8px;\n margin-top: 2px;\n position: absolute;\n z-index: 0;\n }\n\n & .select-arrow {\n position: absolute;\n right: 4px;\n bottom: 0px;\n height: 100%;\n fontSize: 1.1rem;\n color: #AAAAAA;\n transition: transform 0.25s ease-in-out;\n }\n`\n);\n\nconst StyledTag = styled(Tag)<TagProps>(\n () => `\n display: flex;\n align-items: center;\n font-size: 12px;\n font-weight: 500;\n color: #000000;\n height: 23px;\n margin: 2px;\n line-height: 22px;\n background-color: #F3F3F3;\n border: none;\n border-radius: 0px;\n box-sizing: content-box;\n padding: 0 4px 0 10px;\n outline: 0;\n overflow: hidden;\n\n & span {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n & svg {\n font-size: 9px;\n cursor: pointer;\n margin: 0px 4px 0px 6px;\n }\n`\n);\n\nconst Listbox = styled('ul')(\n () => `\n width: 100%;\n margin: 4px 0 0;\n padding: 0;\n position: absolute;\n list-style: none;\n background-color: #FFFFFF;\n overflow: auto;\n overflow-x: hidden;\n max-height: 160px;\n border-radius: 4px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n z-index: 2;\n\n & .Mui-focused {\n background: #F1F1F1 !important;\n }\n\n & li {\n padding: 5px 12px;\n display: flex;\n font-weight: 600;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n cursor: pointer;\n\n & span {\n flex-grow: 1;\n }\n\n & svg {\n color: transparent;\n }\n\n }\n\n & li[aria-selected='true'] {\n background-color: #FAFAFA;\n font-weight: 600;\n\n & svg {\n color: #5BC4BF;\n }\n }\n\n & li[data-focus='true'] {\n background-color: #e6f7ff;\n cursor: pointer; \n\n & svg {\n color: currentColor;\n }\n }\n`\n);\n","import React, { useState, useRef, Dispatch, SetStateAction } from 'react';\nimport { Box, FormHelperText, FormControl, IconButton, Collapse } from '@mui/material';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport { sharedClasses } from './sharedClasses';\n\nexport default function MultiTagInput({\n tags,\n setTags,\n validation,\n validationMessage,\n label,\n required,\n error,\n width,\n helperText,\n styles,\n tagType,\n labelStylesOverride,\n helperTextStylesOverride,\n autoFocus\n}: {\n tags: string[];\n setTags: Dispatch<SetStateAction<string[]>>;\n validation?: (value: string) => boolean;\n validationMessage?: string;\n label: string;\n required?: boolean;\n error?: string;\n width?: string;\n helperText?: string;\n styles?: React.CSSProperties;\n tagType?: string;\n labelStylesOverride?: React.CSSProperties;\n helperTextStylesOverride?: React.CSSProperties;\n autoFocus?: boolean;\n}) {\n const [inputValue, setInputValue] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n const [isFocused, setIsFocused] = useState(false);\n const [selectedForDelete, setSelectedForDelete] = useState(false);\n const [message, setMessage] = useState('');\n\n const handleRemoveTag = (index: number) => {\n const newTags = [...tags];\n newTags.splice(index, 1);\n setTags(newTags);\n };\n\n const handleAddTag = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!inputValue) return;\n if (validation && !validation(inputValue)) {\n setMessage(validationMessage || 'Invalid item');\n return;\n }\n if (tags.includes(inputValue)) {\n setMessage('Items must be unique');\n return;\n }\n setTags([...tags, inputValue]);\n setInputValue('');\n setMessage('');\n (event.target as Element).setAttribute('size', '2');\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'Enter' || event.key === ' ' || event.key === ',') {\n event.preventDefault();\n handleAddTag(event);\n } else if (event.key === 'Tab' && inputValue) {\n handleAddTag(event);\n } else if (event.key === 'Backspace' && inputValue === '') {\n event.preventDefault();\n if (selectedForDelete) {\n setTags((prev) => prev.slice(0, tags.length - 1));\n setMessage('');\n setSelectedForDelete(false);\n } else {\n setSelectedForDelete(true);\n }\n } else if (event.key === 'ArrowRight' || event.key === 'ArrowDown') {\n setSelectedForDelete(false);\n }\n };\n\n const handlePaste = (event: React.ClipboardEvent<HTMLDivElement>) => {\n event.preventDefault();\n const paste = event.clipboardData.getData('text').trim();\n const newTags = paste.split(/[\\s,]+/);\n const uniqueTags = [...new Set(newTags)];\n const invalidTags = uniqueTags.filter((tag) => validation && !validation(tag));\n const validTags = uniqueTags.filter((tag) => {\n if (validation && !validation(tag)) return false;\n if (tags.includes(tag)) return false;\n return true;\n });\n setTags([...tags, ...validTags]);\n if (validation && invalidTags.length > 0) {\n setMessage(`Invalid ${tagType ? tagType : 'tags'}: ${invalidTags.join(', ')}`);\n } else {\n setMessage('');\n }\n setInputValue('');\n };\n\n return (\n <FormControl variant=\"standard\" sx={{ width: width || '290px' }}>\n <Box sx={labelStylesOverride || sharedClasses.multiTagLabel}>\n {label}\n {required && <span>*</span>}\n </Box>\n <Box\n sx={{\n ...sharedClasses.textAndTagsWrapper,\n ...(isFocused ? sharedClasses.focusedStyles : {}),\n ...(styles || {})\n }}\n onClick={() => inputRef.current?.focus()}\n >\n {tags.map((option: string, index: number) => (\n <Box\n sx={{\n ...sharedClasses.tag,\n ...(selectedForDelete && index + 1 === tags.length ? sharedClasses.tagSelected : {})\n }}\n key={option}\n >\n {option}\n <IconButton sx={sharedClasses.tagIconButton} onClick={() => handleRemoveTag(index)}>\n <ClearIcon sx={sharedClasses.tagIcon} />\n </IconButton>\n </Box>\n ))}\n <input\n data-testid=\"multiple-tags-input\"\n ref={inputRef}\n size={1}\n type=\"text\"\n value={inputValue}\n onKeyDown={handleKeyDown}\n onPaste={(e) => handlePaste(e)}\n onInput={(e) =>\n (e.target as HTMLInputElement).setAttribute(\n 'size',\n `${((e.target as HTMLInputElement).value.length || 1) + 3}`\n )\n }\n onFocus={() => setIsFocused(true)}\n onBlur={(e) => {\n handleAddTag(e);\n setIsFocused(false);\n setSelectedForDelete(false);\n }}\n onChange={(e) => setInputValue(e.target.value)}\n style={{\n ...sharedClasses.textInput,\n caretColor: selectedForDelete ? '#FFFFFF' : '#000000'\n }}\n autoFocus={autoFocus || false}\n />\n </Box>\n {helperText && (\n <FormHelperText sx={helperTextStylesOverride || sharedClasses.multiTagHelperText}>\n {helperText}\n </FormHelperText>\n )}\n <Collapse in={!!(error || message)}>\n <Box sx={sharedClasses.fixedErrorBox}>{error || message}</Box>\n </Collapse>\n </FormControl>\n );\n}\n","import React, { useEffect, useState } from 'react';\nimport {\n Button,\n DialogActions,\n InputLabel,\n OutlinedInput,\n InputAdornment,\n IconButton,\n Stack,\n Popover,\n Divider,\n Typography,\n Collapse\n} from '@mui/material';\nimport {\n StaticDatePicker,\n LocalizationProvider,\n PickersDay,\n PickersActionBarProps,\n StaticDatePickerProps\n} from '@mui/x-date-pickers';\nimport { Event as EventIcon, Close as CloseIcon } from '@mui/icons-material';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { sharedClasses } from './sharedClasses';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { TransitionGroup } from 'react-transition-group';\n\ninterface IControlledTimePicker extends Omit<StaticDatePickerProps<Dayjs>, 'onAccept'> {\n values: Date[];\n onAccept: (dates: Date[]) => void;\n label: string;\n required?: boolean;\n error?: string;\n}\n\ninterface IDayItem {\n day: Dayjs;\n removeSelectedDate: (item: Dayjs) => void;\n}\n\nconst ServerDay = (props: any) => {\n const { selectedDays = [], onDaySelect, day, outsideCurrentMonth, ...other } = props;\n const isSelected = selectedDays\n .map((e: Dayjs) => e.format('M/D/YYYY'))\n .includes(day.format('M/D/YYYY'));\n const nextDayIsSelected = selectedDays\n .map((e: Dayjs) => e.format('M/D/YYYY'))\n .includes(day.add(1, 'day').format('M/D/YYYY'));\n const previousDayIsSelected = selectedDays\n .map((e: Dayjs) => e.format('M/D/YYYY'))\n .includes(day.subtract(1, 'day').format('M/D/YYYY'));\n\n const borderRadius = () => {\n if (previousDayIsSelected && nextDayIsSelected) {\n return 'unset';\n } else if (nextDayIsSelected) {\n return '50% 0% 0% 50%';\n } else if (previousDayIsSelected) {\n return '0% 50% 50% 0%';\n }\n };\n\n return (\n <PickersDay\n {...other}\n outsideCurrentMonth={outsideCurrentMonth}\n day={day}\n selected={isSelected}\n onDaySelect={onDaySelect}\n sx={{\n ...sharedClasses.pickersDay,\n '&.Mui-selected': {\n background: `${theme.palette.action.main} !important`,\n borderRadius: borderRadius()\n }\n }}\n />\n );\n};\n\nconst ActionBar = ({\n onAccept,\n onCancel\n}: Omit<PickersActionBarProps, 'onClear' | 'onSetToday'>) => {\n return (\n <DialogActions>\n <Button\n onClick={onCancel}\n sx={{\n ...sharedClasses.genericRedButton,\n background: theme.palette.common.white,\n '&:hover': { background: theme.palette.common.white }\n }}\n >\n Cancel\n </Button>\n <Button onClick={onAccept} sx={sharedClasses.genericButton}>\n Submit\n </Button>\n </DialogActions>\n );\n};\n\nexport default function MultipleDatesPicker({\n values,\n onAccept,\n label,\n required,\n error,\n ...rest\n}: IControlledTimePicker) {\n const [selectedDays, setSelectedDays] = useState<Dayjs[]>([]);\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n\n useEffect(() => {\n setSelectedDays(values.map((v) => dayjs(v)));\n }, [values]);\n\n const onDaySelect = (day: any) => {\n const newValue = [...selectedDays];\n if (newValue.map((n) => n.format('M/D/YYYY')).includes(day.format('M/D/YYYY'))) {\n setSelectedDays(newValue.filter((v) => v.format('M/D/YYYY') !== day.format('M/D/YYYY')));\n } else {\n newValue.push(day);\n setSelectedDays(newValue.sort((a, b) => (a.isAfter(b) ? 1 : -1)));\n }\n };\n\n const onClose = () => {\n setSelectedDays(values.map((v) => dayjs(v)));\n setAnchorEl(null);\n };\n\n const onActionAccept = () => {\n onAccept(selectedDays.map((d) => d.toDate()));\n setAnchorEl(null);\n };\n\n const pickerDayComponent = (props: any) => (\n <ServerDay {...props} selectedDays={selectedDays} onDaySelect={onDaySelect} />\n );\n\n const actionBarComponent = () => <ActionBar onAccept={onActionAccept} onCancel={onClose} />;\n\n return (\n <Stack>\n <InputLabel sx={sharedClasses.multipleDatesPickerLabel}>\n {label}\n {required && <Stack sx={{ color: theme.palette.error.main }}>*</Stack>}\n </InputLabel>\n <OutlinedInput\n id=\"outlined-adornment-password\"\n sx={sharedClasses.multipleDatesPickerInput}\n endAdornment={\n <InputAdornment position=\"end\">\n {values.length > 1 && (\n <Stack sx={sharedClasses.multipleDatesPickerExtraDates}>{`+${\n values.length - 1\n }`}</Stack>\n )}\n <IconButton\n onClick={(e) => setAnchorEl(e.currentTarget)}\n edge=\"end\"\n sx={{ '&:focus': { outline: 'none' } }}\n >\n <EventIcon />\n </IconButton>\n </InputAdornment>\n }\n error={selectedDays.length === 0}\n label=\"Password\"\n value={selectedDays[0]?.format('DD/MM/YYYY') || ''}\n />\n {!!error && (\n <Typography variant=\"caption\" sx={{ ...sharedClasses.errorMessage, marginTop: '3px' }}>\n {error}\n </Typography>\n )}\n <Popover\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n sx={{\n '& .MuiPaper-root': {\n marginTop: 1,\n marginLeft: 1,\n display: 'flex'\n }\n }}\n >\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <StaticDatePicker\n slots={{ day: pickerDayComponent, actionBar: actionBarComponent }}\n slotProps={{\n toolbar: { hidden: true }\n }}\n sx={sharedClasses.multipleDatesPickerStaticDatePicker}\n {...rest}\n />\n </LocalizationProvider>\n <Divider orientation=\"vertical\" flexItem />\n <Stack\n spacing={2}\n sx={{\n width: '200px',\n py: theme.spacing(3),\n px: theme.spacing(2),\n maxHeight: '406px'\n }}\n >\n <Stack direction=\"row\" justifyContent=\"space-between\">\n <Stack sx={{ fontWeight: 'bold', color: '#666666' }}>Selected Dates</Stack>\n <Stack\n sx={{\n color: theme.palette.action.main,\n fontWeight: 'bold',\n paddingInline: theme.spacing(0.65)\n }}\n >\n {selectedDays.length}\n </Stack>\n </Stack>\n <Stack\n sx={{\n overflowY: 'auto'\n }}\n >\n <TransitionGroup>\n {selectedDays.map((day, idx) => (\n <Collapse key={idx}>\n <DayItem day={day} removeSelectedDate={onDaySelect} />\n </Collapse>\n ))}\n </TransitionGroup>\n </Stack>\n </Stack>\n </Popover>\n </Stack>\n );\n}\n\nfunction DayItem({ day, removeSelectedDate }: IDayItem) {\n return (\n <Stack direction=\"row\" justifyContent=\"space-between\" mb={1}>\n <Typography sx={{ fontFamily: theme.typography.fontFamily }}>\n {dayjs(day).format('ddd, D MMMM YYYY')}\n </Typography>\n <IconButton\n onClick={() => removeSelectedDate(day)}\n sx={{ p: 0, color: theme.palette.error.main }}\n >\n <CloseIcon />\n </IconButton>\n </Stack>\n );\n}\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport { alpha, styled } from '@mui/material/styles';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport InputBase from '@mui/material/InputBase';\nimport InputLabel from '@mui/material/InputLabel';\nimport FormControl from '@mui/material/FormControl';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { sharedClasses } from './sharedClasses';\n\ninterface ISelectFieldProps {\n label?: string;\n options: string[];\n value?: string;\n onChange: (value: string) => void;\n id?: string;\n innerRef?: React.RefObject<HTMLInputElement> | ((el: HTMLDivElement) => void);\n styles?: React.CSSProperties | Record<string, React.CSSProperties>;\n error?: string;\n required?: boolean;\n}\n\nconst SelectInput = styled(InputBase)(() => ({\n 'label + &': {\n marginTop: '24px'\n },\n '& .MuiInputBase-input': {\n borderRadius: '6px',\n position: 'relative',\n backgroundColor: '#FFFFFF',\n color: '#333333',\n border: '1px solid #DDDDDD',\n fontSize: '16px',\n padding: '6px 10px',\n margin: '3px',\n fontFamily: 'Source Sans Pro, sans-serif',\n '&:focus': {\n boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n borderColor: theme.palette.primary.main\n }\n },\n '& .MuiInputBase-input:focus': {\n backgroundColor: '#ffffff',\n borderRadius: '6px'\n },\n '& .MuiSvgIcon-root': {\n color: '#AAAAAA',\n marginRight: '10px',\n transition: 'all 0.16s ease-in-out'\n }\n}));\n\nconst menuItemStyle = {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n};\n\nexport default function SelectField({\n label,\n options,\n value,\n onChange,\n id,\n innerRef,\n styles,\n error,\n required\n}: ISelectFieldProps) {\n return (\n <FormControl variant=\"standard\" sx={{ position: 'relative' }} ref={innerRef}>\n {label && (\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n {label}\n {required && <span>*</span>}\n </InputLabel>\n )}\n <Select\n sx={styles}\n value={value}\n id={id}\n onChange={(e) => onChange(e.target.value)}\n input={<SelectInput />}\n >\n {options.map((option, index) => (\n <MenuItem key={index} value={option} sx={menuItemStyle}>\n {option}\n </MenuItem>\n ))}\n </Select>\n {error && <Box sx={sharedClasses.errorBox}>{error}</Box>}\n </FormControl>\n );\n}\n","import { InputLabel, Typography } from '@mui/material';\nimport {\n DateTimeValidationError,\n DateValidationError,\n DesktopDatePickerProps,\n PickerChangeHandlerContext,\n StaticDatePicker,\n StaticDatePickerProps\n} from '@mui/x-date-pickers';\nimport { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';\nimport { DesktopDateTimePicker } from '@mui/x-date-pickers/DesktopDateTimePicker';\nimport { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { TimePicker, TimePickerProps } from '@mui/x-date-pickers/TimePicker';\nimport moment, { Moment } from 'moment';\nimport momentTimezone from 'moment-timezone';\nimport React, { CSSProperties, ReactNode, useState } from 'react';\nimport { IStyle } from '../../../ThemeContext/ThemeObject';\nimport { sharedClasses } from './sharedClasses';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { userTimeZone } from '../../utils/formatToUserTimeZone';\n\ninterface IUncontrolledSingleDatePickerProps extends DesktopDatePickerProps<Date> {\n defaultValue: Date | null;\n handleDateChange: (date: Date | null) => void;\n maxDate?: Date;\n minDate?: Date;\n inputStyles?: IStyle | CSSProperties;\n disabled?: boolean;\n innerRef?: React.RefObject<HTMLInputElement> | ((el: HTMLDivElement) => void);\n}\n\ninterface ISingleDatePickerProps extends Omit<DesktopDatePickerProps<Date>, 'onChange'> {\n value: Date | null;\n onChange: (\n value: Moment | null,\n keyboardInputValue?: PickerChangeHandlerContext<DateValidationError>\n ) => void;\n maxDate?: Date;\n minDate?: Date;\n inputStyles?: IStyle | CSSProperties;\n label?: string | ReactNode;\n showTodayButton?: boolean;\n error?: string;\n required?: boolean;\n}\n\nconst todayButtonStyling = {\n '& .MuiDialogActions-root': {\n display: 'flex',\n justifyContent: 'center',\n paddingBottom: 3,\n '& button': sharedClasses.genericButtonSecondary\n },\n '& .MuiDateCalendar-root': {\n height: '325px'\n }\n};\n\ninterface ISingleDatePickerTimeProps {\n value: Date;\n onChange: (\n value: Date | null,\n context?: PickerChangeHandlerContext<DateTimeValidationError>\n ) => void;\n minDate?: Date;\n inputStyles?: IStyle | CSSProperties;\n pickerStyles?: IStyle | CSSProperties;\n}\n\ninterface ISingleDateTimePickerProps extends ISingleDatePickerTimeProps {\n label?: string | ReactNode;\n timezone?: string;\n disablePast?: boolean;\n required?: boolean;\n innerRef?: React.RefObject<HTMLInputElement>;\n error?: string;\n}\n\ninterface IControlledTimePicker extends TimePickerProps<Dayjs> {\n label?: string;\n minutesInterval?: number;\n inputStyles?: IStyle | CSSProperties;\n}\n\ninterface IControlledStaticTimePicker extends StaticDatePickerProps<Date> {\n value: Date | null;\n onChange: (value: Date | null) => void;\n inputStyles?: IStyle | CSSProperties;\n}\n\nexport function SingleDatePicker({\n value,\n onChange,\n maxDate,\n minDate,\n inputStyles,\n label,\n showTodayButton,\n error,\n required,\n ...rest\n}: ISingleDatePickerProps) {\n return (\n <LocalizationProvider dateAdapter={AdapterMoment} dateLibInstance={momentTimezone}>\n {label && (\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n {label}\n {required && <span>*</span>}\n </InputLabel>\n )}\n <DesktopDatePicker\n format=\"DD/MM/YYYY\"\n value={moment(value)}\n maxDate={maxDate}\n minDate={minDate}\n slotProps={{\n popper: {\n sx: { ...sharedClasses.calendar, ...(showTodayButton && todayButtonStyling) },\n placement: 'bottom-end',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [28, 15]\n }\n }\n ]\n },\n textField: { InputProps: { sx: { ...sharedClasses.datePicker, ...inputStyles } } },\n ...(showTodayButton && { actionBar: { actions: ['today'] } })\n }}\n onChange={onChange}\n timezone={userTimeZone}\n {...rest}\n />\n <Typography variant=\"caption\" sx={sharedClasses.errorMessage}>\n {error}\n </Typography>\n </LocalizationProvider>\n );\n}\n\nexport function SingleDateTimePicker({\n value,\n onChange,\n minDate,\n inputStyles,\n pickerStyles,\n label,\n required,\n innerRef,\n error,\n ...rest\n}: ISingleDateTimePickerProps) {\n return (\n <LocalizationProvider dateAdapter={AdapterMoment}>\n {label && (\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n {label}\n {required && <span>*</span>}\n </InputLabel>\n )}\n <DesktopDateTimePicker\n format=\"DD/MM/YYYY hh:mm a\"\n value={moment(value)}\n minDate={minDate}\n timeSteps={{ hours: 1, minutes: 1 }}\n views={['year', 'month', 'day', 'hours', 'minutes']}\n openTo={'day'}\n slotProps={{\n popper: {\n sx: pickerStyles,\n placement: 'bottom-end',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [28, 15]\n }\n }\n ]\n },\n textField: { InputProps: { sx: { ...sharedClasses.datePicker, ...inputStyles } } },\n actionBar: { actions: ['today', 'cancel', 'accept'] }\n }}\n onChange={onChange}\n ref={innerRef}\n {...rest}\n />\n {error && (\n <Typography variant=\"caption\" sx={sharedClasses.errorMessage}>\n {error}\n </Typography>\n )}\n </LocalizationProvider>\n );\n}\n\nexport function UncontrolledSingleDatePicker({\n defaultValue,\n handleDateChange,\n maxDate,\n minDate,\n inputStyles,\n disabled,\n innerRef,\n ...rest\n}: IUncontrolledSingleDatePickerProps) {\n const [date, setDate] = useState<Moment | null>(\n moment(defaultValue).isValid() ? moment(defaultValue) : null\n );\n\n return (\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <DesktopDatePicker\n ref={innerRef}\n format=\"DD/MM/YYYY\"\n value={date}\n disabled={disabled ? disabled : false}\n maxDate={maxDate}\n minDate={minDate}\n slotProps={{\n popper: {\n sx: sharedClasses.calendar,\n placement: 'bottom-end',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [28, 15]\n }\n }\n ]\n },\n textField: { InputProps: { sx: { ...inputStyles, ...inputStyles } } }\n }}\n onChange={(date) => {\n setDate(date);\n handleDateChange(date);\n }}\n {...rest}\n />\n </LocalizationProvider>\n );\n}\n\nexport function ControlledTimePicker({\n value,\n onChange,\n label,\n minutesInterval = 1,\n ...rest\n}: IControlledTimePicker) {\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n {label && (\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n {label}\n </InputLabel>\n )}\n <TimePicker\n value={dayjs(value)}\n slotProps={{\n popper: { sx: { ...sharedClasses.calendar } }\n }}\n onChange={onChange}\n timeSteps={{ minutes: minutesInterval }}\n sx={sharedClasses.materialTimePicker}\n {...rest}\n />\n </LocalizationProvider>\n );\n}\n\nexport function ControlledStaticDatePicker({\n value,\n onChange,\n sx,\n ...rest\n}: IControlledStaticTimePicker) {\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <StaticDatePicker\n slotProps={{\n calendarHeader: {\n sx: sharedClasses.calendarHeader\n }\n }}\n timezone={userTimeZone}\n value={dayjs(value)}\n onChange={onChange}\n {...rest}\n />\n </LocalizationProvider>\n );\n}\n","import React, { useState, Dispatch, SetStateAction } from 'react';\nimport {\n Stack,\n Box,\n Autocomplete,\n TextField,\n Collapse,\n Button,\n CircularProgress\n} from '@mui/material';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../Application/API';\nimport { ApplicationAction } from '../../Application/types';\nimport { sharedClasses } from './sharedClasses';\nimport { classes } from '../../Job/Applications/styles';\nimport { styles } from '../../Application/Modals/styles';\nimport { IError } from '../../SmartForms/types';\nimport { ISmsTemplate } from '../../Job/Applications/Modals/SMSCandidates';\nimport { StyledSnackbarProps, SnackbarState } from './StyledSnackbar';\nimport { MultilineFormTextField, FormTextField } from './FormTextField';\n\nconst SmsTemplateComponent = ({\n smsTemplatePermissions,\n smsMessage,\n setSmsMessage,\n smsTemplate,\n setSmsTemplate,\n setSnackbar,\n dispatch,\n dropdownLabel,\n smsMessageError,\n placeholders,\n multipleSms\n}: {\n smsTemplatePermissions: boolean;\n smsMessage: string;\n setSmsMessage: Dispatch<SetStateAction<string>>;\n smsTemplate: ISmsTemplate | null;\n setSmsTemplate: Dispatch<SetStateAction<ISmsTemplate | null>>;\n setSnackbar?: StyledSnackbarProps['setSnackbarState'];\n dispatch?: Dispatch<ApplicationAction>;\n dropdownLabel?: string;\n smsMessageError?: string;\n placeholders?: string[];\n multipleSms?: boolean;\n}) => {\n const [smsTemplateName, setSmsTemplateName] = useState<string>('');\n const [smsTemplateError, setSmsTemplateError] = useState<string>('');\n const queryClient = useQueryClient();\n\n const notify = (message: string, state: SnackbarState) => {\n if (setSnackbar) {\n setSnackbar({ message, state });\n }\n\n if (dispatch) {\n dispatch({ type: 'SET_SNACKBAR', payload: { message, state } });\n }\n };\n\n const { data: smsTemplates, isFetching: fetchingSmsTemplates } = useQuery({\n queryKey: ['sms templates'],\n queryFn: async () => {\n const { res } = await Api.getSmsTemplates();\n return res.sms_templates;\n },\n onError: (error: IError) => notify(error.errors.join(', '), 'error'),\n initialData: []\n });\n\n const { mutate: saveTemplate, isLoading: savingTemplate } = useMutation({\n mutationFn: async () => {\n const { res } = await Api.saveSmsTemplate(smsTemplateName, smsMessage);\n return res;\n },\n onError: (error: IError) => notify(error.errors.join(', '), 'error'),\n onSuccess: (res) => {\n queryClient.setQueryData(['sms templates'], [...smsTemplates, res]);\n setSmsTemplate(res);\n setSmsTemplateName('');\n notify('Template saved', 'success');\n }\n });\n\n const handleSaveTemplate = () => {\n if (smsTemplates?.find((template: ISmsTemplate) => template.title === smsTemplateName)) {\n setSmsTemplateError('Template name already exists');\n return;\n }\n saveTemplate();\n };\n\n return (\n <Stack sx={{ rowGap: 3, paddingTop: 4 }}>\n <Autocomplete\n disablePortal\n id=\"sms-template-select\"\n options={smsTemplates}\n getOptionLabel={(option) => option.title || ''}\n value={smsTemplate}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%' }}\n loading={fetchingSmsTemplates}\n loadingText=\"Loading SMS templates...\"\n ListboxProps={{ style: classes.addToEventListboxProps }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={dropdownLabel || 'Choose SMS template'}\n InputLabelProps={{ shrink: true }}\n sx={{ '& .MuiInputBase-root': { margin: 'unset', marginTop: 1 } }}\n />\n )}\n onChange={(_event, value) => {\n if (value) {\n setSmsMessage(value.body);\n } else {\n setSmsMessage('');\n }\n setSmsTemplate(value);\n }}\n />\n <Stack sx={{ width: '100%' }}>\n <MultilineFormTextField\n label=\"Content\"\n value={smsMessage}\n onChange={(e) => setSmsMessage(e.target.value)}\n maxLength={multipleSms ? undefined : 160}\n required\n />\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', columnGap: 2 }}>\n <Stack>\n {placeholders && (\n <Stack\n sx={{ color: '#838383', fontSize: '11px', lineBreak: 'anywhere', paddingLeft: 0.5 }}\n >\n Available placeholders are: {placeholders.map((p) => `{${p}}`).join(', ')}\n </Stack>\n )}\n <Stack sx={styles.errorMessage}>{smsMessageError}</Stack>\n </Stack>\n <Stack sx={classes.addToEventCharacterCount}>\n {multipleSms\n ? `${smsMessage.length} characters (${Math.ceil(smsMessage.length / 160)} messages)`\n : `${smsMessage.length} / 160`}\n </Stack>\n </Stack>\n </Stack>\n <Collapse\n in={smsTemplatePermissions && !!smsMessage.trim() && smsMessage !== smsTemplate?.body}\n >\n <Stack sx={{ flexDirection: 'row', alignItems: 'baseline', columnGap: 5 }}>\n <Stack>\n <FormTextField\n id=\"new-sms-template-title\"\n label=\"Template title\"\n value={smsTemplateName}\n styles={{\n width: '290px',\n '& .MuiInputBase-input': { margin: 'unset', marginTop: 1 }\n }}\n onChange={(e) => {\n setSmsTemplateName(e.target.value);\n if (smsTemplateError) setSmsTemplateError('');\n }}\n />\n {smsTemplateError && (\n <Box sx={{ ...classes.saveSMSTemplateError, position: 'inherit' }}>\n {smsTemplateError}\n </Box>\n )}\n </Stack>\n <Box sx={{ transform: 'translateY(-1.5px)' }}>\n <Button\n id=\"save-sms-template\"\n type=\"submit\"\n sx={classes.saveSMSTemplateButton}\n onClick={handleSaveTemplate}\n >\n {savingTemplate ? <CircularProgress size={20} color=\"inherit\" /> : 'Save template'}\n </Button>\n </Box>\n </Stack>\n </Collapse>\n </Stack>\n );\n};\n\nexport default SmsTemplateComponent;\n","import React, {\n Dispatch,\n memo,\n SetStateAction,\n useCallback,\n useEffect,\n useRef,\n useState\n} from 'react';\nimport { Snackbar, Button, Box, Slide, SlideProps } from '@mui/material';\nimport {\n Cancel as CancelIcon,\n CheckCircle as CheckCircleIcon,\n Warning as WarningIcon\n} from '@mui/icons-material';\nimport { sharedClasses } from './sharedClasses';\nimport { Portal } from '@mui/base';\nimport { theme } from '../../../../components/ThemeContext/ThemeObject';\n\nexport type SnackbarState = 'success' | 'warning' | 'error';\n\nexport interface ISnackbarInput {\n message: string;\n state: SnackbarState;\n}\n\nexport interface StyledSnackbarProps {\n message: string;\n state: SnackbarState;\n setSnackbarState:\n | Dispatch<SetStateAction<ISnackbarInput>>\n | (({ message, state }: ISnackbarInput) => void);\n}\n\nfunction TransitionDown(props: SlideProps) {\n return <Slide direction=\"down\" {...props} />;\n}\n\nfunction StyledSnackbar({ message, state, setSnackbarState }: StyledSnackbarProps) {\n const timeout = useRef<ReturnType<typeof setTimeout>>();\n const [isVisible, setIsVisible] = useState<boolean>(false);\n\n const clearSnack = useCallback(() => {\n setIsVisible(false);\n setSnackbarState({ message: '', state: 'success' });\n }, [setSnackbarState]);\n\n const handleClear = () => {\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n clearSnack();\n };\n\n useEffect(() => {\n if (message) {\n setIsVisible(true);\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n timeout.current = setTimeout(clearSnack, 1000);\n }\n }, [clearSnack, message, setSnackbarState, state]);\n\n if (!message) return null;\n\n return (\n <Portal>\n <Snackbar\n open={isVisible}\n anchorOrigin={{ vertical: 'top', horizontal: 'center' }}\n onClose={handleClear}\n message={message}\n TransitionComponent={TransitionDown}\n ClickAwayListenerProps={{ mouseEvent: false, touchEvent: false }}\n >\n <Box sx={getSnackbarStyle(state)}>\n <Box sx={sharedClasses.snackbarMessageIconContainer}>\n {getSnackbarIcon(state)}\n <Box sx={sharedClasses.snackbarMessage}>{message}</Box>\n </Box>\n <Button sx={sharedClasses.snackbarButton} onClick={handleClear}>\n DISMISS\n </Button>\n </Box>\n </Snackbar>\n </Portal>\n );\n}\n\nfunction getSnackbarIcon(state: SnackbarState) {\n switch (state) {\n case 'success':\n return <CheckCircleIcon style={{ color: '#00C853', fontSize: '28px' }} />;\n case 'warning':\n return <WarningIcon style={{ color: theme.palette.secondary.yellow, fontSize: '28px' }} />;\n case 'error':\n return <CancelIcon style={{ color: theme.palette.error.main, fontSize: '28px' }} />;\n default:\n return <WarningIcon style={{ color: theme.palette.secondary.yellow, fontSize: '28px' }} />;\n }\n}\n\nfunction getSnackbarStyle(state: SnackbarState) {\n switch (state) {\n case 'success':\n return { ...sharedClasses.snackbar, ...sharedClasses.snackbarSuccess };\n case 'warning':\n return { ...sharedClasses.snackbar, ...sharedClasses.snackbarWarning };\n case 'error':\n return { ...sharedClasses.snackbar, ...sharedClasses.snackbarError };\n default:\n return { ...sharedClasses.snackbar, ...sharedClasses.snackbarWarning };\n }\n}\n\nexport default memo(StyledSnackbar);\n","import React, { FC, useState } from 'react';\nimport {\n Box,\n Chip,\n Paper,\n Stack,\n Tooltip,\n tooltipClasses,\n TooltipProps,\n Typography\n} from '@mui/material';\nimport { styled } from '@mui/system';\nimport { styles } from './styles';\n\nconst MAX_CHARACTER = 11;\n\ninterface StyledTagList {\n tags: string[];\n customHeight?: string;\n}\n\nconst StyledTooltip = styled(({ className, ...props }: TooltipProps) => (\n <Tooltip {...props} classes={{ popper: className }} />\n))(() => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: '#ffff',\n boxShadow: 4,\n margin: 0,\n fontSize: '13px'\n }\n}));\n\nexport const TagList: FC<StyledTagList> = ({ tags, customHeight }) => {\n const firstElement = tags[0];\n const [isMouseEnter, setIsMounterEnter] = useState(false);\n\n const handleMouseEnter = (): void => {\n const hideTooltip = tags.length <= 1 && firstElement.length <= MAX_CHARACTER;\n if (hideTooltip) return;\n setIsMounterEnter(true);\n };\n\n const handleMouseLeave = (): void => setIsMounterEnter(false);\n\n return (\n <StyledTooltip\n placement=\"bottom-start\"\n title={\n <Paper sx={{ display: 'flex', flexDirection: 'column', padding: '10px' }} elevation={2}>\n {tags.map((chip, index) => (\n <Chip key={index} label={chip} style={{ margin: '4px 0', ...styles.label }} />\n ))}\n </Paper>\n }\n open={isMouseEnter}\n >\n <Stack\n direction=\"row\"\n alignItems=\"center\"\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n sx={styles.chipContainer}\n >\n <Chip\n label={\n firstElement.length > MAX_CHARACTER\n ? firstElement.slice(0, MAX_CHARACTER) + '…'\n : firstElement\n }\n style={{ marginRight: '5px', zIndex: 1, maxWidth: '132px', ...styles.label }}\n />\n {tags.length > 1 && (\n <Box sx={styles.tagContent}>\n <Box sx={{ ...styles.styledChip, ...(customHeight && { height: customHeight }) }}></Box>\n <Typography sx={{ ...styles.label, ...styles.styledChipLabel }}>\n {' '}\n {`+${tags.length - 1}`}\n </Typography>\n </Box>\n )}\n </Stack>\n </StyledTooltip>\n );\n};\n","import React from 'react';\nimport { Editor } from 'react-draft-wysiwyg';\n\ninterface TextEditorProps {\n editorState: EditorState;\n setAnswers: React.Dispatch<React.SetStateAction<any>>;\n answers: any;\n activeError: string;\n requiredRef: string;\n classes: any;\n}\n\nconst TextEditor: React.FC<TextEditorProps> = ({\n editorState,\n setAnswers,\n answers,\n activeError,\n requiredRef,\n classes\n}) => {\n return (\n <Editor\n editorState={editorState}\n wrapperClassName={`${classes.textEditor} ${activeError === requiredRef ? classes.errorDescription : ''}`}\n toolbarClassName={classes.textEditorToolbar}\n editorClassName={classes.textEditorBody}\n onEditorStateChange={(e) => setAnswers({ ...answers, description: e })}\n toolbar={{\n options: ['inline', 'list'],\n inline: {\n options: ['bold', 'italic'],\n bold: { className: 'bordered-option-classname' },\n italic: { className: 'bordered-option-classname' }\n },\n list: { options: ['unordered'] }\n }}\n />\n );\n};\n\nexport default TextEditor;\n","import * as React from 'react';\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport Autocomplete, { autocompleteClasses } from '@mui/material/Autocomplete';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport Popper from '@mui/material/Popper';\nimport { useTheme, styled } from '@mui/material/styles';\nimport { VariableSizeList, ListChildComponentProps } from 'react-window';\nimport Typography from '@mui/material/Typography';\nimport Tooltip from '@mui/material/Tooltip';\nimport { IStyle } from '../../../ThemeContext/ThemeObject';\n\nexport interface VirtualizeProps {\n passOptions: string[];\n value?: string | null;\n label?: string;\n error?: boolean;\n loading?: boolean;\n hasIdAndRef?: boolean;\n loadingText?: string;\n setValue: ((value: string) => void) | ((event: string, value: string) => void);\n passedStyles: IStyle;\n errorStyles?: IStyle;\n freeSolo?: boolean;\n}\n\nfunction renderRow(props: ListChildComponentProps) {\n const [displayTooltip, setDisplayTooltip] = React.useState(false);\n const { data, index, style } = props;\n const dataSet = data[index];\n const inlineStyle = {\n ...style,\n top: (style.top as number) + 8\n };\n\n function refCallback(ref: HTMLElement) {\n if (!ref) return;\n if (ref.clientWidth > ref.parentElement?.clientWidth) {\n setDisplayTooltip(true);\n }\n }\n\n if (dataSet.hasOwnProperty('group')) {\n return (\n <ListSubheader key={dataSet.key} component=\"div\" style={inlineStyle}>\n <Tooltip\n title={displayTooltip ? dataSet.group : ''}\n enterDelay={600}\n placement=\"bottom-start\"\n >\n <div ref={refCallback}>{dataSet.group}</div>\n </Tooltip>\n </ListSubheader>\n );\n }\n\n return (\n <Typography\n component=\"li\"\n {...dataSet[0]}\n data-testid={`option-${dataSet[1]}`}\n noWrap\n style={inlineStyle}\n >\n <Tooltip title={displayTooltip ? dataSet[1] : ''} enterDelay={600} placement=\"bottom-start\">\n <div ref={refCallback}>{dataSet[1]}</div>\n </Tooltip>\n </Typography>\n );\n}\n\nconst OuterElementContext = React.createContext({});\n\nconst OuterElementType = React.forwardRef<HTMLDivElement>((props, ref) => {\n const outerProps = React.useContext(OuterElementContext);\n return <div ref={ref} {...props} {...outerProps} />;\n});\n\nfunction useResetCache(data: any) {\n const ref = React.useRef<VariableSizeList>(null);\n React.useEffect(() => {\n if (ref.current != null) {\n ref.current.resetAfterIndex(0, true);\n }\n }, [data]);\n return ref;\n}\n\n// Adapter for react-window\nconst ListboxComponent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLElement>>(\n function ListboxComponent(props, ref) {\n const { children, ...other } = props;\n const itemData: React.ReactChild[] = [];\n (children as React.ReactChild[]).forEach(\n (item: React.ReactChild & { children?: React.ReactChild[] }) => {\n itemData.push(item);\n itemData.push(...(item.children || []));\n }\n );\n\n const theme = useTheme();\n const smUp = useMediaQuery(theme.breakpoints.up('sm'), {\n noSsr: true\n });\n const itemCount = itemData.length;\n const itemSize = smUp ? 36 : 48;\n\n const getChildSize = (child: React.ReactChild) => {\n if (child.hasOwnProperty('group')) {\n return 48;\n }\n\n return itemSize;\n };\n\n const getHeight = () => {\n if (itemCount > 8) {\n return 8 * itemSize;\n }\n return itemData.map(getChildSize).reduce((a, b) => a + b, 0);\n };\n\n const gridRef = useResetCache(itemCount);\n\n return (\n <div ref={ref}>\n <OuterElementContext.Provider value={other}>\n <VariableSizeList\n itemData={itemData}\n height={getHeight() + 2 * 8}\n width=\"100%\"\n ref={gridRef}\n outerElementType={OuterElementType}\n innerElementType=\"ul\"\n itemSize={(index) => getChildSize(itemData[index])}\n overscanCount={5}\n itemCount={itemCount}\n >\n {renderRow}\n </VariableSizeList>\n </OuterElementContext.Provider>\n </div>\n );\n }\n);\n\nconst StyledPopper = styled(Popper)({\n [`& .${autocompleteClasses.listbox}`]: {\n boxSizing: 'border-box',\n '& ul': {\n padding: 0,\n margin: 0\n }\n }\n});\n\nexport function Virtualize({\n passOptions,\n value,\n setValue,\n passedStyles,\n error,\n errorStyles,\n hasIdAndRef,\n loading,\n loadingText,\n label,\n freeSolo\n}: VirtualizeProps) {\n return (\n <Box sx={{ position: 'relative' }}>\n <Autocomplete\n id=\"virtualize-demo\"\n data-testid=\"virtualize-demo\"\n sx={passedStyles}\n disableListWrap\n disablePortal\n value={value}\n PopperComponent={StyledPopper}\n ListboxComponent={ListboxComponent}\n options={passOptions}\n loading={loading}\n loadingText={loadingText}\n freeSolo={freeSolo}\n forcePopupIcon={freeSolo}\n onChange={(event, value) =>\n hasIdAndRef ? setValue(event?.target?.dataset?.optionIndex, value) : setValue(value)\n }\n renderInput={(params) => (\n <TextField {...params} label={label} InputLabelProps={{ shrink: true }} />\n )}\n renderOption={(props, option) => [props, option] as React.ReactNode}\n />\n {error && <Box sx={errorStyles}>This feild is required</Box>}\n </Box>\n );\n}\n","import * as React from 'react';\nimport { Box, TextField, Popper, Typography, Tooltip, CircularProgress } from '@mui/material';\nimport Autocomplete, { autocompleteClasses } from '@mui/material/Autocomplete';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport ListSubheader from '@mui/material/ListSubheader';\nimport { useTheme, styled } from '@mui/material/styles';\nimport { VariableSizeList, ListChildComponentProps } from 'react-window';\nimport { SxProps } from '@mui/material/styles';\n\nexport interface VirtualizedGroupedAutocompleteProps {\n value: string | null;\n options: string[];\n onChange: (value: VirtualizedGroupedAutocompleteProps['value']) => void;\n styles?: SxProps;\n label?: string;\n loading?: boolean;\n loadingText?: string;\n error?: string;\n errorStyles?: React.CSSProperties;\n required?: boolean;\n innerRef?: RefObject<HTMLDivElement>;\n}\n\n// To use this component, you must pass in an array of strings\n// The strings must be in the format \"Option name@-*@Group name\"\n// This component uses the @-*@ as a delimiter to separate the option name from the group name\n// Below is a helper function to format the options array\ntype TemplateDetails = {\n id: number;\n name: string;\n};\n\ntype GroupedTemplates = Array<[string, TemplateDetails[]]>;\n\nexport const formatOptions = (options: GroupedTemplates): string[] => {\n const formattedTemplates: string[] = [];\n options.forEach((group: [string, TemplateDetails[]]) => {\n const groupName = group[0];\n const templates = group[1];\n templates.forEach((template: TemplateDetails) => {\n formattedTemplates.push(`${template.id} - ${template.name}@-*@${groupName}`);\n });\n });\n return formattedTemplates;\n};\n\nconst LISTBOX_PADDING = 8; // px\n\nfunction RenderRow(props: ListChildComponentProps) {\n const [displayTooltip, setDisplayTooltip] = React.useState(false);\n const { data, index, style } = props;\n const dataSet = data[index];\n const inlineStyle = {\n ...style,\n top: (style.top as number) + LISTBOX_PADDING\n };\n\n function refCallback(ref: HTMLElement) {\n if (!ref) return;\n if (ref.clientWidth > ref.parentElement?.clientWidth) {\n setDisplayTooltip(true);\n }\n }\n\n if (dataSet.hasOwnProperty('group')) {\n return (\n <ListSubheader key={dataSet.key} component=\"div\" style={inlineStyle}>\n <Tooltip\n title={displayTooltip ? dataSet.group : ''}\n enterDelay={600}\n placement=\"bottom-start\"\n >\n <div ref={refCallback}>{dataSet.group}</div>\n </Tooltip>\n </ListSubheader>\n );\n }\n\n return (\n <Typography component=\"li\" {...dataSet[0]} noWrap style={inlineStyle}>\n <Tooltip title={displayTooltip ? dataSet[1] : ''} enterDelay={600} placement=\"bottom-start\">\n <div ref={refCallback}>{dataSet[1]}</div>\n </Tooltip>\n </Typography>\n );\n}\n\nconst OuterElementContext = React.createContext({});\n\nconst OuterElementType = React.forwardRef<HTMLDivElement>((props, ref) => {\n const outerProps = React.useContext(OuterElementContext);\n return <div ref={ref} {...props} {...outerProps} />;\n});\n\nfunction useResetCache(data: any) {\n const ref = React.useRef<VariableSizeList>(null);\n React.useEffect(() => {\n if (ref.current != null) {\n ref.current.resetAfterIndex(0, true);\n }\n }, [data]);\n return ref;\n}\n\n// Adapter for react-window\nconst ListboxComponent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLElement>>(\n function ListboxComponent(props, ref) {\n const { children, ...other } = props;\n const itemData: React.ReactChild[] = [];\n (children as React.ReactChild[]).forEach(\n (item: React.ReactChild & { children?: React.ReactChild[] }) => {\n itemData.push(item);\n itemData.push(...(item.children || []));\n }\n );\n\n const theme = useTheme();\n const smUp = useMediaQuery(theme.breakpoints.up('sm'), {\n noSsr: true\n });\n const itemCount = itemData.length;\n const itemSize = smUp ? 36 : 48;\n\n const getChildSize = (child: React.ReactChild) => {\n if (child.hasOwnProperty('group')) {\n return 48;\n }\n\n return itemSize;\n };\n\n const getHeight = () => {\n if (itemCount > 8) {\n return 8 * itemSize;\n }\n return itemData.map(getChildSize).reduce((a, b) => a + b, 0);\n };\n\n const gridRef = useResetCache(itemCount);\n\n return (\n <div ref={ref}>\n <OuterElementContext.Provider value={other}>\n <VariableSizeList\n itemData={itemData}\n height={getHeight() + 2 * LISTBOX_PADDING}\n width=\"100%\"\n ref={gridRef}\n outerElementType={OuterElementType}\n innerElementType=\"ul\"\n itemSize={(index) => getChildSize(itemData[index])}\n overscanCount={5}\n itemCount={itemCount}\n >\n {RenderRow}\n </VariableSizeList>\n </OuterElementContext.Provider>\n </div>\n );\n }\n);\n\nconst StyledPopper = styled(Popper)({\n [`& .${autocompleteClasses.listbox}`]: {\n boxSizing: 'border-box',\n '& ul': {\n padding: 0,\n margin: 0\n }\n }\n});\n\nexport default function VirtualizeGrouped({\n options,\n value,\n onChange,\n styles,\n error,\n errorStyles,\n loading,\n loadingText,\n label,\n required = false,\n innerRef\n}: VirtualizedGroupedAutocompleteProps) {\n return (\n <Box sx={{ position: 'relative' }}>\n <Autocomplete\n id=\"virtualize-grouped\"\n sx={styles}\n value={value}\n onChange={(event, value) => onChange(value)}\n loading={loading}\n loadingText={loadingText}\n disableListWrap\n PopperComponent={StyledPopper}\n ListboxComponent={ListboxComponent}\n options={options}\n groupBy={(option) => option.split('@-*@')[1]}\n renderInput={(params) => {\n if (value) {\n params.inputProps.value = value.split('@-*@')[0];\n }\n return (\n <TextField\n {...params}\n label={label}\n InputLabelProps={{ shrink: true }}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <React.Fragment>\n {loading ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : (\n params.InputProps.endAdornment\n )}\n </React.Fragment>\n )\n }}\n required={required}\n ref={innerRef}\n />\n );\n }}\n renderOption={(props, option) => [props, option.split('@-*@')[0]] as React.ReactNode}\n renderGroup={(params) => params as unknown as React.ReactNode}\n />\n {error && <Box sx={errorStyles}>{error}</Box>}\n </Box>\n );\n}\n","import React from 'react';\nimport { Box, Button, CircularProgress } from '@mui/material';\nimport { classes } from './styles';\n\nconst ModalFooterButtons = ({\n primaryButtonText,\n primaryButtonID,\n primaryButtonCallback,\n primaryButtonMinWidth,\n primaryButtonDisabled,\n secondaryButtonText,\n secondaryButtonID,\n secondaryButtonCallback,\n secondaryButtonMinWidth,\n isLoading\n}: {\n primaryButtonText?: string | JSX.Element;\n primaryButtonID?: string;\n primaryButtonCallback?: () => void;\n primaryButtonMinWidth?: string;\n primaryButtonDisabled?: boolean;\n secondaryButtonText?: string | JSX.Element;\n secondaryButtonID?: string;\n secondaryButtonCallback?: () => void;\n secondaryButtonMinWidth?: string;\n isLoading?: boolean;\n}) => {\n return (\n <Box sx={classes.modalFooter}>\n {secondaryButtonText && (\n <Button\n id={secondaryButtonID || 'secondary-modal-button'}\n sx={{\n ...classes.modalButtonBase,\n ...classes.modalSecondaryButton,\n ...(secondaryButtonMinWidth && { minWidth: secondaryButtonMinWidth })\n }}\n onClick={secondaryButtonCallback && secondaryButtonCallback}\n >\n {secondaryButtonText}\n </Button>\n )}\n {primaryButtonText && (\n <Button\n id={primaryButtonID || 'primary-modal-button'}\n sx={{\n ...classes.modalButtonBase,\n ...(primaryButtonMinWidth && { minWidth: primaryButtonMinWidth }),\n '&.Mui-disabled': { background: '#E5E5E5', color: '#939393' }\n }}\n onClick={primaryButtonCallback && primaryButtonCallback}\n disabled={primaryButtonDisabled}\n >\n {isLoading ? <CircularProgress size={20} color=\"inherit\" /> : primaryButtonText}\n </Button>\n )}\n </Box>\n );\n};\n\nexport default ModalFooterButtons;\n","import React from 'react';\nimport { Box, Modal } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from './styles';\nimport { sharedClasses } from '../../../NewUI/Components/CustomUIElements/sharedClasses';\n\nconst StyledModal = ({\n isOpen,\n handleClose,\n disableEnforceFocus = false,\n styleOverrides,\n modalTitle,\n label,\n children,\n subHeaderStyling = true,\n closeIconId\n}: {\n isOpen: boolean;\n handleClose: () => void;\n styleOverrides?: Record<string, string>;\n modalTitle?: string;\n label: string;\n children: React.ReactNode;\n subHeaderStyling?: boolean;\n closeIconId?: string;\n disableEnforceFocus?: boolean;\n}) => {\n return (\n <Modal open={isOpen} onClose={handleClose} aria-labelledby={`${label}-modal`} disableEnforceFocus={disableEnforceFocus} >\n <Box sx={{ ...classes.modal, ...(styleOverrides && styleOverrides) }}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} id={closeIconId} />\n {modalTitle && (\n <Box sx={subHeaderStyling ? classes.modalHeader : sharedClasses.sectionHeader}>\n {modalTitle}\n </Box>\n )}\n {children}\n </Box>\n </Modal>\n );\n};\n\nexport default StyledModal;\n","import React, { ChangeEvent, Dispatch, MouseEvent, useState } from 'react';\nimport {\n Box,\n IconButton,\n FormControl,\n FormGroup,\n FormControlLabel,\n Switch,\n Stack,\n Tooltip,\n Popper\n} from '@mui/material';\nimport ViewColumnIcon from '@mui/icons-material/ViewColumn';\nimport { classes } from './styles';\nimport { ClickAwayListener } from '@mui/base/ClickAwayListener';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors,\n DragEndEvent\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableField from './SortableField';\nimport {\n GenericTableData,\n TSortableColumn,\n TTableState,\n TableColumnAction,\n TableDensity\n} from '../types';\nimport { handleAPIRequest } from '../../Utilities/handleAPIRequest';\nimport { clearPreferenceCache } from '../../../helpers/uiPreferencesHelpers';\n\ninterface IColumnSettings {\n dispatch: Dispatch<TableColumnAction<TSortableColumn[]>>;\n tableState: TTableState<GenericTableData, TSortableColumn[]>;\n label: string;\n userPreferenceSource?: string;\n}\n\nconst DENSITIES = ['Default', 'Compact', 'Ultra Compact'];\n\nexport default function ColumnSettings({\n dispatch,\n tableState,\n label,\n userPreferenceSource\n}: IColumnSettings) {\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n const [isOpen, setIsOpen] = useState(false);\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n const handleIconClick = (event: MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n setIsOpen((prev) => !prev);\n };\n\n const sendLocalUserPreferences = (newColumns: TSortableColumn[]) => {\n if (userPreferenceSource) {\n handleAPIRequest({\n url: `/api/v4/ui_preferences`,\n method: 'POST',\n body: {\n ui_preference: {\n sortable_columns: newColumns,\n source: userPreferenceSource\n }\n }\n });\n clearPreferenceCache(userPreferenceSource);\n }\n };\n\n const handleFieldSwitchChange = (event: ChangeEvent<HTMLInputElement>) => {\n const newSortableColumns = tableState.columns.map((field) => {\n if (field.id === event.target.name) {\n return { ...field, enabled: event.target.checked };\n } else {\n return field;\n }\n });\n dispatch({ type: 'SET_COLUMNS', payload: newSortableColumns });\n sendLocalUserPreferences(newSortableColumns);\n };\n\n const handleDensitySwitchChange = (newDensity: TableDensity) => {\n dispatch({ type: 'SET_DENSITY', payload: newDensity });\n handleAPIRequest({\n url: '/api/v4/ui_preferences',\n method: 'POST',\n body: {\n ui_preference: {\n columns: {\n density: newDensity\n },\n source: 'universal'\n }\n }\n });\n clearPreferenceCache('universal');\n };\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n\n if (active.id !== over?.id) {\n const oldIndex = tableState.columns.map((c) => c.id).indexOf(String(active.id));\n const newIndex = tableState.columns.map((c) => c.id).indexOf(String(over?.id));\n const newSortableColumns = arrayMove(tableState.columns, oldIndex, newIndex);\n\n dispatch({ type: 'SET_COLUMNS', payload: newSortableColumns });\n sendLocalUserPreferences(newSortableColumns);\n }\n }\n\n return (\n <ClickAwayListener onClickAway={() => setIsOpen(false)}>\n <Box>\n <Tooltip title=\"Table settings\" placement=\"top\" arrow>\n <IconButton\n id={`field-dropdown-${label}-button`}\n sx={isOpen ? { ...classes.iconButton, ...classes.iconButtonOpen } : classes.iconButton}\n onClick={handleIconClick}\n >\n <ViewColumnIcon />\n </IconButton>\n </Tooltip>\n <Popper\n id=\"column-settings-popover\"\n sx={classes.popover}\n open={isOpen}\n anchorEl={anchorEl}\n placement=\"bottom-end\"\n >\n <Box sx={classes.popoverContent}>\n <FormControl component=\"fieldset\" variant=\"standard\">\n <Stack sx={classes.tableSettingsHeader}>Column</Stack>\n <FormGroup id=\"column-settings-switches\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext\n items={tableState.columns}\n strategy={verticalListSortingStrategy}\n >\n {tableState.columns.map(\n (field, index) =>\n field.canToggle && (\n <SortableField\n key={index}\n field={field}\n handleFieldSwitchChange={handleFieldSwitchChange}\n />\n )\n )}\n </SortableContext>\n </DndContext>\n </FormGroup>\n </FormControl>\n <Stack sx={{ ...classes.tableSettingsHeader, paddingTop: 2 }}>Density</Stack>\n <FormControl>\n <FormGroup>\n {DENSITIES.map((density, index) => {\n const isSwitched = density === tableState.density;\n return (\n <FormControlLabel\n sx={\n !isSwitched\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n key={index}\n control={\n <Switch\n sx={isSwitched ? classes.switchActive : classes.switch}\n checked={isSwitched}\n onChange={() => handleDensitySwitchChange(density as TableDensity)}\n />\n }\n label={density}\n labelPlacement=\"start\"\n />\n );\n })}\n </FormGroup>\n </FormControl>\n </Box>\n </Popper>\n </Box>\n </ClickAwayListener>\n );\n}\n","import React, { Dispatch, ReactNode, useRef, useState } from 'react';\nimport { Box, Popper, IconButton, Badge, Button, Tooltip, ClickAwayListener } from '@mui/material';\nimport { classes } from './styles';\nimport SortIcon from '@material-ui/icons/Sort';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport { TableFilter, TableFilterAction } from '../types';\n\nexport default function Filters({\n dispatch,\n numberOfFilters,\n label,\n children\n}: {\n dispatch: Dispatch<TableFilterAction<TableFilter>>;\n numberOfFilters: number;\n label: string;\n children: ReactNode;\n}) {\n const [isOpen, setIsOpen] = useState(false);\n const anchorEl = useRef<HTMLButtonElement>(null);\n\n const handleDropdownOpen = () => {\n setIsOpen((prev) => !prev);\n };\n\n const handleApplyFilters = () => {\n dispatch({ type: 'SET_FILTERS' });\n setIsOpen(false);\n };\n\n const handleResetFilters = () => {\n dispatch({ type: 'RESET_FILTERS' });\n };\n\n return (\n <ClickAwayListener onClickAway={() => setIsOpen(false)}>\n <Box>\n <Badge\n badgeContent={numberOfFilters}\n sx={{ '& .MuiBadge-badge': { backgroundColor: '#E37D7A', color: '#FFF' } }}\n >\n <Tooltip title=\"Filter\" placement=\"top\" arrow>\n <IconButton\n id={`filter-dropdown-${label}-button`}\n data-testid={`filter-dropdown-${label}-button`}\n sx={\n isOpen ? { ...classes.iconButton, ...classes.iconButtonOpen } : classes.iconButton\n }\n onClick={handleDropdownOpen}\n ref={anchorEl}\n >\n <SortIcon />\n </IconButton>\n </Tooltip>\n </Badge>\n <Popper\n id=\"column-settings-popover\"\n sx={classes.popover}\n open={isOpen}\n anchorEl={anchorEl.current}\n placement=\"bottom-end\"\n >\n <Box sx={classes.filterPopoverContent}>\n <Box sx={classes.scrollableFilters}>\n <Box sx={classes.filterPopoverHeader}>\n <Button\n id=\"reset-filters-button\"\n variant=\"contained\"\n endIcon={<CancelIcon />}\n sx={classes.clearButton}\n onClick={handleResetFilters}\n >\n Clear all\n </Button>\n <Button\n id=\"apply-filters-button\"\n variant=\"contained\"\n onClick={handleApplyFilters}\n sx={classes.applyButton}\n >\n Apply\n </Button>\n </Box>\n {children}\n </Box>\n </Box>\n </Popper>\n </Box>\n </ClickAwayListener>\n );\n}\n","import React from 'react';\nimport { Box, IconButton, FormControlLabel, Switch } from '@mui/material';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from './styles';\nimport { TSortableColumn } from '../types';\n\nconst SortableField = ({\n field,\n handleFieldSwitchChange\n}: {\n field: TSortableColumn;\n handleFieldSwitchChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) => {\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n useSortable({ id: field.id });\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition\n };\n\n return (\n <Box key={field.id} sx={classes.sortableField} style={style} ref={setNodeRef} {...attributes}>\n <IconButton ref={setActivatorNodeRef} {...listeners}>\n <DragIndicatorIcon sx={{ fontSize: 16 }} />\n </IconButton>\n <FormControlLabel\n sx={\n !field.enabled\n ? { ...classes.sortableSwitchLabels, ...classes.labelActive }\n : classes.sortableSwitchLabels\n }\n control={\n <Switch\n sx={field.enabled ? classes.switchActive : classes.switch}\n checked={field.enabled}\n onChange={handleFieldSwitchChange}\n name={field.id}\n />\n }\n label={field.label}\n labelPlacement=\"start\"\n />\n </Box>\n );\n};\n\nexport default SortableField;\n","import React from 'react';\nimport { IconButton, Tooltip } from '@mui/material';\nimport IosShareIcon from '@mui/icons-material/IosShare';\n\nimport { classes } from './Dropdowns/styles';\n\nconst ExportCsvButton = ({ isOpen, onClick }: { isOpen: boolean; onClick: () => void }) => {\n return (\n <Tooltip title=\"Export CSV\" placement=\"top\" arrow>\n <IconButton\n id={`export-csv-button`}\n sx={isOpen ? { ...classes.iconButton, ...classes.iconButtonOpen } : classes.iconButton}\n onClick={onClick}\n >\n <IosShareIcon />\n </IconButton>\n </Tooltip>\n );\n};\n\nexport default ExportCsvButton;\n","import React, { Dispatch, useRef, useState } from 'react';\nimport { Box } from '@mui/material';\nimport moment, { Moment } from 'moment';\nimport { sharedClasses } from '../../CustomUIElements/sharedClasses';\nimport DayPicker, { DateUtils } from 'react-day-picker';\nimport { DateField, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';\n\ntype DateRange = { from: Date | null; to: Date | null };\nexport type TempDateRange = { from: Moment | null; to: Moment | null };\n\nexport type DateRangeAction =\n | {\n type: 'SET_DATE_RANGE_TEMP_FILTER';\n payload: DateRange;\n }\n | {\n type: 'SET_DATE_FIELD_RANGE';\n payload: TempDateRange;\n };\n\nconst MIN_DATE = moment('01/01/1990', 'DD/MM/YYYY');\n\nconst DateRangeFilter = ({\n dispatch,\n dateRange,\n dateRangeTemp,\n label\n}: {\n dispatch: Dispatch<DateRangeAction>;\n dateRange: DateRange;\n dateRangeTemp: TempDateRange;\n label: string;\n}) => {\n const dateRangeInputsRefs = useRef<{\n from: HTMLInputElement | null;\n to: HTMLInputElement | null;\n }>({ from: null, to: null });\n\n // Changes the date range when a day is clicked on the calendar\n const handlePublishedDayClick = (day: Date) => {\n let range = DateUtils.addDayToRange(day, dateRange);\n if (range.from && range.to && range.from > range.to) range = { from: range.to, to: range.from };\n // Add the new range to the temp filter\n dispatch({ type: 'SET_DATE_RANGE_TEMP_FILTER', payload: range as DateRange });\n // Update the text input date fields\n dispatch({\n type: 'SET_DATE_FIELD_RANGE',\n payload: { from: moment(range.from), to: moment(range.to) }\n });\n };\n\n // Swaps the to/from dates and field focus if the from date is after the to date\n const handleDateOrder = (dateRange: { from: Date | null; to: Date | null }) => {\n if (moment(dateRange.from).isAfter(moment(dateRange.to))) {\n dispatch({\n type: 'SET_DATE_FIELD_RANGE',\n payload: { from: moment(dateRange.to), to: moment(dateRange.from) }\n });\n if (dateRangeInputsRefs.current.from === document.activeElement) {\n dateRangeInputsRefs.current.to?.focus();\n } else {\n dateRangeInputsRefs.current.from?.focus();\n }\n return { from: dateRange.to, to: dateRange.from };\n }\n return dateRange;\n };\n\n // Changes the date range when the date field is edited\n const handleDateFieldChange = (date: Moment | null, type: 'from' | 'to') => {\n if (type === 'from') {\n dispatch({\n type: 'SET_DATE_FIELD_RANGE',\n payload: { from: date, to: dateRangeTemp.to }\n });\n date?.isValid() &&\n date.isAfter(MIN_DATE) &&\n dispatch({\n type: 'SET_DATE_RANGE_TEMP_FILTER',\n payload: handleDateOrder({ from: date.toDate(), to: dateRangeTemp.to?.toDate() || null })\n });\n } else {\n dispatch({\n type: 'SET_DATE_FIELD_RANGE',\n payload: { from: dateRangeTemp.from, to: date }\n });\n date?.isValid() &&\n date.isAfter(MIN_DATE) &&\n dispatch({\n type: 'SET_DATE_RANGE_TEMP_FILTER',\n payload: handleDateOrder({\n from: dateRangeTemp.from?.toDate() || null,\n to: date.toDate()\n })\n });\n }\n };\n return (\n <Box\n sx={{\n ...sharedClasses.datePickerCalendar,\n ...(dateRange.from && dateRange.to === null ? sharedClasses.onlyStartDate : {})\n }}\n id={`${label}date-range-filter`}\n >\n <DayPicker\n onDayClick={handlePublishedDayClick}\n selectedDays={[dateRange.from || undefined, dateRange]}\n modifiers={{\n start: dateRange.from || undefined,\n end: dateRange.to || undefined,\n first: { daysOfWeek: [0] },\n last: { daysOfWeek: [6] }\n }}\n modifiersStyles={{\n first: {\n borderTopLeftRadius: '50%',\n borderBottomLeftRadius: '50%'\n },\n last: {\n borderTopRightRadius: '50%',\n borderBottomRightRadius: '50%'\n }\n }}\n />\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <Box sx={datefieldsContainerClass}>\n <DateField\n value={dateRangeTemp.from}\n onChange={(value) => handleDateFieldChange(value, 'from')}\n format=\"DD/MM/YYYY\"\n inputProps={{ sx: dateFieldClass }}\n minDate={MIN_DATE}\n inputRef={(ref) => (dateRangeInputsRefs.current.from = ref)}\n />\n <span>to</span>\n <DateField\n value={dateRangeTemp.to}\n onChange={(value) => handleDateFieldChange(value, 'to')}\n format=\"DD/MM/YYYY\"\n inputProps={{ sx: dateFieldClass }}\n minDate={MIN_DATE}\n inputRef={(ref) => (dateRangeInputsRefs.current.to = ref)}\n />\n </Box>\n </LocalizationProvider>\n </Box>\n );\n};\n\nconst dateFieldClass = {\n padding: '8px 0px 8px 0px',\n textAlign: 'center',\n fontSize: '14px',\n fontFamily: 'Source Sans Pro'\n};\n\nconst datefieldsContainerClass = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n columnGap: '8px',\n padding: '12px 2px 6px 2px',\n fontSize: '14px',\n fontWeight: 600,\n fontFamily: 'Source Sans Pro',\n '& span': {\n color: '#084D6D'\n }\n};\n\nexport default DateRangeFilter;\n","import { Box } from '@mui/material';\nimport React from 'react';\nimport MultiSelect, { IOptionType } from '../../CustomUIElements/MultiSelect';\n\nconst MultiSelectFilter = ({\n handleFilterChange,\n selectOptions,\n name,\n label,\n subLabel,\n value,\n freeInput = false,\n disabled = false,\n displayLabel = false\n}: {\n handleFilterChange: (name: string, value: IOptionType[]) => void;\n selectOptions: IOptionType[];\n name: string;\n label: string;\n subLabel?: string;\n value: IOptionType[];\n freeInput?: boolean;\n disabled?: boolean;\n displayLabel?: boolean;\n}) => {\n return (\n <Box sx={filterSelectGroupStyle} id={`${name}-filter`}>\n {label}\n {subLabel && <Box sx={filterSelectSubLabelStyle}>{subLabel}</Box>}\n <MultiSelect\n handleFilterChange={(name, value) => handleFilterChange(name, value as IOptionType[])}\n selectOptions={selectOptions}\n name={name}\n filters={value}\n freeInput={freeInput}\n disabled={disabled}\n displayLabel={displayLabel}\n />\n </Box>\n );\n};\n\nconst filterSelectGroupStyle = {\n fontFamily: 'Source Sans Pro',\n fontSize: '14px',\n fontWeight: 'bold',\n color: '#084D6D'\n};\n\nconst filterSelectSubLabelStyle = {\n fontSize: '12px',\n fontWeight: '400'\n};\n\nexport default MultiSelectFilter;\n","import { Box, CircularProgress, InputBase, Slider, styled } from '@mui/material';\nimport React, { useState } from 'react';\nimport { sharedClasses } from '../../CustomUIElements/sharedClasses';\nimport { handleAPIRequest } from '../../Utilities/handleAPIRequest';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { ISnackbarInput } from '../../CustomUIElements/StyledSnackbar';\n\nconst DEFAULT_RADIUS = 2;\nconst DEFAULT_MIN_RADIUS = 1;\nconst DEFAULT_MAX_RADIUS = 20;\nconst SEARCH_DELAY = 900;\n\nconst RadiusSearchFilter = ({\n setPostcodes,\n setSnackbarState\n}: {\n setPostcodes: (postcodes: string[]) => void;\n setSnackbarState: (snackbarState: ISnackbarInput) => void;\n}) => {\n const [inputPostcode, setInputPostcode] = useState('');\n const [inputRadius, setInputRadius] = useState(DEFAULT_RADIUS);\n const [isLoading, setIsLoading] = useState(false);\n\n const handleRadiusSearch = useDebouncedCallback((postcode, radius) => {\n if (!postcode && !inputPostcode) return;\n handleAPIRequest({\n method: 'POST',\n url: `/api/v4/searches/find_nearby_postcodes`,\n body: {\n postcode: postcode || inputPostcode,\n radius: radius || inputRadius\n },\n setLoaderState: setIsLoading,\n setSnackbarState,\n successMessage: { show: false },\n onSuccess: (response: { postal_codes: string[] }) => {\n setPostcodes(response.postal_codes);\n }\n });\n }, SEARCH_DELAY);\n\n return (\n <Box>\n <StyledInput\n value={inputPostcode}\n onChange={(event) => {\n if (isLoading) return;\n setInputPostcode(event.target.value);\n handleRadiusSearch(event.target.value, inputRadius);\n }}\n placeholder=\"Input a postcode\"\n endAdornment={\n isLoading && (\n <Box sx={adornmentContainer}>\n <CircularProgress size={18} />\n </Box>\n )\n }\n />\n <Box sx={sliderContainer} id=\"radius-search-filter\">\n Within\n <Box>\n <Slider\n sx={sharedClasses.ratingSlider}\n aria-label=\"Radius search slider\"\n value={inputRadius}\n onChange={(event, value) => {\n if (isLoading) return;\n setInputRadius(value as number);\n handleRadiusSearch(inputPostcode, value as number);\n }}\n valueLabelDisplay=\"on\"\n valueLabelFormat={(value: number) => `${value}km`}\n getAriaValueText={(value: number) => `${value}km`}\n min={DEFAULT_MIN_RADIUS}\n max={DEFAULT_MAX_RADIUS}\n />\n </Box>\n </Box>\n </Box>\n );\n};\n\nconst sliderContainer = {\n fontFamily: 'Source Sans Pro',\n fontSize: '10px',\n color: '#084D6D',\n padding: '6px 9px 0px 9px'\n};\n\nconst adornmentContainer = {\n height: '100%',\n display: 'flex',\n alignItems: 'center'\n};\n\nconst StyledInput = styled(InputBase)(() => ({\n width: '100%',\n height: '41px',\n border: '1px solid #DADEE0',\n backgroundColor: '#ffffff',\n borderRadius: '6px',\n padding: '6px 22px 6px 6px',\n display: 'flex',\n marginTop: '3px',\n '&:focus-within': {\n borderColor: '#77C2BE',\n boxShadow: '0 0 0 2px rgba(24, 144, 255, 0.2)'\n },\n '& .MuiInputBase-input': {\n fontFamily: 'Source Sans Pro',\n fontSize: '12px',\n color: '#000000',\n paddingLeft: '6px',\n height: '26px'\n },\n '& input': {\n '&::placeholder': {\n color: '#000000'\n }\n }\n}));\n\nexport default RadiusSearchFilter;\n","import React, { useRef, Dispatch } from 'react';\nimport { Box, Paper, SxProps, Table, TableContainer } from '@mui/material';\nimport { classes } from './styles';\nimport {\n handleScrollableEnter,\n handleScrollableExit,\n handleScroll,\n tablePadding\n} from './tableHelper';\nimport GenericTableHead from './GenericTableHead';\nimport GenericTableBody from './GenericTableBody';\nimport GenericTablePagination from './GenericTablePagination';\nimport TableArrows from './TableArrows';\nimport LoadingTableItems from './LoadingTableItems';\nimport { GenericTableData, TPaginationState, TSortableColumn, TTableState } from './types';\nimport NoItemsMessage from './NoItemsMessage';\nimport { GenericTableAction } from './genericTableReducer';\nimport { ActionListItem } from './GenericTableActions';\n\ninterface IGenericTableProps<T> {\n items: T[];\n isLoadingItems: boolean;\n dispatch: Dispatch<GenericTableAction<T>>;\n tableState: TTableState<T, TSortableColumn[]>;\n paginationState: TPaginationState<string>;\n headerStyle: (id: string, tableHovered: boolean) => SxProps;\n TableRows: React.FC<{\n column: TSortableColumn;\n item: any;\n tableHovered: boolean;\n }>;\n TableActionList?: ActionListItem[];\n pagination?: { totalPages: number; totalItems: number };\n allowMultipleSelection?: boolean;\n label: string;\n titleCellId?: string;\n userPreferenceSource?: string;\n customEmptyStateMessage?: string;\n}\n\nconst GenericTable = <GenericTableProps extends GenericTableData>({\n items,\n pagination,\n isLoadingItems,\n dispatch,\n tableState,\n paginationState,\n headerStyle,\n TableRows,\n TableActionList,\n allowMultipleSelection = true,\n label,\n titleCellId, // This is used to attach a ref to the title cell for the table arrows\n userPreferenceSource,\n customEmptyStateMessage\n}: IGenericTableProps<GenericTableProps>) => {\n const tableRef = useRef<HTMLDivElement>(null);\n const titleCellRef = useRef<HTMLDivElement>(null);\n const actionCellRef = useRef<HTMLDivElement>(null);\n const parentRef = useRef<HTMLDivElement>(null);\n return (\n <Box>\n <Box sx={classes.tableAndArrowsContainer} ref={parentRef}>\n {!isLoadingItems && (\n <TableArrows\n tableRef={tableRef}\n titleCellRef={titleCellRef}\n actionCellRef={actionCellRef}\n parentRef={parentRef}\n tableState={tableState}\n dispatch={dispatch}\n />\n )}\n <TableContainer\n sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}\n component={Paper}\n onMouseEnter={() => handleScrollableEnter(tableRef, dispatch)}\n onMouseLeave={() => handleScrollableExit(dispatch)}\n ref={tableRef}\n onScroll={() => handleScroll(tableRef, dispatch)}\n >\n <Table\n sx={{\n ...classes.tableWrapper,\n 'th, td, tr, thead': {\n padding: `${tablePadding(tableState.density)} 10px`\n }\n }}\n aria-label={`${label} table`}\n >\n <GenericTableHead\n tableState={tableState}\n paginationState={paginationState}\n dispatch={dispatch}\n items={items}\n titleCellRef={titleCellRef}\n actionCellRef={actionCellRef}\n headerStyle={headerStyle}\n userPreferenceSource={userPreferenceSource}\n allowMultipleSelection={allowMultipleSelection}\n hasActionItems={!!TableActionList}\n titleCellId={titleCellId}\n />\n {!isLoadingItems && (\n <GenericTableBody\n tableState={tableState}\n dispatch={dispatch}\n items={items}\n TableRows={TableRows}\n TableActionList={TableActionList}\n allowMultipleSelection={allowMultipleSelection}\n />\n )}\n </Table>\n {isLoadingItems && <LoadingTableItems numberOfRows={10} />}\n <NoItemsMessage\n showNoItemsMessage={items.length === 0 && !isLoadingItems}\n label={label}\n customEmptyStateMessage={customEmptyStateMessage}\n />\n </TableContainer>\n </Box>\n {pagination && (\n <GenericTablePagination\n paginationState={paginationState}\n dispatch={dispatch}\n totalPages={pagination.totalPages}\n totalItems={pagination.totalItems}\n userPreferenceSource={userPreferenceSource}\n />\n )}\n </Box>\n );\n};\n\nexport default GenericTable;\n","import React, { Dispatch } from 'react';\nimport { GenericTableData, TableActionItemAction } from './types';\nimport { IconButton, Tooltip } from '@mui/material';\n\nexport type ActionListItem = {\n id: string;\n tooltipLabel: string;\n icon: JSX.Element;\n actionCall?: (id: string) => void;\n elementId?: string;\n};\n\ninterface IGenericTableActionProps<T> {\n item: T;\n dispatch: Dispatch<TableActionItemAction<T>>;\n actions: ActionListItem[];\n}\n\nconst GenericTableActions = <GenericTableActionsProps extends GenericTableData>({\n item,\n dispatch,\n actions\n}: IGenericTableActionProps<GenericTableActionsProps>) => {\n return (\n <>\n {actions.map((action) => (\n <Tooltip placement=\"top\" title={action.tooltipLabel} key={action.id} arrow>\n <IconButton\n className={`${action.id}-button`}\n id={action?.elementId ? action.elementId : 'table-action-button'}\n onClick={(event) => {\n dispatch({\n type: 'SELECT_ACTION_ITEM',\n payload: { item: item, anchorEl: event.currentTarget, name: action.id }\n });\n\n action.id === 'emailAnalytics' &&\n dispatch({\n type: 'SELECT_ACTION_ITEM',\n payload: { item: item, anchorEl: event.currentTarget, name: 'candidatePool' }\n });\n\n action?.actionCall && action.actionCall(item);\n }}\n >\n {action.icon}\n </IconButton>\n </Tooltip>\n ))}\n </>\n );\n};\n\nexport default GenericTableActions;\n","import React, { Dispatch, useMemo } from 'react';\nimport { Box, Checkbox, TableBody, TableCell, TableRow } from '@mui/material';\nimport { classes } from './styles';\nimport { handleSelectOne } from './tableHelper';\nimport { GenericTableAction } from './genericTableReducer';\nimport {\n GenericTableData,\n TSortableColumn,\n TTableState,\n TableActionItemAction,\n TableSelectionAction\n} from './types';\nimport GenericTableActions, { ActionListItem } from './GenericTableActions';\n\ninterface IGenericTableBodyProps<T> {\n tableState: TTableState<T, TSortableColumn[]>;\n dispatch: Dispatch<TableActionItemAction<T> | TableSelectionAction<T>>;\n items: T[];\n TableRows: React.FC<{\n column: TSortableColumn;\n item: T;\n tableHovered: boolean;\n dispatch?: Dispatch<\n TableActionItemAction<GenericTableData> | TableSelectionAction<GenericTableData>\n >;\n }>;\n TableActionList?: ActionListItem[];\n allowMultipleSelection?: boolean;\n}\n\nconst GenericTableBody = <GenericTableBodyProps extends GenericTableData>({\n tableState,\n dispatch,\n items,\n TableRows,\n TableActionList,\n allowMultipleSelection = true\n}: IGenericTableBodyProps<GenericTableBodyProps>) => {\n const allItemIds = useMemo(() => items.map((item) => item.id), [items]);\n\n return (\n <TableBody>\n {items.map((item) => (\n <TableRow key={item.id}>\n {allowMultipleSelection && (\n <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n <Checkbox\n id={`select-checkbox-${item.id}`}\n sx={classes.checkbox}\n checked={tableState.selectedItemIds.includes(item.id)}\n onChange={(event) => handleSelectOne(event, item, allItemIds, dispatch)}\n inputProps={{\n 'aria-label': `select ${item.name}`\n }}\n />\n </TableCell>\n )}\n {tableState.columns.map(\n (column) =>\n column.enabled && (\n <TableRows\n key={column.id}\n item={item}\n column={column}\n tableHovered={tableState.tableHovered}\n dispatch={dispatch}\n />\n )\n )}\n <TableCell\n sx={{\n zIndex: '4',\n ...classes.actionsTableCell,\n ...classes.stickyRight,\n ...(tableState.tableHovered && classes.scrollShadowVisible),\n ...(!TableActionList && { minWidth: '24px', width: '24px' })\n }}\n >\n <Box sx={classes.actionItems}>\n {TableActionList && (\n <GenericTableActions item={item} dispatch={dispatch} actions={TableActionList} />\n )}\n </Box>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n );\n};\n\nexport default GenericTableBody;\n","import React, { Dispatch, RefObject, useMemo } from 'react';\nimport { Checkbox, SxProps, TableCell, TableHead, TableRow, TableSortLabel } from '@mui/material';\nimport { classes } from './styles';\nimport { handleSelectAllOnPage } from './tableHelper';\nimport {\n GenericTableData,\n TPaginationState,\n TSortableColumn,\n TTableState,\n TablePaginationAction,\n TableSelectionAction\n} from './types';\nimport { updateUiSettings } from '../../helpers/uiPreferencesHelpers';\n\ninterface IGenericTableHeadProps<T> {\n tableState: TTableState<T, TSortableColumn[]>;\n paginationState: TPaginationState<string>;\n dispatch: Dispatch<TableSelectionAction<T> | TablePaginationAction<string>>;\n items: T[];\n titleCellRef: RefObject<HTMLDivElement>;\n actionCellRef: RefObject<HTMLDivElement>;\n headerStyle: (id: string, tableHovered: boolean) => SxProps;\n titleCellId?: string;\n userPreferenceSource?: string;\n hasActionItems?: boolean;\n allowMultipleSelection?: boolean;\n}\n\nconst GenericTableHead = <GenericTableHeadProps extends GenericTableData>({\n tableState,\n paginationState,\n dispatch,\n items,\n titleCellRef,\n actionCellRef,\n headerStyle,\n titleCellId = 'name', // This is used to attach a ref to the title cell for the table arrows\n userPreferenceSource,\n hasActionItems = true,\n allowMultipleSelection = true\n}: IGenericTableHeadProps<GenericTableHeadProps>) => {\n const selectAllIsIndeterminate = useMemo(\n () => items.map((item) => item.id).some((id) => tableState.selectedItemIds.includes(id)),\n [items, tableState.selectedItemIds]\n );\n const selectAllIsChecked = useMemo(\n () => items.map((item) => item.id).every((id) => tableState.selectedItemIds.includes(id)),\n [items, tableState.selectedItemIds]\n );\n\n const handleSortChange = (id: string) => {\n const sortOrder =\n paginationState.sort === id && paginationState.sort_order === 'asc' ? 'desc' : 'asc';\n dispatch({ type: 'SET_SORT', payload: { sortBy: id, sortOrder } });\n if (userPreferenceSource) {\n updateUiSettings({\n source: userPreferenceSource,\n sorting: {\n sortBy: id,\n sortOrder\n }\n });\n }\n };\n\n return (\n <TableHead>\n <TableRow>\n {allowMultipleSelection && (\n <TableCell sx={headerStyle('checkbox', tableState.tableHovered)}>\n <Checkbox\n id=\"select-all-checkbox\"\n sx={classes.checkbox}\n indeterminate={selectAllIsIndeterminate && !selectAllIsChecked}\n checked={selectAllIsChecked}\n onChange={(e) => handleSelectAllOnPage(e, items, dispatch)}\n inputProps={{\n 'aria-label': 'select all items on page'\n }}\n />\n </TableCell>\n )}\n {tableState.columns.map(\n (header) =>\n header.enabled && (\n <TableCell\n key={header.id}\n ref={header.id === titleCellId ? titleCellRef : null}\n sx={headerStyle(header.id, tableState.tableHovered)}\n >\n <TableSortLabel\n active={paginationState.sort === header.id}\n direction={\n paginationState.sort === header.id ? paginationState.sort_order : 'asc'\n }\n onClick={() => handleSortChange(header.id)}\n sx={header.sortable ? classes.sortable : classes.notSortable}\n disabled={!header.sortable}\n id={`${header.id}-sort-label`}\n >\n {header.label}\n </TableSortLabel>\n </TableCell>\n )\n )}\n <TableCell\n sx={{\n ...headerStyle('actions', tableState.tableHovered),\n ...(!hasActionItems && { minWidth: '20px', width: '20px' })\n }}\n ref={actionCellRef}\n />\n </TableRow>\n </TableHead>\n );\n};\n\nexport default GenericTableHead;\n","import { Box, FormControl, MenuItem, Pagination, Select, SelectChangeEvent } from '@mui/material';\nimport React, { Dispatch } from 'react';\nimport { TPaginationState, TablePaginationAction } from './types';\nimport { classes } from './styles';\nimport { handleAPIRequest } from '../Utilities/handleAPIRequest';\nimport { clearPreferenceCache } from '../../helpers/uiPreferencesHelpers';\n\nconst GenericTablePagination = ({\n paginationState,\n dispatch,\n totalPages,\n totalItems,\n userPreferenceSource\n}: {\n paginationState: TPaginationState<string>;\n dispatch: Dispatch<TablePaginationAction<string>>;\n totalPages: number;\n totalItems: number;\n userPreferenceSource?: string;\n}) => {\n const handleSetLimit = (e: SelectChangeEvent<number>) => {\n dispatch({ type: 'SET_LIMIT', payload: Number(e.target.value) });\n dispatch({ type: 'SET_PAGE', payload: 1 });\n if (userPreferenceSource) {\n handleAPIRequest({\n method: 'POST',\n url: '/api/v4/ui_preferences',\n body: {\n source: userPreferenceSource,\n row_count: Number(e.target.value)\n }\n });\n clearPreferenceCache(userPreferenceSource);\n }\n };\n return (\n <Box sx={classes.paginationParent}>\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n sx={classes.rowSelect}\n value={paginationState.limit}\n onChange={handleSetLimit}\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" value={10}>\n 10\n </MenuItem>\n <MenuItem id=\"second-rpp-item\" value={20}>\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer}>\n <Pagination\n id=\"pagination-menu\"\n count={totalPages}\n page={paginationState.page}\n siblingCount={0}\n onChange={(e, page) => dispatch({ type: 'SET_PAGE', payload: page })}\n sx={classes.pagination}\n />\n <span id=\"total-jobs\">{totalItems} Total</span>\n </Box>\n </Box>\n );\n};\n\nexport default GenericTablePagination;\n","import { Box, Button, Collapse } from '@mui/material';\nimport React from 'react';\nimport { classes } from './styles';\nimport { TableActionDrawerAction } from './types';\n\nexport type DrawerActionItem = {\n id: string;\n label: string;\n icon: JSX.Element;\n};\n\nconst ItemActionsDrawer = ({\n drawerOpen,\n dispatch,\n actions,\n label\n}: {\n drawerOpen: boolean;\n dispatch: React.Dispatch<TableActionDrawerAction>;\n actions: DrawerActionItem[];\n label: string;\n}) => {\n return (\n <Collapse in={drawerOpen}>\n <Box sx={classes.actionsContianer}>\n {actions.map((action) => (\n <Button\n key={action.id}\n id={`${action.id}-action-${label}-button`}\n variant=\"outlined\"\n startIcon={action.icon}\n sx={classes.actionButton}\n onClick={() =>\n dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: action.id, isOpen: true }\n })\n }\n >\n {action.label}\n </Button>\n ))}\n </Box>\n </Collapse>\n );\n};\n\nexport default ItemActionsDrawer;\n","import { Box, Skeleton } from '@mui/material';\nimport React from 'react';\n\nconst LoadingTableItems = ({ numberOfRows }: { numberOfRows?: number }) => {\n return (\n <>\n {[...Array(numberOfRows || 5)].map((_, index) => (\n <Box key={index} sx={skeletonContaineStyle}>\n <Skeleton animation=\"wave\" height={60} />\n </Box>\n ))}\n </>\n );\n};\n\nconst skeletonContaineStyle = {\n borderBottom: '1px solid #DDDDDD',\n padding: '10px 0px'\n};\n\nexport default LoadingTableItems;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from './styles';\n\nconst NoItemsMessage = ({\n showNoItemsMessage,\n label,\n customEmptyStateMessage = 'found that match your search parameters'\n}: {\n showNoItemsMessage: boolean;\n label?: string;\n customEmptyStateMessage?: string;\n}) => {\n if (!showNoItemsMessage) return null;\n return (\n <Box sx={classes.noResultsContainer}>\n <svg\n width=\"134\"\n height=\"110\"\n viewBox=\"0 0 134 110\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M58.8275 43.8437C61.8329 43.8437 64.2656 46.5195 64.2656 49.8329V87.1779C64.2656 90.4817 61.8353 93.1683 58.8275 93.1683H9.54269C6.5445 93.1683 4.10938 90.4829 4.10938 87.1779V48.9799C4.10938 45.6665 6.53969 43.8401 9.54269 43.8401\"\n fill=\"#D1D1D1\"\n />\n <path\n d=\"M22.4689 36.625C23.4819 36.625 24.3036 37.5273 24.3036 38.6463L36.3349 51.5305C36.3349 52.6446 35.512 53.5494 34.5001 53.5494H5.94034C4.92972 53.5494 4.11039 52.6446 4.11039 51.5305V38.6463C4.11039 37.5273 4.93092 36.625 5.94034 36.625H22.4689Z\"\n fill=\"#D1D1D1\"\n />\n <path\n d=\"M68.3683 54.6045C71.3713 54.6045 73.804 57.2803 73.804 60.5937L65.4218 87.1827C64.5075 89.5637 61.7884 93.1731 58.7806 93.1731H9.54269C6.5445 93.1731 4.10938 90.4877 4.10938 87.1827L12.494 60.5937C13.7344 58.2813 16.1274 54.6045 19.1304 54.6045\"\n fill=\"#EBEBEB\"\n />\n <path\n d=\"M110.384 88.0627L93.4971 65.5819L99.0447 61.4338L115.932 83.9146L110.384 88.0627Z\"\n fill=\"#CFCFCF\"\n stroke=\"#E3E3E3\"\n />\n <path\n d=\"M106.686 83.0262L112.129 78.9564C113.057 78.2627 114.372 78.451 115.067 79.3758L131.344 101.045C132.039 101.969 131.851 103.282 130.923 103.975L125.48 108.045C124.552 108.739 123.237 108.551 122.542 107.626L106.265 85.9569C105.57 85.0321 105.758 83.7199 106.686 83.0262Z\"\n fill=\"#D1D1D1\"\n stroke=\"#E3E3E3\"\n />\n <g opacity=\"0.2\">\n <path\n d=\"M101.28 16.9181C105.077 21.9746 107.286 28.041 107.628 34.35C107.969 40.659 106.428 46.9273 103.199 52.3624C99.9698 57.7975 95.1978 62.1553 89.4864 64.8846C83.775 67.6139 77.3807 68.5922 71.112 67.6958C64.8433 66.7995 58.9817 64.0687 54.2686 59.8488C49.5554 55.6288 46.2023 50.1093 44.6332 43.9881C43.0641 37.8669 43.3495 31.419 45.4534 25.4596C47.5572 19.5003 51.385 14.2971 56.4527 10.5082C59.8176 7.99159 63.6466 6.16109 67.7208 5.12123C71.795 4.08137 76.0346 3.85253 80.1975 4.44778C84.3604 5.04303 88.3649 6.45072 91.9824 8.59041C95.5999 10.7301 98.7594 13.5599 101.28 16.9181Z\"\n fill=\"white\"\n />\n <path\n d=\"M105.637 24.8457C108.598 32.7335 108.32 41.4684 104.864 49.1533C101.409 56.8382 95.0534 62.8525 87.1792 65.89L105.637 24.8457Z\"\n fill=\"#EBEBEB\"\n />\n <path\n d=\"M80.5641 4.50764L55.2798 60.7207C51.0568 57.2441 47.7962 52.7467 45.8086 47.6569L64.4609 6.15355C69.5989 4.23829 75.1437 3.67155 80.5641 4.50764Z\"\n fill=\"#EBEBEB\"\n />\n <path\n d=\"M99.2538 14.4699L75.1715 68.0157C73.0724 67.98 70.9818 67.7403 68.9292 67.3002L94.57 10.2849C96.2695 11.5177 97.8388 12.92 99.2538 14.4699Z\"\n fill=\"#EBEBEB\"\n />\n <path\n d=\"M84.8377 5.47534L58.8488 63.2682C58.5172 63.0655 58.1898 62.8546 57.8706 62.6437L83.7186 5.16105C84.0916 5.25616 84.4688 5.35541 84.8377 5.47534Z\"\n fill=\"#EBEBEB\"\n />\n <path\n d=\"M55.1929 11.5048L43.6574 37.1446C43.6201 36.1893 43.6326 35.2298 43.6906 34.2746L53.0706 13.4112C53.7421 12.7537 54.4468 12.1169 55.1929 11.5048Z\"\n fill=\"#EBEBEB\"\n />\n </g>\n <path\n d=\"M75.6571 3.63546H75.6565C69.2268 3.63546 62.9413 5.53766 57.595 9.10167C52.2486 12.6657 48.0813 17.7315 45.6203 23.6586C43.1593 29.5858 42.5152 36.108 43.7694 42.4005C45.0236 48.693 48.1198 54.4729 52.6663 59.0096C57.2128 63.5462 63.0054 66.6357 69.3115 67.8878C75.6176 69.1398 82.1542 68.498 88.0949 66.0437C94.0355 63.5893 99.1135 59.4325 102.687 54.0986C106.26 48.7647 108.167 42.4934 108.168 36.0777V36.0771C108.159 27.4761 104.731 19.2302 98.6359 13.1483C92.5408 7.06648 84.2769 3.64546 75.6571 3.63546ZM75.656 71.647C68.6035 71.6469 61.7096 69.5603 55.846 65.6512C49.9822 61.742 45.4122 56.1859 42.7137 49.6856C40.0152 43.1853 39.3093 36.0326 40.6854 29.1322C42.0615 22.2317 45.4576 15.8932 50.4446 10.9182C55.4316 5.94325 61.7854 2.55533 68.7026 1.1831C75.6198 -0.189144 82.7895 0.515971 89.3049 3.20921C95.8203 5.90245 101.389 10.4628 105.306 16.3133C109.223 22.1637 111.314 29.0415 111.313 36.077C111.301 45.5074 107.541 54.5484 100.856 61.2167C94.1719 67.885 85.1092 71.6362 75.656 71.647Z\"\n fill=\"#D1D1D1\"\n stroke=\"#E3E3E3\"\n />\n </svg>\n <span>\n No {label || 'items'} {customEmptyStateMessage}\n </span>\n </Box>\n );\n};\n\nexport default NoItemsMessage;\n","import FormControl from '@mui/material/FormControl';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\nimport React, { Dispatch, useState } from 'react';\nimport { useDebouncedCallback } from 'use-debounce';\nimport { GenericTableAction } from './genericTableReducer';\nimport { searchInput } from '../../shared/styleClasses';\n\nconst SearchInput = ({ dispatch, id }: { dispatch: Dispatch<GenericTableAction>; id?: string }) => {\n const [inputValue, setInputValue] = useState<string>('');\n const debouncedAPICall = useDebouncedCallback(() => {\n dispatch({ type: 'SET_SEARCH_QUERY', payload: inputValue });\n }, 600);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(event.target.value);\n debouncedAPICall();\n };\n\n return (\n <FormControl fullWidth>\n <OutlinedInput\n id={id ? id : 'records-search'}\n sx={searchInput}\n placeholder={'Search by title'}\n value={inputValue}\n onChange={handleChange}\n startAdornment={\n <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n <SearchIcon />\n </InputAdornment>\n }\n />\n </FormControl>\n );\n};\n\nexport default SearchInput;\n","import React, { Dispatch, RefObject, useLayoutEffect, useState } from 'react';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport { classes } from './styles';\nimport { handleScrollLeft, handleScrollRight, handleScrollableEnter } from './tableHelper';\nimport { Box } from '@mui/material';\nimport { GenericTableData, TSortableColumn, TTableState, TableScrollAction } from './types';\n\nconst ARROW_WIDTH = 40;\n\ninterface ITableArrowProps<T> {\n tableRef: RefObject<HTMLDivElement>;\n titleCellRef: RefObject<HTMLDivElement>;\n actionCellRef: RefObject<HTMLDivElement>;\n parentRef: RefObject<HTMLDivElement>;\n tableState: TTableState<T, TSortableColumn[]>;\n dispatch: Dispatch<TableScrollAction>;\n}\n\nconst TableArrows = <TableArrowProps extends GenericTableData>({\n tableRef,\n titleCellRef,\n actionCellRef,\n parentRef,\n tableState,\n dispatch\n}: ITableArrowProps<TableArrowProps>) => {\n const [leftPosition, setLeftPosition] = useState({\n leftArrow: 0,\n rightArrow: 0\n });\n\n useLayoutEffect(() => {\n setLeftPosition({\n leftArrow:\n (titleCellRef?.current?.getBoundingClientRect()?.right || 0) -\n (parentRef?.current?.getBoundingClientRect()?.left || 0),\n rightArrow:\n (actionCellRef?.current?.getBoundingClientRect()?.left || 0) -\n (parentRef?.current?.getBoundingClientRect()?.left || 0) -\n ARROW_WIDTH\n });\n }, [actionCellRef, tableState.tableHovered, parentRef, titleCellRef]);\n\n return (\n <>\n <Box sx={classes.arrowsContainer}>\n <Box\n onClick={() => handleScrollLeft(tableRef)}\n onMouseEnter={() => handleScrollableEnter(tableRef, dispatch)}\n sx={{\n ...classes.leftArrow,\n ...(tableState.tableHovered && tableState.canScroll[0] && classes.showArrows),\n left: `${leftPosition.leftArrow}px`,\n top: 0\n }}\n id=\"left-arrow\"\n >\n <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n <Box sx={classes.arrowsContainer}>\n <Box\n onMouseEnter={() => handleScrollableEnter(tableRef, dispatch)}\n onClick={() => handleScrollRight(tableRef)}\n sx={{\n ...classes.rightArrow,\n ...(tableState.tableHovered && tableState.canScroll[1] && classes.showArrows),\n left: `${leftPosition.rightArrow}px`,\n top: 0\n }}\n id=\"right-arrow\"\n >\n <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n </>\n );\n};\n\nexport default TableArrows;\n","import React, { useMemo, useState } from 'react';\nimport { Box, Tooltip } from '@mui/material';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\ntype IProps = {\n label: string;\n titleKeyType: 'name' | 'title';\n items: {\n id: number;\n name?: string;\n title?: string;\n url: string;\n }[];\n maxItems?: number;\n maxItemsLink?: string;\n};\n\nconst HEIGHT = 26;\nconst MARGIN_BOTTOM = 6;\nconst BORDER_HEIGHT = 2;\n\nexport default function ExpandableLinkedTags({\n label,\n titleKeyType,\n items,\n maxItems,\n maxItemsLink\n}: IProps) {\n const [isExpanded, setIsExpanded] = useState(false);\n const [showExpandedItems, setShowExpandedItems] = useState(false);\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\n\n const handleExpandClick = () => {\n if (isExpanded) {\n setIsExpanded(false);\n setTimeout(() => {\n setShowExpandedItems(false);\n }, 500);\n } else {\n setIsExpanded(true);\n setShowExpandedItems(true);\n }\n };\n\n function getHeight() {\n if (!isExpanded) {\n return `${HEIGHT}px`;\n } else {\n if (maxItems && items.length > maxItems) {\n return `${(HEIGHT + 3) * (maxItems + 1) + MARGIN_BOTTOM * maxItems}px`;\n } else {\n return `${HEIGHT * (items.length + 1) + MARGIN_BOTTOM * items.length}px`;\n }\n }\n }\n\n const handleShowTooltip = (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (event.currentTarget.offsetWidth < event.currentTarget.scrollWidth) {\n setShowTooltip(true);\n }\n };\n\n const displayedItems = useMemo(\n () => (maxItems ? items.slice(1, maxItems) : items.slice(1)),\n [items, maxItems]\n );\n\n const followMaxItemsLink = () => {\n if (maxItemsLink) {\n window.open(maxItemsLink, '_self');\n }\n };\n\n const displayBadge = items.length > 1 && !isExpanded;\n\n return (\n <Box sx={{ ...styles.container, ...{ height: getHeight() } }} className={label}>\n <Box display=\"flex\">\n <Tag\n item={items[0]}\n titleKeyType={titleKeyType}\n showTooltip={showTooltip}\n setShowTooltip={setShowTooltip}\n handleShowTooltip={handleShowTooltip}\n badge={{\n show: displayBadge,\n handleExpandClick,\n numberOfItems: items.length - 1\n }}\n />\n </Box>\n {showExpandedItems &&\n displayedItems.map((item) => {\n return (\n <Tag\n key={item.id}\n item={item}\n titleKeyType={titleKeyType}\n showTooltip={showTooltip}\n setShowTooltip={setShowTooltip}\n handleShowTooltip={handleShowTooltip}\n />\n );\n })}\n {maxItems && items.length > maxItems && (\n <Box\n id=\"show-more-job-tag-button\"\n onClick={followMaxItemsLink}\n sx={{ ...styles.item, ...styles.viewAllItem, ...(maxItemsLink && { cursor: 'pointer' }) }}\n >\n {maxItemsLink ? `View all ${items.length}` : `+${items.length - maxItems} more`}\n </Box>\n )}\n <Box\n id=\"show-less-job-tag-button\"\n onClick={handleExpandClick}\n sx={{ ...styles.item, ...styles.showLess }}\n >\n Show less\n </Box>\n </Box>\n );\n}\n\nfunction Tag({\n item,\n titleKeyType,\n showTooltip,\n setShowTooltip,\n handleShowTooltip,\n badge\n}: {\n item: IProps['items'][0];\n titleKeyType: IProps['titleKeyType'];\n showTooltip: boolean;\n setShowTooltip: React.Dispatch<React.SetStateAction<boolean>>;\n handleShowTooltip: (event: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\n badge?: {\n show: boolean;\n handleExpandClick: () => void;\n numberOfItems: number;\n };\n}) {\n const badgeFontSize = (numberOfItems: number) => {\n if (numberOfItems < 10) {\n return '14px';\n } else if (numberOfItems < 100) {\n return '12px';\n } else {\n return '10px';\n }\n };\n return (\n <>\n <Tooltip\n key={item.id}\n title={item[titleKeyType]}\n placement=\"top\"\n disableFocusListener={!showTooltip}\n disableHoverListener={!showTooltip}\n >\n <Box\n id=\"job-name-tag-button\"\n key={item.id}\n sx={{\n ...styles.item,\n ...{ width: badge?.show ? '82.5%' : '100%' },\n ...(item.url && { cursor: 'pointer' })\n }}\n onMouseEnter={handleShowTooltip}\n onMouseLeave={() => setShowTooltip(false)}\n onClick={() => item.url && window.open(item.url, '_blank')}\n onAuxClick={() => item.url && window.open(item.url, '_blank')}\n >\n {item[titleKeyType]}\n </Box>\n </Tooltip>\n {badge?.show && (\n <Box\n id=\"show-more-job-tag-button\"\n onClick={badge.handleExpandClick}\n sx={{ ...styles.badge, fontSize: badgeFontSize(badge.numberOfItems) }}\n >\n {`+${badge.numberOfItems}`}\n </Box>\n )}\n </>\n );\n}\n\nconst styles = {\n container: {\n transition: 'height 0.5s cubic-bezier(.75,.34,.19,.79)',\n overflow: 'hidden'\n },\n item: {\n backgroundColor: '#EDF2F5',\n color: theme.palette.primary.main,\n borderRadius: `${HEIGHT / 2}px`,\n height: HEIGHT,\n textAlign: 'center',\n fontWeight: '600',\n marginBottom: `${MARGIN_BOTTOM}px`,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n padding: '0 18px',\n border: `${BORDER_HEIGHT}px solid white`,\n zIndex: 1,\n lineHeight: `${HEIGHT - BORDER_HEIGHT * 2}px`,\n transition: 'width 0.5s cubic-bezier(.75,.34,.19,.79)',\n fontSize: '13px'\n },\n viewAllItem: {\n overflow: 'unset',\n textOverflow: 'unset',\n whiteSpace: 'unset',\n height: 'unset',\n lineHeight: 'unset'\n },\n badge: {\n backgroundColor: '#EDF2F5',\n color: theme.palette.primary.main,\n borderRadius: HEIGHT / 2,\n height: HEIGHT,\n border: `${BORDER_HEIGHT}px solid white`,\n textAlign: 'center',\n fontWeight: '600',\n minWidth: '38px',\n transform: 'translateX(-13px)',\n marginRight: '-13px',\n paddingLeft: '8px',\n userSelect: 'none',\n lineHeight: `${HEIGHT - BORDER_HEIGHT * 2}px`,\n transition: 'opacity 0.5s, width 0.5s cubic-bezier(.75,.34,.19,.79)',\n cursor: 'pointer'\n },\n showLess: {\n fontSize: '12px',\n cursor: 'pointer',\n userSelect: 'none',\n width: '100px',\n margin: 'auto'\n }\n};\n","import React from 'react';\nimport moment from 'moment-timezone';\nconst timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\nconst FormattedDate = ({ date }: { date: string }) => {\n return (\n <>\n {moment\n .tz(date, timeZoneString)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => (\n <div key={line}>{line}</div>\n ))}\n </>\n );\n};\n\nexport default FormattedDate;\n","import { Box } from '@mui/material';\nimport React, { useEffect } from 'react';\nimport { classes } from '../styles';\n\nexport type Note = {\n id: number;\n subject?: string;\n body: string;\n noted_by: string;\n};\n\nconst NotesWithSubjectLine = ({ notes }: { notes: Note[] }) => {\n const [notesExpanded, setNotesExpanded] = React.useState<boolean>(false);\n const [hasOverflow, setHasOverflow] = React.useState<boolean>(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (containerRef.current) {\n setHasOverflow(containerRef.current.scrollHeight > containerRef.current.clientHeight);\n }\n }, [containerRef, notes]);\n\n return (\n <Box>\n <Box\n sx={{\n ...classes.noteContainer,\n ...(notesExpanded && classes.notesExpanded)\n }}\n ref={containerRef}\n >\n {notes?.map((note) => (\n <Box key={note.id}>\n {note.subject && <Box sx={classes.noteSubject}>{note.subject}</Box>}\n <Box>{note.body}</Box>\n <Box sx={classes.noteUser}>-{note.noted_by}</Box>\n </Box>\n ))}\n </Box>\n {(hasOverflow || notesExpanded) && (\n <Box sx={classes.notesExpandContract} onClick={() => setNotesExpanded((prev) => !prev)}>\n {notesExpanded ? 'Show less' : 'Show all'}\n </Box>\n )}\n </Box>\n );\n};\n\nexport default NotesWithSubjectLine;\n","import React, { Dispatch, useState } from 'react';\nimport { Box, Button, CircularProgress, Popover, TextField } from '@mui/material';\nimport { classes } from '../styles';\nimport { TableActionItemAction } from '../types';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CloseIcon from '@mui/icons-material/Close';\nimport callAPI from '../../Utilities/callAPI';\nimport { useQueryClient, useMutation } from '@tanstack/react-query';\n\nconst AddNoteWithSubjectLine = ({\n dispatch,\n isOpen,\n anchorEl,\n itemId,\n url,\n queryKey\n}: {\n dispatch: Dispatch<TableActionItemAction<any>>;\n isOpen: boolean;\n anchorEl: Element | null;\n itemId: number;\n url: string;\n queryKey: string;\n}) => {\n const [noteSubject, setNoteSubject] = useState('');\n const [noteBody, setNoteBody] = useState('');\n\n const queryClient = useQueryClient();\n\n const { mutate: saveNote, isLoading: savingNote } = useMutation({\n mutationFn: () =>\n callAPI(\n url,\n {\n id: itemId,\n note: {\n subject: noteSubject,\n body: noteBody\n }\n },\n 'POST'\n ),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: [queryKey] });\n handleClose();\n }\n });\n\n const handleClose = () => {\n dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'addNote' });\n setNoteSubject('');\n setNoteBody('');\n };\n\n return (\n <Popover\n id={'edit-note-popover'}\n sx={classes.editNotePopover}\n open={isOpen}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <>\n <Box sx={classes.notesTitle}>Add application note</Box>\n <TextField\n id=\"note-input\"\n sx={classes.noteInput}\n label=\"Subject\"\n fullWidth\n variant=\"outlined\"\n onChange={(e) => setNoteSubject(e.target.value)}\n InputLabelProps={{\n shrink: true\n }}\n required\n />\n <TextField\n id=\"note-input\"\n sx={classes.noteInput}\n label=\"Body\"\n multiline\n fullWidth\n maxRows={4}\n variant=\"outlined\"\n onChange={(e) => setNoteBody(e.target.value)}\n InputLabelProps={{\n shrink: true\n }}\n />\n <Box id=\"notes-button-container\" sx={classes.notesButtonContainer}>\n <Button sx={classes.notesCancelButton} endIcon={<CloseIcon />} onClick={handleClose}>\n Cancel\n </Button>\n <Button\n sx={classes.notesEditSaveButton}\n endIcon={savingNote ? <CircularProgress size={16} /> : <DoneIcon />}\n onClick={() => {\n saveNote();\n }}\n disabled={!noteSubject || !!savingNote}\n >\n Save\n </Button>\n </Box>\n </>\n </Popover>\n );\n};\n\nexport default AddNoteWithSubjectLine;\n","import React, { useState } from 'react';\nimport { Box, Popover } from '@mui/material';\nimport DocTypeIcon from '../../Utilities/DocTypeIcon';\nimport FilePreviewModal, { IJobAttachment } from '../../../Components/Modals/FilePreviewModal';\nimport { classes } from '../styles';\n\nexport type Attachment = {\n id: number;\n attached_file_name: string;\n attached_content_type: string;\n url: string;\n created_at: string;\n previewable: boolean;\n};\n\nconst AttachmentsList = ({\n attachments,\n isOpen,\n handleClose,\n anchorEl\n}: {\n attachments: Attachment[];\n isOpen: boolean;\n handleClose: () => void;\n anchorEl: Element | null;\n}) => {\n const [previewOpen, setPreviewOpen] = useState(false);\n const [selectedAttachment, setSelectedAttachment] = useState<IJobAttachment | null>(null);\n\n const sortedAttachments = [...attachments].reverse();\n\n return (\n <Box>\n {selectedAttachment && (\n <FilePreviewModal\n previewOpen={previewOpen}\n setPreviewOpen={setPreviewOpen}\n selectedAttachment={selectedAttachment}\n applicationLink={selectedAttachment?.application_link}\n isShareable={false}\n />\n )}\n <Popover\n id={isOpen ? 'applicant-attachments' : undefined}\n open={isOpen}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <Box>\n {sortedAttachments?.length < 1 && (\n <Box sx={{ padding: '7px', ...classes.fileName }}>No attachments</Box>\n )}\n {sortedAttachments?.map((attachment) => (\n <Box\n key={attachment.id}\n sx={classes.attachmentItem}\n onClick={() => {\n setSelectedAttachment(attachment);\n setPreviewOpen(true);\n }}\n id=\"specific-attachment-option\"\n >\n <Box sx={classes.fileIcon}>\n {DocTypeIcon(attachment.attached_file_name.split('.').pop())}\n </Box>\n <Box sx={classes.fileName}>{attachment.attached_file_name}</Box>\n </Box>\n ))}\n </Box>\n </Popover>\n </Box>\n );\n};\n\nexport default AttachmentsList;\n","import React, { Dispatch } from 'react';\nimport { GenericTableData, TSortableColumn, TTableState, TableActionItemAction } from '../types';\nimport { Popover } from '@mui/material';\nimport { classes } from '../styles';\n\ntype IOption = {\n id: string;\n label: string;\n action: () => void;\n};\n\nconst MoreOptionsList = ({\n options,\n actionsState,\n dispatch,\n label\n}: {\n options: IOption[];\n actionsState: TTableState<GenericTableData, TSortableColumn>['actions'];\n dispatch: Dispatch<TableActionItemAction<GenericTableData>>;\n label: string;\n}) => {\n const handleSelectItem = (action: () => void) => {\n dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'moreOptions' });\n action();\n };\n return (\n <Popover\n id={`${label}-more-options-popover`}\n sx={classes.actionsMenu}\n open={actionsState?.isOpen?.moreOptions}\n anchorEl={actionsState?.anchorEl}\n onClose={() => dispatch({ type: 'CLOSE_ACTION_ITEM', payload: 'moreOptions' })}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {options.map((option) => (\n <span\n key={option.id}\n onClick={() => handleSelectItem(option.action)}\n className={`${option.id}-action-button`}\n >\n {option.label}\n </span>\n ))}\n </Popover>\n );\n};\n\nexport default MoreOptionsList;\n","import React, { Dispatch, useMemo, useState } from 'react';\nimport { Box, IconButton } from '@mui/material';\nimport {\n GenericTableData,\n TSortableColumn,\n TTableState,\n TableFilter,\n TableSelectionAction\n} from './types';\nimport { classes } from './styles';\nimport { handleAPIRequest } from '../Utilities/handleAPIRequest';\n\nconst TotalSelectedIndicator = ({\n tableState,\n tableFilters,\n tableSearch,\n dispatch,\n totalItems,\n items,\n selectAllUrl,\n label\n}: {\n tableState: TTableState<GenericTableData, TSortableColumn[]>;\n tableFilters?: TableFilter;\n tableSearch?: string;\n dispatch: Dispatch<TableSelectionAction<GenericTableData>>;\n totalItems: number;\n items: GenericTableData[];\n selectAllUrl?: string;\n label?: string;\n}) => {\n const [isLoadingSelectAll, setIsLoadingSelectAll] = useState(false);\n const selectAllIsChecked = useMemo(\n () => items.map((item) => item.id).every((id) => tableState.selectedItemIds.includes(id)),\n [items, tableState.selectedItemIds]\n );\n const handleSelectAll = () => {\n if (!selectAllUrl) return;\n handleAPIRequest({\n url: selectAllUrl,\n method: 'POST',\n body: {\n override_limit: true,\n limit: totalItems,\n ...(tableSearch && { query: tableSearch }),\n ...tableFilters\n },\n setLoaderState: setIsLoadingSelectAll,\n onSuccess: (data: { ai_search: Array<{ id: number }> }) =>\n dispatch({ type: 'SELECT_ALL_ITEMS', payload: data?.ai_search?.map((item) => item.id) })\n });\n };\n\n return (\n <Box\n id=\"selected-tooltip\"\n sx={\n tableState.selectedItemIds?.length > 0\n ? { ...classes.selectedTooltip, ...classes.fadeIn }\n : { ...classes.selectedTooltip, ...classes.fadeOut }\n }\n >\n <Box\n id=\"selected-tooltip-text\"\n sx={{\n display: 'flex',\n paddingLeft: '12px',\n alignItems: 'center',\n ...classes.selectedTooltipText\n }}\n >\n {tableState.selectedItemIds.length === totalItems\n ? `All ${tableState.selectedItemIds.length} ${label || 'items'} are selected`\n : `${tableState.selectedItemIds.length} selected`}\n <IconButton\n size=\"small\"\n sx={{\n ...classes.selectedTooltipText,\n ...classes.selectedAllTooltipText,\n marginLeft: 1,\n color: '#666666'\n }}\n onClick={() => dispatch({ type: 'REMOVE_ALL_SELECTED_ITEMS' })}\n >\n Clear selection\n </IconButton>\n </Box>\n {selectAllIsChecked && totalItems > tableState.selectedItemIds.length && (\n <IconButton\n disabled={false}\n size=\"small\"\n sx={{ ...classes.selectedTooltipText, ...classes.selectedAllTooltipText }}\n onClick={handleSelectAll}\n >\n {!isLoadingSelectAll ? `Select all ${totalItems} ${label}` : `Loading all ${label}...`}\n </IconButton>\n )}\n </Box>\n );\n};\n\nexport default TotalSelectedIndicator;\n","import React, { Dispatch } from 'react';\nimport { Box, Button } from '@mui/material';\nimport { classes } from './styles';\nimport { TableActionDrawerAction } from './types';\n\n// The parentDiv prop is used to center the tooltip in relation to the table and not the\n// entire page. You can pass in a ref.current which should be a parent div with 100% width\n\nconst TotalSelectedIndicatorWithActions = ({\n totalSelected,\n parentDiv,\n dispatch,\n actionButtonsList,\n actionCall,\n actionButtonId = ''\n}: {\n totalSelected: number;\n parentDiv: HTMLDivElement | null;\n dispatch?: Dispatch<TableActionDrawerAction>;\n actionButtonsList?: {\n id: string;\n label: string;\n icon: JSX.Element;\n }[];\n actionCall?: null | (() => void);\n actionButtonId?: string;\n}) => {\n return (\n <Box\n id=\"selected-tooltip\"\n sx={{\n ...classes.selectedTooltip,\n left: parentDiv\n ? parentDiv.getBoundingClientRect().left +\n parentDiv.getBoundingClientRect().width / 2 -\n 332 // this is half the size of the 'tooltip' div\n : 55, // this value for when the parent div is inside a modal\n ...(totalSelected ? classes.fadeIn : classes.fadeOut)\n }}\n >\n <Box id=\"selected-tooltip-text\" sx={classes.selectAllWithActionsTooltip}>\n {totalSelected} selected\n <Box>\n {actionButtonsList &&\n dispatch &&\n actionButtonsList.map((action) => (\n <Button\n sx={classes.selectAllWithActionsTooltipButton}\n startIcon={action.icon}\n onClick={() => {\n dispatch &&\n dispatch({\n type: 'SET_ACTION_MODAL_OPEN',\n payload: { name: action.id, isOpen: true }\n });\n actionCall && actionCall();\n }}\n key={action.id}\n id={actionButtonId}\n >\n {action.label}\n </Button>\n ))}\n </Box>\n </Box>\n </Box>\n );\n};\n\nexport default TotalSelectedIndicatorWithActions;\n","import { Reducer } from 'react';\nimport {\n GenericTableData,\n TPaginationState,\n TSortableColumn,\n TTableState,\n TableActionItemAction,\n TableActionDrawerAction,\n TableColumnAction,\n TablePaginationAction,\n TableScrollAction,\n TableSelectionAction,\n TableRowSelectedAction,\n TableRowRemoveSelectedAction\n} from './types';\nimport { addSelected, removeSelected, addAllPageItems, removeAllPageItems } from './tableHelper';\nimport { ISnackbarInput } from '../CustomUIElements/StyledSnackbar'\n\nexport interface GenericTableState {\n searchQuery: string;\n searchSettings: TPaginationState<string>;\n tableState: TTableState<GenericTableData, TSortableColumn[]>;\n selectedRowTitle: null | { [key: string]: any };\n snackbarState: ISnackbarInput;\n}\n\nexport const initialTableState = (\n columns: TSortableColumn[],\n defaultSort: { sortBy: string; sortOrder: 'asc' | 'desc' },\n actionItems?: Record<string, boolean>,\n modals?: Record<string, boolean>\n): GenericTableState => {\n return {\n searchQuery: '',\n searchSettings: {\n page: 1,\n limit: 10,\n sort: defaultSort.sortBy,\n sort_order: defaultSort.sortOrder\n },\n tableState: {\n canScroll: [false, true],\n tableHovered: false,\n density: 'Default',\n columns: columns,\n selectedItems: [],\n selectedItemIds: [],\n actions: {\n selectedItem: null,\n anchorEl: null,\n isOpen: {\n ...(actionItems || {})\n }\n },\n modalsOpen: {\n ...(modals || {})\n }\n },\n snackbarState: {\n message: '',\n state: 'success'\n },\n selectedRowTitle: null\n };\n};\n\nexport type GenericTableAction<T = GenericTableData> =\n | { type: 'SET_SEARCH_QUERY'; payload: string }\n | { type: 'SET_DEFAULT_DATA'; payload: GenericTableState }\n | { type: 'SET_SNACKBAR'; payload: ISnackbarInput }\n | TableScrollAction\n | TableSelectionAction<T>\n | TableColumnAction<TSortableColumn[]>\n | TablePaginationAction<string>\n | TableActionItemAction<T>\n | TableActionDrawerAction\n | TableRowSelectedAction\n | TableRowRemoveSelectedAction;\n\nexport const genericTableReducer: Reducer<GenericTableState, GenericTableAction> = (\n state: GenericTableState,\n action: GenericTableAction\n) => {\n switch (action.type) {\n case 'SET_SEARCH_QUERY':\n return {\n ...state,\n searchQuery: action.payload,\n searchSettings: {\n ...state.searchSettings,\n page: 1\n }\n };\n case 'ADD_SELECTED_ITEM':\n return {\n ...state,\n tableState: {\n ...state.tableState,\n ...addSelected(\n state.tableState.selectedItems,\n state.tableState.selectedItemIds,\n action.payload\n )\n }\n };\n case 'SET_CAN_SCROLL':\n return {\n ...state,\n tableState: {\n ...state.tableState,\n canScroll: action.payload\n }\n };\n case 'SET_TABLE_HOVERED':\n return {\n ...state,\n tableState: {\n ...state.tableState,\n tableHovered: action.payload\n }\n };\n case 'REMOVE_SELECTED_ITEM':\n return {\n ...state,\n tableState: {\n ...state.tableState,\n ...removeSelected(\n state.tableState.selectedItems,\n state.tableState.selectedItemIds,\n action.payload\n )\n }\n };\n case 'ADD_ALL_PAGE_ITEMS':\n return {\n ...state,\n tableState: {\n ...state.tableState,\n ...addAllPageItems(state.tableState.selectedItems, action.payload)\n }\n };\n case 'REMOVE_ALL_PAGE_ITEMS':\n return {\n ...state,\n tableState: {\n ...state.tableState,\n ...removeAllPageItems(state.tableState.selectedItems, action.payload)\n }\n };\n case 'SET_DENSITY':\n return {\n ...state,\n tableState: {\n ...state.tableState,\n density: action.payload\n }\n };\n case 'SET_SORT':\n return {\n ...state,\n searchSettings: {\n ...state.searchSettings,\n sort: action.payload.sortBy,\n sort_order: action.payload.sortOrder\n }\n };\n case 'SET_COLUMNS':\n return {\n ...state,\n tableState: {\n ...state.tableState,\n columns: action.payload\n }\n };\n case 'SET_PAGE':\n return {\n ...state,\n searchSettings: {\n ...state.searchSettings,\n page: action.payload\n }\n };\n case 'SET_LIMIT':\n return {\n ...state,\n searchSettings: {\n ...state.searchSettings,\n limit: action.payload\n }\n };\n case 'SELECT_ACTION_ITEM':\n return {\n ...state,\n tableState: {\n ...state.tableState,\n actions: {\n ...state.tableState.actions,\n selectedItem: action.payload.item,\n anchorEl: action.payload.anchorEl,\n isOpen: {\n ...state.tableState.actions.isOpen,\n [action.payload.name]: true\n }\n }\n }\n };\n case 'CLOSE_ACTION_ITEM':\n return {\n ...state,\n tableState: {\n ...state.tableState,\n actions: {\n ...state.tableState.actions,\n selectedItem: null,\n isOpen: {\n ...state.tableState.actions.isOpen,\n [action.payload]: false\n }\n }\n }\n };\n case 'SET_ACTION_MODAL_OPEN':\n return {\n ...state,\n tableState: {\n ...state.tableState,\n modalsOpen: {\n ...state.tableState.modalsOpen,\n [action.payload.name]: action.payload.isOpen\n }\n }\n };\n case 'SET_DEFAULT_DATA':\n return {\n ...action.payload\n };\n case 'SET_SELECTED_ROW_DATA':\n return {\n ...state,\n selectedRowTitle: { ...action.payload }\n };\n case 'REMOVE_SELECTED_ROW_DATA':\n return {\n ...state,\n selectedRowTitle: null\n };\n case 'SET_SNACKBAR':\n return {\n ...state,\n snackbarState: action.payload\n };\n default:\n return state;\n }\n};\n","import React from 'react';\n\nconst FileTickSVG = () => {\n return (\n <svg width=\"43\" height=\"50\" viewBox=\"0 0 43 50\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M4.52632 0H29.4211C30.6658 0 31.6842 1.01842 31.6842 2.26316C31.6842 3.50789 30.6658 4.52632 29.4211 4.52632H6.78947C5.54474 4.52632 4.52632 5.54474 4.52632 6.78947V33.9474C4.52632 35.1921 3.50789 36.2105 2.26316 36.2105C1.01842 36.2105 0 35.1921 0 33.9474V4.52632C0 2.03684 2.03684 0 4.52632 0ZM41.6874 21.3189L30.7563 10.3879C29.8963 9.52789 28.7421 9.05263 27.5426 9.05263H13.5789C11.0895 9.05263 9.07526 11.0895 9.07526 13.5789L9.05263 45.2632C9.05263 47.7526 11.0668 49.7895 13.5563 49.7895H38.4737C40.9632 49.7895 43 47.7526 43 45.2632V24.51C43 23.3105 42.5247 22.1563 41.6874 21.3189ZM16.0889 35.3849L21.2798 41.0084L35.9627 25.1019C36.5411 24.4753 37.4607 24.4753 38.0391 25.1019C38.6175 25.7285 38.6175 26.7247 38.0391 27.3513L22.318 44.3664C21.7396 44.9931 20.8052 44.9931 20.2268 44.3664L14.0125 37.6343C13.4341 37.0077 13.4341 36.0115 14.0125 35.3849C14.591 34.7583 15.5105 34.7583 16.0889 35.3849Z\"\n fill=\"#5BC4C0\"\n />\n </svg>\n );\n};\n\nexport default FileTickSVG;\n","import React from 'react';\n\nconst UploadSVG = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"106.755\"\n height=\"67.516\"\n viewBox=\"0 0 106.755 67.516\"\n >\n <g id=\"Group_308\" data-name=\"Group 308\" transform=\"translate(-21.116 -21.871)\">\n <g id=\"Group_309\" data-name=\"Group 309\" transform=\"translate(21.116 21.871)\">\n <path\n id=\"Path_149\"\n data-name=\"Path 149\"\n d=\"M190.21,202.039c-.22-.442-.62-.88-.629-1.325q-.1-4.849-.055-9.7c.026-2.4.423-2.745,2.9-2.765,2.119-.017,4.243.088,6.353-.051a2.869,2.869,0,0,0,2.155-1.045,3.064,3.064,0,0,0-.541-2.391,16.587,16.587,0,0,0-2.306-2.407q-6.445-6.447-12.894-12.889c-1.658-1.653-2.394-1.624-4.023.02q-7.063,7.127-14.148,14.233c-.2.2-.491.361-.573.6-.291.842-.912,1.876-.645,2.521a3.022,3.022,0,0,0,2.226,1.348c1.99.174,4.008,0,6.015.008,2.55.01,2.8.28,2.8,2.761-.006,3.067-.057,6.135.02,9.2.035,1.41-.379,2-1.881,1.995-7.861-.053-15.725.084-23.585-.058A21.754,21.754,0,0,1,130,180.675c-.29-11.028,6.165-20.467,16.131-23.348a19.623,19.623,0,0,1,6.092-.762,2.9,2.9,0,0,0,3.3-2.214,32.057,32.057,0,0,1,8.2-12.069c13.208-12.329,33.091-9.386,42.22,6.275.869,1.49,1.639,3.044,2.364,4.61a1.564,1.564,0,0,0,1.875,1.121c6.913-.719,11.9,4.237,11.188,11.147-.161,1.549.629,1.705,1.741,1.974A17.257,17.257,0,0,1,236.722,185.4a18.164,18.164,0,0,1-15.4,16.55,9.047,9.047,0,0,1-1,.035l-1.705-.335c2.17-.456,4.47-.6,6.487-1.427a16.7,16.7,0,0,0,10.227-16.992A17.2,17.2,0,0,0,221.5,167.982c-1.475-.265-1.717-.738-1.541-2.162.819-6.638-4.191-11.627-10.691-10.722a1.775,1.775,0,0,1-2.1-1.093,69.075,69.075,0,0,0-5.2-8.737,24.973,24.973,0,0,0-37.708-2.383,36.274,36.274,0,0,0-8.169,13.089,1.88,1.88,0,0,1-2.4,1.386,17.442,17.442,0,0,0-12,2.625c-9.7,6-13.195,19.075-7.844,29.644,3.5,6.906,9.022,11.3,16.9,11.666,7.678.357,15.386.078,23.08.117,1.194.006,1.715-.38,1.7-1.636-.043-2.9-.035-5.8.046-8.7.044-1.575-.543-2.235-2.155-2.15-1.947.1-3.9.047-5.853.06-1.289.009-2.487-.245-3.137-1.5-.7-1.34.148-2.345.9-3.322a13.61,13.61,0,0,1,1.233-1.362q5.711-5.642,11.435-11.271a37.514,37.514,0,0,1,3.346-3.25c1.876-1.434,3.209-1.26,4.886.391,1.788,1.76,3.541,3.555,5.314,5.33,3.31,3.314,6.645,6.6,9.926,9.945,1.952,1.989,1.277,4.182-1.444,4.819a8.491,8.491,0,0,1-1.824.171c-1.784.02-3.572.073-5.352-.018-1.423-.073-2.006.372-1.951,1.886.1,2.84.111,5.69,0,8.529-.062,1.627.522,2.1,2.112,2.088,6.8-.07,13.606-.036,20.408-.016a21.936,21.936,0,0,1,2.309.242c-7.685.012-15.37.015-23.055.052a18.392,18.392,0,0,0-2.445.333\"\n transform=\"translate(-129.993 -134.641)\"\n fill=\"#838383\"\n />\n <path\n id=\"Path_150\"\n data-name=\"Path 150\"\n d=\"M309.963,335.307a18.389,18.389,0,0,1,2.445-.333c7.685-.037,15.37-.04,23.055-.052h2.91l1.705.335c-2.824.041-5.648.117-8.471.116-7.215,0-14.429-.042-21.644-.066\"\n transform=\"translate(-249.746 -267.909)\"\n fill=\"#767676\"\n />\n <path\n id=\"Path_151\"\n data-name=\"Path 151\"\n d=\"M221.273,203.177h-2.91a21.971,21.971,0,0,0-2.309-.242c-6.8-.02-13.606-.053-20.408.016-1.59.016-2.174-.461-2.112-2.088.108-2.84.1-5.689,0-8.529-.055-1.514.528-1.959,1.951-1.886,1.78.091,3.568.038,5.352.018a8.472,8.472,0,0,0,1.824-.171c2.721-.637,3.4-2.83,1.444-4.819-3.281-3.343-6.616-6.631-9.926-9.945-1.773-1.775-3.527-3.57-5.314-5.33-1.677-1.651-3.01-1.825-4.886-.391a37.618,37.618,0,0,0-3.346,3.25q-5.718,5.634-11.435,11.27a13.605,13.605,0,0,0-1.233,1.362c-.752.977-1.6,1.982-.9,3.323.65,1.252,1.848,1.506,3.137,1.5,1.951-.014,3.906.042,5.853-.061,1.612-.085,2.2.574,2.155,2.15-.081,2.9-.089,5.8-.046,8.7.019,1.256-.5,1.642-1.7,1.636-7.695-.039-15.4.24-23.08-.117-7.875-.367-13.4-4.759-16.9-11.666-5.351-10.569-1.86-23.642,7.844-29.644a17.442,17.442,0,0,1,12-2.625,1.88,1.88,0,0,0,2.4-1.386,36.277,36.277,0,0,1,8.169-13.089,24.973,24.973,0,0,1,37.708,2.383,69.088,69.088,0,0,1,5.2,8.737,1.775,1.775,0,0,0,2.1,1.093c6.5-.9,11.51,4.085,10.691,10.722-.176,1.425.065,1.9,1.541,2.162a17.2,17.2,0,0,1,13.837,15.254,16.7,16.7,0,0,1-10.228,16.993c-2.017.829-4.316.97-6.486,1.426\"\n transform=\"translate(-132.646 -136.163)\"\n fill=\"#fff\"\n />\n </g>\n </g>\n </svg>\n );\n};\n\nexport default UploadSVG;\n","import { SvgIcon, SvgIconProps } from '@mui/material';\nimport React from 'react';\n\nexport function NoEventsSVG() {\n return (\n <svg\n width=\"104\"\n height=\"80\"\n viewBox=\"0 0 104 80\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_28695_52976)\">\n <path\n d=\"M86.4483 72.761L6.65605 71.7091C5.10144 71.6888 3.88425 70.4149 3.99182 68.9215C3.99182 68.9215 6.06954 57.207 7.18935 24.8875H86.4483V72.761Z\"\n fill=\"white\"\n />\n <path\n d=\"M6.31185 71.5246C5.08674 71.2212 4.10845 70.1014 4.28056 68.7913C4.31226 68.5468 4.36548 68.3033 4.40398 68.0599C4.60892 66.777 4.77649 65.4874 4.93161 64.1977C5.71288 57.7279 6.1873 51.2207 6.58247 44.717C6.96404 38.4249 7.24371 32.1261 7.46337 25.8262C7.4679 25.6993 6.92328 25.7831 6.91649 25.9722C6.56888 35.9781 6.09106 45.9874 5.23167 55.9638C4.88519 59.9857 4.50814 64.0199 3.882 68.0101C3.83671 68.2988 3.7767 68.5864 3.73707 68.8762C3.54798 70.2587 4.57608 71.4431 5.87027 71.7647C6.01633 71.8009 6.50321 71.5722 6.31185 71.5246Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M83.663 11.7849H9.97475C8.43642 11.7849 7.18936 13.032 7.18936 14.5703V71.8406C7.18936 73.3789 8.43642 74.626 9.97475 74.626H83.663C85.2013 74.626 86.4484 73.3789 86.4484 71.8406V14.5703C86.4484 13.032 85.2013 11.7849 83.663 11.7849Z\"\n fill=\"white\"\n />\n <path\n d=\"M86.4484 24.8876H7.18939V14.5443C7.18939 13.0202 8.4247 11.7849 9.94874 11.7849H83.689C85.2131 11.7849 86.4484 13.0202 86.4484 14.5443V24.8876Z\"\n fill=\"#D0D0D0\"\n />\n <path\n d=\"M86.471 24.6803H8.41335C8.07706 24.6803 7.67737 24.6203 7.34562 24.6803C7.30485 24.6883 7.25503 24.6803 7.21314 24.6803C7.29806 24.7426 7.38298 24.806 7.4679 24.8683C7.4679 21.4828 7.45545 18.0973 7.4679 14.7118C7.47356 13.1278 8.53224 11.9966 10.1253 11.991C10.6847 11.9887 11.2452 11.991 11.8045 11.991H82.867C83.3357 11.991 83.8362 11.9525 84.2903 12.0782C86.5423 12.6998 86.171 15.21 86.171 16.9979V24.9057C86.171 25.1989 86.7258 25.1231 86.7258 24.8672C86.7258 21.4613 86.7507 18.0554 86.7258 14.6507C86.7133 12.8594 85.3852 11.5913 83.6109 11.5777C83.1127 11.5732 82.6145 11.5777 82.1163 11.5777H10.576C9.79585 11.5777 9.06554 11.6083 8.36126 12.0374C6.61643 13.1006 6.91196 15.1138 6.91196 16.8541V24.9057C6.91196 25.0483 7.0433 25.0936 7.16672 25.0936H83.2033C84.228 25.0936 85.2685 25.1446 86.2932 25.0936C86.3374 25.0914 86.3816 25.0936 86.4257 25.0936C86.7428 25.0936 86.8413 24.6803 86.471 24.6803Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M16.7032 43.6865H16.0986C14.3062 43.6865 12.8524 42.2327 12.8524 40.4403C12.8524 38.6479 14.3062 37.1941 16.0986 37.1941H16.7032C18.4956 37.1941 19.9494 38.6479 19.9494 40.4403C19.9494 42.2327 18.4956 43.6865 16.7032 43.6865Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M26.8427 43.6865H26.2381C24.4457 43.6865 22.9919 42.2327 22.9919 40.4403C22.9919 38.6479 24.4457 37.1941 26.2381 37.1941H26.8427C28.6351 37.1941 30.0889 38.6479 30.0889 40.4403C30.0889 42.2327 28.6351 43.6865 26.8427 43.6865Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M36.9822 43.6865H36.3776C34.5852 43.6865 33.1313 42.2327 33.1313 40.4403C33.1313 38.6479 34.5852 37.1941 36.3776 37.1941H36.9822C38.7746 37.1941 40.2284 38.6479 40.2284 40.4403C40.2284 42.2327 38.7746 43.6865 36.9822 43.6865Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M47.1226 43.6865H46.518C44.7256 43.6865 43.2718 42.2327 43.2718 40.4403C43.2718 38.6479 44.7256 37.1941 46.518 37.1941H47.1226C48.915 37.1941 50.3688 38.6479 50.3688 40.4403C50.3688 42.2327 48.915 43.6865 47.1226 43.6865Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M57.2623 43.6865H56.6577C54.8653 43.6865 53.4115 42.2327 53.4115 40.4403C53.4115 38.6479 54.8653 37.1941 56.6577 37.1941H57.2623C59.0547 37.1941 60.5085 38.6479 60.5085 40.4403C60.5085 42.2327 59.0547 43.6865 57.2623 43.6865Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M67.4018 43.6865H66.7972C65.0048 43.6865 63.551 42.2327 63.551 40.4403C63.551 38.6479 65.0048 37.1941 66.7972 37.1941H67.4018C69.1942 37.1941 70.648 38.6479 70.648 40.4403C70.648 42.2327 69.1942 43.6865 67.4018 43.6865Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M77.5413 43.6865H76.9366C75.1443 43.6865 73.6904 42.2327 73.6904 40.4403C73.6904 38.6479 75.1443 37.1941 76.9366 37.1941H77.5413C79.3337 37.1941 80.7875 38.6479 80.7875 40.4403C80.7875 42.2327 79.3337 43.6865 77.5413 43.6865Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M16.7032 53.0718H16.0986C14.3062 53.0718 12.8524 51.618 12.8524 49.8256C12.8524 48.0332 14.3062 46.5793 16.0986 46.5793H16.7032C18.4956 46.5793 19.9494 48.0332 19.9494 49.8256C19.9494 51.618 18.4956 53.0718 16.7032 53.0718Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M26.8427 53.0718H26.2381C24.4457 53.0718 22.9919 51.618 22.9919 49.8256C22.9919 48.0332 24.4457 46.5793 26.2381 46.5793H26.8427C28.6351 46.5793 30.0889 48.0332 30.0889 49.8256C30.0889 51.618 28.6351 53.0718 26.8427 53.0718Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M36.9822 53.0718H36.3776C34.5852 53.0718 33.1313 51.618 33.1313 49.8256C33.1313 48.0332 34.5852 46.5793 36.3776 46.5793H36.9822C38.7746 46.5793 40.2284 48.0332 40.2284 49.8256C40.2284 51.618 38.7746 53.0718 36.9822 53.0718Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M47.1226 53.0718H46.518C44.7256 53.0718 43.2718 51.618 43.2718 49.8256C43.2718 48.0332 44.7256 46.5793 46.518 46.5793H47.1226C48.915 46.5793 50.3688 48.0332 50.3688 49.8256C50.3688 51.618 48.915 53.0718 47.1226 53.0718Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M57.2623 53.0718H56.6577C54.8653 53.0718 53.4115 51.618 53.4115 49.8256C53.4115 48.0332 54.8653 46.5793 56.6577 46.5793H57.2623C59.0547 46.5793 60.5085 48.0332 60.5085 49.8256C60.5085 51.618 59.0547 53.0718 57.2623 53.0718Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M67.4018 53.0718H66.7972C65.0048 53.0718 63.551 51.618 63.551 49.8256C63.551 48.0332 65.0048 46.5793 66.7972 46.5793H67.4018C69.1942 46.5793 70.648 48.0332 70.648 49.8256C70.648 51.618 69.1942 53.0718 67.4018 53.0718Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M77.5413 53.0718H76.9366C75.1443 53.0718 73.6904 51.618 73.6904 49.8256C73.6904 48.0332 75.1443 46.5793 76.9366 46.5793H77.5413C79.3337 46.5793 80.7875 48.0332 80.7875 49.8256C80.7875 51.618 79.3337 53.0718 77.5413 53.0718Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M16.7032 62.2376H16.0986C14.3062 62.2376 12.8524 60.7837 12.8524 58.9913C12.8524 57.199 14.3062 55.7451 16.0986 55.7451H16.7032C18.4956 55.7451 19.9494 57.199 19.9494 58.9913C19.9494 60.7837 18.4956 62.2376 16.7032 62.2376Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M26.8427 62.2376H26.2381C24.4457 62.2376 22.9919 60.7837 22.9919 58.9913C22.9919 57.199 24.4457 55.7451 26.2381 55.7451H26.8427C28.6351 55.7451 30.0889 57.199 30.0889 58.9913C30.0889 60.7837 28.6351 62.2376 26.8427 62.2376Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M36.9822 62.2376H36.3776C34.5852 62.2376 33.1313 60.7837 33.1313 58.9913C33.1313 57.199 34.5852 55.7451 36.3776 55.7451H36.9822C38.7746 55.7451 40.2284 57.199 40.2284 58.9913C40.2284 60.7837 38.7746 62.2376 36.9822 62.2376Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M47.1226 62.2376H46.518C44.7256 62.2376 43.2718 60.7837 43.2718 58.9913C43.2718 57.199 44.7256 55.7451 46.518 55.7451H47.1226C48.915 55.7451 50.3688 57.199 50.3688 58.9913C50.3688 60.7837 48.915 62.2376 47.1226 62.2376Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M57.2623 62.2376H56.6577C54.8653 62.2376 53.4115 60.7837 53.4115 58.9913C53.4115 57.199 54.8653 55.7451 56.6577 55.7451H57.2623C59.0547 55.7451 60.5085 57.199 60.5085 58.9913C60.5085 60.7837 59.0547 62.2376 57.2623 62.2376Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M67.4018 62.2376H66.7972C65.0048 62.2376 63.551 60.7837 63.551 58.9913C63.551 57.199 65.0048 55.7451 66.7972 55.7451H67.4018C69.1942 55.7451 70.648 57.199 70.648 58.9913C70.648 60.7837 69.1942 62.2376 67.4018 62.2376Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M77.5413 62.2376H76.9366C75.1443 62.2376 73.6904 60.7837 73.6904 58.9913C73.6904 57.199 75.1443 55.7451 76.9366 55.7451H77.5413C79.3337 55.7451 80.7875 57.199 80.7875 58.9913C80.7875 60.7837 79.3337 62.2376 77.5413 62.2376Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M16.7032 64.9097H16.0975C14.3046 64.9097 12.8513 66.363 12.8513 68.1559C12.8513 69.9487 14.3046 71.4021 16.0975 71.4021H16.7032C18.4961 71.4021 19.9495 69.9487 19.9495 68.1559C19.9495 66.363 18.4961 64.9097 16.7032 64.9097Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M26.8439 64.9097H26.2381C24.4453 64.9097 22.9919 66.363 22.9919 68.1559C22.9919 69.9487 24.4453 71.4021 26.2381 71.4021H26.8439C28.6367 71.4021 30.0901 69.9487 30.0901 68.1559C30.0901 66.363 28.6367 64.9097 26.8439 64.9097Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M36.9834 64.9097H36.3776C34.5848 64.9097 33.1314 66.363 33.1314 68.1559C33.1314 69.9487 34.5848 71.4021 36.3776 71.4021H36.9834C38.7762 71.4021 40.2296 69.9487 40.2296 68.1559C40.2296 66.363 38.7762 64.9097 36.9834 64.9097Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M47.1229 64.9097H46.5171C44.7243 64.9097 43.2709 66.363 43.2709 68.1559C43.2709 69.9487 44.7243 71.4021 46.5171 71.4021H47.1229C48.9157 71.4021 50.3691 69.9487 50.3691 68.1559C50.3691 66.363 48.9157 64.9097 47.1229 64.9097Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M57.2623 64.9097H56.6566C54.8637 64.9097 53.4103 66.363 53.4103 68.1559C53.4103 69.9487 54.8637 71.4021 56.6566 71.4021H57.2623C59.0552 71.4021 60.5085 69.9487 60.5085 68.1559C60.5085 66.363 59.0552 64.9097 57.2623 64.9097Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M36.9833 27.9185H36.3776C34.5847 27.9185 33.1313 29.3718 33.1313 31.1647C33.1313 32.9575 34.5847 34.4109 36.3776 34.4109H36.9833C38.7762 34.4109 40.2296 32.9575 40.2296 31.1647C40.2296 29.3718 38.7762 27.9185 36.9833 27.9185Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M47.123 27.9185H46.5172C44.7244 27.9185 43.271 29.3718 43.271 31.1647C43.271 32.9575 44.7244 34.4109 46.5172 34.4109H47.123C48.9159 34.4109 50.3692 32.9575 50.3692 31.1647C50.3692 29.3718 48.9159 27.9185 47.123 27.9185Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M57.2626 27.9185H56.6568C54.864 27.9185 53.4106 29.3718 53.4106 31.1647C53.4106 32.9575 54.864 34.4109 56.6568 34.4109H57.2626C59.0554 34.4109 60.5088 32.9575 60.5088 31.1647C60.5088 29.3718 59.0554 27.9185 57.2626 27.9185Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M67.4032 27.9185H66.7975C65.0046 27.9185 63.5512 29.3718 63.5512 31.1647C63.5512 32.9575 65.0046 34.4109 66.7975 34.4109H67.4032C69.1961 34.4109 70.6494 32.9575 70.6494 31.1647C70.6494 29.3718 69.1961 27.9185 67.4032 27.9185Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M77.5424 27.9185H76.9367C75.1438 27.9185 73.6904 29.3718 73.6904 31.1647C73.6904 32.9575 75.1438 34.4109 76.9367 34.4109H77.5424C79.3353 34.4109 80.7886 32.9575 80.7886 31.1647C80.7886 29.3718 79.3353 27.9185 77.5424 27.9185Z\"\n fill=\"#EEEEEE\"\n />\n <path\n d=\"M86.1755 26.3448V49.7817C86.1755 49.9131 86.7224 49.8225 86.7224 49.6357V26.1988C86.7224 26.0674 86.1755 26.158 86.1755 26.3448Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M75.086 74.4913H10.9168C9.70302 74.4913 8.47677 74.386 7.78269 73.1722C7.3411 72.4 7.46339 71.3855 7.46339 70.525V25.8274C7.46339 25.6961 6.9165 25.7867 6.9165 25.9735V63.3271C6.9165 66.1895 6.90744 69.053 6.9165 71.9154C6.92216 73.6399 8.26843 74.7461 9.94759 74.7608C10.593 74.7665 11.2384 74.7608 11.8838 74.7608H74.8618C75.0407 74.7608 75.4506 74.4925 75.086 74.4925V74.4913Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M46.8472 3.40494C47.5113 3.40494 48.0496 2.86658 48.0496 2.20247C48.0496 1.53837 47.5113 1 46.8472 1C46.183 1 45.6447 1.53837 45.6447 2.20247C45.6447 2.86658 46.183 3.40494 46.8472 3.40494Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M29.8348 19.9656C31.0855 19.9656 32.0993 18.9517 32.0993 17.7011C32.0993 16.4504 31.0855 15.4365 29.8348 15.4365C28.5841 15.4365 27.5703 16.4504 27.5703 17.7011C27.5703 18.9517 28.5841 19.9656 29.8348 19.9656Z\"\n fill=\"#F8F8F8\"\n />\n <path\n d=\"M64.2173 19.9656C65.468 19.9656 66.4819 18.9517 66.4819 17.7011C66.4819 16.4504 65.468 15.4365 64.2173 15.4365C62.9667 15.4365 61.9528 16.4504 61.9528 17.7011C61.9528 18.9517 62.9667 19.9656 64.2173 19.9656Z\"\n fill=\"#F8F8F8\"\n />\n <path\n d=\"M30.8527 15.9393C31.5819 16.4794 31.9703 17.3591 31.7574 18.2604C31.5389 19.1844 30.7157 19.9034 29.7385 19.806C27.7027 19.6033 27.1932 16.8179 28.8973 15.7921C29.212 15.603 28.7308 15.5464 28.5621 15.6471C27.5952 16.2291 27.0403 17.3376 27.3914 18.4552C27.7073 19.4629 28.6765 20.1083 29.7159 20.1117C30.6727 20.114 31.6294 19.6078 32.0846 18.7518C32.6474 17.6943 32.3077 16.4318 31.3611 15.7309C31.2128 15.6211 30.7146 15.8385 30.8516 15.9393H30.8527Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M64.7815 15.7014C65.5865 16.0274 66.1549 16.7476 66.2081 17.6285C66.267 18.5977 65.6306 19.6054 64.6422 19.7877C63.7148 19.9587 62.792 19.3744 62.4207 18.5354C62.0266 17.6432 62.2769 16.6264 63.0015 15.9878C63.2325 15.784 62.6924 15.801 62.5667 15.912C61.679 16.6944 61.3914 17.9716 62.0447 19.0019C62.595 19.8704 63.6435 20.2508 64.6377 20.0606C65.6216 19.8726 66.4855 19.1503 66.7052 18.1505C66.9599 16.9887 66.2964 15.8825 65.2185 15.4466C65.0645 15.3843 64.5652 15.6142 64.7803 15.7014H64.7815Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M29.6491 16.1725C31.437 14.5171 33.2259 12.8617 35.0138 11.2063C37.7041 8.71644 40.3944 6.22544 43.0835 3.73558C43.8002 3.07207 44.5419 2.23079 45.442 1.82317C46.82 1.20042 48.3203 1.60351 49.4118 2.58293C49.6065 2.7573 49.7945 2.93733 49.987 3.1151C52.4802 5.42266 54.9735 7.73137 57.4667 10.0389C59.5943 12.0091 61.6856 14.0291 63.8561 15.9539C63.8935 15.9868 63.9297 16.0219 63.9671 16.0558C64.1392 16.2155 64.6555 15.9936 64.4687 15.8203C62.588 14.0789 60.7073 12.3386 58.8266 10.5971C56.1442 8.11407 53.4619 5.631 50.7807 3.14793C49.8692 2.30439 49.0087 1.45066 47.7247 1.20382C46.0251 0.877727 44.6551 1.71108 43.4696 2.81051C40.9616 5.13167 38.4536 7.45396 35.9468 9.77512C34.5326 11.084 33.1184 12.3929 31.7053 13.7018C30.9116 14.4367 30.0714 15.1432 29.3139 15.9154C29.2766 15.9528 29.2358 15.9879 29.1962 16.0241C28.9505 16.2517 29.4815 16.3276 29.6502 16.1713L29.6491 16.1725Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M51.6971 39.1189C52.0345 41.2 51.1898 43.4 49.3793 44.5492C47.8089 45.5468 45.8025 45.3758 44.2739 44.3771C41.1432 42.3334 40.9745 37.4861 44.1505 35.3846C46.0063 34.1573 48.3739 34.626 49.9885 36.03C50.2319 36.2418 51.2306 35.8262 51.0132 35.6371C47.5779 32.6502 41.5157 34.5354 40.7854 39.171C40.4536 41.2792 41.3572 43.46 43.1167 44.6806C44.8831 45.9057 47.1827 46.0155 49.1438 45.2048C51.6858 44.153 53.2347 41.5714 52.7897 38.8245C52.7456 38.5493 51.6439 38.7928 51.696 39.1177L51.6971 39.1189Z\"\n fill=\"#D0D0D0\"\n />\n <path\n d=\"M43.085 38.3886C44.643 39.2911 46.0538 40.4279 47.2484 41.7753C47.4477 42.0006 48.0149 41.8002 48.1916 41.6405C49.7428 40.2467 50.6033 37.878 52.5644 36.979C53.2574 36.6608 52.6188 36.3551 52.1443 36.5736C49.9092 37.5983 49.0668 39.9274 47.3231 41.4933C47.6379 41.448 47.9527 41.4039 48.2663 41.3586C47.0321 39.9659 45.5692 38.8132 43.9614 37.8814C43.6749 37.7161 42.6627 38.1429 43.085 38.3875V38.3886Z\"\n fill=\"#D0D0D0\"\n />\n <path\n d=\"M31.5264 58.9666C31.4947 60.9763 30.3579 62.9623 28.4681 63.7685C26.8128 64.4739 24.8517 63.9995 23.5043 62.8718C20.6679 60.4974 20.9895 55.5822 24.4576 53.9415C26.3247 53.0584 28.5146 53.7207 29.9401 55.1044C30.1677 55.3252 31.1822 54.9221 30.9648 54.7115C27.7797 51.6193 21.8342 53.0889 20.6566 57.4527C20.1018 59.5089 20.7608 61.7406 22.3539 63.1571C23.9402 64.5668 26.1923 64.9178 28.1975 64.3256C30.7508 63.5704 32.576 61.3681 32.619 58.6744C32.6224 58.4446 31.5309 58.6099 31.5253 58.9677L31.5264 58.9666Z\"\n fill=\"#D0D0D0\"\n />\n <path\n d=\"M22.576 57.6814C24.134 58.5838 25.5448 59.7206 26.7393 61.068C26.9386 61.2933 27.5059 61.0929 27.6825 60.9332C29.2337 59.5394 30.0943 57.1707 32.0553 56.2717C32.7483 55.9535 32.1097 55.6478 31.6353 55.8663C29.4002 56.891 28.5578 59.2201 26.8141 60.7861C27.1288 60.7408 27.4436 60.6966 27.7572 60.6513C26.5231 59.2586 25.0602 58.106 23.4523 57.1741C23.1659 57.0088 22.1536 57.4357 22.576 57.6802V57.6814Z\"\n fill=\"#D0D0D0\"\n />\n <path\n d=\"M96.0496 74.1376C101.352 68.835 101.352 60.2378 96.0496 54.9351C90.7469 49.6325 82.1497 49.6325 76.8471 54.9351C71.5445 60.2378 71.5445 68.835 76.8471 74.1376C82.1497 79.4402 90.7469 79.4402 96.0496 74.1376Z\"\n fill=\"#F8F8F8\"\n />\n <path\n d=\"M95.0674 73.1555C99.8275 68.3954 99.8275 60.6778 95.0674 55.9178C90.3074 51.1577 82.5898 51.1577 77.8297 55.9178C73.0697 60.6778 73.0697 68.3954 77.8297 73.1555C82.5898 77.9155 90.3074 77.9155 95.0674 73.1555Z\"\n fill=\"white\"\n />\n <path\n d=\"M86.1758 74.9337V76.9559C86.1758 77.1247 86.7227 77.0216 86.7227 76.8099V74.7876C86.7227 74.6189 86.1758 74.722 86.1758 74.9337Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M86.1758 52.2634V54.306C86.1758 54.3728 86.7227 54.3015 86.7227 54.1599V52.1173C86.7227 52.0505 86.1758 52.1219 86.1758 52.2634Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M75.8946 64.4863H74.2019C74.0875 64.4863 73.8916 64.5192 73.8441 64.646C73.801 64.7592 73.8814 64.8464 74.0026 64.8464H75.6953C75.8097 64.8464 76.0056 64.8135 76.0531 64.6867C76.0962 64.5735 76.0158 64.4863 75.8946 64.4863Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M98.9023 64.5156H97.059C96.8586 64.5156 96.477 64.8168 96.8438 64.8168H98.6872C98.8876 64.8168 99.2692 64.5156 98.9023 64.5156Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M94.2415 69.993C94.1906 69.993 94.1385 69.9782 94.0921 69.9488L86.0212 64.7234C85.8944 64.6407 85.8571 64.4709 85.9397 64.3441C86.0224 64.2172 86.1922 64.1799 86.319 64.2625L94.3899 69.488C94.5167 69.5706 94.554 69.7405 94.4714 69.8673C94.4193 69.9488 94.331 69.993 94.2404 69.993H94.2415Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M86.8503 64.4108C86.7733 64.481 86.6827 64.5104 86.6046 64.4821C86.4653 64.4323 86.4144 64.2183 86.4925 64.0043L89.2269 56.4271C89.3039 56.2131 89.4794 56.0795 89.6187 56.1293C89.758 56.1791 89.8078 56.3931 89.7308 56.6071L86.9964 64.1843C86.9624 64.2783 86.9103 64.3553 86.8503 64.4096V64.4108Z\"\n fill=\"#CFCFCF\"\n />\n <path\n d=\"M86.4481 65.8952C87.1985 65.8952 87.8068 65.2869 87.8068 64.5365C87.8068 63.7861 87.1985 63.1777 86.4481 63.1777C85.6977 63.1777 85.0894 63.7861 85.0894 64.5365C85.0894 65.2869 85.6977 65.8952 86.4481 65.8952Z\"\n fill=\"#D0D0D0\"\n />\n <path\n d=\"M100.3 64.464C100.266 58.643 96.4744 53.3428 90.9296 51.5108C85.5434 49.7308 79.4405 51.4621 75.7934 55.8032C72.0479 60.261 71.5712 66.7942 74.6227 71.7513C77.664 76.6914 83.6254 79.1484 89.2777 77.9606C94.8462 76.791 99.3017 72.1815 100.15 66.5349C100.253 65.8476 100.297 65.1569 100.301 64.4628C100.301 64.3009 99.7557 64.4006 99.7546 64.6089C99.7229 70.1683 96.2174 75.2998 90.9625 77.1986C85.6465 79.1201 79.5628 77.2688 76.0686 72.8722C72.6208 68.5345 72.1996 62.3126 75.0552 57.5571C77.9742 52.6974 83.759 50.1815 89.2992 51.4383C94.6356 52.6498 98.7921 57.1699 99.604 62.5731C99.7047 63.2468 99.7512 63.9261 99.7557 64.6078C99.7557 64.7719 100.304 64.67 100.303 64.4617L100.3 64.464Z\"\n fill=\"#CFCFCF\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_28695_52976\">\n <rect width=\"104\" height=\"80\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n}\n\nexport function FelixAISVG() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M14.4 0H1.6C1.17565 0 0.768687 0.168571 0.468629 0.468629C0.168571 0.768687 0 1.17565 0 1.6V16L3.2 12.8H14.4C14.8243 12.8 15.2313 12.6314 15.5314 12.3314C15.8314 12.0313 16 11.6243 16 11.2V1.6C16 1.17565 15.8314 0.768687 15.5314 0.468629C15.2313 0.168571 14.8243 0 14.4 0Z\"\n fill=\"#666666\"\n />\n </svg>\n );\n}\n\nexport function NoTasksSVG() {\n return (\n <svg width=\"80\" height=\"80\" viewBox=\"0 0 80 80\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M65.7381 7.6736L55.4908 7.63156C55.3308 6.29212 54.1922 5.25396 52.8107 5.25396L43.8982 5.25162V3.31077C43.8994 1.92462 42.776 0.800049 41.3899 0.800049C40.0037 0.800049 38.8791 1.92345 38.8791 3.30961V5.25046L29.9655 5.24812C28.6167 5.24812 27.4979 6.23723 27.2971 7.52996L16.529 7.48559C14.4503 7.47858 12.7582 9.15785 12.7512 11.2365L12.5422 75.0837C12.5352 77.1623 14.2145 78.8544 16.2931 78.8614L65.5033 79.0494C67.582 79.0565 69.2741 77.3772 69.2811 75.2985L69.4901 11.4514C69.4971 9.37272 67.8179 7.68061 65.7392 7.6736H65.7381ZM41.3887 4.59183C40.6063 4.59183 39.9733 3.95772 39.9733 3.17531C39.9733 2.3929 40.6074 1.75996 41.3899 1.75996C42.1723 1.75996 42.8052 2.39407 42.8052 3.17648C42.8052 3.95889 42.1711 4.59183 41.3887 4.59183Z\"\n fill=\"#E5E5E5\"\n />\n <path\n d=\"M64.6493 8.51906L54.402 8.47702C54.2421 7.13757 53.1035 6.09942 51.722 6.09942L42.8095 6.09708V4.15623C42.8095 2.77008 41.6873 1.64551 40.3011 1.64551C38.915 1.64551 37.7904 2.76891 37.7904 4.15507V6.09592L28.8767 6.09358C27.5279 6.09358 26.4092 7.08269 26.2083 8.37542L15.4403 8.33105C13.3616 8.32404 11.6695 10.0033 11.6625 12.082L11.4535 75.9291C11.4464 78.0078 13.1257 79.6999 15.2044 79.7069L64.4146 79.8949C66.4932 79.9019 68.1853 78.2226 68.1923 76.144L68.4014 12.2968C68.4084 10.2182 66.7291 8.52606 64.6505 8.51906H64.6493ZM40.2988 5.43729C39.5164 5.43729 38.8834 4.80318 38.8834 4.02077C38.8834 3.23836 39.5175 2.60542 40.2999 2.60542C41.0824 2.60542 41.7153 3.23953 41.7153 4.02194C41.7153 4.80435 41.0812 5.43729 40.2988 5.43729Z\"\n fill=\"#E0E0E0\"\n />\n <path\n d=\"M26.3718 8.27035C24.3457 8.26217 22.3184 8.254 20.2923 8.24583C19.0592 8.24115 17.826 8.23532 16.5928 8.23064C15.7462 8.22714 14.9182 8.19444 14.1019 8.47938C12.5149 9.03408 11.4441 10.4681 11.4079 12.152C11.4044 12.298 11.4079 12.444 11.4067 12.59C11.4032 13.5884 11.3997 14.5869 11.3974 15.5853C11.3834 19.6947 11.3705 23.8041 11.3565 27.9136C11.3378 33.5528 11.3191 39.192 11.3016 44.8323C11.2829 50.37 11.2654 55.9076 11.2467 61.4452C11.2339 65.3748 11.221 69.3055 11.2082 73.2351C11.2059 74.0829 11.2 74.9319 11.2 75.7797C11.1988 77.9961 12.7952 79.7653 15.056 79.8132C17.5761 79.8669 20.1008 79.8319 22.6209 79.8424C27.9658 79.8622 33.3107 79.8832 38.6545 79.9031C44.1185 79.9241 49.5826 79.9451 55.0466 79.9662C58.0455 79.9778 61.0443 79.9977 64.0432 80C66.3367 80.0024 68.3932 78.5018 68.4457 76.0716C68.4574 75.5134 68.4492 74.954 68.4516 74.3958C68.4632 70.8808 68.4749 67.3658 68.4866 63.8508C68.5041 58.43 68.5216 53.008 68.5403 47.5871C68.559 41.8907 68.5777 36.1955 68.5964 30.499C68.6116 26.0323 68.6256 21.5655 68.6408 17.0988C68.6454 15.8434 68.6489 14.5869 68.6536 13.3315C68.6571 12.3471 68.7108 11.3988 68.2355 10.4833C67.5442 9.15085 66.1814 8.42683 64.7077 8.41165C63.7886 8.40231 62.8696 8.40464 61.9494 8.39997C59.5566 8.39063 57.1626 8.38012 54.7699 8.37078C51.6052 8.35793 48.4417 8.34742 45.277 8.33691C39.9636 8.31823 34.6502 8.29838 29.3356 8.27969C28.3477 8.27619 27.3609 8.27268 26.373 8.26918C26.262 8.26918 25.7973 8.47821 26.0448 8.47938C29.4769 8.49223 32.9079 8.5039 36.34 8.51675C41.4875 8.53543 46.6351 8.55412 51.7827 8.5728C54.9182 8.58448 58.0548 8.59733 61.1903 8.61017C62.1969 8.61484 63.2024 8.61835 64.209 8.62302C65.7073 8.62886 67.0771 9.29916 67.7626 10.6888C68.1993 11.574 68.1479 12.4895 68.1456 13.4354C68.1351 16.5884 68.1246 19.7414 68.1141 22.8933L68.0627 38.4271C68.044 44.1002 68.0253 49.7744 68.0066 55.4475C67.9915 60.1349 67.9763 64.8236 67.9611 69.511C67.9541 71.7181 67.9623 73.9276 67.9389 76.1347C67.9167 78.2238 66.3577 79.7957 64.2779 79.7875L61.0934 79.7758C56.5624 79.7583 52.0326 79.7408 47.5016 79.7244C41.8577 79.7034 36.2139 79.6812 30.57 79.6602C26.3193 79.6438 22.0685 79.6275 17.8178 79.6111C17.0156 79.6076 16.2133 79.617 15.411 79.6018C13.1993 79.5609 11.7045 77.7777 11.7068 75.643C11.7092 73.2012 11.7232 70.7582 11.7314 68.3164C11.7465 63.504 11.7629 58.6904 11.7781 53.878C11.7967 48.1722 11.8154 42.4653 11.8341 36.7595C11.8505 31.6843 11.8668 26.6092 11.8843 21.534C11.8937 18.6052 11.903 15.6776 11.9135 12.7488C11.9135 12.5246 11.9124 12.3004 11.9159 12.0761C11.9357 10.7787 12.5535 9.54673 13.6897 8.87176C14.5807 8.34275 15.5769 8.43617 16.5648 8.43968C17.833 8.44435 19.1012 8.45019 20.3706 8.45486C22.2624 8.46303 24.153 8.47004 26.0448 8.47821C26.1558 8.47821 26.6205 8.26918 26.373 8.26801L26.3718 8.27035Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M66.1866 24.7687V73.4289C66.1855 74.669 65.1765 75.6745 63.9328 75.6745H18.0297C16.7861 75.6733 15.7771 74.6679 15.7771 73.4277V65.488L15.8156 61.1123V12.73C15.8168 11.4898 16.8258 10.4844 18.0695 10.4844H62.6693C64.6113 10.4844 66.1866 12.0597 66.1866 14.0029V22.4716V24.7687Z\"\n fill=\"#E5E5E5\"\n />\n <path\n d=\"M65.2093 25.5021V74.1623C65.2081 75.4024 64.1992 76.4079 62.9555 76.4079H17.0524C15.8087 76.4067 14.7997 75.4013 14.7997 74.1611V66.2214L14.8383 61.8457V13.4634C14.8394 12.2232 15.8484 11.2178 17.0921 11.2178H61.6919C63.6339 11.2178 65.2093 12.7931 65.2093 14.7363V23.205V25.5021Z\"\n fill=\"#E0E0E0\"\n />\n <path\n d=\"M63.7963 25.2918V74.2171C63.7951 75.4269 62.8235 76.4078 61.6242 76.4078H16.9706C15.7725 76.4066 14.7997 75.4257 14.7997 74.2159V66.4712L14.8371 62.2029V15.0118C14.8383 13.802 15.8099 12.821 17.0092 12.821H61.8461C62.9228 12.821 63.7963 13.6829 63.7963 14.7455V25.2918Z\"\n fill=\"white\"\n />\n <path\n d=\"M64.9267 25.5779C64.9267 27.555 64.9267 29.532 64.9267 31.5102C64.9267 36.0774 64.9267 40.6446 64.9267 45.213C64.9267 50.3921 64.9267 55.5712 64.9267 60.7514V72.0053C64.9267 72.7282 64.943 73.4534 64.9267 74.1762C64.9022 75.2459 64.205 76.2479 63.0594 76.2794C62.8632 76.2852 62.6659 76.2794 62.4697 76.2794C59.3821 76.2794 56.2956 76.2794 53.208 76.2794C48.1667 76.2794 43.1242 76.2794 38.0829 76.2794C33.3161 76.2794 28.5504 76.2794 23.7835 76.2794C21.5881 76.2794 19.3751 76.3623 17.182 76.2794C15.8484 76.2292 15.0894 75.1139 15.0835 73.8738C15.0789 72.8928 15.0835 71.9107 15.0835 70.9298C15.0835 69.2167 15.0718 67.5035 15.087 65.7904C15.1069 63.5448 15.1221 61.3003 15.1221 59.0546C15.1221 55.1379 15.1221 51.2223 15.1221 47.3056C15.1221 42.0985 15.1221 36.8914 15.1221 31.6842C15.1221 27.2537 15.1221 22.8231 15.1221 18.3926C15.1221 17.094 15.1221 15.7954 15.1221 14.4969C15.1221 13.3875 15.0251 12.1531 16.2104 11.5319C16.8457 11.199 17.8757 11.3509 18.5658 11.3509C20.0664 11.3509 21.567 11.3509 23.0676 11.3509C27.8088 11.3509 32.55 11.3509 37.2924 11.3509C42.3337 11.3509 47.3761 11.3509 52.4174 11.3509C55.3439 11.3509 58.2703 11.3509 61.1968 11.3509C61.5518 11.3509 61.8951 11.3497 62.2478 11.4279C63.8628 11.7876 64.9022 13.2543 64.9267 14.8659C64.9594 16.9504 64.9267 19.0372 64.9267 21.1217C64.9267 22.6082 64.9267 24.0937 64.9267 25.5802C64.9267 25.6994 65.4907 25.6118 65.4907 25.4296C65.4907 21.8422 65.562 18.2489 65.4907 14.6627C65.4569 12.9425 64.2319 11.463 62.5281 11.1547C62.1789 11.0916 61.8309 11.0916 61.4782 11.0916C60.4331 11.0916 59.3879 11.0916 58.3416 11.0916C53.9718 11.0916 49.6008 11.0916 45.2309 11.0916C39.9712 11.0916 34.7116 11.0916 29.4519 11.0916C25.8107 11.0916 22.1708 11.0916 18.5296 11.0916C17.6923 11.0916 16.7932 11.0029 16.0119 11.359C15.101 11.7748 14.5697 12.6214 14.5557 13.614C14.5522 13.8686 14.5557 14.1232 14.5557 14.3777C14.5557 17.595 14.5557 20.8134 14.5557 24.0306C14.5557 29.1607 14.5557 34.2919 14.5557 39.4219C14.5557 44.3289 14.5557 49.236 14.5557 54.143C14.5557 56.6899 14.5604 59.2356 14.5557 61.7826C14.5499 65.0325 14.5172 68.2824 14.5172 71.5335C14.5172 72.4164 14.4961 73.3016 14.5172 74.1832C14.5487 75.5507 15.5892 76.5083 16.9368 76.5386C17.5627 76.5527 18.1922 76.5386 18.8181 76.5386C22.625 76.5386 26.4332 76.5386 30.2401 76.5386C35.5325 76.5386 40.8249 76.5386 46.1161 76.5386C50.4532 76.5386 54.7904 76.5386 59.1275 76.5386C60.2217 76.5386 61.3147 76.5386 62.409 76.5386C63.9317 76.5386 65.4393 75.8111 65.4884 74.0793C65.5491 71.9201 65.4884 69.7503 65.4884 67.5899C65.4884 62.8476 65.4884 58.1041 65.4884 53.3617V37.7181C65.4884 34.1401 65.4884 30.5608 65.4884 26.9827C65.4884 26.4654 65.4884 25.9469 65.4884 25.4296C65.4884 25.3105 64.9244 25.3981 64.9244 25.5802L64.9267 25.5779Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M27.8648 19.6755H20.3817C19.5993 19.6755 18.9651 20.3097 18.9651 21.0921V28.5752C18.9651 29.3575 19.5993 29.9917 20.3817 29.9917H27.8648C28.6471 29.9917 29.2813 29.3575 29.2813 28.5752V21.0921C29.2813 20.3097 28.6471 19.6755 27.8648 19.6755Z\"\n fill=\"#E0E0E0\"\n />\n <path\n d=\"M20.2918 23.5267C21.3872 24.6221 22.4825 25.7174 23.5779 26.8128C23.7146 26.9494 24.0007 26.8385 24.1034 26.7101C25.458 25.0214 26.9785 23.299 28.757 22.0506C29.0688 21.8311 28.59 21.7365 28.4032 21.8673C26.5546 23.1647 24.9839 24.9339 23.5756 26.689C23.7508 26.6552 23.9259 26.6213 24.1011 26.5863C23.0057 25.4909 21.9103 24.3955 20.815 23.3001C20.669 23.1542 20.1341 23.3667 20.293 23.5255L20.2918 23.5267Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M46.5185 19.6755H32.3545C32.0997 19.6755 31.8932 19.8821 31.8932 20.1368V22.1489C31.8932 22.4036 32.0997 22.6102 32.3545 22.6102H46.5185C46.7732 22.6102 46.9797 22.4036 46.9797 22.1489V20.1368C46.9797 19.8821 46.7732 19.6755 46.5185 19.6755Z\"\n fill=\"#E0E0E0\"\n />\n <path\n d=\"M33.0746 21.286H45.4869C45.8069 21.286 45.9213 20.8796 45.5383 20.8796H33.1259C32.806 20.8796 32.6915 21.286 33.0746 21.286Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M32.9182 24.6866H59.4665C59.6346 24.6866 60.0784 24.4355 59.7047 24.4355H33.1564C32.9882 24.4355 32.5445 24.6866 32.9182 24.6866Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M32.9018 28.5776H59.1873C59.5155 28.5776 59.6147 28.1467 59.2329 28.1467H32.9473C32.6192 28.1467 32.5199 28.5776 32.9018 28.5776Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M27.8648 33.1169H20.3817C19.5993 33.1169 18.9651 33.7511 18.9651 34.5335V42.0166C18.9651 42.7989 19.5993 43.4331 20.3817 43.4331H27.8648C28.6471 43.4331 29.2813 42.7989 29.2813 42.0166V34.5335C29.2813 33.7511 28.6471 33.1169 27.8648 33.1169Z\"\n fill=\"#E0E0E0\"\n />\n <path\n d=\"M20.2918 36.9671C21.3872 38.0625 22.4825 39.1579 23.5779 40.2532C23.7146 40.3899 24.0007 40.2789 24.1034 40.1505C25.458 38.4619 26.9785 36.7394 28.757 35.491C29.0688 35.2715 28.59 35.1769 28.4032 35.3077C26.5546 36.6051 24.9839 38.3743 23.5756 40.1295C23.7508 40.0956 23.9259 40.0617 24.1011 40.0267C23.0057 38.9313 21.9103 37.8359 20.815 36.7406C20.669 36.5946 20.1341 36.8071 20.293 36.9659L20.2918 36.9671Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M46.5185 33.1169H32.3545C32.0997 33.1169 31.8932 33.3235 31.8932 33.5782V35.5903C31.8932 35.8451 32.0997 36.0516 32.3545 36.0516H46.5185C46.7732 36.0516 46.9797 35.8451 46.9797 35.5903V33.5782C46.9797 33.3235 46.7732 33.1169 46.5185 33.1169Z\"\n fill=\"#E0E0E0\"\n />\n <path\n d=\"M33.0746 34.7274H45.4869C45.8069 34.7274 45.9213 34.321 45.5383 34.321H33.1259C32.806 34.321 32.6915 34.7274 33.0746 34.7274Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M32.9182 38.128H59.4665C59.6346 38.128 60.0784 37.877 59.7047 37.877H33.1564C32.9882 37.877 32.5445 38.128 32.9182 38.128Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M32.9018 42.019H59.1873C59.5155 42.019 59.6147 41.5881 59.2329 41.5881H32.9473C32.6192 41.5881 32.5199 42.019 32.9018 42.019Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M27.8643 46.5571H20.3812C19.5989 46.5571 18.9647 47.1913 18.9647 47.9736V55.4568C18.9647 56.2391 19.5989 56.8733 20.3812 56.8733H27.8643C28.6466 56.8733 29.2808 56.2391 29.2808 55.4568V47.9736C29.2808 47.1913 28.6466 46.5571 27.8643 46.5571Z\"\n fill=\"#F8F8F8\"\n />\n <path\n d=\"M46.5185 46.5571H32.3545C32.0998 46.5571 31.8932 46.7636 31.8932 47.0184V49.0305C31.8932 49.2852 32.0998 49.4918 32.3545 49.4918H46.5185C46.7733 49.4918 46.9798 49.2852 46.9798 49.0305V47.0184C46.9798 46.7636 46.7733 46.5571 46.5185 46.5571Z\"\n fill=\"#E0E0E0\"\n />\n <path\n d=\"M33.0747 48.1688H45.487C45.807 48.1688 45.9214 47.7625 45.5384 47.7625H33.1261C32.8061 47.7625 32.6916 48.1688 33.0747 48.1688Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M32.9183 51.5692H59.4666C59.6347 51.5692 60.0785 51.3181 59.7048 51.3181H33.1565C32.9883 51.3181 32.5446 51.5692 32.9183 51.5692Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M32.9019 55.4602H59.1874C59.5155 55.4602 59.6148 55.0293 59.2329 55.0293H32.9474C32.6193 55.0293 32.52 55.4602 32.9019 55.4602Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M27.8643 59.7529H20.3812C19.5989 59.7529 18.9647 60.3871 18.9647 61.1695V68.6526C18.9647 69.4349 19.5989 70.0691 20.3812 70.0691H27.8643C28.6466 70.0691 29.2808 69.4349 29.2808 68.6526V61.1695C29.2808 60.3871 28.6466 59.7529 27.8643 59.7529Z\"\n fill=\"#F8F8F8\"\n />\n <path\n d=\"M46.5185 59.7529H32.3545C32.0998 59.7529 31.8932 59.9595 31.8932 60.2142V62.2263C31.8932 62.481 32.0998 62.6876 32.3545 62.6876H46.5185C46.7733 62.6876 46.9798 62.481 46.9798 62.2263V60.2142C46.9798 59.9595 46.7733 59.7529 46.5185 59.7529Z\"\n fill=\"#E0E0E0\"\n />\n <path\n d=\"M33.0747 61.3644H45.487C45.807 61.3644 45.9214 60.958 45.5384 60.958H33.1261C32.8061 60.958 32.6916 61.3644 33.0747 61.3644Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M32.9183 64.765H59.4666C59.6347 64.765 60.0785 64.5139 59.7048 64.5139H33.1565C32.9883 64.5139 32.5446 64.765 32.9183 64.765Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M32.9019 68.656H59.1874C59.5155 68.656 59.6148 68.2251 59.2329 68.2251H32.9474C32.6193 68.2251 32.52 68.656 32.9019 68.656Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M54.4027 8.47824C54.2427 7.1388 53.1042 6.10064 51.7227 6.10064L42.8102 6.0983V4.15745C42.8102 2.7713 41.6879 1.64673 40.3018 1.64673C38.9156 1.64673 37.7911 2.77013 37.7911 4.15629V6.09714L28.8774 6.0948C27.5286 6.0948 26.4099 7.08391 26.209 8.37664C26.188 8.51327 26.1763 8.65224 26.1763 8.79471V9.88658C26.1763 11.3778 27.3838 12.5877 28.8762 12.5877L51.7215 12.5935C53.2128 12.5935 54.4226 11.3848 54.4226 9.89359V8.80171C54.4226 8.69194 54.4156 8.58451 54.4027 8.47824ZM40.2995 5.43734C39.517 5.43734 38.8841 4.80324 38.8841 4.02082C38.8841 3.23841 39.5182 2.60548 40.3006 2.60548C41.083 2.60548 41.716 3.23958 41.716 4.02199C41.716 4.8044 41.0819 5.43734 40.2995 5.43734Z\"\n fill=\"#E0E0E0\"\n />\n <path\n d=\"M54.6558 8.40923C54.4538 7.05694 53.3584 6.05031 51.9886 5.97207C51.5215 5.94521 51.0486 5.9674 50.5803 5.96623C48.5857 5.96623 46.5912 5.96623 44.5966 5.96507C44.0349 5.96507 43.472 5.96507 42.9103 5.96507C42.9605 5.98609 43.0119 6.00827 43.0621 6.02929C43.0621 5.20951 43.1894 4.27179 42.9862 3.46952C42.6686 2.21299 41.4459 1.42824 40.1789 1.52283C38.9504 1.61392 37.8141 2.48041 37.5794 3.72176C37.4311 4.50417 37.5339 5.37183 37.5339 6.16359C37.653 6.09702 37.7709 6.03046 37.89 5.9639C34.9706 5.9639 32.0511 5.94755 29.1329 5.96156C28.3201 5.96507 27.5377 6.17994 26.9106 6.71828C26.0254 7.47968 25.9203 8.47929 25.9203 9.56883C25.9203 10.7238 26.2893 11.7643 27.3497 12.3575C27.8471 12.6354 28.3948 12.716 28.9553 12.7183C31.7206 12.73 34.4859 12.7195 37.2513 12.7207C41.0465 12.7207 44.843 12.723 48.6383 12.7242C49.5842 12.7242 50.5301 12.7312 51.476 12.7242C53.2884 12.7137 54.6652 11.477 54.6734 9.63306C54.6745 9.22667 54.6909 8.81445 54.6535 8.40923C54.6407 8.26326 54.1292 8.36719 54.1455 8.54469C54.2284 9.45322 54.2646 10.5498 53.7637 11.3415C53.2965 12.0784 52.5468 12.4509 51.6897 12.4603C50.8606 12.4696 50.0303 12.4603 49.2 12.4603C45.762 12.4603 42.3241 12.4579 38.885 12.4579C35.8955 12.4579 32.9059 12.4568 29.9176 12.4556C28.8175 12.4556 27.7782 12.4497 27.0017 11.4793C26.3699 10.6899 26.3956 9.69612 26.4259 8.73971C26.468 7.40494 27.4174 6.25584 28.8035 6.22548C31.7604 6.16125 34.7265 6.22665 37.6845 6.22782C37.7954 6.22782 38.0407 6.1741 38.0407 6.02813C38.0407 5.40103 38.0243 4.77043 38.0407 4.14333C38.0769 2.7782 39.1512 1.54969 40.6075 1.81711C41.7857 2.03432 42.5273 3.10984 42.553 4.25894C42.567 4.89304 42.553 5.52948 42.553 6.16476C42.553 6.22198 42.6721 6.22898 42.7048 6.22898C45.6231 6.22898 48.5437 6.19862 51.462 6.23132C52.8469 6.2465 53.9388 7.16087 54.1455 8.54469C54.1677 8.6965 54.6792 8.58089 54.6535 8.40923H54.6558Z\"\n fill=\"#B9B9B9\"\n />\n <path\n d=\"M40.4018 5.30531C38.9619 5.22707 38.6256 2.77707 40.1986 2.73853C41.663 2.70233 41.955 5.2224 40.4018 5.30531C40.2302 5.31465 39.86 5.58791 40.1975 5.56923C41.0254 5.52485 41.8592 5.03672 41.9596 4.14103C42.0624 3.21965 41.3022 2.47344 40.4018 2.47461C39.6007 2.47461 38.7879 3.00361 38.6513 3.82807C38.489 4.81251 39.2726 5.52018 40.1975 5.56923C40.3761 5.57857 40.7416 5.32399 40.4018 5.30531Z\"\n fill=\"#B9B9B9\"\n />\n </svg>\n );\n}\n\nexport function FelixAIActiveSVG() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M14.4 0H1.6C1.17565 0 0.768687 0.168571 0.468629 0.468629C0.168571 0.768687 0 1.17565 0 1.6V16L3.2 12.8H14.4C14.8243 12.8 15.2313 12.6314 15.5314 12.3314C15.8314 12.0313 16 11.6243 16 11.2V1.6C16 1.17565 15.8314 0.768687 15.5314 0.468629C15.2313 0.168571 14.8243 0 14.4 0Z\"\n fill=\"#7A8EF1\"\n />\n <path\n d=\"M6.49905 8.45749C6.57418 8.51054 6.66017 8.54622 6.75079 8.56194C6.84142 8.57766 6.9344 8.57303 7.02301 8.54838C7.11162 8.52373 7.19364 8.47967 7.26313 8.41941C7.33261 8.35915 7.38782 8.28419 7.42476 8.19996L7.7181 7.30853C7.78944 7.09407 7.90975 6.89916 8.06951 6.73927C8.22927 6.57939 8.42407 6.45891 8.63848 6.38739L9.49105 6.11044C9.61223 6.06828 9.71701 5.98896 9.79048 5.88377C9.8472 5.80402 9.88415 5.71193 9.89827 5.61509C9.91239 5.51825 9.90328 5.41944 9.87168 5.32682C9.84009 5.23419 9.78692 5.15041 9.71656 5.08239C9.64621 5.01436 9.56068 4.96404 9.46705 4.93558L8.62324 4.6613C8.40871 4.59013 8.21371 4.46998 8.05369 4.31035C7.89367 4.15073 7.77303 3.95603 7.70133 3.74168L7.42438 2.88949C7.3818 2.76874 7.30272 2.66424 7.1981 2.59044C7.09285 2.51787 6.96803 2.479 6.84019 2.479C6.71235 2.479 6.58753 2.51787 6.48229 2.59044C6.37605 2.66557 6.29609 2.77217 6.25372 2.8952L5.97334 3.75806C5.90181 3.96684 5.78373 4.15662 5.62804 4.31304C5.47235 4.46946 5.28312 4.58842 5.07467 4.66091L4.22133 4.93749C4.09991 4.98041 3.99488 5.06011 3.92087 5.16551C3.84685 5.2709 3.80752 5.39675 3.80836 5.52553C3.8092 5.65432 3.85016 5.77964 3.92554 5.88406C4.00092 5.98849 4.10698 6.06681 4.22895 6.10815L5.07314 6.38244C5.34684 6.47429 5.58744 6.64467 5.76495 6.87234C5.86629 7.00301 5.94438 7.14968 5.99581 7.30663L6.27314 8.15768C6.31581 8.27882 6.39505 8.38358 6.49981 8.45749M10.2118 10.7737C10.2893 10.8285 10.382 10.8578 10.477 10.8575C10.5712 10.8578 10.6633 10.8289 10.7406 10.7748C10.8201 10.7187 10.8796 10.6386 10.9105 10.5462L11.0522 10.1108C11.0822 10.0204 11.1328 9.93824 11.2 9.87079C11.2673 9.80335 11.3493 9.75249 11.4396 9.72225L11.8838 9.57825C11.9734 9.54643 12.0509 9.48769 12.1058 9.41008C12.1607 9.33247 12.1903 9.23979 12.1905 9.14472C12.1905 9.04717 12.1593 8.95218 12.1014 8.87363C12.0436 8.79508 11.9621 8.73709 11.869 8.70815L11.4331 8.5672C11.3427 8.53719 11.2605 8.48652 11.193 8.4192C11.1256 8.35188 11.0748 8.26978 11.0446 8.17939L10.8998 7.73634C10.8686 7.64592 10.8098 7.56757 10.7317 7.51232C10.6536 7.45708 10.5601 7.42773 10.4645 7.4284C10.3688 7.42907 10.2758 7.45974 10.1985 7.51607C10.1212 7.57241 10.0635 7.65158 10.0335 7.74244L9.89105 8.17901C9.86185 8.26823 9.81256 8.34956 9.74698 8.41673C9.68139 8.4839 9.60126 8.53512 9.51276 8.56644L9.06857 8.71044C8.97879 8.74215 8.90103 8.80089 8.84598 8.87859C8.79093 8.95629 8.7613 9.04912 8.76114 9.14434C8.76124 9.24038 8.79158 9.33394 8.84786 9.41176C8.90414 9.48958 8.9835 9.5477 9.07467 9.57787L9.51048 9.71958C9.60127 9.74952 9.68375 9.80039 9.75125 9.86809C9.81875 9.93579 9.86938 10.0184 9.89905 10.1093L10.0434 10.5523C10.0749 10.6419 10.1335 10.7193 10.211 10.7741\"\n fill=\"#E3E8FF\"\n />\n </svg>\n );\n}\n\nexport function AIPrompterCloseIcon() {\n return (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"close\">\n <path\n id=\"Vector\"\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.00683 9.61524L12.048 13.6518C12.2624 13.866 12.5533 13.9863 12.8566 13.9863C13.1598 13.9863 13.4507 13.866 13.6651 13.6518C13.8795 13.4376 14 13.1471 14 12.8442C14 12.5413 13.8795 12.2508 13.6651 12.0366L9.62239 8L13.6643 3.96343C13.7705 3.85737 13.8546 3.73147 13.9121 3.59292C13.9695 3.45437 13.999 3.30588 13.999 3.15592C13.9989 3.00597 13.9693 2.85749 13.9118 2.71897C13.8544 2.58044 13.7701 2.45458 13.6639 2.34857C13.5578 2.24257 13.4317 2.15849 13.293 2.10113C13.1543 2.04378 13.0056 2.01428 12.8555 2.01432C12.7054 2.01435 12.5567 2.04392 12.4181 2.10134C12.2794 2.15876 12.1534 2.2429 12.0472 2.34895L8.00683 6.38552L3.96566 2.34895C3.86026 2.23985 3.73417 2.15281 3.59474 2.09291C3.45531 2.033 3.30533 2.00144 3.15355 2.00005C3.00177 1.99866 2.85124 2.02748 2.71073 2.08482C2.57023 2.14216 2.44256 2.22689 2.33518 2.33404C2.2278 2.44119 2.14287 2.56863 2.08533 2.70893C2.02778 2.84922 1.99879 2.99955 2.00004 3.15116C2.00129 3.30276 2.03275 3.4526 2.09259 3.59193C2.15243 3.73126 2.23945 3.85729 2.34858 3.96267L6.39128 8L2.34934 12.0373C2.24021 12.1427 2.15319 12.2687 2.09335 12.4081C2.03351 12.5474 2.00205 12.6972 2.0008 12.8488C1.99955 13.0004 2.02855 13.1508 2.08609 13.2911C2.14363 13.4314 2.22857 13.5588 2.33594 13.666C2.44332 13.7731 2.57099 13.8578 2.7115 13.9152C2.852 13.9725 3.00254 14.0013 3.15431 14C3.30609 13.9986 3.45607 13.967 3.5955 13.9071C3.73493 13.8472 3.86102 13.7601 3.96642 13.651L8.00683 9.61524Z\"\n fill=\"#E548FF\"\n />\n </g>\n </svg>\n );\n}\n\nexport function AcceptedIcon(props: SvgIconProps) {\n return (\n <SvgIcon {...props} width=\"14\" height=\"14\" viewBox=\"0 0 21 21\" fill=\"none\">\n <svg>\n <rect\n x=\"1.125\"\n y=\"1.125\"\n width=\"15.75\"\n height=\"15.75\"\n rx=\"7.875\"\n fill=\"#EFFDF3\"\n stroke=\"white\"\n strokeWidth=\"1.75\"\n />\n <path\n d=\"M7.88032 11.7509L5.5835 9.45406L6.62943 8.40577L7.88032 9.66019L11.5364 6L12.5835 7.04711L7.88032 11.7509Z\"\n fill=\"#8CCF95\"\n />\n </svg>\n </SvgIcon>\n );\n}\n\nexport function DeclinedIcon(props: SvgIconProps) {\n return (\n <SvgIcon {...props}>\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 21 21\" fill=\"none\">\n <rect\n x=\"1.125\"\n y=\"1.125\"\n width=\"15.75\"\n height=\"15.75\"\n rx=\"7.875\"\n fill=\"#FCEFEF\"\n stroke=\"white\"\n strokeWidth=\"1.75\"\n />\n <g clipPath=\"url(#clip0_27100_3650)\">\n <path\n d=\"M12.0883 6.94738L12.1769 6.859L12.0884 6.77048L11.2295 5.91161L11.141 5.8231L11.0526 5.91174L9 7.97015L6.94738 5.91174L6.859 5.8231L6.77048 5.91161L5.91161 6.77048L5.8231 6.859L5.91174 6.94738L7.97015 9L5.91174 11.0526L5.8231 11.141L5.91161 11.2295L6.77048 12.0884L6.859 12.1769L6.94738 12.0883L9 10.0298L11.0526 12.0883L11.141 12.1769L11.2295 12.0884L12.0884 11.2295L12.1769 11.141L12.0883 11.0526L10.0298 9L12.0883 6.94738Z\"\n fill=\"#E37D7A\"\n stroke=\"#E37D7A\"\n strokeWidth=\"0.25\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_27100_3650\">\n <rect width=\"8\" height=\"8\" fill=\"white\" transform=\"translate(5 5)\" />\n </clipPath>\n </defs>\n </svg>\n </SvgIcon>\n );\n}\n","import React from 'react';\nimport { classes } from './styles';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nexport interface IGenericDialogProps {\n url: string;\n title: string;\n description: string;\n moreContent?: string;\n buttonText: string;\n buttonCallback: (url: string, id: number) => void;\n callbackLoading: boolean;\n isDialogOpen: boolean;\n setDialogOpen: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nfunction GenericDialog({\n url,\n title,\n description,\n moreContent,\n buttonText,\n buttonCallback,\n callbackLoading,\n isDialogOpen,\n setDialogOpen\n}: IGenericDialogProps) {\n return (\n <Dialog\n open={isDialogOpen}\n onClose={() => {\n setDialogOpen(false);\n if (title === 'Complete' && url) buttonCallback(url, 0);\n }}\n sx={{ '& .MuiPaper-root': classes.dialog, zIndex: '20000' }}\n >\n <CloseIcon\n onClick={() => {\n setDialogOpen(false);\n url && buttonCallback(url, 0);\n }}\n sx={classes.closeIcon}\n />\n {title !== 'Failed' ? (\n <Box sx={classes.tickWrapper}>\n <DoneIcon sx={classes.tickGreen} />\n </Box>\n ) : (\n <Box sx={classes.crossWrapper}>\n <CloseIcon sx={classes.crossRed} />\n </Box>\n )}\n <Box sx={classes.dialogHeader}>{title}</Box>\n {description && <Box>{description}</Box>}\n {moreContent && <Box>{moreContent}</Box>}\n <Box sx={classes.dialogButtonContainer}>\n <Button\n id={`${buttonText.toLowerCase().split(' ').join('-')}-button`}\n data-testid={`${buttonText.toLowerCase().split(' ').join('-')}-button`}\n disableElevation\n sx={title !== 'Failed' ? classes.confirmationButton : classes.buttonRed}\n onClick={() => {\n buttonCallback(url, 0);\n if (title === 'Complete' && url) window.open(url);\n }}\n style={{ padding: '10px 30px' }}\n >\n {callbackLoading ? <CircularProgress size={20} color=\"inherit\" /> : buttonText}\n </Button>\n </Box>\n </Dialog>\n );\n}\n\nexport default GenericDialog;\n","import React, { useEffect, useState, useCallback } from 'react';\nimport StyledModal from '../GenericModal/StyledModal';\nimport GenericDialog from './GenericDialog';\nimport ModalFooterButtons from '../GenericModal/ModalFooterButtons';\nimport { classes } from './styles';\nimport { Box, LinearProgress } from '@mui/material';\nimport FileTickSVG from '../Graphics/FileTickSVG';\n\nconst DownloadModal = ({\n type,\n isOpen,\n handleClose,\n downloadAPICall,\n emailFallback = false\n}: {\n type: 'attachments' | 'pdf' | 'csv' | 'attachmentsInPdf';\n isOpen: boolean;\n handleClose: () => void;\n downloadAPICall: (type: string) => Promise<string>;\n emailFallback?: boolean;\n}) => {\n const [confirmCancelIsOpen, setConfirmCancelIsOpen] = useState(false);\n const [generatingDownload, setGeneratingDownload] = useState(true);\n const [downloadURL, setDownloadURL] = useState<string>('');\n const [emailFallbackMessage, setEmailFallbackMessage] = useState<string>('');\n const [hasFetchedData, setHasFetchedData] = useState(false);\n\n const handlePrimaryButtonClick = () => {\n generatingDownload ? setConfirmCancelIsOpen(true) : handleClose();\n };\n\n const handleConfirmClose = () => {\n setConfirmCancelIsOpen(false);\n setHasFetchedData(false);\n handleClose();\n };\n\n const handleDownload = useCallback(\n async (type: 'attachments' | 'pdf' | 'csv' | 'attachmentsInPdf') => {\n if (emailFallback) {\n setGeneratingDownload(true);\n const data = await downloadAPICall(type);\n setGeneratingDownload(false);\n setEmailFallbackMessage(data);\n return;\n }\n setGeneratingDownload(true);\n const id = await downloadAPICall(type);\n const url = `/admin/assets/${id}`;\n setDownloadURL(url);\n setGeneratingDownload(false);\n // Automatically start file download\n const link = document.createElement('a');\n link.href = url;\n link.setAttribute('download', '');\n document.body.appendChild(link);\n link.click();\n setHasFetchedData(true);\n },\n [downloadAPICall]\n );\n\n useEffect(() => {\n if (isOpen && !hasFetchedData) {\n handleDownload(type);\n }\n }, [handleDownload, isOpen, type]);\n\n return (\n <>\n <StyledModal\n isOpen={isOpen}\n handleClose={() => setConfirmCancelIsOpen(true)}\n styleOverrides={{\n maxWidth: '740px',\n maxHeight: '400px'\n }}\n label={`download-${type}`}\n modalTitle={\n type === 'attachments' ? 'Download attachments' : `Candidate ${type.toUpperCase()} Export`\n }\n subHeaderStyling={false}\n >\n <Box sx={classes.downloadModalContent}>\n {generatingDownload ? (\n <>\n <Box sx={classes.downloadModalDescription}>\n {type === 'attachments'\n ? 'Your attachments are being prepared, please wait...'\n : `Your ${type.toUpperCase()} file is being prepared, please wait...`}\n </Box>\n <Box sx={{ width: '100%' }}>\n <LinearProgress color=\"inherit\" />\n </Box>\n </>\n ) : (\n <>\n <Box sx={{ width: '100%', textAlign: 'center' }}>\n <FileTickSVG />\n </Box>\n <Box sx={{ ...classes.downloadModalDescription, textAlign: 'center' }}>\n {emailFallback ? (\n emailFallbackMessage\n ) : (\n <>\n Your download should have started automatically. <br />\n If it hasn't, click{' '}\n <a href={downloadURL} download>\n here\n </a>\n </>\n )}\n </Box>\n </>\n )}\n </Box>\n <ModalFooterButtons\n primaryButtonText={generatingDownload ? 'Cancel' : 'Done'}\n primaryButtonCallback={handlePrimaryButtonClick}\n primaryButtonID={generatingDownload ? 'cancel-download-button' : 'done-download-button'}\n secondaryButtonID=\"cancel-download-attachments-button\"\n />\n </StyledModal>\n <GenericDialog\n isDialogOpen={confirmCancelIsOpen}\n setDialogOpen={setConfirmCancelIsOpen}\n title=\"Are you sure you want to cancel?\"\n description=\"\"\n buttonText=\"Cancel\"\n buttonCallback={handleConfirmClose}\n secondaryButtonText=\"Continue\"\n callbackLoading={false}\n url=\"\"\n />\n </>\n );\n};\n\nexport default DownloadModal;\n","import React, { useEffect, useState } from 'react';\nimport { Document, Page, pdfjs } from 'react-pdf';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { classes } from './styles';\n\n// pdf.js worker needed for react-pdf\npdfjs.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjs.version}/pdf.worker.js`;\n\nexport interface IJobAttachment {\n id: number;\n attached_content_type: string;\n attached_file_name: string;\n created_at: string;\n public_link?: string;\n url?: string;\n attached_by?: string;\n updated_at?: string;\n application_link?: string;\n}\n\nexport default function FilePreviewModal({\n previewOpen,\n setPreviewOpen,\n selectedAttachment,\n isShareable,\n applicationLink,\n allowDownload = true\n}: {\n previewOpen: boolean;\n setPreviewOpen: (open: boolean) => void;\n selectedAttachment: IJobAttachment | null;\n isShareable: boolean;\n applicationLink?: string;\n allowDownload?: boolean;\n}) {\n const BASE_URL = window.location.origin;\n const [numPages, setNumPages] = useState(0);\n const [copied, setCopied] = useState(false);\n const [text, setText] = useState('');\n const [preview, setPreview] = useState({\n data: [],\n prev: false,\n next: false,\n index: 0\n });\n const [isLoadingPreview, setIsLoadingPreview] = useState(true);\n\n const handleCopy = () => {\n setCopied(true);\n setTimeout(() => setCopied(false), 3000);\n };\n\n const handleClose = () => {\n setPreviewOpen(false);\n setIsLoadingPreview(true);\n };\n\n const getText = async () => {\n try {\n const response = await fetch(`${BASE_URL}/admin/assets/${selectedAttachment?.id}`);\n const text = await response.text();\n setText(text);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoadingPreview(false);\n }\n };\n\n const getPreveiwImage = async (id: number, link: string, index: number) => {\n setIsLoadingPreview(true);\n try {\n const response = await fetch(`${link}/assets/${id}/preview?index=${index}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'x-csrf-token': document.querySelector('meta[name=\"csrf-token\"]')?.getAttribute('content')\n }\n }).then((response) => response.json());\n setPreview({\n data: response.data,\n prev: response.prev,\n next: response.next,\n index: index\n });\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoadingPreview(false);\n }\n };\n\n function onDocumentLoadSuccess({ numPages }: { numPages: number }) {\n setNumPages(numPages);\n }\n\n useEffect(() => {\n if (applicationLink && selectedAttachment.id && selectedAttachment.previewable)\n getPreveiwImage(selectedAttachment.id, applicationLink, 0);\n }, [applicationLink, selectedAttachment]);\n\n const handleDisplayContent = () => {\n if (!selectedAttachment) return null;\n if (selectedAttachment.attached_content_type?.split('/')[0] === 'image') {\n return (\n <>\n <img\n src={`${BASE_URL}/admin/assets/${selectedAttachment.id}`}\n alt={selectedAttachment.attached_file_name}\n style={{\n ...(classes.imagePreview as React.CSSProperties),\n opacity: isLoadingPreview ? 0 : 1\n }}\n onLoad={() => setIsLoadingPreview(false)}\n />\n {isLoadingPreview && (\n <Box sx={{ ...classes.previewLoader, ...classes.absoluteLoader }}>\n <CircularProgress sx={{ color: '#084D6D' }} />\n Loading Preview\n </Box>\n )}\n </>\n );\n } else if (selectedAttachment.attached_content_type?.split('/')[0] === 'video') {\n return (\n <Box sx={classes.mediaContentContainer}>\n <video width=\"100%\" controls>\n <source src={`${BASE_URL}/admin/assets/${selectedAttachment.id}`} />\n Your browser does not support the video tag.\n </video>\n </Box>\n );\n } else if (selectedAttachment.attached_content_type?.split('/')[0] === 'audio') {\n return (\n <Box sx={classes.mediaContentContainer}>\n <audio controls>\n <source src={`${BASE_URL}/admin/assets/${selectedAttachment.id}`} />\n Your browser does not support the audio tag.\n </audio>\n </Box>\n );\n } else if (selectedAttachment.attached_content_type === 'text/plain') {\n getText();\n return (\n <>\n <Box>\n <pre>{text}</pre>\n </Box>\n {isLoadingPreview && (\n <Box sx={{ ...classes.previewLoader, ...classes.absoluteLoader }}>\n <CircularProgress sx={{ color: '#084D6D' }} />\n Loading Preview\n </Box>\n )}\n </>\n );\n } else if (selectedAttachment.attached_content_type?.split('/')[1] === 'pdf') {\n return (\n <Box>\n <Document\n file={`${BASE_URL}/admin/assets/${selectedAttachment.id}`}\n loading={\n <Box sx={classes.previewLoader}>\n <CircularProgress sx={{ color: '#084D6D' }} />\n Loading Preview\n </Box>\n }\n onLoadSuccess={onDocumentLoadSuccess}\n style={{ paddingBottom: '5px' }}\n >\n {[...Array(numPages)].map((_, page) => (\n <Box sx={classes.pdfPage} key={page}>\n <Page pageNumber={page + 1} renderTextLayer={false} renderAnnotationLayer={false} />\n </Box>\n ))}\n </Document>\n </Box>\n );\n } else if (\n (selectedAttachment.attached_content_type?.split('/')[1] === 'msword' ||\n selectedAttachment.attached_file_name.split('.').pop() === 'odt' ||\n selectedAttachment.attached_content_type?.split('/')[1] ===\n 'vnd.openxmlformats-officedocument.wordprocessingml.document') &&\n selectedAttachment.previewable\n ) {\n return (\n <>\n {preview.data ? (\n <Box sx={{ display: 'flex', flexDirection: 'column' }}>\n <Box sx={classes.docPreviewNavigation}>\n {preview.prev && (\n <Button\n sx={classes.downloadButton}\n onClick={() =>\n getPreveiwImage(selectedAttachment.id, applicationLink, preview.index - 1)\n }\n >\n Previous\n </Button>\n )}\n {preview.next && (\n <Button\n sx={classes.downloadButton}\n onClick={() =>\n getPreveiwImage(selectedAttachment.id, applicationLink, preview.index + 1)\n }\n >\n Next\n </Button>\n )}\n </Box>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n overflowX: 'auto'\n }}\n >\n {preview.data?.map((item, index) => (\n <img\n key={index}\n src={item}\n alt={selectedAttachment.attached_file_name}\n style={{ ...classes.imagePreview, width: '100%', borderBottom: '2px solid black' }}\n />\n ))}\n </Box>\n </Box>\n ) : (\n !isLoadingPreview && <Box sx={classes.noPreview}>No preview available.</Box>\n )}\n {isLoadingPreview && (\n <Box sx={{ ...classes.previewLoader, ...classes.absoluteLoader }}>\n <CircularProgress sx={{ color: '#084D6D' }} />\n Loading Preview\n </Box>\n )}\n </>\n );\n } else {\n return <Box sx={classes.noPreview}>No preview available for this file type.</Box>;\n }\n };\n\n return (\n <Modal open={previewOpen} onClose={handleClose} aria-labelledby=\"file-preview-modal\">\n <Box sx={classes.attachmentPreviewModal}>\n <CloseIcon\n id=\"close-attachment-preview-button\"\n onClick={handleClose}\n sx={classes.closeIcon}\n className=\"close-button\"\n />\n <Box id=\"file-preview-modal-title\" sx={classes.attachmentPreviewTitle}>\n {selectedAttachment?.attached_file_name}\n {isShareable && (\n <Box sx={{ ...classes.fileLinkContainer, marginTop: '8px' }}>\n <a href={selectedAttachment?.public_link} target=\"_blank\" rel=\"noopener noreferrer\">\n <Box sx={{ fontWeight: 'regular', color: '#999999' }}>\n {selectedAttachment?.public_link}\n </Box>\n </a>\n <CopyToClipboard text={selectedAttachment?.public_link} onCopy={() => handleCopy()}>\n <Button sx={classes.copyButton}>{copied ? 'Copied!' : 'Copy'}</Button>\n </CopyToClipboard>\n </Box>\n )}\n </Box>\n <Box sx={classes.attachmentPreviewContent}>{handleDisplayContent()}</Box>\n <Box sx={classes.attachmentPreviewActions}>\n {allowDownload && (\n <a href={`${BASE_URL}/admin/assets/${selectedAttachment?.id}`}>\n <Button id=\"download-attachment-button\" sx={classes.downloadButton}>\n Download\n </Button>\n </a>\n )}\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { ReactElement, SetStateAction, CSSProperties, Dispatch } from 'react';\nimport { classes } from './styles';\nimport { Box, Dialog, Button, CircularProgress } from '@mui/material';\n\nexport interface IGenericDialogProps {\n alternateColor?: boolean;\n buttonCallback: (url: string, id: number) => void;\n buttonText: string;\n callbackLoading: boolean;\n description: string | ReactElement;\n dialogId?: number;\n disablePrimaryButton?: boolean;\n isDialogOpen: boolean;\n onCancelCallback?: () => void;\n overrideColor?: { primary: CSSProperties; secondary: CSSProperties };\n primaryButtonId?: string;\n secondaryButtonId?: string;\n secondaryButtonText?: string;\n setDialogOpen: Dispatch<SetStateAction<boolean>> | ((value: boolean) => void);\n switchOrder?: boolean;\n title: string;\n url: string;\n}\n\nfunction GenericDialog({\n alternateColor,\n buttonCallback,\n buttonText,\n callbackLoading,\n description,\n dialogId,\n disablePrimaryButton,\n isDialogOpen,\n onCancelCallback,\n overrideColor,\n primaryButtonId,\n secondaryButtonId,\n secondaryButtonText,\n setDialogOpen,\n switchOrder,\n title,\n url\n}: IGenericDialogProps) {\n return (\n <Dialog\n open={isDialogOpen}\n onClose={() => setDialogOpen(false)}\n sx={{ '& .MuiPaper-root': { ...classes.dialog, maxWidth: '500px' }, zIndex: '20000' }}\n >\n <h4>{title}</h4>\n {description && <span>{description}</span>}\n <Box\n sx={{\n ...classes.dialogButtonContainer,\n flexDirection: switchOrder ? 'row-reverse' : 'row'\n }}\n >\n <Button\n disableElevation\n id={secondaryButtonId}\n sx={{\n ...classes.buttonSecondaryLight,\n ...(alternateColor && classes.secondaryButtonAlternateColor),\n ...(overrideColor && overrideColor.secondary)\n }}\n onClick={() => {\n onCancelCallback?.();\n setDialogOpen(false);\n }}\n style={{ padding: '10px 30px' }}\n >\n {secondaryButtonText || 'Cancel'}\n </Button>\n <Button\n data-testid=\"dialog-action-button\"\n className=\"dialog-action-button\"\n id={primaryButtonId}\n disableElevation\n sx={{\n ...classes.buttonRed,\n ...(alternateColor && classes.primaryButtonAlternateColor),\n '&.Mui-disabled': { background: '#E5E5E5', color: '#939393' },\n ...(overrideColor && overrideColor.primary)\n }}\n onClick={() => (dialogId ? buttonCallback(url, dialogId) : buttonCallback(url, 0))}\n style={{ padding: '10px 30px' }}\n disabled={disablePrimaryButton}\n >\n {callbackLoading ? <CircularProgress size={20} color=\"inherit\" /> : buttonText}\n </Button>\n </Box>\n </Dialog>\n );\n}\n\nexport default GenericDialog;\n","import React from 'react';\nimport { classes } from '../Multiposter/styles';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport { IGenericDialogProps } from '../Multiposter/types';\nimport ErrorIcon from '@mui/icons-material/Error';\nimport dompurify from 'dompurify';\n\nfunction WarningDialog({\n title,\n description,\n buttonText,\n isDialogOpen,\n setDialogOpen,\n}: IGenericDialogProps) {\n return (\n <Dialog\n open={isDialogOpen}\n sx={{ '& .MuiPaper-root': classes.dialog }}\n >\n <ErrorIcon sx={{color: '#E37D7A', fontSize: '70px'}}/>\n <Box sx={{color: '#666666', marginBottom: '10px'}}><h1>{title}</h1></Box>\n {description && \n <Box\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(description) }}\n />\n }\n <Box sx={classes.dialogButtonContainer}>\n <Button\n disableElevation\n sx={classes.buttonSecondary}\n onClick={() => setDialogOpen(false)}\n style={{ padding: '10px 30px' }}\n >\n {buttonText}\n </Button>\n </Box>\n </Dialog>\n );\n}\n\nexport default WarningDialog;\n","import React from 'react';\nimport axios from 'axios';\nimport { Box, Button, IconButton, Tooltip } from '@mui/material';\nimport { IJobAdIndeed, IJobAdViewJobs, IActionButtonProps } from './types';\nimport EditIcon from '@mui/icons-material/Edit';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport ArchiveIcon from '@mui/icons-material/Archive';\n\nconst ActionButton: React.FC<IActionButtonProps> = ({\n ad,\n jobAds,\n setAds,\n adsStatus,\n tableHovered,\n apiKey,\n classes,\n adType,\n setDialogLoading,\n setDialogUrl,\n setDialogOpen,\n setActionsAnchorEl,\n setDialogAdID,\n setDialogTitle,\n setDialogDescription,\n setDialogButtonText,\n setDialogButtonCallback,\n setSelectedAd,\n handleSnack,\n handleCopy,\n handleArchive\n}) => {\n const urls = adType === 'indeed' ? ad.indeed_urls : ad.viewjobs_urls;\n const adBoard = adType === 'indeed' ? 'Indeed' : 'ViewJobs';\n const isDisabled = adsStatus == 'active' && adType === 'view_jobs';\n\n const handleButtonStyle = (ad: IJobAdIndeed | IJobAdViewJobs) => {\n switch (ad.status) {\n case 'open':\n return getExpireAdButtonStyle(ad);\n case 'new':\n return getContinueDraftButtonStyle();\n default:\n return getCloneAdButtonStyle();\n }\n };\n\n const getExpireAdButtonStyle = (ad: IJobAdIndeed | IJobAdViewJobs) => {\n return {\n text: 'Expire Ad',\n class: classes.buttonRedLight,\n callback: () => {\n if (!isDisabled) {\n setDialogUrl(`/api/v4/${adType}/jobs/${ad.job_id}/job_ads/${ad.id}/expire`);\n setDialogAdID(ad.id);\n setDialogTitle('Are you sure you want to expire this ad?');\n setDialogDescription(\n adType === 'indeed'\n ? 'The ad will expire within the next 4 hours. To repost this ad later you will be charged for a new ad.'\n : ''\n );\n setDialogButtonText('Expire now');\n setDialogButtonCallback(() => handleExpire);\n setDialogOpen(true);\n }\n },\n isDisabled\n };\n };\n\n const getContinueDraftButtonStyle = () => {\n return {\n text: 'Continue Draft',\n class: classes.buttonGreenLight,\n callback: () => handleEdit(urls.edit)\n };\n };\n\n const getCloneAdButtonStyle = () => {\n return {\n text: 'Clone Ad',\n class: classes.buttonSecondaryLight,\n callback: () => {\n setDialogUrl(urls.copy);\n setDialogTitle('Are you sure you want to clone this ad?');\n setDialogDescription(`You will have to repost for your ad to be active on ${adBoard}.`);\n setDialogButtonText('Clone ad');\n setDialogButtonCallback(() => handleCopy);\n setDialogOpen(true);\n }\n };\n };\n\n async function handleEdit(url: string) {\n window.location.href = url;\n }\n\n async function handleExpire(url: string, id: number) {\n setDialogLoading(true);\n try {\n const { data } = await axios.put(`${url}`, {\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const newAds = Object.assign(jobAds);\n const index = newAds[adsStatus].findIndex(\n (ad: IJobAdIndeed | IJobAdViewJobs) => ad.id === id\n );\n const copyJob = newAds[adsStatus][index];\n copyJob.status = 'expired';\n newAds.expired && newAds.expired.push(copyJob);\n newAds[adsStatus].splice(index, 1);\n setAds({ ...newAds });\n handleSnack(`${data.title} has been expired`);\n } catch (e) {\n console.log(e);\n handleSnack('Could not expire ad');\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n }\n\n const showIcons = (ad: IJobAdIndeed | IJobAdViewJobs) => {\n switch (adsStatus) {\n case 'active':\n return renderActiveIcons(ad);\n case 'draft':\n return renderDraftIcon();\n case 'expired':\n return renderExpiredIcon(ad);\n case 'archived':\n return null;\n default:\n return null;\n }\n };\n\n const renderActiveIcons = (ad: IJobAdIndeed | IJobAdViewJobs) => (\n <>\n <Tooltip title={isDisabled ? 'Coming soon' : 'Edit'}>\n <span>\n <IconButton\n sx={classes.icon}\n disabled={isDisabled}\n onClick={() => handleEdit(urls.edit)}\n className={`edit-${adBoard}-ad-button`}\n >\n <EditIcon fontSize=\"small\" sx={classes.iconGrey} />\n </IconButton>\n </span>\n </Tooltip>\n <IconButton\n sx={classes.icon}\n onClick={(e) => {\n setActionsAnchorEl(e.currentTarget);\n setSelectedAd(ad);\n }}\n className={`${adBoard}-ad-actions-button`}\n >\n <MoreVertIcon sx={classes.iconGrey} />\n </IconButton>\n </>\n );\n\n const renderDraftIcon = () => (\n <Tooltip title=\"Edit\">\n <IconButton\n sx={classes.icon}\n onClick={() => handleEdit(urls.edit)}\n className={`edit-${adBoard}-ad-button`}\n >\n <EditIcon fontSize=\"small\" sx={classes.iconGrey} />\n </IconButton>\n </Tooltip>\n );\n\n const renderExpiredIcon = (ad: IJobAdIndeed | IJobAdViewJobs) => (\n <>\n <Tooltip title=\"Archive\">\n <IconButton\n sx={classes.icon}\n onClick={() => {\n setDialogUrl(`/api/v4/${adType}/jobs/${ad.job_id}/job_ads/${ad.id}/archive`);\n setDialogAdID(ad.id);\n setDialogTitle('Are you sure you want to archive this ad?');\n setDialogButtonText('Archive now');\n setDialogButtonCallback(() => handleArchive);\n setDialogOpen(true);\n }}\n >\n <ArchiveIcon sx={classes.iconRed} />\n </IconButton>\n </Tooltip>\n </>\n );\n\n const buttonStyle = handleButtonStyle(ad);\n return (\n <Box\n sx={{\n ...classes.actionsContainer,\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n >\n <Box sx={classes.actionButtonContainer}>\n <Tooltip title={isDisabled ? 'Coming soon' : ''}>\n <span>\n <Button\n sx={{\n ...classes.columnRefrence,\n ...buttonStyle.class,\n ...classes.columnButtonPadding,\n ...classes.actionButton\n }}\n disableElevation\n size=\"large\"\n onClick={buttonStyle.callback}\n disabled={buttonStyle.isDisabled}\n >\n {buttonStyle.text}\n </Button>\n </span>\n </Tooltip>\n </Box>\n {showIcons(ad)}\n </Box>\n );\n};\n\nexport default ActionButton;\n","import React from 'react';\nimport { Popover } from '@mui/material';\nimport { ActionPopoverProps } from './types';\n\nconst ActionPopover: React.FC<ActionPopoverProps> = ({\n anchorEl,\n onClose,\n handleCopy,\n handleArchive,\n handleDelete,\n selectedAd,\n classes,\n adType,\n setDialogUrl,\n setDialogTitle,\n setDialogDescription,\n setDialogButtonText,\n setDialogButtonCallback,\n setDialogOpen,\n setDialogAdID\n}) => {\n const urls = adType === 'indeed' ? selectedAd?.indeed_urls : selectedAd?.viewjobs_urls;\n const adBoard = adType === 'indeed' ? 'Indeed' : 'ViewJobs';\n\n return (\n <Popover\n id={anchorEl ? 'actions-menu-popover' : undefined}\n sx={{ ...classes.actionsMenu, minWidth: 'unset', width: '135px' }}\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={onClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {selectedAd && (\n <>\n {!['expired', 'archived'].includes(selectedAd.status) && (\n <span\n onClick={() => {\n setDialogUrl(urls.copy);\n setDialogTitle('Are you sure you want to clone this ad?');\n setDialogDescription(\n `You will have to repost for your ad to be active on ${adBoard}.`\n );\n setDialogButtonText('Clone ad');\n setDialogButtonCallback(() => handleCopy);\n setDialogOpen(true);\n }}\n className={`clone-${adBoard}-ad-button`}\n >\n Clone\n </span>\n )}\n {selectedAd.status === 'expired' ? (\n <span\n onClick={() => {\n setDialogUrl(\n `/api/v4/${adType}/jobs/${selectedAd.job_id}/job_ads/${selectedAd.id}/archive`\n );\n setDialogAdID(selectedAd.id);\n setDialogTitle('Are you sure you want to archive this ad?');\n setDialogDescription(null);\n setDialogButtonText('Archive now');\n setDialogButtonCallback(() => handleArchive);\n setDialogOpen(true);\n }}\n >\n Archive\n </span>\n ) : (\n selectedAd.status !== 'open' &&\n !['open', 'archived'].includes(selectedAd.status) && (\n <span\n onClick={() => {\n setDialogUrl(\n `/api/v4/${adType}/jobs/${selectedAd.job_id}/job_ads/${selectedAd.id}`\n );\n setDialogAdID(selectedAd.id);\n setDialogTitle('Are you sure you want to delete this ad?');\n setDialogDescription(\n 'Your job ad will be permanently deleted and you will not be able to recover your ad details.'\n );\n setDialogButtonText('Delete ad');\n setDialogButtonCallback(() => handleDelete);\n setDialogOpen(true);\n }}\n >\n Delete\n </span>\n )\n )}\n </>\n )}\n </Popover>\n );\n};\n\nexport default ActionPopover;\n","import React from 'react';\nimport { Popover } from '@mui/material';\n\ninterface AdTypePopoverProps {\n filterAnchorEl: null | HTMLElement;\n setFilterAnchorEl: (el: HTMLElement | null) => void;\n selectedAdType: string;\n handleAdTypeChange: (id: string) => void;\n classes: any;\n adType: string;\n}\n\nconst ADTYPES = [\n {\n id: 'active',\n name: 'Active'\n },\n {\n id: 'draft',\n name: 'Draft'\n },\n {\n id: 'expired',\n name: 'Expired'\n },\n {\n id: 'archived',\n name: 'Archived'\n }\n];\n\nconst AdTypePopover: React.FC<AdTypePopoverProps> = ({\n filterAnchorEl,\n setFilterAnchorEl,\n selectedAdType,\n handleAdTypeChange,\n classes,\n adType\n}) => {\n return (\n <Popover\n id=\"filter-menu-popover\"\n sx={classes.filterMenu}\n open={Boolean(filterAnchorEl)}\n anchorEl={filterAnchorEl}\n onClose={() => {\n setFilterAnchorEl(null);\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n >\n {ADTYPES.map(\n (type) =>\n type.id !== selectedAdType && (\n <span\n key={type.name}\n onClick={() => handleAdTypeChange(type.id)}\n id={`${type.name}-select-${adType}-ad-button`}\n >\n {type.name}\n </span>\n )\n )}\n </Popover>\n );\n};\n\nexport default AdTypePopover;\n","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport GenericDialog from '../GenericDialog';\nimport Box from '@mui/material/Box';\nimport Tooltip from '@mui/material/Tooltip';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { classes } from '../styles';\nimport { IJobAdBroadbeanProps } from '../types';\n\nexport default function AdTable({ jobAds, setAds, apiKey }: IJobAdBroadbeanProps) {\n const [dialogUrl, setDialogUrl] = useState('');\n const [dialogTitle, setDialogTitle] = useState('');\n const [dialogDescription, setDialogDescription] = useState('');\n const [dialogButtonText, setDialogButtonText] = useState('');\n const [dialogButtonCallback, setDialogButtonCallback] = useState(null);\n const [dialogLoading, setDialogLoading] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [isSnackOpen, setIsSnackOpen] = useState(false);\n const [snackMessage, setSnackMessage] = useState('');\n\n function handleSnack(message: string) {\n setIsSnackOpen(true);\n setSnackMessage(message);\n }\n\n function handleEdit(url: string): void {\n window.open(url, '_blank', 'noopener,noreferrer');\n }\n\n async function handleDelete(url: string) {\n setDialogLoading(true);\n try {\n const { data } = await axios.delete(`${url}`, {\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n if (!data.errors) {\n handleSnack(`${data.bb_job_title} has been deleted`);\n setAds(jobAds.filter((ad) => ad.id !== data.id));\n }\n } catch (e) {\n console.log(e);\n handleSnack('Cannot access the multiposting portal. Please contact your administrator.');\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n }\n\n return (\n <Box sx={classes.table}>\n <Box sx={{ ...classes.row, ...classes.rowHeader }}>\n <span>Reference</span>\n <span>Title</span>\n <Box component=\"span\" sx={classes.center}>\n \n </Box>\n </Box>\n {jobAds.length > 0 ? (\n jobAds.map((ad) => (\n <Box key={ad.id} sx={classes.row}>\n <Box>{ad.bb_job_ref}</Box>\n <Box sx={classes.title}>{ad.bb_job_title}</Box>\n <Box sx={classes.actionsContainer}>\n <Tooltip title=\"Edit\">\n <IconButton\n onClick={() => handleEdit(ad.broadbean_urls.edit)}\n >\n <EditIcon fontSize=\"small\" sx={classes.iconGrey} />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Delete\">\n <IconButton\n onClick={() => {\n setDialogUrl(`/api/v4/broadbean/jobs/${ad.job_id}/job_ads/${ad.id}`);\n setDialogTitle('Are you sure you want to delete this ad?');\n setDialogDescription(\n 'Your job ad will be permanently deleted and you will not be able to recover your ad details.'\n );\n setDialogButtonText('Delete ad');\n setDialogButtonCallback(() => handleDelete);\n setDialogOpen(true);\n }}\n >\n <DeleteIcon sx={classes.iconRed} />\n </IconButton>\n </Tooltip>\n </Box>\n </Box>\n ))\n ) : (\n <Box sx={classes.row}>\n <Box sx={classes.title}>No ads to display</Box>\n </Box>\n )}\n <GenericDialog\n url={dialogUrl}\n title={dialogTitle}\n description={dialogDescription}\n buttonText={dialogButtonText}\n buttonCallback={dialogButtonCallback}\n callbackLoading={dialogLoading}\n isDialogOpen={dialogOpen}\n setDialogOpen={setDialogOpen}\n />\n <Snackbar open={isSnackOpen} onClose={() => setIsSnackOpen(false)} message={snackMessage} />\n </Box>\n );\n}\n","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Box from '@mui/material/Box';\nimport TableSkeleton from '../TableSkeleton';\nimport AdTable from './AdTable';\nimport Alert from '@mui/material/Alert';\nimport { classes } from '../styles';\n\nexport default function BroadbeanAds({ apiKey, jobId }: { apiKey: string; jobId: string | null }) {\n const [ads, setAds] = useState(null);\n const [iframeUrl, setIframeUrl] = useState(null);\n const [message, setMessage] = useState('');\n const [loading, setLoading] = useState(true);\n const [tabValue, setTabValue] = useState(0);\n\n interface TabPanelProps {\n children?: React.ReactNode;\n index: number;\n tabValue: number;\n }\n \n const TabPanel = useCallback((props: TabPanelProps) => {\n const { children, tabValue, index, ...other } = props;\n \n return (\n <div\n role=\"tabpanel\"\n hidden={tabValue !== index}\n id={`jobs-tabpanel-${index}`}\n aria-labelledby={`jobs-tab-${index}`}\n {...other}\n >\n {tabValue === index && (\n <>\n {children}\n </>\n )}\n </div>\n );\n }, [])\n \n function a11yProps(index: number) {\n return {\n id: `jobs-tab-${index}`,\n 'aria-controls': `jobs-tabpanel-${index}`,\n };\n }\n\n const handleTabChange = (event: React.SyntheticEvent, newValue: number) => {\n setTabValue(newValue);\n };\n\n const getAds = useCallback(async () => {\n setLoading(true);\n const url = jobId ? `/api/v4/broadbean/jobs/${jobId}/job_ads` : '';\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n setAds(response.ads)\n setIframeUrl(response.new_broadbean_url);\n setMessage(response.errors);\n } catch (error) {\n console.log(error);\n } finally {\n setLoading(false);\n }\n }, [apiKey, jobId]);\n\n useEffect(() => {\n getAds();\n }, [getAds]);\n\n return (\n <Box sx={classes.containerOuter}>\n <Box sx={classes.container}>\n <Box sx={classes.banner}>\n <Box id=\"broadbean-logo\"></Box>\n </Box>\n <Box sx={classes.toggleButtonGroup}>\n <Tabs\n value={tabValue}\n onChange={handleTabChange}\n aria-label=\"Post, Manage\"\n >\n <Tab label=\"Post new Ad \" {...a11yProps(0)} />\n <Tab label=\"Manage Ads\" {...a11yProps(1)} />\n </Tabs>\n </Box>\n {loading && <TableSkeleton />}\n <TabPanel tabValue={tabValue} index={0}>\n { iframeUrl ? \n <iframe className=\"one-whole\" style={{borderRadius: '8px', height: '1200px'}} src= {iframeUrl}/>\n : \n <Alert severity=\"error\">{message.substring(message.indexOf('<Message>') + 9, message.indexOf('</Message>'))}</Alert>\n }\n \n </TabPanel>\n <TabPanel tabValue={tabValue} index={1}>\n {ads && <AdTable jobAds={ads} setAds={setAds} apiKey={apiKey} />}\n </TabPanel>\n </Box>\n </Box>\n );\n}\n","import React, { useState } from 'react';\nimport moment from 'moment';\nimport GenericDialog from '../GenericDialog';\nimport Box from '@mui/material/Box';\nimport Tooltip from '@mui/material/Tooltip';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\nimport EditIcon from '@mui/icons-material/Edit';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport FileCopyIcon from '@mui/icons-material/FileCopy';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport { classes } from '../styles';\nimport { IJobAdBroadbeanProps } from '../types';\n\nconst BASE_URL = window.location.origin;\n\nexport default function AdTable({ jobAds, setAds, apiKey }: IJobAdBroadbeanProps) {\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const [dialogUrl, setDialogUrl] = useState('');\n const [dialogTitle, setDialogTitle] = useState('');\n const [dialogDescription, setDialogDescription] = useState('');\n const [dialogButtonText, setDialogButtonText] = useState('');\n const [dialogButtonCallback, setDialogButtonCallback] = useState(null);\n const [dialogLoading, setDialogLoading] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [isSnackOpen, setIsSnackOpen] = useState(false);\n const [snackMessage, setSnackMessage] = useState('');\n\n const handleClone = async (url: string) => {\n window.location.href = url;\n }\n\n return (\n <Box sx={classes.table}>\n <Box sx={{ ...classes.row, ...classes.rowHeader }}>\n <span>Job</span>\n <span>Reference</span>\n <span>Title</span>\n <span>Approved?</span>\n <span>Active on SEEK?</span>\n <span>Active on Council Jobs?</span>\n <span>Created</span>\n <span>Created by</span>\n <span>Expiry</span>\n <span>Assigned user</span>\n <Box component=\"span\" sx={classes.center}>\n \n </Box>\n </Box>\n {jobAds.length > 0 ? (\n jobAds.map((ad) => {\n const createdAt = ad.created_at\n ? moment\n .tz(ad.created_at, timeZoneString)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${ad.id}-${line}`}>{line}</div>)\n : '-';\n const council_jobs_ad_expiry_date = ad.council_jobs_ad_expiry_date\n ? moment\n .tz(ad.council_jobs_ad_expiry_date, timeZoneString)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${ad.id}-${line}`}>{line}</div>)\n : 'No expiry';\n return (\n <Box key={ad.id} sx={classes.row}>\n <Box sx={classes.title}>{ad.job_title}</Box>\n <Box>{ad.reference}</Box>\n <Box>{ad.title}</Box>\n <Box sx={classes.center}>\n {ad.approved ? (\n <CheckCircleIcon sx={classes.iconGreen} />\n ) : (\n <CancelIcon sx={classes.iconRed} />\n )}\n </Box>\n <Box sx={classes.center}>\n {ad.active_on_seek ? (\n <CheckCircleIcon sx={classes.iconGreen} />\n ) : (\n <CancelIcon sx={classes.iconRed} />\n )}\n </Box>\n <Box sx={classes.center}>\n {ad.active_on_council_jobs ? (\n <CheckCircleIcon sx={classes.iconGreen} />\n ) : (\n <CancelIcon sx={classes.iconRed} />\n )}\n </Box>\n <Box>{createdAt}</Box>\n <Box>{ad.created_by}</Box>\n <Box>{council_jobs_ad_expiry_date}</Box>\n <Box>{ad.assigned_user || '-'}</Box>\n <Box sx={classes.actionsContainer}>\n <Tooltip title=\"Preview ad\">\n <IconButton\n onClick={() => {\n window.location.href = `${BASE_URL}${ad.preview_url}`;\n }}\n >\n <VisibilityIcon fontSize=\"small\" sx={classes.iconGrey} />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Edit\">\n <IconButton\n onClick={() => {\n window.location.href = `${BASE_URL}${ad.edit_url}`;\n }}\n >\n <EditIcon fontSize=\"small\" sx={classes.iconGrey} />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Clone\">\n <IconButton\n onClick={() => {\n setDialogUrl(`${BASE_URL}${ad.clone_url}`);\n setDialogTitle('Are you sure you want to clone this ad?');\n setDialogDescription(\n 'You will have to repost for your ad to be active on CouncilJobs.'\n );\n setDialogButtonText('Clone ad');\n setDialogButtonCallback(() => handleClone);\n setDialogOpen(true);\n }}\n >\n <FileCopyIcon sx={classes.iconGrey} />\n </IconButton>\n </Tooltip>\n </Box>\n </Box>\n );\n })\n ) : (\n <Box sx={classes.row}>\n <Box sx={classes.title}>No ads to display</Box>\n </Box>\n )}\n <GenericDialog\n url={dialogUrl}\n title={dialogTitle}\n description={dialogDescription}\n buttonText={dialogButtonText}\n buttonCallback={dialogButtonCallback}\n callbackLoading={dialogLoading}\n isDialogOpen={dialogOpen}\n setDialogOpen={setDialogOpen}\n />\n <Snackbar open={isSnackOpen} onClose={() => setIsSnackOpen(false)} message={snackMessage} />\n </Box>\n );\n}\n","import React from 'react';\n\nexport default function ApproveSVG() {\n return (<svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.37496 11.7503H9.27079C9.47149 11.7503 9.65754 11.7003 9.82896 11.6002C9.9999 11.4996 10.1208 11.3607 10.1916 11.1837L11.6791 7.71283C11.7027 7.6538 11.7204 7.59477 11.7323 7.53574C11.7441 7.47671 11.75 7.41769 11.75 7.35866V6.79199C11.75 6.5913 11.682 6.42295 11.546 6.28695C11.4104 6.15142 11.2423 6.08366 11.0416 6.08366H7.78329L8.20829 3.67533C8.2319 3.55727 8.226 3.44512 8.19059 3.33887C8.15517 3.23262 8.09614 3.13817 8.0135 3.05553L7.49996 2.54199L4.24163 6.08366C4.14718 6.1781 4.07635 6.28435 4.02913 6.40241C3.9819 6.52046 3.95829 6.65033 3.95829 6.79199V10.3337C3.95829 10.7232 4.09713 11.0569 4.37479 11.3345C4.65199 11.6117 4.98538 11.7503 5.37496 11.7503ZM7.49996 14.5837C6.5201 14.5837 5.59927 14.3976 4.73746 14.0255C3.87565 13.6539 3.126 13.1493 2.4885 12.5118C1.851 11.8743 1.34643 11.1246 0.974793 10.2628C0.602682 9.40102 0.416626 8.48019 0.416626 7.50033C0.416626 6.52046 0.602682 5.59963 0.974793 4.73783C1.34643 3.87602 1.851 3.12637 2.4885 2.48887C3.126 1.85137 3.87565 1.34656 4.73746 0.974451C5.59927 0.602812 6.5201 0.416992 7.49996 0.416992C8.47982 0.416992 9.40065 0.602812 10.2625 0.974451C11.1243 1.34656 11.8739 1.85137 12.5114 2.48887C13.1489 3.12637 13.6535 3.87602 14.0251 4.73783C14.3972 5.59963 14.5833 6.52046 14.5833 7.50033C14.5833 8.48019 14.3972 9.40102 14.0251 10.2628C13.6535 11.1246 13.1489 11.8743 12.5114 12.5118C11.8739 13.1493 11.1243 13.6539 10.2625 14.0255C9.40065 14.3976 8.47982 14.5837 7.49996 14.5837ZM7.49996 13.167C9.0819 13.167 10.4218 12.618 11.5198 11.5201C12.6177 10.4222 13.1666 9.08227 13.1666 7.50033C13.1666 5.91838 12.6177 4.57845 11.5198 3.48053C10.4218 2.38262 9.0819 1.83366 7.49996 1.83366C5.91802 1.83366 4.57808 2.38262 3.48017 3.48053C2.38225 4.57845 1.83329 5.91838 1.83329 7.50033C1.83329 9.08227 2.38225 10.4222 3.48017 11.5201C4.57808 12.618 5.91802 13.167 7.49996 13.167Z\" fill=\"#8CCF95\" />\n </svg>\n )\n}\n","import React, { useEffect, useState, useCallback, useRef } from 'react';\nimport { classes } from './NewCouncilJobsAd/styles';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport { ITabs, IJob } from '../../../Job/types';\nimport Stack from '@mui/material/Stack';\nimport IconButton from '@mui/material/IconButton';\nimport ArrowCircleLeftIcon from '@mui/icons-material/ArrowCircleLeft';\nimport moment from 'moment';\nimport Button from '@mui/material/Button';\nimport EditIcon from '@mui/icons-material/Edit';\nimport ApproveSVG from './ApproveSVG';\nimport dompurify from 'dompurify';\nimport StyledSnackbar from '../../CustomUIElements/StyledSnackbar';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nconst BASE_URL = window.location.origin;\n\nexport default function CouncilJobsAd({\n apiKey,\n job,\n jobAdId,\n}: {\n apiKey: string;\n job: IJob;\n jobAdId: number;\n}) {\n const [ad, setAd] = useState(null);\n const [loading, setLoading] = useState(false);\n const [approving, setApproving] = useState(false);\n const [tabValue, setTabValue] = useState(0);\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n const headerRefs = useRef<HTMLDivElement[]>([]);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n\n const TabPanel = useCallback((props: ITabs) => {\n const { children, tabValue, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={tabValue !== index}\n id={`ads-tabpanel-${index}`}\n aria-labelledby={`jobs-tab-${index}`}\n {...other}\n >\n {tabValue === index && <>{children}</>}\n </div>\n );\n }, []);\n\n const handleApprove = async (ad) => {\n setApproving(true);\n const url = `/api/v4/council_jobs/jobs/${job.id}/job_ads/${jobAdId}/approve`;\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n if (response.success) {\n setSnackbar({\n message: response.success,\n state: 'success'\n });\n } else {\n setSnackbar({\n message: response.errors,\n state: 'error'\n });\n }\n } catch (error) {\n console.log(error);\n } finally {\n setApproving(false);\n }\n };\n\n const getAd = useCallback(async () => {\n setLoading(true);\n const url = `/api/v4/council_jobs/jobs/${job.id}/job_ads/${jobAdId}`;\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n setAd(response);\n } catch (error) {\n console.log(error);\n } finally {\n setLoading(false);\n }\n }, [apiKey, job]);\n\n useEffect(() => {\n getAd();\n }, [getAd]);\n\n useEffect(() => {\n setIndicatorWidth(headerRefs.current[tabValue].clientWidth - 32);\n }, [tabValue]);\n\n return (\n <Box sx={classes.adPageContainer}>\n <Box sx={classes.adPageHeader}>\n {loading ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <Box sx={{ color: '#666666' }}>\n <h4 id=\"reference\">{ad?.reference}</h4>\n <h1 id=\"title\">{ad?.title}</h1>\n </Box>\n )}\n </Box>\n <Box sx={classes.tabsContainer}>\n <Tabs\n value={tabValue}\n aria-label=\"Council Jobs Ad Details Tab\"\n sx={{\n ...classes.tabs,\n '& .MuiTabs-indicator': { ...classes.tabIndicator, maxWidth: indicatorWidth + 'px' }\n }}\n >\n <Tab\n disabled\n ref={(el) => (el ? (headerRefs.current[0] = el) : null)}\n label={'Job ad details'}\n />\n <TabPanel tabValue={tabValue} index={0}></TabPanel>\n </Tabs>\n </Box>\n {loading ? (\n <Skeleton animation=\"wave\" sx={{ marginLeft: '1rem', marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Box sx={classes.backToJobAdButton}>\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n onClick={() => {\n window.location.href = `${BASE_URL}/admin/jobs/${job.id}/job_ads`;\n }}\n >\n <IconButton sx={classes.iconGrey}>\n <ArrowCircleLeftIcon />\n </IconButton>\n <Box>Back to multiposter</Box>\n </Stack>\n </Box>\n )}\n {loading ? (\n <Skeleton animation=\"wave\" sx={{ marginLeft: '1rem' }} width={200} height={56} />\n ) : (\n <Box sx={classes.tabContent}>\n <Box sx={classes.actionsContianer}>\n <Button\n variant=\"outlined\"\n startIcon={<EditIcon />}\n sx={classes.editButton}\n onClick={() => {\n window.location.href = `${BASE_URL}${ad?.edit_url}`;\n }}\n >\n Edit\n </Button>\n <Button\n variant=\"outlined\"\n startIcon={approving ? <CircularProgress size={16} /> : <ApproveSVG />}\n sx={classes.approveButton}\n onClick={() => handleApprove(ad)}\n >\n Approve\n </Button>\n </Box>\n <Box sx={{ ...classes.headerContent, marginBottom: '20px' }}>\n Your full job ad\n </Box>\n <Box sx={classes.detailsTitle}>Job title</Box>\n <Box sx={classes.details}>{ad?.title}</Box>\n <Box sx={classes.detailsTitle}>Ad details</Box>\n <Box\n sx={classes.details}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(ad?.ad_details) }}\n />\n <Box id=\"counciljobs-logo\" sx={{ marginTop: '40px', width: '140px !important' }} />\n <Box sx={classes.detailsTitle}>Employer name</Box>\n <Box sx={classes.details}>{ad?.council_jobs_employer_name}</Box>\n <Box sx={classes.detailsTitle}>Ad expiry date</Box>\n <Box sx={classes.details}>{moment(ad?.council_jobs_ad_expiry_date).format('D MMM YYYY')}</Box>\n <Box sx={classes.detailsTitle}>Categories</Box>\n <Box sx={classes.details}>{ad?.council_jobs_categories_to_sentence || '-'}</Box>\n <Box sx={classes.detailsTitle}>Job type</Box>\n <Box sx={classes.details}>{ad?.job_type_to_sentence || '-'}</Box>\n <Box sx={classes.detailsTitle}>Apply type</Box>\n <Box sx={classes.details}>{ad?.council_jobs_apply_type}</Box>\n <Box sx={classes.detailsTitle}>Apply value</Box>\n <Box sx={classes.details}>{ad?.council_jobs_apply_value}</Box>\n <Box sx={classes.detailsTitle}>Job posting options</Box>\n <Box sx={classes.details}>{ad?.council_jobs_posting_options ? ad.council_jobs_posting_options.join(', ') : '-'}</Box>\n <Box sx={{ ...classes.headerContent, marginTop: '40px' }}>\n Other details\n </Box>\n <Box sx={classes.detailsTitle}>Created by</Box>\n <Box sx={classes.details}>{ad?.created_by}</Box>\n <Box sx={classes.detailsTitle}>Created at</Box>\n <Box sx={classes.details}>{moment(ad?.created_at).format('D MMM YYYY HH:mm')}</Box>\n <Box sx={classes.detailsTitle}>Updated by</Box>\n <Box sx={classes.details}>{ad?.updated_by}</Box>\n <Box sx={classes.detailsTitle}>Updated at</Box>\n <Box sx={classes.details}>{moment(ad?.updated_at).format('D MMM YYYY HH:mm')}</Box>\n </Box>\n )}\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n )\n}","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport Button from '@mui/material/Button';\nimport Box from '@mui/material/Box';\nimport TableSkeleton from '../TableSkeleton';\nimport AdTable from './AdTable';\nimport Grid from '@mui/material/Grid';\nimport { classes } from '../styles';\n\nconst BASE_URL = window.location.origin;\n\nexport default function CouncilJobsAds({\n apiKey,\n jobId\n}: {\n apiKey: string;\n jobId: string | null;\n}) {\n const [ads, setAds] = useState(null);\n const [message, setMessage] = useState('');\n const [loading, setLoading] = useState(true);\n\n const getAds = useCallback(async () => {\n setLoading(true);\n const url = jobId ? `/api/v4/council_jobs/jobs/${jobId}/job_ads?limit=100` : '';\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n setAds(response.ads);\n setMessage(response.errors);\n } catch (error) {\n console.log(error);\n } finally {\n setLoading(false);\n }\n }, [apiKey, jobId]);\n\n useEffect(() => {\n getAds();\n }, [getAds]);\n\n return (\n <Box sx={classes.containerOuter}>\n <Box sx={classes.container}>\n <Box sx={classes.banner}>\n <Box id=\"counciljobs-logo\" sx={{ width: '140px !important' }}></Box>\n {jobId && (\n <Button\n disableElevation\n sx={{ ...classes.buttonSecondary, ...classes.newAdButton }}\n id=\"CouncilJobsNewAdMultiposterBtn\"\n onClick={() => {\n window.location.href = `${BASE_URL}/admin/jobs/${jobId}/job_ads/new`;\n }}\n >\n New Ad\n </Button>\n )}\n </Box>\n <Grid\n container\n sx={jobId ? { marginTop: '20px', marginBottom: '12px', overflow: 'auto' } : {}}\n >\n {loading ? (\n <TableSkeleton />\n ) : (\n ads && <AdTable jobAds={ads} setAds={setAds} apiKey={apiKey} />\n )}\n </Grid>\n </Box>\n </Box>\n );\n}\n","import React, { useEffect, useState, useCallback, useRef } from 'react';\nimport { classes } from './styles';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport { ITabs, IJob } from '../../../../Job/types';\nimport Stack from '@mui/material/Stack';\nimport IconButton from '@mui/material/IconButton';\nimport ArrowCircleLeftIcon from '@mui/icons-material/ArrowCircleLeft';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport { DebouncedFormTextField } from '../../../CustomUIElements/FormTextField';\nimport HtmlEditor from '../../../Utilities/HtmlEditor';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport { sharedClasses } from '../../../CustomUIElements/sharedClasses';\nimport FormControl from '@mui/material/FormControl';\nimport InputLabel from '@mui/material/InputLabel';\nimport { SingleDatePicker } from '../../../CustomUIElements/SingleDatePicker';\nimport moment from 'moment';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport StyledSnackbar from '../../../CustomUIElements/StyledSnackbar';\n\nconst BASE_URL = window.location.origin;\n\nconst handleInitialContent = (content: string) => {\n if ((content || '').replace(/(<([^>]+)>)/gi, \"\") === '') {\n const contentArray = (content || '').split('</div>');\n if (contentArray.length > 1) {\n contentArray[0] = contentArray[0] + '<p></p>';\n return contentArray.join('</div>');\n }\n }\n return content;\n};\n\nconst getDefaults = (options, defaults) => {\n if (options?.length > 0 && defaults?.length > 0) {\n const indexs = [];\n defaults.map((option) => {\n indexs.push(options[options.findIndex((value) => value?.id === option)]);\n });\n return indexs;\n } else return defaults;\n};\n\nexport default function NewCouncilJobsAd({\n apiKey,\n job,\n jobAdId,\n }: { \n apiKey: string;\n job: IJob;\n jobAdId: number | null;\n}) {\n const [ad, setAd] = useState(null);\n const [adDetails, setAdDetails] = useState(handleInitialContent(ad?.ad_details))\n const [message, setMessage] = useState('');\n const [loading, setLoading] = useState(false);\n const [isSaving, setIsSaving] = useState(false);\n const [tabValue, setTabValue] = useState(0);\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n const headerRefs = useRef<HTMLDivElement[]>([]);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n\n const fieldRefs = {\n reference: useRef<HTMLInputElement>(null),\n council_jobs_employer_name: useRef<HTMLInputElement>(null),\n council_jobs_contact_email: useRef<HTMLInputElement>(null),\n council_jobs_region: useRef<HTMLInputElement>(null),\n council_jobs_state: useRef<HTMLInputElement>(null),\n council_jobs_ad_expiry_date: useRef<HTMLInputElement>(null),\n council_jobs_job_type: useRef<HTMLInputElement>(null),\n council_jobs_apply_value: useRef<HTMLInputElement>(null),\n };\n\n const TabPanel = useCallback((props: ITabs) => {\n const { children, tabValue, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={tabValue !== index}\n id={`ads-tabpanel-${index}`}\n aria-labelledby={`jobs-tab-${index}`}\n {...other}\n >\n {tabValue === index && <>{children}</>}\n </div>\n );\n }, []);\n\n const getAd = useCallback(async () => {\n setLoading(true);\n let url = jobAdId ? `/api/v4/council_jobs/jobs/${job.id}/job_ads/${jobAdId}` : `/api/v4/council_jobs/jobs/${job.id}/job_ads/new`;\n if(window.location.href.includes('clone')) {\n const url_str = window.location.href;\n const clone_id = url_str.substring(url_str.indexOf('job_ads') + 8, url_str.indexOf('clone') - 1);\n url = `/api/v4/council_jobs/jobs/${job.id}/job_ads/${clone_id}/clone`;\n } \n const method = window.location.href.includes('clone') ? 'POST' : 'GET';\n try {\n const response = await fetch(url, {\n method: method,\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n setAd(response);\n setAdDetails(response.ad_details);\n setMessage(response.errors);\n } catch (error) {\n console.log(error);\n } finally {\n setLoading(false);\n }\n }, [apiKey, job]);\n\n const handleSave = async (ad) => {\n setIsSaving(true);\n const attributes = {\n send_to_council_jobs: ad.send_to_council_jobs ? '1' : '0',\n title: ad.title,\n ad_details: ad.ad_details,\n council_jobs_employer_name: ad.council_jobs_employer_name,\n council_jobs_contact_email: ad.council_jobs_contact_email,\n council_jobs_region: ad.council_jobs_region,\n council_jobs_state: ad.council_jobs_state,\n council_jobs_ad_expiry_date: moment(ad.council_jobs_ad_expiry_date).format('DD/MM/YYYY'),\n council_jobs_categories: ad.council_jobs_categories,\n council_jobs_job_type: ad.council_jobs_job_type,\n council_jobs_apply_type: ad.council_jobs_apply_type,\n council_jobs_apply_value: ad.council_jobs_apply_value,\n council_jobs_posting_options: ad.council_jobs_posting_options\n }\n const url = jobAdId ? `/api/v4/council_jobs/jobs/${job.id}/job_ads/${jobAdId}` : `/api/v4/council_jobs/jobs/${job.id}/job_ads`;\n const method = jobAdId ? 'PUT' : 'POST';\n try {\n const response = await fetch(url, {\n method: method,\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n job_ad: attributes\n }),\n }).then((response) => response.json());\n if(response.success) {\n window.location.href = `${BASE_URL}${response?.preview_url}`;\n setSnackbar({\n message: response.success,\n state: 'success'\n });\n } else {\n setSnackbar({\n message: response.error,\n state: 'error'\n });\n }\n } catch (error) {\n console.log(error);\n } finally {\n setIsSaving(false);\n }\n };\n\n useEffect(() => {\n getAd();\n }, [getAd]);\n\n useEffect(() => {\n setIndicatorWidth(headerRefs.current[tabValue].clientWidth - 32);\n }, [tabValue]);\n\n return (\n <Box sx={classes.adPageContainer}>\n <Box sx={classes.adPageHeader}>\n {loading ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <Box sx={{ color: '#666666' }}>\n <h4 id=\"reference\">{ad?.reference}</h4>\n <h1 id=\"title\">{ad?.title}</h1>\n </Box>\n )}\n </Box>\n <Box sx={classes.tabsContainer}>\n <Tabs\n value={tabValue}\n aria-label=\"Council Jobs New Ad Tab\"\n sx={{\n ...classes.tabs,\n '& .MuiTabs-indicator': { ...classes.tabIndicator, maxWidth: indicatorWidth + 'px' }\n }}\n >\n <Tab\n disabled\n ref={(el) => (el ? (headerRefs.current[0] = el) : null)}\n label={'Write job ad details'}\n />\n <TabPanel tabValue={tabValue} index={0}></TabPanel>\n </Tabs>\n </Box>\n {loading ? (\n <Skeleton animation=\"wave\" sx={{ marginLeft: '1rem', marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Box sx={classes.backToJobAdButton}>\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n onClick={() => {\n window.location.href = `${BASE_URL}/admin/jobs/${job.id}/job_ads`;\n }}\n >\n <IconButton sx={classes.iconGrey}>\n <ArrowCircleLeftIcon />\n </IconButton>\n <Box>Back</Box>\n </Stack>\n </Box>\n )}\n {loading ? (\n <Skeleton animation=\"wave\" sx={{ marginLeft: '1rem' }} width={200} height={56} />\n ) : (\n <Box sx={classes.tabContent}>\n <Box sx={classes.headerContent}>\n Select advertising service to export\n </Box>\n <FormControlLabel\n control={\n <Checkbox\n sx={classes.checkbox}\n onChange={(event, value) => {\n setAd((prev) => ({\n ...prev,\n send_to_council_jobs: value\n }));\n }}\n value={ad?.send_to_council_jobs}\n defaultChecked={ad?.send_to_council_jobs}\n name={''}\n />\n }\n label={'Send to CouncilJobs'}\n sx={classes.label}\n />\n <Box sx={{...classes.headerContent, marginBottom: '20px' }}>\n Your full job ad\n </Box>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setAd((prev) => ({\n ...prev,\n title: value\n }));\n }}\n id=\"title\"\n label=\"Job title\"\n defaultValue={ad?.title}\n required={true}\n innerRef={fieldRefs.reference}\n styles={{ width: '500px' }}\n />\n <Box sx={classes.detailsTitle}>\n Ad details\n </Box>\n <HtmlEditor\n body={handleInitialContent(ad?.ad_details)}\n onChange={setAdDetails}\n onBlur={(value) => {\n setAd((prev) => ({\n ...prev,\n ad_details: value\n }))\n }}\n />\n {ad?.send_to_council_jobs &&\n <Box sx={classes.modalFormLine}>\n <Box sx={classes.headerContent}>\n Council Jobs\n </Box>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setAd((prev) => ({\n ...prev,\n council_jobs_employer_name: value\n }));\n }}\n id=\"employer_name\"\n label=\"Employer name\"\n defaultValue={ad?.council_jobs_employer_name}\n required={true}\n innerRef={fieldRefs.council_jobs_employer_name}\n styles={{ width: '500px' }}\n />\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setAd((prev) => ({\n ...prev,\n council_jobs_contact_email: value\n }));\n }}\n id=\"contact_email\"\n label=\"Contact email\"\n defaultValue={ad?.council_jobs_contact_email}\n required={false}\n innerRef={fieldRefs.council_jobs_contact_email}\n styles={{ width: '500px' }}\n />\n <Autocomplete\n disablePortal\n options={ad?.region}\n getOptionLabel={(option) => `${option?.label}`}\n id=\"region\"\n value={ad?.region.filter((r) => r.id === ad?.council_jobs_region)[0]}\n onChange={(event, value) => {\n const id = value.id;\n setAd((prev) => ({\n ...prev,\n council_jobs_region: id\n }));\n }}\n sx={{ width: '500px', ...sharedClasses.formAutocomplete, marginTop: '26px'}}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Region\"\n required={true}\n InputLabelProps={{ shrink: true }}\n inputRef={fieldRefs.council_jobs_region}\n />\n )}\n />\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setAd((prev) => ({\n ...prev,\n council_jobs_state: value\n }));\n }}\n id=\"state\"\n label=\"State\"\n defaultValue={ad?.council_jobs_state}\n required={false}\n innerRef={fieldRefs.council_jobs_state}\n styles={{ width: '500px' }}\n />\n <FormControl variant=\"standard\">\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n Ad expiry date\n </InputLabel>\n <SingleDatePicker\n value={ad?.council_jobs_ad_expiry_date}\n inputStyles={classes.datePicker}\n onChange={(value) => {\n setAd((prev) => ({\n ...prev,\n council_jobs_ad_expiry_date: value\n }));\n }}\n />\n </FormControl>\n <Autocomplete\n id=\"categories\"\n multiple\n options={ad?.categories_options}\n getOptionLabel={(option) => `${option?.label}`}\n value={getDefaults(ad?.categories_options, ad?.council_jobs_categories)}\n sx={{\n ...classes.formAutocomplete,\n minWidth: '250px',\n width: '500px',\n marginTop: '24px'\n }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Categories\"\n required={true}\n InputLabelProps={{ shrink: true }}\n />\n )}\n onChange={(event, value) => {\n const ids = value.map((v) => v.id)\n setAd((prev) => ({\n ...prev,\n council_jobs_categories: ids\n }));\n }}\n />\n <Autocomplete\n disablePortal\n options={ad?.job_type}\n getOptionLabel={(option) => `${option?.label}`}\n id=\"job_type\"\n value={ad?.job_type.filter((t) => t.id.toString() === ad?.council_jobs_job_type)[0]}\n onChange={(event, value) => {\n const id = value.id;\n setAd((prev) => ({\n ...prev,\n council_jobs_job_type: id\n }));\n }}\n sx={{ width: '500px', ...sharedClasses.formAutocomplete, marginTop: '26px'}}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Job type\"\n required={true}\n InputLabelProps={{ shrink: true }}\n inputRef={fieldRefs.council_jobs_job_type}\n />\n )}\n />\n <Autocomplete\n disablePortal\n options={['Email', 'Website', 'Offline']}\n id=\"job_type\"\n value={ad?.council_jobs_apply_type}\n onChange={(event, value) => {\n setAd((prev) => ({\n ...prev,\n council_jobs_apply_type: value\n }));\n }}\n sx={{ width: '500px', ...sharedClasses.formAutocomplete, marginTop: '26px'}}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Apply type\"\n required={true}\n InputLabelProps={{ shrink: true }}\n inputRef={fieldRefs.council_jobs_job_type}\n />\n )}\n />\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setAd((prev) => ({\n ...prev,\n council_jobs_apply_value: value\n }));\n }}\n id=\"apply_value\"\n label=\"Apply value\"\n defaultValue={ad?.council_jobs_apply_value}\n required={false}\n innerRef={fieldRefs.council_jobs_apply_value}\n styles={{ width: '500px' }}\n />\n <Autocomplete\n id=\"posting_options\"\n multiple\n options={['Premium', 'Hot Job']}\n value={ad?.council_jobs_posting_options}\n sx={{\n ...classes.formAutocomplete,\n minWidth: '250px',\n width: '500px',\n marginTop: '24px'\n }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Job posting options\"\n required={false}\n InputLabelProps={{ shrink: true }}\n />\n )}\n onChange={(event, value) => {\n setAd((prev) => ({\n ...prev,\n council_jobs_posting_options: value\n }));\n }}\n />\n </Box>\n }\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-new-field-button\"\n sx={classes.modalCancelButton}\n onClick={() => {\n window.location.href = `${BASE_URL}/admin/jobs/${job.id}/job_ads`;\n }}\n >\n Cancel\n </Button>\n <Button\n id=\"save-council-jobs-ad-button\"\n type=\"submit\"\n sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n onClick={() => handleSave(ad)}\n >\n {isSaving ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n </Button>\n </Box>\n </Box>\n )}\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n )\n}","import React, { useState, useEffect } from 'react';\nimport { classes } from './styles';\nimport Box from '@mui/material/Box';\nimport ArrowRightAltIcon from '@mui/icons-material/ArrowRightAlt';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport moment from 'moment-timezone';\nimport { IExpiryDialogProps } from './types';\nimport { SingleDateTimePicker } from '../CustomUIElements/SingleDatePicker';\n\nfunction ExpiryDialog({\n isExpiryDialogOpen,\n setExpiryDialogOpen,\n ad,\n apiKey,\n handleSnack,\n handleLocalExpiryChange\n}: IExpiryDialogProps) {\n const [isLoading, setIsLoading] = useState(false);\n const [newExpiryDate, setNewExpiryDate] = useState(moment());\n const [calendarOpen, setCalendarOpen] = useState(false);\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n useEffect(() => {\n setNewExpiryDate(moment(ad?.expired_at));\n }, [setNewExpiryDate, ad]);\n\n async function handleSave() {\n setIsLoading(true);\n try {\n const response = await fetch(`/api/v4/seek/job_ads/${ad.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n title: ad.title,\n description: ad.description,\n date: newExpiryDate.format('YYYY-MM-DD')\n })\n });\n\n const seekResponse = await fetch(`/api/v4/seek/job_ads/${ad.id}/ad_posting/update_expiry`, {\n method: 'POST',\n headers: { 'X-api-authenticate': apiKey }\n });\n\n if (response.status !== 200 && seekResponse.status !== 200) {\n console.log({ response, seekResponse });\n setExpiryDialogOpen(false);\n handleSnack('Error updating expiry date');\n } else {\n handleLocalExpiryChange(moment(newExpiryDate).toDate(), ad.id);\n }\n } catch (error) {\n console.error(error);\n handleSnack('Error updating expiry date');\n } finally {\n setIsLoading(false);\n setExpiryDialogOpen(false);\n }\n }\n\n const calculateMinDate = (published: string) => {\n const now = moment();\n const publishedDate = moment(published).add(1, 'day');\n const diff = now.diff(publishedDate, 'days');\n if (diff > 0) {\n return now;\n } else {\n return publishedDate;\n }\n };\n\n return (\n <Dialog\n open={isExpiryDialogOpen}\n onClose={() => setExpiryDialogOpen(false)}\n sx={{ '& .MuiPaper-root': classes.dialog }}\n >\n <h4>Ad expiry date</h4>\n <Box sx={classes.expiryMessage}>\n Choose a new expiry date to shorten the duration of your job ad\n </Box>\n <Box sx={classes.expiryDateMessage}>\n Your ad will run until 11:59PM {moment().tz(timeZoneString).format('zz')}\n </Box>\n {ad?.created_at && ad?.advertisement_published_at && ad?.expired_at && (\n <>\n <SingleDateTimePicker\n open={calendarOpen}\n onOpen={() => setCalendarOpen(true)}\n onClose={() => setCalendarOpen(false)}\n disableMaskedInput\n value={newExpiryDate}\n minDate={calculateMinDate(ad.advertisement_published_at)}\n maxDate={moment(ad.advertisement_published_at).add(29, 'days')}\n onChange={setNewExpiryDate}\n />\n\n <Box sx={classes.expiryPostPickerMessage}>\n And be live for <span>{moment(newExpiryDate).diff(moment(), 'days')} days</span>\n </Box>\n <Box sx={classes.expiryChangePreview}>\n <Box sx={classes.expiryDateContainer}>\n <Box sx={classes.expiryTitle}>Expiry (current)</Box>\n <Box sx={classes.expiryDate}>{moment(ad.expired_at).format('DD MMM YYYY')}</Box>\n </Box>\n <ArrowRightAltIcon sx={{ margin: '14px' }} />\n <Box sx={classes.expiryDateContainer}>\n <Box sx={classes.expiryTitle}>Expiry (new)</Box>\n <Box sx={classes.expiryDate}>{moment(newExpiryDate).format('DD MMM YYYY')}</Box>\n </Box>\n </Box>\n </>\n )}\n <Box sx={{ ...classes.dialogButtonContainer, marginTop: '30px', marginBottom: '10px' }}>\n <Button disableElevation sx={classes.buttonDateConfirm} onClick={handleSave}>\n {isLoading ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n </Dialog>\n );\n}\n\nexport default ExpiryDialog;\n","import React from 'react';\nimport Popover from '@mui/material/Popover';\nimport { IExpiryPopoverProps } from './types';\nimport { classes } from './styles';\n\nexport default function ExpiryPopover({\n immediateExpiryOnClick,\n dateExpiryOnClick,\n expiryActionsAnchorEl,\n setExpiryActionsAnchorEl,\n ad\n}: IExpiryPopoverProps) {\n return (\n <Popover\n id=\"actions-menu-popover\"\n sx={classes.actionsMenu}\n open={Boolean(expiryActionsAnchorEl)}\n anchorEl={expiryActionsAnchorEl}\n onClose={() => {\n setExpiryActionsAnchorEl(null);\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <span onClick={() => immediateExpiryOnClick(ad)} className=\"expire-now-seek-button\">Expire now</span>\n <span onClick={dateExpiryOnClick} className=\"choose-expiry-seek-button\">Choose expiry date</span>\n </Popover>\n );\n}\n","import React from 'react';\nimport { Button } from '@mui/material';\nimport SortIcon from '@mui/icons-material/Sort';\n\ninterface FilterButtonProps {\n selectedAdType: string;\n setFilterAnchorEl: (el: HTMLElement | null) => void;\n classes: any;\n}\n\nconst FilterButton: React.FC<FilterButtonProps> = ({\n selectedAdType,\n setFilterAnchorEl,\n classes\n}) => {\n return (\n <Button\n sx={classes.filterButton}\n startIcon={<SortIcon sx={{ marginRight: '8px' }} />}\n onClick={(e) => setFilterAnchorEl(e.currentTarget)}\n >\n {selectedAdType + ' Ads'}\n </Button>\n );\n};\n\nexport default FilterButton;\n","import React from 'react';\nimport { classes } from './styles';\nimport Box from '@mui/material/Box';\nimport Dialog from '@mui/material/Dialog';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { IGenericDialogProps } from './types';\n\nfunction GenericDialog({\n url,\n title,\n description,\n buttonText,\n buttonCallback,\n callbackLoading,\n isDialogOpen,\n setDialogOpen,\n dialogAdID\n}: IGenericDialogProps) {\n return (\n <Dialog\n open={isDialogOpen}\n onClose={() => setDialogOpen(false)}\n sx={{ '& .MuiPaper-root': classes.dialog }}\n >\n <h4>{title}</h4>\n {description && <span>{description}</span>}\n <Box sx={classes.dialogButtonContainer}>\n <Button\n disableElevation\n sx={classes.buttonSecondaryLight}\n onClick={() => setDialogOpen(false)}\n style={{ padding: '10px 30px' }}\n >\n Cancel\n </Button>\n <Button\n disableElevation\n sx={buttonText === 'Clone ad' ? classes.buttonSecondary : classes.buttonRed}\n onClick={() => (dialogAdID ? buttonCallback(url, dialogAdID) : buttonCallback(url))}\n style={{ padding: '10px 30px' }}\n >\n {callbackLoading ? <CircularProgress size={20} color=\"inherit\" /> : buttonText}\n </Button>\n </Box>\n </Dialog>\n );\n}\n\nexport default GenericDialog;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport TableSkeleton from '../TableSkeleton';\nimport { classes } from '../styles';\n\nexport default function IdibuAds({ apiKey, jobId }: { apiKey: string; jobId: string | null }) {\n const [newUrl, setNewUrl] = useState(null);\n const [iframeUrl, setIframeUrl] = useState(null);\n const [loading, setLoading] = useState(true);\n\n const getAds = useCallback(async () => {\n setLoading(true);\n const url = jobId ? `/api/v4/idibu_ad/job_ads/${jobId}` : '';\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n setNewUrl(response.new_ad_url);\n setIframeUrl(response.iframe_url);\n } catch (error) {\n console.log(error);\n } finally {\n setLoading(false);\n }\n }, [apiKey, jobId]);\n\n const createNewJob = () => {\n window.open(newUrl, '_blank', 'noopener,noreferrer');\n };\n\n useEffect(() => {\n getAds();\n }, [getAds]);\n\n return (\n <Box sx={classes.containerOuter}>\n <Box sx={classes.container}>\n <Box sx={classes.banner}>\n <Box id=\"idibu-logo\"></Box>\n {jobId && (\n <Button\n disableElevation\n sx={{ ...classes.buttonSecondary, ...classes.newAdButton }}\n id=\"IdibuNewAdMultiposterBtn\"\n onClick={createNewJob}\n >\n New Ad\n </Button>\n )}\n </Box>\n {loading && <TableSkeleton />}\n <iframe className=\"one-whole\" style={{background: '#FFF', borderRadius: '8px', marginTop: '20px'}} src= {iframeUrl}/>\n </Box>\n </Box>\n );\n}\n","import React, { useState, useRef } from 'react';\nimport moment from 'moment';\nimport axios from 'axios';\nimport GenericDialog from '../GenericDialog';\nimport { classes } from '../styles';\nimport { IJobAdIndeedProps, IJobAdIndeed } from '../types';\nimport { Box, Snackbar } from '@mui/material';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport ActionButton from '../ActionButton';\nimport ActionPopover from '../ActionPopover';\n\nexport default function AdTable({ ads, jobAds, setAds, adsStatus, apiKey }: IJobAdIndeedProps) {\n const [dialogUrl, setDialogUrl] = useState('');\n const [dialogAdID, setDialogAdID] = useState(0);\n const [dialogTitle, setDialogTitle] = useState('');\n const [dialogDescription, setDialogDescription] = useState('');\n const [dialogButtonText, setDialogButtonText] = useState('');\n const [dialogButtonCallback, setDialogButtonCallback] = useState(null);\n const [dialogLoading, setDialogLoading] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [isSnackOpen, setIsSnackOpen] = useState(false);\n const [snackMessage, setSnackMessage] = useState('');\n const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n const [selectedAd, setSelectedAd] = useState<IJobAdIndeed | null>(null);\n const [tableHovered, setTableHovered] = useState(false);\n const actionCellRef = useRef(null);\n const jobCellRef = useRef(null);\n const [canScroll, setCanScroll] = useState([false, true]);\n const tableRef = useRef<HTMLDivElement>(null);\n\n function handleSnack(message: string) {\n setIsSnackOpen(true);\n setSnackMessage(message);\n }\n\n async function handleArchive(url: string, id: number) {\n setDialogLoading(true);\n try {\n const { data } = await axios.put(`${url}`, {\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const newAds = Object.assign(jobAds);\n const index = newAds[adsStatus].findIndex((ad: IJobAdIndeed) => ad.id === id);\n const copyJob = newAds[adsStatus][index];\n newAds.archived && newAds.archived.push(copyJob);\n newAds[adsStatus].splice(index, 1);\n setAds({ ...newAds });\n handleSnack(`${data.title} has been archived`);\n } catch (e) {\n console.log(e);\n handleSnack('Could not archive ad');\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n }\n\n async function handleCopy(url: string) {\n setDialogLoading(true);\n try {\n const { data } = await axios.get(`${url}?operation=clone`);\n window.location.href = data.url;\n } catch (e) {\n console.log(e);\n handleSnack('Could not clone ad');\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n }\n\n async function handleDelete(url: string, id: number) {\n setDialogLoading(true);\n try {\n const { data } = await axios.delete(`${url}`, {\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const newAds = Object.assign(jobAds);\n newAds[adsStatus] = newAds[adsStatus].filter((ad: IJobAdIndeed) => ad.id !== id);\n setAds({ ...newAds });\n handleSnack(`${data.title} has been deleted`);\n } catch (e) {\n console.log(e);\n handleSnack('Could not delete ad');\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n }\n\n function isScrollable(element: HTMLElement) {\n return element && element.scrollWidth > element.clientWidth + 20;\n }\n\n const handleScrollableEnter = () => {\n if (isScrollable(tableRef.current) && ads.length > 0) setTableHovered(true);\n };\n\n const handleScrollableExit = () => {\n setTableHovered(false);\n };\n\n const handleScroll = () => {\n if (tableRef.current.scrollLeft < 10) {\n setCanScroll([false, true]);\n } else if (\n tableRef.current.scrollLeft >\n tableRef.current.scrollWidth - tableRef.current.clientWidth - 10\n ) {\n setCanScroll([true, false]);\n } else {\n setCanScroll([true, true]);\n }\n };\n\n const handleScrollLeft = () => {\n tableRef.current.scrollLeft > 360\n ? (tableRef.current.scrollLeft -= 300)\n : (tableRef.current.scrollLeft = 0);\n };\n\n const handleScrollRight = () => {\n tableRef.current.scrollWidth - tableRef.current.clientWidth > 360\n ? (tableRef.current.scrollLeft += 300)\n : (tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth);\n };\n\n return (\n <Box>\n <Box sx={{ position: 'relative' }}>\n <Box sx={classes.arrowsContainer}>\n <Box\n onClick={handleScrollLeft}\n onMouseEnter={handleScrollableEnter}\n sx={{\n ...classes.leftArrow,\n ...(tableHovered && canScroll[0] && classes.showArrows),\n left: `${jobCellRef.current?.getBoundingClientRect().right}px`,\n top: 0\n }}\n id=\"left-arrow\"\n >\n <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n <Box sx={classes.arrowsContainer}>\n <Box\n onMouseEnter={handleScrollableEnter}\n onClick={handleScrollRight}\n sx={{\n ...classes.rightArrow,\n ...(tableHovered && canScroll[1] && classes.showArrows),\n left: `${actionCellRef.current?.getBoundingClientRect().left - 40}px`,\n top: 0\n }}\n id=\"right-arrow\"\n >\n <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n <Box\n sx={classes.tableContainer}\n onMouseEnter={handleScrollableEnter}\n onMouseLeave={handleScrollableExit}\n ref={tableRef}\n onScroll={handleScroll}\n >\n <Box sx={classes.table}>\n <Box sx={{ ...classes.row, ...classes.rowHeader }}>\n <Box\n component=\"span\"\n ref={jobCellRef}\n sx={{\n ...classes.title,\n minWidth: '182px',\n ...classes.sticky,\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible),\n left: 0\n }}\n >\n Job\n </Box>\n <Box component=\"span\" sx={{ minWidth: '120px' }}>\n Creation Date\n </Box>\n <Box component=\"span\" sx={{ minWidth: '120px' }}>\n Created By\n </Box>\n <Box component=\"span\" sx={{ minWidth: '120px' }}>\n Expiry\n </Box>\n <Box component=\"span\" sx={{ ...classes.center, minWidth: '130px' }}>\n Active on Indeed\n </Box>\n <Box component=\"span\" sx={{ ...classes.center, minWidth: '130px' }}>\n Sponsored\n </Box>\n <Box\n component=\"span\"\n sx={{\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n ref={actionCellRef}\n ></Box>\n </Box>\n {ads && ads.length > 0 ? (\n ads.map((ad: IJobAdIndeed) => (\n <Box key={ad.id} sx={classes.row}>\n <Box\n sx={{\n ...classes.title,\n minWidth: '182px',\n ...classes.sticky,\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n >\n {ad.title}\n </Box>\n <Box>{moment(ad.created_at).format('D MMM YYYY')}</Box>\n <Box>{ad.created_by.name}</Box>\n <Box>{ad.expiry ? moment(ad.expiry).format('D MMM YYYY') : 'No expiry'}</Box>\n <Box sx={classes.center}>\n {ad.status === 'open' ? (\n <CheckCircleIcon sx={classes.iconGreen} />\n ) : (\n <CancelIcon sx={classes.iconRed} />\n )}\n </Box>\n <Box sx={classes.center}>\n {ad.sponsored ? (\n <CheckCircleIcon sx={classes.iconGreen} />\n ) : (\n <Box\n onClick={() =>\n (window.location.href = `/admin/indeed/job_ads/${ad.id}/sponsored_job/edit/`)\n }\n sx={classes.sponsorText}\n >\n Sponsor Ad\n </Box>\n )}\n </Box>\n <ActionButton\n ad={ad}\n jobAds={jobAds}\n setAds={setAds}\n adsStatus={adsStatus}\n tableHovered={tableHovered}\n apiKey={apiKey}\n classes={classes}\n adType={'indeed'}\n setDialogLoading={setDialogLoading}\n setDialogUrl={setDialogUrl}\n setDialogOpen={setDialogOpen}\n setActionsAnchorEl={setActionsAnchorEl}\n setDialogAdID={setDialogAdID}\n setDialogTitle={setDialogTitle}\n setDialogDescription={setDialogDescription}\n setDialogButtonText={setDialogButtonText}\n setDialogButtonCallback={setDialogButtonCallback}\n setSelectedAd={setSelectedAd}\n handleSnack={handleSnack}\n handleCopy={handleCopy}\n handleArchive={handleArchive}\n />\n </Box>\n ))\n ) : (\n <Box sx={classes.row}>\n <Box sx={classes.title}>No ads to display</Box>\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n <ActionPopover\n anchorEl={actionsAnchorEl}\n onClose={() => {\n setActionsAnchorEl(null);\n setTimeout(() => {\n setSelectedAd(null);\n }, 300);\n }}\n handleCopy={handleCopy}\n handleArchive={handleArchive}\n handleDelete={handleDelete}\n selectedAd={selectedAd}\n classes={classes}\n adType={'indeed'}\n setDialogUrl={setDialogUrl}\n setDialogTitle={setDialogTitle}\n setDialogDescription={setDialogDescription}\n setDialogButtonText={setDialogButtonText}\n setDialogButtonCallback={setDialogButtonCallback}\n setDialogOpen={setDialogOpen}\n setDialogAdID={setDialogAdID}\n />\n <GenericDialog\n url={dialogUrl}\n title={dialogTitle}\n description={dialogDescription}\n buttonText={dialogButtonText}\n buttonCallback={dialogButtonCallback}\n callbackLoading={dialogLoading}\n isDialogOpen={dialogOpen}\n setDialogOpen={setDialogOpen}\n dialogAdID={dialogAdID}\n />\n <Snackbar open={isSnackOpen} onClose={() => setIsSnackOpen(false)} message={snackMessage} />\n </Box>\n );\n}\n","import React, { useState, useEffect, useCallback } from 'react';\nimport {\n Box,\n Button,\n CircularProgress,\n Pagination,\n MenuItem,\n FormControl,\n Select\n} from '@mui/material';\nimport TableSkeleton from '../TableSkeleton';\nimport GenericDialog from '../GenericDialog';\nimport AdTable from './AdTable';\nimport { classes } from '../styles';\nimport { IJobAdIndeed } from '../types';\nimport FilterButton from '../FilterButton';\nimport AdTypePopover from '../AdTypePopover';\n\nexport default function IndeedAds({ apiKey, jobId }: { apiKey: string; jobId: string | null }) {\n const [ads, setAds] = useState(null);\n const [page, setPage] = useState(1);\n const [maxAds, setMaxAds] = useState(0);\n const [maxPages, setMaxPages] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [selectedAdType, setSelectedAdType] = useState('active');\n const [loading, setLoading] = useState(true);\n const [loadingCreate, setLoadingCreate] = useState(false);\n const [filterAnchorEl, setFilterAnchorEl] = useState<HTMLElement | null>(null);\n const [errorModalOpen, setErrorModalOpen] = useState(false);\n\n const getInitialAds = useCallback(async () => {\n setLoading(true);\n const url = jobId\n ? `/api/v4/indeed/jobs/${jobId}/job_ads?limit=100`\n : '/api/v4/indeed/job_ads/active';\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then(async (response) => {\n if (response.ok) {\n return {\n data: await response.json(),\n maxAds: Number(response.headers.get('X-Total-Count')),\n maxPages: Number(response.headers.get('X-Total-Pages'))\n };\n }\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n });\n if (jobId !== null) {\n setAds(response.data.job_ads);\n } else {\n setAds(response.data);\n setMaxAds(response.maxAds);\n setMaxPages(response.maxPages);\n }\n } catch (error) {\n console.log(error);\n } finally {\n setLoading(false);\n }\n }, [apiKey, jobId]);\n\n const getAds = async (currentType: string, currentPage: number, currentRows: number) => {\n if (jobId !== null) return;\n setLoading(true);\n const url = `/api/v4/indeed/job_ads/${currentType}?page=${currentPage}&limit=${currentRows}`;\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then(async (response) => {\n if (response.ok) {\n return {\n data: await response.json(),\n maxAds: Number(response.headers.get('X-Total-Count')),\n maxPages: Number(response.headers.get('X-Total-Pages'))\n };\n }\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n });\n setAds(response.data);\n setMaxAds(response.maxAds);\n setMaxPages(response.maxPages);\n } catch (error) {\n console.log(error);\n } finally {\n setLoading(false);\n }\n };\n\n const createNewJob = useCallback(async () => {\n setLoadingCreate(true);\n try {\n const response = await fetch(`/api/v4/indeed/jobs/${jobId}/job_ads/init_indeed_ad`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n if (!response.ok) {\n setErrorModalOpen(true);\n } else {\n const data = await response.json();\n window.location.href = data.url;\n }\n } catch (error) {\n console.log(error);\n } finally {\n setLoadingCreate(false);\n }\n }, [apiKey, jobId]);\n\n const handleAdTypeChange = (adType: string) => {\n setFilterAnchorEl(null);\n if (adType === selectedAdType) return;\n setSelectedAdType(adType);\n setPage(1);\n getAds(adType, 1, rowsPerPage);\n };\n\n const handlePageChange = (event: React.ChangeEvent, newPage: number) => {\n if (newPage === page) return;\n setPage(newPage);\n getAds(selectedAdType, newPage, rowsPerPage);\n };\n\n const handleRowsPerPageChange = (selection: number) => {\n if (selection === rowsPerPage) return;\n setRowsPerPage(selection);\n getAds(selectedAdType, page, selection);\n };\n\n useEffect(() => {\n getInitialAds();\n }, [getInitialAds]);\n\n return (\n <Box sx={classes.containerOuter}>\n <Box sx={classes.container}>\n <Box sx={classes.banner}>\n <FilterButton\n selectedAdType={selectedAdType}\n setFilterAnchorEl={setFilterAnchorEl}\n classes={classes}\n />\n {jobId && (\n <Button\n disableElevation\n sx={{ ...classes.buttonSecondary, ...classes.newAdButton }}\n id=\"IndeedNewAdMultiposterBtn\"\n onClick={createNewJob}\n >\n {loadingCreate ? <CircularProgress size={20} color=\"inherit\" /> : 'New Ad'}\n </Button>\n )}\n </Box>\n {loading ? (\n <TableSkeleton />\n ) : (\n <AdTable\n jobAds={ads}\n ads={ads[selectedAdType as keyof IJobAdIndeed]}\n setAds={setAds}\n adsStatus={selectedAdType}\n isSingleJob={jobId !== null}\n apiKey={apiKey}\n />\n )}\n {!jobId && (\n <Box sx={classes.paginationParent}>\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n sx={classes.rowSelect}\n value={rowsPerPage}\n onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" value={10}>\n 10\n </MenuItem>\n <MenuItem id=\"second-rpp-item\" value={20}>\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer}>\n <Pagination\n id=\"pagination-menu\"\n count={maxPages}\n page={page}\n defaultPage={Math.ceil(maxPages / 2)}\n siblingCount={0}\n onChange={handlePageChange}\n sx={classes.pagination}\n />\n <span id=\"total-jobs\">{maxAds} Total</span>\n </Box>\n </Box>\n )}\n </Box>\n <AdTypePopover\n filterAnchorEl={filterAnchorEl}\n setFilterAnchorEl={setFilterAnchorEl}\n selectedAdType={selectedAdType}\n handleAdTypeChange={handleAdTypeChange}\n classes={classes}\n adType=\"indeed\"\n />\n <GenericDialog\n url=\"\"\n callbackLoading={false}\n dialogAdID={0}\n setDialogOpen={setErrorModalOpen}\n isDialogOpen={errorModalOpen}\n buttonCallback={() => setErrorModalOpen(false)}\n title=\"Unable to create ad\"\n description=\"Ads can only be created on jobs with a published state\"\n buttonText=\"Ok\"\n />\n </Box>\n );\n}\n","import React, { useState, useRef } from 'react';\nimport moment from 'moment';\nimport axios from 'axios';\nimport { classes } from '../styles';\nimport { IAdTableProps, IJobAd } from '../types';\nimport GenericDialog from '../GenericDialog';\nimport ExpiryDialog from '../ExpiryDialog';\nimport ExpiryPopover from '../ExpiryPopover';\nimport { Box, Button, IconButton, Snackbar, Tooltip, Popover } from '@mui/material';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport EditIcon from '@mui/icons-material/Edit';\nimport ArchiveIcon from '@mui/icons-material/Archive';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport CopyAdIdButton from './CopyAdIdButton';\n\nfunction AdTable({ jobAds, ads, setAds, adsStatus, apiKey, adminUser }: IAdTableProps) {\n const [dialogUrl, setDialogUrl] = useState('');\n const [dialogAdID, setDialogAdID] = useState(0);\n const [dialogTitle, setDialogTitle] = useState('');\n const [dialogDescription, setDialogDescription] = useState('');\n const [dialogButtonText, setDialogButtonText] = useState('');\n const [dialogButtonCallback, setDialogButtonCallback] = useState(null);\n const [dialogLoading, setDialogLoading] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [expiryDialogOpen, setExpiryDialogOpen] = useState(false);\n const [expiryActionsAnchorEl, setExpiryActionsAnchorEl] = useState(null);\n const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n const [selectedAd, setSelectedAd] = useState<IJobAd | null>(null);\n const [isSnackOpen, setIsSnackOpen] = useState(false);\n const [snackMessage, setSnackMessage] = useState('');\n const [tableHovered, setTableHovered] = useState(false);\n const actionCellRef = useRef(null);\n const jobCellRef = useRef(null);\n const [canScroll, setCanScroll] = useState([false, true]);\n const tableRef = useRef<HTMLDivElement>(null);\n\n function handleSnack(message: string) {\n setIsSnackOpen(true);\n setSnackMessage(message);\n }\n\n function handleButtonStyle(ad: IJobAd) {\n if (adsStatus === 'active') {\n return {\n text: (\n <>\n Expire Ad <KeyboardArrowDownIcon sx={classes.downIcon} />\n </>\n ),\n class: classes.buttonExpiry,\n callback: (event: React.MouseEvent) => openExpiryDialog(ad, event)\n };\n } else if (adsStatus === 'draft') {\n return {\n text: 'Continue Draft',\n class: classes.buttonGreenLight,\n callback: () => handleEdit(ad.edit_url)\n };\n } else {\n return {\n text: 'Clone Ad',\n class: classes.buttonSecondaryLight,\n callback: () => {\n setDialogUrl(ad.clone_url);\n setDialogTitle('Are you sure you want to clone this ad?');\n setDialogDescription('You will have to repost for your ad to be active on SEEK.');\n setDialogButtonText('Clone ad');\n setDialogButtonCallback(() => handleCopy);\n setDialogOpen(true);\n }\n };\n }\n }\n\n const handleImmediateExpiry = (ad: IJobAd) => {\n setDialogAdID(ad.id);\n setDialogUrl(`/api/v4/seek/job_ads/${ad.id}/ad_posting`);\n setDialogTitle('Are you sure you want to expire this ad?');\n setDialogDescription(\n 'This will remove it from SEEK immediately. To repost this ad later you will be charged for a new ad.'\n );\n setDialogButtonText('Expire now');\n setDialogButtonCallback(() => handleExpire);\n setDialogOpen(true);\n setExpiryActionsAnchorEl(null);\n };\n\n const handleDateExpiry = () => {\n setExpiryDialogOpen(true);\n setExpiryActionsAnchorEl(null);\n };\n\n const openExpiryDialog = (ad: IJobAd, event: React.MouseEvent) => {\n setSelectedAd(ad);\n setExpiryActionsAnchorEl(event.currentTarget);\n };\n\n const handleLocalExpiryChange = (newDate, adId) => {\n const newAds = Object.assign(jobAds);\n const index = newAds[adsStatus].findIndex((ad: IJobAd) => ad.id === adId);\n newAds[adsStatus][index].expired_at = newDate;\n setAds({ ...newAds });\n };\n\n async function handleEdit(url: string) {\n window.location.href = url;\n }\n\n async function handleExpire(url: string, id: number) {\n setDialogLoading(true);\n try {\n await axios.delete(`${url}`, {\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const newAds = Object.assign(jobAds);\n const index = newAds[adsStatus].findIndex((ad: IJobAd) => ad.id === id);\n const copyJob = newAds[adsStatus][index];\n newAds.expired && newAds.expired.push(copyJob);\n newAds[adsStatus].splice(index, 1);\n setAds({ ...newAds });\n handleSnack('Job has been expired');\n } catch (e) {\n console.log(e);\n handleSnack('Could not expire ad');\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n }\n\n async function handleArchive(url: string, id: number) {\n setDialogLoading(true);\n try {\n const { data } = await axios.delete(`${url}`, {\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const newAds = Object.assign(jobAds);\n const index = newAds[adsStatus].findIndex((ad: IJobAd) => ad.id === id);\n const copyJob = newAds[adsStatus][index];\n newAds.archived && newAds.archived.push(copyJob);\n newAds[adsStatus].splice(index, 1);\n setAds({ ...newAds });\n handleSnack(`${data.title} has been archived`);\n } catch (e) {\n console.log(e);\n handleSnack('Could not archive ad');\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n }\n\n async function handleDelete(url: string, id: number) {\n setDialogLoading(true);\n try {\n const { data } = await axios.delete(`${url}`, {\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const newAds = Object.assign(jobAds);\n newAds[adsStatus] = newAds[adsStatus].filter((ad: IJobAd) => ad.id !== id);\n setAds({ ...newAds });\n handleSnack(`${data.title} has been deleted`);\n } catch (e) {\n console.log(e);\n handleSnack('Could not delete ad');\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n }\n\n async function handleReplay(url: string) {\n setDialogLoading(true);\n try {\n const { data } = await axios.post(\n `${url}`,\n {},\n {\n headers: {\n 'X-api-authenticate': apiKey\n }\n }\n );\n handleSnack('Replay request has been posted successfully');\n Object.keys(jobAds).forEach((status) => {\n jobAds[status] = jobAds[status].filter((ad: IJobAd) => ad.id !== data.id);\n });\n setAds({ ...jobAds });\n } catch (e) {\n console.log(e);\n handleSnack('Could not replay ad');\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n }\n\n function isScrollable(element: HTMLElement) {\n return element && element.scrollWidth > element.clientWidth + 20;\n }\n\n const handleScrollableEnter = () => {\n if (isScrollable(tableRef.current) && ads.length > 0) setTableHovered(true);\n };\n\n const handleScrollableExit = () => {\n setTableHovered(false);\n };\n\n const handleScroll = () => {\n if (tableRef.current.scrollLeft < 10) {\n setCanScroll([false, true]);\n } else if (\n tableRef.current.scrollLeft >\n tableRef.current.scrollWidth - tableRef.current.clientWidth - 10\n ) {\n setCanScroll([true, false]);\n } else {\n setCanScroll([true, true]);\n }\n };\n\n const handleScrollLeft = () => {\n tableRef.current.scrollLeft > 360\n ? (tableRef.current.scrollLeft -= 300)\n : (tableRef.current.scrollLeft = 0);\n };\n\n const handleScrollRight = () => {\n tableRef.current.scrollWidth - tableRef.current.clientWidth > 360\n ? (tableRef.current.scrollLeft += 300)\n : (tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth);\n };\n\n function handleCopy(url: string) {\n window.location.href = url;\n }\n\n const showDeleteOption =\n adsStatus !== 'active' &&\n selectedAd?.status !== 'open' &&\n !selectedAd?.active_on_seek &&\n !['open', 'archived'].includes(adsStatus);\n\n const showIcons = (ad: IJobAd) => {\n switch (adsStatus) {\n case 'active':\n return (\n <>\n <Tooltip title=\"Edit\">\n <IconButton\n sx={classes.icon}\n onClick={() => handleEdit(ad.edit_url)}\n className=\"edit-seek-ad-button\"\n >\n <EditIcon fontSize=\"small\" sx={classes.iconGrey} />\n </IconButton>\n </Tooltip>\n {adminUser && <CopyAdIdButton ad={ad} handleSnack={handleSnack} />}\n <IconButton\n sx={classes.icon}\n onClick={(e) => {\n setActionsAnchorEl(e.currentTarget);\n setSelectedAd(ad);\n }}\n className=\"seek-ad-actions-button\"\n >\n <MoreVertIcon sx={classes.iconGrey} />\n </IconButton>\n </>\n );\n case 'draft':\n return (\n <Tooltip title=\"Edit\">\n <IconButton\n sx={classes.icon}\n onClick={() => handleEdit(ad.edit_url)}\n className=\"edit-seek-ad-button\"\n >\n <EditIcon fontSize=\"small\" sx={classes.iconGrey} />\n </IconButton>\n </Tooltip>\n );\n case 'expired':\n return (\n <>\n <Tooltip title=\"Archive\">\n <IconButton>\n <ArchiveIcon\n sx={classes.iconRed}\n onClick={() => {\n setDialogUrl(`/api/v4/seek/job_ads/${ad?.id}/archive`);\n setDialogAdID(ad?.id);\n setDialogTitle('Are you sure you want to archive this ad?');\n setDialogDescription(null);\n setDialogButtonText('Archive now');\n setDialogButtonCallback(() => handleArchive);\n setDialogOpen(true);\n }}\n />\n </IconButton>\n </Tooltip>\n {adminUser && <CopyAdIdButton ad={ad} handleSnack={handleSnack} />}\n </>\n );\n case 'archived':\n return null;\n default:\n return null;\n }\n };\n\n return (\n <Box>\n <Box sx={{ position: 'relative' }}>\n <Box sx={classes.arrowsContainer}>\n <Box\n onClick={handleScrollLeft}\n onMouseEnter={handleScrollableEnter}\n sx={{\n ...classes.leftArrow,\n ...(tableHovered && canScroll[0] && classes.showArrows),\n left: `${jobCellRef.current?.getBoundingClientRect().right}px`,\n top: 0\n }}\n id=\"left-arrow\"\n >\n <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n <Box sx={classes.arrowsContainer}>\n <Box\n onMouseEnter={handleScrollableEnter}\n onClick={handleScrollRight}\n sx={{\n ...classes.rightArrow,\n ...(tableHovered && canScroll[1] && classes.showArrows),\n left: `${actionCellRef.current?.getBoundingClientRect().left - 40}px`,\n top: 0\n }}\n id=\"right-arrow\"\n >\n <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n <Box\n sx={classes.tableContainer}\n onMouseEnter={handleScrollableEnter}\n onMouseLeave={handleScrollableExit}\n ref={tableRef}\n onScroll={handleScroll}\n >\n <Box sx={classes.table}>\n <Box sx={{ ...classes.row, ...classes.rowHeader }}>\n <Box component=\"span\" sx={{ ...classes.sticky, minWidth: '86px' }}>\n SEEK Reference\n </Box>\n <Box\n component=\"span\"\n ref={jobCellRef}\n sx={{\n ...classes.title,\n minWidth: '182px',\n ...classes.sticky,\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible),\n left: '86px'\n }}\n >\n Job\n </Box>\n <Box component=\"span\" sx={{ minWidth: '120px' }}>\n Location\n </Box>\n <Box component=\"span\" sx={{ minWidth: '120px' }}>\n Creation Date\n </Box>\n <Box component=\"span\" sx={{ minWidth: '120px' }}>\n Created By\n </Box>\n <Box component=\"span\" sx={{ minWidth: '120px' }}>\n Expiry\n </Box>\n <Box\n component=\"span\"\n sx={{\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n ref={actionCellRef}\n />\n </Box>\n {ads && ads.length > 0 ? (\n ads.map((ad) => (\n <Box key={ad.id} sx={classes.row}>\n <Box sx={{ ...classes.sticky, minWidth: '86px' }}>{ad.reference}</Box>\n <Box\n sx={{\n ...classes.title,\n minWidth: '182px',\n ...classes.sticky,\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible),\n left: '86px'\n }}\n >\n {ad.title}\n </Box>\n <Box>{ad.listing_location_display}</Box>\n <Box>{moment(ad.created_at).format('D MMM YYYY')}</Box>\n <Box>{ad.created_by ? ad.created_by.name : '-'}</Box>\n <Box>\n {ad.expired_at ? moment(ad.expired_at).format('D MMM YYYY') : 'No expiry'}\n </Box>\n <Box\n sx={{\n ...classes.actionsContainer,\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n >\n {adsStatus !== 'legacy' && (\n <Box sx={classes.actionButtonContainer} onClick={() => setDialogAdID(ad.id)}>\n <Button\n sx={{\n ...classes.columnRefrence,\n ...handleButtonStyle(ad).class,\n ...classes.columnButtonPadding,\n ...classes.actionButton\n }}\n disableElevation\n size=\"large\"\n disabled={adsStatus === 'legacy'}\n onClick={handleButtonStyle(ad).callback}\n >\n {handleButtonStyle(ad).text}\n </Button>\n </Box>\n )}\n {showIcons(ad)}\n </Box>\n </Box>\n ))\n ) : (\n <Box sx={classes.row}>\n <Box sx={classes.title}>No ads to display</Box>\n </Box>\n )}\n <Popover\n id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n sx={{ ...classes.actionsMenu, minWidth: 'unset', width: '135px' }}\n open={Boolean(actionsAnchorEl)}\n anchorEl={actionsAnchorEl}\n onClose={() => {\n setActionsAnchorEl(null);\n setTimeout(() => {\n setSelectedAd(null);\n }, 300);\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {selectedAd && (\n <>\n {adsStatus === 'active' && selectedAd.active_on_seek && (\n <span\n onClick={() => window.open(selectedAd.seek_live_url, '_blank').focus()}\n className=\"preview-seek-ad-button\"\n >\n Preview ad\n </span>\n )}\n {!['legacy'].includes(adsStatus) && adminUser && (\n <span\n className=\"preview-seek-ad-button\"\n onClick={() => {\n setDialogUrl(`/api/v4/seek/job_ads/${selectedAd.id}/webhook_replay`);\n setDialogTitle(\n 'Are you sure you want to replay webhook events of this ad?'\n );\n setDialogDescription(\n 'You will have to repost for your ad to be active on Seek.'\n );\n setDialogButtonText('Replay');\n setDialogButtonCallback(() => handleReplay);\n setDialogOpen(true);\n }}\n >\n Replay Ad\n </span>\n )}\n {adsStatus === 'legacy' && (\n <span onClick={() => (window.location.href = selectedAd.preview_url)}>\n Settings\n </span>\n )}\n {!['expired', 'archived', 'legacy'].includes(adsStatus) && (\n <span\n onClick={() => {\n setDialogUrl(selectedAd.clone_url);\n setDialogTitle('Are you sure you want to clone this ad?');\n setDialogDescription(\n 'You will have to repost for your ad to be active on Seek.'\n );\n setDialogButtonText('Clone ad');\n setDialogButtonCallback(() => handleCopy);\n setDialogOpen(true);\n }}\n className=\"clone-seek-ad-button\"\n >\n Clone\n </span>\n )}\n {adsStatus === 'expired' ? (\n <span\n onClick={() => {\n setDialogUrl(`/api/v4/seek/job_ads/${selectedAd.id}/archive`);\n setDialogAdID(selectedAd.id);\n setDialogTitle('Are you sure you want to archive this ad?');\n setDialogDescription(null);\n setDialogButtonText('Archive now');\n setDialogButtonCallback(() => handleArchive);\n setDialogOpen(true);\n }}\n >\n Archive\n </span>\n ) : (\n showDeleteOption && (\n <span\n onClick={() => {\n setDialogUrl(`/api/v4/seek/job_ads/${selectedAd.id}`);\n setDialogAdID(selectedAd.id);\n setDialogTitle('Are you sure you want to delete this ad?');\n setDialogDescription(\n 'Your job ad will be permanently deleted and you will not be able to recover your ad details.'\n );\n setDialogButtonText('Delete ad');\n setDialogButtonCallback(() => handleDelete);\n setDialogOpen(true);\n }}\n >\n Delete\n </span>\n )\n )}\n </>\n )}\n </Popover>\n </Box>\n </Box>\n </Box>\n <GenericDialog\n url={dialogUrl}\n title={dialogTitle}\n description={dialogDescription}\n buttonText={dialogButtonText}\n buttonCallback={dialogButtonCallback}\n callbackLoading={dialogLoading}\n isDialogOpen={dialogOpen}\n dialogAdID={dialogAdID}\n setDialogOpen={setDialogOpen}\n />\n <ExpiryDialog\n isExpiryDialogOpen={expiryDialogOpen}\n setExpiryDialogOpen={setExpiryDialogOpen}\n dialogLoading={dialogLoading}\n ad={selectedAd}\n apiKey={apiKey}\n handleSnack={handleSnack}\n handleLocalExpiryChange={handleLocalExpiryChange}\n />\n <ExpiryPopover\n immediateExpiryOnClick={handleImmediateExpiry}\n dateExpiryOnClick={handleDateExpiry}\n expiryActionsAnchorEl={expiryActionsAnchorEl}\n setExpiryActionsAnchorEl={setExpiryActionsAnchorEl}\n ad={selectedAd}\n />\n <Snackbar open={isSnackOpen} onClose={() => setIsSnackOpen(false)} message={snackMessage} />\n </Box>\n );\n}\n\nexport default AdTable;\n","import React from 'react';\nimport ContentCopyIcon from '@mui/icons-material/ContentCopy';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport { IconButton, Tooltip } from '@mui/material';\nimport { classes } from '../styles';\nimport { IJobAd } from '../types';\n\nfunction CopyAdIdButton({\n ad,\n handleSnack\n}: {\n ad: IJobAd;\n handleSnack: (message: string) => void;\n}) {\n if (ad?.advertisement_id) {\n return (\n <CopyToClipboard text={ad.advertisement_id} onCopy={() => handleSnack('Ad Id copied')}>\n <Tooltip title=\"Copy Seek Ad Id\">\n <IconButton>\n <ContentCopyIcon fontSize=\"small\" sx={classes.iconGrey} />\n </IconButton>\n </Tooltip>\n </CopyToClipboard>\n );\n } else {\n return <div />;\n }\n}\n\nexport default CopyAdIdButton;\n","import React, { useEffect, useState } from 'react';\nimport { classes } from './styles';\nimport { Autocomplete, Stack, Dialog, TextField, Typography, FormLabel } from '@mui/material';\nimport ModalFooterButtons from '../../GenericModal/ModalFooterButtons';\nimport { ISeekAccount } from '../types';\nimport { useInitSeekAd } from '../../../../SeekAd/hooks/useInitSeekAd';\n\nfunction CreateAdDialog({\n jobId,\n createAdDialogOpen,\n setCreateAdDialogOpen,\n setError,\n seekAccounts\n}: {\n jobId: string | null;\n createAdDialogOpen: boolean;\n setCreateAdDialogOpen: (value: boolean) => void;\n setError: (error: string) => void;\n seekAccounts: ISeekAccount[];\n}) {\n const [selectedSeekAccount, setSelectedSeekAccount] = useState(null);\n const { mutate, jsonResponse, reset } = useInitSeekAd();\n\n useEffect(() => {\n if (jsonResponse.url) {\n window.location.href = jsonResponse.url;\n } else if (jsonResponse.errors) {\n setError(jsonResponse.errors ? jsonResponse.errors[0] : 'Error creating ad');\n setCreateAdDialogOpen(false);\n reset();\n }\n }, [jsonResponse, reset, setCreateAdDialogOpen, setError]);\n\n const handleNext = async () => {\n if (!selectedSeekAccount) return;\n\n if (selectedSeekAccount) {\n mutate(jobId, selectedSeekAccount.id);\n }\n };\n\n return (\n <Dialog open={createAdDialogOpen} onClose={() => setCreateAdDialogOpen(false)}>\n <Stack sx={classes.dialogContainer}>\n <Typography sx={classes.dialogTitle}>New SEEK Ad</Typography>\n <FormLabel required={true} sx={classes.label}>Select account</FormLabel> \n <Autocomplete\n disablePortal\n options={seekAccounts}\n getOptionLabel={(option) => option.name}\n value={selectedSeekAccount}\n renderInput={(params) => <TextField {...params} placeholder='Please select' required />}\n onChange={(_event, value) => setSelectedSeekAccount(value)}\n sx={classes.dropdown}\n />\n <ModalFooterButtons\n primaryButtonText='Next'\n primaryButtonCallback={handleNext}\n secondaryButtonText='Cancel'\n secondaryButtonCallback={() => setCreateAdDialogOpen(false)}\n />\n </Stack>\n </Dialog>\n );\n}\n\nexport default CreateAdDialog;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport {\n Box,\n Button,\n CircularProgress,\n Pagination,\n MenuItem,\n FormControl,\n Select\n} from '@mui/material';\nimport AdTable from './AdTable';\nimport TableSkeleton from '../TableSkeleton';\nimport GenericDialog from '../GenericDialog';\nimport CreateAdDialog from './CreateAdDialog';\nimport { classes } from '../styles';\nimport { IJobAds } from '../types';\nimport { useSeekAccounts } from '../../../../SeekAd/hooks/useSeekAccounts';\nimport { useInitSeekAd } from '../../../../SeekAd/hooks/useInitSeekAd';\nimport FilterButton from '../FilterButton';\nimport AdTypePopover from '../AdTypePopover';\n\nexport default function SeekAds({ apiKey, jobId }: { apiKey: string; jobId: string | null }) {\n const [ads, setAds] = useState<IJobAds>(null);\n const [adminUser, setAdminUser] = useState(false);\n const [page, setPage] = useState(1);\n const [maxAds, setMaxAds] = useState(0);\n const [maxPages, setMaxPages] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [selectedAdType, setSelectedAdType] = useState('active');\n const [loading, setLoading] = useState(true);\n const [loadingCreate, setLoadingCreate] = useState(false);\n const [filterAnchorEl, setFilterAnchorEl] = useState<HTMLElement | null>(null);\n const [createAdDialogOpen, setCreateAdDialogOpen] = useState<boolean>(false);\n const [errorModalOpen, setErrorModalOpen] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n const { seekAccounts } = useSeekAccounts({ jobId });\n // TODO: Remove after finishing seek integration upgrade\n const { mutate, jsonResponse } = useInitSeekAd();\n\n useEffect(() => {\n if (jsonResponse.url) {\n window.location.href = jsonResponse.url;\n setErrorModalOpen(false);\n } else if (jsonResponse.errors) {\n setErrorMessage(jsonResponse.errors ? jsonResponse.errors[0] : 'Error creating ad');\n setErrorModalOpen(true);\n } else {\n setErrorModalOpen(false);\n }\n }, [jsonResponse]);\n\n const getInitialAds = useCallback(async () => {\n setLoading(true);\n const url = jobId\n ? `/api/v4/seek/jobs/${jobId}/job_ads?limit=100`\n : '/api/v4/seek/job_ads/active';\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then(async (response) => {\n if (response.ok) {\n return {\n data: await response.json(),\n maxAds: Number(response.headers.get('X-Total-Count')),\n maxPages: Number(response.headers.get('X-Total-Pages'))\n };\n }\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n });\n if (jobId !== null) {\n setAds(response.data.job_ads);\n setAdminUser(response.data.admin_user);\n } else {\n setAds(response.data);\n setMaxAds(response.maxAds);\n setMaxPages(response.maxPages);\n }\n } catch (error) {\n console.log(error);\n } finally {\n setLoading(false);\n }\n }, [apiKey, jobId]);\n\n const getAds = async (currentType: string, currentPage: number, currentRows: number) => {\n if (jobId !== null) return;\n setLoading(true);\n const url = `/api/v4/seek/job_ads/${currentType}?page=${currentPage}&limit=${currentRows}`;\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then(async (response) => {\n if (response.ok) {\n return {\n data: await response.json(),\n maxAds: Number(response.headers.get('X-Total-Count')),\n maxPages: Number(response.headers.get('X-Total-Pages'))\n };\n }\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n });\n setAds(response.data);\n setMaxAds(response.maxAds);\n setMaxPages(response.maxPages);\n } catch (error) {\n console.log(error);\n } finally {\n setLoading(false);\n }\n };\n\n const handleAdTypeChange = (adType: string) => {\n setFilterAnchorEl(null);\n if (adType === selectedAdType) return;\n setSelectedAdType(adType);\n setPage(1);\n getAds(adType, 1, rowsPerPage);\n };\n\n const handlePageChange = (event: React.ChangeEvent, newPage: number) => {\n if (newPage === page) return;\n setPage(newPage);\n getAds(selectedAdType, newPage, rowsPerPage);\n };\n\n const handleRowsPerPageChange = (selection: number) => {\n if (selection === rowsPerPage) return;\n setRowsPerPage(selection);\n getAds(selectedAdType, page, selection);\n };\n\n const handleCreateAd = () => {\n if (seekAccounts && seekAccounts.length > 0) {\n setCreateAdDialogOpen(true);\n } else {\n mutate(jobId);\n }\n };\n\n const setError = (error: string) => {\n setErrorModalOpen(true);\n setErrorMessage(error);\n };\n\n useEffect(() => {\n getInitialAds();\n }, [getInitialAds]);\n\n return (\n <Box sx={classes.containerOuter}>\n <Box sx={classes.container}>\n <Box sx={classes.banner}>\n <FilterButton\n selectedAdType={selectedAdType}\n setFilterAnchorEl={setFilterAnchorEl}\n classes={classes}\n />\n {jobId && (\n <Button\n disableElevation\n sx={classes.newAdButton}\n id=\"SeekNewAdMultiposterBtn\"\n onClick={handleCreateAd}\n >\n {loadingCreate ? <CircularProgress size={20} color=\"inherit\" /> : 'New Ad'}\n </Button>\n )}\n </Box>\n <Box>\n {loading ? (\n <TableSkeleton />\n ) : (\n <AdTable\n jobAds={ads}\n adminUser={adminUser}\n setAds={setAds}\n adsStatus={selectedAdType}\n ads={ads[selectedAdType as keyof IJobAds]}\n isSingleJob={jobId !== null}\n apiKey={apiKey}\n />\n )}\n </Box>\n {!jobId && (\n <Box sx={classes.paginationParent}>\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n sx={classes.rowSelect}\n value={rowsPerPage}\n onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" value={10}>\n 10\n </MenuItem>\n <MenuItem id=\"second-rpp-item\" value={20}>\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer}>\n <Pagination\n id=\"pagination-menu\"\n count={maxPages}\n page={page}\n defaultPage={Math.ceil(maxPages / 2)}\n siblingCount={0}\n onChange={handlePageChange}\n sx={classes.pagination}\n />\n <span id=\"total-jobs\">{maxAds} Total</span>\n </Box>\n </Box>\n )}\n </Box>\n <AdTypePopover\n filterAnchorEl={filterAnchorEl}\n setFilterAnchorEl={setFilterAnchorEl}\n selectedAdType={selectedAdType}\n handleAdTypeChange={handleAdTypeChange}\n classes={classes}\n adType=\"seek\"\n />\n <GenericDialog\n url=\"\"\n callbackLoading={false}\n dialogAdID={0}\n setDialogOpen={setErrorModalOpen}\n isDialogOpen={errorModalOpen}\n buttonCallback={() => setErrorModalOpen(false)}\n title=\"Unable to create ad\"\n description={errorMessage}\n buttonText=\"Ok\"\n />\n <CreateAdDialog\n jobId={jobId}\n seekAccounts={seekAccounts}\n createAdDialogOpen={createAdDialogOpen}\n setCreateAdDialogOpen={setCreateAdDialogOpen}\n setError={setError}\n />\n </Box>\n );\n}\n","import React, { useMemo } from 'react';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\n\ninterface IProps {\n size?: number;\n borderType?: 'top' | 'bottom' | 'none';\n padding?: string;\n height?: string;\n}\n\nexport default function TableSkeleton({\n size = 3,\n borderType = 'top',\n padding = '20px 0px',\n height = '40px'\n}: IProps) {\n const skeletonComponent = useMemo(() => {\n const boxStyle = {\n width: '100%',\n padding: padding,\n border: borderType === 'none' ? 'none' : 'inherit',\n borderTop: borderType === 'top' ? '1px solid #eaeaea' : 'none',\n borderBottom: borderType === 'bottom' ? '1px solid #eaeaea' : 'none'\n };\n return [...new Array(size)].map((_, i) => (\n <Box sx={boxStyle} key={i}>\n <Skeleton animation=\"wave\" width=\"100%\" height={height} />\n </Box>\n ));\n }, [borderType, size]);\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n width: '100%'\n }}\n >\n {skeletonComponent}\n </Box>\n );\n}\n","import React, { useState, useRef } from 'react';\nimport { classes } from '../styles';\nimport { Box, Snackbar, Button, Tooltip, IconButton } from '@mui/material';\nimport { IJobAdViewjobsProps, IJobAdViewJobs } from '../types';\nimport moment from 'moment';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport ActionButton from '../ActionButton';\nimport axios from 'axios';\nimport ActionPopover from '../ActionPopover';\nimport GenericDialog from '../GenericDialog';\n\nexport default function AdTable({ ads, jobAds, setAds, adsStatus, apiKey }: IJobAdViewjobsProps) {\n const [isSnackOpen, setIsSnackOpen] = useState(false);\n const [snackMessage, setSnackMessage] = useState('');\n const [tableHovered, setTableHovered] = useState(false);\n const [dialogUrl, setDialogUrl] = useState('');\n const [dialogAdID, setDialogAdID] = useState(0);\n const [dialogTitle, setDialogTitle] = useState('');\n const [dialogDescription, setDialogDescription] = useState('');\n const [dialogButtonText, setDialogButtonText] = useState('');\n const [dialogButtonCallback, setDialogButtonCallback] = useState(null);\n const [dialogLoading, setDialogLoading] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n const [selectedAd, setSelectedAd] = useState<IJobAdViewJobs | null>(null);\n\n const actionCellRef = useRef(null);\n const jobCellRef = useRef(null);\n\n function handleSnack(message: string) {\n setIsSnackOpen(true);\n setSnackMessage(message);\n }\n\n async function handleArchive(url: string, id: number) {\n setDialogLoading(true);\n try {\n const { data } = await axios.put(`${url}`, {\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const newAds = Object.assign(jobAds);\n const index = newAds[adsStatus].findIndex((ad: IJobAdViewJobs) => ad.id === id);\n const copyJob = newAds[adsStatus][index];\n copyJob.status = 'archived';\n newAds.archived && newAds.archived.push(copyJob);\n newAds[adsStatus].splice(index, 1);\n setAds({ ...newAds });\n handleSnack(`${data.title} has been archived`);\n } catch (e) {\n console.log(e);\n handleSnack('Could not archive ad');\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n }\n\n async function handleCopy(url: string) {\n setDialogLoading(true);\n try {\n const { data } = await axios.get(`${url}?operation=clone`);\n window.location.href = data.url;\n } catch (e) {\n console.log(e);\n handleSnack('Could not clone ad');\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n }\n\n async function handleDelete(url: string, id: number) {\n setDialogLoading(true);\n try {\n const { data } = await axios.delete(`${url}`, {\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const newAds = Object.assign(jobAds);\n newAds[adsStatus] = newAds[adsStatus].filter((ad: IJobAdViewJobs) => ad.id !== id);\n setAds({ ...newAds });\n handleSnack(`${data.title} has been deleted`);\n } catch (e) {\n console.log(e);\n handleSnack('Could not delete ad');\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n }\n\n return (\n <Box>\n <Box sx={{ position: 'relative' }}>\n <Box sx={classes.tableContainer}>\n <Box sx={classes.table}>\n <Box sx={{ ...classes.row, ...classes.rowHeader }}>\n <Box\n component=\"span\"\n ref={jobCellRef}\n sx={{\n ...classes.title,\n minWidth: '182px',\n ...classes.sticky,\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible),\n left: 0\n }}\n >\n Job\n </Box>\n <Box component=\"span\" sx={{ minWidth: '120px' }}>\n Creation Date\n </Box>\n <Box component=\"span\" sx={{ minWidth: '120px' }}>\n Created By\n </Box>\n <Box component=\"span\" sx={{ minWidth: '120px' }}>\n Expiry\n </Box>\n <Box component=\"span\" sx={{ ...classes.center, minWidth: '130px' }}>\n Active on ViewJobs\n </Box>\n <Box component=\"span\" sx={{ ...classes.center, minWidth: '130px' }}>\n Sponsored\n </Box>\n <Box\n component=\"span\"\n sx={{\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n ref={actionCellRef}\n ></Box>\n </Box>\n {ads && ads.length > 0 ? (\n ads.map((ad: IJobAdViewJobs) => (\n <Box key={ad.id} sx={classes.row}>\n <Box\n sx={{\n ...classes.title,\n minWidth: '182px',\n ...classes.sticky,\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n >\n {ad.title}\n </Box>\n <Box>{moment(ad.created_at).format('D MMM YYYY')}</Box>\n <Box>{ad.created_by.name}</Box>\n <Box>\n {ad.expired_at ? moment(ad.expired_at).format('D MMM YYYY') : 'No expiry'}\n </Box>\n <Box sx={classes.center}>\n {ad.status === 'open' ? (\n <CheckCircleIcon sx={classes.iconGreen} />\n ) : (\n <CancelIcon sx={classes.iconRed} />\n )}\n </Box>\n <Box sx={classes.center}>\n {ad.featured ? (\n <CheckCircleIcon sx={classes.iconGreen} />\n ) : (\n <CancelIcon sx={classes.iconRed} />\n )}\n </Box>\n <ActionButton\n ad={ad}\n jobAds={jobAds}\n setAds={setAds}\n adsStatus={adsStatus}\n tableHovered={tableHovered}\n apiKey={apiKey}\n classes={classes}\n adType={'view_jobs'}\n setDialogLoading={setDialogLoading}\n setDialogUrl={setDialogUrl}\n setDialogOpen={setDialogOpen}\n setActionsAnchorEl={setActionsAnchorEl}\n setDialogAdID={setDialogAdID}\n setDialogTitle={setDialogTitle}\n setDialogDescription={setDialogDescription}\n setDialogButtonText={setDialogButtonText}\n setDialogButtonCallback={setDialogButtonCallback}\n setSelectedAd={setSelectedAd}\n handleSnack={handleSnack}\n handleCopy={handleCopy}\n handleArchive={handleArchive}\n />\n </Box>\n ))\n ) : (\n <Box sx={classes.row}>\n <Box sx={classes.title}>No ads to display</Box>\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n <ActionPopover\n anchorEl={actionsAnchorEl}\n onClose={() => {\n setActionsAnchorEl(null);\n setTimeout(() => {\n setSelectedAd(null);\n }, 300);\n }}\n handleCopy={handleCopy}\n handleArchive={handleArchive}\n handleDelete={handleDelete}\n selectedAd={selectedAd}\n classes={classes}\n adType={'view_jobs'}\n setDialogUrl={setDialogUrl}\n setDialogTitle={setDialogTitle}\n setDialogDescription={setDialogDescription}\n setDialogButtonText={setDialogButtonText}\n setDialogButtonCallback={setDialogButtonCallback}\n setDialogOpen={setDialogOpen}\n setDialogAdID={setDialogAdID}\n />\n <GenericDialog\n url={dialogUrl}\n title={dialogTitle}\n description={dialogDescription}\n buttonText={dialogButtonText}\n buttonCallback={dialogButtonCallback}\n callbackLoading={dialogLoading}\n isDialogOpen={dialogOpen}\n setDialogOpen={setDialogOpen}\n dialogAdID={dialogAdID}\n />\n <Snackbar open={isSnackOpen} onClose={() => setIsSnackOpen(false)} message={snackMessage} />\n </Box>\n );\n}\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { Box, Button, CircularProgress } from '@mui/material';\nimport TableSkeleton from '../TableSkeleton';\nimport AdTable from './AdTable';\nimport { classes } from '../styles';\nimport FilterButton from '../FilterButton';\nimport AdTypePopover from '../AdTypePopover';\nimport { IJobAdViewJobs } from '../types';\n\nexport default function ViewJobsAds({ apiKey, jobId }: { apiKey: string; jobId: string | null }) {\n const [loading, setLoading] = useState(true);\n const [loadingCreate, setLoadingCreate] = useState(false);\n const [ads, setAds] = useState(null);\n const [page, setPage] = useState(1);\n const [maxAds, setMaxAds] = useState(0);\n const [maxPages, setMaxPages] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [selectedAdType, setSelectedAdType] = useState('active');\n const [filterAnchorEl, setFilterAnchorEl] = useState<HTMLElement | null>(null);\n\n const getInitialAds = useCallback(async () => {\n setLoading(true);\n const url = jobId\n ? `/api/v4/view_jobs/jobs/${jobId}/job_ads?limit=100`\n : '/api/v4/view_jobs/job_ads/active';\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then(async (response) => {\n if (response.ok) {\n return {\n data: await response.json(),\n maxAds: Number(response.headers.get('X-Total-Count')),\n maxPages: Number(response.headers.get('X-Total-Pages'))\n };\n }\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n });\n if (jobId !== null) {\n setAds(response.data.job_ads);\n } else {\n setAds(response.data);\n setMaxAds(response.maxAds);\n setMaxPages(response.maxPages);\n }\n } catch (error) {\n console.log(error);\n } finally {\n setLoading(false);\n }\n }, [apiKey, jobId]);\n\n const getAds = async (currentType: string, currentPage: number, currentRows: number) => {\n if (jobId !== null) return;\n setLoading(true);\n const url = `/api/v4/view_jobs/job_ads/${currentType}?page=${currentPage}&limit=${currentRows}`;\n try {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then(async (response) => {\n if (response.ok) {\n return {\n data: await response.json(),\n maxAds: Number(response.headers.get('X-Total-Count')),\n maxPages: Number(response.headers.get('X-Total-Pages'))\n };\n }\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n });\n setAds(response.data);\n setMaxAds(response.maxAds);\n setMaxPages(response.maxPages);\n } catch (error) {\n console.log(error);\n } finally {\n setLoading(false);\n }\n };\n\n const createNewJob = useCallback(async () => {\n setLoadingCreate(true);\n try {\n const response = await fetch(`/api/v4/view_jobs/jobs/${jobId}/job_ads/init_view_jobs_ad`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n if (!response.ok) {\n console.log('Error creating new job ad');\n } else {\n const data = await response.json();\n window.location.href = data.url;\n }\n } catch (error) {\n console.log(error);\n } finally {\n setLoadingCreate(false);\n }\n }, [apiKey, jobId]);\n\n const handleAdTypeChange = (adType: string) => {\n setFilterAnchorEl(null);\n if (adType === selectedAdType) return;\n setSelectedAdType(adType);\n setPage(1);\n getAds(adType, 1, rowsPerPage);\n };\n\n useEffect(() => {\n getInitialAds();\n }, [getInitialAds]);\n\n return (\n <Box sx={classes.containerOuter}>\n <Box sx={classes.container}>\n <Box sx={classes.banner}>\n <FilterButton\n selectedAdType={selectedAdType}\n setFilterAnchorEl={setFilterAnchorEl}\n classes={classes}\n />\n {jobId && (\n <Button\n disableElevation\n sx={{ ...classes.buttonSecondary, ...classes.newAdButton }}\n id=\"ViewJobsNewAdMultiposterBtn\"\n onClick={createNewJob}\n >\n {loadingCreate ? <CircularProgress size={20} color=\"inherit\" /> : 'New Ad'}\n </Button>\n )}\n </Box>\n {loading ? (\n <TableSkeleton />\n ) : (\n <AdTable\n jobAds={ads}\n ads={ads[selectedAdType as keyof IJobAdViewJobs]}\n setAds={setAds}\n adsStatus={selectedAdType}\n apiKey={apiKey}\n />\n )}\n </Box>\n <AdTypePopover\n filterAnchorEl={filterAnchorEl}\n setFilterAnchorEl={setFilterAnchorEl}\n selectedAdType={selectedAdType}\n handleAdTypeChange={handleAdTypeChange}\n classes={classes}\n adType=\"viewjobs\"\n />\n </Box>\n );\n}\n","import React from 'react';\nimport { Box, ToggleButtonGroup, ToggleButton, SxProps } from '@mui/material';\nimport { sharedClasses } from '../CustomUIElements/sharedClasses';\n\ninterface IProps {\n options: { value: string; label: string }[];\n selected: string;\n setSelected: (selected: string) => void;\n sx?: SxProps;\n}\n\nexport const OptionToggleGroup = ({ options, selected, setSelected, sx }: IProps) => {\n return (\n <Box sx={{ ...sharedClasses.toggleButtonsContainer, ...sx }}>\n <ToggleButtonGroup\n aria-label=\"toggle button group\"\n exclusive\n onChange={(_e, value) => {\n if (value === null) return;\n setSelected(value);\n }}\n value={selected}\n >\n {options.map(({ value, label }) => (\n <ToggleButton key={value} value={value} sx={sharedClasses.toggleButton}>\n {label}\n </ToggleButton>\n ))}\n </ToggleButtonGroup>\n </Box>\n );\n};\n","import React from 'react';\nimport { TableCell, TableRow } from '@mui/material';\n\ntype ConfigOptionType = {\n name: string;\n label: string;\n id: number;\n};\n\nconst ReportTableBody = ({ state }: { state }) => {\n const { data } = state;\n return (\n <>\n {data?.map((r, i) => (\n <TableRow key={i} sx={{ width: '100%' }}>\n {Object.entries(r.attributes).map((option) => {\n const [key, value] = option as unknown as [string, ConfigOptionType];\n return <TableCell key={key}>{value ? value : '-'}</TableCell>;\n })}\n </TableRow>\n ))}\n </>\n );\n};\n\nexport default ReportTableBody;\n","import React from 'react';\nimport { TableCell, TableHead, TableRow } from '@mui/material';\nimport { styles } from './styles';\nimport { sharedClasses } from '../CustomUIElements/sharedClasses';\n\nconst TableHeader = ({ state }: { state: string[] }) => {\n return (\n <TableHead>\n <TableRow sx={sharedClasses.tableHeaderRow}>\n {state?.map((option, i: number) => (\n <TableCell key={i} sx={styles.tableCellData}>\n {option}\n </TableCell>\n ))}\n <TableCell> </TableCell>\n </TableRow>\n </TableHead>\n );\n};\n\nexport default TableHeader;\n","import React from 'react';\nimport { TableBody, Table, Box, TableContainer, Paper, Skeleton } from '@mui/material';\nimport { styles } from './styles';\nimport TableHeader from './TableHeader';\nimport { PreviewTableType } from '../../../reports/CustomReports/types';\n\ntype Props = {\n tableHeaders: PreviewTableType['tableHeaders'];\n data: PreviewTableType['data'];\n tableBody: React.ReactNode;\n isLoading: boolean;\n};\nconst PreviewTable = ({ tableHeaders, data, isLoading, tableBody }: Props) => {\n return (\n <Box sx={{ paddingLeft: '1rem', paddingTop: `${!data ? '1rem' : '0'} ` }}>\n <TableContainer sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }} component={Paper}>\n <Table\n sx={{\n ...styles.tableWrapper,\n 'th, td, tr, thead': { padding: '22px 10px', borderBottom: '1px solid #DDDDDD' }\n }}\n >\n {!isLoading && tableHeaders?.length > 0 && <TableHeader state={tableHeaders} />}\n {!isLoading && tableHeaders?.length > 0 && <TableBody>{tableBody}</TableBody>}\n </Table>\n {!isLoading && (data?.length === 0 || !data) && (\n <Box sx={styles.noRecords}>No Records Found</Box>\n )}\n {isLoading && (\n <>\n {[...Array(5)].map((_, index) => (\n <Box key={index} sx={styles.skeletonContainer}>\n <Skeleton animation=\"wave\" height={60} />\n </Box>\n ))}\n </>\n )}\n </TableContainer>\n </Box>\n );\n};\n\nexport default PreviewTable;\n","import React, { useState, SetStateAction, Dispatch, useEffect } from 'react';\nimport { useDropzone, FileWithPath } from 'react-dropzone';\nimport axios from 'axios';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport CircularProgressWithLabel from '../../Components/CustomUIElements/CircularProgressWithLabel';\nimport { classes } from './styles';\nimport { IGoogleFile } from '../../ApprovalForms/types';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport useDrivePicker from 'react-google-drive-picker';\n\nexport default function AttachmentAndGoogleDriveSelector({\n performUpload,\n apiKey,\n uploadUrl,\n onUploadComplete,\n setFile,\n setGoogleFileList,\n maxSize,\n maxFiles,\n}: {\n performUpload: boolean;\n apiKey?: string;\n uploadUrl?: string;\n onUploadComplete?: () => void;\n setFile?: (file: FileWithPath) => void;\n setGoogleFileList: Dispatch<SetStateAction<IGoogleFile[]>>;\n maxSize: number;\n maxFiles?: number;\n}) {\n const { getRootProps, getInputProps, open } = useDropzone({\n noClick: true,\n noKeyboard: true,\n maxSize,\n maxFiles: maxFiles ? maxFiles : 0,\n onDragOver: () => {\n setIsDraggedOver(true);\n },\n onDragLeave: () => {\n setIsDraggedOver(false);\n },\n onDropRejected: () => {\n setIsRejected(true);\n },\n onDrop: (acceptedFiles: FileWithPath[]) => {\n const parsedFiles = acceptedFiles.map((file) => (\n new File([file], file.name.replace(/[()]/g, \"\"), { type: file.type })\n ))\n if (performUpload) {\n parsedFiles.forEach((file) => {\n uploadFiles(file);\n });\n }\n if (setFile) {\n setFile(parsedFiles);\n setIsRejected(false);\n }\n setIsDraggedOver(false);\n }\n });\n\n const [isDraggedOver, setIsDraggedOver] = useState(false);\n const [isRejected, setIsRejected] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [percentCompleted, setPercentCompleted] = useState(0);\n const [isGoogleLoading, setIsGoogleLoading] = useState(false);\n const [error, setError] = useState('');\n const [client, setClient] = useState('');\n const [developerKey, setDeveloperKey] = useState('');\n\n const uploadFiles = async (file: FileWithPath) => {\n if (!apiKey || !uploadUrl || !onUploadComplete) {\n console.error(\n 'Missing required parameters for AttachmentSelector component. If performUpload is true, please provide apiKey, uploadUrl, and onUploadComplete.'\n );\n return;\n }\n setIsLoading(true);\n const formData = new FormData();\n formData.append('asset', file);\n try {\n const response = await axios.post(uploadUrl, formData, {\n headers: { 'Content-Type': 'multipart/form-data', 'X-api-authenticate': apiKey },\n onUploadProgress: (progressEvent) => {\n setPercentCompleted(Math.round((progressEvent.loaded * 100) / progressEvent.total));\n }\n });\n if (response.status === 201) {\n setError('');\n onUploadComplete();\n }\n } catch (error) {\n if (error.response?.data?.errors) {\n error.response.data.errors === 'Invalid file.'\n ? setError('Unsupported file type')\n : setError(error.response.data.errors);\n }\n console.log(error);\n } finally {\n setIsRejected(false);\n setIsLoading(false);\n setPercentCompleted(0);\n }\n };\n\n const [openPicker, authRes] = useDrivePicker();\n const defaultScopes = 'https://www.googleapis.com/auth/drive.readonly';\n const [popup, setPopup] = useState(null);\n const types = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document,' + \n 'application/vnd.oasis.opendocument.text,' + \n 'application/rtf,' +\n 'application/pdf,' +\n 'text/plain,' +\n 'text/csv,' +\n 'text/tab-separated-values,' +\n 'application/zip,' +\n 'application/epub+zip,' +\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,' +\n 'application/x-vnd.oasis.opendocument.spreadsheet,' +\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation,' +\n 'application/vnd.oasis.opendocument.presentation,' +\n 'image/jpeg,' +\n 'image/png,' +\n 'image/svg+xml,' +\n 'application/vnd.google-apps.script+json,'\n \n const handleOpenPicker = (client : string, developerKey : string) => {\n const client_json = JSON.parse(client);\n openPicker({\n clientId: client_json.client_id,\n developerKey: developerKey,\n viewId: \"DOCS\",\n viewMimeTypes: types,\n token: client_json.access_token,\n showUploadView: true,\n showUploadFolders: true,\n supportDrives: true,\n multiselect: true,\n customScopes: [defaultScopes],\n \n callbackFunction: (data) => {\n if (data.action === 'picked') {\n const docsIds = data.docs.map(doc => doc.id);\n uploadFromGoogleDrive(docsIds);\n }\n }\n })\n }\n\n const uploadFromGoogleDrive = async (ids : string[]) => {\n setIsGoogleLoading(true);\n try {\n const response = await fetch(`/api/v4/requisitions/from_google_drive`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey,\n },\n body: JSON.stringify({\n ids: ids\n })\n }).then((res) => res.json());\n if (response.files) {\n setGoogleFileList((previous) => ([ ...previous, ...response.files ]));\n }\n } catch (error) {\n setError(error.response.data.errors);\n } finally {\n setIsGoogleLoading(false);\n }\n };\n\n const openPopup = (url, title, w, h) => {\n const left = (screen.width / 2) - (w / 2);\n const top = (screen.height / 2) - (h / 2);\n \n const popup = window.open(url, title, `width=${w},height=${h},top=${top},left=${left}`);\n setPopup(popup);\n }\n\n\n const openGoogleDrive = async () => {\n setIsGoogleLoading(true);\n try {\n const response = await fetch(`/api/v4/requisitions/new_ui_show_google_files`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((res) => res.json());\n if (response.redirect_url) {\n openPopup(response.redirect_url, 'Popup Window', 400, 550);\n } else if (response.client) {\n response.client && setClient(response.client);\n response.developer_key && setDeveloperKey(response.developer_key);\n handleOpenPicker(response.client, response.developer_key);\n }\n } catch (error) {\n setError(error.response.data.errors);\n } finally {\n setIsGoogleLoading(false);\n }\n };\n\n useEffect(() => {\n if (popup) {\n const checkUrlInterval = setInterval(() => {\n if (popup.closed) {\n clearInterval(checkUrlInterval);\n } else if (popup.location.href.includes('code')) {\n openGoogleDrive();\n popup.close();\n }\n }, 500);\n return () => {\n clearInterval(checkUrlInterval);\n };\n }\n }, [popup])\n\n return (\n <Box sx={{ width: '100%' }}>\n <Box\n {...getRootProps()}\n sx={{\n ...classes.dragAreaWithGoogleDrive,\n ...(isDraggedOver ? classes.dragAreaOver : {})\n }}\n >\n <input {...getInputProps()} />\n {isLoading ? (\n <>\n <CircularProgressWithLabel value={percentCompleted} />\n <Box sx={{ marginTop: '12px' }}>Uploading...</Box>\n </>\n ) : (\n <>\n <Box>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"62px\"\n height=\"39px\"\n viewBox=\"0 0 61 39\"\n version=\"1.1\"\n >\n <g id=\"surface1\">\n <path\n style={{\n stroke: 'none',\n fillRule: 'nonzero',\n fill: 'rgb(51.372549%,51.372549%,51.372549%)',\n fillOpacity: 1\n }}\n d=\"M 34.328125 38.65625 C 34.203125 38.402344 33.976562 38.148438 33.972656 37.894531 C 33.933594 36.039062 33.921875 34.1875 33.9375 32.332031 C 33.953125 30.957031 34.179688 30.757812 35.59375 30.746094 C 36.800781 30.734375 38.011719 30.796875 39.214844 30.714844 C 39.691406 30.707031 40.140625 30.488281 40.441406 30.117188 C 40.535156 29.636719 40.421875 29.140625 40.132812 28.746094 C 39.742188 28.242188 39.304688 27.78125 38.820312 27.367188 C 36.371094 24.898438 33.921875 22.4375 31.46875 19.972656 C 30.523438 19.023438 30.105469 19.042969 29.175781 19.984375 C 26.492188 22.710938 23.800781 25.429688 21.109375 28.148438 C 20.996094 28.261719 20.828125 28.355469 20.785156 28.492188 C 20.617188 28.976562 20.261719 29.566406 20.414062 29.9375 C 20.699219 30.375 21.167969 30.660156 21.683594 30.710938 C 22.820312 30.8125 23.96875 30.710938 25.113281 30.714844 C 26.566406 30.722656 26.710938 30.875 26.710938 32.300781 C 26.707031 34.058594 26.675781 35.816406 26.722656 37.574219 C 26.742188 38.382812 26.503906 38.722656 25.648438 38.71875 C 21.167969 38.6875 16.683594 38.769531 12.203125 38.6875 C 5.507812 38.578125 0.105469 33.140625 0.00390625 26.402344 C -0.160156 20.078125 3.519531 14.664062 9.199219 13.011719 C 10.328125 12.683594 11.5 12.535156 12.671875 12.574219 C 13.535156 12.71875 14.359375 12.160156 14.554688 11.304688 C 15.5625 8.667969 17.164062 6.296875 19.230469 4.382812 C 26.757812 -2.6875 38.09375 -1 43.296875 7.980469 C 43.792969 8.835938 44.234375 9.726562 44.644531 10.625 C 44.769531 11.097656 45.246094 11.382812 45.714844 11.269531 C 49.65625 10.855469 52.5 13.699219 52.09375 17.660156 C 52 18.550781 52.453125 18.640625 53.085938 18.792969 C 57.859375 19.820312 61.160156 24.210938 60.84375 29.113281 C 60.472656 33.945312 56.832031 37.878906 52.066406 38.605469 C 51.875 38.621094 51.6875 38.628906 51.496094 38.625 L 50.523438 38.429688 C 51.761719 38.171875 53.074219 38.085938 54.222656 37.613281 C 58.082031 36.003906 60.445312 32.050781 60.050781 27.867188 C 59.640625 23.515625 56.429688 19.957031 52.167969 19.121094 C 51.328125 18.96875 51.1875 18.699219 51.289062 17.882812 C 51.757812 14.074219 48.898438 11.214844 45.195312 11.734375 C 44.695312 11.859375 44.179688 11.589844 43.996094 11.105469 C 43.132812 9.363281 42.140625 7.691406 41.03125 6.09375 C 38.53125 2.78125 34.722656 0.726562 30.59375 0.464844 C 26.46875 0.203125 22.429688 1.757812 19.535156 4.726562 C 17.464844 6.867188 15.878906 9.425781 14.878906 12.234375 C 14.8125 12.53125 14.628906 12.785156 14.367188 12.933594 C 14.109375 13.085938 13.796875 13.121094 13.511719 13.03125 C 11.125 12.679688 8.691406 13.214844 6.667969 14.535156 C 1.140625 17.976562 -0.851562 25.476562 2.195312 31.539062 C 4.191406 35.496094 7.339844 38.019531 11.832031 38.226562 C 16.207031 38.433594 20.601562 38.273438 24.988281 38.296875 C 25.671875 38.296875 25.96875 38.078125 25.957031 37.355469 C 25.933594 35.695312 25.9375 34.03125 25.984375 32.367188 C 26.011719 31.464844 25.675781 31.085938 24.757812 31.132812 C 23.644531 31.191406 22.53125 31.160156 21.417969 31.167969 C 20.683594 31.171875 20 31.027344 19.632812 30.308594 C 19.230469 29.539062 19.714844 28.964844 20.144531 28.402344 C 20.359375 28.125 20.59375 27.867188 20.847656 27.621094 C 23.019531 25.464844 25.191406 23.308594 27.367188 21.15625 C 27.964844 20.496094 28.601562 19.875 29.273438 19.292969 C 30.34375 18.472656 31.101562 18.570312 32.058594 19.519531 C 33.078125 20.527344 34.078125 21.558594 35.089844 22.574219 C 36.976562 24.476562 38.878906 26.359375 40.746094 28.277344 C 41.859375 29.417969 41.476562 30.675781 39.925781 31.042969 C 39.582031 31.113281 39.234375 31.144531 38.882812 31.140625 C 37.867188 31.152344 36.847656 31.183594 35.832031 31.128906 C 35.023438 31.089844 34.691406 31.34375 34.722656 32.210938 C 34.777344 33.839844 34.785156 35.476562 34.722656 37.101562 C 34.6875 38.035156 35.019531 38.308594 35.925781 38.300781 C 39.800781 38.261719 43.683594 38.28125 47.558594 38.292969 C 48 38.316406 48.441406 38.359375 48.875 38.429688 C 44.496094 38.4375 40.113281 38.4375 35.730469 38.460938 C 35.265625 38.492188 34.796875 38.554688 34.339844 38.652344 \"\n />\n <path\n style={{\n stroke: 'none',\n fillRule: 'nonzero',\n fill: 'rgb(46.27451%,46.27451%,46.27451%)',\n fillOpacity: 1\n }}\n d=\"M 34.328125 38.65625 C 34.789062 38.558594 35.253906 38.496094 35.722656 38.464844 C 40.105469 38.441406 44.484375 38.441406 48.867188 38.433594 L 50.527344 38.433594 L 51.496094 38.625 C 49.886719 38.648438 48.277344 38.691406 46.667969 38.691406 C 42.554688 38.691406 38.441406 38.667969 34.328125 38.65625 \"\n />\n <path\n style={{\n stroke: 'none',\n fillRule: 'nonzero',\n fill: 'rgb(100%,100%,100%)',\n fillOpacity: 1\n }}\n d=\"M 50.527344 38.433594 L 48.867188 38.433594 C 48.429688 38.363281 47.992188 38.320312 47.550781 38.296875 C 43.671875 38.285156 39.792969 38.265625 35.914062 38.304688 C 35.007812 38.3125 34.675781 38.039062 34.710938 37.105469 C 34.773438 35.480469 34.769531 33.84375 34.710938 32.214844 C 34.679688 31.347656 35.011719 31.09375 35.824219 31.132812 C 36.839844 31.1875 37.859375 31.15625 38.875 31.144531 C 39.222656 31.148438 39.574219 31.117188 39.914062 31.046875 C 41.464844 30.679688 41.851562 29.421875 40.738281 28.28125 C 38.867188 26.363281 36.964844 24.480469 35.078125 22.578125 C 34.070312 21.5625 33.070312 20.53125 32.050781 19.523438 C 31.09375 18.574219 30.335938 18.476562 29.265625 19.296875 C 28.589844 19.878906 27.953125 20.5 27.355469 21.160156 C 25.183594 23.316406 23.011719 25.46875 20.839844 27.625 C 20.585938 27.871094 20.351562 28.128906 20.136719 28.40625 C 19.707031 28.964844 19.222656 29.542969 19.621094 30.3125 C 19.992188 31.03125 20.675781 31.175781 21.410156 31.171875 C 22.523438 31.164062 23.636719 31.195312 24.746094 31.136719 C 25.667969 31.089844 26 31.464844 25.976562 32.371094 C 25.929688 34.035156 25.925781 35.695312 25.949219 37.359375 C 25.960938 38.082031 25.664062 38.300781 24.980469 38.296875 C 20.59375 38.277344 16.199219 38.4375 11.824219 38.230469 C 7.332031 38.019531 4.183594 35.503906 2.1875 31.539062 C -0.863281 25.480469 1.128906 17.980469 6.660156 14.539062 C 8.683594 13.21875 11.113281 12.683594 13.5 13.035156 C 13.789062 13.125 14.097656 13.089844 14.359375 12.9375 C 14.617188 12.789062 14.804688 12.535156 14.871094 12.238281 C 15.867188 9.429688 17.457031 6.867188 19.527344 4.730469 C 22.421875 1.761719 26.457031 0.207031 30.585938 0.46875 C 34.710938 0.730469 38.523438 2.785156 41.023438 6.097656 C 42.132812 7.691406 43.125 9.367188 43.988281 11.109375 C 44.167969 11.59375 44.683594 11.863281 45.183594 11.734375 C 48.890625 11.21875 51.746094 14.078125 51.28125 17.886719 C 51.179688 18.703125 51.316406 18.976562 52.160156 19.125 C 56.425781 19.960938 59.636719 23.519531 60.046875 27.875 C 60.4375 32.058594 58.074219 36.011719 54.214844 37.621094 C 53.066406 38.09375 51.753906 38.175781 50.519531 38.4375 \"\n />\n </g>\n </svg>\n </Box>\n {!isDraggedOver ? (\n <>\n {!isRejected && !error ? (\n <Box>Drag or choose file to upload</Box>\n ) : (\n <Box sx={{ color: '#D6827D' }}>\n {isRejected ? 'Files must be under 50mb' : error}\n </Box>\n )}\n <Box sx={classes.buttonGroup}>\n <Button sx={{...classes.selectFilesButton, width: '220px !important'}} onClick={open}>\n Choose file\n </Button>\n <Box>\n <Button\n sx={classes.selectFilesGoogleButton}\n onClick={openGoogleDrive}\n startIcon={isGoogleLoading && <CircularProgress size={14} sx={{color: '#5BC4C0'}}/>}\n >\n Upload from Google Drive\n </Button>\n </Box>\n </Box>\n </>\n ) : (\n <Box>{performUpload ? 'Drop files here to upload!' : 'Drop files here to add!'}</Box>\n )}\n </>\n )}\n </Box>\n <Box sx={{color: '#939393 !important'}}>Max upload limit per file is 50mb.</Box>\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport { FileError, FileWithPath, useDropzone } from 'react-dropzone';\nimport axios from 'axios';\nimport CircularProgressWithLabel from '../../Components/CustomUIElements/CircularProgressWithLabel';\nimport { classes } from './styles';\nimport UploadSVG from '../Graphics/UploadSVG';\nimport { Box, Button, Stack } from '@mui/material';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nexport default function AttachmentSelector({\n performUpload,\n apiKey,\n uploadUrl,\n onUploadComplete,\n setFileList,\n maxSize,\n maxFiles,\n heightOverride,\n attachment,\n compact,\n maxVideoSize,\n buttonId\n}: {\n performUpload: boolean;\n apiKey?: string;\n uploadUrl?: string;\n onUploadComplete?: () => void;\n setFileList?: Dispatch<SetStateAction<FileWithPath[]>>;\n maxSize: number;\n maxFiles?: number;\n heightOverride?: number | string;\n attachment?: boolean;\n compact?: boolean;\n maxVideoSize?: number;\n buttonId?: string;\n}) {\n const getMaxSize = (fileType: string): number => {\n if (fileType.startsWith('video/')) {\n return maxVideoSize ? maxVideoSize : maxSize;\n }\n return maxSize;\n };\n const sizeValidator = (file: File): FileError | null => {\n const maximumSize = getMaxSize(file.type);\n if (file.size > maximumSize) {\n return {\n code: 'file-too-large',\n message: attachment ? 'Files must be under specified size.' : 'Files must be under 50 MB'\n };\n }\n return null;\n };\n const { getRootProps, getInputProps, open, fileRejections } = useDropzone({\n noClick: true,\n noKeyboard: true,\n validator: sizeValidator,\n maxFiles: maxFiles ? maxFiles : 0,\n onDragOver: () => {\n setIsDraggedOver(true);\n },\n onDragLeave: () => {\n setIsDraggedOver(false);\n },\n onDropRejected: () => {\n setIsRejected(true);\n },\n onDrop: (acceptedFiles: FileWithPath[]) => {\n const parsedFiles = acceptedFiles.map(\n (file) => new File([file], file.name.replace(/[()]/g, ''), { type: file.type })\n );\n if (performUpload) {\n parsedFiles.forEach((file) => {\n uploadFiles(file);\n });\n }\n if (setFileList) {\n setFileList(parsedFiles);\n }\n setIsDraggedOver(false);\n setIsRejected(false);\n }\n });\n\n const [isDraggedOver, setIsDraggedOver] = useState(false);\n const [isRejected, setIsRejected] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [percentCompleted, setPercentCompleted] = useState(0);\n const [error, setError] = useState('');\n\n const uploadFiles = async (file: FileWithPath) => {\n if (!apiKey || !uploadUrl || !onUploadComplete) {\n console.error(\n 'Missing required parameters for AttachmentSelector component. If performUpload is true, please provide apiKey, uploadUrl, and onUploadComplete.'\n );\n return;\n }\n setIsLoading(true);\n const formData = new FormData();\n formData.append('asset', file);\n try {\n const response = await axios.post(uploadUrl, formData, {\n headers: { 'Content-Type': 'multipart/form-data', 'X-api-authenticate': apiKey },\n onUploadProgress: (progressEvent) => {\n setPercentCompleted(Math.round((progressEvent.loaded * 100) / progressEvent.total));\n }\n });\n if (response.status === 201 || response.status === 200) {\n setError('');\n onUploadComplete();\n }\n } catch (error) {\n if (error.response?.data?.errors) {\n error.response.data.errors === 'Invalid file.'\n ? setError('Unsupported file type')\n : setError(error.response.data.errors);\n }\n console.log(error);\n } finally {\n setIsRejected(false);\n setIsLoading(false);\n setPercentCompleted(0);\n }\n };\n return (\n <Box sx={{ width: '100%' }}>\n <Box\n {...getRootProps()}\n sx={{\n ...classes.dragArea,\n ...(isDraggedOver ? classes.dragAreaOver : {}),\n ...(heightOverride ? { height: heightOverride } : {}),\n ...(compact ? { margin: 'unset' } : {})\n }}\n >\n <input {...getInputProps()} />\n {isLoading ? (\n <Stack\n direction={compact ? 'row' : 'column'}\n alignItems={'center'}\n spacing={2}\n sx={{ scale: compact ? '0.6' : '1.0' }}\n >\n <CircularProgressWithLabel value={percentCompleted} />\n <Box sx={{ marginTop: '12px' }}>Uploading...</Box>\n </Stack>\n ) : (\n <Stack\n direction={compact ? 'row' : 'column'}\n alignItems={'center'}\n spacing={2}\n sx={{ scale: '0.8' }}\n >\n <Box sx={{ marginBottom: '12px' }}>\n <UploadSVG />\n </Box>\n {!isDraggedOver ? (\n <>\n <Stack>\n <Box>{compact ? 'Drag files here or' : 'Drag or choose file to upload'}</Box>\n </Stack>\n {(isRejected || error) && (\n <Box sx={{ color: '#D6827D' }}>\n {isRejected\n ? attachment\n ? 'Files must be under specified size.'\n : 'Files must be under 50 MB'\n : error}\n </Box>\n )}\n </>\n ) : (\n <>\n <Box>\n {performUpload ? 'Drop files here to upload!' : 'Drop files here to add!'}\n </Box>\n {fileRejections.length > 0 && isDraggedOver && (\n <Box sx={{ color: '#D6827D' }}>\n {fileRejections.map((fileRejection, index) => (\n <Box key={index}>{fileRejection.errors.map((e) => e.message).join(', ')}</Box>\n ))}\n </Box>\n )}\n </>\n )}\n <Button\n id={buttonId}\n sx={classes.selectFilesButton}\n onClick={open}\n className=\"select-files-button\"\n data-testid=\"select-files-button\"\n >\n Choose files\n </Button>\n {attachment && (\n <Stack\n sx={{\n fontStyle: 'italic',\n fontWeight: 200,\n fontSize: theme.spacing(1.5),\n textAlign: 'center',\n paddingTop: theme.spacing(0.5)\n }}\n >\n <Box>Maximum size per file: 50MB</Box>\n <Box>Maximum size per video: 500MB</Box>\n </Stack>\n )}\n </Stack>\n )}\n </Box>\n </Box>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function DebounceInput({\n children,\n onDebouncedChange,\n debounceTime,\n defaultValue\n}: {\n children: (props: {\n value: string | number;\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;\n }) => React.ReactNode;\n onDebouncedChange: (value: string | number) => void;\n debounceTime?: number;\n defaultValue?: string | number;\n}) {\n const [inputValue, setInputValue] = useState(defaultValue || '');\n\n useEffect(() => {\n if (defaultValue === 0) {\n setInputValue(0);\n } else {\n setInputValue(defaultValue || '');\n }\n }, [defaultValue]);\n\n const debouncedAPICall = useDebouncedCallback((input) => {\n onDebouncedChange(input);\n }, debounceTime || 300);\n\n const handleChange = (e) => {\n setInputValue(e.target.value);\n debouncedAPICall(e.target.value);\n };\n\n return <>{children({ value: inputValue, onChange: handleChange })}</>;\n}\n","import React from 'react';\n\nexport default function DocTypeIcon(doctype: string | undefined) {\n switch (doctype) {\n case 'pdf':\n return (\n <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9.5 11.5C9.5 12.3 8.8 13 8 13H7V15H5.5V9H8C8.8 9 9.5 9.7 9.5 10.5V11.5M14.5 13.5C14.5 14.3 13.8 15 13 15H10.5V9H13C13.8 9 14.5 9.7 14.5 10.5V13.5M18.5 10.5H17V11.5H18.5V13H17V15H15.5V9H18.5V10.5M12 10.5H13V13.5H12V10.5M7 10.5H8V11.5H7V10.5Z\"\n />\n </svg>\n );\n case 'doc':\n case 'docx':\n return (\n <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n d=\"M15.5,17H14L12,9.5L10,17H8.5L6.1,7H7.8L9.34,14.5L11.3,7H12.7L14.67,14.5L16.2,7H17.9M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"\n />\n </svg>\n );\n case 'xls':\n case 'xlsx':\n return (\n <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n d=\"M16.2,17H14.2L12,13.2L9.8,17H7.8L11,12L7.8,7H9.8L12,10.8L14.2,7H16.2L13,12M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"\n />\n </svg>\n );\n case 'ppt':\n case 'pptx':\n return (\n <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n d=\"M9.8,13.4H12.3C13.8,13.4 14.46,13.12 15.1,12.58C15.74,12.03 16,11.25 16,10.23C16,9.26 15.75,8.5 15.1,7.88C14.45,7.29 13.83,7 12.3,7H8V17H9.8V13.4M19,3A2,2 0 0,1 21,5V19A2,2 0 0,1 19,21H5A2,2 0 0,1 3,19V5C3,3.89 3.9,3 5,3H19M9.8,12V8.4H12.1C12.76,8.4 13.27,8.65 13.6,9C13.93,9.35 14.1,9.72 14.1,10.24C14.1,10.8 13.92,11.19 13.6,11.5C13.28,11.81 12.9,12 12.22,12H9.8Z\"\n />\n </svg>\n );\n case 'zip':\n case 'rar':\n return (\n <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n d=\"M14,17H12V15H10V13H12V15H14M14,9H12V11H14V13H12V11H10V9H12V7H10V5H12V7H14M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"\n />\n </svg>\n );\n case 'jpg':\n case 'jpeg':\n return (\n <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9 13.5C9 14.6 8.1 15 7 15S5 14.6 5 13.5V12H6.5V13.5H7.5V9H9V13.5M14 11.5C14 12.3 13.3 13 12.5 13H11.5V15H10V9H12.5C13.3 9 14 9.7 14 10.5V11.5M19 10.5H16.5V13.5H17.5V12H19V13.7C19 14.4 18.5 15 17.7 15H16.4C15.6 15 15.1 14.3 15.1 13.7V10.4C15 9.7 15.5 9 16.3 9H17.6C18.4 9 18.9 9.7 18.9 10.3V10.5M11.5 10.5H12.5V11.5H11.5V10.5Z\"\n />\n </svg>\n );\n case 'png':\n return (\n <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9 11.5C9 12.3 8.3 13 7.5 13H6.5V15H5V9H7.5C8.3 9 9 9.7 9 10.5V11.5M14 15H12.5L11.5 12.5V15H10V9H11.5L12.5 11.5V9H14V15M19 10.5H16.5V13.5H17.5V12H19V13.7C19 14.4 18.5 15 17.7 15H16.4C15.6 15 15.1 14.3 15.1 13.7V10.4C15 9.7 15.5 9 16.3 9H17.6C18.4 9 18.9 9.7 18.9 10.3V10.5H19M6.5 10.5H7.5V11.5H6.5V10.5Z\"\n />\n </svg>\n );\n case 'gif':\n return (\n <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M10 10.5H7.5V13.5H8.5V12H10V13.7C10 14.4 9.5 15 8.7 15H7.3C6.5 15 6 14.3 6 13.7V10.4C6 9.7 6.5 9 7.3 9H8.6C9.5 9 10 9.7 10 10.3V10.5M13 15H11.5V9H13V15M17.5 10.5H16V11.5H17.5V13H16V15H14.5V9H17.5V10.5Z\"\n />\n </svg>\n );\n case 'bmp':\n case 'tiff':\n case 'tif':\n case 'svg':\n case 'psd':\n case 'ai':\n return (\n <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n d=\"M8.5,13.5L11,16.5L14.5,12L19,18H5M21,19V5C21,3.89 20.1,3 19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19Z\"\n />\n </svg>\n );\n case 'mov':\n case 'mp4':\n case 'm4v':\n case 'avi':\n case 'wmv':\n case 'mpg':\n case 'mpeg':\n case 'mp2':\n case 'mpe':\n case 'ogg':\n case 'webm':\n case 'mkv':\n return (\n <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n d=\"M19 3H5C3.89 3 3 3.89 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.89 20.1 3 19 3M10 16V8L15 12\"\n />\n </svg>\n );\n case 'mp3':\n case 'wav':\n case 'flac':\n case 'aac':\n case 'wma':\n case 'm4a':\n return (\n <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n d=\"M16,9H13V14.5A2.5,2.5 0 0,1 10.5,17A2.5,2.5 0 0,1 8,14.5A2.5,2.5 0 0,1 10.5,12C11.07,12 11.58,12.19 12,12.5V7H16M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3Z\"\n />\n </svg>\n );\n default:\n return (\n <svg style={{ width: '22px', height: '22px' }} viewBox=\"0 0 22 22\">\n <path\n fill=\"currentColor\"\n d=\"M14,17H7V15H14M17,13H7V11H17M17,9H7V7H17M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z\"\n />\n </svg>\n );\n }\n}\n","import React, { useRef } from 'react';\nimport { Editor } from '@tinymce/tinymce-react';\nimport { HtmlEditorFonts } from './HtmlEditorFonts';\nimport { Box } from '@mui/material';\nimport { IStyle } from '../../../ThemeContext/ThemeObject';\n\nexport default function HtmlEditor({\n body,\n onChange,\n onBlur,\n maxHeight,\n readonlyEditor\n}: {\n body?: string;\n onChange?: (body: string) => void;\n onBlur?: (value: string) => void;\n maxHeight?: number;\n readonlyEditor?: null | { body: string; styling: IStyle };\n}) {\n const editorRef = useRef(null);\n const handleEditorAction = (callback?: (arg: string) => void) => {\n if (editorRef.current && callback) {\n callback(editorRef.current.getContent());\n }\n };\n const onEdit = () => handleEditorAction(onChange);\n const onBlurHandler = () => handleEditorAction(onBlur);\n\n if (readonlyEditor)\n return (\n <Box sx={readonlyEditor.styling}>\n <Editor initialValue={readonlyEditor.body} disabled={true} />\n </Box>\n );\n\n return (\n <Editor\n onBlur={onBlurHandler}\n onChange={onEdit}\n onInit={(evt, editor) => (editorRef.current = editor)}\n initialValue={body}\n init={{\n menubar: false,\n statusbar: false,\n paste_data_images: false,\n min_height: 400,\n max_height: maxHeight || 1000,\n autoresize_bottom_margin: 0,\n relative_urls: true,\n remove_script_host: false,\n browser_spellcheck: true,\n convert_urls: false,\n plugins: [\n 'advlist',\n 'autolink',\n 'autoresize',\n 'lists',\n 'link',\n 'image',\n 'charmap',\n 'preview',\n 'anchor',\n 'media',\n 'table',\n 'code',\n 'powerpaste'\n ],\n toolbar1:\n 'bold italic underline forecolor backcolor | fontfamily fontsize blocks | undo redo',\n toolbar2:\n 'alignleft aligncenter alignright alignjustify bullist numlist outdent indent | link image removeformat table | code preview',\n powerpaste_word_import: 'prompt',\n powerpaste_html_import: 'prompt',\n content_style: `body { font-family:Helvetica,Arial,sans-serif; font-size:14px } ${HtmlEditorFonts.join(\n ' '\n )}`,\n contextmenu: false,\n font_size_formats: '8px 10px 12px 14px 18px 24px 36px 8pt 10pt 12pt 14pt 18pt 24pt 36pt',\n font_family_formats:\n 'Arial=arial,helvetica,sans-serif; Arial Black=arial black,avant garde; Book Antiqua=book antiqua,palatino; Comic Sans MS=comic sans ms,sans-serif; Courier New=courier new,courier; Georgia=georgia,palatino; Helvetica=helvetica; Impact=impact,chicago; Nexa=nexa; Symbol=symbol; Tahoma=tahoma,arial,helvetica,sans-serif; Terminal=terminal,monaco; Times New Roman=times new roman,times; Trebuchet MS=trebuchet ms,geneva; Verdana=verdana,geneva; Webdings=webdings; Wingdings=wingdings,zapf dingbats'\n }}\n />\n );\n}\n","import React, { useState, useEffect, FC, PropsWithChildren } from 'react';\nimport { Box, Button, Stack, CircularProgress, SxProps } from '@mui/material';\nimport { FormTextField, MultilineFormTextField } from '../CustomUIElements/FormTextField';\nimport FormRadioButtonGroup from '../CustomUIElements/FormRadioButtonGroup';\nimport FormRadioButtonWithTextInputGroup from '../CustomUIElements/FormRadioButtonWithTextInputGroup';\nimport FormCheckboxGroup from '../CustomUIElements/FormCheckboxGroup';\nimport FormSelectField from '../CustomUIElements/FormSelectField';\nimport DebounceInput from './DebounceInput';\nimport { UncontrolledSingleDatePicker } from '../CustomUIElements/SingleDatePicker';\nimport { classes } from './styles';\nimport { sharedClasses } from '../CustomUIElements/sharedClasses';\nimport moment from 'moment';\nimport dompurify from 'dompurify';\nimport FormRankField from '../CustomUIElements/FormRankField';\nimport AvailabilityPreview from '../../ApprovalForms/Questions/Modals/AvailabilityPreview';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nexport interface IApplicantQuestion {\n id: number;\n required: boolean;\n enabled: boolean;\n position: number;\n title: string;\n type: string;\n field_choices: IFieldChoice[];\n availability_config: IAvailabilityConfig;\n original_title: string;\n for_email_template: boolean;\n rateable: boolean;\n}\n\nexport interface IAvailabilityConfig {\n allow_break: boolean;\n created_at: string;\n field_id: number;\n heading_1: string;\n heading_2: string;\n id: number;\n updated_at: string;\n week_duration: string;\n week_start_day: number;\n}\n\nexport interface IFieldChoice {\n id: number;\n name: string;\n position: number;\n}\n\ninterface QuestionHTMLProps {\n sx?: SxProps;\n html: string | TrustedHTML;\n}\n\nconst QuestionHTML: FC<PropsWithChildren<QuestionHTMLProps>> = ({ html, sx, children }) => {\n return (\n <Box sx={{ ...classes.inputLabel, ...sx }}>\n <span\n dangerouslySetInnerHTML={{\n __html: html\n }}\n />\n {children}\n </Box>\n );\n};\n\nexport default function QuestionFieldGenerator({\n question,\n onChangeCallback,\n questionRef,\n questionError,\n handleLookUpButton,\n answer,\n fetchingCSV,\n disabled = false,\n inputText,\n setApprovalFormQuestions,\n approvalPage,\n fullWidth\n}: {\n question: IApplicantQuestion;\n onChangeCallback: (id: number, value: string | number | Record<string, boolean | string>) => void;\n questionRef?: (el: HTMLDivElement) => void;\n questionError?: string;\n handleLookUpButton?: (questionId: number, positionId: number) => void;\n answer?: string | Record<string, string>;\n fetchingCSV?: boolean;\n disabled?: boolean;\n inputText?: string;\n setApprovalFormQuestions?: (value: Record<string, { data: string; inputText: string }>) => void;\n approvalPage?: boolean;\n fullWidth?: boolean;\n}) {\n const csvOptions = ['Please choose...', 'Existing Position', 'New Position'];\n const [selectedCSVOption, setSelectedCSVOption] = useState<string>(csvOptions[0]);\n const [positionId, setPositionId] = useState<string>('');\n const questionHTMLTemplate =\n dompurify.sanitize(question.title) +\n (question.required ? `<span style=\"color: ${theme.palette.error.main}\">*</span>` : '');\n\n useEffect(() => {\n if (question.type === 'CsvDataLookupField' && answer.length > 0) {\n setSelectedCSVOption(answer[0]);\n setPositionId(answer[1]);\n }\n }, [answer]);\n\n switch (question.type) {\n case 'RadioButtonField':\n return (\n <Box>\n <QuestionHTML\n html={\n dompurify.sanitize(question.title.replace(/\\n/g, '<br>')) +\n (question.required ? `<span style=\"color: ${theme.palette.error.main}\">*</span>` : '')\n }\n sx={{\n ...(question.for_email_template ? { color: '#333333 !important' } : {})\n }}\n />\n {question.for_email_template && approvalPage ? (\n <FormRadioButtonWithTextInputGroup\n options={question.field_choices.map((choice) => ({\n label: choice.name,\n value: choice.id\n }))}\n onChange={(value: string | number) => onChangeCallback(question.id, value)}\n innerRef={questionRef}\n error={questionError}\n defaultValue={answer}\n draggable={disabled}\n question={question}\n inputText={inputText}\n setApprovalFormQuestions={setApprovalFormQuestions}\n />\n ) : (\n <FormRadioButtonGroup\n options={question.field_choices.map((choice) => ({\n label: choice.name,\n value: choice.id\n }))}\n onChange={(value: string | number) => onChangeCallback(question.id, value)}\n innerRef={questionRef}\n error={questionError}\n defaultValue={answer}\n draggable={disabled}\n />\n )}\n </Box>\n );\n case 'CheckBoxField':\n return (\n <Box>\n <QuestionHTML html={questionHTMLTemplate} />\n <FormCheckboxGroup\n options={question.field_choices}\n onChange={(value) => onChangeCallback(question.id, value)}\n innerRef={questionRef}\n error={questionError}\n defaultValues={answer}\n disabled={disabled}\n />\n </Box>\n );\n case 'TextField':\n return (\n <Box>\n <QuestionHTML html={questionHTMLTemplate} />\n <DebounceInput\n onDebouncedChange={(value: string) => onChangeCallback(question.id, value)}\n defaultValue={answer}\n >\n {({ value, onChange }) => (\n <FormTextField\n value={value}\n onChange={onChange}\n styles={{ width: '290px' }}\n innerRef={questionRef}\n required={question.required}\n error={questionError}\n draggable={disabled}\n />\n )}\n </DebounceInput>\n </Box>\n );\n case 'TextAreaField':\n return (\n <Box>\n <QuestionHTML html={questionHTMLTemplate} />\n <DebounceInput\n onDebouncedChange={(value: string) => onChangeCallback(question.id, value)}\n defaultValue={answer}\n >\n {({ value, onChange }) => (\n <MultilineFormTextField\n value={value}\n onChange={onChange}\n styles={{ width: fullWidth ? 'unset' : '600px' }}\n innerRef={questionRef}\n error={questionError}\n required={question.required}\n draggable={disabled}\n fullWidth={fullWidth}\n />\n )}\n </DebounceInput>\n </Box>\n );\n case 'SelectField':\n return (\n <Box>\n <QuestionHTML html={questionHTMLTemplate} />\n <FormSelectField\n options={question.field_choices.map((choice) => ({\n label: choice.name,\n value: choice.id\n }))}\n defaultValue={answer}\n onChange={(value: string | number) => onChangeCallback(question.id, value)}\n styles={{ width: '290px' }}\n innerRef={questionRef}\n error={questionError}\n required={question.required}\n isDisabled={disabled}\n />\n </Box>\n );\n case 'RankField':\n return (\n <Box>\n <QuestionHTML html={questionHTMLTemplate} />\n <FormRankField\n choices={question.field_choices}\n onChange={(value) => onChangeCallback(question.id, value)}\n innerRef={questionRef}\n error={questionError}\n required={question.required}\n defaultValue={answer}\n disabled={disabled}\n />\n </Box>\n );\n case 'DateField':\n return (\n <Box>\n <QuestionHTML html={questionHTMLTemplate} />\n <Box sx={classes.formDateWrapper} ref={questionRef}>\n <UncontrolledSingleDatePicker\n defaultValue={moment(answer)}\n handleDateChange={(date: Date | null) =>\n onChangeCallback(question.id, date ? moment(date).format('YYYY-MM-DD') : '')\n }\n inputStyles={classes.formDatePickerStyles}\n disabled={disabled}\n innerRef={questionRef}\n />\n {questionError && <Box sx={sharedClasses.errorBox}>{questionError}</Box>}\n </Box>\n </Box>\n );\n case 'CsvDataLookupField': {\n return (\n <Box>\n <QuestionHTML html={questionHTMLTemplate} />\n <FormSelectField\n options={csvOptions}\n defaultValue={selectedCSVOption}\n value={selectedCSVOption}\n styles={{ width: '290px' }}\n onChange={(value: string) => setSelectedCSVOption(value)}\n isDisabled={disabled}\n />\n {selectedCSVOption !== csvOptions[0] && (\n <Stack sx={{ marginTop: 2 }}>\n {selectedCSVOption === 'Existing Position'\n ? 'Please enter the Existing Position Number'\n : 'Please enter the Reports to Manager's Position Number'}\n <Stack sx={{ flexDirection: 'row', alignItems: 'center', marginTop: 1 }}>\n <DebounceInput\n onDebouncedChange={(value: string) => {\n setPositionId(value);\n onChangeCallback(question.id, [selectedCSVOption, value]);\n }}\n defaultValue={positionId}\n >\n {({ value, onChange }) => (\n <FormTextField\n value={value}\n onChange={onChange}\n styles={{ width: '290px' }}\n innerRef={questionRef}\n required={question.required}\n error={questionError}\n draggable={disabled}\n />\n )}\n </DebounceInput>\n <Button\n sx={classes.lookUpButton}\n onClick={() => handleLookUpButton(question.id, positionId)}\n >\n {fetchingCSV ? <CircularProgress size={20} color=\"inherit\" /> : 'Look Up'}\n </Button>\n </Stack>\n </Stack>\n )}\n </Box>\n );\n }\n case 'AvailabilityField':\n return (\n <Box>\n <QuestionHTML html={questionHTMLTemplate} />\n <Box sx={classes.formDateWrapper} ref={questionRef}>\n <AvailabilityPreview\n onChange={(value) => onChangeCallback(question.id, value)}\n availabilityConfig={question.availability_config}\n answer={answer}\n error={questionError}\n disabled={disabled}\n />\n </Box>\n </Box>\n );\n case 'JobReferenceLookupField':\n return null;\n default:\n return (\n <Box>\n <Box ref={questionRef}>{question.title}</Box>\n Invalid question type\n </Box>\n );\n }\n}\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport { FormTextField, MultilineFormTextField } from '../CustomUIElements/FormTextField';\nimport FormRadioButtonGroup from '../CustomUIElements/FormRadioButtonGroup';\nimport FormCheckboxGroup from '../CustomUIElements/FormCheckboxGroup';\nimport FormSelectField from '../CustomUIElements/FormSelectField';\nimport DebounceInput from './DebounceInput';\nimport { UncontrolledSingleDatePicker } from '../CustomUIElements/SingleDatePicker';\nimport { classes } from './styles';\nimport dompurify from 'dompurify';\nimport FormRankField from '../CustomUIElements/FormRankField';\n\nexport interface IApplicantQuestion {\n id: number;\n required: boolean;\n position: number;\n title: string;\n type: string;\n field_choices: IFieldChoice[];\n field_type: string;\n availability_config: IAvailabilityConfig;\n weight: number;\n enabled: boolean;\n editable: boolean;\n deletable: boolean;\n rateable: boolean;\n answered: boolean;\n enabled_for_summary: boolean;\n is_approval_form_title: boolean | null;\n for_email_template: boolean;\n confidential: boolean;\n}\n\nexport interface IAvailabilityConfig {\n allow_break: boolean;\n created_at: string;\n field_id: number;\n heading_1: string;\n heading_2: string;\n id: number;\n updated_at: string;\n week_duration: string;\n week_start_day: number;\n}\n\nexport interface IFieldChoice {\n id: number;\n name: string;\n position: number;\n}\n\nexport default function QuestionFieldViewer({\n question,\n draggable\n}: {\n question: IApplicantQuestion;\n draggable?: boolean;\n}) {\n switch (question.type) {\n case 'RadioButtonField':\n return (\n <Box>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{\n __html: dompurify.sanitize(question.title.replace(/\\n/g, '<br>'))\n }}\n />\n <FormRadioButtonGroup\n options={question.field_choices.map((choice) => ({\n label: choice.name,\n value: choice.id\n }))}\n />\n </Box>\n );\n case 'CheckBoxField':\n return (\n <Box>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n />\n <Box sx={{ right: '12px' }}>\n <FormCheckboxGroup options={question.field_choices} />\n </Box>\n </Box>\n );\n case 'TextField':\n return (\n <Box>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n />\n <DebounceInput>{({ value }) => <FormTextField value={value} />}</DebounceInput>\n </Box>\n );\n case 'TextAreaField':\n return (\n <Box>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n />\n <DebounceInput>\n {({ value }) => (\n <MultilineFormTextField\n value={value}\n styles={{ minWidth: '300px', maxWidth: '600px' }}\n />\n )}\n </DebounceInput>\n </Box>\n );\n case 'SelectField':\n return (\n <Box>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n />\n <FormSelectField\n options={question.field_choices.map((choice) => ({\n label: choice.name,\n value: choice.id\n }))}\n defaultValue={''}\n styles={{\n width: '222px',\n '& .MuiInputBase-input': {\n fontSize: '14px'\n }\n }}\n onChange={{}}\n />\n </Box>\n );\n case 'RankField':\n return (\n <Box>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n />\n <Box sx={classes.questionsRankInput}>\n <FormRankField choices={question.field_choices} />\n </Box>\n </Box>\n );\n case 'DateField':\n return (\n <Box>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n />\n <Box sx={{ marginTop: '10px', ...classes.formDateWrapper }}>\n <UncontrolledSingleDatePicker defaultValue={null} disabled={true} />\n </Box>\n </Box>\n );\n case 'CsvDataLookupField':\n return (\n <Box>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n />\n <FormSelectField\n options={['Please choose...', 'Existing Position', 'New Position']}\n defaultValue={'Please choose...'}\n styles={{ width: '222px' }}\n onChange={{}}\n />\n </Box>\n );\n case 'AvailabilityField':\n return (\n <Box>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(question.title) }}\n />\n {/*\n * Availability fields have previews which don't work well with this flex layout hence\n * they're rendered separated from this row\n */}\n </Box>\n );\n case 'JobReferenceLookupField':\n return null;\n default:\n return (\n <Box>\n <Box ref={questionRef}>{question.title}</Box>\n Invalid question type\n </Box>\n );\n }\n}\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport { FormTextField, MultilineFormTextField } from '../CustomUIElements/FormTextField';\nimport { alpha, styled } from '@mui/material/styles';\nimport MenuItem from '@mui/material/MenuItem';\nimport InputBase from '@mui/material/InputBase';\nimport { classes } from './styles';\nimport dompurify from 'dompurify';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport Select from '@mui/material/Select';\nimport Radio from '@mui/material/Radio';\nimport RadioGroup from '@mui/material/RadioGroup';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport FormGroup from '@mui/material/FormGroup';\nimport Checkbox from '@mui/material/Checkbox';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';\nimport moment from 'moment';\nimport Button from '@mui/material/Button';\nimport { SingleDatePicker } from '../CustomUIElements/SingleDatePicker';\n\nexport interface IApplicantRequisition {\n id: number;\n question: string;\n answer:\n | {\n id: number;\n name: string;\n }\n | IFieldCheckbox[];\n type: string;\n field_choices: IFieldChoice[];\n}\n\nexport interface IFieldChoice {\n id: number;\n name: string;\n position: number;\n}\n\nexport interface IFieldCheckbox {\n id: number;\n name: string;\n}\n\nconst SelectInput = styled(InputBase)(() => ({\n 'label + &': {\n marginTop: '24px'\n },\n '& .MuiInputBase-input': {\n borderRadius: '6px',\n position: 'relative',\n backgroundColor: '#FFFFFF',\n color: '#333333',\n border: '1px solid #DDDDDD',\n fontSize: '16px',\n padding: '6px 10px',\n margin: '3px 0px',\n fontFamily: 'Source Sans Pro, sans-serif',\n '&:focus': {\n boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n borderColor: theme.palette.primary.main\n }\n },\n '& .MuiInputBase-input:focus': {\n backgroundColor: '#ffffff',\n borderRadius: '6px'\n },\n '& .MuiSvgIcon-root': {\n color: '#AAAAAA',\n marginRight: '10px',\n transition: 'all 0.16s ease-in-out'\n }\n}));\n\nconst menuItemStyle = {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n};\n\nconst radioStyle = {\n color: '#DDDDDD',\n '&.Mui-checked': {\n color: theme.palette.action.main\n },\n '& .MuiSvgIcon-root': {\n fontSize: '22px'\n }\n};\n\nconst labelStyle = {\n '& .MuiTypography-root': {\n color: '#000 !important',\n fontSize: '16px',\n marginLeft: '2px',\n fontFamily: 'Source Sans Pro, sans-serif'\n }\n};\n\nconst checkboxStyle = {\n color: '#DDDDDD',\n '&.Mui-checked': {\n color: theme.palette.action.main\n },\n '& .MuiSvgIcon-root': {\n fontSize: '22px'\n }\n};\n\nconst buttonStyle = {\n fontFamily: 'Source Sans Pro',\n fontSize: '12px',\n fontWeight: 'bold',\n textTransform: 'none',\n color: '#5BC4BF',\n backgroundColor: '#5BC4BF12',\n borderRadius: '6px',\n boxShadow: 'none',\n marginLeft: '20px',\n '&:hover': {\n backgroundColor: '#4da8a412',\n boxShadow: 'none'\n }\n};\n\nexport default function RequisitionInfoViewer({\n requisition,\n index,\n requisitionInfos,\n setRequisitionInfos\n}: {\n requisition: IApplicantRequisition;\n}) {\n const updateAnswer = (index: number, value: string | number) => {\n const answers = [...requisitionInfos];\n answers[index].answer = value;\n setRequisitionInfos(answers);\n };\n\n const updateCheckbox = (index: number, value: number) => {\n const i = requisitionInfos[index].answer.indexOf(value);\n if (i < 0) {\n const answers = [...requisitionInfos];\n answers[index].answer.push(value);\n setRequisitionInfos(answers);\n } else {\n requisitionInfos[index].answer.splice(i, 1);\n setRequisitionInfos(requisitionInfos);\n }\n };\n\n switch (requisition.type) {\n case 'RadioButtonField':\n return (\n <Box sx={{ marginTop: '20px' }}>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n />\n <RadioGroup\n name=\"radio-buttons-group\"\n value={requisition.answer}\n onChange={(e) => updateAnswer(index, e.target.value)}\n sx={{ padding: '8px 0px', flexDirection: 'column' }}\n >\n {requisition.field_choices\n .map((choice) => ({\n label: choice.name,\n value: choice.id\n }))\n .map((option) => (\n <FormControlLabel\n key={option.value}\n value={option.value}\n control={<Radio sx={radioStyle} />}\n label={option.label}\n sx={labelStyle}\n />\n ))}\n </RadioGroup>\n </Box>\n );\n case 'CheckBoxField':\n return (\n <Box sx={{ marginTop: '20px' }}>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n />\n <Box sx={{ right: '12px' }}>\n <FormGroup sx={{ padding: '8px 0px', flexDirection: 'column' }}>\n {requisition.field_choices\n .map((choice) => ({\n label: choice.name,\n value: choice.id\n }))\n .map((option) => (\n <FormControlLabel\n key={option.value}\n control={\n <Checkbox\n sx={checkboxStyle}\n onChange={() => updateCheckbox(index, option.value)}\n value={option.value}\n defaultChecked={requisition.answer.includes(option.value)}\n name={option.label}\n />\n }\n label={option.label}\n sx={labelStyle}\n />\n ))}\n </FormGroup>\n </Box>\n </Box>\n );\n case 'TextField':\n return (\n <Box sx={{ marginTop: '20px' }}>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n />\n <FormTextField\n value={requisition.answer}\n onChange={(e) => updateAnswer(index, e.target.value)}\n styles={{ width: '290px' }}\n />\n </Box>\n );\n case 'TextAreaField':\n return (\n <Box sx={{ marginTop: '20px' }}>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n />\n <MultilineFormTextField\n value={requisition.answer}\n onChange={(e) => updateAnswer(index, e.target.value)}\n styles={{ minWidth: '300px', maxWidth: '600px' }}\n />\n </Box>\n );\n case 'SelectField':\n return (\n <Box sx={{ marginTop: '20px' }}>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n />\n <Select\n sx={{ width: '290px' }}\n value={requisition.answer}\n onChange={(e) => updateAnswer(index, e.target.value)}\n input={<SelectInput />}\n >\n {requisition.field_choices\n .map((choice) => ({\n label: choice.name,\n value: choice.id\n }))\n .map((option, index) =>\n typeof option === 'string' ? (\n <MenuItem key={index} value={option} sx={menuItemStyle}>\n {option}\n </MenuItem>\n ) : (\n <MenuItem key={index} value={option.value} sx={menuItemStyle}>\n {option.label}\n </MenuItem>\n )\n )}\n </Select>\n </Box>\n );\n case 'DateField':\n return (\n <Box sx={{ marginTop: '20px' }}>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n />\n <Box sx={{ marginTop: '10px', ...classes.formDateWrapper }}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <SingleDatePicker\n value={requisition.answer}\n disabled={false}\n onChange={(date) => updateAnswer(index, moment(date).format('YYYY-MM-DD'))}\n />\n </LocalizationProvider>\n </Box>\n </Box>\n );\n case 'AvailabilityField':\n case 'CsvDataLookupField':\n return (\n <Box sx={{ marginTop: '20px' }}>\n <Box\n sx={classes.questionLabel}\n dangerouslySetInnerHTML={{ __html: dompurify.sanitize(requisition.question) }}\n />\n <Box sx={{ marginTop: '10px', ...classes.formDateWrapper }}>\n <Select\n sx={{ width: '290px' }}\n value={requisition.answer[0] == 'existing' ? 'Existing Position' : 'New Position'}\n onChange={{}}\n input={<SelectInput />}\n disabled={true}\n >\n {['Existing Position', 'New Position'].map((option, index) =>\n typeof option === 'string' ? (\n <MenuItem key={index} value={option} sx={menuItemStyle}>\n {option}\n </MenuItem>\n ) : (\n <MenuItem key={index} value={option.value} sx={menuItemStyle}>\n {option.label}\n </MenuItem>\n )\n )}\n </Select>\n <Box sx={{ marginTop: '10px', ...classes.questionLabel }}>\n {requisition.answer[0] == 'existing'\n ? 'Enter Existing Position Number'\n : 'Enter New Position Number'}\n </Box>\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <FormTextField\n draggable={true}\n value={requisition.answer[1]}\n onChange={{}}\n required={false}\n styles={{ width: '290px' }}\n />\n <Button id=\"csv-look-up-button\" sx={buttonStyle} onClick={{}} disabled={true}>\n Look up\n </Button>\n </Box>\n </Box>\n </Box>\n );\n case 'JobReferenceLookupField':\n return null;\n default:\n return (\n <Box>\n <Box>{requisition.question}</Box>\n Invalid question type\n </Box>\n );\n }\n}\n","import React, { useState, SetStateAction, Dispatch } from 'react';\nimport { useDropzone, FileWithPath } from 'react-dropzone';\nimport axios from 'axios';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport CircularProgressWithLabel from '../../Components/CustomUIElements/CircularProgressWithLabel';\nimport { humanFileSize } from './humanFileSize';\nimport DocTypeIcon from './DocTypeIcon';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport { classes } from './styles';\n\nexport default function SingleAttachmentSelector({\n performUpload,\n apiKey,\n uploadUrl,\n onUploadComplete,\n setFile,\n file,\n maxSize\n}: {\n performUpload: boolean;\n apiKey?: string;\n uploadUrl?: string;\n onUploadComplete?: () => void;\n setFile?: (file: FileWithPath) => void;\n file?: FileWithPath | null;\n maxSize: number;\n}) {\n const { getRootProps, getInputProps, open } = useDropzone({\n noClick: true,\n noKeyboard: true,\n maxSize,\n maxFiles: 1,\n onDragOver: () => {\n setIsDraggedOver(true);\n },\n onDragLeave: () => {\n setIsDraggedOver(false);\n },\n onDropRejected: () => {\n setIsRejected(true);\n },\n onDrop: (acceptedFile: FileWithPath[]) => {\n if (performUpload) {\n uploadFiles(acceptedFile[0]);\n }\n if (setFile) {\n setFile(acceptedFile[0]);\n }\n setIsDraggedOver(false);\n }\n });\n\n const [isDraggedOver, setIsDraggedOver] = useState(false);\n const [isRejected, setIsRejected] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [percentCompleted, setPercentCompleted] = useState(0);\n const [error, setError] = useState('');\n const [isHovered, setIsHovered] = useState(false);\n\n const uploadFiles = async (file: FileWithPath) => {\n if (!apiKey || !uploadUrl || !onUploadComplete) {\n console.error(\n 'Missing required parameters for AttachmentSelector component. If performUpload is true, please provide apiKey, uploadUrl, and onUploadComplete.'\n );\n return;\n }\n setIsLoading(true);\n const formData = new FormData();\n formData.append('asset', file);\n try {\n const response = await axios.post(uploadUrl, formData, {\n headers: { 'Content-Type': 'multipart/form-data', 'X-api-authenticate': apiKey },\n onUploadProgress: (progressEvent) => {\n setPercentCompleted(Math.round((progressEvent.loaded * 100) / progressEvent.total));\n }\n });\n if (response.status === 201) {\n setError('');\n onUploadComplete();\n }\n } catch (error) {\n if (error.response?.data?.errors) {\n error.response.data.errors === 'Invalid file.'\n ? setError('Unsupported file type')\n : setError(error.response.data.errors);\n }\n console.log(error);\n } finally {\n setIsRejected(false);\n setIsLoading(false);\n setPercentCompleted(0);\n }\n };\n\n return (\n <Box sx={{ width: '100%' }}>\n <Box\n {...getRootProps()}\n sx={{\n ...classes.dragAreaSingle,\n ...(isDraggedOver ? classes.dragAreaOverSingle : {}),\n ...(file ? { cursor: 'pointer' } : {})\n }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n <input {...getInputProps()} />\n {!isLoading && file && (\n <Box\n sx={classes.fileIconContainer}\n onClick={() => {\n if (!isHovered) return;\n setFile && setFile(null);\n }}\n >\n <Box sx={classes.fileIcon}>\n {isHovered ? (\n <ClearIcon sx={{ '& svg': { color: '#D6827D !important' } }} />\n ) : (\n DocTypeIcon(file.name.split('.').pop())\n )}\n </Box>\n <Box>\n <Box sx={classes.fileName}>\n {isHovered ? 'Click to change attachment' : file.name}\n </Box>\n <Box sx={classes.fileSize}>{humanFileSize(file.size)}</Box>\n </Box>\n </Box>\n )}\n {isLoading ? (\n <>\n <CircularProgressWithLabel value={percentCompleted} size={30} />\n <Box sx={{ marginTop: '4px' }}>Uploading...</Box>\n </>\n ) : (\n !file && (\n <>\n <Box>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"62px\"\n height=\"39px\"\n viewBox=\"0 0 61 39\"\n version=\"1.1\"\n >\n <g id=\"surface1\">\n <path\n style={{\n stroke: 'none',\n fillRule: 'nonzero',\n fill: 'rgb(51.372549%,51.372549%,51.372549%)',\n fillOpacity: 1\n }}\n d=\"M 34.328125 38.65625 C 34.203125 38.402344 33.976562 38.148438 33.972656 37.894531 C 33.933594 36.039062 33.921875 34.1875 33.9375 32.332031 C 33.953125 30.957031 34.179688 30.757812 35.59375 30.746094 C 36.800781 30.734375 38.011719 30.796875 39.214844 30.714844 C 39.691406 30.707031 40.140625 30.488281 40.441406 30.117188 C 40.535156 29.636719 40.421875 29.140625 40.132812 28.746094 C 39.742188 28.242188 39.304688 27.78125 38.820312 27.367188 C 36.371094 24.898438 33.921875 22.4375 31.46875 19.972656 C 30.523438 19.023438 30.105469 19.042969 29.175781 19.984375 C 26.492188 22.710938 23.800781 25.429688 21.109375 28.148438 C 20.996094 28.261719 20.828125 28.355469 20.785156 28.492188 C 20.617188 28.976562 20.261719 29.566406 20.414062 29.9375 C 20.699219 30.375 21.167969 30.660156 21.683594 30.710938 C 22.820312 30.8125 23.96875 30.710938 25.113281 30.714844 C 26.566406 30.722656 26.710938 30.875 26.710938 32.300781 C 26.707031 34.058594 26.675781 35.816406 26.722656 37.574219 C 26.742188 38.382812 26.503906 38.722656 25.648438 38.71875 C 21.167969 38.6875 16.683594 38.769531 12.203125 38.6875 C 5.507812 38.578125 0.105469 33.140625 0.00390625 26.402344 C -0.160156 20.078125 3.519531 14.664062 9.199219 13.011719 C 10.328125 12.683594 11.5 12.535156 12.671875 12.574219 C 13.535156 12.71875 14.359375 12.160156 14.554688 11.304688 C 15.5625 8.667969 17.164062 6.296875 19.230469 4.382812 C 26.757812 -2.6875 38.09375 -1 43.296875 7.980469 C 43.792969 8.835938 44.234375 9.726562 44.644531 10.625 C 44.769531 11.097656 45.246094 11.382812 45.714844 11.269531 C 49.65625 10.855469 52.5 13.699219 52.09375 17.660156 C 52 18.550781 52.453125 18.640625 53.085938 18.792969 C 57.859375 19.820312 61.160156 24.210938 60.84375 29.113281 C 60.472656 33.945312 56.832031 37.878906 52.066406 38.605469 C 51.875 38.621094 51.6875 38.628906 51.496094 38.625 L 50.523438 38.429688 C 51.761719 38.171875 53.074219 38.085938 54.222656 37.613281 C 58.082031 36.003906 60.445312 32.050781 60.050781 27.867188 C 59.640625 23.515625 56.429688 19.957031 52.167969 19.121094 C 51.328125 18.96875 51.1875 18.699219 51.289062 17.882812 C 51.757812 14.074219 48.898438 11.214844 45.195312 11.734375 C 44.695312 11.859375 44.179688 11.589844 43.996094 11.105469 C 43.132812 9.363281 42.140625 7.691406 41.03125 6.09375 C 38.53125 2.78125 34.722656 0.726562 30.59375 0.464844 C 26.46875 0.203125 22.429688 1.757812 19.535156 4.726562 C 17.464844 6.867188 15.878906 9.425781 14.878906 12.234375 C 14.8125 12.53125 14.628906 12.785156 14.367188 12.933594 C 14.109375 13.085938 13.796875 13.121094 13.511719 13.03125 C 11.125 12.679688 8.691406 13.214844 6.667969 14.535156 C 1.140625 17.976562 -0.851562 25.476562 2.195312 31.539062 C 4.191406 35.496094 7.339844 38.019531 11.832031 38.226562 C 16.207031 38.433594 20.601562 38.273438 24.988281 38.296875 C 25.671875 38.296875 25.96875 38.078125 25.957031 37.355469 C 25.933594 35.695312 25.9375 34.03125 25.984375 32.367188 C 26.011719 31.464844 25.675781 31.085938 24.757812 31.132812 C 23.644531 31.191406 22.53125 31.160156 21.417969 31.167969 C 20.683594 31.171875 20 31.027344 19.632812 30.308594 C 19.230469 29.539062 19.714844 28.964844 20.144531 28.402344 C 20.359375 28.125 20.59375 27.867188 20.847656 27.621094 C 23.019531 25.464844 25.191406 23.308594 27.367188 21.15625 C 27.964844 20.496094 28.601562 19.875 29.273438 19.292969 C 30.34375 18.472656 31.101562 18.570312 32.058594 19.519531 C 33.078125 20.527344 34.078125 21.558594 35.089844 22.574219 C 36.976562 24.476562 38.878906 26.359375 40.746094 28.277344 C 41.859375 29.417969 41.476562 30.675781 39.925781 31.042969 C 39.582031 31.113281 39.234375 31.144531 38.882812 31.140625 C 37.867188 31.152344 36.847656 31.183594 35.832031 31.128906 C 35.023438 31.089844 34.691406 31.34375 34.722656 32.210938 C 34.777344 33.839844 34.785156 35.476562 34.722656 37.101562 C 34.6875 38.035156 35.019531 38.308594 35.925781 38.300781 C 39.800781 38.261719 43.683594 38.28125 47.558594 38.292969 C 48 38.316406 48.441406 38.359375 48.875 38.429688 C 44.496094 38.4375 40.113281 38.4375 35.730469 38.460938 C 35.265625 38.492188 34.796875 38.554688 34.339844 38.652344 \"\n />\n <path\n style={{\n stroke: 'none',\n fillRule: 'nonzero',\n fill: 'rgb(46.27451%,46.27451%,46.27451%)',\n fillOpacity: 1\n }}\n d=\"M 34.328125 38.65625 C 34.789062 38.558594 35.253906 38.496094 35.722656 38.464844 C 40.105469 38.441406 44.484375 38.441406 48.867188 38.433594 L 50.527344 38.433594 L 51.496094 38.625 C 49.886719 38.648438 48.277344 38.691406 46.667969 38.691406 C 42.554688 38.691406 38.441406 38.667969 34.328125 38.65625 \"\n />\n <path\n style={{\n stroke: 'none',\n fillRule: 'nonzero',\n fill: 'rgb(100%,100%,100%)',\n fillOpacity: 1\n }}\n d=\"M 50.527344 38.433594 L 48.867188 38.433594 C 48.429688 38.363281 47.992188 38.320312 47.550781 38.296875 C 43.671875 38.285156 39.792969 38.265625 35.914062 38.304688 C 35.007812 38.3125 34.675781 38.039062 34.710938 37.105469 C 34.773438 35.480469 34.769531 33.84375 34.710938 32.214844 C 34.679688 31.347656 35.011719 31.09375 35.824219 31.132812 C 36.839844 31.1875 37.859375 31.15625 38.875 31.144531 C 39.222656 31.148438 39.574219 31.117188 39.914062 31.046875 C 41.464844 30.679688 41.851562 29.421875 40.738281 28.28125 C 38.867188 26.363281 36.964844 24.480469 35.078125 22.578125 C 34.070312 21.5625 33.070312 20.53125 32.050781 19.523438 C 31.09375 18.574219 30.335938 18.476562 29.265625 19.296875 C 28.589844 19.878906 27.953125 20.5 27.355469 21.160156 C 25.183594 23.316406 23.011719 25.46875 20.839844 27.625 C 20.585938 27.871094 20.351562 28.128906 20.136719 28.40625 C 19.707031 28.964844 19.222656 29.542969 19.621094 30.3125 C 19.992188 31.03125 20.675781 31.175781 21.410156 31.171875 C 22.523438 31.164062 23.636719 31.195312 24.746094 31.136719 C 25.667969 31.089844 26 31.464844 25.976562 32.371094 C 25.929688 34.035156 25.925781 35.695312 25.949219 37.359375 C 25.960938 38.082031 25.664062 38.300781 24.980469 38.296875 C 20.59375 38.277344 16.199219 38.4375 11.824219 38.230469 C 7.332031 38.019531 4.183594 35.503906 2.1875 31.539062 C -0.863281 25.480469 1.128906 17.980469 6.660156 14.539062 C 8.683594 13.21875 11.113281 12.683594 13.5 13.035156 C 13.789062 13.125 14.097656 13.089844 14.359375 12.9375 C 14.617188 12.789062 14.804688 12.535156 14.871094 12.238281 C 15.867188 9.429688 17.457031 6.867188 19.527344 4.730469 C 22.421875 1.761719 26.457031 0.207031 30.585938 0.46875 C 34.710938 0.730469 38.523438 2.785156 41.023438 6.097656 C 42.132812 7.691406 43.125 9.367188 43.988281 11.109375 C 44.167969 11.59375 44.683594 11.863281 45.183594 11.734375 C 48.890625 11.21875 51.746094 14.078125 51.28125 17.886719 C 51.179688 18.703125 51.316406 18.976562 52.160156 19.125 C 56.425781 19.960938 59.636719 23.519531 60.046875 27.875 C 60.4375 32.058594 58.074219 36.011719 54.214844 37.621094 C 53.066406 38.09375 51.753906 38.175781 50.519531 38.4375 \"\n />\n </g>\n </svg>\n </Box>\n {!isDraggedOver ? (\n <Box sx={{ display: 'flex', columnGap: '10px', width: '182px' }}>\n {!isRejected && !error ? (\n <Box sx={{ display: 'flex', alignItems: 'center' }}>Drag file here or</Box>\n ) : (\n <Box sx={{ color: '#D6827D' }}>\n {isRejected ? 'Files must be under 50mb' : error}\n </Box>\n )}\n <Button sx={classes.selectFilesButtonSingle} onClick={open}>\n Choose file\n </Button>\n </Box>\n ) : (\n <Box sx={{ width: '182px', textAlign: 'center' }}>\n {performUpload ? 'Drop file here to upload!' : 'Drop file here to add!'}\n </Box>\n )}\n </>\n )\n )}\n </Box>\n </Box>\n );\n}\n","import { IUserPermissions } from '../sharedTypes';\n\ninterface IPermissions {\n id: number;\n name: string;\n paid_role: boolean;\n user_type: string;\n feature_groups: {\n name: string;\n permissions: string[];\n }[];\n}\n\nexport const formatUserPermissions = (data: { roles: IPermissions[] }) => {\n const allRoles: Record<string, Record<string, boolean>> = {};\n data.roles.forEach((role: IPermissions) =>\n role.feature_groups.forEach((group) => {\n !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n })\n );\n return allRoles as IUserPermissions;\n};\n\nexport const formatUserPermissionsAsArray = (data: { roles: IPermissions[] }) => {\n const rolesArray: string[] = [];\n data.roles.forEach((role: IPermissions) =>\n role.feature_groups.forEach((group) => {\n if (rolesArray.includes(group.name)) return;\n group.permissions.forEach((permission) => rolesArray.push(permission));\n })\n );\n return rolesArray;\n};\n","import { useState, useRef, useEffect, useCallback } from 'react';\nimport { createConsumer } from '@rails/actioncable';\n\nexport const useWebSockets = (channel: string, onReceive: (data: any, UID?: number) => void) => {\n const [socketConnected, setSocketConnected] = useState(false);\n const subscription = useRef<any>(null);\n const consumer = useRef<any>(null);\n\n useEffect(() => {\n consumer.current = createConsumer(\n document?.querySelector('meta[name=\"action-cable-url\"]')?.content\n );\n }, []);\n\n const unsubscribeFromChannel = useCallback(() => {\n subscription.current && consumer.current.subscriptions.remove(subscription.current);\n setSocketConnected(false);\n }, []);\n\n const subscribeToChannel = useCallback(\n (UID?: number) => {\n if (consumer.current.subscriptions.subscriptions.length > 0) return;\n subscription.current = consumer.current.subscriptions.create(\n { channel },\n {\n connected: () => setSocketConnected(true),\n received: (data: any) => onReceive(data, UID)\n }\n );\n },\n [channel, onReceive]\n );\n\n return { subscribeToChannel, unsubscribeFromChannel, socketConnected };\n};\n","import { Box } from '@mui/material';\nimport React, { useEffect, useState, useRef } from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport KpiItem from './components/KpiItem';\nimport KpiBanner from './components/KpiBanner';\nimport PinnedJobs from './components/PinnedJobs';\nimport NewApplicants from './components/NewApplicants';\nimport { IPermissions } from '../Jobs/types';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport TasksDashboard from './components/TasksDashboard/TasksDashboard';\nimport UpcomingEvents from './components/UpcomingEvents/UpcomingEvents';\nimport dashboardStyles from './styles';\nimport { getPermissions } from '../../shared/permissionHelpers';\n\nconst queryClient = new QueryClient();\n\nfunction Dashboard({\n apiKey,\n currentUserId,\n newCalendarEnabled,\n userTimeZone\n}: {\n apiKey: string;\n currentUserId: number;\n newCalendarEnabled: boolean;\n userTimeZone: string;\n}) {\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const [userPermissions, setUserPermissions] = useState<Record<string, Record<string, boolean>>>(\n {}\n );\n const newApplicationsRef = useRef<HTMLDivElement | null>(null);\n\n const scrollToComponent = () => {\n if (newApplicationsRef.current) {\n newApplicationsRef.current.scrollIntoView({ behavior: 'smooth' });\n }\n };\n\n async function getUserPermissions() {\n try {\n const data = await getPermissions();\n const allRoles: Record<string, Record<string, boolean>> = {};\n data.roles.forEach((role: IPermissions) =>\n role.feature_groups.forEach((group) => {\n !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n })\n );\n const hasRecruitmentTeamEnabled = data.roles.some((user) => user.recruitment_team_enabled);\n allRoles['recruitment_team_enabled'] = hasRecruitmentTeamEnabled;\n setUserPermissions(allRoles);\n } catch (error) {\n console.log(error);\n }\n }\n\n useEffect(() => {\n getUserPermissions();\n }, []);\n\n return (\n <QueryClientProvider client={queryClient}>\n <Box id=\"dashboard\" sx={styles.container}>\n <h1 style={styles.header}>My Dashboard</h1>\n <Box display=\"flex\" flexWrap=\"wrap\" gap=\"40px\">\n <KpiItem onClick={scrollToComponent} type=\"applications\" />\n <KpiItem type=\"approvals\" />\n <KpiItem type=\"events\" />\n <KpiBanner />\n <UpcomingEvents\n setSnackbar={setSnackbar}\n apiKey={apiKey}\n currentUserId={currentUserId}\n newCalendarEnabled={newCalendarEnabled}\n userPermissions={userPermissions}\n userTimezone={userTimeZone}\n />\n <TasksDashboard setSnackbar={setSnackbar} />\n <PinnedJobs setSnackbar={setSnackbar} userPermissions={userPermissions} />\n <Box ref={newApplicationsRef} sx={{ ...dashboardStyles.section, flexBasis: '100%' }}>\n <NewApplicants setSnackbar={setSnackbar} userPermissions={userPermissions} />\n </Box>\n </Box>\n </Box>\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </QueryClientProvider>\n );\n}\n\nconst styles = {\n container: {\n backgroundColor: '#FFFFFF',\n padding: '40px 56px'\n },\n header: {\n color: '#666666',\n fontSize: '42px',\n marginTop: '0px',\n marginBottom: '40px'\n }\n};\n\nexport default Dashboard;\n","import React from 'react';\n\nexport default function Banner() {\n return (\n <svg\n width=\"100%\"\n viewBox=\"0 0 203 131\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n preserveAspectRatio=\"xMinYMin slice\"\n >\n <g clipPath=\"url(#clip0_7224_4716)\">\n <rect width=\"203\" height=\"131\" rx=\"3\" fill=\"#084D6D\" />\n <g filter=\"url(#filter0_d_7224_4716)\">\n <path\n d=\"M128.352 110.363L89.4549 117.092C84.7206 117.911 81.5476 122.407 82.3679 127.134L89.1075 165.971C89.9279 170.698 94.4308 173.867 99.1651 173.047L138.062 166.318C142.796 165.499 145.969 161.003 145.149 156.276L138.409 117.439C137.589 112.712 133.086 109.544 128.352 110.363Z\"\n fill=\"#E60078\"\n />\n </g>\n <path\n d=\"M127.896 139.643C126.515 131.564 118.783 126.135 110.659 127.525C102.547 128.915 97.0764 136.613 98.4792 144.703C99.8712 152.792 107.592 158.21 115.716 156.821C123.829 155.431 129.288 147.732 127.896 139.643Z\"\n fill=\"#E50278\"\n />\n <path\n d=\"M127.896 139.643C129.288 147.732 123.829 155.431 115.716 156.821C107.592 158.21 99.8712 152.781 98.4792 144.703C97.0872 136.624 102.547 128.915 110.659 127.525C118.783 126.135 126.504 131.564 127.896 139.643ZM124.057 141.771C124.742 141.651 125.21 141.011 125.09 140.327C124.971 139.654 124.318 139.187 123.633 139.306C122.948 139.425 122.48 140.077 122.6 140.75C122.72 141.434 123.372 141.89 124.057 141.771ZM120.023 144.366C120.142 144.996 120.74 145.408 121.371 145.289C122.002 145.17 122.393 144.572 122.274 143.932C122.154 143.324 121.556 142.911 120.947 143.02C120.316 143.128 119.903 143.736 120.023 144.366ZM121.741 140.902C121.643 140.262 121.056 139.838 120.425 139.947C119.794 140.055 119.381 140.642 119.49 141.271C119.598 141.89 120.164 142.303 120.784 142.216C121.415 142.129 121.85 141.532 121.741 140.902ZM119.892 136.874C119.25 136.982 118.837 137.569 118.957 138.209C119.066 138.828 119.642 139.23 120.273 139.132C120.903 139.024 121.317 138.459 121.219 137.84C121.121 137.2 120.545 136.776 119.903 136.885L119.892 136.874ZM115.901 138.709C115.999 139.273 116.543 139.654 117.097 139.556C117.641 139.447 118.011 138.926 117.913 138.383C117.815 137.818 117.282 137.438 116.717 137.536C116.173 137.634 115.803 138.166 115.89 138.709H115.901ZM117.38 135.299C117.282 134.735 116.749 134.355 116.184 134.463C115.64 134.561 115.27 135.082 115.357 135.636C115.455 136.201 115.977 136.57 116.553 136.472C117.108 136.374 117.467 135.864 117.369 135.31L117.38 135.299ZM118.446 141.445C118.348 140.891 117.848 140.533 117.282 140.62C116.706 140.707 116.336 141.239 116.434 141.803C116.532 142.346 117.054 142.726 117.597 142.64C118.163 142.553 118.544 142.021 118.446 141.456V141.445ZM118.359 146.766C117.815 146.853 117.423 147.363 117.5 147.917C117.576 148.492 118.098 148.872 118.663 148.785C119.229 148.699 119.598 148.199 119.522 147.645C119.435 147.07 118.924 146.69 118.359 146.777V146.766ZM118.989 144.54C118.902 143.975 118.402 143.617 117.837 143.693C117.26 143.78 116.88 144.29 116.967 144.866C117.065 145.43 117.587 145.81 118.152 145.702C118.707 145.604 119.066 145.094 118.979 144.54H118.989ZM114.346 141.228C113.824 141.315 113.498 141.782 113.595 142.303C113.682 142.792 114.15 143.128 114.639 143.063C115.14 142.987 115.499 142.498 115.422 141.999C115.346 141.489 114.868 141.152 114.357 141.239L114.346 141.228ZM113.574 136.885C114.085 136.798 114.433 136.331 114.346 135.821C114.259 135.321 113.769 134.974 113.269 135.06C112.78 135.147 112.454 135.614 112.53 136.114C112.606 136.635 113.074 136.971 113.585 136.885H113.574ZM116.477 148.134C116.39 147.624 115.901 147.276 115.401 147.363C114.901 147.45 114.563 147.938 114.65 148.449C114.737 148.948 115.205 149.274 115.694 149.187C116.216 149.1 116.553 148.633 116.466 148.123L116.477 148.134ZM115.944 145.039C115.847 144.529 115.368 144.192 114.857 144.29C114.346 144.388 114.031 144.876 114.128 145.387C114.226 145.875 114.694 146.201 115.194 146.114C115.705 146.027 116.042 145.539 115.944 145.028V145.039ZM113.813 132.737C113.726 132.226 113.237 131.89 112.725 131.988C112.236 132.074 111.91 132.541 111.986 133.041C112.062 133.562 112.541 133.899 113.052 133.812C113.563 133.725 113.9 133.247 113.813 132.737ZM117.021 151.196C116.923 150.686 116.434 150.36 115.923 150.468C115.422 150.566 115.107 151.033 115.205 151.533C115.303 152.043 115.781 152.369 116.303 152.26C116.804 152.162 117.119 151.685 117.032 151.196H117.021ZM114.89 138.883C114.792 138.372 114.313 138.046 113.791 138.155C113.291 138.253 112.976 138.72 113.074 139.219C113.161 139.719 113.628 140.044 114.128 139.958C114.65 139.871 114.988 139.393 114.89 138.883ZM111.801 143.41C112.247 143.334 112.551 142.922 112.475 142.477C112.399 142.053 111.964 141.738 111.529 141.803C111.094 141.879 110.79 142.303 110.866 142.737C110.942 143.182 111.355 143.476 111.801 143.4V143.41ZM112.334 146.483C112.78 146.407 113.084 145.995 113.019 145.56C112.954 145.126 112.53 144.822 112.084 144.898C111.638 144.974 111.344 145.376 111.41 145.821C111.486 146.266 111.888 146.559 112.334 146.483ZM110.333 139.675C110.409 140.12 110.833 140.414 111.268 140.338C111.703 140.262 112.008 139.838 111.942 139.404C111.866 138.969 111.431 138.665 110.996 138.741C110.561 138.817 110.257 139.241 110.333 139.675ZM108.615 139.273C108.245 139.339 107.984 139.697 108.038 140.066C108.104 140.435 108.462 140.696 108.832 140.631C109.235 140.566 109.485 140.207 109.409 139.816C109.332 139.436 108.985 139.197 108.604 139.273H108.615ZM109.952 142.911C109.887 142.531 109.539 142.292 109.158 142.346C108.778 142.412 108.517 142.759 108.571 143.128C108.626 143.508 109.017 143.78 109.398 143.715C109.767 143.649 110.018 143.28 109.952 142.911ZM110.485 146.006C110.431 145.626 110.083 145.365 109.702 145.419C109.322 145.474 109.039 145.854 109.104 146.234C109.169 146.603 109.539 146.853 109.909 146.798C110.279 146.733 110.54 146.386 110.485 146.006ZM107.56 143.324C107.505 143.02 107.168 142.792 106.864 142.868C106.559 142.933 106.364 143.237 106.429 143.541C106.494 143.867 106.788 144.062 107.114 143.997C107.418 143.932 107.625 143.628 107.571 143.334L107.56 143.324ZM107.027 140.272C106.983 139.979 106.69 139.751 106.385 139.784C106.059 139.816 105.831 140.12 105.885 140.446C105.929 140.761 106.211 140.978 106.516 140.935C106.831 140.902 107.07 140.587 107.027 140.272ZM107.614 147.07C107.919 147.015 108.136 146.722 108.093 146.418C108.049 146.103 107.734 145.886 107.408 145.941C107.081 145.995 106.875 146.299 106.951 146.625C107.016 146.939 107.299 147.124 107.614 147.07ZM104.569 143.856C104.656 144.127 104.841 144.279 105.113 144.225C105.385 144.171 105.537 143.953 105.483 143.682C105.428 143.432 105.233 143.291 104.961 143.334C104.667 143.378 104.558 143.573 104.569 143.867V143.856ZM105.472 146.386C105.211 146.483 105.059 146.646 105.113 146.939C105.167 147.211 105.363 147.341 105.624 147.298C105.907 147.254 106.059 147.048 106.016 146.766C105.972 146.483 105.755 146.364 105.472 146.375V146.386ZM104.558 141.152C104.841 141.076 104.993 140.891 104.95 140.62C104.906 140.348 104.689 140.196 104.406 140.251C104.145 140.305 104.004 140.479 104.036 140.75C104.08 141.043 104.276 141.152 104.547 141.152H104.558ZM102.579 140.533C102.449 140.783 102.285 140.946 102.318 141.065C102.351 141.185 102.568 141.358 102.688 141.347C102.797 141.337 102.971 141.109 102.971 140.989C102.971 140.87 102.775 140.75 102.59 140.544L102.579 140.533ZM103.667 144.04C103.416 143.91 103.253 143.747 103.134 143.78C103.003 143.812 102.927 144.019 102.829 144.149C102.96 144.247 103.09 144.42 103.221 144.42C103.34 144.42 103.46 144.236 103.667 144.04ZM104.199 147.102C103.938 146.983 103.775 146.842 103.667 146.874C103.547 146.907 103.471 147.113 103.373 147.244C103.503 147.33 103.645 147.504 103.764 147.493C103.884 147.493 103.993 147.298 104.199 147.102ZM101.372 141.239C101.209 141.174 101.1 141.087 101.024 141.098C100.948 141.119 100.894 141.25 100.828 141.326C100.926 141.391 101.013 141.489 101.111 141.499C101.176 141.499 101.252 141.358 101.361 141.239H101.372ZM101.546 144.073C101.459 144.225 101.361 144.333 101.372 144.399C101.394 144.485 101.513 144.54 101.6 144.616C101.676 144.529 101.785 144.442 101.796 144.333C101.796 144.279 101.666 144.192 101.535 144.073H101.546ZM102.449 147.385C102.264 147.32 102.144 147.233 102.057 147.254C101.992 147.265 101.905 147.428 101.916 147.504C101.938 147.58 102.09 147.689 102.155 147.667C102.242 147.645 102.318 147.526 102.449 147.385Z\"\n fill=\"#0E3880\"\n />\n <g filter=\"url(#filter1_d_7224_4716)\">\n <path\n d=\"M115.864 41.1175L76.3892 47.9469C71.6548 48.766 68.4819 53.262 69.3022 57.9891L76.1421 97.404C76.9624 102.131 81.4653 105.299 86.1996 104.48L125.675 97.6508C130.409 96.8317 133.582 92.3357 132.762 87.6086L125.922 48.1936C125.102 43.4665 120.599 40.2984 115.864 41.1175Z\"\n fill=\"#2164F2\"\n />\n </g>\n <path\n d=\"M99.5341 74.8181C100.491 74.5575 101.448 74.3946 102.329 74.0471C103.21 73.6997 104.015 73.1676 104.874 72.7007C104.896 72.7767 104.928 72.907 104.95 73.0373C105.7 77.3589 106.462 81.6805 107.19 86.013C107.266 86.4908 107.299 86.9903 107.255 87.4681C107.136 88.7928 106.255 89.694 104.928 89.9112C103.623 90.1175 102.503 89.5094 101.981 88.2716C101.829 87.9133 101.72 87.5332 101.644 87.1532C100.937 83.1464 100.252 79.1506 99.5559 75.1438C99.5341 75.0244 99.5341 74.8941 99.5233 74.8289L99.5341 74.8181Z\"\n fill=\"white\"\n />\n <path\n d=\"M101.579 71.2348C99.2296 71.6474 97.022 70.1164 96.5979 67.7927C96.1738 65.4473 97.7398 63.1996 100.089 62.787C102.394 62.3852 104.645 63.9597 105.059 66.2834C105.472 68.6179 103.917 70.8222 101.579 71.2348Z\"\n fill=\"white\"\n />\n <path\n d=\"M88.5613 75.5021C88.5178 75.1112 88.4416 74.7203 88.4416 74.3294C88.3329 69.6168 89.5074 65.2843 92.3458 61.4839C94.1184 59.1168 96.326 57.2926 99.2188 56.4239C102.264 55.5118 105.178 55.7073 107.799 57.6726C108.267 58.0201 108.582 58.563 108.963 59.0191C108.995 59.0625 108.974 59.1385 108.985 59.3448C108.626 59.2362 108.332 59.1711 108.049 59.0625C107.31 58.7802 106.581 58.4219 105.82 58.2047C102.09 57.1406 98.7294 57.9767 95.7279 60.3221C92.5415 62.8086 90.6166 66.1422 89.6705 70.0186C89.279 71.6148 89.0833 73.2652 88.8005 74.894C88.7679 75.1003 88.7353 75.2958 88.7026 75.5021C88.6591 75.5021 88.6156 75.5021 88.5721 75.5021H88.5613Z\"\n fill=\"white\"\n />\n <g filter=\"url(#filter2_d_7224_4716)\">\n <path\n d=\"M172.262 -59.7715L132.476 -52.8883C127.741 -52.0693 124.569 -47.5732 125.389 -42.8461L132.283 -3.12089C133.103 1.6062 137.606 4.77429 142.34 3.95523L182.126 -2.92793C186.86 -3.74699 190.033 -8.24304 189.213 -12.9701L182.319 -52.6953C181.499 -57.4224 176.996 -60.5905 172.262 -59.7715Z\"\n fill=\"#3FAED6\"\n />\n </g>\n <g filter=\"url(#filter3_d_7224_4716)\">\n <path\n d=\"M185.259 9.72183L146.17 16.4845C141.435 17.3035 138.262 21.7996 139.083 26.5267L145.856 65.5565C146.676 70.2836 151.179 73.4517 155.913 72.6326L195.003 65.8699C199.737 65.0509 202.91 60.5548 202.09 55.8277L195.317 16.798C194.496 12.0709 189.993 8.90277 185.259 9.72183Z\"\n fill=\"#213D55\"\n />\n </g>\n <path\n d=\"M149.885 43.709L150.908 43.5352C150.853 43.2095 150.679 42.9163 150.407 42.71C149.961 42.3517 149.309 42.2105 148.428 42.3625C147.547 42.5145 147.08 42.9272 146.906 43.1769C146.732 43.4266 146.492 43.8175 146.732 44.4039C146.862 44.6645 147.09 44.8817 147.362 45.0011C147.819 45.2183 148.385 45.2834 148.602 45.316C148.82 45.3486 149.603 45.3811 149.951 45.5549C150.114 45.6309 150.222 45.772 150.266 45.9458C150.277 46.0652 150.407 46.4018 149.853 46.7167C149.722 46.771 149.004 47.0859 148.33 46.8036C148.167 46.7167 147.982 46.5973 147.884 46.1847L146.862 46.3584C146.916 46.7059 147.101 47.0099 147.384 47.2053C147.873 47.5637 148.667 47.7048 149.559 47.542C150.451 47.3791 151.136 46.9339 151.299 46.315C151.364 45.9892 151.375 45.316 150.69 44.9251C150.396 44.7513 149.951 44.6536 149.668 44.6102C149.385 44.5668 148.308 44.5016 148.026 44.3387C147.743 44.1759 147.732 44.0673 147.689 43.9153C147.645 43.7632 147.699 43.3289 148.232 43.1552C148.765 42.9814 149.7 42.7968 149.896 43.6981L149.885 43.709Z\"\n fill=\"#F08B1F\"\n />\n <path\n d=\"M152.049 47.0967L152.996 46.9339L152.245 42.6231L152.104 41.7979L151.158 41.9607L152.049 47.0967Z\"\n fill=\"#F08B1F\"\n />\n <path\n d=\"M152.68 45.5114L153.887 45.3051C153.887 45.3051 154.464 45.2182 154.855 44.9576C155.247 44.7187 155.508 44.3278 155.595 43.8826C155.736 43.1334 155.421 42.4385 155.138 42.1453C154.855 41.8521 154.311 41.4178 153.311 41.5915L151.995 41.8196L152.136 42.6448L153.398 42.4276C153.398 42.4276 154.235 42.2213 154.572 43.0357C154.746 43.5243 154.692 44.0455 154.257 44.3278C154.061 44.469 153.431 44.545 152.506 44.7079L152.702 45.5223L152.68 45.5114Z\"\n fill=\"#F08B1F\"\n />\n <path\n d=\"M156.758 46.2821L157.52 40.8638L156.693 41.0049L155.747 46.4558L156.758 46.2821Z\"\n fill=\"#F08B1F\"\n />\n <path\n d=\"M159.303 45.8479L156.747 40.9942L157.574 40.853L160.304 45.6741L159.303 45.8479Z\"\n fill=\"#F08B1F\"\n />\n <path\n d=\"M158.761 43.8947L156.5 44.2859L156.648 45.1418L158.909 44.7506L158.761 43.8947Z\"\n fill=\"#F08B1F\"\n />\n <path\n d=\"M160.793 45.5875L161.75 45.4246L161 41.1138L160.858 40.2886L159.901 40.4515L160.793 45.5875Z\"\n fill=\"#F08B1F\"\n />\n <path\n d=\"M161.424 44.0021L162.631 43.7958C162.631 43.7958 163.207 43.7089 163.599 43.4483C163.99 43.2095 164.251 42.8186 164.338 42.3734C164.48 41.6241 164.164 40.9292 163.882 40.636C163.599 40.3428 163.055 39.9085 162.055 40.0822L160.739 40.3103L160.88 41.1355L162.142 40.9183C162.142 40.9183 162.979 40.712 163.316 41.5264C163.49 42.015 163.436 42.5362 163.001 42.8186C162.805 42.9597 162.174 43.0357 161.25 43.1986L161.446 44.013L161.424 44.0021Z\"\n fill=\"#F08B1F\"\n />\n <path\n d=\"M163.816 45.0663L164.904 44.8708L163.523 43.0249L162.566 43.3289L163.816 45.0663Z\"\n fill=\"#F08B1F\"\n />\n <path\n d=\"M165.514 39.4914L164.496 39.6675L165.388 44.803L166.406 44.6269L165.514 39.4914Z\"\n fill=\"#F08B1F\"\n />\n <path\n d=\"M167.362 39.1591L168.59 38.9419L165.872 43.8499L165.643 42.536L167.362 39.1591Z\"\n fill=\"#F08B1F\"\n />\n <path\n d=\"M168.351 44.2734L169.482 44.0779L166.796 41.2004L166.328 42.0474L168.351 44.2734Z\"\n fill=\"#F08B1F\"\n />\n <path\n d=\"M171.555 38.4544L170.526 38.6323L171.417 43.7678L172.446 43.5899L171.555 38.4544Z\"\n fill=\"white\"\n />\n <path\n d=\"M175.043 37.8484L174.014 38.0264L174.905 43.1619L175.934 42.9839L175.043 37.8484Z\"\n fill=\"white\"\n />\n <path\n d=\"M175.173 40.342L171.305 41.0112L171.452 41.8564L175.32 41.1872L175.173 40.342Z\"\n fill=\"white\"\n />\n <path\n d=\"M176.824 37.5381L175.796 37.7161L176.687 42.8516L177.716 42.6736L176.824 37.5381Z\"\n fill=\"white\"\n />\n <path\n d=\"M178.454 42.5252L179.411 42.3623L178.672 38.0516L178.519 37.2263L177.562 37.3892L178.454 42.5252Z\"\n fill=\"white\"\n />\n <path\n d=\"M179.085 40.9399L180.292 40.7336C180.292 40.7336 180.868 40.6467 181.26 40.3861C181.651 40.1472 181.912 39.7563 181.999 39.3111C182.141 38.5619 181.825 37.8669 181.543 37.5738C181.26 37.2806 180.716 36.8463 179.716 37.02L178.4 37.248L178.541 38.0733L179.803 37.8561C179.803 37.8561 180.64 37.6498 180.977 38.4642C181.151 38.9528 181.097 39.474 180.662 39.7563C180.466 39.8975 179.835 39.9735 178.911 40.1363L179.107 40.9507L179.085 40.9399Z\"\n fill=\"white\"\n />\n <path\n d=\"M181.477 42.004L182.576 41.8194L181.184 39.9626L180.227 40.2667L181.477 42.004Z\"\n fill=\"white\"\n />\n <path\n d=\"M185.947 35.9343L186.099 36.7704L183.337 37.2482L183.565 38.5838L185.979 38.1712L186.132 38.9964L183.707 39.409L183.935 40.7229L186.697 40.2451L186.839 41.0812L183.054 41.7327L182.162 36.6075L185.947 35.9343Z\"\n fill=\"white\"\n />\n <path\n d=\"M189.72 40.4404C189.72 40.4404 188.872 39.7455 189.111 38.7248C189.351 37.7041 190.155 37.4869 190.514 37.4869C190.514 37.4869 191.058 36.716 191.123 35.7605C191.123 35.7605 192.004 36.2491 192.189 38.019C192.189 38.019 192.863 38.019 193.429 37.7475C193.429 37.7475 193.733 39.1808 192.004 40.2015C192.004 40.2015 195.234 39.7346 194.44 36.1188C194.44 36.1188 193.809 36.4988 193.146 36.564C193.146 36.564 192.407 34.338 190.569 33.415C190.569 33.415 190.71 34.5009 190.025 35.9885C190.025 35.9885 188.644 36.2165 188.263 37.6715C187.883 39.1265 188.85 40.1255 189.72 40.4513V40.4404Z\"\n fill=\"#F08B1F\"\n />\n <g filter=\"url(#filter4_d_7224_4716)\">\n <path\n d=\"M22.5159 -44.4727L-16.7129 -37.6859C-21.4473 -36.8669 -24.6202 -32.3708 -23.7999 -27.6437L-17.0028 11.5252C-16.1824 16.2522 -11.6795 19.4203 -6.94517 18.6013L32.2837 11.8145C37.018 10.9955 40.191 6.49941 39.3707 1.77231L32.5735 -37.3966C31.7532 -42.1237 27.2503 -45.2917 22.5159 -44.4727Z\"\n fill=\"#089247\"\n />\n </g>\n <g filter=\"url(#filter5_d_7224_4716)\">\n <path\n d=\"M49.1231 92.2327L9.64777 99.0621C4.91344 99.8812 1.7405 104.377 2.56081 109.104L9.40067 148.519C10.221 153.246 14.7239 156.414 19.4583 155.595L58.9336 148.766C63.6679 147.947 66.8408 143.451 66.0205 138.724L59.1807 99.3089C58.3604 94.5818 53.8574 91.4137 49.1231 92.2327Z\"\n fill=\"#89C81A\"\n />\n </g>\n <path\n d=\"M54.9793 117.035L54.8161 116.08L48.911 117.101L50.4118 125.733L51.3688 125.57L50.7054 121.737L55.2403 120.955L55.0771 120L50.5423 120.782L50.042 117.904L54.9901 117.046L54.9793 117.035Z\"\n fill=\"white\"\n />\n <path\n d=\"M44.2348 118.892L44.0716 117.937L38.1665 118.957L39.6673 127.59L45.5724 126.569L45.4092 125.613L40.4611 126.471L39.9609 123.594L44.4958 122.812L44.3326 121.856L39.7978 122.638L39.2975 119.761L44.2456 118.903L44.2348 118.892Z\"\n fill=\"white\"\n />\n <path\n d=\"M28.0636 121.694L31.0977 121.172C31.8916 121.031 32.6529 121.563 32.7834 122.356C32.9139 123.149 32.3919 123.909 31.598 124.039L28.5639 124.56L28.0636 121.683V121.694ZM34.2297 128.534L35.4804 128.317L31.6415 125.027L31.772 125.005C33.0987 124.756 33.9687 123.485 33.7186 122.161C33.4794 120.868 32.2396 120 30.9346 120.206L26.9326 120.901L28.4334 129.533L29.4012 129.371L28.7379 125.538L30.3909 125.255L34.2297 128.545V128.534Z\"\n fill=\"white\"\n />\n <path\n d=\"M13.3932 123.919L14.0784 123.116L18.3957 126.819L15.5682 131.748L14.6547 131.227L17.0472 127.058L13.3932 123.93V123.919Z\"\n fill=\"black\"\n />\n <path\n d=\"M22.2237 122.399L21.3102 121.878L18.4827 126.808L22.8001 130.511L23.4852 129.707L19.8312 126.58L22.2237 122.41V122.399Z\"\n fill=\"black\"\n />\n <g filter=\"url(#filter6_d_7224_4716)\">\n <path\n d=\"M199.986 78.1895L160.51 85.0189C155.776 85.838 152.603 90.334 153.423 95.0611L160.263 134.476C161.084 139.203 165.587 142.371 170.321 141.552L209.796 134.723C214.531 133.904 217.703 129.408 216.883 124.681L210.043 85.2656C209.223 80.5385 204.72 77.3705 199.986 78.1895Z\"\n fill=\"white\"\n />\n </g>\n <path\n d=\"M162.359 108.794L163.088 107.491C163.686 107.849 164.436 107.98 165.056 107.871C165.719 107.752 165.98 107.458 165.915 107.057C165.839 106.633 165.426 106.557 164.73 106.416L163.718 106.177C162.881 106.003 162.065 105.482 161.88 104.429C161.663 103.202 162.598 102.018 164.164 101.747C165.045 101.595 165.969 101.769 166.709 102.246L165.991 103.549C165.437 103.289 164.893 103.18 164.425 103.267C163.881 103.365 163.566 103.636 163.642 104.016C163.718 104.44 164.208 104.516 164.904 104.657L165.882 104.874C166.861 105.08 167.514 105.591 167.688 106.622C167.905 107.849 167.057 109.098 165.284 109.402C164.295 109.576 163.251 109.402 162.359 108.805V108.794Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M168.351 105.83C168.025 103.973 169.232 102.659 170.787 102.387C171.472 102.268 172.049 102.409 172.527 102.702L171.896 103.918C171.603 103.777 171.374 103.734 171.124 103.777C170.341 103.908 169.961 104.603 170.124 105.526C170.287 106.448 170.907 106.97 171.603 106.85C171.972 106.785 172.266 106.6 172.516 106.329L173.386 107.306C172.929 107.893 172.244 108.186 171.646 108.294C170.069 108.566 168.667 107.697 168.351 105.83Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M173.332 104.961C173.006 103.104 174.148 101.801 175.572 101.551C176.997 101.302 178.519 102.149 178.835 104.005C179.15 105.862 178.019 107.176 176.594 107.426C175.17 107.675 173.658 106.818 173.343 104.961H173.332ZM177.04 104.32C176.877 103.397 176.475 102.843 175.811 102.952C175.148 103.061 174.952 103.723 175.115 104.657C175.279 105.591 175.692 106.134 176.344 106.025C176.997 105.916 177.203 105.265 177.04 104.32Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M180.009 104.505L179.411 101.03L181.162 100.726L181.727 103.973C181.858 104.755 182.108 104.939 182.554 104.863C182.945 104.798 183.163 104.592 183.391 104.125L182.75 100.444L184.501 100.14L185.468 105.743L184.044 105.993L183.783 105.243H183.739C183.37 105.884 182.902 106.329 182.141 106.459C180.912 106.677 180.238 105.895 179.998 104.494L180.009 104.505Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M186.763 103.397L186.382 101.237L185.621 101.367L185.392 100.064L186.241 99.8576L186.143 98.1094L187.589 97.8596L187.883 99.5752L189.209 99.3472L189.449 100.715L188.122 100.943L188.492 103.082C188.6 103.712 188.938 103.897 189.351 103.832C189.536 103.799 189.721 103.745 189.862 103.658L190.34 104.831C190.069 104.994 189.655 105.178 189.101 105.276C187.698 105.515 186.969 104.722 186.741 103.408L186.763 103.397Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M163.827 114.527L165.589 114.223L166.611 120.098L169.471 119.598L169.721 121.064L165.1 121.867L163.827 114.527Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M169.906 118.154C169.591 116.341 170.711 114.994 172.049 114.766C173.68 114.484 174.669 115.515 174.93 117.046C174.985 117.361 175.007 117.665 174.996 117.828L171.69 118.404C171.983 119.131 172.571 119.37 173.277 119.24C173.68 119.175 174.071 118.979 174.43 118.686L175.181 119.641C174.669 120.163 173.93 120.51 173.267 120.619C171.668 120.901 170.232 120.043 169.906 118.165V118.154ZM173.375 116.894C173.277 116.34 172.962 115.971 172.331 116.08C171.831 116.167 171.472 116.558 171.472 117.231L173.386 116.905L173.375 116.894Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M175.942 118.382C175.735 117.198 176.54 116.395 178.715 115.787C178.585 115.331 178.302 115.103 177.725 115.2C177.269 115.276 176.844 115.515 176.344 115.928L175.539 114.907C176.192 114.332 176.953 113.908 177.834 113.756C179.28 113.506 180.237 114.169 180.542 115.928L181.097 119.109L179.672 119.359L179.454 118.816H179.411C179.02 119.316 178.563 119.696 177.932 119.804C176.91 119.978 176.127 119.326 175.964 118.393L175.942 118.382ZM179.052 117.752L178.9 116.862C177.812 117.198 177.519 117.567 177.595 117.958C177.649 118.284 177.888 118.404 178.28 118.338C178.628 118.273 178.835 118.067 179.063 117.752H179.052Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M181.477 113.268L182.902 113.018L183.195 113.963H183.239C183.511 113.126 184.076 112.67 184.642 112.573C184.968 112.518 185.164 112.518 185.338 112.573L185.262 114.104C185.055 114.104 184.925 114.093 184.674 114.136C184.261 114.212 183.794 114.571 183.63 115.363L184.185 118.567L182.445 118.871L181.477 113.268Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M186.056 112.475L187.48 112.225L187.73 112.898H187.774C188.155 112.356 188.655 111.878 189.427 111.747C190.645 111.541 191.319 112.312 191.558 113.713L192.157 117.187L190.406 117.492L189.84 114.245C189.71 113.463 189.46 113.268 189.014 113.344C188.622 113.409 188.416 113.648 188.122 114.017L188.774 117.774L187.034 118.078L186.067 112.475H186.056Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M192.146 109.673C192.048 109.13 192.396 108.707 192.972 108.609C193.549 108.511 194.016 108.794 194.114 109.326C194.212 109.858 193.864 110.303 193.288 110.401C192.711 110.499 192.243 110.216 192.146 109.673ZM192.548 111.346L194.288 111.041L195.256 116.644L193.516 116.948L192.548 111.346Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M195.724 110.803L197.148 110.553L197.398 111.226H197.442C197.822 110.683 198.323 110.205 199.095 110.075C200.313 109.869 200.987 110.64 201.226 112.04L201.824 115.515L200.074 115.819L199.508 112.573C199.378 111.791 199.127 111.595 198.682 111.671C198.29 111.736 198.083 111.975 197.79 112.344L198.442 116.101L196.702 116.406L195.734 110.803H195.724Z\"\n fill=\"#084D6D\"\n />\n <path\n d=\"M203.021 116.286C202.945 115.819 203.151 115.407 203.619 115.048V115.005C203.282 114.853 203.021 114.592 202.934 114.136C202.868 113.745 203.053 113.289 203.369 112.964V112.92C202.923 112.714 202.466 112.258 202.357 111.606C202.118 110.238 203.129 109.38 204.358 109.174C204.674 109.12 204.989 109.109 205.261 109.152L207.327 108.794L207.545 110.054L206.664 110.206C206.783 110.347 206.903 110.596 206.957 110.868C207.186 112.171 206.294 112.92 205.043 113.137C204.848 113.17 204.619 113.181 204.358 113.148C204.249 113.278 204.217 113.387 204.239 113.561C204.282 113.832 204.532 113.919 205.13 113.811L206.022 113.658C207.414 113.42 208.262 113.702 208.436 114.712C208.643 115.895 207.556 116.949 205.598 117.285C204.304 117.513 203.173 117.285 202.999 116.286H203.021ZM206.827 115.309C206.773 114.972 206.468 114.951 205.935 115.048L205.391 115.146C204.989 115.211 204.772 115.233 204.587 115.211C204.434 115.396 204.369 115.57 204.402 115.754C204.467 116.156 204.978 116.286 205.707 116.156C206.435 116.026 206.892 115.667 206.827 115.309ZM205.413 111.074C205.315 110.499 204.967 110.26 204.554 110.325C204.141 110.39 203.891 110.738 203.989 111.313C204.086 111.889 204.445 112.149 204.859 112.084C205.272 112.019 205.522 111.661 205.413 111.074Z\"\n fill=\"#084D6D\"\n />\n <g filter=\"url(#filter7_d_7224_4716)\">\n <path\n d=\"M35.8531 23.1502L-3.62225 29.9796C-8.35658 30.7987 -11.5295 35.2947 -10.7092 40.0218L-3.86935 79.4368C-3.04903 84.1639 1.4539 87.3319 6.18823 86.5129L45.6635 79.6835C50.3979 78.8644 53.5708 74.3684 52.7505 69.6413L45.9106 30.2263C45.0903 25.4992 40.5874 22.3311 35.8531 23.1502Z\"\n fill=\"white\"\n />\n </g>\n <path\n d=\"M9.65223 59.1059C8.52123 59.3013 7.83611 58.4761 7.68386 57.6183C7.53161 56.7605 7.93398 55.7506 9.06498 55.5552C9.94586 55.4032 10.8267 55.9895 11.0116 57.0645C11.1639 58.096 10.5114 58.943 9.65223 59.095V59.1059ZM10.6419 55.4575C10.2504 55.1534 9.69573 54.7951 8.86923 54.9363C7.50986 55.1751 6.66161 56.3696 6.91173 57.7812C7.17273 59.2796 8.44511 60.018 9.68486 59.8117C10.457 59.6814 10.9572 59.2253 11.2074 58.7476H11.24L11.3487 59.3556L12.0991 59.2253L11.3161 54.6865L10.5657 54.8168L10.6745 55.4575H10.6419Z\"\n fill=\"#73C41D\"\n />\n <path\n d=\"M17.1233 53.5139C16.3186 53.6551 15.851 54.2197 15.7096 54.7301C15.4268 54.2414 14.7743 53.9265 14.0457 54.046C13.4693 54.1437 13.0452 54.5346 12.8168 55.0015H12.7842L12.6863 54.426L11.936 54.5563L12.719 59.0951L13.4693 58.9648L13.0343 56.4457C12.8712 55.501 13.2736 54.8712 14.024 54.7409C14.6873 54.6215 15.2093 55.1318 15.3398 55.881L15.8075 58.5956L16.5796 58.4653L16.1337 55.9245C15.9488 54.8712 16.4817 54.3283 17.1233 54.2197C17.8955 54.0894 18.3413 54.6323 18.461 55.3598L18.9286 58.0744L19.679 57.9441L19.2222 55.2947C18.983 53.9374 18.1456 53.3728 17.1233 53.5465\"\n fill=\"#73C41D\"\n />\n <path\n d=\"M27.9657 55.9352C27.0849 56.0873 26.1822 55.5009 25.9974 54.4476C25.8234 53.4487 26.3889 52.5909 27.3567 52.4171C28.3246 52.2434 29.1511 52.9058 29.3251 53.8722C29.4991 54.8385 28.9445 55.7615 27.9657 55.9244M27.2371 51.7439C25.856 51.9828 24.9751 53.1881 25.2252 54.5997C25.4754 56.0113 26.7042 56.8473 28.0854 56.6085C29.4665 56.3696 30.3256 55.0774 30.0972 53.7527C29.8471 52.3411 28.6509 51.4942 27.2371 51.7439Z\"\n fill=\"#73C41D\"\n />\n <path\n d=\"M33.338 55.0017C32.4571 55.1537 31.5545 54.5673 31.3696 53.5141C31.1956 52.5151 31.7611 51.6573 32.729 51.4835C33.6969 51.3098 34.5234 51.9722 34.6974 52.9386C34.8387 53.9375 34.2841 54.8279 33.338 54.9908M32.6094 50.8103C31.2282 51.0492 30.3474 52.2545 30.5975 53.6661C30.8476 55.0777 32.0765 55.9137 33.4576 55.6749C34.8387 55.436 35.6979 54.1438 35.4695 52.8191C35.2194 51.4075 34.0231 50.5606 32.6094 50.8103Z\"\n fill=\"#73C41D\"\n />\n <path\n d=\"M38.9821 51.8853L36.5461 52.3087L36.209 50.3759L35.6544 50.4737L36.4482 55.0125L37.0029 54.9147L36.6331 52.8082L39.0691 52.3847L39.4389 54.4913L39.9935 54.3935L39.1996 49.8547L38.645 49.9525L38.9821 51.8853Z\"\n fill=\"#73C41D\"\n />\n <path\n d=\"M40.9614 51.744L40.6786 50.1152L41.5051 49.9741C42.0815 49.8763 42.473 50.1152 42.56 50.6473C42.6361 51.0925 42.3969 51.5051 41.7879 51.6028L40.9614 51.744ZM42.2881 51.972C42.8536 51.7657 43.2342 51.1793 43.1255 50.5496C43.0167 49.9198 42.4839 49.29 41.342 49.4854L40.037 49.7135L40.82 54.2523L41.3746 54.1545L41.0484 52.276L41.6574 52.1675L43.3647 53.8071L44.0607 53.6876L42.2772 51.972H42.2881Z\"\n fill=\"#73C41D\"\n />\n <path\n d=\"M43.4409 49.1271L44.1586 48.9968L44.1804 49.1163L43.8759 49.1597L44.0281 50.0501L43.8867 50.0718L43.7345 49.1923L43.4626 49.2357L43.4409 49.1271Z\"\n fill=\"#73C41D\"\n />\n <path\n d=\"M44.9198 49.5832L45.1047 48.834L45.2678 48.8123L45.4962 49.8004L45.3548 49.8221L45.1917 49.0186L45.0068 49.7352L44.8872 49.7569L44.474 49.1489L44.5827 49.9524L44.4413 49.9741L44.3217 48.9751L44.4957 48.9426L44.9198 49.5832Z\"\n fill=\"#73C41D\"\n />\n <path\n d=\"M4.12773 60.1159C3.18161 60.2788 2.25723 59.6707 2.08323 58.6717C1.90923 57.6728 2.46385 56.7281 3.54048 56.5435C4.6171 56.3589 5.4436 57.1298 5.59585 58.0419C5.76985 59.0409 5.21523 59.9313 4.12773 60.1159ZM3.46435 55.816C2.58348 55.968 2.15935 56.3589 1.88748 56.7498L1.82223 56.8475L1.31111 53.9158L0.56073 54.0461L1.38723 58.8346C1.63736 60.3005 2.94235 61.0389 4.24735 60.8217C5.68285 60.572 6.5746 59.2798 6.33535 57.8682C6.12873 56.5326 4.76935 55.5988 3.47523 55.8268\"\n fill=\"#73C41D\"\n />\n <path\n d=\"M22.5935 56.9234C21.6473 57.0863 20.723 56.4782 20.549 55.4792C20.375 54.4803 20.9296 53.5356 22.0062 53.351C23.0828 53.1664 23.9093 53.9373 24.0616 54.8495C24.203 55.8484 23.681 56.7388 22.5935 56.9234ZM21.9301 52.6235C21.0492 52.7755 20.6251 53.1664 20.3532 53.5573L20.288 53.655L19.853 51.1685L19.1026 51.2988L19.853 55.6421C20.1031 57.108 21.4081 57.8464 22.7131 57.6292C24.1486 57.3794 25.0403 56.0873 24.8011 54.6757C24.5727 53.351 23.2351 52.4063 21.941 52.6343\"\n fill=\"#73C41D\"\n />\n <path\n d=\"M0.756475 57.2818C0.756475 57.2818 0.41935 57.2818 0.125726 57.2818C-0.18965 57.2818 -0.331024 57.2818 -0.7769 57.1841C-1.19015 57.0863 -1.6469 56.7606 -2.06015 56.3805C-2.49515 56.0005 -3.45215 55.4576 -3.45215 55.4576C-3.45215 55.4576 -3.20202 55.4467 -2.9084 55.4576C-2.68002 55.4793 -2.09277 55.5444 -1.48377 55.7507C-1.33152 55.7833 -1.26627 55.8268 -1.11402 55.8919C-0.896524 55.9679 -0.668148 56.1308 -0.450648 56.2937C-0.189648 56.4783 0.0387259 56.6411 0.234476 56.804C-0.0156491 56.5108 -0.700773 55.3707 -1.78827 54.5346C-1.88615 54.4369 -1.09227 54.7844 -0.863899 54.9472C-0.200524 55.4576 -0.0591495 55.7725 0.223601 56.2937L0.745602 57.3144L0.756475 57.2818Z\"\n fill=\"#73C41D\"\n />\n <g filter=\"url(#filter8_d_7224_4716)\">\n <path\n d=\"M101.266 -26.4384L61.7908 -19.609C57.0564 -18.79 53.8835 -14.2939 54.7038 -9.56681L61.5437 29.8481C62.364 34.5752 66.8669 37.7433 71.6013 36.9243L111.077 30.0949C115.811 29.2758 118.984 24.7798 118.164 20.0527L111.324 -19.3623C110.503 -24.0894 106 -27.2575 101.266 -26.4384Z\"\n fill=\"white\"\n />\n </g>\n <path\n d=\"M64.7015 12.1978C64.1251 12.0132 63.6357 11.644 63.2334 11.1662C62.8636 10.6885 62.6026 10.1238 62.4939 9.49406C62.3851 8.86427 62.4395 8.2562 62.6352 7.70242C62.8201 7.12693 63.1899 6.6383 63.6684 6.23655C64.1795 5.82393 64.7776 5.56333 65.3975 5.45474C66.137 5.29187 66.8982 5.42217 67.5942 5.71535L67.094 6.89891C66.6372 6.66002 66.137 6.55144 65.6041 6.63831C65.2017 6.70346 64.8102 6.87719 64.5057 7.14865C64.223 7.38754 63.9946 7.74586 63.9076 8.11505C63.7771 8.49509 63.7554 8.90771 63.8532 9.30947C63.9185 9.71123 64.0816 10.0695 64.2991 10.3844C64.7994 11.0359 65.5932 11.3508 66.398 11.2097C66.8982 11.1228 67.3659 10.8514 67.7139 10.4713L68.573 11.3508C68.0292 11.8938 67.3441 12.2412 66.5937 12.3715C65.963 12.4475 65.3105 12.4041 64.7015 12.1869V12.1978Z\"\n fill=\"#3067DB\"\n />\n <path\n d=\"M70.7263 5.82399L71.0199 7.53961L73.4233 7.12699L73.5973 8.12596L71.1939 8.53858L71.4875 10.2542L74.3911 9.75471L74.576 10.8188L70.3674 11.5463L69.2364 4.99875L73.4233 4.27124L73.6081 5.33536L70.7371 5.83484L70.7263 5.82399Z\"\n fill=\"#3067DB\"\n />\n <path\n d=\"M77.7406 7.52882L77.3382 7.59397L77.795 10.2434L76.5117 10.4606L75.3807 3.91299L77.7189 3.51122C78.0886 3.44607 78.5127 3.43522 78.8825 3.53294C79.2522 3.63067 79.5676 3.79355 79.8395 4.07586C80.1114 4.35818 80.3071 4.70565 80.3397 5.08569C80.4485 5.52003 80.3615 5.97607 80.1114 6.34526C79.8612 6.71444 79.4915 7.02934 79.0674 7.20307L81.6991 9.5702L80.144 9.84165L77.7515 7.52882H77.7406ZM77.1642 6.63844L77.9472 6.50814C78.3496 6.44299 78.6215 6.29097 78.8064 6.10637C78.9912 5.92178 79.0782 5.6069 79.0021 5.36801C78.9586 5.08569 78.8064 4.82509 78.5671 4.70565C78.317 4.55363 77.9907 4.54277 77.5884 4.61878L76.8706 4.73822L77.1642 6.64929V6.63844Z\"\n fill=\"#3067DB\"\n />\n <path\n d=\"M84.3526 9.114L83.0694 9.33117L81.9384 2.78357L83.2216 2.56641L84.3526 9.114Z\"\n fill=\"#3067DB\"\n />\n <path\n d=\"M89.5618 1.91498C90.1055 2.07786 90.6167 2.4036 90.9755 2.85965C91.3344 3.3157 91.6063 3.86948 91.6715 4.47755C91.7694 5.07476 91.7477 5.68283 91.5628 6.22575C91.3779 6.76866 90.9973 7.2573 90.5514 7.61562C90.0077 7.99567 89.3769 8.26712 88.7244 8.38657L86.6038 8.75575L85.4728 2.20815L87.5934 1.83897C88.2459 1.69781 88.9201 1.70867 89.5726 1.91498H89.5618ZM90.0185 6.4212C90.3557 5.976 90.4753 5.3788 90.3557 4.66215C90.236 3.94549 89.9315 3.48944 89.453 3.15283C88.9854 2.8488 88.3547 2.72935 87.6043 2.85965L86.9192 2.9791L87.6913 7.40931L88.3764 7.28987C89.1594 7.18129 89.6923 6.89896 90.0294 6.4212H90.0185Z\"\n fill=\"#3067DB\"\n />\n <path\n d=\"M95.2711 7.22485L93.9879 7.44201L92.8569 0.894418L94.1401 0.677246L95.2711 7.22485Z\"\n fill=\"#3067DB\"\n />\n <path\n d=\"M101.035 4.68396L98.3814 5.14001L98.1095 6.72534L96.7067 6.96422L98.1639 -0.028567L99.4798 -0.256592L103.21 5.83495L101.807 6.07383L101.046 4.66225L101.035 4.68396ZM100.491 3.75014L99.0557 1.20929L98.5554 4.08676L100.491 3.75014Z\"\n fill=\"#3067DB\"\n />\n <path\n d=\"M109.311 -1.95068L110.442 4.59691L109.256 4.80322L105.254 0.839917L106.037 5.357L104.787 5.57417L103.656 -0.973429L104.841 -1.17974L108.811 2.78357L108.028 -1.73352L109.311 -1.95068Z\"\n fill=\"#3067DB\"\n />\n </g>\n <defs>\n <filter\n id=\"filter0_d_7224_4716\"\n x=\"76.2388\"\n y=\"104.234\"\n width=\"75.0391\"\n height=\"74.9429\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"3\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_7224_4716\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter1_d_7224_4716\"\n x=\"63.173\"\n y=\"34.9885\"\n width=\"75.718\"\n height=\"75.6206\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"3\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_7224_4716\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter2_d_7224_4716\"\n x=\"119.26\"\n y=\"-65.9004\"\n width=\"76.0826\"\n height=\"75.9846\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"3\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_7224_4716\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter3_d_7224_4716\"\n x=\"132.953\"\n y=\"3.59277\"\n width=\"75.2654\"\n height=\"75.1687\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"3\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_7224_4716\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter4_d_7224_4716\"\n x=\"-29.9291\"\n y=\"-50.6016\"\n width=\"75.4289\"\n height=\"75.3318\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"3\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_7224_4716\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter5_d_7224_4716\"\n x=\"-3.56836\"\n y=\"86.1038\"\n width=\"75.718\"\n height=\"75.6206\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"3\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_7224_4716\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter6_d_7224_4716\"\n x=\"147.294\"\n y=\"72.0605\"\n width=\"75.718\"\n height=\"75.6206\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"3\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_7224_4716\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter7_d_7224_4716\"\n x=\"-16.8384\"\n y=\"17.0212\"\n width=\"75.718\"\n height=\"75.6206\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"3\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_7224_4716\"\n result=\"shape\"\n />\n </filter>\n <filter\n id=\"filter8_d_7224_4716\"\n x=\"48.5746\"\n y=\"-32.5674\"\n width=\"75.718\"\n height=\"75.6206\"\n filterUnits=\"userSpaceOnUse\"\n colorInterpolationFilters=\"sRGB\"\n >\n <feFlood floodOpacity=\"0\" result=\"BackgroundImageFix\" />\n <feColorMatrix\n in=\"SourceAlpha\"\n type=\"matrix\"\n values=\"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n result=\"hardAlpha\"\n />\n <feOffset />\n <feGaussianBlur stdDeviation=\"3\" />\n <feColorMatrix\n type=\"matrix\"\n values=\"0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0 0.509804 0 0 0 0.25 0\"\n />\n <feBlend mode=\"normal\" in2=\"BackgroundImageFix\" result=\"effect1_dropShadow_7224_4716\" />\n <feBlend\n mode=\"normal\"\n in=\"SourceGraphic\"\n in2=\"effect1_dropShadow_7224_4716\"\n result=\"shape\"\n />\n </filter>\n <clipPath id=\"clip0_7224_4716\">\n <rect width=\"203\" height=\"131\" rx=\"3\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n );\n}\n","import React from 'react';\n\nexport default function EventCircle() {\n return (\n <svg width=\"17\" height=\"17\" viewBox=\"0 0 17 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <circle cx=\"8.5\" cy=\"8.5\" r=\"8.5\" fill=\"#EDF2F5\" />\n <circle cx=\"8.5\" cy=\"8.5\" r=\"5.5\" fill=\"#D6DEE2\" />\n <circle cx=\"8.5\" cy=\"8.5\" r=\"2.5\" fill=\"#084D6D\" />\n </svg>\n );\n}\n","import { Box } from '@mui/material';\nimport React from 'react';\nimport dashboardStyles from '../styles';\n\nfunction KpiBanner() {\n return (\n <Box\n id=\"dashboard-marketplace\"\n sx={{ ...dashboardStyles.section, ...dashboardStyles.kpiSection, ...styles.section }}\n onClick={() => window.open('https://scouttalenthq.com/marketplace', '_blank')}\n ></Box>\n );\n}\n\nconst styles = {\n section: {\n minWidth: '196px',\n padding: 0,\n backgroundImage: `url('/images/dashboard/marketplace_tiles.svg')`,\n backgroundSize: 'cover',\n backgroundPosition: 'right',\n overflow: 'hidden',\n transition: 'box-shadow 0.3s ease-in-out',\n '&:hover': {\n boxShadow: '0px 10px 15px -3px rgba(0,0,0,0.1)',\n cursor: 'pointer'\n }\n }\n};\n\nexport default KpiBanner;\n","import { Box, Skeleton } from '@mui/material';\nimport React from 'react';\nimport dashboardStyles from '../styles';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { useQuery } from '@tanstack/react-query';\nimport InsertDriveFileRoundedIcon from '@mui/icons-material/InsertDriveFileRounded';\nimport ThumbUpAltRoundedIcon from '@mui/icons-material/ThumbUpAltRounded';\nimport CalendarMonthRoundedIcon from '@mui/icons-material/CalendarMonthRounded';\nimport { IKpiItems } from '../types';\nimport Api from '../API';\n\ninterface IProps {\n onClick?: () => void;\n type: keyof IKpiItems;\n}\n\nfunction KpiItem({ onClick, type }: IProps) {\n const { icon, iconColor, title, link } = getDetails(type);\n const { isLoading, isSuccess, data } = useQuery({\n queryKey: ['kpiDashboard'],\n queryFn: Api.getKpiItems\n });\n\n function handleRedirect() {\n window.location.href = `/admin/${link}`;\n }\n\n return (\n <Box\n id={`kpi-${type}`}\n onClick={onClick || handleRedirect}\n sx={{ ...dashboardStyles.section, ...dashboardStyles.kpiSection, ...styles.section }}\n >\n <Box display=\"flex\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Box sx={{ backgroundColor: `${iconColor}33`, borderRadius: '6px' }} p={1}>\n {icon}\n </Box>\n {isLoading && <Skeleton animation=\"wave\" width={30} height={30} />}\n {isSuccess && !!data[type]?.fluctuation_daily && (\n <Box\n sx={{\n ...styles.fluctuation,\n color:\n data[type]?.fluctuation_daily > 0\n ? theme.palette.success.main\n : theme.palette.error.main\n }}\n >\n {data[type]?.fluctuation_daily > 0 && '+'}\n {data[type]?.fluctuation_daily}\n </Box>\n )}\n </Box>\n <Box>\n <Box style={styles.value}>\n {isLoading && <Skeleton animation=\"wave\" width={70} height={60} />}\n {isSuccess &&\n (data[type]?.value.toLocaleString() ? data[type]?.value.toLocaleString() : 0)}\n </Box>\n <Box style={styles.title}>{title}</Box>\n </Box>\n </Box>\n );\n}\n\nfunction getDetails(type: keyof IKpiItems): {\n title: string;\n icon: JSX.Element;\n iconColor: string;\n link: string;\n} {\n if (type === 'applications')\n return {\n title: 'Today’s new applications',\n icon: <InsertDriveFileRoundedIcon sx={{ color: '#F478FF' }} fontSize=\"small\" />,\n iconColor: '#F478FF',\n link: 'candidates'\n };\n if (type === 'approvals')\n return {\n title: 'Pending approvals',\n icon: <ThumbUpAltRoundedIcon sx={{ color: '#91CAFF' }} fontSize=\"small\" />,\n iconColor: '#91CAFF',\n link: 'requisitions'\n };\n return {\n title: `Today's Events`,\n icon: <CalendarMonthRoundedIcon sx={{ color: '#FFCC68' }} fontSize=\"small\" />,\n iconColor: '#FFCC68',\n link: 'calendar/events'\n };\n}\n\nconst styles = {\n section: {\n transition: 'box-shadow 0.3s ease-in-out',\n justifyContent: 'space-between',\n '&:hover': {\n boxShadow: '0px 10px 15px -3px rgba(0,0,0,0.05)',\n cursor: 'pointer'\n }\n },\n value: {\n fontSize: '36px',\n fontWeight: 'bold',\n color: '#333'\n },\n title: {\n color: '#333',\n fontWeight: '600',\n fontSize: '16px'\n },\n fluctuation: {\n fontWeight: 'bold',\n fontSize: '20px'\n }\n};\n\nexport default KpiItem;\n","import { Skeleton } from '@mui/material';\nimport React from 'react';\n\nexport default function Loader() {\n return <Skeleton animation=\"wave\" width=\"100%\" height={50} />;\n}\n","import { Box } from '@mui/material';\nimport React, { useState } from 'react';\nimport dashboardStyles from '../styles';\nimport CurrentJobs from '../../Jobs/JobsTable/CurrentJobs';\nimport { jobsConfig } from '../../Jobs/config';\nimport InfoIcon from '@mui/icons-material/Info';\n\ninterface IProps {\n userPermissions?: Record<string, Record<string, boolean>>;\n setSnackbar: React.Dispatch<\n React.SetStateAction<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>\n >;\n}\n\nfunction NewApplicants({ userPermissions, setSnackbar }: IProps) {\n const [page, setPage] = useState(1);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [order, setOrder] = useState('desc');\n const [orderBy, setOrderBy] = useState('created_at');\n\n return (\n <Box id=\"dashboard-new-applicants\" sx={{ ...dashboardStyles.section, flexBasis: '100%' }}>\n <Box sx={dashboardStyles.titleContainer}>\n <Box sx={dashboardStyles.sectionTitle}>Jobs with new Applications</Box>\n <Box sx={dashboardStyles.noticeContainer}>\n <InfoIcon sx={dashboardStyles.infoIcon} />\n <Box sx={{ marginLeft: 1 }}>\n New Applications are displayed in brackets in the 'Applications' column\n </Box>\n </Box>\n </Box>\n <Box ml={5} mr={5}>\n <CurrentJobs\n apiKey={''}\n sortableColumns={jobsConfig.sortableColumnsDefaults.map((column) => {\n switch (column.id) {\n case 'expires_at':\n return { ...column, enabled: true };\n case 'notes':\n return { ...column, enabled: true };\n case 'assigned_user':\n return { ...column, enabled: true };\n case 'recruitment_ad_user':\n return { ...column, enabled: true };\n default:\n return column;\n }\n })}\n rowsPerPage={rowsPerPage}\n setRowsPerPage={setRowsPerPage}\n search={''}\n order={order}\n setOrder={setOrder}\n orderBy={orderBy}\n setOrderBy={setOrderBy}\n filters={filters}\n fetchUISwitch={false}\n page={page}\n setPage={setPage}\n filtersApplied={false}\n userPermissions={userPermissions}\n setSnackbarState={setSnackbar}\n density=\"Default\"\n jobStatusFeature={true}\n showNewApplicants\n hideArrows\n />\n </Box>\n </Box>\n );\n}\n\nconst filters = {\n state: [],\n status: [],\n entity: [],\n location: [],\n assigned_user: [],\n recruitment_ad_user: [],\n published: [],\n expiry: [],\n pinned: true\n};\n\nexport default NewApplicants;\n","import { Box } from '@mui/material';\nimport React, { useState } from 'react';\nimport dashboardStyles from '../styles';\nimport CurrentJobs from '../../Jobs/JobsTable/CurrentJobs';\nimport { jobsConfig } from '../../Jobs/config';\n\ninterface IProps {\n userPermissions?: Record<string, Record<string, boolean>>;\n setSnackbar: React.Dispatch<\n React.SetStateAction<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>\n >;\n}\n\nfunction PinnedJobs({ userPermissions, setSnackbar }: IProps) {\n const [page, setPage] = useState(1);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [order, setOrder] = useState('desc');\n const [orderBy, setOrderBy] = useState('created_at');\n\n return (\n <Box id=\"dashboard-pinned-jobs\" sx={{ ...dashboardStyles.section, flexBasis: '100%' }}>\n <Box sx={dashboardStyles.sectionTitle}>Pinned Jobs</Box>\n <Box ml={5} mr={5}>\n <CurrentJobs\n apiKey={''}\n sortableColumns={jobsConfig.sortableColumnsDefaults.map((column) => {\n switch (column.id) {\n case 'expires_at':\n return { ...column, enabled: true };\n case 'notes':\n return { ...column, enabled: true };\n default:\n return column;\n }\n })}\n rowsPerPage={rowsPerPage}\n setRowsPerPage={setRowsPerPage}\n search={''}\n order={order}\n setOrder={setOrder}\n orderBy={orderBy}\n setOrderBy={setOrderBy}\n filters={filters}\n fetchUISwitch={false}\n page={page}\n setPage={setPage}\n filtersApplied={false}\n userPermissions={userPermissions}\n setSnackbarState={setSnackbar}\n density=\"Default\"\n jobStatusFeature={true}\n isDashboard={true}\n hideArrows\n />\n </Box>\n </Box>\n );\n}\n\nconst filters = {\n state: [],\n status: [],\n entity: [],\n location: [],\n assigned_user: [],\n recruitment_ad_user: [],\n published: [],\n expiry: [],\n pinned: true\n};\n\nexport default PinnedJobs;\n","import { Box, Link } from '@mui/material';\nimport React from 'react';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\nimport { ITask } from '../../../types';\nimport {\n Task as TaskIcon,\n AccessTime as AccessTimeIcon,\n CheckCircleOutline as CheckCircleOutlineIcon\n} from '@mui/icons-material';\nimport dayjs from 'dayjs';\n\ninterface IProps {\n data: ITask;\n handleCompleteTask: (id: number, completed: boolean) => void;\n}\n\nexport function TaskItem({ data, handleCompleteTask }: IProps) {\n const isCompleted = dayjs().isAfter(dayjs(data?.completed_at));\n\n function getColor(priority: IProps['data']['priority']) {\n if (priority === 'High') {\n return theme.palette.error.main;\n }\n if (priority === 'Normal') {\n return '#E6A052';\n }\n if (priority === 'Low') {\n return theme.palette.success.main;\n }\n return '';\n }\n\n return (\n <Box display=\"flex\" flexDirection=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Box flexBasis=\"40%\" display=\"flex\" flexDirection=\"row\">\n <Box mr={2}>\n <Box sx={{ ...styles.icon, backgroundColor: `${getColor(data.priority)}33` }}>\n <TaskIcon sx={{ color: getColor(data.priority) }} fontSize=\"small\" />\n </Box>\n </Box>\n <Box>\n <Box>\n <Link href={`/admin/tasks/${data.id}`} target=\"_blank\" sx={styles.subject}>\n {data.subject}\n </Link>\n </Box>\n <Box mt=\"3px\">\n <Box sx={styles.description}>{data.taskable_type}</Box>\n </Box>\n </Box>\n </Box>\n <Box ml={2} gap={1} display=\"flex\" flexDirection=\"row\" flexShrink={0}>\n <Box\n sx={{\n ...styles.tag,\n ...styles.priorityTag,\n color: getColor(data.priority),\n backgroundColor: `${getColor(data.priority)}33`\n }}\n >\n {data.priority} Priority\n </Box>\n <Box sx={{ ...styles.tag, ...styles.dateTag }}>\n <AccessTimeIcon sx={{ fontSize: '10px', color: '#666', marginRight: '4px' }} />\n {dayjs(data.due_at).format('ddd, DD MMM YYYY, h:mma')}\n </Box>\n <Box sx={styles.checkTag} onClick={() => handleCompleteTask(data.id, !isCompleted)}>\n <CheckCircleOutlineIcon\n sx={{ color: isCompleted ? theme.palette.success.main : '#DDD' }}\n />\n </Box>\n </Box>\n </Box>\n );\n}\n\nconst styles = {\n icon: {\n borderRadius: '6px',\n padding: '6px'\n },\n subject: {\n fontSize: '15px',\n fontWeight: '700',\n color: '#333 !important'\n },\n description: {\n color: '#666'\n },\n tag: {\n padding: '0 10px',\n borderRadius: '14px',\n fontSize: '9px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexShrink: 0\n },\n priorityTag: {\n textTransform: 'uppercase',\n fontWeight: '700',\n userSelect: 'none'\n },\n dateTag: {\n backgroundColor: '#F3F3F3',\n color: '#666'\n },\n checkTag: {\n '&:hover': {\n cursor: 'pointer',\n '& svg': {\n opacity: 0.7\n }\n }\n }\n};\n","import { Box, Button, CircularProgress } from '@mui/material';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport dashboardStyles from '../../styles';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport { useInfiniteQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../API';\nimport AddTasks from '../../../Job/ActionModals/AddTask/AddTasks';\nimport StartWorkFlow from '../../../Job/ActionModals/StartWorkflow/StartWorkFlow';\nimport { TaskItem } from './TaskItem';\nimport Loader from '../Loader';\nimport { NoTasksSVG } from '../../../Components/Icons';\nimport { styles } from './styles';\nimport { EmptyState } from '../../../Components/CustomUIElements/EmptyState';\n\nconst STATUSES = ['Pending', 'Completed'];\n\ninterface IProps {\n setSnackbar: React.Dispatch<\n React.SetStateAction<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>\n >;\n}\n\nfunction TasksDashboard({ setSnackbar }: IProps) {\n const tabRef = useRef<HTMLDivElement>();\n const [tab, setTab] = useState(0);\n const [tabDimensions, setTabDimensions] = useState<{ width: number; offset: number }[]>([]);\n const queryClient = useQueryClient();\n\n const { isLoading, isSuccess, data, fetchNextPage, isFetchingNextPage, hasNextPage, refetch } =\n useInfiniteQuery({\n queryKey: ['getTasks', tab],\n queryFn: ({ queryKey, pageParam = 1 }) =>\n Api.getTasks({ to_do: queryKey[1] === 0, page: pageParam }),\n getNextPageParam: (lastPage) => lastPage.nextPage || undefined\n });\n\n const { mutate } = useMutation({\n mutationFn: ({ id, completed }: { id: string; completed: boolean }) =>\n Api.completeTask(id, completed),\n onSuccess: (data) => {\n queryClient.invalidateQueries({ queryKey: ['getTasks'] });\n setSnackbar({\n message: data?.message,\n state: 'success'\n });\n },\n onError: () => {\n setSnackbar({\n message: 'Could not update. Please try again.',\n state: 'error'\n });\n }\n });\n\n function handleScroll(e: React.UIEvent<HTMLDivElement>) {\n if (!e) return;\n const { scrollTop, scrollHeight, clientHeight } = e.currentTarget;\n if (scrollTop + clientHeight >= scrollHeight) {\n if (!isFetchingNextPage && hasNextPage) {\n fetchNextPage();\n }\n }\n }\n\n useEffect(() => {\n if (!tabRef.current) return;\n setTabDimensions(\n Array.from(tabRef.current.childNodes as NodeListOf<HTMLDivElement>).map((child) => ({\n offset: child.offsetLeft,\n width: child.clientWidth\n }))\n );\n }, [tabRef]);\n\n const handleCompleteTask = useCallback(\n (id: number, completed: boolean) => {\n mutate({ id: id.toString(), completed });\n },\n [mutate]\n );\n\n return (\n <Box sx={{ ...dashboardStyles.section, ...styles.section }}>\n <Box sx={{ ...dashboardStyles.sectionTitle, ...styles.sectionTitle }}>\n <Box>Tasks</Box>\n <Box display=\"flex\" gap={theme.spacing(2)}>\n <AddTasks\n isDashboard\n buttonElement={<Button sx={styles.button}>Add Task</Button>}\n apiKey={''}\n refetch={refetch}\n />\n <StartWorkFlow\n isDashboard\n buttonElement={<Button sx={styles.button}>Add workflow</Button>}\n setSnackbarState={setSnackbar}\n apiKey={''}\n />\n </Box>\n </Box>\n <Box sx={{ position: 'relative' }}>\n <Box ref={tabRef} ml={4} mr={4} sx={styles.tabContainer}>\n {STATUSES.map((item, index) => (\n <Tab\n label={item}\n key={index}\n isSelected={index === tab}\n onClick={() => setTab(index)}\n />\n ))}\n </Box>\n <Box\n sx={{\n ...styles.line,\n width: tabDimensions[tab]?.width,\n left: tabDimensions[tab]?.offset\n }}\n />\n </Box>\n <Box sx={styles.taskContainer} onScroll={handleScroll} mr={4} ml={4}>\n {isLoading &&\n Array(3)\n .fill(null)\n .map((_, i) => <Loader key={i} />)}\n {isSuccess && (\n <>\n {data.pages[0].data.length ? (\n <>\n {data.pages.map((page) =>\n page.data.map((item) => (\n <TaskItem key={item.id} data={item} handleCompleteTask={handleCompleteTask} />\n ))\n )}\n {isFetchingNextPage && hasNextPage && (\n <Box flex={1} justifyContent=\"center\">\n <Box display=\"flex\" flex={1} justifyContent=\"center\">\n <CircularProgress size={20} sx={{ color: theme.palette.primary.main }} />\n </Box>\n </Box>\n )}\n </>\n ) : (\n <EmptyState\n svgIcon={<NoTasksSVG />}\n label={`You have no ${tab === 0 ? 'pending' : 'completed'} tasks`}\n />\n )}\n </>\n )}\n </Box>\n </Box>\n );\n}\n\nconst Tab = ({\n label,\n isSelected,\n onClick\n}: {\n label: string;\n isSelected: boolean;\n onClick: () => void;\n}) => (\n <Box\n sx={{\n ...styles.tab,\n fontWeight: isSelected ? 600 : undefined,\n color: isSelected ? theme.palette.primary.main : theme.palette.common.grey\n }}\n onClick={onClick}\n >\n {label}\n </Box>\n);\n\nexport default TasksDashboard;\n","import { Box } from '@mui/material';\nimport React from 'react';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\nimport { ITask } from '../../../types';\nimport TaskIcon from '@mui/icons-material/Task';\nimport CheckCircleOutlineIcon from '@mui/icons-material/CheckCircleOutline';\nimport AccessTimeIcon from '@mui/icons-material/AccessTime';\nimport dayjs from 'dayjs';\n\ninterface IProps {\n data: ITask;\n handleCompleteTask: (id: number, completed: boolean) => void;\n}\n\nfunction TaskItem({ data, handleCompleteTask }: IProps) {\n const isCompleted = dayjs().isAfter(dayjs(data?.completed_at));\n\n function getColor(priority: IProps['data']['priority']) {\n if (priority === 'High') {\n return theme.palette.error.main;\n }\n if (priority === 'Normal') {\n return '#E6A052';\n }\n if (priority === 'Low') {\n return theme.palette.success.main;\n }\n return '';\n }\n\n return (\n <Box display=\"flex\" flexDirection=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\">\n <Box flexBasis=\"40%\" display=\"flex\" flexDirection=\"row\">\n <Box mr={2}>\n <Box sx={{ ...styles.icon, backgroundColor: `${getColor(data.priority)}33` }}>\n <TaskIcon sx={{ color: getColor(data.priority) }} fontSize=\"small\" />\n </Box>\n </Box>\n <Box>\n <Box>\n <Box sx={styles.subject}>\n <a\n className={`dashboard-task ${isCompleted ? 'completed' : 'todo'}`}\n href={`/admin/tasks/${data.id}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {data.subject}\n </a>\n </Box>\n </Box>\n <Box mt=\"3px\">\n <Box sx={styles.description}>{data.taskable_type}</Box>\n </Box>\n </Box>\n </Box>\n <Box ml={2} gap={1} display=\"flex\" flexDirection=\"row\" flexShrink={0}>\n <Box\n sx={{\n ...styles.tag,\n ...styles.priorityTag,\n color: getColor(data.priority),\n backgroundColor: `${getColor(data.priority)}33`\n }}\n >\n {data.priority} Priority\n </Box>\n <Box sx={{ ...styles.tag, ...styles.dateTag }}>\n <AccessTimeIcon sx={{ fontSize: '10px', color: '#666', marginRight: '4px' }} />\n {dayjs(data.due_at).format('ddd, DD MMM YYYY, h:mma')}\n </Box>\n <Box sx={styles.checkTag} onClick={() => handleCompleteTask(data.id, !isCompleted)}>\n <CheckCircleOutlineIcon\n sx={{ color: isCompleted ? theme.palette.success.main : '#DDD' }}\n />\n </Box>\n </Box>\n </Box>\n );\n}\n\nconst styles = {\n icon: {\n borderRadius: '6px',\n padding: '6px'\n },\n subject: {\n '& a': {\n fontSize: '15px',\n fontWeight: '700',\n color: '#333'\n }\n },\n description: {\n color: '#666'\n },\n tag: {\n padding: '0 10px',\n borderRadius: '14px',\n fontSize: '9px',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n flexShrink: 0\n },\n priorityTag: {\n textTransform: 'uppercase',\n fontWeight: '700',\n userSelect: 'none'\n },\n dateTag: {\n backgroundColor: '#F3F3F3',\n color: '#666'\n },\n checkTag: {\n '&:hover': {\n cursor: 'pointer',\n '& svg': {\n opacity: 0.7\n }\n }\n }\n};\n\nexport default TaskItem;\n","import React, { useReducer, Dispatch, SetStateAction, useEffect } from 'react';\nimport { Box, CircularProgress, IconButton, Tooltip } from '@mui/material';\nimport dashboardStyles from '../../styles';\nimport Api from '../../API';\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport EventItem from './components/EventItem';\nimport Loader from '../Loader';\nimport { copyEventLinks } from './copyEventLinks';\nimport { FileCopy as FileCopyIcon, Done as DoneIcon } from '@mui/icons-material';\nimport { InitialScoutCalendarState, ScoutCalendarReducer } from '../../../../ScoutCalendar/reducer';\nimport ViewEvent from '../../../../ScoutCalendar/ViewEvent';\nimport CreateEvent from '../../../../ScoutCalendar/CreateEvent/CreateEvent';\nimport { IUserPermissions } from '../../../Components/sharedTypes';\nimport { NoEventsSVG } from '../../../Components/Icons';\nimport { styles } from './styles';\nimport { EmptyState } from '../../../Components/CustomUIElements/EmptyState';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nfunction UpcomingEvents({\n setSnackbar,\n apiKey,\n currentUserId,\n newCalendarEnabled,\n userPermissions\n}: {\n setSnackbar: Dispatch<\n SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n >;\n apiKey: string;\n currentUserId: number;\n newCalendarEnabled: boolean;\n userPermissions: IUserPermissions;\n}) {\n const [ScoutCalendarState, dispatch] = useReducer(\n ScoutCalendarReducer,\n InitialScoutCalendarState\n );\n const [copied, setCopied] = React.useState(false);\n const { isLoading, isSuccess, data, fetchNextPage, isFetchingNextPage, hasNextPage } =\n useInfiniteQuery({\n queryKey: ['getEvents'],\n queryFn: ({ pageParam = 1 }) => Api.getEvents({ page: pageParam }),\n getNextPageParam: (lastPage) => lastPage.nextPage || undefined\n });\n\n function handleScroll(e: React.UIEvent<HTMLDivElement>) {\n if (!e) return;\n const { scrollTop, scrollHeight, clientHeight } = e.currentTarget;\n if (scrollTop + clientHeight >= scrollHeight) {\n if (!isFetchingNextPage && hasNextPage) {\n fetchNextPage();\n }\n }\n }\n\n function calculateAllItems(data: any, hasNextPage: boolean) {\n const items = data?.pages.flatMap((page: any) => page.data.events) || [];\n if (!items.length) return [];\n return items.map((item: any, index: number) => {\n const dateCurrent = formatToUserTimeZone(items[index].begins_at, 'ymd');\n const datePrevious = formatToUserTimeZone(items[index - 1]?.begins_at, 'ymd');\n const dateNext = formatToUserTimeZone(items[index + 1]?.begins_at, 'ymd');\n const isFirst = dateCurrent !== datePrevious;\n const isLast = dateCurrent !== dateNext || (index === items.length - 1 && !hasNextPage);\n return {\n ...item,\n isFirst,\n isLast\n };\n });\n }\n\n const allItems = calculateAllItems(data, hasNextPage);\n\n const hasUpcomingEvent = !!allItems?.length;\n\n // the api key is needed because the events endpoints are using api v2 base controller that requires api key\n useEffect(() => {\n dispatch({ type: 'SET_APIKEY', payload: apiKey });\n dispatch({ type: 'SET_PERMISSIONS', payload: userPermissions });\n }, [apiKey, userPermissions]);\n\n return (\n <Box sx={{ ...dashboardStyles.section, ...styles.section }}>\n <Box sx={styles.headerContainer}>\n <Box sx={{ ...dashboardStyles.sectionTitle }}>Upcoming Events</Box>\n {hasUpcomingEvent && (\n <Tooltip title={copied ? 'Copied!' : 'Copy event links'} placement=\"top\">\n <IconButton\n onClick={() => {\n copyEventLinks(allItems);\n setCopied(true);\n setTimeout(() => {\n setCopied(false);\n }, 1000);\n }}\n >\n {copied ? (\n <DoneIcon sx={{ color: theme.palette.action.main }} />\n ) : (\n <FileCopyIcon sx={{ color: theme.palette.common.darkGrey }} />\n )}\n </IconButton>\n </Tooltip>\n )}\n </Box>\n <Box sx={styles.taskContainer} onScroll={handleScroll} mr={4} ml={4}>\n {isLoading &&\n Array(3)\n .fill(null)\n .map((_, i) => <Loader key={i} />)}\n {isSuccess && (\n <>\n {hasUpcomingEvent ? (\n <>\n {allItems.map((item) => (\n <EventItem\n key={item.id}\n event={item}\n ScoutCalendarState={ScoutCalendarState}\n dispatch={dispatch}\n newCalendarEnabled={newCalendarEnabled}\n />\n ))}\n {isFetchingNextPage && hasNextPage && (\n <Box display=\"flex\" flex={1} justifyContent=\"center\">\n <CircularProgress size={20} sx={{ color: theme.palette.primary.main }} />\n </Box>\n )}\n </>\n ) : (\n <EmptyState svgIcon={<NoEventsSVG />} label=\"No upcoming events\" />\n )}\n </>\n )}\n </Box>\n {ScoutCalendarState.showCreateEventModal && (\n <CreateEvent\n events={allItems}\n ScoutCalendarState={ScoutCalendarState}\n dispatch={dispatch}\n setSnackbar={setSnackbar}\n />\n )}\n {ScoutCalendarState.showViewEventModal && (\n <ViewEvent\n events={allItems}\n ScoutCalendarState={ScoutCalendarState}\n dispatch={dispatch}\n setSnackbar={setSnackbar}\n currentUserId={currentUserId}\n />\n )}\n </Box>\n );\n}\n\nexport default UpcomingEvents;\n","import React, { useState } from 'react';\nimport { IEvent } from '../../../../Job/types';\nimport { Box, Tooltip } from '@mui/material';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\n\ninterface IProps {\n attendees: IEvent['attendees'];\n}\n\nconst HEIGHT = 26;\nconst MARGIN_BOTTOM = 6;\nconst BORDER_HEIGHT = 2;\nconst MAX_CHARACTERS = 30;\n\nexport default function AttendeeList({ attendees }: IProps) {\n const [isExpanded, setIsExpanded] = useState(false);\n const [showExpandedItems, setShowExpandedItems] = useState(false);\n\n const filteredAttendees = attendees.filter((attendee) => attendee.type === 'Candidate');\n\n const handleExpandClick = () => {\n if (isExpanded) {\n setIsExpanded(false);\n setTimeout(() => {\n setShowExpandedItems(false);\n }, 500);\n } else {\n setIsExpanded(true);\n setShowExpandedItems(true);\n }\n };\n\n function getHeight() {\n if (!isExpanded) {\n return `${HEIGHT}px`;\n } else {\n return `${HEIGHT * (filteredAttendees.length + 1) + MARGIN_BOTTOM * filteredAttendees.length}px`;\n }\n }\n\n const displayBadge = filteredAttendees.length > 1 && !isExpanded;\n\n return (\n <Box sx={{ ...styles.container, ...{ height: getHeight() } }}>\n <Box display=\"flex\">\n {filteredAttendees.length > 0 && (\n <Attendee\n attendee={filteredAttendees[0]}\n badge={{\n show: displayBadge,\n handleExpandClick,\n numberOfAttendees: filteredAttendees.length - 1\n }}\n />\n )}\n </Box>\n {showExpandedItems &&\n filteredAttendees\n .slice(1)\n .map((attendee) => <Attendee key={attendee.id} attendee={attendee} />)}\n {isExpanded && (\n <Box onClick={handleExpandClick} sx={{ ...styles.item, ...styles.showLess }}>\n Show less\n </Box>\n )}\n </Box>\n );\n}\n\nfunction Attendee({\n attendee,\n badge\n}: {\n attendee: IEvent['attendees'][0];\n badge?: {\n show: boolean;\n handleExpandClick: () => void;\n numberOfAttendees: number;\n };\n}) {\n const [showTooltip, setShowTooltip] = useState<boolean>(false);\n const tagText = `${attendee.type}: ${attendee.name}`;\n const label = tagText.length > MAX_CHARACTERS ? tagText.slice(0, MAX_CHARACTERS) + '…' : tagText;\n\n const handleMouseEnter = (): void => {\n if (tagText.length >= MAX_CHARACTERS) {\n setShowTooltip(true);\n }\n };\n\n return (\n <>\n <Tooltip key={attendee.id} title={attendee.name} placement=\"top\" open={showTooltip}>\n <Box\n key={attendee.id}\n sx={{\n ...styles.item,\n ...{ width: badge?.show ? '82.5%' : '100%' },\n ...(attendee.application_url && { cursor: 'pointer' })\n }}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={() => setShowTooltip(false)}\n onClick={() => attendee.application_url && window.open(attendee.application_url, '_self')}\n onAuxClick={() =>\n attendee.application_url && window.open(attendee.application_url, '_blank')\n }\n >\n {label}\n </Box>\n </Tooltip>\n {badge?.show && (\n <Box onClick={badge.handleExpandClick} sx={styles.badge}>\n {`+${badge.numberOfAttendees}`}\n </Box>\n )}\n </>\n );\n}\n\nconst styles = {\n container: {\n transition: 'height 0.5s cubic-bezier(.75,.34,.19,.79)',\n overflow: 'hidden'\n },\n item: {\n backgroundColor: '#EDF2F5',\n color: theme.palette.primary.main,\n borderRadius: HEIGHT / 2,\n height: HEIGHT,\n textAlign: 'center',\n fontWeight: '600',\n marginBottom: `${MARGIN_BOTTOM}px`,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n padding: '0 18px',\n border: `${BORDER_HEIGHT}px solid white`,\n zIndex: 1,\n lineHeight: `${HEIGHT - BORDER_HEIGHT * 2}px`,\n transition: 'width 0.5s cubic-bezier(.75,.34,.19,.79)',\n fontSize: '13px'\n },\n badge: {\n backgroundColor: '#EDF2F5',\n color: theme.palette.primary.main,\n borderRadius: HEIGHT / 2,\n height: HEIGHT,\n border: `${BORDER_HEIGHT}px solid white`,\n textAlign: 'center',\n fontWeight: '600',\n transform: 'translateX(-22.5%)',\n userSelect: 'none',\n lineHeight: `${HEIGHT - BORDER_HEIGHT * 2}px`,\n transition: 'opacity 0.5s, width 0.5s cubic-bezier(.75,.34,.19,.79)',\n width: '17.5%',\n cursor: 'pointer'\n },\n showLess: {\n fontSize: '12px',\n cursor: 'pointer',\n userSelect: 'none',\n width: '100px',\n margin: 'auto'\n }\n};\n","import React, { Dispatch } from 'react';\nimport { IEvent } from '../../../../Job/types';\nimport { Box } from '@mui/material';\nimport dayjs from 'dayjs';\nimport { theme } from '../../../../../ThemeContext/ThemeObject';\nimport EventCircle from '../../../assets/EventCircle';\nimport AttendeeList from './AttendeeList';\nimport { ScoutCalendarState, ScoutCalendarAction } from '../../../../../ScoutCalendar/types';\nimport { connectingLine } from '../../../../shared/styleClasses';\nimport formatToUserTimeZone from '../../../../utils/formatToUserTimeZone';\n\ninterface IProps {\n event: IEvent & { isFirst: boolean; isLast: boolean };\n ScoutCalendarState: ScoutCalendarState;\n dispatch: Dispatch<ScoutCalendarAction>;\n newCalendarEnabled: boolean;\n}\n\nfunction EventItem({ event, ScoutCalendarState, dispatch, newCalendarEnabled }: IProps) {\n const { createEventObject } = ScoutCalendarState;\n function handleSelectEvent(event: IEvent) {\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: {\n ...createEventObject,\n eventName: event.subject,\n eventDescription: event.note || '',\n maxCandidates: event.max_candidates.toString(),\n recruiters: event.attendees\n .filter((a) => a.type === 'User')\n .map((a) => ({\n id: a.id,\n name: a.name,\n checked: false,\n attendeeId: a.attendee_id,\n state: a.state\n })),\n eventType: event.event_type,\n duration: event.duration_in_minutes.toString(),\n eventDate: new Date(event.begins_at),\n eventId: event.id,\n candidates: event.attendees.filter((a) => a.type === 'Candidate'),\n dates: [new Date(event.begins_at)],\n owner: event.owner\n }\n });\n dispatch({ type: 'SET_SHOW_VIEW_EVENT_MODAL', payload: true });\n }\n return (\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"space-between\"\n alignItems=\"flex-start\"\n >\n {event.isFirst && (\n <Box sx={styles.date}>{formatToUserTimeZone(event.begins_at, 'shortWithDayOfWeek')}</Box>\n )}\n <Box\n display=\"flex\"\n width=\"100%\"\n justifyContent=\"space-between\"\n alignItems=\"flex-start\"\n gap=\"24px\"\n >\n <Box display=\"flex\" height=\"100%\">\n <Box sx={{ ...styles.lineContainer, ...(!event.isLast && { ...styles.connectingLine }) }}>\n <EventCircle />\n </Box>\n <Box sx={styles.infoContainer}>\n <Box>{formatToUserTimeZone(event.begins_at, 'onlyTime')}</Box>\n {newCalendarEnabled ? (\n <Box onClick={() => handleSelectEvent(event)} sx={styles.eventSubject}>\n {event.subject}\n </Box>\n ) : (\n <Box>\n <a\n className=\"dashboard-event\"\n href={`/admin/calendar/events/${event.id}`}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n {event.subject}\n </a>\n </Box>\n )}\n <Box>{event.job_title}</Box>\n </Box>\n </Box>\n <Box sx={styles.candidatesContainer}>\n {!!event.attendees?.length && <AttendeeList attendees={event.attendees} />}\n </Box>\n <Box sx={styles.timeContainer}>\n <Box>{event.duration}</Box>\n </Box>\n </Box>\n </Box>\n );\n}\n\nconst styles = {\n date: {\n textTransform: 'uppercase',\n color: '#333',\n marginBottom: theme.spacing(2),\n marginTop: theme.spacing(2),\n fontWeight: '600'\n },\n lineContainer: {\n marginRight: theme.spacing(2),\n position: 'relative',\n '& svg': {\n width: '30px',\n height: '30px'\n }\n },\n connectingLine,\n infoContainer: {\n '& > div:nth-child(1)': {\n color: '#666',\n fontWeight: '700',\n fontSize: '13px',\n textTransform: 'uppercase'\n },\n '& > div:nth-child(2) a': {\n color: '#333',\n fontWeight: '700',\n fontSize: '18px'\n },\n '& > div:nth-child(3)': {\n color: '#666',\n fontSize: '14px'\n }\n },\n candidatesContainer: {\n display: 'flex',\n width: '40%',\n position: 'relative',\n justifyContent: 'center'\n },\n timeContainer: {\n background: '#F2F2F2',\n borderRadius: '4px',\n padding: '6px 0',\n color: '#666666',\n fontWeight: '700',\n width: '80px',\n textAlign: 'center',\n fontSize: '14px',\n flexShrink: 0\n },\n eventSubject: {\n cursor: 'pointer',\n color: '#333',\n fontWeight: '700',\n fontSize: '18px',\n '&:hover': {\n textDecoration: 'underline'\n }\n }\n};\n\nexport default EventItem;\n","import { IEvent } from '../../../Job/types';\nimport { copyRichHTML } from '../../../Components/Utilities/copyToClipboard';\n\nexport const copyEventLinks = (events: IEvent[]) => {\n const eventLinks = events.map((event) => {\n const eventDate = new Date(event.begins_at);\n const eventDateString = eventDate.toLocaleDateString('en-US', {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n });\n const eventTimeString = eventDate.toLocaleTimeString('en-US', {\n hour: 'numeric',\n minute: 'numeric'\n });\n const eventDateTimeString = `${eventDateString} at ${eventTimeString}`;\n const eventLink = `<a href=\"${window.location.origin}/admin/calendar/events/${event.id}\" target=\"_blank\" rel=\"noreferrer\">${eventDateTimeString}: ${event.subject}</a>`;\n const candidateLinks = event.attendees\n .filter((attendee) => attendee.type === 'Candidate')\n .map(\n (attendee) =>\n `<a href=\"${attendee.application_url}\" target=\"_blank\" rel=\"noreferrer\">${attendee.name}</a>`\n )\n .join(', ');\n return `<li>${eventLink}${candidateLinks && ' - Candidates: ' + candidateLinks}</li>`;\n });\n const eventLinksHTML = `<ul>${eventLinks.join('')}</ul>`;\n copyRichHTML(eventLinksHTML);\n};\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport InfoIcon from '@mui/icons-material/Info';\nimport { classes } from '../styles';\nimport { classes as sharedClasses } from '../../Questions/styles';\nimport { QuestionsList } from './QuestionsList';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\n\nconst AIStudioSettings = ({\n jobId,\n setSnackbarState\n}: {\n jobId: number;\n setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n return (\n <Box sx={classes.tabContent}>\n <Box sx={classes.headerContent}>AI Studio settings</Box>\n <Box\n sx={{\n ...sharedClasses.noticeContainer,\n justifyContent: 'flex-start',\n margin: '0 0 18px 0'\n }}\n >\n <InfoIcon sx={{ ...sharedClasses.infoIcon, marginTop: '2px' }} />\n <Box sx={{ marginLeft: 1 }}>\n All changes in this section will be automatically saved and applied immediately.\n </Box>\n </Box>\n <Box sx={classes.bodyContainer}>\n <Box sx={classes.headerContent}>Application summaries question selection</Box>\n <Box sx={classes.editInfoText}>\n Select the screening questions you want to include when generating AI application\n summaries, AI insights or interview questions for this job. All questions will be included\n by default.\n </Box>\n </Box>\n <QuestionsList jobId={jobId} setSnackbarState={setSnackbarState} />\n </Box>\n );\n};\n\nexport default AIStudioSettings;\n","import React, { useEffect, useState } from 'react';\nimport { Box, FormControlLabel, Switch, Skeleton } from '@mui/material';\nimport { classes } from '../styles';\nimport { classes as switchClasses } from '../../../../AIStudio/SharedComponents/styles';\nimport QuestionFieldViewer, {\n IApplicantQuestion\n} from '../../../Components/Utilities/QuestionFieldViewer';\nimport { handleAPIRequest } from '../../../Components/Utilities/handleAPIRequest';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\n\nexport const QuestionsList = ({\n jobId,\n setSnackbarState\n}: {\n jobId: number;\n setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) => {\n const [questions, setQuestions] = useState<IApplicantQuestion[]>([]);\n const [loadingQuestions, setLoadingQuestions] = useState(true);\n\n useEffect(() => {\n handleAPIRequest({\n url: `/api/v4/fields?job_id=${jobId}`,\n method: 'GET',\n onSuccess: (data) => {\n setQuestions(data.fields);\n },\n setLoaderState: setLoadingQuestions,\n setSnackbarState,\n successMessage: { show: false }\n });\n }, [jobId, setSnackbarState]);\n\n const handleSwitchChange = (index: number, fieldId: number) => {\n // Optimistically update the UI\n const newQuestions = [...questions];\n newQuestions[index].enabled_for_summary = !newQuestions[index].enabled_for_summary;\n setQuestions(newQuestions);\n\n // Send the API request\n handleAPIRequest({\n url: `/api/v4/fields/${fieldId}?job_id=${jobId}`,\n method: 'PUT',\n body: { enabled_for_summary: newQuestions[index].enabled_for_summary },\n onFailure: () => {\n // Revert the UI if the API request fails\n const newQuestions = [...questions];\n newQuestions[index].enabled_for_summary = !newQuestions[index].enabled_for_summary;\n setQuestions(newQuestions);\n },\n setSnackbarState,\n successMessage: { show: true, message: 'Question updated successfully' }\n });\n };\n\n if (loadingQuestions) {\n return (\n <Box sx={classes.questionsContainer}>\n {Array.from(Array(3).keys()).map((_, index) => (\n <Skeleton variant=\"rectangular\" sx={classes.questionSkeleton} key={index} />\n ))}\n </Box>\n );\n }\n return (\n <Box sx={classes.questionsContainer}>\n {questions.map((item, index) => (\n <Box sx={classes.question} key={item.id}>\n <Box sx={{ maxWidth: '640px' }}>\n <QuestionFieldViewer question={item} />\n </Box>\n <Box sx={classes.switchContainer}>\n <FormControlLabel\n sx={\n !item.enabled_for_summary\n ? { ...switchClasses.switchLabels, ...switchClasses.labelActive }\n : switchClasses.switchLabels\n }\n control={\n <Switch\n sx={\n item.enabled_for_summary ? switchClasses.aiSwitchActive : switchClasses.switch\n }\n checked={item.enabled_for_summary as boolean}\n onChange={() => handleSwitchChange(index, item.id)}\n />\n }\n label=\"Include\"\n labelPlacement=\"end\"\n />\n </Box>\n </Box>\n ))}\n </Box>\n );\n};\n","import React, { Dispatch, SetStateAction, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport { IJob } from '../../../Job/types';\nimport { classes } from '../styles';\nimport { MultilineFormTextField } from '../../../Components/CustomUIElements/FormTextField';\n\nexport default function GoogleScript({\n apiKey,\n job,\n googleScriptTabJobData,\n setGoogleScriptTabJobData,\n setIsEdited\n}: { apiKey: string, job: IJob, setIsEdited: Dispatch<SetStateAction<boolean>> }) { \n const templateRef = useRef<HTMLInputElement>(null);\n\n return (\n <Box sx={classes.tabContent}>\n <Box id=\"template-title\" sx={classes.headerContent}>\n Google conversion script\n </Box>\n <Box sx={classes.bodyContainer}>\n <Box sx={classes.modalFormLine}>\n <MultilineFormTextField\n value={googleScriptTabJobData?.google_conversion_script?.value}\n onChange={(e) => {\n setGoogleScriptTabJobData((prev) => ({\n ...prev,\n google_conversion_script: { ...prev.google_conversion_script, value: e.target.value },\n }))\n setIsEdited(true);\n }}\n styles={{ maxWidth: '900px' }}\n rows={14}\n innerRef={templateRef}\n required={false}\n />\n </Box>\n </Box>\n <Box sx={classes.hintText}>\n This script will be embedded on the \"Application Success\" page. It is strongly recommended you perform a test application after changing this script, to test for faulty HTML/Javascript.\n </Box>\n </Box>\n );\n}\n","import React, { Dispatch, useState, useEffect, useCallback, SetStateAction } from 'react';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport Box from '@mui/material/Box';\nimport Api from '../../../Job/API';\nimport { classes } from '../styles';\n\nexport default function PanelWorkflow({\n apiKey,\n jobId,\n chairsOptions,\n setChairsOptions,\n panelWorkflowTabJobData,\n setPanelWorkflowTabJobData,\n setIsEdited\n}: { apiKey: string, jobId: string, setIsEdited: Dispatch<SetStateAction<boolean>> }) {\n const [isLoading, setIsLoading] = useState(false);\n\n const fetchWorkflowData = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await Api.getJobPanelChairs({ 'X-api-authenticate': apiKey }, jobId);\n setChairsOptions(response?.panel_chairs);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, jobId]);\n\n useEffect(() => {\n chairsOptions?.length === 0 && !isLoading && fetchWorkflowData();\n }, [fetchWorkflowData]);\n\n const getDefaults = (options, defaults) => {\n if (options?.length > 0 && defaults?.length > 0) {\n const ids = defaults.map(item => item.id);\n const selected = options.filter((option) => ids.indexOf(option?.id) >= 0);\n return selected;\n } else return [];\n };\n\n return (\n <Box sx={classes.tabContent}>\n <Box id=\"panel-workflow-title\" sx={classes.headerContent}>\n Panel workflow\n </Box>\n <Box sx={{...classes.modalFormLine, marginBottom: 3}}>\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"panelChairs\"\n multiple\n options={chairsOptions}\n getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n value={getDefaults(chairsOptions, panelWorkflowTabJobData?.panel_chairs?.value)}\n loading={chairsOptions?.length < 1}\n loadingText={isLoading ? \"Loading Panel chairs...\" : \"No Panel chairs\"}\n sx={{ ...classes.formAutocomplete, minWidth: '250px', width: '100%', marginTop: '24px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Panel chairs\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n onChange={(event, value) => {\n setPanelWorkflowTabJobData((prev) => ({\n ...prev,\n panel_chairs: { ...prev.panel_chairs, value },\n }))\n setIsEdited(true);\n }}\n />\n </Box>\n </Box>\n <Box sx={{...classes.modalFormLine, marginBottom: 3}}>\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"panelMembers\"\n multiple\n options={chairsOptions}\n getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n value={getDefaults(chairsOptions, panelWorkflowTabJobData?.panel_members?.value)}\n loading={chairsOptions?.length < 1}\n loadingText={isLoading ? \"Loading Panel members...\" : \"No Panel members\"}\n sx={{ ...classes.formAutocomplete, minWidth: '250px', width: '100%', marginTop: '24px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Panel members\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n onChange={(event, value) => {\n setPanelWorkflowTabJobData((prev) => ({\n ...prev,\n panel_members: { ...prev.panel_members, value },\n }))\n setIsEdited(true);\n }}\n />\n </Box>\n </Box>\n <Box sx={{...classes.modalFormLine, marginBottom: 3}}>\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"panelObservers\"\n multiple\n options={chairsOptions}\n getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n value={getDefaults(chairsOptions, panelWorkflowTabJobData?.panel_observers?.value)}\n loading={chairsOptions?.length < 1}\n loadingText={isLoading ? \"Loading Panel observers...\" : \"No Panel observers\"}\n sx={{ ...classes.formAutocomplete, minWidth: '250px', width: '100%', marginTop: '24px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Panel observers\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n onChange={(event, value) => {\n setPanelWorkflowTabJobData((prev) => ({\n ...prev,\n panel_observers: { ...prev.panel_observers, value },\n }))\n setIsEdited(true);\n }}\n />\n </Box>\n </Box>\n </Box>\n );\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Box, Button, Stack } from '@mui/material';\nimport { classes } from '../styles';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport RequisitionInfoViewer from '../../../Components/Utilities/RequisitionInfoViewer';\n\nexport default function RequisitionInfo({\n apiKey,\n jobId,\n setSnackbar,\n requisitionInfoTabJobData,\n setRequisitionInfoTabJobData\n}: {\n apiKey: string;\n jobId: number;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n}) {\n const [editable, setEditable] = useState(true);\n const [requisitionInfoId, setRequisitionInfoId] = useState();\n const [requisitionInfos, setRequisitionInfos] = useState([]);\n\n const getRequisitionInfos = useCallback(async () => {\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n if (response.requisition_info?.requisition_id) {\n setRequisitionInfoId(response.requisition_info.requisition_id);\n setEditable(false);\n setRequisitionInfos(response.requisition_info.answers);\n }\n } catch (error) {\n console.log(error);\n }\n }, [apiKey, jobId]);\n\n const createRequisitionInfos = async (id: number) => {\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/requisition_info?requisition_id=${id}`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n setRequisitionInfos(response.requisition_info);\n } catch (error) {\n console.log(error);\n } finally {\n getRequisitionInfos();\n }\n };\n\n const updateRequisitionInfos = async () => {\n const attributes = {};\n requisitionInfos.map((requisition, index) => {\n if (['TextField', 'TextAreaField', 'DateField'].includes(requisition.type)) {\n attributes[index] = {\n data: requisition.answer,\n field_id: requisition.field_id,\n id: requisition.id\n };\n } else if (['SelectField', 'RadioButtonField'].includes(requisition.type)) {\n attributes[index] = {\n field_choice_id: requisition.answer,\n field_id: requisition.field_id,\n id: requisition.id\n };\n } else if (['CheckBoxField'].includes(requisition.type)) {\n attributes[index] = {\n field_choice_ids: requisition.answer,\n field_id: requisition.field_id,\n id: requisition.id\n };\n }\n });\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/requisition_info`, {\n method: 'PATCH',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n requisition_info: {\n answers_attributes: attributes\n }\n })\n }).then((response) => response.json());\n setSnackbar({\n message: 'Requisition info has been updated',\n state: 'success'\n });\n } catch (error) {\n console.log(error);\n setSnackbar({\n message: error.errors,\n state: 'error'\n });\n }\n };\n\n useEffect(() => {\n getRequisitionInfos();\n }, [getRequisitionInfos]);\n\n return (\n <Box sx={classes.tabContent}>\n <Box id=\"template-title\" sx={classes.headerContent}>\n Requisition info\n </Box>\n <Box sx={classes.bodyContainer}>\n <Box sx={classes.modalFormLine}>\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Stack flexGrow=\"0.5\" maxWidth=\"250px\">\n <FormTextField\n draggable={!editable}\n value={requisitionInfoId}\n label={'Approval ID'}\n onChange={(e) => setRequisitionInfoId(e.target.value)}\n required={false}\n />\n </Stack>\n <Button\n id=\"get-requisition-info-button\"\n sx={classes.modalCreateRequisitionButton}\n onClick={() => createRequisitionInfos(requisitionInfoId)}\n disabled={!editable}\n >\n Get requisition information\n </Button>\n </Box>\n {requisitionInfos && requisitionInfos.length > 0 && (\n <Box sx={classes.requisitionWrapper}>\n {requisitionInfos.map((requisition, index) => (\n <Box key={requisition.id}>\n {requisition.type === 'AvailabilityField' ||\n requisition.type === 'JobReferenceLookupField' ? (\n <span />\n ) : (\n <Box sx={{ marginRight: 'auto', ...classes.requisitionInput }}>\n <RequisitionInfoViewer\n index={index}\n requisition={requisition}\n requisitionInfos={requisitionInfos}\n setRequisitionInfos={setRequisitionInfos}\n draggable={false}\n />\n </Box>\n )}\n </Box>\n ))}\n <Button\n id=\"update-requisition-info-button\"\n sx={classes.updateRequisitionButton}\n onClick={updateRequisitionInfos}\n >\n Update requisition information\n </Button>\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport Box from '@mui/material/Box';\nimport { IJob } from '../../../Job/types';\nimport { classes } from '../styles';\nimport { DebouncedFormTextField } from '../../../Components/CustomUIElements/FormTextField';\n\nexport default function Revolve({\n apiKey,\n job,\n revolveTabJobData,\n setRevolveTabJobData,\n setIsEdited\n}: { apiKey: string, job: IJob, setIsEdited: Dispatch<SetStateAction<boolean>> }) {\n\n return (\n <Box sx={classes.tabContent}>\n <Box id=\"template-title\" sx={classes.headerContent}>\n Revolve\n </Box>\n <Box sx={classes.bodyContainer}>\n <Box sx={classes.modalFormLine}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setRevolveTabJobData((prev) => ({\n ...prev,\n revolve_position_title: { ...prev.revolve_position_title, value }\n }))\n setIsEdited(true);\n }}\n id=\"revolve\"\n label=\"Position title\"\n defaultValue={revolveTabJobData?.revolve_position_title?.value}\n required={revolveTabJobData?.revolve_position_title?.required}\n error={revolveTabJobData?.revolve_position_title?.error}\n styles={{ width: '250px' }}\n />\n </Box>\n </Box>\n </Box>\n );\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\n\nfunction NoTestsImage() {\n return (\n <Box>\n <svg\n id=\"Group_605\"\n data-name=\"Group 605\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"181.013\"\n height=\"156.432\"\n viewBox=\"0 0 181.013 156.432\"\n >\n <defs>\n <clipPath id=\"clip-path\">\n <rect\n id=\"Rectangle_793\"\n data-name=\"Rectangle 793\"\n width=\"181.013\"\n height=\"156.432\"\n fill=\"none\"\n />\n </clipPath>\n </defs>\n <g id=\"Group_604\" data-name=\"Group 604\" clipPath=\"url(#clip-path)\">\n <path\n id=\"Path_270\"\n data-name=\"Path 270\"\n d=\"M199.211,510.074c10.846,3.907-15.96,9.207-19.723,9.589-40.618,4.115-84.568,2.2-124.808-3.044a15.57,15.57,0,0,1-4.721-1.122c-9.948-4.87,22.007-8.173,24.974-8.428,11.029-.948,22.234-1.566,33.357-1.669,15.763-.146,77.475-.168,90.921,4.675\"\n transform=\"translate(-34.746 -365.459)\"\n fill=\"#eee\"\n />\n <path\n id=\"Path_271\"\n data-name=\"Path 271\"\n d=\"M177.979,111.146V14.238A10.456,10.456,0,0,0,167.6,3.708H10.381A10.456,10.456,0,0,0,0,14.238v96.908a10.456,10.456,0,0,0,10.381,10.53H167.6a10.456,10.456,0,0,0,10.381-10.53\"\n transform=\"translate(0 -2.682)\"\n fill=\"#e3e3e3\"\n />\n <path\n id=\"Path_272\"\n data-name=\"Path 272\"\n d=\"M256.286,441.848l-5-21.991h-29.9l-5,21.991c-6.256.869-16.465,5.07-16.465,10.122h72.824c0-5.052-10.209-9.253-16.465-10.122\"\n transform=\"translate(-144.581 -303.627)\"\n fill=\"#e3e3e3\"\n />\n <path\n id=\"Path_273\"\n data-name=\"Path 273\"\n d=\"M269.321,448.588l-4.379-19.731H240.1a2.7,2.7,0,0,0-2.641,2.128l-4.193,19.264c-5.828.8-15.338,3.569-15.338,8.229h67.841c0-4.66-10.618-9.089-16.446-9.89\"\n transform=\"translate(-157.597 -310.136)\"\n fill=\"#f9f9f9\"\n />\n <path\n id=\"Path_274\"\n data-name=\"Path 274\"\n d=\"M218.254,428.876l-4.3,18.916.743-.515a33.32,33.32,0,0,0-11.412,3.851c-2.416,1.358-5.8,3.638-5.8,6.785a.409.409,0,0,0,.435.394h72.824c.267,0,.914-.119.914-.515,0-3.165-3.263-5.394-5.721-6.762a33.009,33.009,0,0,0-11.179-3.754l.429.275-4.253-19.267c-.126-.572-1.466-.228-1.337.358l4.253,19.267c.042.191.266.252.429.275a31.656,31.656,0,0,1,10.3,3.405c2.281,1.226,5.732,3.34,5.732,6.323l.915-.515H198.4l.435.394c0-3,3.346-5.071,5.661-6.3a31.441,31.441,0,0,1,10.061-3.311c.3-.044.668-.183.744-.515l4.3-18.916c.138-.608-1.224-.43-1.349.121\"\n transform=\"translate(-142.819 -309.51)\"\n fill=\"#cfcfcf\"\n />\n <path\n id=\"Path_275\"\n data-name=\"Path 275\"\n d=\"M294.731,498.408h-24.02c-1.173,0-2.347-.017-3.519,0-.875.017-2.17.264-2.642,1.114-.441.794.375,1.266,1.107,1.253,8.018-.15,16.053,0,24.073,0H293.2a3.115,3.115,0,0,0,2.642-1.114c.446-.8-.38-1.253-1.107-1.253\"\n transform=\"translate(-191.224 -360.428)\"\n fill=\"#e3e3e3\"\n />\n <path\n id=\"Path_276\"\n data-name=\"Path 276\"\n d=\"M188.649,107.129V12.04A10.332,10.332,0,0,0,178.316,1.708H21.832A10.332,10.332,0,0,0,11.5,12.04v95.089a10.332,10.332,0,0,0,10.332,10.332H178.316a10.333,10.333,0,0,0,10.332-10.332\"\n transform=\"translate(-8.316 -1.235)\"\n fill=\"#fff\"\n />\n <path\n id=\"Path_277\"\n data-name=\"Path 277\"\n d=\"M187.552,105.836V17.945c0-2.315.012-4.631,0-6.945A10.9,10.9,0,0,0,176.588.013c-4.257-.028-8.515,0-12.772,0H22.085c-2.491,0-4.856.089-7.157,1.3a10.99,10.99,0,0,0-5.875,9.552c-.007.465,0,.93,0,1.4v91.187c0,3.318.123,6.473,2.364,9.236,2.471,3.048,6.008,4,9.743,4H161.527c4.906,0,9.813.027,14.719,0a11.18,11.18,0,0,0,11.307-10.852c.012-.665-1.34-.446-1.35.118a9.794,9.794,0,0,1-8.439,9.749,15.97,15.97,0,0,1-1.823.063H21.241c-4.288,0-8.253-1.879-10.033-6.029-1.013-2.362-.805-4.952-.805-7.46V11.931c0-.523-.013-1.049.007-1.571a9.738,9.738,0,0,1,9-9.408C20.583.887,21.764.934,22.933.934h150c1.173,0,2.349-.026,3.522,0,5.872.128,9.748,5.028,9.748,10.63v94.389c0,.666,1.35.444,1.35-.118\"\n transform=\"translate(-6.545 0)\"\n fill=\"#cfcfcf\"\n />\n <path\n id=\"Path_278\"\n data-name=\"Path 278\"\n d=\"M197.533,34.186H45.656a4.4,4.4,0,0,0-4.4,4.4v81.866a4.4,4.4,0,0,0,4.4,4.4H190.418a11.513,11.513,0,0,0,11.514-11.513V38.584a4.4,4.4,0,0,0-4.4-4.4\"\n transform=\"translate(-29.836 -24.722)\"\n fill=\"#f9f9f9\"\n />\n <path\n id=\"Path_279\"\n data-name=\"Path 279\"\n d=\"M196.018,32.756H46.833c-.9,0-1.8-.028-2.691,0a5.2,5.2,0,0,0-5.327,4.887c-.017.487,0,.979,0,1.467v79.343c0,.5-.03,1.016.017,1.514a4.8,4.8,0,0,0,4.856,4.227c1.151.032,2.308,0,3.46,0H184.132c1.347,0,2.695.007,4.042,0a12.575,12.575,0,0,0,12.043-8.273c.786-2.31.61-4.794.61-7.2V39.209c0-.56.014-1.123,0-1.683a4.8,4.8,0,0,0-4.809-4.77c-.52-.022-1.417.736-.516.774,4.135.176,3.987,4.031,3.987,6.98v68.976c0,2.828.091,5.562-1.291,8.175a10.967,10.967,0,0,1-10.087,5.757H54.89c-3.563,0-7.152.125-10.714,0a4.178,4.178,0,0,1-4.022-4.215c-.02-.613,0-1.23,0-1.843V38.6c0-2.431.739-4.977,3.71-5.072,3.966-.125,7.956,0,11.923,0H195.5c.513,0,1.415-.774.516-.774\"\n transform=\"translate(-28.063 -23.679)\"\n fill=\"#cfcfcf\"\n />\n <path\n id=\"Path_280\"\n data-name=\"Path 280\"\n d=\"M312.77,106.292a23.523,23.523,0,0,0,4.062-1.369l4.921,3.619,6.494-5.132-2.36-5.566a23.707,23.707,0,0,0,2.475-3.928l5.976-.383,1.675-8.106-5.176-2.64a23.478,23.478,0,0,0-.625-4.774c-.009-.037-.02-.072-.029-.109l4.147-3.958L330.4,66.66l-5.425,1.25a23.591,23.591,0,0,0-3.851-3.488l.608-5.475-7.692-3.058-3.25,4.309a23.292,23.292,0,0,0-5.375-.181l-2.974-4.465-7.858,2.6.28,5.382a23.392,23.392,0,0,0-4.171,3.342l-5.21-1.527L281.139,72.4l3.788,4.065a23.375,23.375,0,0,0-.986,5.042l-5.148,2.256,1.2,8.19,5.76.71a23.276,23.276,0,0,0,2.355,4.235l-2.607,5.268,6.182,5.5,5.067-3.288a23.583,23.583,0,0,0,4.282,1.672l1.435,5.9,8.274.243,1.791-5.85c.08-.018.16-.032.24-.05m-14.442-28.5a10.855,10.855,0,1,1,3.54,14.937,10.855,10.855,0,0,1-3.54-14.937\"\n transform=\"translate(-201.614 -40.173)\"\n fill=\"#e3e3e3\"\n />\n <path\n id=\"Path_281\"\n data-name=\"Path 281\"\n d=\"M336.274,90.591a21.037,21.037,0,0,0-.56-4.273c-.008-.033-.018-.065-.026-.1l3.712-3.543-3.515-6.522-4.856,1.119a21.1,21.1,0,0,0-3.447-3.122l.544-4.9-6.885-2.737-2.909,3.857a20.85,20.85,0,0,0-4.81-.162l-2.662-4-7.033,2.329.251,4.817a20.955,20.955,0,0,0-3.734,2.991l-4.663-1.367-3.891,6.305,3.39,3.638a20.93,20.93,0,0,0-.882,4.513l-4.608,2.02,1.072,7.331,5.155.635a20.841,20.841,0,0,0,2.108,3.791l-2.334,4.715,5.534,4.926,4.535-2.943a21.132,21.132,0,0,0,3.833,1.5l1.284,5.28,7.405.217,1.6-5.236c.072-.016.143-.028.215-.045a21.031,21.031,0,0,0,3.636-1.226l4.4,3.239,5.812-4.594-2.112-4.982a21.2,21.2,0,0,0,2.215-3.515l5.349-.343,1.5-7.255ZM324.686,96.9a10.855,10.855,0,1,1-3.54-14.937,10.855,10.855,0,0,1,3.54,14.937\"\n transform=\"translate(-209.495 -47.884)\"\n fill=\"#eaeaea\"\n />\n <path\n id=\"Path_282\"\n data-name=\"Path 282\"\n d=\"M311.132,105.459a27.446,27.446,0,0,0,4.235-1.433l-.811-.008,4.921,3.619a.874.874,0,0,0,.959-.081l6.494-5.132c.126-.1.3-.3.225-.484l-1.7-4.008c-.131-.309-.718-1.2-.654-1.543.011-.056.92-1.078,1.046-1.272a26.523,26.523,0,0,0,1.392-2.415l-.7.413,5.976-.383a.78.78,0,0,0,.737-.54l1.676-8.106a.356.356,0,0,0-.162-.335l-3.07-1.566a8.038,8.038,0,0,1-1.766-.9c-.04-.038-.212-.071-.246-.126-.171-.272.243.576.048-.239-.147-.614-.1-1.359-.177-1.982a12.8,12.8,0,0,1-.437-2.393c-.032.316-.214.259.087.053a12.324,12.324,0,0,0,1.367-1.3l2.555-2.439a.393.393,0,0,0,.053-.492l-3.927-7.286c-.125-.231-.528-.211-.735-.164L323.1,66.16l.735.164a18.337,18.337,0,0,0-3.194-3.011c-.518-.346-.492-.115-.563-.5a4.22,4.22,0,0,1,.115-1.035q.232-2.087.463-4.174a.393.393,0,0,0-.291-.4l-7.692-3.057a.9.9,0,0,0-.945.253l-3.25,4.309.791-.289a26.588,26.588,0,0,0-5.547-.184l.553.195L301.3,53.965a.7.7,0,0,0-.735-.164L292.7,56.4c-.193.064-.568.244-.555.509l.213,4.1a3.924,3.924,0,0,1,.05.949c-.106.462.113.076-.365.377a21.976,21.976,0,0,0-3.671,3.047l.945-.254-5.21-1.526a.9.9,0,0,0-1.025.374l-4.347,7.045a.356.356,0,0,0,.027.371l2.777,2.981c.3.326.884.813.917,1.137a12.491,12.491,0,0,1-.55,1.935,25.709,25.709,0,0,0-.408,2.811l.381-.445-5.148,2.256a.564.564,0,0,0-.372.573l1.2,8.19c.028.193.275.287.437.307l5.76.71-.437-.307c.28.637.573,1.266.9,1.881q.34.642.72,1.263c.128.21.606.729.639.831.093.29-.377,1.021-.587,1.445l-1.895,3.828a.365.365,0,0,0,.124.463l6.182,5.5c.255.226.721.073.959-.081l5.067-3.287-.829.145c.764.378,1.538.73,2.336,1.031.265.1,1.649.4,1.679.432.292.315.349,1.434.447,1.837l.973,4a.474.474,0,0,0,.437.307l8.274.243c.284.008.77-.079.871-.409l1.791-5.85-.517.381.24-.05c.84-.177.585-1.091-.246-.916l-.24.051a.74.74,0,0,0-.516.381l-1.791,5.85.871-.409-8.274-.242.437.307-1-4.127a7.018,7.018,0,0,0-.416-1.711c-.429-.732-2.169-.932-2.957-1.259-.855-.356-1.593-1.028-2.486-.579a16.665,16.665,0,0,0-1.489.966l-3.544,2.3.959-.081-6.182-5.5.124.463,2.607-5.268a.366.366,0,0,0-.027-.371,25.426,25.426,0,0,1-1.513-2.47c-.273-.515-.457-1.514-.939-1.857A3.838,3.838,0,0,0,283,90.731l-4.537-.559.437.307-1.2-8.19-.373.574,5.148-2.256a.618.618,0,0,0,.381-.445,25.718,25.718,0,0,1,.408-2.811c.115-.552.735-1.883.569-2.36-.142-.407-.7-.807-.985-1.111L281,71.893a5.346,5.346,0,0,0-.746-.8c-.4-.272-.005-.338-.221.063,1.3-2.408,2.895-4.691,4.331-7.019l-1.025.374,5.21,1.527a.951.951,0,0,0,.945-.253,24.834,24.834,0,0,1,4.055-3.234.545.545,0,0,0,.234-.356q-.14-2.691-.28-5.382l-.554.509,7.858-2.6-.735-.164,2.974,4.465a.62.62,0,0,0,.553.2,24.9,24.9,0,0,1,5.2.177.918.918,0,0,0,.791-.289l3.25-4.309-.945.254,7.692,3.057-.292-.4q-.244,2.2-.489,4.4c-.04.36-.238.973-.054,1.315.242.45,1.186.92,1.582,1.258a24.3,24.3,0,0,1,2.269,2.23.733.733,0,0,0,.735.164l5.425-1.25-.735-.164,3.927,7.286c.017-.164.035-.327.053-.492l-4.147,3.959a.426.426,0,0,0-.109.376,22.055,22.055,0,0,1,.645,4.755.366.366,0,0,0,.162.335l3.307,1.687c.4.2,1.24.854,1.693.864.327.006-.055-.013,0-.2-.049.155-.054.325-.1.481-.711,2.453-1.049,5.075-1.567,7.578l.737-.54-4.774.306a4.174,4.174,0,0,0-1.558.172c-.517.28-.731,1.074-1,1.546a24.469,24.469,0,0,1-1.734,2.578c-.069.091-.161.253-.109.376l2.36,5.566.225-.484-6.494,5.132.959-.081-3.8-2.8a5.03,5.03,0,0,0-1.249-.888c-.53-.155-1.086.236-1.551.42a24.062,24.062,0,0,1-3.02.942c-.83.206-.584,1.122.246.916\"\n transform=\"translate(-199.854 -38.882)\"\n fill=\"#cfcfcf\"\n />\n <path\n id=\"Path_283\"\n data-name=\"Path 283\"\n d=\"M344.1,121.226a10.089,10.089,0,0,1,11.133-4.385,10.565,10.565,0,0,1,7.579,8.932,10.4,10.4,0,0,1-5.687,10.455,10.2,10.2,0,0,1-11.72-2.236,10.641,10.641,0,0,1-1.3-12.766c.379-.639-.979-.658-1.279-.153a11.338,11.338,0,0,0,1.231,13.372,11.682,11.682,0,0,0,12.658,3,11.533,11.533,0,0,0,7.517-10.994,11.36,11.36,0,0,0-7.865-10.4,11.889,11.889,0,0,0-13.541,5.026c-.4.619.964.644,1.279.153\"\n transform=\"translate(-246.745 -83.529)\"\n fill=\"#cfcfcf\"\n />\n <path\n id=\"Path_284\"\n data-name=\"Path 284\"\n d=\"M196.861,234.476a16.167,16.167,0,0,0,2.945-.221l2.668,3.256,5.211-2.318-.626-4.118a16.317,16.317,0,0,0,2.322-2.2l4.055.764,2.5-5.125-3-2.645a16.184,16.184,0,0,0,.4-3.294c0-.026,0-.051,0-.078l3.444-1.935-1.378-5.534-3.835-.091a16.252,16.252,0,0,0-1.976-2.986l1.34-3.551-4.613-3.354-2.9,2.322a16.034,16.034,0,0,0-3.557-1.038l-1.224-3.488-5.689.4-.731,3.64a16.129,16.129,0,0,0-3.355,1.519l-3.217-1.908-4.1,3.961,1.835,3.36a16.107,16.107,0,0,0-1.518,3.2l-3.822.628-.6,5.672,3.724,1.456a16.027,16.027,0,0,0,.849,3.229l-2.639,3.072,3.188,4.729,3.943-1.33a16.258,16.258,0,0,0,2.573,1.846l-.049,4.183,5.482,1.574,2.194-3.6c.056,0,.112.006.169.007m-4.778-21.488a7.479,7.479,0,1,1-.185,10.575,7.479,7.479,0,0,1,.185-10.575\"\n transform=\"translate(-128.31 -143.797)\"\n fill=\"#e3e3e3\"\n />\n <path\n id=\"Path_285\"\n data-name=\"Path 285\"\n d=\"M216.713,226.9a14.491,14.491,0,0,0,.355-2.948c0-.023,0-.046,0-.069l3.082-1.732-1.234-4.953-3.432-.082a14.546,14.546,0,0,0-1.768-2.672l1.2-3.179-4.129-3-2.6,2.078a14.352,14.352,0,0,0-3.184-.929l-1.1-3.122-5.092.355-.655,3.259a14.434,14.434,0,0,0-3,1.36l-2.88-1.708-3.673,3.545,1.642,3.007a14.432,14.432,0,0,0-1.359,2.862l-3.421.562-.535,5.077,3.333,1.3a14.348,14.348,0,0,0,.76,2.89l-2.362,2.749,2.854,4.233,3.529-1.191a14.553,14.553,0,0,0,2.3,1.653l-.044,3.744,4.907,1.408,1.963-3.222c.051,0,.1.006.151.007a14.491,14.491,0,0,0,2.636-.2l2.388,2.914,4.664-2.075-.56-3.686a14.613,14.613,0,0,0,2.078-1.969l3.629.684,2.239-4.588Zm-8.812,2.235a7.479,7.479,0,1,1,.185-10.575,7.479,7.479,0,0,1-.185,10.575\"\n transform=\"translate(-133.738 -149.182)\"\n fill=\"#eaeaea\"\n />\n <path\n id=\"Path_286\"\n data-name=\"Path 286\"\n d=\"M195.027,233.681a19.286,19.286,0,0,0,2.945-.221l-.553-.195,2.667,3.256a.783.783,0,0,0,.908.1l5.211-2.318a.563.563,0,0,0,.372-.573l-.626-4.118-.225.484a19.87,19.87,0,0,0,2.438-2.307l-.791.289,4.055.764a.872.872,0,0,0,.871-.409l2.5-5.125a.364.364,0,0,0-.124-.462l-2.193-1.931a2.815,2.815,0,0,1-.549-.483c-.188-.313-.118-.06-.123-.284-.007-.267.291-1.084.332-1.469a13.317,13.317,0,0,0,.088-1.514l-.381.445,3.444-1.935c.2-.113.438-.31.372-.573l-1.378-5.534a.475.475,0,0,0-.437-.307l-2.325-.055a4.037,4.037,0,0,1-1.3-.031c-.528-.26.4.381-.043-.211-.26-.345-.457-.79-.7-1.153-.281-.425-.961-1.019-.967-1.261a4.565,4.565,0,0,1,.453-1.2l.813-2.154a.364.364,0,0,0-.124-.462l-4.613-3.354a.874.874,0,0,0-.959.081l-2.9,2.322.829-.145a19.009,19.009,0,0,0-3.711-1.073l.437.307-1.224-3.488a.566.566,0,0,0-.609-.31l-5.689.4a.78.78,0,0,0-.737.54l-.731,3.64.554-.509a19.226,19.226,0,0,0-3.528,1.583l.811.008-3.217-1.908a.9.9,0,0,0-1.075.189l-4.1,3.961a.393.393,0,0,0-.052.492l1.3,2.379c.1.178.546.736.524.959a.535.535,0,0,0-.518.525l-.231.449a18.352,18.352,0,0,0-.784,1.875l.7-.413-3.821.628c-.289.048-.7.19-.737.54q-.3,2.836-.6,5.672a.393.393,0,0,0,.292.4l2.115.827a5.514,5.514,0,0,1,1.284.5c.058.047.258.053.3.118a.446.446,0,0,0-.085.686q.074.351.169.7c.083.315.45.992.471,1.182s.089-.044-.039.237a5.665,5.665,0,0,1-.87,1.013l-1.587,1.847a.393.393,0,0,0-.053.492l3.188,4.729a.7.7,0,0,0,.735.164l3.943-1.33-.638-.072c.46.392.928.77,1.424,1.115a5.293,5.293,0,0,0,.987.419c.142.2-.012,1.028-.015,1.27q-.017,1.445-.034,2.89a.393.393,0,0,0,.291.4l5.482,1.573a.9.9,0,0,0,1.025-.374l2.194-3.6-.871.41.169.007c.649.028,1.365-.933.463-.972l-.169-.007a.917.917,0,0,0-.871.409l-2.194,3.6,1.025-.374-5.482-1.574.292.4q.017-1.508.035-3.017a4.2,4.2,0,0,0,.014-1.166c-.211-.618-1.152-.941-1.679-1.33-.569-.421-.958-1-1.694-.924a5.714,5.714,0,0,0-1.1.371l-2.844.959.735.164-3.188-4.729-.052.492,2.639-3.072a.429.429,0,0,0,.109-.376,18.208,18.208,0,0,1-.566-1.814,5.147,5.147,0,0,0-.34-1.531c-.177-.229-.657-.325-.906-.422l-3.044-1.19.291.4q.3-2.836.6-5.672l-.737.54,3.821-.628c.244-.04.6-.144.7-.413a18.426,18.426,0,0,1,.785-1.875c.184-.372.756-1.044.772-1.451.011-.265-.259-.6-.378-.817l-1.522-2.786q-.026.246-.053.492l4.1-3.961-1.075.189,3.218,1.908a.855.855,0,0,0,.811.008,18.325,18.325,0,0,1,1.627-.853,12.91,12.91,0,0,0,1.728-.667c.365-.242.383-.477.468-.878.227-1.066.43-2.138.644-3.207l-.736.54,5.689-.4-.609-.31,1.224,3.488a.5.5,0,0,0,.437.307,17.356,17.356,0,0,1,3.4,1,.918.918,0,0,0,.829-.145l2.9-2.322-.959.081,4.613,3.354-.124-.463c-.383,1.014-.773,2.026-1.148,3.043a1.36,1.36,0,0,0-.164.879c.1.415.821,1.062,1.068,1.435.332.5.626,1.02.907,1.55a.542.542,0,0,0,.38.192l3.835.091-.437-.307,1.378,5.534.372-.573-3.444,1.935c-.153.086-.383.238-.381.445a15.781,15.781,0,0,1-.4,3.371.367.367,0,0,0,.162.335l3,2.645-.124-.463-2.5,5.125.871-.409-2.924-.551a5.749,5.749,0,0,0-1.13-.213c-.76.025-1.063.618-1.571,1.125s-1.531,1.014-1.651,1.74a3.96,3.96,0,0,0,.157,1.03l.469,3.088.372-.573-5.211,2.318.908.1-2.147-2.62c-.184-.225-.4-.629-.682-.759a2.062,2.062,0,0,0-1.115.031,18.055,18.055,0,0,1-2.222.118c-.763,0-1.026.977-.119.979\"\n transform=\"translate(-126.535 -142.513)\"\n fill=\"#cfcfcf\"\n />\n <path\n id=\"Path_287\"\n data-name=\"Path 287\"\n d=\"M223.113,243.525a6.781,6.781,0,0,1,9.788.468,7.148,7.148,0,0,1-.35,9.729,6.744,6.744,0,0,1-9.848-.665,7.184,7.184,0,0,1,.526-9.639c.586-.6-.7-.822-1.119-.394a7.979,7.979,0,0,0-1.6,9.112,8.109,8.109,0,0,0,8.09,4.392,8.313,8.313,0,0,0,7.109-5.834,7.9,7.9,0,0,0-3.305-8.782,8.439,8.439,0,0,0-10.176,1c-.666.61.39,1.066.887.61\"\n transform=\"translate(-158.896 -174.029)\"\n fill=\"#cfcfcf\"\n />\n </g>\n </svg>\n </Box>\n );\n}\n\nexport default NoTestsImage;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport {\n Box,\n Skeleton,\n Button,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n CircularProgress\n} from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport EditIcon from '@mui/icons-material/Edit';\nimport { classes } from '../styles';\nimport SkeletonTable from '../../shared/SkeletonTable';\nimport { IAutomatedTestProps, IAutomatedTest } from '../../types';\nimport { IApplicationStatus } from '../../../Job/types';\nimport TestGridModal from './TestGridModal';\nimport NoTestsImage from './NoTests';\n\nexport default function TestGrid({ apiKey, jobId, setSnackbar }: IAutomatedTestProps) {\n const [loading, setLoading] = useState({\n automatedTests: true,\n applicationStatuses: true,\n testGridPackages: true\n });\n const [isDeleting, setIsDeleting] = useState(-1);\n const [automatedTests, setAutomatedTests] = useState<IAutomatedTest[]>([]);\n const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n const [testGridPackages, setTestGridPackages] = useState<{ value: string; label: string }[]>([]);\n const [modalOpen, setModalOpen] = useState(false);\n const [testIndex, setTestIndex] = useState(-1);\n\n const getAutomatedTests = useCallback(async () => {\n setLoading((prev) => ({ ...prev, automatedTests: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/test_grid_tests`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const { test_grid_tests } = await response.json();\n setAutomatedTests(test_grid_tests);\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error fetching automated tests',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, automatedTests: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const getTestgridPackages = useCallback(async () => {\n setLoading((prev) => ({ ...prev, testGridPackages: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/test_grid_packages`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const { test_grid_packages } = await response.json();\n setTestGridPackages(test_grid_packages);\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error fetching application statuses',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, testGridPackages: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const getApplicationStatuses = useCallback(async () => {\n setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/job_application_statuses`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const { job_application_statuses } = await response.json();\n job_application_statuses.shift(); // Remove \"New\" status from array\n setApplicationStatuses(job_application_statuses);\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error fetching application statuses',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const handleOpenModal = (index: number) => {\n setTestIndex(index);\n setModalOpen(true);\n };\n\n const removeAutomatedTest = async (index: number) => {\n setIsDeleting(index);\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/test_grid_tests/${automatedTests[index].id}`,\n {\n method: 'DELETE',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }\n );\n if (response.ok) {\n setSnackbar({\n message: 'Automated test deleted successfully',\n state: 'success'\n });\n const newAutomatedTests = [...automatedTests];\n newAutomatedTests.splice(index, 1);\n setAutomatedTests(newAutomatedTests);\n } else {\n throw new Error('Error deleting automated test');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error deleting automated test',\n state: 'error'\n });\n } finally {\n setIsDeleting(-1);\n }\n };\n\n useEffect(() => {\n getAutomatedTests();\n getApplicationStatuses();\n getTestgridPackages();\n }, [getApplicationStatuses, getAutomatedTests, getTestgridPackages]);\n\n return (\n <Box sx={classes.testGridContainer}>\n <Box sx={classes.titleAndButtonContainer}>\n <h2>Automated testgrid</h2>\n <Button sx={classes.newButton} onClick={() => handleOpenModal(-1)}>\n Create automated test\n </Button>\n </Box>\n {loading.automatedTests || automatedTests.length > 0 ? (\n <TableContainer sx={classes.tableContainer}>\n <Table sx={classes.table} aria-label=\"auto email replies table\">\n <TableHead>\n <TableRow>\n <TableCell>Package</TableCell>\n <TableCell>Trigger status</TableCell>\n <TableCell>Pass percentage</TableCell>\n <TableCell>Pass status</TableCell>\n <TableCell>Fail status</TableCell>\n <TableCell align=\"right\">{/*Action column*/}</TableCell>\n </TableRow>\n </TableHead>\n {loading.automatedTests || loading.applicationStatuses\n ? <SkeletonTable rows={5} cols={6} />\n : (\n <TableBody>\n {automatedTests.map((reply, index) => (\n <TableRow key={reply.id}>\n <TableCell>\n {testGridPackages.find((tgPackage) => tgPackage.value === reply.package)\n ?.label ?? '-'}\n </TableCell>\n <TableCell>\n {applicationStatuses.find((status) => status.id === reply.trigger_status_id)\n ?.name ?? '-'}\n </TableCell>\n <TableCell>{`${reply.pass_at}% or greater`}</TableCell>\n <TableCell>\n {applicationStatuses.find((status) => status.id === reply.pass_status_id)\n ?.name ?? '-'}\n </TableCell>\n <TableCell>\n {applicationStatuses.find((status) => status.id === reply.fail_status_id)\n ?.name ?? '-'}\n </TableCell>\n <TableCell sx={classes.tableActions}>\n <IconButton\n sx={classes.tableEditButton}\n onClick={() => handleOpenModal(index)}\n >\n <EditIcon />\n </IconButton>\n <IconButton\n sx={classes.tableDeleteButton}\n onClick={() => removeAutomatedTest(index)}\n >\n {isDeleting === index ? (\n <CircularProgress size={24} color=\"inherit\" />\n ) : (\n <DeleteIcon />\n )}\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n )}\n </Table>\n </TableContainer>\n ) : (\n <Box sx={classes.noTests}>\n <NoTestsImage />\n <Box>No automated tests have been created for this job</Box>\n </Box>\n )}\n <TestGridModal\n apiKey={apiKey}\n jobId={jobId}\n modalOpen={modalOpen}\n setModalOpen={setModalOpen}\n automatedTests={automatedTests}\n setAutomatedTests={setAutomatedTests}\n applicationStatuses={applicationStatuses}\n testGridPackages={testGridPackages}\n testIndex={testIndex}\n loading={loading}\n setSnackbar={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { useState, useEffect, useRef } from 'react';\nimport {\n Box,\n Modal,\n Button,\n Autocomplete,\n TextField,\n Slider,\n CircularProgress\n} from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { ITestGridProps } from '../../types';\nimport { IApplicationStatus } from '../../../Job/types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\n\nexport default function TestGridModal({\n apiKey,\n jobId,\n modalOpen,\n setModalOpen,\n automatedTests,\n setAutomatedTests,\n applicationStatuses,\n testGridPackages,\n testIndex,\n loading,\n setSnackbar\n}: ITestGridProps) {\n const [isSending, setIsSending] = useState(false);\n const [selectedPackage, setSelectedPackage] = useState<{ value: string; label: string } | null>(\n null\n );\n const [selectedTriggerStatus, setSelectedTriggerStatus] = useState<IApplicationStatus | null>(\n null\n );\n const [passAt, setPassAt] = useState(0);\n const [selectedPassStatus, setSelectedPassStatus] = useState<IApplicationStatus | null>(null);\n const [selectedFailStatus, setSelectedFailStatus] = useState<IApplicationStatus | null>(null);\n const [errors, setErrors] = useState({\n package: '',\n trigger: '',\n pass: '',\n passStatus: '',\n failStatus: ''\n });\n\n const refObject = {\n package: useRef<HTMLDivElement>(null),\n trigger: useRef<HTMLDivElement>(null),\n pass: useRef<HTMLDivElement>(null),\n passStatus: useRef<HTMLDivElement>(null),\n failStatus: useRef<HTMLDivElement>(null)\n };\n\n const handleSubmit = async () => {\n let errorRef = '';\n if (\n !selectedPackage ||\n (automatedTests.some((test) => test.package === selectedPackage.value) &&\n selectedPackage.value !== automatedTests[testIndex].package)\n ) {\n setErrors((prev) => ({\n ...prev,\n package: !selectedPackage ? 'Please select a package' : 'Package already being used'\n }));\n errorRef = errorRef || 'package';\n }\n if (!selectedTriggerStatus) {\n setErrors((prev) => ({ ...prev, trigger: 'Please select a trigger status' }));\n errorRef = errorRef || 'trigger';\n }\n if (!passAt) {\n setErrors((prev) => ({ ...prev, pass: 'Please select a trigger percentage' }));\n errorRef = errorRef || 'pass';\n }\n if (!selectedPassStatus) {\n setErrors((prev) => ({ ...prev, passStatus: 'Please select a pass status' }));\n errorRef = errorRef || 'passStatus';\n }\n if (!selectedFailStatus) {\n setErrors((prev) => ({ ...prev, failStatus: 'Please select a fail status' }));\n errorRef = errorRef || 'failStatus';\n }\n if (errorRef) {\n refObject[errorRef as keyof typeof refObject].current?.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n return;\n }\n try {\n setIsSending(true);\n if (testIndex === -1) {\n const response = await fetch(`/api/v4/jobs/${jobId}/test_grid_tests`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n package: selectedPackage?.value,\n trigger_status_id: selectedTriggerStatus?.id,\n pass_at: passAt,\n pass_status_id: selectedPassStatus?.id,\n fail_status_id: selectedFailStatus?.id\n })\n });\n const data = await response.json();\n if (response.ok) {\n setAutomatedTests((prev) => [...prev, data]);\n setSnackbar({\n message: 'Automated test created successfully',\n state: 'success'\n });\n setModalOpen(false);\n } else {\n throw new Error('Error creating automated test');\n }\n } else {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/test_grid_tests/${automatedTests[testIndex].id}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n package: selectedPackage?.value,\n trigger_status_id: selectedTriggerStatus?.id,\n pass_at: passAt,\n pass_status_id: selectedPassStatus?.id,\n fail_status_id: selectedFailStatus?.id\n })\n }\n );\n const data = await response.json();\n if (response.ok) {\n setAutomatedTests((prev) => {\n const newTests = [...prev];\n newTests[testIndex] = data;\n return newTests;\n });\n setSnackbar({\n message: 'Auto reply updated successfully',\n state: 'success'\n });\n setModalOpen(false);\n } else {\n throw new Error('Error updating auto reply');\n }\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error creating/updating automated test',\n state: 'error'\n });\n } finally {\n setIsSending(false);\n }\n };\n\n useEffect(() => {\n setErrors({\n package: '',\n trigger: '',\n pass: '',\n passStatus: '',\n failStatus: ''\n });\n if (testIndex === -1) {\n setSelectedPackage(null);\n setSelectedTriggerStatus(null);\n setPassAt(0);\n setSelectedPassStatus(null);\n setSelectedFailStatus(null);\n return;\n }\n setSelectedPackage(\n testGridPackages.find((p) => p.value === automatedTests[testIndex].package) || null\n );\n setSelectedTriggerStatus(\n applicationStatuses.find(\n (status) => status.id === automatedTests[testIndex].trigger_status_id\n ) || null\n );\n setPassAt(automatedTests[testIndex].pass_at);\n setSelectedPassStatus(\n applicationStatuses.find(\n (status) => status.id === automatedTests[testIndex].pass_status_id\n ) || null\n );\n setSelectedFailStatus(\n applicationStatuses.find(\n (status) => status.id === automatedTests[testIndex].fail_status_id\n ) || null\n );\n }, [applicationStatuses, automatedTests, testGridPackages, testIndex]);\n\n return (\n <Modal\n open={modalOpen}\n onClose={() => setModalOpen(false)}\n aria-labelledby=\"new-test-grid-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n <Box sx={classes.actionModalHeader}>\n {`${testIndex === -1 ? 'New' : 'Edit'} automated test`}\n </Box>\n <Box\n sx={classes.modalContent}\n aria-label={`${testIndex === -1 ? 'New' : 'Edit'} automated test modal content`}\n >\n <Box\n role=\"form\"\n id=\"automated-test-form\"\n aria-label=\"automated test form\"\n sx={{ height: '100%', overflowX: 'clip' }}\n >\n <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={refObject.package}>\n <Autocomplete\n options={testGridPackages}\n getOptionLabel={(option) => option.label}\n onChange={(event, value) => {\n setSelectedPackage(value);\n setErrors((prev) => ({ ...prev, package: '' }));\n }}\n loading={loading.testGridPackages}\n loadingText=\"Loading packages...\"\n value={selectedPackage}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Package status\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n />\n {errors.package && <Box sx={classes.formError}>{errors.package}</Box>}\n </Box>\n <Box>\n <Box\n sx={{ ...classes.actionModalFormLine, marginBottom: '18px' }}\n ref={refObject.trigger}\n >\n <Autocomplete\n options={applicationStatuses}\n getOptionLabel={(option) => option.name}\n onChange={(event, value) => {\n setSelectedTriggerStatus(value);\n setErrors((prev) => ({ ...prev, trigger: '' }));\n }}\n loading={loading.applicaitonStatuses}\n loadingText=\"Loading statuses...\"\n value={selectedTriggerStatus}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Trigger status\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n />\n {errors.trigger && <Box sx={classes.formError}>{errors.trigger}</Box>}\n </Box>\n <Box sx={classes.sliderLine} ref={refObject.pass}>\n <Box sx={classes.inputLabel}>Pass percentage</Box>\n <Slider\n sx={classes.percentageSlider}\n value={passAt}\n onChange={(event, value: number | number[]) => setPassAt(value as number)}\n valueLabelDisplay=\"on\"\n valueLabelFormat={(value: number) => `${value}%`}\n />\n </Box>\n <Box sx={classes.actionModalFormLine} ref={refObject.passStatus}>\n <Autocomplete\n options={applicationStatuses}\n getOptionLabel={(option) => option.name}\n onChange={(event, value) => {\n setSelectedPassStatus(value);\n setErrors((prev) => ({ ...prev, passStatus: '' }));\n }}\n loading={loading.applicaitonStatuses}\n loadingText=\"Loading statuses...\"\n value={selectedPassStatus}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Pass status\" InputLabelProps={{ shrink: true }} />\n )}\n />\n {errors.passStatus && <Box sx={classes.formError}>{errors.passStatus}</Box>}\n </Box>\n <Box sx={classes.actionModalFormLine} ref={refObject.failStatus}>\n <Autocomplete\n options={applicationStatuses}\n getOptionLabel={(option) => option.name}\n onChange={(event, value) => {\n setSelectedFailStatus(value);\n setErrors((prev) => ({ ...prev, failStatus: '' }));\n }}\n loading={loading.applicaitonStatuses}\n loadingText=\"Loading statuses...\"\n value={selectedFailStatus}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Fail status\" InputLabelProps={{ shrink: true }} />\n )}\n />\n {errors.failStatus && <Box sx={classes.formError}>{errors.failStatus}</Box>}\n </Box>\n </Box>\n </Box>\n </Box>\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-test-grid-button\"\n sx={classes.modalCancelButton}\n onClick={() => setModalOpen(false)}\n >\n Cancel\n </Button>\n <Button\n id=\"send-test-grid-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState, useCallback, useEffect } from 'react';\nimport {\n Box,\n Skeleton,\n Button,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n CircularProgress\n} from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport EditIcon from '@mui/icons-material/Edit';\nimport NewAutoForward from './NewAutoForward';\nimport ImmediateChangesNotice from '../shared/ImmediateChangesNotice';\nimport SkeletonTable from '../../shared/SkeletonTable';\nimport { classes } from '../styles';\nimport { IStatusTransitionsProps, IAutoForwarders } from '../../types';\nimport { IApplicationStatus, IEmailTemplate } from '../../../Job/types';\nimport { immutableRemove } from '../../../Components/Utilities/immutableRemove';\n\nexport default function AutoForward({ apiKey, jobId, setSnackbar }: IStatusTransitionsProps) {\n const [loading, setLoading] = useState({\n autoForwarders: true,\n applicationStatuses: true,\n templatesList: true\n });\n const [isDeleting, setIsDeleting] = useState(-1);\n const [autoForwarders, setAutoForwarders] = useState<IAutoForwarders[]>([]);\n const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n const [templates, setTemplates] = useState([]);\n const [modalOpen, setModalOpen] = useState(false);\n const [forwardIndex, setForwardIndex] = useState(0);\n\n const getAutoForwarders = useCallback(async () => {\n setLoading((prev) => ({ ...prev, autoForwarders: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_forwarders`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const { auto_forwarders } = await response.json();\n setAutoForwarders(auto_forwarders);\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error fetching auto forwarders',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, autoForwarders: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const getApplicationStatuses = useCallback(async () => {\n setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/job_application_statuses`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const { job_application_statuses } = await response.json();\n setApplicationStatuses(job_application_statuses);\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error fetching status transitions',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const getTemplatesAndPlaceholders = useCallback(async () => {\n setLoading((prev) => ({ ...prev, templatesList: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/email_templates`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((res) => res.json());\n setTemplates(\n response.email_templates.map(\n (template: IEmailTemplate) => `${template.id} - ${template.name}`\n )\n );\n } catch (error) {\n setSnackbar({\n message: 'Error fetching templates',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, templatesList: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const removeAutoForwarder = async (index: number) => {\n setIsDeleting(index);\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/auto_forwarders/${autoForwarders[index].id}`,\n {\n method: 'DELETE',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }\n );\n if (response.ok) {\n setAutoForwarders(immutableRemove(autoForwarders, index));\n setSnackbar({\n message: 'Auto forwarder deleted successfully',\n state: 'success'\n });\n } else {\n throw new Error('Error deleting auto forwarder');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error removing auto forwarder',\n state: 'error'\n });\n } finally {\n setIsDeleting(-1);\n }\n };\n\n const handleOpenModal = (index: number) => {\n setForwardIndex(index);\n setModalOpen(true);\n };\n\n useEffect(() => {\n getAutoForwarders();\n getApplicationStatuses();\n getTemplatesAndPlaceholders();\n }, [getApplicationStatuses, getAutoForwarders, getTemplatesAndPlaceholders]);\n\n return (\n <Box sx={classes.automationContainer}>\n <Box sx={classes.titleAndButtonContainer}>\n <h2>Auto forward</h2>\n <Button\n data-testid=\"add-auto-forwarding-button\"\n sx={classes.newButton}\n onClick={() => handleOpenModal(-1)}\n >\n New auto forwarding config\n </Button>\n </Box>\n <ImmediateChangesNotice />\n {loading.autoForwarders || autoForwarders.length > 0 ? (\n <TableContainer sx={classes.tableContainer}>\n <Table sx={classes.table} aria-label=\"auto forwarders table\">\n <TableHead>\n <TableRow>\n <TableCell>Trigger Status</TableCell>\n <TableCell>Recipient Emails</TableCell>\n <TableCell align=\"right\">{/*Action column*/}</TableCell>\n </TableRow>\n </TableHead>\n {loading.autoForwarders || loading.applicationStatuses || loading.templatesList\n ? <SkeletonTable rows={5} cols={3} />\n : (\n <TableBody>\n {autoForwarders.map((forwarder, index) => (\n <TableRow key={forwarder.id}>\n <TableCell>\n {applicationStatuses.find(\n (status) => status.id === forwarder.trigger_status_id\n )?.name ?? '-'}\n </TableCell>\n <TableCell>{forwarder.recipient_emails}</TableCell>\n <TableCell sx={classes.tableActions}>\n <IconButton\n id=\"auto-forward-edit-button\"\n data-testid=\"auto-forward-edit-button\"\n sx={classes.tableEditButton}\n onClick={() => handleOpenModal(index)}\n >\n <EditIcon />\n </IconButton>\n <IconButton\n id=\"auto-forward-delete-button\"\n data-testid=\"auto-forward-delete-button\"\n sx={classes.tableDeleteButton}\n onClick={() => removeAutoForwarder(index)}\n >\n {isDeleting === index ? (\n <CircularProgress size={24} color=\"inherit\" />\n ) : (\n <DeleteIcon />\n )}\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n )}\n </Table>\n </TableContainer>\n ) : (\n <Box sx={classes.noAutoForwarders}>\n No auto forwarders configured. Click on the button above to create one.\n </Box>\n )}\n {!loading.autoForwarders && !loading.applicationStatuses && (\n <NewAutoForward\n jobId={jobId}\n apiKey={apiKey}\n modalOpen={modalOpen}\n setModalOpen={setModalOpen}\n autoForwarders={autoForwarders}\n setAutoForwarders={setAutoForwarders}\n applicationStatuses={applicationStatuses || []}\n emailTemplates={templates}\n forwardIndex={modalOpen ? forwardIndex : -1}\n isLoadingTemplateList={loading.templatesList}\n setSnackbar={setSnackbar}\n />\n )}\n </Box>\n );\n}\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport {\n Box,\n Modal,\n Button,\n Autocomplete,\n TextField,\n Skeleton,\n CircularProgress\n} from '@mui/material';\nimport MultiTagInput from '../../../Components/CustomUIElements/MultiTagInput';\nimport CancelButton from '../shared/CancelButton';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IAutoModalProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IApplicationStatus } from '../../../Job/types';\nimport { stringToSeconds } from '../../../Components/Utilities/stringToSeconds';\nimport { secondsToString } from '../../../Components/Utilities/secondsToString';\nimport dompurify from 'dompurify';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport DelaySelectWrapper from '../shared/DelaySelectWrapper';\n\nexport default function NewAutoForward({\n jobId,\n apiKey,\n modalOpen,\n setModalOpen,\n autoForwarders,\n setAutoForwarders,\n applicationStatuses,\n emailTemplates,\n isLoadingTemplateList,\n forwardIndex,\n setSnackbar\n}: IAutoModalProps) {\n const [tempEmails, setTempEmails] = useState<string[]>([]);\n const [isSending, setIsSending] = useState(false);\n const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n const [isLoadingTemplate, setIsLoadingTemplate] = useState(false);\n const [delay, setDelay] = useState('None');\n const [selectedStatus, setSelectedStatus] = useState<IApplicationStatus | null>(null);\n const [body, setBody] = useState('');\n const [errors, setErrors] = useState({\n status: '',\n template: '',\n emails: ''\n });\n\n const refObject = {\n status: useRef<HTMLDivElement>(null),\n template: useRef<HTMLDivElement>(null),\n emails: useRef<HTMLDivElement>(null)\n };\n\n const handleSelectTemplate = useCallback(\n async (value: string) => {\n if (!value) {\n setSelectedTemplate(null);\n setBody('');\n return;\n }\n setIsLoadingTemplate(true);\n setBody(\n '<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>Loading template...</strong></span></p>'\n );\n const id = value.split(' -')[0];\n setSelectedTemplate(value);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/email_templates/${id}`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const data = await response.json();\n setBody(data.body);\n } catch (error) {\n setBody(\n '<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>Error loading template</strong></span></p>'\n );\n } finally {\n setIsLoadingTemplate(false);\n }\n },\n [apiKey, jobId]\n );\n\n const emailIsValid = (email: string) => {\n const simpleEmailRex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (simpleEmailRex.test(String(email).toLowerCase())) {\n setErrors((prev) => ({ ...prev, emails: '' }));\n return true;\n }\n\n return false;\n };\n\n const handleSubmit = async () => {\n let errorRef = '';\n if (!selectedStatus) {\n setErrors((prev) => ({ ...prev, status: 'Please select a status' }));\n errorRef = errorRef || 'status';\n }\n if (!tempEmails.length) {\n setErrors((prev) => ({ ...prev, emails: 'Please enter at least one email address' }));\n errorRef = errorRef || 'emails';\n }\n if (errorRef) {\n refObject[errorRef as keyof typeof refObject].current?.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n return;\n }\n try {\n setIsSending(true);\n if (forwardIndex === -1) {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_forwarders`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n auto_forwarder: {\n trigger_status_id: selectedStatus?.id,\n email_template_id: selectedTemplate?.split(' -')[0],\n recipient_emails: tempEmails.join(', '),\n delay: stringToSeconds(delay)\n }\n })\n });\n const data = await response.json();\n if (response.ok) {\n setAutoForwarders((prev) => [...prev, data]);\n setSnackbar({\n message: 'Auto forwarder created successfully',\n state: 'success'\n });\n setModalOpen(false);\n } else {\n throw new Error('Error creating auto forwarder');\n }\n } else {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/auto_forwarders/${autoForwarders[forwardIndex].id}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n auto_forwarder: {\n trigger_status_id: selectedStatus?.id,\n email_template_id: selectedTemplate?.split(' -')[0],\n recipient_emails: tempEmails.join(', '),\n delay: stringToSeconds(delay)\n }\n })\n }\n );\n const data = await response.json();\n if (response.ok) {\n setAutoForwarders((prev) => {\n const newAutoForwarders = [...prev];\n newAutoForwarders[forwardIndex] = data;\n return newAutoForwarders;\n });\n setSnackbar({\n message: 'Auto forwarder updated successfully',\n state: 'success'\n });\n setModalOpen(false);\n } else {\n throw new Error('Error updating auto forwarder');\n }\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error saving auto-forwarder',\n state: 'error'\n });\n } finally {\n setIsSending(false);\n }\n };\n\n useEffect(() => {\n setErrors({\n status: '',\n template: '',\n emails: ''\n });\n if (forwardIndex === -1) {\n setTempEmails([]);\n setSelectedTemplate(null);\n setDelay('None');\n setSelectedStatus(null);\n setBody('');\n return;\n }\n setTempEmails(autoForwarders[forwardIndex].recipient_emails.split(','));\n setSelectedStatus(\n applicationStatuses.find(\n (status) => status.id === autoForwarders[forwardIndex].trigger_status_id\n ) || null\n );\n setDelay(secondsToString(autoForwarders[forwardIndex].delay));\n }, [applicationStatuses, autoForwarders, forwardIndex]);\n\n useEffect(() => {\n if (forwardIndex !== -1) {\n const emailTemplate =\n emailTemplates.find(\n (template) =>\n template.split(' - ')[0] === autoForwarders[forwardIndex].email_template_id.toString()\n ) || null;\n setSelectedTemplate(emailTemplate);\n if (emailTemplate) {\n handleSelectTemplate(emailTemplate);\n }\n }\n }, [autoForwarders, emailTemplates, forwardIndex, handleSelectTemplate]);\n\n return (\n <Modal\n open={modalOpen}\n onClose={() => setModalOpen(false)}\n aria-labelledby=\"new-auto-forward-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n <Box sx={classes.actionModalHeader}>{`${\n forwardIndex === -1 ? 'New' : 'Edit'\n } auto forward config`}</Box>\n <Box\n sx={classes.modalContent}\n aria-label={`${forwardIndex === -1 ? 'New' : 'Edit'} auto forward modal content`}\n >\n <Box\n role=\"form\"\n id=\"auto-forward-form\"\n aria-label=\"Auto forward form\"\n sx={{ height: '100%', overflowX: 'clip' }}\n >\n <Box\n sx={{ ...classes.actionModalFormLine, marginTop: '20px', marginBottom: '40px' }}\n ref={refObject.status}\n >\n <Autocomplete\n data-testid=\"trigger-status-autocomplete-auto-forward\"\n options={applicationStatuses}\n getOptionLabel={(option) => option.name}\n onChange={(event, value) => {\n setSelectedStatus(value);\n setErrors((prev) => ({ ...prev, status: '' }));\n }}\n value={selectedStatus}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Trigger status\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n renderOption={(props, option, state) => {\n return (\n <li {...props} key={option.id} data-testid={`option-${state.index}`}>\n {option.name}\n </li>\n );\n }}\n />\n {errors.status && <Box sx={classes.formError}>{errors.status}</Box>}\n </Box>\n <Box>\n <Box sx={classes.actionModalFormLine} ref={refObject.template}>\n <Virtualize\n value={selectedTemplate}\n passOptions={emailTemplates}\n setValue={(value: string) => {\n handleSelectTemplate(value);\n setErrors((prev) => ({ ...prev, template: '' }));\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '600px',\n marginTop: '20px'\n }}\n label=\"Template\"\n loading={isLoadingTemplateList}\n loadingText=\"Loading template list...\"\n />\n {errors.template && <Box sx={classes.formError}>{errors.template}</Box>}\n </Box>\n {selectedTemplate &&\n forwardIndex !== -1 &&\n (isLoadingTemplate || (forwardIndex !== -1 && !selectedTemplate) ? (\n <Skeleton\n variant=\"rectangular\"\n animation=\"wave\"\n height={400}\n width={'96%'}\n sx={classes.previewSkeleton}\n />\n ) : (\n <Box sx={{ ...classes.htmlContent }}>\n <Box sx={{ ...classes.previewHeader }}>\n <VisibilityIcon />\n Preview\n </Box>\n <Box\n sx={classes.emailPreview}\n dangerouslySetInnerHTML={{\n __html: dompurify.sanitize(body)\n }}\n />\n </Box>\n ))}\n </Box>\n <Box sx={classes.actionModalFormLine} ref={refObject.emails}>\n <MultiTagInput\n tags={tempEmails}\n setTags={(emails) => {\n setTempEmails(emails);\n setErrors((prev) => ({ ...prev, emails: '' }));\n }}\n validation={emailIsValid}\n validationMessage=\"Must input valid email\"\n label=\"Recipient email address/s\"\n width=\"600px\"\n error={errors.emails}\n />\n </Box>\n <DelaySelectWrapper delay={delay} setDelay={setDelay} />\n </Box>\n </Box>\n <Box sx={classes.modalFooter}>\n <CancelButton scope='auto-forward' setModalOpen={setModalOpen} />\n <Button\n id=\"send-auto-forward-button\"\n data-testid=\"send-auto-forward-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState, useCallback, useEffect } from 'react';\nimport {\n Box,\n Skeleton,\n Button,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n CircularProgress\n} from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport EditIcon from '@mui/icons-material/Edit';\nimport NewAutoReply from './NewAutoReply';\nimport ImmediateChangesNotice from '../shared/ImmediateChangesNotice';\nimport SkeletonTable from '../../shared/SkeletonTable';\nimport { classes } from '../styles';\nimport { IStatusTransitionsProps, IAutoReplies } from '../../types';\nimport { IApplicationStatus, IEmailTemplate } from '../../../Job/types';\nimport { immutableRemove } from '../../../Components/Utilities/immutableRemove';\n\nexport default function AutoReply({ apiKey, jobId, setSnackbar }: IStatusTransitionsProps) {\n const [loading, setLoading] = useState({\n autoReplies: true,\n applicationStatuses: true,\n templatesList: true,\n careAdvantageEvents: true\n });\n const [isDeleting, setIsDeleting] = useState(-1);\n const [autoReplies, setAutoReplies] = useState<IAutoReplies[]>([]);\n const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n const [templates, setTemplates] = useState([]);\n const [hasCareAdvantageIntegration, setHasCareAdvantageIntegration] = useState(false);\n const [careAdvantageEvents, setCareAdvantageEvents] = useState([]);\n const [modalOpen, setModalOpen] = useState(false);\n const [replyIndex, setReplyIndex] = useState(0);\n\n const getAutoReplies = useCallback(async () => {\n setLoading((prev) => ({ ...prev, autoReplies: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_emails`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const { auto_emails } = await response.json();\n setAutoReplies(auto_emails);\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error fetching auto emails',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, autoReplies: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const getApplicationStatuses = useCallback(async () => {\n setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/job_application_statuses`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const { job_application_statuses } = await response.json();\n setApplicationStatuses(job_application_statuses);\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error fetching application statuses',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const getTemplatesAndPlaceholders = useCallback(async () => {\n setLoading((prev) => ({ ...prev, templatesList: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/email_templates`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((res) => res.json());\n setTemplates(\n response.email_templates.map(\n (template: IEmailTemplate) => `${template.id} - ${template.name}`\n )\n );\n } catch (error) {\n setSnackbar({\n message: 'Error fetching templates',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, templatesList: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const getCareAdvantageEvents = useCallback(async () => {\n setLoading((prev) => ({ ...prev, careAdvantageEvents: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_emails/care_advantage_events`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((res) => res.json());\n setHasCareAdvantageIntegration(response.has_care_advantage_integration);\n setCareAdvantageEvents(response.care_advantage_events);\n } catch (error) {\n setSnackbar({\n message: 'Error fetching care advantage events',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, careAdvantageEvents: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const removeAutoReplies = async (index: number) => {\n setIsDeleting(index);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_emails/${autoReplies[index].id}`, {\n method: 'DELETE',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n if (response.ok) {\n setSnackbar({\n message: 'Auto email deleted successfully',\n state: 'success'\n });\n setAutoReplies(immutableRemove(autoReplies, index));\n } else {\n throw new Error('Error deleting auto email');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error deleting auto email',\n state: 'error'\n });\n } finally {\n setIsDeleting(-1);\n }\n };\n\n const handleOpenModal = (index: number) => {\n setReplyIndex(index);\n setModalOpen(true);\n };\n\n useEffect(() => {\n getAutoReplies();\n getApplicationStatuses();\n getTemplatesAndPlaceholders();\n getCareAdvantageEvents();\n }, [getApplicationStatuses, getAutoReplies, getTemplatesAndPlaceholders, getCareAdvantageEvents]);\n\n return (\n <Box sx={classes.automationContainer}>\n <Box sx={classes.titleAndButtonContainer}>\n <h2>Auto email reply</h2>\n <Button\n id=\"new-auto-email-reply-button\"\n data-testid=\"new-auto-email-reply-button\"\n sx={classes.newButton}\n onClick={() => handleOpenModal(-1)}\n >\n New auto email reply\n </Button>\n </Box>\n <ImmediateChangesNotice />\n {loading.autoReplies || (autoReplies && autoReplies.length > 0) ? (\n <TableContainer sx={classes.tableContainer}>\n <Table sx={classes.table} aria-label=\"auto email replies table\">\n <TableHead>\n <TableRow>\n <TableCell>Trigger status</TableCell>\n <TableCell>Email template</TableCell>\n {/* <TableCell>Sender email</TableCell> */}\n <TableCell align=\"right\">{/*Action column*/}</TableCell>\n </TableRow>\n </TableHead>\n {loading.autoReplies || loading.applicationStatuses\n ? <SkeletonTable rows={5} cols={3} />\n : (\n <TableBody>\n {autoReplies.map((reply, index) => (\n <TableRow key={reply.id}>\n <TableCell>\n {applicationStatuses.find((status) => status.id === reply.trigger_status_id)\n ?.name ?? '-'}\n </TableCell>\n <TableCell>{reply.email_template_name || '-'}</TableCell>\n {/* <TableCell>{reply.email_setting || '-'}</TableCell> */}\n <TableCell sx={classes.tableActions}>\n <IconButton\n id=\"auto-email-reply-edit-button\"\n data-testid=\"auto-email-reply-edit-button\"\n sx={classes.tableEditButton}\n onClick={() => handleOpenModal(index)}\n >\n <EditIcon />\n </IconButton>\n <IconButton\n id=\"auto-email-reply-delete-button\"\n data-testid=\"auto-email-reply-delete-button\"\n sx={classes.tableDeleteButton}\n onClick={() => removeAutoReplies(index)}\n >\n {isDeleting === index ? (\n <CircularProgress size={24} color=\"inherit\" />\n ) : (\n <DeleteIcon />\n )}\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n )}\n </Table>\n </TableContainer>\n ) : (\n <Box sx={classes.noAutoForwarders}>\n No auto replies configured. Click on the button above to create one.\n </Box>\n )}\n {!loading.autoReplies && !loading.applicationStatuses && (\n <NewAutoReply\n jobId={jobId}\n apiKey={apiKey}\n modalOpen={modalOpen}\n setModalOpen={setModalOpen}\n autoReplies={autoReplies}\n setAutoReplies={setAutoReplies}\n applicationStatuses={applicationStatuses || []}\n emailTemplates={templates}\n replyIndex={modalOpen ? replyIndex : -1}\n isLoadingTemplateList={loading.templatesList}\n hasCareAdvantageIntegration={hasCareAdvantageIntegration}\n careAdvantageEvents={careAdvantageEvents}\n setSnackbar={setSnackbar}\n />\n )}\n </Box>\n );\n}\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport {\n Box,\n Modal,\n Button,\n Autocomplete,\n TextField,\n Skeleton,\n CircularProgress\n} from '@mui/material';\nimport CancelButton from '../shared/CancelButton';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IAutoReplyProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IApplicationStatus } from '../../../Job/types';\nimport dompurify from 'dompurify';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { stringToSeconds } from '../../../Components/Utilities/stringToSeconds';\nimport { secondsToString } from '../../../Components/Utilities/secondsToString';\nimport DelaySelectWrapper from '../shared/DelaySelectWrapper';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\n\nexport default function NewAutoReply({\n jobId,\n apiKey,\n modalOpen,\n setModalOpen,\n autoReplies,\n setAutoReplies,\n applicationStatuses,\n emailTemplates,\n isLoadingTemplateList,\n replyIndex,\n hasCareAdvantageIntegration,\n careAdvantageEvents,\n setSnackbar\n}: IAutoReplyProps) {\n const [isSending, setIsSending] = useState(false);\n const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n const [selectedEvent, setSelectedEvent] = useState<string | null>(null);\n const [isLoadingTemplate, setIsLoadingTemplate] = useState(false);\n const [emailSetting, setEmailSetting] = useState('');\n const [delay, setDelay] = useState('None');\n const [selectedStatus, setSelectedStatus] = useState<IApplicationStatus | null>(null);\n const [body, setBody] = useState('');\n const [errors, setErrors] = useState({\n status: '',\n template: '',\n email: ''\n });\n\n const refObject = {\n status: useRef<HTMLDivElement>(null),\n template: useRef<HTMLDivElement>(null),\n email: useRef<HTMLDivElement>(null)\n };\n\n const handleSelectTemplate = useCallback(\n async (value: string) => {\n if (!value) {\n setSelectedTemplate(null);\n setBody('');\n return;\n }\n setIsLoadingTemplate(true);\n setBody(\n '<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>Loading template...</strong></span></p>'\n );\n const id = value.split(' -')[0];\n setSelectedTemplate(value);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/email_templates/${id}`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const data = await response.json();\n setBody(data.body);\n } catch (error) {\n setBody(\n '<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>Error loading template</strong></span></p>'\n );\n } finally {\n setIsLoadingTemplate(false);\n }\n },\n [apiKey, jobId]\n );\n\n const emailIsValid = (email: string) => {\n const simpleEmailRex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (email === '' || simpleEmailRex.test(String(email).toLowerCase())) {\n setErrors((prev) => ({ ...prev, email: '' }));\n return true;\n }\n };\n\n const handleSubmit = async () => {\n let errorRef = '';\n if (!selectedStatus) {\n setErrors((prev) => ({ ...prev, status: 'Please select a status' }));\n errorRef = errorRef || 'status';\n }\n if (!selectedTemplate) {\n setErrors((prev) => ({ ...prev, template: 'Please select a template' }));\n errorRef = errorRef || 'template';\n }\n if (!emailIsValid(emailSetting)) {\n setErrors((prev) => ({\n ...prev,\n email: 'Please enter a valid email or leave this field blank'\n }));\n errorRef = errorRef || 'email';\n }\n if (errorRef) {\n refObject[errorRef as keyof typeof refObject].current?.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n return;\n }\n try {\n setIsSending(true);\n const targetEvent = careAdvantageEvents.find((event) => event.name === selectedEvent);\n if (replyIndex === -1) {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_emails`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n trigger_status_id: selectedStatus?.id,\n email_template_id: selectedTemplate?.split(' -')[0],\n email_setting: emailSetting,\n delay: stringToSeconds(delay),\n care_advantage_event_id: targetEvent ? targetEvent.id : ''\n })\n });\n const data = await response.json();\n if (response.ok) {\n setAutoReplies((prev) => [...prev, data]);\n setSnackbar({\n message: 'Auto reply created successfully',\n state: 'success'\n });\n setModalOpen(false);\n } else {\n throw new Error('Error creating new auto reply');\n }\n } else {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/auto_emails/${autoReplies[replyIndex].id}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n trigger_status_id: selectedStatus?.id,\n email_template_id: selectedTemplate?.split(' -')[0],\n email_setting: emailSetting,\n delay: stringToSeconds(delay),\n care_advantage_event_id: targetEvent ? targetEvent.id : ''\n })\n }\n );\n const data = await response.json();\n if (response.ok) {\n setAutoReplies((prev) => {\n const newReplies = [...prev];\n newReplies[replyIndex] = data;\n return newReplies;\n });\n setSnackbar({\n message: 'Auto reply updated successfully',\n state: 'success'\n });\n setModalOpen(false);\n } else {\n throw new Error('Error updating auto reply');\n }\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Something went wrong, please try again',\n state: 'error'\n });\n } finally {\n setIsSending(false);\n }\n };\n\n useEffect(() => {\n setErrors({\n status: '',\n template: '',\n email: ''\n });\n if (replyIndex === -1) {\n setEmailSetting('');\n setSelectedTemplate(null);\n setDelay('None');\n setSelectedStatus(null);\n setBody('');\n return;\n }\n setEmailSetting(autoReplies[replyIndex].email_setting || '');\n setSelectedStatus(\n applicationStatuses.find(\n (status) => status.id === autoReplies[replyIndex].trigger_status_id\n ) || null\n );\n setDelay(secondsToString(autoReplies[replyIndex].delay));\n }, [applicationStatuses, autoReplies, replyIndex]);\n\n useEffect(() => {\n if (replyIndex !== -1) {\n const emailTemplate =\n emailTemplates.find(\n (template) =>\n template.split(' - ')[0] === autoReplies[replyIndex].email_template_id.toString()\n ) || null;\n setSelectedTemplate(emailTemplate);\n hasCareAdvantageIntegration &&\n setSelectedEvent(autoReplies[replyIndex].care_advantage_event_name);\n if (emailTemplate) {\n handleSelectTemplate(emailTemplate);\n }\n }\n }, [autoReplies, emailTemplates, replyIndex, hasCareAdvantageIntegration, handleSelectTemplate]);\n\n return (\n <Modal\n open={modalOpen}\n onClose={() => setModalOpen(false)}\n aria-labelledby=\"new-auto-email-reply-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n <Box sx={classes.actionModalHeader}>{`${\n replyIndex === -1 ? 'New' : 'Edit'\n } auto email reply`}</Box>\n <Box\n sx={classes.modalContent}\n aria-label={`${replyIndex === -1 ? 'New' : 'Edit'} auto email reply modal content`}\n >\n <Box\n role=\"form\"\n id=\"auto-email-reply-form\"\n aria-label=\"Auto email reply form\"\n sx={{ height: '100%', overflowX: 'clip' }}\n >\n <Box\n sx={{ ...classes.actionModalFormLine, marginTop: '20px', marginBottom: '40px' }}\n ref={refObject.status}\n >\n <Autocomplete\n id=\"trigger-status-autocomplete\"\n data-testid=\"trigger-status-autocomplete-autoreply\"\n options={applicationStatuses}\n getOptionLabel={(option) => option.name}\n onChange={(event, value) => {\n setSelectedStatus(value);\n setErrors((prev) => ({ ...prev, status: '' }));\n }}\n value={selectedStatus}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Trigger status\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n renderOption={(props, option, state) => {\n return (\n <li {...props} key={option.id} data-testid={`option-${state.index}`}>\n {option.name}\n </li>\n );\n }}\n />\n {errors.status && <Box sx={classes.formError}>{errors.status}</Box>}\n </Box>\n <Box>\n <Box sx={classes.actionModalFormLine} ref={refObject.template}>\n <Virtualize\n value={selectedTemplate}\n passOptions={emailTemplates}\n setValue={(value: string) => {\n handleSelectTemplate(value);\n setErrors((prev) => ({ ...prev, template: '' }));\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '600px',\n marginTop: '20px'\n }}\n label=\"Template\"\n loading={isLoadingTemplateList}\n loadingText=\"Loading template list...\"\n />\n {errors.template && <Box sx={classes.formError}>{errors.template}</Box>}\n </Box>\n {(selectedTemplate || replyIndex !== -1) &&\n (isLoadingTemplate || (replyIndex !== -1 && !selectedTemplate) ? (\n <Skeleton\n variant=\"rectangular\"\n animation=\"wave\"\n height={400}\n width={'96%'}\n sx={classes.previewSkeleton}\n />\n ) : (\n <Box sx={{ ...classes.htmlContent }}>\n <Box sx={{ ...classes.previewHeader }}>\n <VisibilityIcon />\n Preview\n </Box>\n <Box\n sx={classes.emailPreview}\n dangerouslySetInnerHTML={{\n __html: dompurify.sanitize(body)\n }}\n />\n </Box>\n ))}\n </Box>\n <Box sx={classes.actionModalFormLine} ref={refObject.email}>\n <FormTextField\n onChange={(event) => {\n setEmailSetting(event.target.value);\n setErrors((prev) => ({ ...prev, email: '' }));\n }}\n value={emailSetting}\n id=\"sender email\"\n label=\"Sender email (optional)\"\n error={errors.email}\n styles={{ width: '290px' }}\n />\n </Box>\n <DelaySelectWrapper delay={delay} setDelay={setDelay} />\n {hasCareAdvantageIntegration && (\n <Box sx={{ ...classes.actionModalFormLine, rowGap: '0px !important' }}>\n <Virtualize\n value={selectedEvent}\n passOptions={careAdvantageEvents.map((event) => event.name)}\n setValue={(value: string) => {\n setSelectedEvent(value);\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '600px',\n marginTop: '20px'\n }}\n label=\"Select a Care Advantage Event\"\n />\n <Box sx={classes.placeholderText}>\n Placeholder to use: {'{'}CARE_ADVANTAGE_INVITE_LINK{'}'}\n </Box>\n </Box>\n )}\n </Box>\n </Box>\n <Box sx={classes.modalFooter}>\n <CancelButton scope='auto-reply' setModalOpen={setModalOpen} />\n <Button\n id=\"send-auto-reply-button\"\n data-testid=\"send-auto-reply-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport {\n Box,\n Button,\n CircularProgress,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow\n} from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport EditIcon from '@mui/icons-material/Edit';\nimport NewAutoSMSForward from './NewAutoSMSForward';\nimport ImmediateChangesNotice from '../shared/ImmediateChangesNotice';\nimport SkeletonTable from '../../shared/SkeletonTable';\nimport { classes } from '../styles';\nimport { IAutoSmsForward, IStatusTransitionsProps } from '../../types';\nimport { IApplicationStatus } from '../../../Job/types';\nimport { immutableRemove } from '../../../Components/Utilities/immutableRemove';\nimport RecruitApiClient from '../../../../../components/RecruitApiClient';\n\nexport default function AutoSMSForward({ apiKey, jobId, setSnackbar }: IStatusTransitionsProps) {\n const [loading, setLoading] = useState({\n autoForwards: true,\n applicationStatuses: true,\n templatesList: true\n });\n const [isDeleting, setIsDeleting] = useState(-1);\n const [autoForwards, setAutoForwards] = useState<IAutoSmsForward[]>([]);\n const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n const [templates, setTemplates] = useState([]);\n const [modalOpen, setModalOpen] = useState(false);\n const [forwardIndex, setForwardIndex] = useState(0);\n\n const getAutoForwards = useCallback(async () => {\n setLoading((prev) => ({ ...prev, autoForwards: true }));\n try {\n const {\n res: { auto_sms_forwards }\n } = await RecruitApiClient.get<{ auto_sms_forwards: IAutoSmsForward[] }>(\n `/api/v4/jobs/${jobId}/auto_sms_forwards`\n );\n setAutoForwards(auto_sms_forwards);\n } catch (error: any) {\n setSnackbar({\n message: error.message || 'Error fetching auto SMS forwards',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, autoForwards: false }));\n }\n }, [jobId, setSnackbar]);\n\n const getApplicationStatuses = useCallback(async () => {\n setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n try {\n const {\n res: { job_application_statuses }\n } = await RecruitApiClient.get<{ job_application_statuses: IApplicationStatus[] }>(\n `/api/v4/jobs/${jobId}/job_application_statuses`\n );\n setApplicationStatuses(job_application_statuses);\n } catch (error: any) {\n setSnackbar({\n message: error.message || 'Error fetching application statuses',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n }\n }, [jobId, setSnackbar]);\n\n const getTemplatesAndPlaceholders = useCallback(async () => {\n setLoading((prev) => ({ ...prev, templatesList: true }));\n try {\n const {\n res: { sms_templates }\n } = await RecruitApiClient.get<{ sms_templates: [] }>(\n `/api/v4/jobs/${jobId}/sms_templates?kind=custom`\n );\n setTemplates(sms_templates);\n } catch (error) {\n setSnackbar({\n message: 'Error fetching templates',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, templatesList: false }));\n }\n }, [jobId, setSnackbar]);\n\n const removeAutoForwards = async (index: number) => {\n setIsDeleting(index);\n try {\n await RecruitApiClient.delete(\n `/api/v4/jobs/${jobId}/auto_sms_forwards/${autoForwards[index].id}`\n );\n setSnackbar({\n message: 'Auto SMS forward deleted successfully',\n state: 'success'\n });\n setAutoForwards(immutableRemove(autoForwards, index));\n } catch (error: any) {\n setSnackbar({\n message: error.message || 'Error deleting auto SMS forward',\n state: 'error'\n });\n } finally {\n setIsDeleting(-1);\n }\n };\n\n const handleOpenModal = (index: number) => {\n setForwardIndex(index);\n setModalOpen(true);\n };\n\n useEffect(() => {\n getAutoForwards();\n getApplicationStatuses();\n getTemplatesAndPlaceholders();\n }, [getApplicationStatuses, getAutoForwards, getTemplatesAndPlaceholders]);\n\n return (\n <Box sx={classes.automationContainer}>\n <Box sx={classes.titleAndButtonContainer}>\n <h2>Auto SMS forward</h2>\n <Button\n id='new-auto-sms-forward-button'\n data-testid='new-auto-sms-forward-button'\n sx={classes.newButton}\n onClick={() => handleOpenModal(-1)}\n >\n New auto SMS forward\n </Button>\n </Box>\n <ImmediateChangesNotice />\n {loading.autoForwards || (autoForwards && autoForwards.length > 0) ? (\n <TableContainer sx={classes.tableContainer}>\n <Table sx={classes.table} aria-label='auto sms forwards table'>\n <TableHead>\n <TableRow>\n <TableCell>Trigger status</TableCell>\n <TableCell>Phones</TableCell>\n <TableCell align='right'>{/*Action column*/}</TableCell>\n </TableRow>\n </TableHead>\n {loading.autoForwards || loading.applicationStatuses ? (\n <SkeletonTable rows={5} cols={3} />\n ) : (\n <TableBody>\n {autoForwards.map((forward, index) => (\n <TableRow key={forward.id}>\n <TableCell>\n {applicationStatuses.find((status) => status.id === forward.trigger_status_id)\n ?.name ?? '-'}\n </TableCell>\n <TableCell>{forward.phones.join(', ') || '-'}</TableCell>\n <TableCell sx={classes.tableActions}>\n <IconButton\n id='auto-sms-forward-edit-button'\n data-testid='auto-sms-forward-edit-button'\n sx={classes.tableEditButton}\n onClick={() => handleOpenModal(index)}\n >\n <EditIcon />\n </IconButton>\n <IconButton\n id='auto-sms-forward-delete-button'\n data-testid='auto-sms-forward-delete-button'\n sx={classes.tableDeleteButton}\n onClick={() => removeAutoForwards(index)}\n >\n {isDeleting === index ? (\n <CircularProgress size={24} color='inherit' />\n ) : (\n <DeleteIcon />\n )}\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n )}\n </Table>\n </TableContainer>\n ) : (\n <Box sx={classes.noAutoForwarders}>\n No auto forwards configured. Click on the button above to create one.\n </Box>\n )}\n {!loading.autoForwards && !loading.applicationStatuses && (\n <NewAutoSMSForward\n jobId={jobId}\n apiKey={apiKey}\n modalOpen={modalOpen}\n setModalOpen={setModalOpen}\n autoForwards={autoForwards}\n setAutoForwards={setAutoForwards}\n applicationStatuses={applicationStatuses || []}\n smsTemplates={templates}\n forwardIndex={modalOpen ? forwardIndex : -1}\n isLoadingTemplateList={loading.templatesList}\n setSnackbar={setSnackbar}\n />\n )}\n </Box>\n );\n}\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport {\n Box,\n Modal,\n Button,\n Autocomplete,\n TextField,\n Skeleton,\n CircularProgress\n} from '@mui/material';\nimport MultiTagInput from '../../../Components/CustomUIElements/MultiTagInput';\nimport CancelButton from '../shared/CancelButton';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IAutoSmsForward, IAutoSmsForwardProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IApplicationStatus, ISMSTemplate } from '../../../Job/types';\nimport { stringToSeconds } from '../../../Components/Utilities/stringToSeconds';\nimport { secondsToString } from '../../../Components/Utilities/secondsToString';\nimport { getBodyFromSmsTemplateValue } from '../helpers/getBodyFromSmsTemplateValue';\nimport RecruitApiClient from '../../../../../components/RecruitApiClient';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport DelaySelectWrapper from '../shared/DelaySelectWrapper';\n\nexport default function NewAutoSMSForward({\n jobId,\n apiKey,\n modalOpen,\n setModalOpen,\n autoForwards,\n setAutoForwards,\n applicationStatuses,\n smsTemplates,\n isLoadingTemplateList,\n forwardIndex,\n setSnackbar\n}: IAutoSmsForwardProps) {\n const [tempPhones, setTempPhones] = useState<string[]>([]);\n const [isSending, setIsSending] = useState(false);\n const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n const [delay, setDelay] = useState('None');\n const [selectedStatus, setSelectedStatus] = useState<IApplicationStatus | null>(null);\n const [body, setBody] = useState('');\n const [errors, setErrors] = useState({\n status: '',\n template: '',\n phones: ''\n });\n const smsTemplateOptions = smsTemplates.map(\n (template: ISMSTemplate) => `${template.id} - ${template.title}`\n );\n\n const refObject = {\n status: useRef<HTMLDivElement>(null),\n template: useRef<HTMLDivElement>(null),\n phones: useRef<HTMLDivElement>(null)\n };\n\n const handleSelectTemplate = useCallback(\n (value: string) => {\n setSelectedTemplate(value || null);\n setBody(getBodyFromSmsTemplateValue(value, smsTemplates));\n },\n [smsTemplates]\n );\n\n const phoneIsValid = (phone: string) => {\n const regex = /^\\+?\\(?[0-9]{1,4}\\)?[- \\.0-9]*$/;\n if (regex.test(String(phone).toLowerCase())) {\n setErrors((prev) => ({ ...prev, phones: '' }));\n return true;\n }\n\n return false;\n };\n\n const handleSubmit = async () => {\n let errorRef = '';\n if (!selectedStatus) {\n setErrors((prev) => ({ ...prev, status: 'Please select a status' }));\n errorRef = errorRef || 'status';\n }\n if (!selectedTemplate) {\n setErrors((prev) => ({ ...prev, template: 'Please select a template' }));\n errorRef = errorRef || 'template';\n }\n if (!tempPhones.length) {\n setErrors((prev) => ({ ...prev, phones: 'Please enter at least one phone number' }));\n errorRef = errorRef || 'phones';\n }\n if (errorRef) {\n refObject[errorRef as keyof typeof refObject].current?.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n return;\n }\n try {\n setIsSending(true);\n const jsonBody = {\n trigger_status_id: selectedStatus?.id,\n sms_template_id: selectedTemplate?.split(' -')[0],\n phones: tempPhones.join(', '),\n delay: stringToSeconds(delay)\n };\n if (forwardIndex === -1) {\n const { res } = await RecruitApiClient.post<IAutoSmsForward>(\n `/api/v4/jobs/${jobId}/auto_sms_forwards`,\n jsonBody\n );\n setAutoForwards((prev) => [...prev, res]);\n setSnackbar({\n message: 'Auto forward created successfully',\n state: 'success'\n });\n setModalOpen(false);\n } else {\n const { res } = await RecruitApiClient.put<IAutoSmsForward>(\n `/api/v4/jobs/${jobId}/auto_sms_forwards/${autoForwards[forwardIndex].id}`,\n jsonBody\n );\n setAutoForwards((prev) => {\n const newForward = [...prev];\n newForward[forwardIndex] = res;\n return newForward;\n });\n setSnackbar({\n message: 'Auto forward updated successfully',\n state: 'success'\n });\n setModalOpen(false);\n }\n } catch (error: any) {\n setSnackbar({\n message: error.message || 'Something went wrong, please try again',\n state: 'error'\n });\n } finally {\n setIsSending(false);\n }\n };\n\n useEffect(() => {\n setErrors({\n status: '',\n template: '',\n phones: ''\n });\n if (forwardIndex === -1) {\n setTempPhones([]);\n setSelectedTemplate(null);\n setDelay('None');\n setSelectedStatus(null);\n setBody('');\n return;\n }\n setTempPhones(autoForwards[forwardIndex].phones);\n setSelectedStatus(\n applicationStatuses.find(\n (status) => status.id === autoForwards[forwardIndex].trigger_status_id\n ) || null\n );\n setDelay(secondsToString(autoForwards[forwardIndex].delay));\n }, [applicationStatuses, autoForwards, forwardIndex]);\n\n useEffect(() => {\n if (forwardIndex !== -1) {\n const smsTemplate =\n smsTemplateOptions.find(\n (template) =>\n template.split(' - ')[0] === autoForwards[forwardIndex].sms_template_id.toString()\n ) || null;\n setSelectedTemplate(smsTemplate);\n if (smsTemplate) {\n handleSelectTemplate(smsTemplate);\n }\n }\n }, [autoForwards, smsTemplates, forwardIndex, handleSelectTemplate]);\n\n return (\n <Modal\n open={modalOpen}\n onClose={() => setModalOpen(false)}\n aria-labelledby='new-auto-sms-forward-modal'\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n <Box sx={classes.actionModalHeader}>{`${\n forwardIndex === -1 ? 'New' : 'Edit'\n } auto SMS forward`}</Box>\n <Box\n sx={classes.modalContent}\n aria-label={`${forwardIndex === -1 ? 'New' : 'Edit'} auto sms forward modal content`}\n >\n <Box\n role='form'\n id='auto-sms-forward-form'\n aria-label='Auto sms forward form'\n sx={{ height: '100%', overflowX: 'clip' }}\n >\n <Box\n sx={{ ...classes.actionModalFormLine, marginTop: '20px', marginBottom: '40px' }}\n ref={refObject.status}\n >\n <Autocomplete\n id='trigger-status-autocomplete'\n data-testid='trigger-status-autocomplete-autoforward'\n options={applicationStatuses}\n getOptionLabel={(option) => option.name}\n onChange={(event, value) => {\n setSelectedStatus(value);\n setErrors((prev) => ({ ...prev, status: '' }));\n }}\n value={selectedStatus}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label='Trigger status'\n InputLabelProps={{ shrink: true }}\n />\n )}\n renderOption={(props, option, state) => {\n return (\n <li {...props} key={option.id} data-testid={`option-${state.index}`}>\n {option.name}\n </li>\n );\n }}\n />\n {errors.status && <Box sx={classes.formError}>{errors.status}</Box>}\n </Box>\n <Box>\n <Box sx={classes.actionModalFormLine} ref={refObject.template}>\n <Virtualize\n value={selectedTemplate}\n passOptions={smsTemplateOptions}\n setValue={(value: string) => {\n handleSelectTemplate(value);\n setErrors((prev) => ({ ...prev, template: '' }));\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '600px',\n marginTop: '20px'\n }}\n label='Template'\n loading={isLoadingTemplateList}\n loadingText='Loading template list...'\n />\n {errors.template && <Box sx={classes.formError}>{errors.template}</Box>}\n </Box>\n {(selectedTemplate || forwardIndex !== -1) &&\n (forwardIndex !== -1 && !selectedTemplate ? (\n <Skeleton\n variant='rectangular'\n animation='wave'\n height={400}\n width={'96%'}\n sx={classes.previewSkeleton}\n />\n ) : (\n <Box sx={{ ...classes.htmlContent }}>\n <Box sx={{ ...classes.previewHeader }}>\n <VisibilityIcon />\n Preview\n </Box>\n <Box>{body}</Box>\n </Box>\n ))}\n </Box>\n <Box sx={classes.actionModalFormLine} ref={refObject.phones}>\n <MultiTagInput\n tags={tempPhones}\n setTags={(phones) => {\n setTempPhones(phones);\n setErrors((prev) => ({ ...prev, phones: '' }));\n }}\n validation={phoneIsValid}\n validationMessage='Must input valid phone'\n label='Recipient phone number/s'\n width='600px'\n error={errors.phones}\n />\n </Box>\n <DelaySelectWrapper delay={delay} setDelay={setDelay} />\n </Box>\n </Box>\n <Box sx={classes.modalFooter}>\n <CancelButton scope='auto-sms-forward' setModalOpen={setModalOpen} />\n <Button\n id='send-auto-forward-button'\n data-testid='send-auto-forward-button'\n type='submit'\n sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSending ? <CircularProgress size={20} color='inherit' /> : 'Save'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport {\n Box,\n Button,\n CircularProgress,\n IconButton,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow\n} from '@mui/material';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport EditIcon from '@mui/icons-material/Edit';\nimport NewAutoSMSReply from './NewAutoSMSReply';\nimport ImmediateChangesNotice from '../shared/ImmediateChangesNotice';\nimport SkeletonTable from '../../shared/SkeletonTable';\nimport { classes } from '../styles';\nimport { IAutoSmsReply, IStatusTransitionsProps } from '../../types';\nimport { IEventType } from '../../../../ScoutCalendar/types';\nimport { IApplicationStatus } from '../../../Job/types';\nimport { immutableRemove } from '../../../Components/Utilities/immutableRemove';\nimport RecruitApiClient from '../../../../../components/RecruitApiClient';\n\nexport default function AutoSMSReply({ apiKey, jobId, setSnackbar }: IStatusTransitionsProps) {\n const [loading, setLoading] = useState({\n autoReplies: true,\n applicationStatuses: true,\n templatesList: true,\n eventTypes: true\n });\n const [isDeleting, setIsDeleting] = useState(-1);\n const [autoReplies, setAutoReplies] = useState<IAutoSmsReply[]>([]);\n const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n const [templates, setTemplates] = useState([]);\n const [eventTypes, setEventTypes] = useState<IEventType[]>([]);\n const [modalOpen, setModalOpen] = useState(false);\n const [replyIndex, setReplyIndex] = useState(0);\n\n const getAutoReplies = useCallback(async () => {\n setLoading((prev) => ({ ...prev, autoReplies: true }));\n try {\n const {\n res: { auto_sms_replies }\n } = await RecruitApiClient.get<{ auto_sms_replies: IAutoSmsReply[] }>(\n `/api/v4/jobs/${jobId}/auto_sms_replies`\n );\n setAutoReplies(auto_sms_replies);\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error fetching auto SMS replies',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, autoReplies: false }));\n }\n }, [jobId, setSnackbar]);\n\n const getApplicationStatuses = useCallback(async () => {\n setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n try {\n const {\n res: { job_application_statuses }\n } = await RecruitApiClient.get<{ job_application_statuses: IApplicationStatus[] }>(\n `/api/v4/jobs/${jobId}/job_application_statuses`\n );\n setApplicationStatuses(job_application_statuses);\n } catch (error: any) {\n setSnackbar({\n message: error.message || 'Error fetching application statuses',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n }\n }, [jobId, setSnackbar]);\n\n const getTemplatesAndPlaceholders = useCallback(async () => {\n setLoading((prev) => ({ ...prev, templatesList: true }));\n try {\n const {\n res: { sms_templates }\n } = await RecruitApiClient.get<{ sms_templates: [] }>(\n `/api/v4/jobs/${jobId}/sms_templates?kind=custom`\n );\n setTemplates(sms_templates);\n } catch (error: any) {\n setSnackbar({\n message: 'Error fetching templates',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, templatesList: false }));\n }\n }, [jobId, setSnackbar]);\n\n const getEventTypes = useCallback(async () => {\n setLoading((prev) => ({ ...prev, eventTypes: true }));\n try {\n const response = await fetch(`/api/v4/calendar/event_types`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const { event_types } = await response.json();\n setEventTypes(event_types);\n } catch (error) {\n setSnackbar({\n message: 'Error fetching event types',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, eventTypes: false }));\n }\n }, [apiKey, setSnackbar]);\n\n const removeAutoReplies = async (index: number) => {\n setIsDeleting(index);\n try {\n await RecruitApiClient.delete(\n `/api/v4/jobs/${jobId}/auto_sms_replies/${autoReplies[index].id}`\n );\n setSnackbar({\n message: 'Auto SMS reply deleted successfully',\n state: 'success'\n });\n setAutoReplies(immutableRemove(autoReplies, index));\n } catch (error: any) {\n setSnackbar({\n message: error.message || 'Error deleting auto SMS reply',\n state: 'error'\n });\n } finally {\n setIsDeleting(-1);\n }\n };\n\n const handleOpenModal = (index: number) => {\n setReplyIndex(index);\n setModalOpen(true);\n };\n\n useEffect(() => {\n getAutoReplies();\n getApplicationStatuses();\n getTemplatesAndPlaceholders();\n getEventTypes();\n }, [getApplicationStatuses, getAutoReplies, getTemplatesAndPlaceholders, getEventTypes]);\n\n return (\n <Box sx={classes.automationContainer}>\n <Box sx={classes.titleAndButtonContainer}>\n <h2>Auto SMS reply</h2>\n <Button\n id=\"new-auto-sms-reply-button\"\n data-testid=\"new-auto-sms-reply-button\"\n sx={classes.newButton}\n onClick={() => handleOpenModal(-1)}\n >\n New auto SMS reply\n </Button>\n </Box>\n <ImmediateChangesNotice />\n {loading.autoReplies || (autoReplies && autoReplies.length > 0) ? (\n <TableContainer sx={classes.tableContainer}>\n <Table sx={classes.table} aria-label=\"auto sms replies table\">\n <TableHead>\n <TableRow>\n <TableCell>Trigger status</TableCell>\n <TableCell>SMS template</TableCell>\n <TableCell align=\"right\">{/*Action column*/}</TableCell>\n </TableRow>\n </TableHead>\n {loading.autoReplies || loading.applicationStatuses\n ? <SkeletonTable rows={5} cols={3} />\n : (\n <TableBody>\n {autoReplies.map((reply, index) => (\n <TableRow key={reply.id}>\n <TableCell>\n {applicationStatuses.find((status) => status.id === reply.trigger_status_id)\n ?.name ?? '-'}\n </TableCell>\n <TableCell>{reply.sms_template_name || '-'}</TableCell>\n <TableCell sx={classes.tableActions}>\n <IconButton\n id=\"auto-sms-reply-edit-button\"\n data-testid=\"auto-sms-reply-edit-button\"\n sx={classes.tableEditButton}\n onClick={() => handleOpenModal(index)}\n >\n <EditIcon />\n </IconButton>\n <IconButton\n id=\"auto-sms-reply-delete-button\"\n data-testid=\"auto-sms-reply-delete-button\"\n sx={classes.tableDeleteButton}\n onClick={() => removeAutoReplies(index)}\n >\n {isDeleting === index ? (\n <CircularProgress size={24} color=\"inherit\" />\n ) : (\n <DeleteIcon />\n )}\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n )}\n </Table>\n </TableContainer>\n ) : (\n <Box sx={classes.noAutoForwarders}>\n No auto replies configured. Click on the button above to create one.\n </Box>\n )}\n {!loading.autoReplies && !loading.applicationStatuses && (\n <NewAutoSMSReply\n jobId={jobId}\n apiKey={apiKey}\n modalOpen={modalOpen}\n setModalOpen={setModalOpen}\n autoReplies={autoReplies}\n setAutoReplies={setAutoReplies}\n applicationStatuses={applicationStatuses || []}\n smsTemplates={templates}\n replyIndex={modalOpen ? replyIndex : -1}\n isLoadingTemplateList={loading.templatesList}\n eventTypes={eventTypes}\n isLoadingEventTypes={loading.eventTypes}\n setSnackbar={setSnackbar}\n />\n )}\n </Box>\n );\n}\n","import React, { useState, useEffect, useRef, useCallback } from 'react';\nimport {\n Box,\n Modal,\n Button,\n Autocomplete,\n TextField,\n Skeleton,\n CircularProgress\n} from '@mui/material';\nimport CancelButton from '../shared/CancelButton';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IAutoSmsReplyProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { IApplicationStatus, ISMSTemplate } from '../../../Job/types';\nimport { stringToSeconds } from '../../../Components/Utilities/stringToSeconds';\nimport { secondsToString } from '../../../Components/Utilities/secondsToString';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport { getBodyFromSmsTemplateValue } from '../helpers/getBodyFromSmsTemplateValue';\nimport DelaySelectWrapper from '../shared/DelaySelectWrapper';\n\nexport default function NewAutoSMSReply({\n jobId,\n apiKey,\n modalOpen,\n setModalOpen,\n autoReplies,\n setAutoReplies,\n applicationStatuses,\n smsTemplates,\n eventTypes,\n isLoadingTemplateList,\n isLoadingEventTypes,\n replyIndex,\n setSnackbar\n}: IAutoSmsReplyProps) {\n const [isSending, setIsSending] = useState(false);\n const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n const [selectedEventType, setSelectedEventType] = useState<string | null>(null);\n const [delay, setDelay] = useState('None');\n const [selectedStatus, setSelectedStatus] = useState<IApplicationStatus | null>(null);\n const [body, setBody] = useState('');\n const [errors, setErrors] = useState({\n status: '',\n template: ''\n });\n const smsTemplateOptions = smsTemplates.map(\n (template: ISMSTemplate) => `${template.id} - ${template.title}`\n );\n\n const refObject = {\n status: useRef<HTMLDivElement>(null),\n template: useRef<HTMLDivElement>(null)\n };\n\n const handleSelectTemplate = useCallback((value: string) => {\n setSelectedTemplate(value || null);\n setBody(getBodyFromSmsTemplateValue(value, smsTemplates));\n }, [smsTemplates]);\n\n const handleSubmit = async () => {\n let errorRef = '';\n if (!selectedStatus) {\n setErrors((prev) => ({ ...prev, status: 'Please select a status' }));\n errorRef = errorRef || 'status';\n }\n if (!selectedTemplate) {\n setErrors((prev) => ({ ...prev, template: 'Please select a template' }));\n errorRef = errorRef || 'template';\n }\n if (errorRef) {\n refObject[errorRef as keyof typeof refObject].current?.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n return;\n }\n try {\n setIsSending(true);\n if (replyIndex === -1) {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_sms_replies`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n trigger_status_id: selectedStatus?.id,\n sms_template_id: selectedTemplate?.split(' -')[0],\n event_type_id: selectedEventType ? selectedEventType.split(' -')[0] : null,\n delay: stringToSeconds(delay)\n })\n });\n const data = await response.json();\n if (response.ok) {\n setAutoReplies((prev) => [...prev, data]);\n setSnackbar({\n message: 'Auto reply created successfully',\n state: 'success'\n });\n setModalOpen(false);\n } else {\n throw new Error('Error creating new auto reply');\n }\n } else {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/auto_sms_replies/${autoReplies[replyIndex].id}`,\n {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n trigger_status_id: selectedStatus?.id,\n sms_template_id: selectedTemplate?.split(' -')[0],\n event_type_id: selectedEventType ? selectedEventType.split(' -')[0] : null,\n delay: stringToSeconds(delay)\n })\n }\n );\n const data = await response.json();\n if (response.ok) {\n setAutoReplies((prev) => {\n const newReplies = [...prev];\n newReplies[replyIndex] = data;\n return newReplies;\n });\n setSnackbar({\n message: 'Auto reply updated successfully',\n state: 'success'\n });\n setModalOpen(false);\n } else {\n throw new Error('Error updating auto reply');\n }\n }\n } catch (error: any) {\n setSnackbar({\n message: error.message || 'Something went wrong, please try again',\n state: 'error'\n });\n } finally {\n setIsSending(false);\n }\n };\n\n useEffect(() => {\n setErrors({\n status: '',\n template: ''\n });\n if (replyIndex === -1) {\n setSelectedTemplate(null);\n setDelay('None');\n setSelectedStatus(null);\n setBody('');\n return;\n }\n const autoReply = autoReplies[replyIndex];\n if (!autoReply) {\n return;\n }\n const eventType = eventTypes.find((eventType) => eventType.id === autoReply.event_type_id);\n if (eventType) {\n setSelectedEventType(`${eventType.id} - ${eventType.name}`);\n }\n setSelectedStatus(\n applicationStatuses.find((status) => status.id === autoReply.trigger_status_id) || null\n );\n setDelay(secondsToString(autoReply.delay));\n }, [applicationStatuses, autoReplies, replyIndex, eventTypes]);\n\n useEffect(() => {\n if (replyIndex !== -1) {\n const smsTemplate =\n smsTemplateOptions.find(\n (template) =>\n template.split(' - ')[0] === autoReplies[replyIndex].sms_template_id.toString()\n ) || null;\n setSelectedTemplate(smsTemplate);\n if (smsTemplate) {\n handleSelectTemplate(smsTemplate);\n }\n }\n }, [autoReplies, smsTemplates, replyIndex, handleSelectTemplate]);\n\n return (\n <Modal\n open={modalOpen}\n onClose={() => setModalOpen(false)}\n aria-labelledby=\"new-auto-sms-reply-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n <Box sx={classes.actionModalHeader}>{`${\n replyIndex === -1 ? 'New' : 'Edit'\n } auto SMS reply`}</Box>\n <Box\n sx={classes.modalContent}\n aria-label={`${replyIndex === -1 ? 'New' : 'Edit'} auto sms reply modal content`}\n >\n <Box\n role=\"form\"\n id=\"auto-sms-reply-form\"\n aria-label=\"Auto sms reply form\"\n sx={{ height: '100%', overflowX: 'clip' }}\n >\n <Box\n sx={{ ...classes.actionModalFormLine, marginTop: '20px', marginBottom: '40px' }}\n ref={refObject.status}\n >\n <Autocomplete\n id=\"trigger-status-autocomplete\"\n data-testid=\"trigger-status-autocomplete-autoreply\"\n options={applicationStatuses}\n getOptionLabel={(option) => option.name}\n onChange={(event, value) => {\n setSelectedStatus(value);\n setErrors((prev) => ({ ...prev, status: '' }));\n }}\n value={selectedStatus}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Trigger status\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n renderOption={(props, option, state) => {\n return (\n <li {...props} key={option.id} data-testid={`option-${state.index}`}>\n {option.name}\n </li>\n );\n }}\n />\n {errors.status && <Box sx={classes.formError}>{errors.status}</Box>}\n </Box>\n <Box>\n <Box sx={classes.actionModalFormLine} ref={refObject.template}>\n <Virtualize\n value={selectedTemplate}\n passOptions={smsTemplateOptions}\n setValue={(value: string) => {\n handleSelectTemplate(value);\n setErrors((prev) => ({ ...prev, template: '' }));\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '600px',\n marginTop: '20px'\n }}\n label=\"Template\"\n loading={isLoadingTemplateList}\n loadingText=\"Loading template list...\"\n />\n {errors.template && <Box sx={classes.formError}>{errors.template}</Box>}\n </Box>\n {(selectedTemplate || replyIndex !== -1) &&\n (replyIndex !== -1 && !selectedTemplate ? (\n <Skeleton\n variant=\"rectangular\"\n animation=\"wave\"\n height={400}\n width={'96%'}\n sx={classes.previewSkeleton}\n />\n ) : (\n <Box sx={{ ...classes.htmlContent }}>\n <Box sx={{ ...classes.previewHeader }}>\n <VisibilityIcon />\n Preview\n </Box>\n <Box>{body}</Box>\n </Box>\n ))}\n </Box>\n {body?.includes('{INTERVIEW_URL}') && (\n <Box sx={classes.actionModalFormLine} ref={refObject.template}>\n <Virtualize\n value={selectedEventType}\n passOptions={eventTypes.map((eventType) => `${eventType.id} - ${eventType.name}`)}\n setValue={setSelectedEventType}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '600px',\n marginTop: '20px'\n }}\n label='Automatically invite to event type'\n loading={isLoadingEventTypes}\n loadingText='Loading event types list...'\n />\n {errors.template && <Box sx={classes.formError}>{errors.template}</Box>}\n </Box>\n )}\n <DelaySelectWrapper delay={delay} setDelay={setDelay} />\n </Box>\n </Box>\n <Box sx={classes.modalFooter}>\n <CancelButton scope='auto-sms-reply' setModalOpen={setModalOpen} />\n <Button\n id=\"send-auto-reply-button\"\n data-testid=\"send-auto-reply-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { Box, Skeleton, ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport QuestionBased from './QuestionBased';\nimport RatingBased from './RatingBased';\nimport InfoIcon from '@mui/icons-material/Info';\nimport { IAutoStatusesProps, IQuestionBasedAS, IRatingBasedAS } from '../../types';\nimport { IApplicationStatus } from '../../../Job/types';\nimport InfoBox from '../../../Components/CustomUIElements/InfoBox';\n\nexport default function AutoStatuses({\n apiKey,\n jobId,\n setSnackbar,\n jobQuestions,\n handleEditTabChange\n}: IAutoStatusesProps) {\n const [loading, setLoading] = useState({\n applicationStatuses: true,\n questionBased: true,\n ratingBased: true\n });\n const [questionBasedAS, setQuestionBasedAS] = useState<IQuestionBasedAS[]>([]);\n const [ratingBasedAS, setRatingBasedAS] = useState<IRatingBasedAS[]>([]);\n const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n const [selected, setSelected] = useState('questionBased');\n const [hasRadioButtonQuestions, setHasRadioButtonQuestions] = useState(true);\n\n const getApplicationStatuses = useCallback(async () => {\n setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/job_application_statuses`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const { job_application_statuses } = await response.json();\n job_application_statuses.shift(); // Remove \"New\" status from array\n setApplicationStatuses(job_application_statuses);\n } catch (error) {\n setSnackbar({\n message: 'Error fetching question based auto statuses',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const getQuestionBasedAS = useCallback(async () => {\n setLoading((prev) => ({ ...prev, questionBased: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_status_question_based`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n if (response.errors) {\n setHasRadioButtonQuestions(false);\n } else {\n setQuestionBasedAS(response.auto_statuses_question_based);\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error fetching question based auto statuses',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, questionBased: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const getRatingBasedAS = useCallback(async () => {\n setLoading((prev) => ({ ...prev, ratingBased: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_status_rating_based`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const { auto_statuses_rating_based } = await response.json();\n setRatingBasedAS(auto_statuses_rating_based);\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error fetching rating based auto statuses',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, ratingBased: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const handleToggle = (event: React.MouseEvent<HTMLElement>, newSelected: string) => {\n if (newSelected !== null) {\n setSelected(newSelected);\n }\n };\n\n useEffect(() => {\n getApplicationStatuses();\n getQuestionBasedAS();\n getRatingBasedAS();\n }, [getApplicationStatuses, getQuestionBasedAS, getRatingBasedAS]);\n\n return (\n <Box sx={classes.automationContainer}>\n <h2 data-testid=\"auto-statuses-header\">Auto statuses</h2>\n <InfoBox message=\"Any changes here will be automatically saved and will be applied immediately.\" />\n <Box sx={classes.toggleButtonsContainer}>\n <ToggleButtonGroup\n value={selected}\n exclusive\n onChange={handleToggle}\n aria-label=\"question or rating based\"\n >\n <ToggleButton\n data-testid=\"question-based-toggle-button\"\n value=\"questionBased\"\n sx={sharedClasses.toggleButton}\n >\n Question Based\n </ToggleButton>\n <ToggleButton\n data-testid=\"rating-based-toggle-button\"\n value=\"ratingBased\"\n sx={sharedClasses.toggleButton}\n >\n Rating Based\n </ToggleButton>\n </ToggleButtonGroup>\n </Box>\n {selected === 'questionBased' ? (\n !loading.questionBased && !loading.applicationStatuses ? (\n <QuestionBased\n apiKey={apiKey}\n jobId={jobId}\n setSnackbar={setSnackbar}\n autoStatuses={questionBasedAS}\n setAutoStatuses={setQuestionBasedAS}\n applicationStatuses={applicationStatuses}\n hasRadioButtonQuestions={hasRadioButtonQuestions}\n handleEditTabChange={handleEditTabChange}\n />\n ) : (\n <Skeleton\n variant=\"rectangular\"\n animation=\"wave\"\n height={450}\n width={'100%'}\n sx={{ borderRadius: '8px' }}\n />\n )\n ) : !loading.ratingBased && !loading.applicationStatuses ? (\n <RatingBased\n apiKey={apiKey}\n jobId={jobId}\n setSnackbar={setSnackbar}\n autoStatuses={ratingBasedAS}\n setAutoStatuses={setRatingBasedAS}\n applicationStatuses={applicationStatuses}\n />\n ) : (\n <Skeleton\n variant=\"rectangular\"\n animation=\"wave\"\n height={450}\n width={'100%'}\n sx={{ borderRadius: '8px' }}\n />\n )}\n </Box>\n );\n}\n","import React from 'react';\n\nexport default function NoAutoStatusSVG() {\nreturn (<svg id=\"Group_605\" data-name=\"Group 605\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsxlink=\"http://www.w3.org/1999/xlink\" width=\"181.013\" height=\"156.432\" viewBox=\"0 0 181.013 156.432\">\n<defs>\n <clipPath id=\"clip-path\">\n <rect id=\"Rectangle_793\" data-name=\"Rectangle 793\" width=\"181.013\" height=\"156.432\" fill=\"none\"/>\n </clipPath>\n</defs>\n<g id=\"Group_604\" data-name=\"Group 604\" clip-path=\"url(#clip-path)\">\n <path id=\"Path_270\" data-name=\"Path 270\" d=\"M199.211,510.074c10.846,3.907-15.96,9.207-19.723,9.589-40.618,4.115-84.568,2.2-124.808-3.044a15.57,15.57,0,0,1-4.721-1.122c-9.948-4.87,22.007-8.173,24.974-8.428,11.029-.948,22.234-1.566,33.357-1.669,15.763-.146,77.475-.168,90.921,4.675\" transform=\"translate(-34.746 -365.459)\" fill=\"#eee\"/>\n <path id=\"Path_271\" data-name=\"Path 271\" d=\"M177.979,111.146V14.238A10.456,10.456,0,0,0,167.6,3.708H10.381A10.456,10.456,0,0,0,0,14.238v96.908a10.456,10.456,0,0,0,10.381,10.53H167.6a10.456,10.456,0,0,0,10.381-10.53\" transform=\"translate(0 -2.682)\" fill=\"#e3e3e3\"/>\n <path id=\"Path_272\" data-name=\"Path 272\" d=\"M256.286,441.848l-5-21.991h-29.9l-5,21.991c-6.256.869-16.465,5.07-16.465,10.122h72.824c0-5.052-10.209-9.253-16.465-10.122\" transform=\"translate(-144.581 -303.627)\" fill=\"#e3e3e3\"/>\n <path id=\"Path_273\" data-name=\"Path 273\" d=\"M269.321,448.588l-4.379-19.731H240.1a2.7,2.7,0,0,0-2.641,2.128l-4.193,19.264c-5.828.8-15.338,3.569-15.338,8.229h67.841c0-4.66-10.618-9.089-16.446-9.89\" transform=\"translate(-157.597 -310.136)\" fill=\"#f9f9f9\"/>\n <path id=\"Path_274\" data-name=\"Path 274\" d=\"M218.254,428.876l-4.3,18.916.743-.515a33.32,33.32,0,0,0-11.412,3.851c-2.416,1.358-5.8,3.638-5.8,6.785a.409.409,0,0,0,.435.394h72.824c.267,0,.914-.119.914-.515,0-3.165-3.263-5.394-5.721-6.762a33.009,33.009,0,0,0-11.179-3.754l.429.275-4.253-19.267c-.126-.572-1.466-.228-1.337.358l4.253,19.267c.042.191.266.252.429.275a31.656,31.656,0,0,1,10.3,3.405c2.281,1.226,5.732,3.34,5.732,6.323l.915-.515H198.4l.435.394c0-3,3.346-5.071,5.661-6.3a31.441,31.441,0,0,1,10.061-3.311c.3-.044.668-.183.744-.515l4.3-18.916c.138-.608-1.224-.43-1.349.121\" transform=\"translate(-142.819 -309.51)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_275\" data-name=\"Path 275\" d=\"M294.731,498.408h-24.02c-1.173,0-2.347-.017-3.519,0-.875.017-2.17.264-2.642,1.114-.441.794.375,1.266,1.107,1.253,8.018-.15,16.053,0,24.073,0H293.2a3.115,3.115,0,0,0,2.642-1.114c.446-.8-.38-1.253-1.107-1.253\" transform=\"translate(-191.224 -360.428)\" fill=\"#e3e3e3\"/>\n <path id=\"Path_276\" data-name=\"Path 276\" d=\"M188.649,107.129V12.04A10.332,10.332,0,0,0,178.316,1.708H21.832A10.332,10.332,0,0,0,11.5,12.04v95.089a10.332,10.332,0,0,0,10.332,10.332H178.316a10.333,10.333,0,0,0,10.332-10.332\" transform=\"translate(-8.316 -1.235)\" fill=\"#fff\"/>\n <path id=\"Path_277\" data-name=\"Path 277\" d=\"M187.552,105.836V17.945c0-2.315.012-4.631,0-6.945A10.9,10.9,0,0,0,176.588.013c-4.257-.028-8.515,0-12.772,0H22.085c-2.491,0-4.856.089-7.157,1.3a10.99,10.99,0,0,0-5.875,9.552c-.007.465,0,.93,0,1.4v91.187c0,3.318.123,6.473,2.364,9.236,2.471,3.048,6.008,4,9.743,4H161.527c4.906,0,9.813.027,14.719,0a11.18,11.18,0,0,0,11.307-10.852c.012-.665-1.34-.446-1.35.118a9.794,9.794,0,0,1-8.439,9.749,15.97,15.97,0,0,1-1.823.063H21.241c-4.288,0-8.253-1.879-10.033-6.029-1.013-2.362-.805-4.952-.805-7.46V11.931c0-.523-.013-1.049.007-1.571a9.738,9.738,0,0,1,9-9.408C20.583.887,21.764.934,22.933.934h150c1.173,0,2.349-.026,3.522,0,5.872.128,9.748,5.028,9.748,10.63v94.389c0,.666,1.35.444,1.35-.118\" transform=\"translate(-6.545 0)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_278\" data-name=\"Path 278\" d=\"M197.533,34.186H45.656a4.4,4.4,0,0,0-4.4,4.4v81.866a4.4,4.4,0,0,0,4.4,4.4H190.418a11.513,11.513,0,0,0,11.514-11.513V38.584a4.4,4.4,0,0,0-4.4-4.4\" transform=\"translate(-29.836 -24.722)\" fill=\"#f9f9f9\"/>\n <path id=\"Path_279\" data-name=\"Path 279\" d=\"M196.018,32.756H46.833c-.9,0-1.8-.028-2.691,0a5.2,5.2,0,0,0-5.327,4.887c-.017.487,0,.979,0,1.467v79.343c0,.5-.03,1.016.017,1.514a4.8,4.8,0,0,0,4.856,4.227c1.151.032,2.308,0,3.46,0H184.132c1.347,0,2.695.007,4.042,0a12.575,12.575,0,0,0,12.043-8.273c.786-2.31.61-4.794.61-7.2V39.209c0-.56.014-1.123,0-1.683a4.8,4.8,0,0,0-4.809-4.77c-.52-.022-1.417.736-.516.774,4.135.176,3.987,4.031,3.987,6.98v68.976c0,2.828.091,5.562-1.291,8.175a10.967,10.967,0,0,1-10.087,5.757H54.89c-3.563,0-7.152.125-10.714,0a4.178,4.178,0,0,1-4.022-4.215c-.02-.613,0-1.23,0-1.843V38.6c0-2.431.739-4.977,3.71-5.072,3.966-.125,7.956,0,11.923,0H195.5c.513,0,1.415-.774.516-.774\" transform=\"translate(-28.063 -23.679)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_280\" data-name=\"Path 280\" d=\"M312.77,106.292a23.523,23.523,0,0,0,4.062-1.369l4.921,3.619,6.494-5.132-2.36-5.566a23.707,23.707,0,0,0,2.475-3.928l5.976-.383,1.675-8.106-5.176-2.64a23.478,23.478,0,0,0-.625-4.774c-.009-.037-.02-.072-.029-.109l4.147-3.958L330.4,66.66l-5.425,1.25a23.591,23.591,0,0,0-3.851-3.488l.608-5.475-7.692-3.058-3.25,4.309a23.292,23.292,0,0,0-5.375-.181l-2.974-4.465-7.858,2.6.28,5.382a23.392,23.392,0,0,0-4.171,3.342l-5.21-1.527L281.139,72.4l3.788,4.065a23.375,23.375,0,0,0-.986,5.042l-5.148,2.256,1.2,8.19,5.76.71a23.276,23.276,0,0,0,2.355,4.235l-2.607,5.268,6.182,5.5,5.067-3.288a23.583,23.583,0,0,0,4.282,1.672l1.435,5.9,8.274.243,1.791-5.85c.08-.018.16-.032.24-.05m-14.442-28.5a10.855,10.855,0,1,1,3.54,14.937,10.855,10.855,0,0,1-3.54-14.937\" transform=\"translate(-201.614 -40.173)\" fill=\"#e3e3e3\"/>\n <path id=\"Path_281\" data-name=\"Path 281\" d=\"M336.274,90.591a21.037,21.037,0,0,0-.56-4.273c-.008-.033-.018-.065-.026-.1l3.712-3.543-3.515-6.522-4.856,1.119a21.1,21.1,0,0,0-3.447-3.122l.544-4.9-6.885-2.737-2.909,3.857a20.85,20.85,0,0,0-4.81-.162l-2.662-4-7.033,2.329.251,4.817a20.955,20.955,0,0,0-3.734,2.991l-4.663-1.367-3.891,6.305,3.39,3.638a20.93,20.93,0,0,0-.882,4.513l-4.608,2.02,1.072,7.331,5.155.635a20.841,20.841,0,0,0,2.108,3.791l-2.334,4.715,5.534,4.926,4.535-2.943a21.132,21.132,0,0,0,3.833,1.5l1.284,5.28,7.405.217,1.6-5.236c.072-.016.143-.028.215-.045a21.031,21.031,0,0,0,3.636-1.226l4.4,3.239,5.812-4.594-2.112-4.982a21.2,21.2,0,0,0,2.215-3.515l5.349-.343,1.5-7.255ZM324.686,96.9a10.855,10.855,0,1,1-3.54-14.937,10.855,10.855,0,0,1,3.54,14.937\" transform=\"translate(-209.495 -47.884)\" fill=\"#eaeaea\"/>\n <path id=\"Path_282\" data-name=\"Path 282\" d=\"M311.132,105.459a27.446,27.446,0,0,0,4.235-1.433l-.811-.008,4.921,3.619a.874.874,0,0,0,.959-.081l6.494-5.132c.126-.1.3-.3.225-.484l-1.7-4.008c-.131-.309-.718-1.2-.654-1.543.011-.056.92-1.078,1.046-1.272a26.523,26.523,0,0,0,1.392-2.415l-.7.413,5.976-.383a.78.78,0,0,0,.737-.54l1.676-8.106a.356.356,0,0,0-.162-.335l-3.07-1.566a8.038,8.038,0,0,1-1.766-.9c-.04-.038-.212-.071-.246-.126-.171-.272.243.576.048-.239-.147-.614-.1-1.359-.177-1.982a12.8,12.8,0,0,1-.437-2.393c-.032.316-.214.259.087.053a12.324,12.324,0,0,0,1.367-1.3l2.555-2.439a.393.393,0,0,0,.053-.492l-3.927-7.286c-.125-.231-.528-.211-.735-.164L323.1,66.16l.735.164a18.337,18.337,0,0,0-3.194-3.011c-.518-.346-.492-.115-.563-.5a4.22,4.22,0,0,1,.115-1.035q.232-2.087.463-4.174a.393.393,0,0,0-.291-.4l-7.692-3.057a.9.9,0,0,0-.945.253l-3.25,4.309.791-.289a26.588,26.588,0,0,0-5.547-.184l.553.195L301.3,53.965a.7.7,0,0,0-.735-.164L292.7,56.4c-.193.064-.568.244-.555.509l.213,4.1a3.924,3.924,0,0,1,.05.949c-.106.462.113.076-.365.377a21.976,21.976,0,0,0-3.671,3.047l.945-.254-5.21-1.526a.9.9,0,0,0-1.025.374l-4.347,7.045a.356.356,0,0,0,.027.371l2.777,2.981c.3.326.884.813.917,1.137a12.491,12.491,0,0,1-.55,1.935,25.709,25.709,0,0,0-.408,2.811l.381-.445-5.148,2.256a.564.564,0,0,0-.372.573l1.2,8.19c.028.193.275.287.437.307l5.76.71-.437-.307c.28.637.573,1.266.9,1.881q.34.642.72,1.263c.128.21.606.729.639.831.093.29-.377,1.021-.587,1.445l-1.895,3.828a.365.365,0,0,0,.124.463l6.182,5.5c.255.226.721.073.959-.081l5.067-3.287-.829.145c.764.378,1.538.73,2.336,1.031.265.1,1.649.4,1.679.432.292.315.349,1.434.447,1.837l.973,4a.474.474,0,0,0,.437.307l8.274.243c.284.008.77-.079.871-.409l1.791-5.85-.517.381.24-.05c.84-.177.585-1.091-.246-.916l-.24.051a.74.74,0,0,0-.516.381l-1.791,5.85.871-.409-8.274-.242.437.307-1-4.127a7.018,7.018,0,0,0-.416-1.711c-.429-.732-2.169-.932-2.957-1.259-.855-.356-1.593-1.028-2.486-.579a16.665,16.665,0,0,0-1.489.966l-3.544,2.3.959-.081-6.182-5.5.124.463,2.607-5.268a.366.366,0,0,0-.027-.371,25.426,25.426,0,0,1-1.513-2.47c-.273-.515-.457-1.514-.939-1.857A3.838,3.838,0,0,0,283,90.731l-4.537-.559.437.307-1.2-8.19-.373.574,5.148-2.256a.618.618,0,0,0,.381-.445,25.718,25.718,0,0,1,.408-2.811c.115-.552.735-1.883.569-2.36-.142-.407-.7-.807-.985-1.111L281,71.893a5.346,5.346,0,0,0-.746-.8c-.4-.272-.005-.338-.221.063,1.3-2.408,2.895-4.691,4.331-7.019l-1.025.374,5.21,1.527a.951.951,0,0,0,.945-.253,24.834,24.834,0,0,1,4.055-3.234.545.545,0,0,0,.234-.356q-.14-2.691-.28-5.382l-.554.509,7.858-2.6-.735-.164,2.974,4.465a.62.62,0,0,0,.553.2,24.9,24.9,0,0,1,5.2.177.918.918,0,0,0,.791-.289l3.25-4.309-.945.254,7.692,3.057-.292-.4q-.244,2.2-.489,4.4c-.04.36-.238.973-.054,1.315.242.45,1.186.92,1.582,1.258a24.3,24.3,0,0,1,2.269,2.23.733.733,0,0,0,.735.164l5.425-1.25-.735-.164,3.927,7.286c.017-.164.035-.327.053-.492l-4.147,3.959a.426.426,0,0,0-.109.376,22.055,22.055,0,0,1,.645,4.755.366.366,0,0,0,.162.335l3.307,1.687c.4.2,1.24.854,1.693.864.327.006-.055-.013,0-.2-.049.155-.054.325-.1.481-.711,2.453-1.049,5.075-1.567,7.578l.737-.54-4.774.306a4.174,4.174,0,0,0-1.558.172c-.517.28-.731,1.074-1,1.546a24.469,24.469,0,0,1-1.734,2.578c-.069.091-.161.253-.109.376l2.36,5.566.225-.484-6.494,5.132.959-.081-3.8-2.8a5.03,5.03,0,0,0-1.249-.888c-.53-.155-1.086.236-1.551.42a24.062,24.062,0,0,1-3.02.942c-.83.206-.584,1.122.246.916\" transform=\"translate(-199.854 -38.882)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_283\" data-name=\"Path 283\" d=\"M344.1,121.226a10.089,10.089,0,0,1,11.133-4.385,10.565,10.565,0,0,1,7.579,8.932,10.4,10.4,0,0,1-5.687,10.455,10.2,10.2,0,0,1-11.72-2.236,10.641,10.641,0,0,1-1.3-12.766c.379-.639-.979-.658-1.279-.153a11.338,11.338,0,0,0,1.231,13.372,11.682,11.682,0,0,0,12.658,3,11.533,11.533,0,0,0,7.517-10.994,11.36,11.36,0,0,0-7.865-10.4,11.889,11.889,0,0,0-13.541,5.026c-.4.619.964.644,1.279.153\" transform=\"translate(-246.745 -83.529)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_284\" data-name=\"Path 284\" d=\"M196.861,234.476a16.167,16.167,0,0,0,2.945-.221l2.668,3.256,5.211-2.318-.626-4.118a16.317,16.317,0,0,0,2.322-2.2l4.055.764,2.5-5.125-3-2.645a16.184,16.184,0,0,0,.4-3.294c0-.026,0-.051,0-.078l3.444-1.935-1.378-5.534-3.835-.091a16.252,16.252,0,0,0-1.976-2.986l1.34-3.551-4.613-3.354-2.9,2.322a16.034,16.034,0,0,0-3.557-1.038l-1.224-3.488-5.689.4-.731,3.64a16.129,16.129,0,0,0-3.355,1.519l-3.217-1.908-4.1,3.961,1.835,3.36a16.107,16.107,0,0,0-1.518,3.2l-3.822.628-.6,5.672,3.724,1.456a16.027,16.027,0,0,0,.849,3.229l-2.639,3.072,3.188,4.729,3.943-1.33a16.258,16.258,0,0,0,2.573,1.846l-.049,4.183,5.482,1.574,2.194-3.6c.056,0,.112.006.169.007m-4.778-21.488a7.479,7.479,0,1,1-.185,10.575,7.479,7.479,0,0,1,.185-10.575\" transform=\"translate(-128.31 -143.797)\" fill=\"#e3e3e3\"/>\n <path id=\"Path_285\" data-name=\"Path 285\" d=\"M216.713,226.9a14.491,14.491,0,0,0,.355-2.948c0-.023,0-.046,0-.069l3.082-1.732-1.234-4.953-3.432-.082a14.546,14.546,0,0,0-1.768-2.672l1.2-3.179-4.129-3-2.6,2.078a14.352,14.352,0,0,0-3.184-.929l-1.1-3.122-5.092.355-.655,3.259a14.434,14.434,0,0,0-3,1.36l-2.88-1.708-3.673,3.545,1.642,3.007a14.432,14.432,0,0,0-1.359,2.862l-3.421.562-.535,5.077,3.333,1.3a14.348,14.348,0,0,0,.76,2.89l-2.362,2.749,2.854,4.233,3.529-1.191a14.553,14.553,0,0,0,2.3,1.653l-.044,3.744,4.907,1.408,1.963-3.222c.051,0,.1.006.151.007a14.491,14.491,0,0,0,2.636-.2l2.388,2.914,4.664-2.075-.56-3.686a14.613,14.613,0,0,0,2.078-1.969l3.629.684,2.239-4.588Zm-8.812,2.235a7.479,7.479,0,1,1,.185-10.575,7.479,7.479,0,0,1-.185,10.575\" transform=\"translate(-133.738 -149.182)\" fill=\"#eaeaea\"/>\n <path id=\"Path_286\" data-name=\"Path 286\" d=\"M195.027,233.681a19.286,19.286,0,0,0,2.945-.221l-.553-.195,2.667,3.256a.783.783,0,0,0,.908.1l5.211-2.318a.563.563,0,0,0,.372-.573l-.626-4.118-.225.484a19.87,19.87,0,0,0,2.438-2.307l-.791.289,4.055.764a.872.872,0,0,0,.871-.409l2.5-5.125a.364.364,0,0,0-.124-.462l-2.193-1.931a2.815,2.815,0,0,1-.549-.483c-.188-.313-.118-.06-.123-.284-.007-.267.291-1.084.332-1.469a13.317,13.317,0,0,0,.088-1.514l-.381.445,3.444-1.935c.2-.113.438-.31.372-.573l-1.378-5.534a.475.475,0,0,0-.437-.307l-2.325-.055a4.037,4.037,0,0,1-1.3-.031c-.528-.26.4.381-.043-.211-.26-.345-.457-.79-.7-1.153-.281-.425-.961-1.019-.967-1.261a4.565,4.565,0,0,1,.453-1.2l.813-2.154a.364.364,0,0,0-.124-.462l-4.613-3.354a.874.874,0,0,0-.959.081l-2.9,2.322.829-.145a19.009,19.009,0,0,0-3.711-1.073l.437.307-1.224-3.488a.566.566,0,0,0-.609-.31l-5.689.4a.78.78,0,0,0-.737.54l-.731,3.64.554-.509a19.226,19.226,0,0,0-3.528,1.583l.811.008-3.217-1.908a.9.9,0,0,0-1.075.189l-4.1,3.961a.393.393,0,0,0-.052.492l1.3,2.379c.1.178.546.736.524.959a.535.535,0,0,0-.518.525l-.231.449a18.352,18.352,0,0,0-.784,1.875l.7-.413-3.821.628c-.289.048-.7.19-.737.54q-.3,2.836-.6,5.672a.393.393,0,0,0,.292.4l2.115.827a5.514,5.514,0,0,1,1.284.5c.058.047.258.053.3.118a.446.446,0,0,0-.085.686q.074.351.169.7c.083.315.45.992.471,1.182s.089-.044-.039.237a5.665,5.665,0,0,1-.87,1.013l-1.587,1.847a.393.393,0,0,0-.053.492l3.188,4.729a.7.7,0,0,0,.735.164l3.943-1.33-.638-.072c.46.392.928.77,1.424,1.115a5.293,5.293,0,0,0,.987.419c.142.2-.012,1.028-.015,1.27q-.017,1.445-.034,2.89a.393.393,0,0,0,.291.4l5.482,1.573a.9.9,0,0,0,1.025-.374l2.194-3.6-.871.41.169.007c.649.028,1.365-.933.463-.972l-.169-.007a.917.917,0,0,0-.871.409l-2.194,3.6,1.025-.374-5.482-1.574.292.4q.017-1.508.035-3.017a4.2,4.2,0,0,0,.014-1.166c-.211-.618-1.152-.941-1.679-1.33-.569-.421-.958-1-1.694-.924a5.714,5.714,0,0,0-1.1.371l-2.844.959.735.164-3.188-4.729-.052.492,2.639-3.072a.429.429,0,0,0,.109-.376,18.208,18.208,0,0,1-.566-1.814,5.147,5.147,0,0,0-.34-1.531c-.177-.229-.657-.325-.906-.422l-3.044-1.19.291.4q.3-2.836.6-5.672l-.737.54,3.821-.628c.244-.04.6-.144.7-.413a18.426,18.426,0,0,1,.785-1.875c.184-.372.756-1.044.772-1.451.011-.265-.259-.6-.378-.817l-1.522-2.786q-.026.246-.053.492l4.1-3.961-1.075.189,3.218,1.908a.855.855,0,0,0,.811.008,18.325,18.325,0,0,1,1.627-.853,12.91,12.91,0,0,0,1.728-.667c.365-.242.383-.477.468-.878.227-1.066.43-2.138.644-3.207l-.736.54,5.689-.4-.609-.31,1.224,3.488a.5.5,0,0,0,.437.307,17.356,17.356,0,0,1,3.4,1,.918.918,0,0,0,.829-.145l2.9-2.322-.959.081,4.613,3.354-.124-.463c-.383,1.014-.773,2.026-1.148,3.043a1.36,1.36,0,0,0-.164.879c.1.415.821,1.062,1.068,1.435.332.5.626,1.02.907,1.55a.542.542,0,0,0,.38.192l3.835.091-.437-.307,1.378,5.534.372-.573-3.444,1.935c-.153.086-.383.238-.381.445a15.781,15.781,0,0,1-.4,3.371.367.367,0,0,0,.162.335l3,2.645-.124-.463-2.5,5.125.871-.409-2.924-.551a5.749,5.749,0,0,0-1.13-.213c-.76.025-1.063.618-1.571,1.125s-1.531,1.014-1.651,1.74a3.96,3.96,0,0,0,.157,1.03l.469,3.088.372-.573-5.211,2.318.908.1-2.147-2.62c-.184-.225-.4-.629-.682-.759a2.062,2.062,0,0,0-1.115.031,18.055,18.055,0,0,1-2.222.118c-.763,0-1.026.977-.119.979\" transform=\"translate(-126.535 -142.513)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_287\" data-name=\"Path 287\" d=\"M223.113,243.525a6.781,6.781,0,0,1,9.788.468,7.148,7.148,0,0,1-.35,9.729,6.744,6.744,0,0,1-9.848-.665,7.184,7.184,0,0,1,.526-9.639c.586-.6-.7-.822-1.119-.394a7.979,7.979,0,0,0-1.6,9.112,8.109,8.109,0,0,0,8.09,4.392,8.313,8.313,0,0,0,7.109-5.834,7.9,7.9,0,0,0-3.305-8.782,8.439,8.439,0,0,0-10.176,1c-.666.61.39,1.066.887.61\" transform=\"translate(-158.896 -174.029)\" fill=\"#cfcfcf\"/>\n</g>\n</svg>\n)\n}\n","import React, { useCallback, useState, useEffect } from 'react';\nimport { Box, Button, IconButton, CircularProgress, Stack } from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { classes } from '../styles';\nimport { IQuestionBasedProps } from '../../types';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport NoAutoStatusSVG from './NoAutoStatusSVG';\nimport Switch from '@mui/material/Switch';\n\nexport default function QuestionBased({\n apiKey,\n jobId,\n setSnackbar,\n autoStatuses,\n setAutoStatuses,\n applicationStatuses,\n hasRadioButtonQuestions,\n handleEditTabChange\n}: IQuestionBasedProps) {\n const [isLoading, setIsLoading] = useState({\n new: false,\n delete: -1,\n addField: -1,\n deleteField: [-1, -1],\n updateField: [-1, -1]\n });\n const [hoveredField, setHoveredField] = useState([-1, -1]);\n\n const [radioQuestions, setRadioQuestions] = useState([]);\n\n const getRadioButtonQuestions = useCallback(async () => {\n try {\n const response = await fetch(`/api/v4/fields?job_id=${jobId}`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n setRadioQuestions(response.fields.filter((question) => question.type === 'RadioButtonField'));\n } catch (error) {\n console.log(error);\n }\n }, [apiKey, jobId]);\n\n const handleAddNewAutoStatus = async () => {\n setIsLoading({ ...isLoading, new: true });\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_status_question_based`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n auto_status_question_based: {\n status_id: applicationStatuses[0].id,\n auto_status_conditions_attributes: {\n 0: {\n field_id: radioQuestions[0]?.id,\n field_choice_id: radioQuestions[0]?.field_choices[0]?.id\n }\n }\n }\n })\n });\n if (response.ok) {\n const data = await response.json();\n setAutoStatuses([...autoStatuses, data]);\n } else {\n throw new Error('Error adding auto status');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error creating auto status',\n state: 'error'\n });\n } finally {\n setIsLoading({ ...isLoading, new: false });\n }\n };\n\n const handleNewAutoStatusField = async (index: number) => {\n const tempAutoStatus = JSON.parse(JSON.stringify(autoStatuses));\n const filteredQuestion = radioQuestions?.filter(\n (question) => !tempAutoStatus[index].fields.map((f) => f.question.id).includes(question.id)\n );\n tempAutoStatus[index].fields.push({\n question: {\n id: filteredQuestion[0].id,\n title: filteredQuestion[0].title\n },\n choice: {\n id: filteredQuestion[0].field_choices[0].id,\n name: filteredQuestion[0].field_choices[0].name\n }\n });\n setIsLoading({ ...isLoading, addField: index });\n const payload = {\n auto_status_question_based: {\n status_id: tempAutoStatus[index].status.id,\n auto_status_conditions_attributes: {}\n }\n };\n tempAutoStatus[index].fields.forEach((field, i) => {\n payload.auto_status_question_based.auto_status_conditions_attributes[i] = {\n id: field.id,\n field_id: field.question.id,\n field_choice_id: field.choice.id\n };\n });\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/auto_status_question_based/${autoStatuses[index].id}`,\n {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload)\n }\n );\n const data = await response.json();\n if (response.ok) {\n tempAutoStatus[index] = data;\n setAutoStatuses(tempAutoStatus);\n } else {\n throw new Error('Error adding auto status field');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error adding auto status field',\n state: 'error'\n });\n } finally {\n setIsLoading({ ...isLoading, addField: -1 });\n }\n };\n\n const handleRemoveField = async (index: number, fieldIndex: number) => {\n setIsLoading({ ...isLoading, deleteField: [index, fieldIndex] });\n const tempAutoStatus = JSON.parse(JSON.stringify(autoStatuses));\n tempAutoStatus[index].fields.splice(fieldIndex, 1);\n setIsLoading({ ...isLoading, deleteField: [index, fieldIndex] });\n const payload = {\n auto_status_question_based: {\n status_id: tempAutoStatus[index].status.id,\n auto_status_conditions_attributes: {}\n }\n };\n tempAutoStatus[index].fields.forEach((field, i) => {\n payload.auto_status_question_based.auto_status_conditions_attributes[i] = {\n id: field.id,\n field_id: field.question.id,\n field_choice_id: field.choice.id\n };\n });\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/auto_status_question_based/${autoStatuses[index].id}`,\n {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload)\n }\n );\n const data = await response.json();\n if (response.ok) {\n tempAutoStatus[index] = data;\n setAutoStatuses(tempAutoStatus);\n } else {\n throw new Error('Error removing auto status field');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error removing auto status field',\n state: 'error'\n });\n } finally {\n setIsLoading({ ...isLoading, deleteField: [-1, -1] });\n }\n };\n\n const handleDeleteAutoStatus = async (index: number) => {\n const autoStatusesCopy = JSON.parse(JSON.stringify(autoStatuses));\n autoStatusesCopy.splice(index, 1);\n setIsLoading({ ...isLoading, delete: index });\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/auto_status_question_based/${autoStatuses[index].id}`,\n {\n method: 'DELETE',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n }\n }\n );\n if (response.ok) {\n setAutoStatuses(autoStatusesCopy);\n } else {\n throw new Error('Error deleting auto status');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error deleting auto status',\n state: 'error'\n });\n } finally {\n setIsLoading({ ...isLoading, delete: -1 });\n }\n };\n\n const handleChangeStatus = async (index: number, statusId: number) => {\n const prevAutoStatuses = JSON.parse(JSON.stringify(autoStatuses));\n const tempAutoStatus = JSON.parse(JSON.stringify(autoStatuses));\n tempAutoStatus[index].status.id = statusId;\n setAutoStatuses(tempAutoStatus);\n const payload = {\n auto_status_question_based: {\n status_id: statusId,\n auto_status_conditions_attributes: {}\n }\n };\n tempAutoStatus[index].fields.forEach((field, i) => {\n payload.auto_status_question_based.auto_status_conditions_attributes[i] = {\n id: field.id,\n field_id: field.question.id,\n field_choice_id: field.choice.id\n };\n });\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/auto_status_question_based/${autoStatuses[index].id}`,\n {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload)\n }\n );\n if (!response.ok) {\n setAutoStatuses(prevAutoStatuses);\n throw new Error('Error updating auto status');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error updating auto status',\n state: 'error'\n });\n }\n };\n\n const handleChangeField = async (\n index: number,\n fieldIndex: number,\n value: number,\n type: 'q' | 'a'\n ) => {\n const prevAutoStatuses = JSON.parse(JSON.stringify(autoStatuses));\n const tempAutoStatus = JSON.parse(JSON.stringify(autoStatuses));\n if (type === 'q') {\n setIsLoading({ ...isLoading, updateField: [index, fieldIndex] });\n tempAutoStatus[index].fields[fieldIndex].question.id = value;\n tempAutoStatus[index].fields[fieldIndex].choice.id = radioQuestions.find(\n (question) => question.id === value\n )?.field_choices[0].id;\n } else {\n tempAutoStatus[index].fields[fieldIndex].choice.id = value;\n }\n setAutoStatuses(tempAutoStatus);\n const payload = {\n auto_status_question_based: {\n status_id: tempAutoStatus[index].status.id,\n auto_status_conditions_attributes: {}\n }\n };\n tempAutoStatus[index].fields.forEach((field, i) => {\n payload.auto_status_question_based.auto_status_conditions_attributes[i] = {\n id: field.id,\n field_id: field.question.id,\n field_choice_id: field.choice.id\n };\n });\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/auto_status_question_based/${autoStatuses[index].id}`,\n {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(payload)\n }\n );\n if (!response.ok) {\n setAutoStatuses(prevAutoStatuses);\n throw new Error('Error updating auto status field');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error updating auto status field',\n state: 'error'\n });\n } finally {\n setIsLoading({ ...isLoading, updateField: [-1, -1] });\n }\n };\n\n const handleEnableStatus = async (index: number, id: number) => {\n const prevAutoStatuses = JSON.parse(JSON.stringify(autoStatuses));\n const tempAutoStatus = JSON.parse(JSON.stringify(autoStatuses));\n tempAutoStatus[index].enabled = !autoStatuses[index].enabled;\n setAutoStatuses(tempAutoStatus);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_status_question_based/${id}`, {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n enabled: tempAutoStatus[index].enabled\n })\n });\n if (!response.ok) {\n setAutoStatuses(prevAutoStatuses);\n throw new Error('Error updating auto status');\n }\n } catch (error) {\n setSnackbar({\n message: 'There was an error saving your changes',\n state: 'error'\n });\n }\n };\n\n useEffect(() => {\n getRadioButtonQuestions();\n }, [getRadioButtonQuestions]);\n\n return (\n <Box sx={classes.autoStatusesContainer}>\n <Box sx={{ position: 'relative' }}>\n {hasRadioButtonQuestions ? (\n <>\n {autoStatuses &&\n autoStatuses?.map((autoStatus, statusIndex) => (\n <Box sx={{ position: 'relative', display: 'flex' }} key={autoStatus.id}>\n <Box sx={classes.autoStatusesSubContainer} key={autoStatus.id}>\n {autoStatus.fields?.map((field, fieldIndex) => (\n <Box\n sx={classes.statusFormLine}\n key={field.id}\n onMouseEnter={() => setHoveredField([statusIndex, fieldIndex])}\n onMouseLeave={() => setHoveredField([-1, -1])}\n >\n <Box\n component={'h4'}\n sx={{ marginRight: fieldIndex === 0 ? '31px' : '8px' }}\n >\n {fieldIndex === 0 ? 'If' : 'and'}\n </Box>\n <FormSelectField\n label=\"Variable\"\n isDisabled={!radioQuestions}\n defaultValue={field.question.id ? field.question.id.toString() : ''}\n options={radioQuestions\n .filter(\n (question) =>\n question.id === field.question.id ||\n !autoStatus.fields?.map((f) => f.question.id).includes(question.id)\n )\n ?.map((question) => ({\n value: question.id.toString(),\n label: question.title\n }))}\n onChange={(value) =>\n handleChangeField(statusIndex, fieldIndex, Number(value), 'q')\n }\n styles={{ width: '290px' }}\n />\n <h4>equals</h4>\n <FormSelectField\n label=\"Answer\"\n options={radioQuestions\n .filter(\n (question) =>\n question.id === field.question.id || field.question.id === 0\n )[0]\n ?.field_choices?.map((choice) => ({\n value: choice.id.toString(),\n label: choice.name\n }))}\n defaultValue={field.choice.id ? field.choice.id.toString() : ''}\n onChange={(value) =>\n handleChangeField(statusIndex, fieldIndex, Number(value), 'a')\n }\n styles={{ width: '290px' }}\n isDisabled={\n !autoStatuses[statusIndex]?.fields[fieldIndex]?.question.id ||\n (isLoading.updateField[0] === statusIndex &&\n isLoading.updateField[1] === fieldIndex)\n }\n />\n {hoveredField[1] > 0 &&\n hoveredField.join('') === `${statusIndex}${fieldIndex}` && (\n <IconButton\n onClick={() => handleRemoveField(statusIndex, fieldIndex)}\n sx={classes.clearButton}\n >\n {isLoading.deleteField.join('') === `${statusIndex}${fieldIndex}` ? (\n <CircularProgress size={20} />\n ) : (\n <ClearIcon />\n )}\n </IconButton>\n )}\n </Box>\n ))}\n {autoStatus?.fields?.length < radioQuestions?.length && (\n <Box sx={classes.statusFormLine}>\n <Button\n startIcon={\n isLoading.addField === statusIndex ? (\n <CircularProgress size={22} />\n ) : (\n <AddIcon />\n )\n }\n onClick={() => handleNewAutoStatusField(statusIndex)}\n sx={classes.addNewFieldButton}\n >\n and\n </Button>\n </Box>\n )}\n <Box sx={classes.statusFormLine}>\n <h4>then</h4>\n <FormSelectField\n label=\"Status\"\n options={\n applicationStatuses\n ? applicationStatuses?.map((status) => ({\n value: status.id.toString(),\n label: status.name\n }))\n : []\n }\n defaultValue={autoStatus.status.id ? autoStatus.status.id.toString() : ''}\n onChange={(value) => handleChangeStatus(statusIndex, Number(value))}\n styles={{ width: '290px' }}\n />\n </Box>\n </Box>\n <Box\n sx={{\n ...classes.switchContainer,\n fontWeight: autoStatus.enabled ? 'bold' : ''\n }}\n >\n <Box sx={{ marginTop: '12px' }}>\n <Switch\n sx={autoStatus.enabled ? classes.switchActive : classes.switch}\n checked={autoStatus.enabled}\n size=\"small\"\n onChange={() => handleEnableStatus(statusIndex, autoStatus.id)}\n />\n <Stack sx={{ marginTop: 1, fontSize: '12px' }}>Enabled</Stack>\n </Box>\n </Box>\n <IconButton\n data-testid=\"delete-auto-status\"\n sx={classes.deleteButton}\n onClick={() => handleDeleteAutoStatus(statusIndex)}\n disabled={isLoading.delete === statusIndex}\n >\n {isLoading.delete === statusIndex ? (\n <CircularProgress size={26} />\n ) : (\n <DeleteIcon />\n )}\n </IconButton>\n </Box>\n ))}\n {autoStatuses && autoStatuses.length > 0 ? (\n <IconButton\n sx={classes.addNewStatusButton}\n onClick={handleAddNewAutoStatus}\n disabled={isLoading.new}\n >\n {isLoading.new ? <CircularProgress size={21} /> : <AddCircleIcon />}\n </IconButton>\n ) : (\n <Box sx={{ ...classes.noQuestionsContainer, margin: '100px 0px' }}>\n <Box>\n <NoAutoStatusSVG />\n </Box>\n <Box sx={classes.noQuestionsText}>You have no auto statuses.</Box>\n <Button\n data-testid=\"add-new-status-button\"\n startIcon={isLoading.new ? <CircularProgress size={26} /> : <AddCircleIcon />}\n onClick={handleAddNewAutoStatus}\n sx={classes.noStatusesAddButton}\n >\n Add new status\n </Button>\n </Box>\n )}\n </>\n ) : (\n <Box sx={{ ...classes.noQuestionsContainer, margin: '100px 0px' }}>\n <Box>\n <NoAutoStatusSVG />\n </Box>\n <Box sx={classes.noQuestionsText}>\n Question based auto statuses can only be used with radio button question types.\n <br />\n You have currently no radio button questions.\n </Box>\n <Button\n data-testid=\"create-radio-button\"\n startIcon={isLoading.new ? <CircularProgress size={26} /> : <AddCircleIcon />}\n onClick={(e) => handleEditTabChange(e, 4)}\n sx={classes.noStatusesAddButton}\n >\n Create radio button questions\n </Button>\n </Box>\n )}\n </Box>\n </Box>\n );\n}\n","import React, { useState } from 'react';\nimport { Box, Button, Slider, IconButton, CircularProgress, Stack } from '@mui/material';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { classes } from '../styles';\nimport { IRatingBasedProps } from '../../types';\nimport { useDebouncedCallback } from 'use-debounce';\nimport Switch from '@mui/material/Switch';\n\nexport default function RatingBased({\n apiKey,\n jobId,\n setSnackbar,\n autoStatuses,\n setAutoStatuses,\n applicationStatuses\n}: IRatingBasedProps) {\n const [isLoading, setIsLoading] = useState({\n new: false,\n delete: -1\n });\n\n const handleRatingChange = async (value: number[], index: number) => {\n const tempAutoStatus = [...autoStatuses];\n const prevAutoStatus = [...autoStatuses];\n tempAutoStatus[index].rating_range = {\n min: value[0],\n max: value[1]\n };\n setAutoStatuses(tempAutoStatus);\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/auto_status_rating_based/${autoStatuses[index].id}`,\n {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n auto_status_rating_based: {\n status_id: autoStatuses[index].status.id,\n min_rating: value[0],\n max_rating: value[1]\n }\n })\n }\n );\n if (!response.ok) {\n throw new Error('Error updating auto status');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error updating auto status',\n state: 'error'\n });\n setAutoStatuses(prevAutoStatus);\n }\n };\n\n const handleStatusChange = async (value: string | number, index: number) => {\n const tempAutoStatus = [...autoStatuses];\n const prevAutoStatus = [...autoStatuses];\n tempAutoStatus[index].status.id = parseInt(value as string);\n setAutoStatuses(tempAutoStatus);\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/auto_status_rating_based/${autoStatuses[index].id}`,\n {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n auto_status_rating_based: {\n status_id: value,\n min_rating: autoStatuses[index].rating_range.min,\n max_rating: autoStatuses[index].rating_range.max\n }\n })\n }\n );\n if (!response.ok) {\n throw new Error('Error updating auto status');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error updating auto status',\n state: 'error'\n });\n setAutoStatuses(prevAutoStatus);\n }\n };\n\n const handleNewAutoStatus = async () => {\n setIsLoading((prev) => ({ ...prev, new: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_status_rating_based`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n status_id: applicationStatuses[0].id,\n min_rating: 0,\n max_rating: 100\n })\n });\n const data = await response.json();\n if (response.ok) {\n setAutoStatuses((prev) => [...prev, data]);\n } else {\n throw new Error('Error creating new auto status');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error creating new auto status',\n state: 'error'\n });\n } finally {\n setIsLoading((prev) => ({ ...prev, new: false }));\n }\n };\n\n const handleDeleteAutoStatus = async (index: number) => {\n setIsLoading((prev) => ({ ...prev, delete: index }));\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/auto_status_rating_based/${autoStatuses[index].id}`,\n {\n method: 'DELETE',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n }\n }\n );\n if (response.ok) {\n const autoStatusesCopy = [...autoStatuses];\n autoStatusesCopy.splice(index, 1);\n setAutoStatuses(autoStatusesCopy);\n } else {\n throw new Error('Error deleting auto status');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error deleting auto status',\n state: 'error'\n });\n } finally {\n setIsLoading((prev) => ({ ...prev, delete: -1 }));\n }\n };\n\n const handleEnableStatus = async (index: number, id: number) => {\n const prevAutoStatuses = [...autoStatuses];\n const tempAutoStatus = [...autoStatuses];\n tempAutoStatus[index].enabled = !autoStatuses[index].enabled;\n setAutoStatuses(tempAutoStatus);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_status_rating_based/${id}`, {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n enabled: tempAutoStatus[index].enabled\n })\n });\n if (!response.ok) {\n setAutoStatuses(prevAutoStatuses);\n throw new Error('Error updating auto status');\n }\n } catch (error) {\n setSnackbar({\n message: 'There was an error saving your changes',\n state: 'error'\n });\n }\n };\n\n return (\n <Box sx={classes.autoStatusesContainer}>\n <Box sx={{ position: 'relative' }}>\n {autoStatuses.map((ratingBased, index) => (\n <Box sx={{ position: 'relative', display: 'flex' }} key={ratingBased.id}>\n <Box sx={classes.autoStatusesSubContainer} key={ratingBased.id}>\n <Box sx={classes.statusFormLine}>\n <Box component={'h4'}>If candidate rating is</Box>\n </Box>\n <Box sx={classes.statusFormLine}>\n <DebouncedSlider\n initialValue={[ratingBased.rating_range.min, ratingBased.rating_range.max]}\n onChange={(e, value) => handleRatingChange(value as number[], index)}\n />\n </Box>\n <Box sx={classes.statusFormLine}>\n <Box component={'h4'}>then set status to</Box>\n <FormSelectField\n label=\" \"\n options={applicationStatuses.map((status) => ({\n value: status.id.toString(),\n label: status.name\n }))}\n defaultValue={ratingBased.status.id ? ratingBased.status.id.toString() : ''}\n onChange={(value) => handleStatusChange(value, index)}\n styles={{ width: '290px' }}\n />\n </Box>\n </Box>\n <Box sx={{ ...classes.switchContainer, fontWeight: ratingBased.enabled ? 'bold' : '' }}>\n <Box sx={{ marginTop: '12px' }}>\n <Switch\n sx={ratingBased.enabled ? classes.switchActive : classes.switch}\n checked={ratingBased.enabled}\n size=\"small\"\n onChange={() => handleEnableStatus(index, ratingBased.id)}\n />\n <Stack sx={{ marginTop: 1, fontSize: '12px' }}>Enabled</Stack>\n </Box>\n </Box>\n <IconButton\n data-testid=\"delete-rating-button\"\n sx={classes.deleteButton}\n onClick={() => handleDeleteAutoStatus(index)}\n disabled={isLoading.delete === index}\n >\n {isLoading.delete === index ? <CircularProgress size={26} /> : <DeleteIcon />}\n </IconButton>\n </Box>\n ))}\n {autoStatuses && autoStatuses.length > 0 ? (\n <IconButton\n data-testid=\"add-rating-button\"\n sx={classes.addNewStatusButton}\n onClick={handleNewAutoStatus}\n disabled={isLoading.new}\n >\n {isLoading.new ? <CircularProgress size={21} /> : <AddCircleIcon />}\n </IconButton>\n ) : (\n <Button\n data-testid=\"add-rating-button\"\n startIcon={isLoading.new ? <CircularProgress size={26} /> : <AddCircleIcon />}\n onClick={handleNewAutoStatus}\n sx={classes.noStatusesAddButton}\n >\n Add new status\n </Button>\n )}\n </Box>\n </Box>\n );\n}\n\nfunction DebouncedSlider({\n initialValue,\n onChange\n}: {\n initialValue: number[];\n onChange: (e: any, value: number | number[]) => void;\n}) {\n const [value, setValue] = useState(initialValue);\n const debouncedOnChange = useDebouncedCallback((value) => {\n onChange(undefined, value);\n }, 500);\n\n const handleChange = (event, newValue: number[]) => {\n setValue(newValue);\n debouncedOnChange(newValue);\n };\n\n return (\n <Slider\n sx={classes.ratingSlider}\n getAriaLabel={() => 'Applicant rating slider'}\n value={value}\n onChange={handleChange}\n valueLabelDisplay=\"on\"\n valueLabelFormat={(value: number) => `${value}%`}\n getAriaValueText={(value: number) => `${value}%`}\n />\n );\n}\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { Box, Skeleton, Button, IconButton } from '@mui/material';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport ImmediateChangesNotice from '../shared/ImmediateChangesNotice';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport { classes } from '../styles';\nimport { IStatusTransitions, IStatusTransitionsProps } from '../../types';\nimport { IApplicationStatus } from '../../../Job/types';\nimport { FormNumberField } from '../../../Components/CustomUIElements/FormTextField';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function TimeBased({ apiKey, jobId, setSnackbar }: IStatusTransitionsProps) {\n const [loading, setLoading] = useState({ statusTransitions: true, applicationStatuses: true });\n const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n const [statusTransitions, setStatusTransitions] = useState<IStatusTransitions[]>([]);\n const [numberError, setNumberError] = useState<boolean[]>([]);\n\n const getApplicationStatuses = useCallback(async () => {\n setLoading((prev) => ({ ...prev, applicationStatuses: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/job_application_statuses`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const { job_application_statuses } = await response.json();\n setApplicationStatuses(job_application_statuses);\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error fetching status transitions',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, applicationStatuses: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const getStatusTransitions = useCallback(async () => {\n setLoading((prev) => ({ ...prev, statusTransitions: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/status_transitions`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const { status_transitions } = await response.json();\n setStatusTransitions(status_transitions);\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error fetching status transitions',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, statusTransitions: false }));\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const handleChange = useCallback(\n async (value, index, type, statusTransition) => {\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/status_transitions/${statusTransition.id}`,\n {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n status_transition: {\n ...statusTransition,\n [type]: value\n }\n })\n }\n );\n if (!response.ok) {\n const body = await response.json();\n throw new Error(body.errors || 'Error updating auto status');\n }\n setStatusTransitions((prev) => {\n const newStatusTransitions = [...prev];\n newStatusTransitions[index][type as keyof typeof newStatusTransitions[0]] = value;\n return newStatusTransitions;\n });\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error updating auto status',\n state: 'error'\n });\n }\n },\n [apiKey, jobId, setSnackbar]\n );\n\n const handleNewStatusTransition = useCallback(async () => {\n setLoading((prev) => ({ ...prev, statusTransitions: true }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/status_transitions`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n from_status_id: 0,\n to_status_id: 0,\n days: 10\n })\n });\n const data = await response.json();\n if (response.ok) {\n setStatusTransitions((prev) => [...prev, data]);\n } else {\n throw new Error('Error creating new auto status');\n }\n } catch (error) {\n setSnackbar({\n message: error.message || 'Error creating new auto status',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, statusTransitions: false }));\n }\n }, []);\n\n const handleDeleteStatusTransition = useCallback(async (index, id) => {\n setLoading((prev) => ({ ...prev, delete: index }));\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/status_transitions/${id}`, {\n method: 'DELETE',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n }\n });\n if (response.ok) {\n setStatusTransitions((prev) => {\n const newStatusTransitions = [...prev];\n newStatusTransitions.splice(index, 1);\n return newStatusTransitions;\n });\n } else {\n throw new Error('Error deleting status transition');\n }\n } catch (error) {\n setSnackbar({\n message: error?.message || 'Error deleting status transition',\n state: 'error'\n });\n } finally {\n setLoading((prev) => ({ ...prev, delete: -1 }));\n }\n }, []);\n\n const debouncedNumberInputCallback = useDebouncedCallback((e, index, statusTransition) => {\n if (Number(e.target.value) > 0) {\n handleChange(e.target.value, index, 'days', statusTransition);\n } else {\n setSnackbar({\n message: 'Days must be a valid number greater than 0',\n state: 'error'\n });\n }\n }, 500);\n\n useEffect(() => {\n getApplicationStatuses();\n getStatusTransitions();\n }, [getApplicationStatuses, getStatusTransitions]);\n\n return (\n <Box sx={classes.automationContainer}>\n <h2 data-testid=\"status-transition-header\">Status transition</h2>\n <ImmediateChangesNotice />\n {!loading.applicationStatuses && !loading.statusTransitions ? (\n <Box sx={classes.autoStatusesContainer}>\n <Box sx={{ position: 'relative' }}>\n {statusTransitions?.map((statusTransition, index) => (\n <Box sx={classes.autoStatusesSubContainer} key={statusTransition.id}>\n <Box sx={classes.statusFormLine}>\n <FormSelectField\n label=\"From status\"\n options={applicationStatuses.map((status) => ({\n value: status.id.toString(),\n label: status.name\n }))}\n defaultValue={\n statusTransition.from_status_id\n ? statusTransition.from_status_id.toString()\n : ''\n }\n onChange={(value) =>\n handleChange(value, index, 'from_status_id', statusTransition)\n }\n styles={{ width: '290px' }}\n />\n <Box component={'h4'}>to</Box>\n <FormSelectField\n label=\"To status\"\n options={applicationStatuses.map((status) => ({\n value: status.id.toString(),\n label: status.name\n }))}\n defaultValue={\n statusTransition.to_status_id ? statusTransition.to_status_id.toString() : ''\n }\n onChange={(value) =>\n handleChange(value, index, 'to_status_id', statusTransition)\n }\n styles={{ width: '290px' }}\n />\n <Box component={'h4'}>after</Box>\n </Box>\n <Box sx={classes.statusFormLine}>\n <FormNumberField\n label=\" \"\n value={statusTransition.days}\n error={numberError[index] ? 'Days must be greater than 0' : ''}\n onChange={(e) => {\n setStatusTransitions((prev) => {\n const newStatusTransitions = [...prev];\n newStatusTransitions[index].days = e.target.value;\n return newStatusTransitions;\n });\n if (Number(e.target.value) > 0) {\n debouncedNumberInputCallback(e, index, statusTransition);\n setNumberError((prev) => {\n const newNumberError = [...prev];\n newNumberError[index] = false;\n return newNumberError;\n });\n } else {\n setNumberError((prev) => {\n const newNumberError = [...prev];\n newNumberError[index] = true;\n return newNumberError;\n });\n }\n }}\n styles={{ width: '190px' }}\n />\n <Box component={'h4'}>days</Box>\n </Box>\n <IconButton\n data-testid=\"delete-status-transition-button\"\n sx={classes.deleteButton}\n onClick={() => handleDeleteStatusTransition(index, statusTransition.id)}\n >\n <DeleteIcon />\n </IconButton>\n </Box>\n ))}\n {statusTransitions && statusTransitions.length > 0 ? (\n <IconButton sx={classes.addNewStatusButton} onClick={handleNewStatusTransition}>\n <AddCircleIcon />\n </IconButton>\n ) : (\n <Button\n data-testid=\"add-new-transition-button\"\n startIcon={<AddCircleIcon />}\n onClick={handleNewStatusTransition}\n sx={classes.noStatusesAddButton}\n >\n Add new transition\n </Button>\n )}\n </Box>\n </Box>\n ) : (\n <Skeleton\n variant=\"rectangular\"\n animation=\"wave\"\n height={450}\n width={'100%'}\n sx={{ borderRadius: '8px' }}\n />\n )}\n </Box>\n );\n}\n","import { ISmsTemplate } from '../../../Job/Applications/Modals/SMSCandidates';\n\nexport const getBodyFromSmsTemplateValue = (value: string, smsTemplates: ISmsTemplate[]) : string => {\n if (!value) {\n return '';\n }\n\n const id = Number(value.split(' -')[0]);\n const smsTemplate = smsTemplates.find((template) => template.id === id);\n return smsTemplate?.body || '';\n};\n","import React from 'react';\nimport { Button } from '@mui/material';\nimport { classes } from '../styles';\n\nexport default function CancelButton({ setModalOpen, scope }) {\n return (\n <Button\n id={`close-${scope}-button`}\n sx={classes.modalCancelButton}\n onClick={() => setModalOpen(false)}\n >\n Cancel\n </Button>\n );\n}\n","import React from 'react';\nimport SelectField from '../../../Components/CustomUIElements/SelectField';\nimport { DELAY_OPTIONS } from '../../../constants';\n\nexport default function DelaySelect({\n delay,\n setDelay\n}: {\n delay: string;\n setDelay: (value: string) => void;\n}) {\n const valueWithFallback = DELAY_OPTIONS.find((option) => option === delay) || DELAY_OPTIONS[0];\n\n return (\n <SelectField\n id='delay-select'\n label='Delay'\n options={DELAY_OPTIONS}\n value={valueWithFallback}\n onChange={setDelay}\n styles={{ width: '290px' }}\n />\n );\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from '../styles';\nimport DelaySelect from './DelaySelect';\n\nexport default function DelaySelectWrapper({ delay, setDelay }:\n {\n delay: string;\n setDelay: (value: string) => void\n }\n) {\n return (\n <Box sx={classes.actionModalFormLine}>\n <DelaySelect delay={delay} setDelay={setDelay} />\n </Box>\n );\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport InfoIcon from '@mui/icons-material/Info';\nimport { classes } from '../styles';\n\nexport default function ImmediateChangesNotice() {\n return (\n <Box sx={classes.noticeContainer}>\n <Box>\n <InfoIcon sx={classes.noticeIcon} />\n Any changes here will be automatically saved and will be applied immediately.\n </Box>\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport { Box, Button } from '@mui/material';\nimport { IJobData } from '../types';\nimport { classes } from '../styles';\nimport { emojiRegex } from '../../Jobs/config';\nimport HtmlEditor from '../../Components/Utilities/HtmlEditor';\nimport AIStudioModal from '../../../AIStudio/AIStudioModal/AIStudioModal';\nimport { FelixButtonSVG } from '../../../AIStudio/SharedComponents/Graphics/FelixSVG';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nconst handleInitialContent = (content: string) => {\n if (content.replace(/(<([^>]+)>)/gi, '') === '') {\n const contentArray = content.split('</div>');\n if (contentArray.length > 1) {\n contentArray[0] = contentArray[0] + '<p></p>';\n return contentArray.join('</div>');\n }\n }\n return content;\n};\n\nexport default function Description({\n descriptionTabJobData,\n setDescriptionTabJobData,\n setIsEdited,\n userPermissions,\n aiStudioEnabled,\n aiPrefillData\n}: {\n descriptionTabJobData: IJobData;\n setDescriptionTabJobData: IJobData;\n setIsEdited: Dispatch<SetStateAction<boolean>>;\n userPermissions: IUserPermissions;\n aiStudioEnabled: boolean;\n aiPrefillData?: {\n title: string;\n country: string;\n };\n}) {\n const [summary, setSummary] = useState(\n handleInitialContent(descriptionTabJobData?.summary?.value)\n );\n const [description, setDescription] = useState(\n handleInitialContent(descriptionTabJobData?.description?.value)\n );\n const [buttonHovered, setButtonHovered] = useState(false);\n const [aiStudioOpen, setAiStudioOpen] = useState(false);\n\n const handleSetAiStudioContent = (content: string) => {\n setDescriptionTabJobData((prev) => ({\n ...prev,\n description: { ...prev.description, value: content }\n }));\n setDescription(content);\n setIsEdited(true);\n };\n\n return (\n <Box sx={classes.tabContent}>\n {userPermissions?.['Job Options']?.['Summary field'] && (\n <Box>\n <Box id=\"discription-summary-title\" sx={classes.headerContent}>\n Summary\n </Box>\n <Box sx={classes.bodyContainer}>\n <Box\n sx={\n descriptionTabJobData?.summary?.value.length <= 65535\n ? { display: 'none', ...classes.warnText }\n : classes.warnText\n }\n >\n The field can't have more than 65535 characters.\n </Box>\n <Box\n sx={\n descriptionTabJobData?.summary?.value.match(emojiRegex)\n ? classes.warnText\n : { display: 'none', ...classes.warnText }\n }\n >\n This field can't have emojis.\n </Box>\n <HtmlEditor\n body={handleInitialContent(descriptionTabJobData?.summary?.value)}\n onChange={setSummary}\n onBlur={(value) => {\n setDescriptionTabJobData((prev) => ({\n ...prev,\n summary: { ...prev.summary, value: value }\n }));\n setIsEdited(true);\n }}\n />\n </Box>\n </Box>\n )}\n <Box sx={{...classes.headerContent, ...classes.headerRow }}>\n <Box>Description</Box>\n {aiStudioEnabled && (\n <Box sx={{ marginLeft: 'auto' }}>\n <Box\n id=\"ai-studio-questions-integration-button\"\n sx={{\n ...classes.buttonContainer,\n ...(buttonHovered ? classes.hoverAnimation : classes.unhoverAnimation)\n }}\n onMouseEnter={() => setButtonHovered(true)}\n onMouseLeave={() => setButtonHovered(false)}\n onClick={() => {\n setAiStudioOpen(true);\n }}\n >\n <Box sx={classes.avatarContainer}>\n <FelixButtonSVG />\n </Box>\n <Button sx={classes.button}>Generate description</Button>\n <Box sx={classes.betaPill}>Beta</Box>\n </Box>\n </Box>\n )}\n </Box>\n <Box sx={classes.bodyContainer}>\n <Box\n sx={\n descriptionTabJobData?.description?.value.length <= 65535\n ? { display: 'none', ...classes.warnText }\n : classes.warnText\n }\n >\n The field can't have more than 65535 characters.\n </Box>\n <Box\n sx={\n descriptionTabJobData?.description?.value.match(emojiRegex)\n ? classes.warnText\n : { display: 'none', ...classes.warnText }\n }\n >\n This field can't have emojis.\n </Box>\n <HtmlEditor\n body={handleInitialContent(descriptionTabJobData?.description?.value)}\n onChange={setDescription}\n onBlur={(value) => {\n setDescriptionTabJobData((prev) => ({\n ...prev,\n description: { ...prev.description, value }\n }));\n setIsEdited(true);\n }}\n />\n </Box>\n {aiStudioOpen && (\n <AIStudioModal\n aiStudioEnabled={true}\n showPreview={false}\n setTlpModalOpen={setAiStudioOpen}\n jobFlow={true}\n prefillData={aiPrefillData}\n setGeneratedContent={handleSetAiStudioContent}\n />\n )}\n </Box>\n );\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport moment from 'moment-timezone';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport Tabs from '@mui/material/Tabs';\nimport Tab from '@mui/material/Tab';\nimport Button from '@mui/material/Button';\nimport Box from '@mui/material/Box';\nimport Tooltip from '@mui/material/Tooltip';\nimport IconButton from '@mui/material/IconButton';\nimport Stack from '@mui/material/Stack';\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport BusinessCenterOutlinedIcon from '@mui/icons-material/BusinessCenterOutlined';\nimport ContentPasteOutlinedIcon from '@mui/icons-material/ContentPasteOutlined';\nimport LiveHelpOutlinedIcon from '@mui/icons-material/LiveHelpOutlined';\nimport AttachFileOutlinedIcon from '@mui/icons-material/AttachFileOutlined';\nimport FlashOnOutlinedIcon from '@mui/icons-material/FlashOnOutlined';\nimport ForwardOutlinedIcon from '@mui/icons-material/ForwardOutlined';\nimport EmailOutlinedIcon from '@mui/icons-material/EmailOutlined';\nimport SmsIcon from '@mui/icons-material/Sms';\nimport SendToMobileIcon from '@mui/icons-material/SendToMobile';\nimport VerifiedOutlinedIcon from '@mui/icons-material/VerifiedOutlined';\nimport GridOnOutlinedIcon from '@mui/icons-material/GridOnOutlined';\nimport LoopOutlinedIcon from '@mui/icons-material/LoopOutlined';\nimport GoogleIcon from '@mui/icons-material/Google';\nimport AssignmentIndOutlinedIcon from '@mui/icons-material/AssignmentIndOutlined';\nimport ArrowCircleLeftIcon from '@mui/icons-material/ArrowCircleLeft';\nimport Skeleton from '@mui/material/Skeleton';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport AutoStatuses from './Automation/AutoStatuses/AutoStatuses';\nimport { classes } from './styles';\nimport General from './General/General';\nimport Api from '../Job/API';\nimport { IJob, IPermissions } from '../Job/types';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport {\n changeURL,\n editDescriptionDefault,\n editGeneralJobDefault,\n editGoogleScriptDefault,\n editJobObject,\n editPanelWorkflowDefault,\n editRequisitionInfoDefault,\n editRevolveDefault,\n editSourcesDefault,\n editTemplateDefault\n} from '../Jobs/config';\nimport { IJobData } from './types';\nimport CandidateAttachments from '../Job/CandidateAttachments/CandidateAttachments';\nimport Questions from './Questions/Questions';\nimport Template from '../EditJob/Template/Template';\nimport Sources from '../EditJob/Sources/Sources';\nimport Description from '../EditJob/Description/Description';\nimport PanelWorkflow from './Advanced/PanelWorkflow/PanelWorkflow';\nimport GoogleConversionScript from './Advanced/GoogleConversionScript/GoogleScript';\nimport Revolve from './Advanced/Revolve/Revolve';\nimport RequisitionInfo from './Advanced/RequisitionInfo/RequisitionInfo';\nimport TimeBased from './Automation/StatusTransitions/TimeBased';\nimport AutoForward from './Automation/AutoForward/AutoForward';\nimport AccountClockIcon from '../EditJob/Sources/AccountClockIcon';\nimport SourcesIconSVG from '../EditJob/Sources/SourcesIconSVG';\nimport AutoReply from './Automation/AutoReply/AutoReply';\nimport AutoSMSReply from './Automation/AutoSMSReply/AutoSMSReply';\nimport AutoSMSForward from './Automation/AutoSMSForward/AutoSMSForward';\nimport TestGrid from './Advanced/TestGrid/TestGrid';\nimport HRQuestions from '../EditJob/HRQuestions/HRQuestions';\nimport WarningDialog from '../Components/Modals/WarningDialog';\nimport EditJobToggleLeftSVG from './EditJobToggleLeftSVG';\nimport EditJobToggleRightSVG from './EditJobToggleRightSVG';\nimport UpdateIcon from '@mui/icons-material/Update';\nimport { RobotIcon } from '../../AIStudio/SharedComponents/Graphics/FelixSVG';\nimport AIStudioSettings from './Advanced/AIStudio/AIStudioSettings';\nimport { convertToNormalTabIndex, convertToPanelIndex, TabGroup } from './tabIndexUtils';\nimport { getPermissions } from '../../shared/permissionHelpers';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport { formatUserPermissions } from '../Components/Utilities/formatUserPermissions';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport { userTimeZone } from '../utils/formatToUserTimeZone';\n\ninterface TabPanelProps {\n children?: React.ReactNode;\n index: number;\n value: number;\n group?: number;\n}\nconst URL_PARAMS = new URL(window.location.href);\nconst BASE_URL = window.location.origin;\n\nexport default function EditJob({\n aiInterview,\n aiStudio,\n aiStudioSummaries,\n apiKey,\n job_id,\n jobFeedActive,\n canAddIndeedDemographicQ\n}: {\n aiInterview: boolean;\n aiStudio: boolean;\n aiStudioSummaries: boolean;\n apiKey: string;\n job_id: number;\n jobFeedActive: boolean;\n canAddIndeedDemographicQ: boolean;\n}) {\n const getEditTabNumber = (urlParams: string) => changeURL(0, false, urlParams);\n const [job, setJob] = useState<IJob | null>(null);\n const [mainTabValue, setMainTabValue] = useState(0);\n const [jobLoading, setJobLoading] = useState(true);\n const [editTabValue, setEditTabValue] = useState(getEditTabNumber(URL_PARAMS.search));\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n const [copied, setCopied] = useState(false);\n const [isUpdating, setIsUpdating] = useState(false);\n const [timezoneOptions, setTimezoneOptions] = useState([]);\n const [brandOptions, setBrandOptions] = useState([]);\n const [requisitionsOptions, setRequisitionsOptions] = useState([]);\n const [classificationsOptions, setClassificationsOptions] = useState([]);\n const [localOptions, setLocalOptions] = useState([]);\n const [autoRaterOptions, setAutoRaterOptions] = useState([]);\n const [assignedUsersOptions, setAssignedUsersOptions] = useState([]);\n const [salespersonOptions, setSalespersonOptions] = useState([]);\n const [jobPanelChairsOptions, setJobPanelChairsOptions] = useState([]);\n const [rmTeamOptions, setRmTeamOptions] = useState([]);\n const [changeTab, setChangeTab] = useState<[boolean, null | number]>([false, null]);\n const [generalTabJobData, setGeneralTabJobData] = useState<IJobData | null>(null);\n const [panelWorkflowTabJobData, setPanelWorkflowTabJobData] = useState<IJobData | null>(null);\n const [googleScriptTabJobData, setGoogleScriptTabJobData] = useState<IJobData | null>(null);\n const [revolveTabJobData, setRevolveTabJobData] = useState<IJobData | null>(null);\n const [descriptionTabJobData, setDescriptionTabJobData] = useState<IJobData | null>(null);\n const [requisitionInfoTabJobData, setRequisitionInfoTabJobData] = useState<IJobData | null>(null);\n const [templateTabJobData, setTemplateTabJobData] = useState<IJobData | null>(null);\n const [sourcesTabJobData, setSourcesTabJobData] = useState<IJobData | null>(null);\n const [sourceListIds, setSourceListIds] = useState([]);\n const [attachmentsTabJobData, setAttachmentsTabJobData] = useState(null);\n const [candidateAttachments, setCandidateAttachments] = useState(null);\n const [warningModalOpen, setWarningModalOpen] = useState(editTabValue === 4);\n const [hasActiveSeekAd, setHasActiveSeekAd] = useState(false);\n const [userPermissions, setUserPermissions] = useState<Record<string, Record<string, boolean>>>(\n {}\n );\n const [isToggled, setIsToggled] = useState(false);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const [lastUpdate, setLastUpdate] = useState<string>('');\n const [isEdited, setIsEdited] = useState<boolean>(false);\n const queryClient = useQueryClient();\n\n const headerRefs = useRef<HTMLDivElement[]>([]);\n\n const getPageParams = (tabNo: number) => {\n switch (tabNo) {\n case 0:\n return '?edit=true';\n default:\n return '';\n }\n };\n\n const TabPanel = useCallback((props: TabPanelProps) => {\n const { children, value, index, group, ...other } = props;\n\n const resolvedIndex = group === undefined ? index : convertToPanelIndex(index, group);\n return (\n <div\n role=\"tabpanel\"\n hidden={value !== resolvedIndex}\n id={`vertical-tabpanel-${resolvedIndex}`}\n aria-labelledby={`vertical-tab-${resolvedIndex}`}\n {...other}\n >\n {value === resolvedIndex && <Box>{children}</Box>}\n </div>\n );\n }, []);\n\n const TabProps = useCallback((tabIndex: number, group: number) => {\n const index = convertToNormalTabIndex(tabIndex, group);\n return {\n id: `vertical-tab-${index}`,\n 'aria-controls': `vertical-tabpanel-${index}`,\n 'data-testid': `vertical-tab-${index}`\n };\n }, []);\n\n useEffect(() => {\n setIndicatorWidth(headerRefs.current[mainTabValue].clientWidth - 32);\n }, [mainTabValue]);\n\n const handleEditTabChange = (event: React.SyntheticEvent, newValue: number) => {\n URL_PARAMS.search = changeURL(newValue, true, '');\n window.history.pushState(null, null, URL_PARAMS.href);\n if (editTabValue === 1) {\n newValue === 4 && setWarningModalOpen(true);\n return setChangeTab([true, newValue]);\n }\n if (newValue === 4) {\n setWarningModalOpen(true);\n }\n setEditTabValue(newValue);\n };\n\n const handleMainTabChange = (event: React.ChangeEvent, newValue: number) => {\n setMainTabValue(newValue);\n URL_PARAMS.search = getPageParams(newValue);\n window.history.pushState(null, '', URL_PARAMS.href);\n };\n\n useQuery({\n queryKey: ['permissions'],\n queryFn: async () => {\n const res = await getPermissions();\n return formatUserPermissions(res);\n },\n onError: (error) => {\n setSnackbar({\n state: 'error',\n message: `There was an error getting user permissions, ${error}`\n });\n }\n });\n\n useQuery({\n queryKey: ['job', job_id],\n queryFn: async () => await Api.getJob(job_id, { 'X-api-authenticate': apiKey }),\n onSuccess: (data) => {\n setFetchedData(data);\n },\n onError: (error) => {\n setSnackbar({\n state: 'error',\n message: `There was an error getting job, ${error}`\n });\n }\n });\n\n const setFetchedData = (data) => {\n setJobLoading(true);\n const jobResponse = data;\n setJob(jobResponse);\n setGeneralTabJobData(editGeneralJobDefault(jobResponse));\n setPanelWorkflowTabJobData(editPanelWorkflowDefault(jobResponse));\n setGoogleScriptTabJobData(editGoogleScriptDefault(jobResponse));\n setRevolveTabJobData(editRevolveDefault(jobResponse));\n setRequisitionInfoTabJobData(editRequisitionInfoDefault(jobResponse));\n setDescriptionTabJobData(editDescriptionDefault(jobResponse));\n setTemplateTabJobData(editTemplateDefault(jobResponse));\n setSourcesTabJobData(editSourcesDefault(jobResponse));\n setSourceListIds(jobResponse.sources.map((source) => source.id));\n setCandidateAttachments(\n jobResponse.candidate_attachments.map((attachment) => ({\n ...attachment,\n id: attachment.value\n }))\n );\n setJobLoading(false);\n setLastUpdate(jobResponse.updated_at);\n };\n\n const fetchActiveSeekAds = useCallback(async () => {\n try {\n const response = await Api.getActiveSeekAd(job_id, { 'X-api-authenticate': apiKey });\n if (response.job_ads.active && response.job_ads.active.length > 0) {\n setHasActiveSeekAd(true);\n }\n } catch (error) {\n console.error(error);\n }\n }, [job_id, apiKey]);\n\n const getUserPermissions = useCallback(async () => {\n try {\n const data = await getPermissions(apiKey);\n const allRoles: Record<string, Record<string, boolean> | string | boolean> = {};\n data.roles.forEach((role: IPermissions) => {\n allRoles['paid_user'] = role.paid_role;\n role.feature_groups.forEach((group) => {\n !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n });\n });\n allRoles['user_type'] = data.roles[0]?.user_type;\n setUserPermissions(allRoles);\n } catch (error) {\n console.log(error);\n }\n }, [setUserPermissions, apiKey]);\n\n useEffect(() => {\n getUserPermissions();\n fetchActiveSeekAds();\n }, [getUserPermissions, fetchActiveSeekAds]);\n\n useEffect(() => {\n window.onbeforeunload = function () {\n if (isEdited) {\n return true;\n } else {\n return;\n }\n };\n return () => {\n window.onbeforeunload = null;\n };\n }, [isEdited]);\n\n const handleCopy = () => {\n setCopied(true);\n setTimeout(() => setCopied(false), 3000);\n };\n\n const updateData = async ({ id, data }) =>\n Api.updateJob({ 'X-api-authenticate': apiKey }, id, { job: data });\n\n const mutation = useMutation(updateData, {\n onSuccess: (data) => {\n setSnackbar({\n message: data?.errors ? data.errors : 'Updated job successfully',\n state: data?.errors ? 'error' : 'success'\n });\n setIsEdited(false);\n queryClient.invalidateQueries(['job', job_id]);\n },\n onError: (error) => {\n setSnackbar({\n message: error?.errors || 'Something has gone wrong with saving your job',\n state: 'error'\n });\n }\n });\n\n const handleUpdateJob = async () => {\n setIsUpdating(true);\n const editObj = editJobObject(\n candidateAttachments,\n generalTabJobData,\n descriptionTabJobData,\n templateTabJobData,\n revolveTabJobData,\n googleScriptTabJobData,\n panelWorkflowTabJobData,\n sourceListIds\n );\n mutation.mutate({ id: job_id, data: editObj });\n\n setIsUpdating(false);\n setIsEdited(false);\n };\n\n const lastSaved = new Date(lastUpdate);\n const lastSavedFormat = (job: IJob | null) => {\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const pickedtimezone = job?.time_zone ?? userTimeZone ?? timeZoneString;\n const timeZone = moment.tz(pickedtimezone).format('z');\n const timeString = lastSaved.toLocaleString('en-US', {\n timeZone: pickedtimezone,\n hour: 'numeric',\n minute: 'numeric',\n year: '2-digit',\n month: '2-digit',\n day: '2-digit'\n });\n return `${timeString} ${timeZone}`;\n };\n\n return (\n <Box sx={classes.jobPageContainer}>\n <Box sx={classes.editJobPageHeader}>\n {jobLoading ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <Box sx={{ color: '#666666' }}>\n <h4 id=\"reference\">{job?.reference}</h4>\n <h1 id=\"title\">{job?.title}</h1>\n </Box>\n )}\n </Box>\n <Box sx={classes.linkContainer}>\n {jobLoading ? (\n <Skeleton animation=\"wave\" width={400} height={50} />\n ) : (\n job?.public_url && (\n <>\n <a href={job?.public_url} target=\"_blank\" rel=\"noopener noreferrer\">\n <Box id=\"external-link\" sx={classes.link}>\n {job.public_url}\n </Box>\n </a>\n <CopyToClipboard text={job?.public_url} onCopy={handleCopy}>\n <Button sx={classes.copyButton} id=\"copy-link\">\n {copied ? 'Copied!' : 'Copy'}\n </Button>\n </CopyToClipboard>\n </>\n )\n )}\n </Box>\n <Box sx={classes.tabsContainer}>\n <Tabs\n value={mainTabValue}\n onChange={handleMainTabChange}\n aria-label=\"Jobs, Archive, Multiposter Tabs\"\n sx={{\n ...classes.tabs,\n '& .MuiTabs-indicator': { ...classes.tabIndicator, maxWidth: indicatorWidth + 'px' }\n }}\n >\n <Tab\n ref={(el) => (el ? (headerRefs.current[0] = el) : null)}\n label=\"Edit\"\n {...TabProps(0)}\n />\n <TabPanel tabValue={mainTabValue} index={0}></TabPanel>\n </Tabs>\n </Box>\n {jobLoading ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Box sx={classes.backAndLastSaveContainer}>\n <Stack\n flexDirection=\"row\"\n alignItems=\"center\"\n onClick={() => {\n window.location.href = `${BASE_URL}${job?.job_link}`;\n }}\n sx={{ ...classes.backToJobButton, marginBottom: 'unset' }}\n >\n <IconButton sx={classes.iconGrey}>\n <ArrowCircleLeftIcon />\n </IconButton>\n <Box>Back</Box>\n </Stack>\n <Stack sx={classes.lastSaved}>\n {isUpdating ? (\n <>\n <CircularProgress size={12} color=\"inherit\" sx={{ marginRight: 1 }} />\n Saving\n </>\n ) : (\n <>\n <UpdateIcon sx={{ margin: '4px', fontSize: '1rem' }} />\n Last saved {lastSavedFormat(job)}\n </>\n )}\n </Stack>\n </Box>\n )}\n <Box sx={classes.editTabsContainer}>\n <Tabs\n orientation=\"vertical\"\n value={editTabValue}\n variant=\"scrollable\"\n onChange={handleEditTabChange}\n aria-label=\"Vertical tabs example\"\n sx={{\n ...classes.editTabs,\n '& svg': {\n height: '1.5rem',\n marginRight: isToggled ? '0px !important' : '16px !important',\n color: '#084D6D'\n },\n '& .MuiTabs-indicator': { ...classes.editTabIndicator },\n minWidth: isToggled ? '58px !important' : '220px !important',\n transition: 'all 0.5s'\n }}\n >\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Box\n sx={{\n ...classes.tabsSubheader,\n fontSize: isToggled ? 0 : '12px',\n transition: 'all 0.5s'\n }}\n >\n Job Information\n </Box>\n <Box\n sx={{ ...classes.toggleIcon, marginLeft: isToggled ? '6.5px' : 'auto' }}\n onClick={() => setIsToggled(!isToggled)}\n >\n {isToggled ? <EditJobToggleRightSVG /> : <EditJobToggleLeftSVG />}\n </Box>\n </Box>\n <Tooltip placement=\"right\" title={'General'} disableHoverListener={!isToggled} arrow>\n <Tab\n icon={<InfoOutlinedIcon />}\n iconPosition=\"start\"\n label={isToggled ? '' : 'General'}\n {...TabProps(0, TabGroup.JOB_INFORMATION)}\n />\n </Tooltip>\n <Tooltip placement=\"right\" title={'Description'} disableHoverListener={!isToggled} arrow>\n <Tab\n icon={<BusinessCenterOutlinedIcon />}\n iconPosition=\"start\"\n label={isToggled ? '' : 'Description'}\n {...TabProps(1, TabGroup.JOB_INFORMATION)}\n />\n </Tooltip>\n <Tooltip placement=\"right\" title={'Template'} disableHoverListener={!isToggled} arrow>\n <Tab\n icon={<ContentPasteOutlinedIcon />}\n iconPosition=\"start\"\n sx={{\n display: userPermissions?.['Job Options']?.['Edit Job Template']\n ? 'block'\n : 'none !important'\n }}\n label={isToggled ? '' : 'Template'}\n {...TabProps(2, TabGroup.JOB_INFORMATION)}\n />\n </Tooltip>\n <Tooltip placement=\"right\" title={'Questions'} disableHoverListener={!isToggled} arrow>\n <Tab\n icon={<LiveHelpOutlinedIcon />}\n iconPosition=\"start\"\n sx={{\n display: userPermissions?.['Job Options']?.['Create / Edit Job Questions']\n ? 'block'\n : 'none !important'\n }}\n label={isToggled ? '' : 'Questions'}\n {...TabProps(3, TabGroup.JOB_INFORMATION)}\n />\n </Tooltip>\n <Tooltip placement=\"right\" title={'Sources'} disableHoverListener={!isToggled} arrow>\n <Tab\n icon={<SourcesIconSVG />}\n iconPosition=\"start\"\n label={isToggled ? '' : 'Sources'}\n {...TabProps(4, TabGroup.JOB_INFORMATION)}\n />\n </Tooltip>\n <Box\n sx={{\n ...classes.tabsSubheader,\n fontSize: isToggled ? 0 : '12px',\n transition: 'all 0.5s'\n }}\n >\n Candidate Settings\n </Box>\n <Tooltip placement=\"right\" title={'Attachments'} disableHoverListener={!isToggled} arrow>\n <Tab\n icon={<AttachFileOutlinedIcon />}\n iconPosition=\"start\"\n label={isToggled ? '' : 'Attachments'}\n {...TabProps(0, TabGroup.CANDIDATE_SETTINGS)}\n />\n </Tooltip>\n <Box\n sx={{\n ...classes.tabsSubheader,\n fontSize: isToggled ? 0 : '12px',\n transition: 'all 0.5s'\n }}\n >\n Automation\n </Box>\n <Tooltip\n placement=\"right\"\n title={'Auto Statuses'}\n disableHoverListener={!isToggled}\n arrow\n >\n <Tab\n icon={\n <FlashOnOutlinedIcon\n sx={{ color: 'transparent !important', stroke: '#084d6d', strokeWidth: '1.8px' }}\n />\n }\n iconPosition=\"start\"\n sx={{\n display: userPermissions?.['Job Options']?.['Manage Auto Statuses']\n ? 'block'\n : 'none !important'\n }}\n label={isToggled ? '' : 'Auto Statuses'}\n {...TabProps(0, TabGroup.AUTOMATION)}\n />\n </Tooltip>\n <Tooltip\n placement=\"right\"\n title={'Status Transitions'}\n disableHoverListener={!isToggled}\n arrow\n >\n <Tab\n icon={<AccountClockIcon />}\n iconPosition=\"start\"\n label={isToggled ? '' : 'Status Transitions'}\n {...TabProps(1, TabGroup.AUTOMATION)}\n />\n </Tooltip>\n <Tooltip placement=\"right\" title={'Auto Forward'} disableHoverListener={!isToggled} arrow>\n <Tab\n icon={<ForwardOutlinedIcon />}\n iconPosition=\"start\"\n sx={{\n display: userPermissions?.['Job Options']?.['Manage Auto Forward configs']\n ? 'block'\n : 'none !important'\n }}\n label={isToggled ? '' : 'Auto Forward'}\n {...TabProps(2, TabGroup.AUTOMATION)}\n />\n </Tooltip>\n <Tooltip\n placement=\"right\"\n title={'Auto Email Reply'}\n disableHoverListener={!isToggled}\n arrow\n >\n <Tab\n icon={<EmailOutlinedIcon />}\n iconPosition=\"start\"\n sx={{\n display: userPermissions?.['Job Options']?.['Manage Auto Forward configs']\n ? 'block'\n : 'none !important'\n }}\n label={isToggled ? '' : 'Auto Email Reply'}\n {...TabProps(3, TabGroup.AUTOMATION)}\n />\n </Tooltip>\n <Tooltip\n placement=\"right\"\n title={'Auto SMS Reply'}\n disableHoverListener={!isToggled}\n arrow\n >\n <Tab\n icon={<SmsIcon />}\n iconPosition=\"start\"\n sx={{\n display: userPermissions?.['Job Options']?.['Manage Auto Forward configs']\n ? 'block'\n : 'none !important'\n }}\n label={isToggled ? '' : 'Auto SMS Reply'}\n {...TabProps(4, TabGroup.AUTOMATION)}\n />\n </Tooltip>\n <Tooltip\n placement=\"right\"\n title={'Auto SMS Forward'}\n disableHoverListener={!isToggled}\n arrow\n >\n <Tab\n icon={<SendToMobileIcon />}\n iconPosition=\"start\"\n sx={{\n display: userPermissions?.['Job Options']?.['Manage Auto Forward configs']\n ? 'block'\n : 'none !important'\n }}\n label={isToggled ? '' : 'Auto SMS Forward'}\n {...TabProps(5, TabGroup.AUTOMATION)}\n />\n </Tooltip>\n <Box\n sx={{\n ...classes.tabsSubheader,\n fontSize: isToggled ? 0 : '12px',\n transition: 'all 0.5s'\n }}\n >\n Advanced\n </Box>\n <Tooltip\n placement=\"right\"\n title={'Requisition Info'}\n disableHoverListener={!isToggled}\n arrow\n >\n <Tab\n icon={<VerifiedOutlinedIcon />}\n iconPosition=\"start\"\n sx={{\n display: userPermissions.Jobs?.['Migrate from Requisition Form']\n ? 'block'\n : 'none !important'\n }}\n label={isToggled ? '' : 'Requisition Info'}\n {...TabProps(0, TabGroup.ADVANCED)}\n />\n </Tooltip>\n <Tooltip\n placement=\"right\"\n title={'Configure Application HR Questions'}\n disableHoverListener={!isToggled}\n arrow\n >\n <Tab\n icon={<LiveHelpOutlinedIcon />}\n iconPosition=\"start\"\n sx={{\n display: userPermissions.Jobs?.ConfigureApplicationHRQuestions\n ? 'block'\n : 'none !important'\n }}\n label={isToggled ? '' : 'Configure Application HR Questions'}\n {...TabProps(1, TabGroup.ADVANCED)}\n />\n </Tooltip>\n <Tooltip\n placement=\"right\"\n title={'Automated TestGrid'}\n disableHoverListener={!isToggled}\n arrow\n >\n <Tab\n icon={<GridOnOutlinedIcon />}\n iconPosition=\"start\"\n sx={{\n display:\n job?.integrations?.test_grid_configured && userPermissions.Integrations?.TestGrid\n ? 'block'\n : 'none !important'\n }}\n label={isToggled ? '' : 'Automated TestGrid'}\n {...TabProps(2, TabGroup.ADVANCED)}\n />\n </Tooltip>\n <Tooltip placement=\"right\" title={'Revolve'} disableHoverListener={!isToggled} arrow>\n <Tab\n icon={<LoopOutlinedIcon />}\n iconPosition=\"start\"\n sx={{\n display:\n job?.integrations?.revolve_configured &&\n userPermissions.Integrations?.['Export To Revolve Onboard']\n ? 'block'\n : 'none !important'\n }}\n label={isToggled ? '' : 'Revolve'}\n {...TabProps(3, TabGroup.ADVANCED)}\n />\n </Tooltip>\n <Tooltip\n placement=\"right\"\n title={'Google Conversion Script'}\n disableHoverListener={!isToggled}\n arrow\n >\n <Tab\n icon={<GoogleIcon />}\n iconPosition=\"start\"\n label={isToggled ? '' : 'Google Conversion Script'}\n {...TabProps(4, TabGroup.ADVANCED)}\n />\n </Tooltip>\n <Tooltip\n placement=\"right\"\n title={'Panel Workflow'}\n disableHoverListener={!isToggled}\n arrow\n >\n <Tab\n icon={<AssignmentIndOutlinedIcon />}\n iconPosition=\"start\"\n sx={{\n display: job?.entity_settings.show_panel_workflow ? 'block' : 'none !important'\n }}\n label={isToggled ? '' : 'Panel Workflow'}\n {...TabProps(5, TabGroup.ADVANCED)}\n />\n </Tooltip>\n <Tooltip placement=\"right\" title={'AI Studio'} disableHoverListener={!isToggled} arrow>\n <Tab\n icon={<RobotIcon viewBox=\"0 0 19 19\" />}\n iconPosition=\"start\"\n sx={{\n display: aiStudio && aiStudioSummaries ? 'block' : 'none !important'\n }}\n label={isToggled ? '' : 'AI Studio'}\n {...TabProps(6, TabGroup.ADVANCED)}\n />\n </Tooltip>\n </Tabs>\n {jobLoading ? (\n <Skeleton animation=\"wave\" sx={{ marginLeft: '2rem' }} width={200} height={56} />\n ) : (\n <Box sx={{ marginLeft: '3rem', width: '100%', overflow: 'auto' }}>\n <TabPanel value={editTabValue} index={0} group={TabGroup.JOB_INFORMATION}>\n <General\n apiKey={apiKey}\n job={job}\n jobId={job_id}\n timezoneOptions={timezoneOptions}\n setTimezoneOptions={setTimezoneOptions}\n brandOptions={brandOptions}\n setBrandOptions={setBrandOptions}\n requisitionsOptions={requisitionsOptions}\n setRequisitionsOptions={setRequisitionsOptions}\n classificationsOptions={classificationsOptions}\n setClassificationsOptions={setClassificationsOptions}\n autoRaterOptions={autoRaterOptions}\n setAutoRaterOptions={setAutoRaterOptions}\n assignedUsersOptions={assignedUsersOptions}\n setAssignedUsersOptions={setAssignedUsersOptions}\n salespersonOptions={salespersonOptions}\n setSalespersonOptions={setSalespersonOptions}\n rmTeamOptions={rmTeamOptions}\n setRmTeamOptions={setRmTeamOptions}\n changeTab={changeTab}\n setEditTabValue={setEditTabValue}\n setChangeTab={setChangeTab}\n localOptions={localOptions}\n setLocalOptions={setLocalOptions}\n newJobData={generalTabJobData}\n setNewJobsData={setGeneralTabJobData}\n handleUpdateJob={handleUpdateJob}\n userPermissions={userPermissions}\n setIsEdited={setIsEdited}\n jobFeedActive={jobFeedActive}\n />\n </TabPanel>\n <TabPanel value={editTabValue} index={1} group={TabGroup.JOB_INFORMATION}>\n <Description\n descriptionTabJobData={descriptionTabJobData}\n setDescriptionTabJobData={setDescriptionTabJobData}\n setIsEdited={setIsEdited}\n userPermissions={userPermissions}\n aiStudioEnabled={aiStudio}\n aiPrefillData={{\n title: job?.title,\n country: job?.location\n }}\n />\n </TabPanel>\n <TabPanel value={editTabValue} index={2} group={TabGroup.JOB_INFORMATION}>\n <Template\n apiKey={apiKey}\n job={job}\n templateTabJobData={templateTabJobData}\n setTemplateTabJobData={setTemplateTabJobData}\n setIsEdited={setIsEdited}\n />\n </TabPanel>\n <TabPanel value={editTabValue} index={3} group={TabGroup.JOB_INFORMATION}>\n <Questions\n apiKey={apiKey}\n jobId={job_id}\n job={job}\n userPermissions={userPermissions}\n aiStudio={aiStudio}\n aiInterview={aiInterview}\n canAddIndeedDemographicQ={canAddIndeedDemographicQ}\n />\n </TabPanel>\n <TabPanel value={editTabValue} index={4} group={TabGroup.JOB_INFORMATION}>\n <Sources\n apiKey={apiKey}\n job={job}\n sourcesTabJobData={sourcesTabJobData}\n setSourcesTabJobData={setSourcesTabJobData}\n sourceListIds={sourceListIds}\n setSourceListIds={setSourceListIds}\n setIsEdited={setIsEdited}\n />\n </TabPanel>\n <TabPanel value={editTabValue} index={0} group={TabGroup.CANDIDATE_SETTINGS}>\n <CandidateAttachments\n apiKey={apiKey}\n job={job}\n candidateAttachments={candidateAttachments}\n setCandidateAttachments={setCandidateAttachments}\n attachmentsTabJobData={attachmentsTabJobData}\n setAttachmentsTabJobData={setAttachmentsTabJobData}\n setIsEdited={setIsEdited}\n />\n </TabPanel>\n <TabPanel value={editTabValue} index={0} group={TabGroup.AUTOMATION}>\n <AutoStatuses\n apiKey={apiKey}\n jobId={job_id}\n setSnackbar={setSnackbar}\n jobQuestions={job?.questions}\n handleEditTabChange={handleEditTabChange}\n />\n </TabPanel>\n <TabPanel value={editTabValue} index={1} group={TabGroup.AUTOMATION}>\n <TimeBased apiKey={apiKey} jobId={job_id} setSnackbar={setSnackbar} />\n </TabPanel>\n <TabPanel value={editTabValue} index={2} group={TabGroup.AUTOMATION}>\n <AutoForward apiKey={apiKey} jobId={job_id} setSnackbar={setSnackbar} />\n </TabPanel>\n <TabPanel value={editTabValue} index={3} group={TabGroup.AUTOMATION}>\n <AutoReply apiKey={apiKey} jobId={job_id} setSnackbar={setSnackbar} />\n </TabPanel>\n <TabPanel value={editTabValue} index={4} group={TabGroup.AUTOMATION}>\n <AutoSMSReply apiKey={apiKey} jobId={job_id} setSnackbar={setSnackbar} />\n </TabPanel>\n <TabPanel value={editTabValue} index={5} group={TabGroup.AUTOMATION}>\n <AutoSMSForward apiKey={apiKey} jobId={job_id} setSnackbar={setSnackbar} />\n </TabPanel>\n <TabPanel value={editTabValue} index={0} group={TabGroup.ADVANCED}>\n <RequisitionInfo\n apiKey={apiKey}\n jobId={job_id}\n setSnackbar={setSnackbar}\n requisitionInfoTabJobData={requisitionInfoTabJobData}\n setRequisitionInfoTabJobData={setRequisitionInfoTabJobData}\n />\n </TabPanel>\n <TabPanel value={editTabValue} index={1} group={TabGroup.ADVANCED}>\n <HRQuestions\n apiKey={apiKey}\n jobId={job_id}\n applicationQuestionTemplateId={job.application_question_template.id}\n />\n </TabPanel>\n <TabPanel value={editTabValue} index={2} group={TabGroup.ADVANCED}>\n <TestGrid apiKey={apiKey} jobId={job_id} setSnackbar={setSnackbar} />\n </TabPanel>\n <TabPanel value={editTabValue} index={3} group={TabGroup.ADVANCED}>\n <Revolve\n apiKey={apiKey}\n job={job}\n revolveTabJobData={revolveTabJobData}\n setRevolveTabJobData={setRevolveTabJobData}\n setIsEdited={setIsEdited}\n />\n </TabPanel>\n <TabPanel value={editTabValue} index={4} group={TabGroup.ADVANCED}>\n <GoogleConversionScript\n apiKey={apiKey}\n job={job}\n googleScriptTabJobData={googleScriptTabJobData}\n setGoogleScriptTabJobData={setGoogleScriptTabJobData}\n setIsEdited={setIsEdited}\n />\n </TabPanel>\n <TabPanel value={editTabValue} index={5} group={TabGroup.ADVANCED}>\n <PanelWorkflow\n apiKey={apiKey}\n jobId={job_id}\n chairsOptions={jobPanelChairsOptions}\n setChairsOptions={setJobPanelChairsOptions}\n panelWorkflowTabJobData={panelWorkflowTabJobData}\n setPanelWorkflowTabJobData={setPanelWorkflowTabJobData}\n setIsEdited={setIsEdited}\n />\n </TabPanel>\n <TabPanel value={editTabValue} index={6} group={TabGroup.ADVANCED}>\n <AIStudioSettings jobId={job_id} setSnackbarState={setSnackbar} />\n </TabPanel>\n {jobLoading ? (\n <Box />\n ) : (\n <Stack alignItems=\"end\" sx={{ padding: 1, width: '100%' }}>\n <Button\n id=\"save-job-questions-button\"\n data-testid=\"save-job-questions-button\"\n type=\"submit\"\n sx={{\n ...sharedClasses.saveButton\n }}\n onClick={() => {\n if (editTabValue === 1) {\n return setChangeTab([false, 1]);\n }\n !isUpdating && handleUpdateJob();\n }}\n >\n {isUpdating ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n </Button>\n <Stack sx={classes.lastSaved}>\n {isUpdating ? (\n <>\n <CircularProgress size={12} color=\"inherit\" sx={{ marginRight: 1 }} />\n Saving\n </>\n ) : (\n <>\n <UpdateIcon sx={{ margin: '4px', fontSize: '1rem' }} />\n Last saved {lastSavedFormat(job)}\n </>\n )}\n </Stack>\n </Stack>\n )}\n </Box>\n )}\n </Box>\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n <WarningDialog\n isDialogOpen={hasActiveSeekAd && warningModalOpen}\n setDialogOpen={(isOpen: boolean) => setWarningModalOpen(isOpen)}\n title={'Warning'}\n description={\n '<strong>Any changes</strong> (adding, editing, removing etc.) to your questions will affect and block the importing of applicants from SEEK into :Recruit.'\n }\n buttonText=\"I understand\"\n />\n </Box>\n );\n}\n","import React from 'react';\n\nexport default function EditJobToggleLeftSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" id=\"body_1\" width=\"19\" height=\"19\" viewBox=\"0 0 23 23\">\n<g transform=\"matrix(1.5833334 0 0 1.5833334 0 0)\">\n <path d=\"M10.2562 12.0001L1.74378 12.0001C 0.782174 12.0001 0 11.2178 0 10.2564L0 10.2564L0 1.74378C 0 0.782315 0.782315 0 1.74378 0L1.74378 0L10.2562 0C 11.2178 0 12 0.782315 12 1.74378L12 1.74378L12 10.2562C 12 11.2178 11.2177 12 10.2562 12L10.2562 12L10.2562 12.0001zM1.74378 1.05547C 1.36423 1.05547 1.05547 1.36423 1.05547 1.74378L1.05547 1.74378L1.05547 10.2562C 1.05547 10.6358 1.36423 10.9445 1.74378 10.9445L1.74378 10.9445L10.2562 10.9445C 10.6358 10.9445 10.9445 10.6358 10.9445 10.2562L10.9445 10.2562L10.9445 1.74378C 10.9445 1.36423 10.6358 1.05547 10.2562 1.05547L10.2562 1.05547L1.74378 1.05547z\" stroke=\"none\" fill=\"#000000\" fillRule=\"nonzero\" />\n <path d=\"M8.43218 12.0001C 8.14073 12.0001 7.90444 11.7639 7.90444 11.4724L7.90444 11.4724L7.90444 0.527735C 7.90444 0.236285 8.14073 0 8.43218 0C 8.72363 0 8.95991 0.236285 8.95991 0.527735L8.95991 0.527735L8.95991 11.4724C 8.95991 11.7639 8.72363 12.0001 8.43218 12.0001zM5.392 8.35187C 5.2569 8.35187 5.12194 8.30036 5.01879 8.19735L5.01879 8.19735L3.19465 6.37321C 3.09572 6.27428 3.04013 6.14003 3.04013 6C 3.04013 5.85997 3.09572 5.72586 3.19465 5.62679L3.19465 5.62679L5.01879 3.80265C 5.22481 3.59662 5.55905 3.59662 5.76507 3.80265C 5.9711 4.00868 5.9711 4.34291 5.76507 4.54894L5.76507 4.54894L4.31415 5.99986L5.76507 7.45078C 5.9711 7.65681 5.9711 7.99104 5.76507 8.19707C 5.66206 8.30008 5.52696 8.35159 5.39186 8.35159L5.39186 8.35159L5.392 8.35187z\" stroke=\"none\" fill=\"#000000\" fillRule=\"nonzero\" />\n</g>\n</svg>\n)\n}\n","import React from 'react';\n\nexport default function EditJobToggleRightSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" id=\"body_1\" width=\"19\" height=\"19\" viewBox=\"0 0 23 23\">\n<g transform=\"matrix(1.5833334 0 0 1.5833334 0 0)\">\n <path d=\"M10.2562 12.0001L1.74378 12.0001C 0.782174 12.0001 0 11.2178 0 10.2564L0 10.2564L0 1.74378C 0 0.782315 0.782315 0 1.74378 0L1.74378 0L10.2562 0C 11.2178 0 12 0.782315 12 1.74378L12 1.74378L12 10.2562C 12 11.2178 11.2177 12 10.2562 12L10.2562 12L10.2562 12.0001zM1.74378 1.05547C 1.36423 1.05547 1.05547 1.36423 1.05547 1.74378L1.05547 1.74378L1.05547 10.2562C 1.05547 10.6358 1.36423 10.9445 1.74378 10.9445L1.74378 10.9445L10.2562 10.9445C 10.6358 10.9445 10.9445 10.6358 10.9445 10.2562L10.9445 10.2562L10.9445 1.74378C 10.9445 1.36423 10.6358 1.05547 10.2562 1.05547L10.2562 1.05547L1.74378 1.05547z\" stroke=\"none\" fill=\"#000000\" fillRule=\"nonzero\" />\n <path d=\"M3.56791 -0.000140672C 3.85936 -0.000140698 4.09565 0.236144 4.09565 0.527594L4.09565 0.527594L4.09565 11.4723C 4.09565 11.7637 3.85936 12 3.56791 12C 3.27646 12 3.04018 11.7637 3.04018 11.4723L3.04018 11.4723L3.04018 0.527594C 3.04018 0.236144 3.27646 -0.000140647 3.56791 -0.000140672zM6.60809 3.64813C 6.74319 3.64813 6.87815 3.69964 6.9813 3.80265L6.9813 3.80265L8.80544 5.62679C 8.90437 5.72572 8.95996 5.85997 8.95996 6C 8.95996 6.14003 8.90437 6.27414 8.80544 6.37321L8.80544 6.37321L6.9813 8.19735C 6.77528 8.40338 6.44104 8.40338 6.23502 8.19735C 6.02899 7.99132 6.02899 7.65709 6.23502 7.45106L6.23502 7.45106L7.68594 6.00014L6.23502 4.54922C 6.02899 4.34319 6.02899 4.00896 6.23502 3.80293C 6.33803 3.69992 6.47299 3.64813 6.60809 3.64813z\" stroke=\"none\" fill=\"#000000\" fillRule=\"nonzero\" />\n</g>\n</svg>\n)\n}\n","import React, { Dispatch, SetStateAction, useState, ChangeEvent } from 'react';\nimport Box from '@mui/material/Box';\nimport { IJobData, IClassificationOptions } from '../../types';\nimport { classes } from '../../styles';\nimport { Checkbox, FormControlLabel, TextField, Autocomplete, Button } from '@mui/material';\n\nexport default function Classifications({\n isLoading,\n setNewJobsData,\n classificationsOptions,\n newJobData,\n setIsEdited\n}: {\n isLoading: boolean;\n classificationsOptions: IClassificationOptions;\n newJobData: IJobData;\n setIsEdited: Dispatch<SetStateAction<boolean>>;\n}) {\n const [selectedClassification, setSelectedClassification] = useState();\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>, id: number) => {\n setIsEdited(true);\n if (e.target.checked) {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n classification_ids: [...newJobData?.classification_ids, id]\n }));\n } else {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n classification_ids: prev.classification_ids.filter((prevState) => prevState !== id)\n }));\n }\n };\n\n const addSourceLabel = () => {\n if (!newJobData?.sub_classifications?.value || !newJobData?.classifications?.value) return;\n if (!newJobData?.classification_ids?.includes(selectedClassification.id)) {\n const tempArray = [...newJobData?.classification_list];\n tempArray.push({\n id: selectedClassification.id,\n name: newJobData.classifications.value?.name,\n parent: newJobData.sub_classifications.value\n });\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n classification_list: tempArray,\n classification_ids: [...newJobData.classification_ids, selectedClassification.id]\n }));\n }\n };\n\n return (\n <Box>\n <Box sx={classes.bodyContainer}>\n {newJobData?.classification_list?.length > 0 &&\n newJobData.classification_list.map((classification, index) => (\n <FormControlLabel\n key={index}\n control={\n <Checkbox\n sx={{ ...classes.checkbox, marginLeft: 1 }}\n onChange={(e) => handleChange(e, classification.id)}\n defaultChecked={true}\n />\n }\n label={`${classification?.parent?.name} ${classification?.name}`}\n sx={classes.classificationLabel}\n />\n ))}\n </Box>\n <Box sx={classes.selectGroup}>\n <Box sx={classes.generalModalFormLine}>\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"classifications\"\n options={classificationsOptions}\n getOptionLabel={(option) => option?.name}\n value={newJobData?.classifications?.value}\n loading={classificationsOptions?.length < 1}\n loadingText={isLoading ? 'Loading classifications...' : 'No classifications'}\n sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Classification\" InputLabelProps={{ shrink: true }} />\n )}\n onChange={(event, value) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n classifications: { ...prev.classifications, value },\n sub_classifications: { ...prev.sub_classifications, value: null }\n }));\n setSelectedClassification(null);\n }}\n />\n </Box>\n {newJobData.classifications.value ? (\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"sub_classifications\"\n options={\n newJobData?.classifications?.value?.sub_occupation_classifications\n ? newJobData?.classifications?.value?.sub_occupation_classifications\n : []\n }\n getOptionLabel={(option) => option?.name}\n value={newJobData?.sub_classifications?.value}\n loading={classificationsOptions?.length < 1}\n loadingText={\n isLoading ? 'Loading Sub-classifications......' : 'No Sub-classifications'\n }\n sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Sub-classifications\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n onChange={(event, value) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n sub_classifications: { ...prev.sub_classifications, value }\n }));\n setSelectedClassification(value);\n }}\n />\n </Box>\n ) : (\n <Box />\n )}\n </Box>\n </Box>\n <Button\n id=\"add-source-button\"\n sx={{\n ...classes.addSourceButton,\n marginTop: '0.5rem',\n padding: '8px 11px',\n width: 'unset'\n }}\n onClick={() => addSourceLabel(newJobData.classifications.value)}\n disabled={!selectedClassification}\n >\n Add Classification\n </Button>\n </Box>\n );\n}\n","import React, { memo, useCallback, useEffect, useRef, useState } from 'react';\nimport Api from '../../Job/API';\nimport {\n DebouncedFormNumberField,\n DebouncedFormTextField\n} from '../../Components/CustomUIElements/FormTextField';\nimport FormCheckboxGroup from '../../Components/CustomUIElements/FormCheckboxGroup';\nimport { Virtualize } from '../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { SingleDateTimePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport { classes } from '../styles';\nimport Classifications from './Classifications/Classifications';\nimport moment from 'moment';\nimport { additionalOptionsDefaults, editJobsConfig, emojiRegex } from '../../Jobs/config';\nimport {\n IAdditionalOptions,\n IGeneralProps,\n IJobData,\n IPrivacyAcknowledgement,\n IVisibility\n} from '../types';\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Autocomplete,\n Box,\n createFilterOptions,\n InputLabel,\n TextField\n} from '@mui/material';\nimport { ChevronRight, ExpandLess } from '@mui/icons-material';\nimport Link from '@mui/material/Link';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { userTimeZone } from '../../utils/formatToUserTimeZone';\n\nconst BASE_URL = window.location.origin;\n\nconst filterOptions = createFilterOptions({\n stringify: (option) => option.position_title + option.id\n});\n\nfunction GeneralTab({\n apiKey,\n job,\n jobId,\n timezoneOptions,\n setTimezoneOptions,\n brandOptions,\n setBrandOptions,\n requisitionsOptions,\n setRequisitionsOptions,\n classificationsOptions,\n setClassificationsOptions,\n autoRaterOptions,\n setAutoRaterOptions,\n assignedUsersOptions,\n setAssignedUsersOptions,\n salespersonOptions,\n setSalespersonOptions,\n rmTeamOptions,\n setRmTeamOptions,\n changeTab,\n setEditTabValue,\n setChangeTab,\n localOptions,\n setLocalOptions,\n newJobData,\n setNewJobsData,\n handleUpdateJob,\n userPermissions,\n setIsEdited,\n jobFeedActive\n}: IGeneralProps) {\n const [expandOptionalFields, setExpandOptionalFields] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [loadingTimezones, isLoadingTimezones] = useState(false);\n const [countries, setCountries] = useState('');\n\n const fieldRefs = {\n reference: useRef<HTMLInputElement>(null),\n title: useRef<HTMLInputElement>(null),\n location: useRef<HTMLInputElement>(null),\n expires_at: useRef<HTMLInputElement>(null),\n employment_status: useRef<HTMLInputElement>(null),\n salary_info: useRef<HTMLInputElement>(null),\n number_of_vacancies: useRef<HTMLInputElement>(null),\n from_email: useRef<HTMLInputElement>(null),\n external_approval_id: useRef<HTMLInputElement>(null),\n requisition_info: useRef<HTMLInputElement>(null)\n };\n\n const checkReference = async (value: string) => {\n if (job.reference === value) {\n return setNewJobsData((prev: IJobData) => ({\n ...prev,\n reference: { ...prev.reference, error: '' }\n }));\n }\n setIsLoading(true);\n try {\n const response = await Api.referenceValidation(\n { 'X-api-authenticate': apiKey },\n { 'job[reference]': value }\n );\n if (response.valid) {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n reference: { ...prev.reference, error: '' }\n }));\n } else {\n if (response.correct_format === false) {\n newJobData?.reference?.value &&\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n reference: {\n ...prev.reference,\n error: 'Incorrect reference format, prefix letters before digits'\n }\n }));\n } else {\n newJobData?.reference?.value &&\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n reference: { ...prev.reference, error: 'Reference already in use' }\n }));\n }\n fieldRefs['reference']?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n if (countries.length > 0) return;\n let isMounted = true;\n const handleGetCountries = async () => {\n try {\n const response = await fetch(`${BASE_URL}/api/system/v1/countries_states.json`, {\n method: 'GET'\n });\n const data = await response.json();\n const countriesWithlabels = data\n .map((country) => ({\n ...country,\n printable_name: country.name\n .toLowerCase()\n .split(' ')\n .map((word) => {\n if (word !== 'and' && word !== 'of') {\n return word.charAt(0) === '('\n ? word[0] + word[1].toUpperCase() + word.slice(2)\n : word[0].toUpperCase() + word.slice(1);\n } else {\n return word;\n }\n })\n .join(' '),\n states: country.states.map((state) => ({\n ...state,\n label: state.name\n }))\n }))\n .sort((a, b) => {\n return a.name.localeCompare(b.name);\n });\n if (isMounted) {\n setCountries(countriesWithlabels);\n }\n } catch (error) {\n console.error(error);\n }\n };\n handleGetCountries();\n return () => {\n isMounted = false;\n };\n }, [countries]);\n\n const fetchOptionalSectionData = useCallback(async () => {\n setIsLoading(true);\n try {\n const [\n timezone,\n brand,\n requisition,\n classification,\n autoRater,\n assignedUser,\n sales,\n rmTeam,\n local\n ] = await Promise.all([\n Api.getJobTimezones({ 'X-api-authenticate': apiKey }),\n Api.getJobBrand({ 'X-api-authenticate': apiKey }, jobId),\n Api.getJobrequisitions(\n { 'X-api-authenticate': apiKey },\n { override_limit: true, limit: 500, 'filter[exact_states]': ['approved'] }\n ),\n Api.getJobClassifications({ 'X-api-authenticate': apiKey }),\n Api.getJobAutoRaters({ 'X-api-authenticate': apiKey }, jobId),\n Api.getJobAssignableUsers({ 'X-api-authenticate': apiKey }, jobId),\n Api.getSalesPeople({ 'X-api-authenticate': apiKey }),\n Api.getRMteamMembers({ 'X-api-authenticate': apiKey }),\n Api.getJobLocales({ 'X-api-authenticate': apiKey })\n ]);\n\n setTimezoneOptions(timezone?.timezones?.map((a) => a.name));\n setBrandOptions(brand?.brands);\n setRequisitionsOptions(requisition?.requisitions);\n setClassificationsOptions(classification?.classifications);\n setAutoRaterOptions(autoRater?.auto_raters);\n setAssignedUsersOptions(assignedUser?.assignable_users);\n setSalespersonOptions(\n sales?.sales_people?.map((a) => `${a.id} - ${a.firstname} ${a.lastname}`)\n );\n setRmTeamOptions(\n rmTeam?.rm_team_members?.map((a) => `${a.id} - ${a.firstname} ${a.lastname}`)\n );\n setLocalOptions(local?.locales);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, jobId]);\n\n useEffect(() => {\n timezoneOptions.length === 0 && !loadingTimezones && fetchOptionalSectionData();\n }, [timezoneOptions.length, fetchOptionalSectionData, loadingTimezones]);\n\n useEffect(() => {\n if (changeTab[0]) {\n if (handleValidateFields()) {\n setEditTabValue(changeTab[1]);\n setChangeTab([false, null]);\n }\n } else if (!changeTab[0] && changeTab[1] === 1) {\n handleValidateFields() && handleUpdateJob();\n }\n }, [changeTab]);\n\n const handleValidateFields = () => {\n let isValid = true;\n let firstError: keyof typeof fieldRefs | undefined = undefined;\n\n Object.entries(newJobData).forEach((field) => {\n let tempErrorMessage = '';\n if (field[1]?.required && !field[1]?.value) {\n if (!firstError) {\n firstError = field[0] as keyof typeof fieldRefs;\n }\n isValid = false;\n tempErrorMessage = 'This field is required';\n }\n if (field[0] === 'title' || field[0] === 'location') {\n if (field[1]?.value?.match(emojiRegex)) {\n isValid = false;\n tempErrorMessage = \"This field can't have emojis\";\n }\n }\n if (field[0] === 'expires_at') {\n if (!moment(newJobData?.expires_at?.value).isValid()) {\n isValid = false;\n tempErrorMessage = 'This field must be a valid date';\n } else {\n if (\n !moment(newJobData?.expires_at?.value).isAfter(moment()) &&\n !moment(job?.expires_at).isSame(newJobData?.expires_at?.value) &&\n job.state !== 'closed'\n ) {\n isValid = false;\n tempErrorMessage = 'Date and Time must be today or in the future';\n }\n }\n }\n if (field[0] === 'reference' && isValid && newJobData?.reference?.error) {\n isValid = false;\n tempErrorMessage = newJobData?.reference?.error;\n }\n if (\n [\n 'classification_list',\n 'classification_ids',\n 'external',\n 'internal',\n 'entity_privacy_acknowledgement',\n 'privacy_acknowledgement',\n 'linkedin_listing_opt_in'\n ].includes(field[0])\n ) {\n isValid = true;\n } else {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n [field[0]]: { ...prev[field[0] as keyof typeof prev], error: tempErrorMessage }\n }));\n }\n });\n\n // Scroll to first invalid field\n if (firstError) {\n fieldRefs[firstError]?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n\n return isValid;\n };\n\n const getDefaults = (options, defaults) => {\n if (options?.length > 0 && defaults?.length > 0) {\n const ids = defaults.map((item) => item.id);\n const selected = options?.filter((option) => ids.indexOf(option?.id) >= 0);\n return selected;\n } else return [];\n };\n\n return (\n <Box sx={classes.tabContent}>\n <Box id=\"new-application-modal-title\" sx={classes.headerContent}>\n Job Details\n </Box>\n <Box role=\"form\" id=\"edit-general-job\" aria-label=\"General tab edit jobs\">\n <Box sx={classes.generalModalFormLine}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n reference: { ...prev.reference, value }\n }));\n checkReference(value);\n setIsEdited(true);\n }}\n dataTestId=\"reference-input\"\n label=\"Reference\"\n defaultValue={newJobData.reference.value}\n required={newJobData.reference.required}\n error={newJobData.reference.error}\n innerRef={fieldRefs.reference}\n styles={{ width: '250px' }}\n />\n <DebouncedFormTextField\n dataTestId=\"title-input\"\n onDebouncedChange={(value: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n title: { ...prev.title, value, error: '' }\n }));\n setIsEdited(true);\n }}\n label=\"Title\"\n defaultValue={newJobData.title.value}\n required={newJobData.title.required}\n error={newJobData.title.error}\n innerRef={fieldRefs.title}\n styles={{ width: '250px' }}\n />\n </Box>\n <Box sx={classes.generalModalFormLine}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n location: { ...prev.location, value, error: '' }\n }));\n setIsEdited(true);\n }}\n id=\"location\"\n dataTestId=\"location\"\n label=\"City/Town\"\n error={newJobData.location.error}\n defaultValue={newJobData.location.value}\n required={newJobData.location.required}\n innerRef={fieldRefs.location}\n styles={{ width: '250px' }}\n />\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"country\"\n loading={countries?.length < 1}\n options={countries}\n getOptionLabel={(option) => option.printable_name}\n value={newJobData?.country_id?.value}\n loadingText={isLoading ? 'Loading countries...' : 'No countries'}\n sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Country\" InputLabelProps={{ shrink: true }} />\n )}\n onChange={(event, value) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n country_id: { ...prev.country_id, value }\n }));\n setIsEdited(true);\n }}\n />\n </Box>\n </Box>\n <Box\n sx={{ ...classes.generalModalFormLine, columnGap: '25px', position: 'relative' }}\n ref={fieldRefs.expires_at}\n >\n <Box>\n <SingleDateTimePicker\n label={\n <InputLabel htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n Expiry date and time<span>*</span>\n </InputLabel>\n }\n inputStyles={classes.datePicker}\n onChange={(value) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n expires_at: { ...prev.expires_at, value: moment(value).toISOString(), error: '' }\n }));\n setIsEdited(true);\n }}\n timezone={newJobData.time_zone.value ?? userTimeZone}\n value={newJobData.expires_at.value}\n disablePast\n />\n </Box>\n\n {newJobData.expires_at.error && (\n <Box sx={{ ...classes.errorBox, bottom: '-35px' }}>{newJobData.expires_at.error}</Box>\n )}\n </Box>\n <Accordion\n sx={classes.accordionRoot}\n expanded={expandOptionalFields}\n onChange={() => setExpandOptionalFields(!expandOptionalFields)}\n >\n <AccordionSummary\n sx={classes.accordionSummary}\n expandIcon={expandOptionalFields ? <ExpandLess /> : <ChevronRight />}\n aria-controls=\"panel1a-content\"\n id=\"panel1a-header\"\n >\n <Box sx={{ ...classes.headerContent, marginBottom: '0', paddingRight: '15px' }}>\n Optional fields\n </Box>\n </AccordionSummary>\n <AccordionDetails sx={{ padding: '0' }}>\n <Box sx={{ ...classes.generalModalFormLine }}>\n <Box>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n employment_status: { ...prev.employment_status, value }\n }));\n setIsEdited(true);\n }}\n id=\"employment_status\"\n label=\"Employment Status\"\n defaultValue={newJobData.employment_status.value}\n required={newJobData.employment_status.required}\n error={newJobData.employment_status.error}\n innerRef={fieldRefs.employment_status}\n styles={{ width: '250px' }}\n />\n <Box sx={{ color: '#838383', width: '250px', fontSize: '12px' }}>\n i.e. Full-time, Part-time, Casual\n </Box>\n </Box>\n {userPermissions?.['Job Options']?.['Salary Info field'] && (\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n salary_info: { ...prev.salary_info, value }\n }));\n setIsEdited(true);\n }}\n id=\"salary_info\"\n label=\"Salary Info\"\n defaultValue={newJobData.salary_info.value}\n required={newJobData.salary_info.required}\n error={newJobData.salary_info.error}\n innerRef={fieldRefs.salary_info}\n styles={{ width: '250px' }}\n />\n )}\n <Virtualize\n value={newJobData.time_zone.value}\n passOptions={timezoneOptions}\n setValue={async (event: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n time_zone: { ...prev.time_zone, value: event }\n }));\n setIsEdited(true);\n }}\n passedStyles={{\n width: '250px',\n marginTop: '24px',\n ...classes.formAutocomplete,\n marginBottom: '4px'\n }}\n label=\"Timezone\"\n loading={isLoadingTimezones}\n loadingText=\"Loading timezones...\"\n />\n </Box>\n <Box sx={classes.generalModalFormLine}>\n <DebouncedFormNumberField\n onDebouncedChange={(value: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n number_of_vacancies: { ...prev.number_of_vacancies, value }\n }));\n setIsEdited(true);\n }}\n id=\"number_of_vacancies\"\n label=\"Number of vacancies\"\n defaultValue={newJobData.number_of_vacancies.value}\n required={newJobData.number_of_vacancies.required}\n error={newJobData.number_of_vacancies.error}\n innerRef={fieldRefs.number_of_vacancies}\n styles={{ width: '250px' }}\n />\n {userPermissions?.['Job Options']?.['Brand and State fields'] && (\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"brand\"\n options={brandOptions}\n getOptionLabel={(option) => option?.name}\n value={newJobData.brand.value}\n loading={brandOptions?.length < 1}\n loadingText={isLoading ? 'Loading brands......' : 'No brands'}\n sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Brand\" InputLabelProps={{ shrink: true }} />\n )}\n onChange={(event, value) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n brand: { ...prev.brand, value }\n }));\n setIsEdited(true);\n }}\n />\n </Box>\n )}\n <Box>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n from_email: { ...prev.from_email, value }\n }));\n setIsEdited(true);\n }}\n id=\"from_email\"\n label=\"From email\"\n defaultValue={newJobData.from_email.value}\n required={newJobData.from_email.required}\n error={newJobData.from_email.error}\n innerRef={fieldRefs.from_email}\n styles={{ width: '250px' }}\n />\n <Box sx={{ color: '#838383', width: '250px', fontSize: '12px' }}>\n Or leave blank to use{' '}\n {job.entity_email\n ? job.entity_email\n : job.locale === 'en-au'\n ? 'jobs@scouttalent.com.au'\n : 'jobs@scouttalent.ca'}\n </Box>\n </Box>\n </Box>\n <Box sx={classes.generalModalFormLine}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n external_approval_id: { ...prev.external_approval_id, value }\n }));\n setIsEdited(true);\n }}\n id=\"external_approval_id\"\n label=\"External Approval ID\"\n defaultValue={newJobData.external_approval_id.value}\n required={newJobData.external_approval_id.required}\n error={newJobData.external_approval_id.error}\n innerRef={fieldRefs.external_approval_id}\n styles={{ width: '250px' }}\n />\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"requisitions\"\n multiple\n options={requisitionsOptions}\n renderOption={(props, option) => {\n return (\n <li {...props} key={option?.id}>\n {`${option?.position_title} - ${option?.id}`}\n </li>\n );\n }}\n getOptionLabel={(option) => {\n if (typeof option === 'string') {\n return option;\n }\n return option?.position_title ?? '';\n }}\n value={getDefaults(requisitionsOptions, newJobData?.requisitions?.value)}\n loading={requisitionsOptions?.length < 1}\n filterOptions={filterOptions}\n loadingText={isLoading ? 'Loading requisitions...' : 'No requisitions'}\n sx={{\n ...classes.formAutocomplete,\n minWidth: '250px',\n width: '100%',\n marginTop: '24px'\n }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Requisitions (Job Details Report)\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n onChange={(event, value) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n requisitions: { ...prev.requisitions, value }\n }));\n setIsEdited(true);\n }}\n />\n </Box>\n </Box>\n <Box sx={classes.generalModalFormLine}>\n {userPermissions?.['Job Options']?.['Show Postcode Field'] && (\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n postcode: { ...prev.postcode, value }\n }));\n setIsEdited(true);\n }}\n id=\"postcode\"\n label=\"Postcode/Zipcode\"\n defaultValue={newJobData?.postcode?.value}\n required={newJobData?.postcode?.required}\n error={newJobData?.postcode?.error}\n styles={{ width: '250px' }}\n />\n )}\n {userPermissions?.['Job Options']?.['Brand and State fields'] && (\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n address_state: { ...prev.address_state, value }\n }));\n setIsEdited(true);\n }}\n id=\"address_state\"\n label=\"State/Region/Province\"\n defaultValue={newJobData?.address_state?.value}\n required={newJobData?.address_state?.required}\n error={newJobData?.address_state?.error}\n styles={{ width: '250px' }}\n />\n )}\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"language/country\"\n options={localOptions}\n getOptionLabel={(option) => option?.label}\n value={newJobData?.locale?.value}\n loading={localOptions?.length < 1}\n loadingText={\n isLoading ? 'Loading language & countries...' : 'No language & countries'\n }\n sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Language\" InputLabelProps={{ shrink: true }} />\n )}\n onChange={(event, value) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n locale: { ...prev.locale, value }\n }));\n setIsEdited(true);\n }}\n />\n </Box>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n tag_list: { ...prev.tag_list, value }\n }));\n setIsEdited(true);\n }}\n id=\"tag_list\"\n label=\"Tag list\"\n defaultValue={newJobData?.tag_list?.value}\n required={newJobData?.tag_list?.required}\n error={newJobData?.tag_list?.error}\n styles={{ width: '250px' }}\n />\n </Box>\n <Box\n id=\"new-application-modal-title\"\n sx={{ ...classes.headerContent, marginBottom: '1rem' }}\n >\n Classifications\n </Box>\n <Box sx={classes.generalModalFormLine}>\n <Classifications\n isLoading={isLoading}\n setNewJobsData={setNewJobsData}\n classificationsOptions={classificationsOptions}\n newJobData={newJobData}\n setIsEdited={setIsEdited}\n />\n </Box>\n <Box sx={classes.fullWidthFieldContainer}>\n <FormCheckboxGroup\n options={editJobsConfig(userPermissions, jobFeedActive)}\n directionRow={true}\n defaultValues={additionalOptionsDefaults(job)}\n onChange={(value: IAdditionalOptions) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n options: {\n ...prev.options,\n ...value\n },\n linkedin_listing_opt_in: value.linkedin_listing_opt_in\n }));\n setIsEdited(true);\n }}\n groupLabel={'Additional Options'}\n color={'#838383'}\n />\n </Box>\n {newJobData?.options?.auto_ratings &&\n userPermissions?.['Job Options']?.['Auto Rating'] ? (\n <Box sx={classes.generalModalFormLine}>\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"sub_classifications\"\n options={autoRaterOptions}\n getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n value={newJobData.auto_rater.value}\n loading={autoRaterOptions?.length < 1}\n loadingText={\n isLoading\n ? 'Loading Application recipients......'\n : 'No Application recipients'\n }\n sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Auto-rater\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n onChange={(event, value) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n auto_rater: { ...prev.auto_rater, value }\n }));\n setIsEdited(true);\n }}\n />\n <Box\n sx={{ color: '#838383', width: '250px', fontSize: '12px', padding: '5px 0' }}\n >\n Auto-ratings for applications of this job will be created in this user's name\n </Box>\n </Box>\n </Box>\n ) : (\n <span />\n )}\n {userPermissions?.['Job Options']?.['Privacy Acknowledgement'] && (\n <Box sx={classes.fullWidthFieldContainer}>\n <FormCheckboxGroup\n options={[\n {\n id: 'privacy_acknowledgement',\n name: 'Show the Privacy Acknowledgement',\n position: 0\n }\n ]}\n directionRow={true}\n defaultValues={{ privacy_acknowledgement: newJobData.privacy_acknowledgement }}\n onChange={(value: IPrivacyAcknowledgement) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n privacy_acknowledgement: value.privacy_acknowledgement\n }));\n setIsEdited(true);\n }}\n groupLabel={'Privacy Acknowledgement'}\n color={'#838383'}\n />\n {!newJobData.entity_privacy_acknowledgement && (\n <Box sx={{ paddingLeft: '4px', color: '#E37D7A' }}>\n A Privacy Acknowledgement is not currently set for this Job. You can update your\n Privacy Acknowledgement from your Entity \n <Link\n href={`${BASE_URL}${newJobData.entity_privacy_acknowledgement_link}`}\n sx={{ color: '#E37D7A !important', fontWeight: 'bold' }}\n target=\"_blank\"\n >\n settings here\n </Link>\n </Box>\n )}\n </Box>\n )}\n </AccordionDetails>\n </Accordion>\n {userPermissions?.['Job Options']?.['External'] ||\n userPermissions?.['Job Options']?.['Internal'] ? (\n <Box>\n <Box id=\"new-application-modal-title\" sx={classes.headerContent}>\n Visibility\n </Box>\n <Box sx={classes.generalModalFormLine}>\n <FormCheckboxGroup\n options={\n userPermissions?.['Job Options']?.['External'] &&\n userPermissions?.['Job Options']?.['Internal']\n ? [\n { id: 'external', name: 'External' },\n { id: 'internal', name: 'Internal' }\n ]\n : userPermissions?.['Job Options']?.['External']\n ? [{ id: 'external', name: 'External' }]\n : [{ id: 'internal', name: 'Internal' }]\n }\n directionRow={true}\n defaultValues={{\n external: newJobData.external,\n internal: newJobData.internal\n }}\n onChange={(value: IVisibility) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n external: value.external,\n internal: value.internal\n }));\n setIsEdited(true);\n }}\n color={'#838383'}\n />\n </Box>\n </Box>\n ) : (\n <Box />\n )}\n <Box id=\"new-application-modal-title\" sx={classes.headerContent}>\n Job Settings\n </Box>\n <Box sx={classes.generalModalFormLine}>\n {userPermissions?.['Job Options']?.['Assign User to Job'] && (\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"asssignUser\"\n options={assignedUsersOptions}\n getOptionLabel={(option) => `${option.firstname} ${option.lastname}`}\n value={newJobData.assigned_user.value}\n loading={assignedUsersOptions?.length < 1}\n loadingText={isLoading ? 'Loading assigned users...' : 'No assigned user'}\n sx={{ ...classes.formAutocomplete, width: '250px', marginTop: '24px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Assigned users\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n onChange={(event, value) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n assigned_user: { ...prev.assigned_user, value }\n }));\n setIsEdited(true);\n }}\n />\n </Box>\n )}\n {job.features.smart_form_recipients &&\n job.entity_settings.show_smart_form_recipients &&\n (['admin', 'staff'].includes(userPermissions?.['user_type']) ||\n userPermissions?.['paid_user']) && (\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"smartFormO\"\n multiple\n options={assignedUsersOptions}\n getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n value={getDefaults(\n assignedUsersOptions,\n newJobData?.smart_form_recipients?.value\n )}\n loading={assignedUsersOptions?.length < 1}\n loadingText={\n isLoading\n ? 'Loading smart form notification recipients...'\n : 'No smart form notification recipients'\n }\n sx={{\n ...classes.formAutocomplete,\n minWidth: '250px',\n width: '100%',\n marginTop: '24px'\n }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Smart form notification recipient\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n onChange={(event, value) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n smart_form_recipients: { ...prev.smart_form_recipients, value }\n }));\n setIsEdited(true);\n }}\n />\n </Box>\n )}\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"recipients\"\n multiple\n options={assignedUsersOptions}\n getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n value={getDefaults(assignedUsersOptions, newJobData?.recipients?.value)}\n loading={assignedUsersOptions?.length < 1}\n loadingText={\n isLoading ? 'Loading Application recipients......' : 'No Application recipients'\n }\n sx={{\n ...classes.formAutocomplete,\n minWidth: '250px',\n width: '100%',\n marginTop: '24px'\n }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Application recipient\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n onChange={(event, value) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n recipients: { ...prev.recipients, value }\n }));\n setIsEdited(true);\n }}\n />\n </Box>\n </Box>\n <Box sx={classes.generalModalFormLine}>\n {job.features.pin_jobs && (\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Autocomplete\n id=\"pinnedUser\"\n multiple\n options={assignedUsersOptions}\n getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n value={getDefaults(assignedUsersOptions, newJobData?.pinned_users?.value)}\n loading={assignedUsersOptions?.length < 1}\n loadingText={isLoading ? 'Loading pinned user...' : 'No smart pinned users'}\n sx={{\n ...classes.formAutocomplete,\n minWidth: '250px',\n width: '100%',\n marginTop: '24px'\n }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Pinned users\" InputLabelProps={{ shrink: true }} />\n )}\n onChange={(event, value) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n pinned_users: { ...prev.pinned_users, value }\n }));\n setIsEdited(true);\n }}\n />\n </Box>\n )}\n </Box>\n {['admin', 'staff'].includes(userPermissions?.['user_type']) && (\n <>\n <Box sx={classes.headerContent}>Internal</Box>\n <Box sx={classes.generalModalFormLine}>\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Virtualize\n value={newJobData?.salesperson?.value}\n passOptions={salespersonOptions}\n setValue={async (event: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n salesperson: { ...prev.salesperson, value: event }\n }));\n setIsEdited(true);\n }}\n passedStyles={{\n width: '250px',\n marginTop: '24px',\n ...classes.formAutocomplete,\n marginBottom: '4px'\n }}\n label=\"Salesperson\"\n loading={salespersonOptions?.length < 1}\n loadingText={isLoading ? 'Loading sales people...' : 'No sales people'}\n />\n </Box>\n {userPermissions?.['Job Options']?.['Assign Recruitment Advertising User to Job'] && (\n <Box sx={{ position: 'relative', marginBottom: '4px' }}>\n <Virtualize\n value={newJobData?.rm_team_member?.value}\n passOptions={rmTeamOptions}\n setValue={async (event: string) => {\n setNewJobsData((prev: IJobData) => ({\n ...prev,\n rm_team_member: { ...prev.rm_team_member, value: event }\n }));\n setIsEdited(true);\n }}\n passedStyles={{\n width: '250px',\n marginTop: '24px',\n ...classes.formAutocomplete,\n marginBottom: '4px'\n }}\n label=\"RM Team Member\"\n loading={rmTeamOptions?.length < 1}\n loadingText={isLoading ? 'Loading RM team members...' : 'No RM team members'}\n />\n </Box>\n )}\n </Box>\n </>\n )}\n </Box>\n </Box>\n );\n}\n\nexport default memo(GeneralTab);\n","import React, { useCallback, useEffect, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport NoQuestionSVG from './NoQuestionSVG';\nimport NoQuestionArrowSVG from '../Questions/NoQuestionArrowSVG';\nimport LiveHelpIcon from '@mui/icons-material/LiveHelp';\nimport InfoIcon from '@mui/icons-material/Info';\nimport NewSystemFieldSVG from './NewSystemFieldSVG';\nimport NewField from './Modals/NewField';\nimport AddSystemField from './Modals/AddSystemField';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IApplicantQuestion } from '../types';\nimport { classes } from './styles';\n\nimport SortableItem from './SortableItem';\n\nexport default function HRQuestions({ apiKey, jobId, applicationQuestionTemplateId }: { apiKey: string; jobId: number; applicationQuestionTemplateId: number }) {\n const [questions, setQuestions] = useState<IApplicantQuestion[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [modalsOpen, setModalsOpen] = useState<Record<string, boolean>>(\n {newField: false, addSystemField: false}\n );\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n\n const [editingQuestion, setEditingQuestion] = useState<IApplicantQuestion | null>();\n\n const getQuestions = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await fetch(`/api/v4/fields?application_question_template_id=${applicationQuestionTemplateId}`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n setQuestions(response.fields);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, applicationQuestionTemplateId]);\n\n useEffect(() => {\n getQuestions();\n }, [getQuestions]);\n\n return (\n <Box sx={classes.questionsPageContainer}>\n <Box sx={classes.pageHeader}>\n <h2>Configure application HR Questions</h2>\n </Box>\n <Box sx={classes.noticeContainer}>\n <Box sx={classes.noticeHeader}>\n <InfoIcon sx={classes.noticeIcon} />\n Only one question can be enabled at a time.\n </Box>\n <Box sx={classes.noticeBody}>\n Any changes here will be automatically saved and will be applied immediately.\n </Box>\n </Box>\n <Box sx={classes.actionsContianer}>\n <Button\n variant=\"outlined\"\n startIcon={<LiveHelpIcon/>}\n sx={classes.actionButton}\n onClick={() => {\n setEditingQuestion(null);\n setModalsOpen((prev) => ({...prev, newField: true}));\n }}\n >\n New field\n </Button>\n <Button\n variant=\"outlined\"\n startIcon={<NewSystemFieldSVG/>}\n sx={classes.actionButton}\n onClick={() => {\n setEditingQuestion(null);\n setModalsOpen((prev) => ({...prev, addSystemField: true}));\n }}\n >\n Add system field\n </Button>\n </Box>\n {questions && questions.length > 0 &&\n <Box sx={classes.questionsContainer}>\n <Box sx={classes.titleContainer}>\n <Box sx={{textAlign: 'start !important', marginRight: 'auto', ...classes.questionsTitle}}>Title</Box>\n <Box sx={classes.questionsTitle}>Enabled</Box>\n </Box>\n {questions.map((question, index) => (\n <SortableItem\n questions={questions}\n setQuestions={setQuestions}\n getQuestions={getQuestions}\n index={index}\n key={question.id}\n jobId={jobId}\n applicationQuestionTemplateId={applicationQuestionTemplateId}\n apiKey={apiKey}\n setModalsOpen={setModalsOpen}\n editingQuestion={question}\n setEditingQuestion={setEditingQuestion}\n setSnackbar={setSnackbar}\n />\n ))}\n </Box>\n }\n {!isLoading && questions?.length === 0 && (\n <Box sx={{ ...classes.noQuestionsContainer, margin: '100px 0px' }}>\n <Box sx={{display: 'flex', flexDirection: 'row',}}>\n <Box sx={{width: '100px'}}>\n </Box>\n <NoQuestionSVG />\n <NoQuestionArrowSVG />\n </Box>\n <Box sx={classes.noQuestionsText}>\n You have no questions\n <br />\n Choose an options above to start creating questions\n </Box>\n </Box>\n )}\n <NewField\n apiKey={apiKey}\n getQuestions={getQuestions}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n jobId={jobId}\n applicationQuestionTemplateId={applicationQuestionTemplateId}\n setSnackbar={setSnackbar}\n editingQuestion={editingQuestion}\n canEnable={!questions.map((question) => (question.enabled)).includes(true)}\n />\n <AddSystemField\n apiKey={apiKey}\n getQuestions={getQuestions}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n jobId={jobId}\n applicationQuestionTemplateId={applicationQuestionTemplateId}\n setSnackbar={setSnackbar}\n />\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../../Job/API';\n\nexport default function AddSystemField({\n apiKey,\n jobId,\n applicationQuestionTemplateId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n getQuestions,\n}: {\n apiKey: string;\n modalsOpen: Record<string, boolean>;\n setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n jobId: number;\n applicationQuestionTemplateId: number;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n getQuestions: any;\n}) {\n const [isCreating, setIsCreating] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const selectStatusRef = useRef(null);\n const [systemFields, setSystemFields] = useState([]);\n const [selectedField, setSelectedField] = useState(null);\n const [errorField, setErrorField] = useState('');\n\n const handleClose = () => {\n setSelectedField(null);\n setErrorField('');\n setModalsOpen((prev) => ({ ...prev, addSystemField: false }));\n };\n\n const getSystemFields = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await fetch(`/api/v4/system_fields?form_type=Job`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n setSystemFields(\n response?.system_fields.map((field: { id: number; title: string }) => `${field.id} - ${field.title}`)\n )\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey]);\n\n useEffect(() => {\n getSystemFields();\n }, [getSystemFields]);\n\n const handleSubmit = async () => {\n if (!selectedField) {\n setErrorField('This field is required');\n return;\n }\n setIsCreating(true);\n try {\n const data = await Api.addHRQuestionSystemField(\n { 'X-api-authenticate': apiKey },\n jobId,\n selectedField.split(\"-\")[0],\n applicationQuestionTemplateId,\n );\n setSnackbar({\n message:\n 'Field has been added',\n state: 'success'\n });\n handleClose();\n setSelectedField(null);\n setErrorField('');\n } catch (error) {\n console.log(error);\n } finally {\n setIsCreating(false);\n getQuestions();\n }\n }\n\n return (\n <Modal\n open={modalsOpen.addSystemField}\n onClose={handleClose}\n aria-labelledby=\"add-system-field-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box id=\"add-system-title\" sx={classes.actionModalHeader}>\n Add system field\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"add-system-modal-content\"\n aria-label=\"Add System Field Modal Content\"\n >\n <Box role=\"form\" id=\"add-system-form\" aria-label=\"Add System Field form\">\n <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={selectStatusRef}>\n <Virtualize\n value={selectedField}\n passOptions={systemFields}\n setValue={(value: string) => {\n setSelectedField(value);\n setErrorField('');\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '700px',\n marginTop: '20px'\n }}\n label=\"Select a system field\"\n loading={isLoading}\n loadingText=\"Loading system fields...\"\n />\n\n {errorField && <Box sx={{...classes.formError, top: '63px'}}>{errorField}</Box>}\n </Box>\n </Box>\n </Box>\n <Box sx={classes.modalFooterSmallerSection}>\n <Button\n id=\"close-add-system-button\"\n sx={classes.modalCancelButton}\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-add-system-button\"\n type=\"submit\"\n sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Switch from '@mui/material/Switch';\nimport { MultilineFormTextField, FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport IconButton from '@mui/material/IconButton';\nimport InfoIcon from '@mui/icons-material/Info';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport Api from '../../../Job/API';\nimport { useFieldChoiceList } from '../../../hooks/useFieldChoiceList';\n\nconst fieldTypeOptions = [\n \"Select\",\n \"Date\",\n \"Text\",\n \"Radio Button\",\n \"Rank\",\n \"Checkbox\",\n \"Textarea\",\n]\n\nconst fieldTypeValues = {\n \"Select\": 'select_field',\n \"CSV Data Lookup\": 'csv_data_lookup_field',\n \"Date\": 'date_field',\n \"Text\": 'text_field',\n \"Radio Button\": 'radio_button_field',\n \"Rank\": 'rank_field',\n \"Job Reference Lookup\": 'job_reference_lookup_field',\n \"Availability\": 'availability_field',\n \"Checkbox\": 'check_box_field',\n \"Textarea\": 'text_area_field',\n}\n\nconst Date = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n\nexport default function NewField({\n apiKey,\n jobId,\n applicationQuestionTemplateId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n editingQuestion,\n getQuestions,\n canEnable\n}: {\n apiKey: string;\n modalsOpen: Record<string, boolean>;\n setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n jobId: number;\n applicationQuestionTemplateId: number;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n editingQuestion?: any;\n getQuestions: any;\n canEnable: boolean;\n}) {\n const [isCreating, setIsCreating] = useState(false);\n const [fieldType, setFieldType] = useState('');\n const [label, setLabel]= useState(\"\");\n const [enabledSwitch, setEnabledSwitch] = useState(true);\n const [weekDuration, setWeekDuration] = useState('weekly');\n const [weekStartDay, setWeekStartDay] = useState(0);\n const [headingOne, setHeadingOne] = useState('');\n const [headingTwo, setHeadingTwo] = useState('');\n const [allowBreak, setAllowBreak] = useState(false);\n const [errorLabel, setErrorLabel] = useState('');\n const [errorField, setErrorField] = useState('');\n const [errorChoices, setErrorChoices] = useState('');\n const [enableable, setEnableable] = useState(false);\n const { choiceList, setChoiceList, addChoice, removeChoice, clearChoices, updateChoice } =\n useFieldChoiceList();\n\n const labelRef = useRef<HTMLInputElement>(null);\n const fieldTypeRef = useRef<HTMLInputElement>(null);\n const choicesRef = useRef<HTMLInputElement>(null);\n\n const getKeyByValue = (object, value) => {\n return Object.keys(object).find(key => object[key] === value);\n }\n\n const setDefaultValue = useCallback(async () => {\n if (editingQuestion) {\n setFieldType(getKeyByValue(fieldTypeValues, editingQuestion.field_type));\n setLabel(editingQuestion.title);\n setEnabledSwitch(editingQuestion.enabled);\n setChoiceList(editingQuestion.field_choices);\n setEnableable(editingQuestion.enabled);\n } else {\n setEnableable(canEnable);\n }\n }, [canEnable, editingQuestion]);\n\n const handleClose = () => {\n setModalsOpen((prev) => ({ ...prev, newField: false }));\n clearData();\n };\n\n const handleSubmit = async (jobId: number) => {\n if(!fieldType || !label) {\n if (!fieldType) {\n fieldTypeRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorField('This field is required');\n } else { \n labelRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorLabel('This field is required');\n }\n return;\n }\n setIsCreating(true);\n \n let fieldObject = {\n title: label,\n enabled: enableable && enabledSwitch,\n field_type: fieldTypeValues[fieldType],\n }\n\n if (['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType)) {\n let isValid = true;\n choiceList.map((choice, index) => {\n if (!choice?.name) {\n choicesRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorChoices('All field choices must each have a value');\n isValid = false;\n }\n choice.position = index;\n });\n if (!isValid) return;\n const jsonString = JSON.stringify(Object.assign({}, choiceList));\n const attributes = JSON.parse(jsonString);\n fieldObject['field_choices_attributes'] = attributes\n }\n else if (['Availability'].includes(fieldType)) {\n fieldObject['availability_config_attributes'] = {\n 'week_duration': weekDuration.toLowerCase(),\n 'week_start_day': Date.indexOf(weekStartDay),\n 'heading_1': headingOne,\n 'heading_2': headingTwo,\n 'allow_break': allowBreak,\n }\n }\n\n try {\n if (editingQuestion) {\n const data = await Api.putHRQuestion(\n { 'X-api-authenticate': apiKey },\n editingQuestion.id,\n jobId,\n applicationQuestionTemplateId,\n {\n field: fieldObject\n }\n );\n setSnackbar({\n message:\n 'Field has been updated',\n state: 'success'\n });\n }\n else {\n const data = await Api.newHRField(\n { 'X-api-authenticate': apiKey },\n jobId,\n applicationQuestionTemplateId,\n {\n field: fieldObject\n }\n );\n setSnackbar({\n message: \n 'Field has been created',\n state: 'success'\n });\n clearData();\n }\n handleClose();\n } catch (error) {\n console.log(error);\n setSnackbar({\n message: error.errors,\n state: 'error'\n });\n } finally {\n setIsCreating(false);\n getQuestions();\n }\n };\n\n const handleChoiceInput = (e, index: number) => {\n const { value } = e.target;\n updateChoice(value, index);\n };\n\n const clearData = () => {\n setFieldType('');\n setLabel('');\n setEnabledSwitch(true);\n clearChoices();\n setWeekDuration('weekly');\n setWeekStartDay(0);\n setHeadingOne('');\n setHeadingTwo('');\n setAllowBreak(false);\n setErrorLabel('');\n setErrorField('');\n setErrorChoices('');\n };\n\n useEffect(() => {\n setDefaultValue();\n }, [setDefaultValue, editingQuestion]);\n\n return (\n <Modal\n open={modalsOpen.newField}\n onClose={() => handleClose(true)}\n aria-labelledby=\"new-field-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <Box sx={classes.modalWrapper}>\n <CloseIcon onClick={() => handleClose(true)} sx={classes.closeIcon} />\n <Box id=\"new-field-title\" sx={classes.actionModalHeader}>\n New field\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"new-field-modal-content\"\n aria-label=\"New Field Modal Content\"\n >\n <Box role=\"form\" id=\"new-field-form\" aria-label=\"New Field form\">\n <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={fieldTypeRef}>\n <Virtualize\n value={fieldType}\n passOptions={fieldTypeOptions}\n setValue={(value: string) => {\n setFieldType(value);\n setErrorField('');\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '300px',\n marginTop: '20px'\n }}\n label=\"Field type\"\n />\n {errorField && <Box sx={{...classes.formError, top: '63px'}}>{errorField}</Box>}\n </Box>\n </Box>\n <Box sx={{ marginLeft: '15px' }}>\n <Box sx={classes.modalFormLine}>\n <MultilineFormTextField\n value={label}\n onChange={(e) => { \n setErrorLabel('');\n setLabel(e.target.value)\n }}\n styles={{ width: '600px', marginTop: '20px' }}\n rows={6}\n innerRef={labelRef}\n error={errorLabel}\n label={'Field label'}\n />\n </Box>\n </Box>\n {!enableable && (\n <Box sx={{...classes.noticeContainer, maxWidth: '500px', marginTop: '0px'}}>\n <Box sx={classes.noticeHeader}>\n <InfoIcon sx={classes.noticeIcon} />\n Only one question can be enabled at a time.\n </Box>\n </Box>\n )}\n <Box sx={classes.checkboxContainer} id=\"enabled-filter\">\n <FormControlLabel\n sx={\n !enableable && enabledSwitch\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n control={\n <Switch\n sx={enableable && enabledSwitch ? classes.switchActive : classes.switch}\n checked={enableable && enabledSwitch}\n onChange={() => setEnabledSwitch(!enabledSwitch)}\n disabled={!enableable}\n />\n }\n label=\"Enabled\"\n labelPlacement=\"end\"\n />\n </Box>\n {['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType) &&\n <Box sx={classes.addChoiceContainer} ref={choicesRef}>\n <Box sx={classes.addChoiceHead}>\n <Box id=\"add-choice-title\" sx={classes.addChoiceLabel}>\n Choices\n </Box>\n <Button\n id=\"add-choice-button\"\n sx={classes.modalAddChoiceButton}\n onClick={addChoice}\n >\n Add choice\n </Button>\n </Box>\n {choiceList.map((choice, index) => \n (!(choice?._destroy === 1) &&\n <Box\n key={index}\n sx={classes.choice}\n >\n <FormTextField\n value={choice.name}\n onChange={(e) => handleChoiceInput(e, index)}\n required={true}\n styles={{ width: '250px' }}\n />\n <IconButton\n onClick={() => removeChoice(index)}\n sx={{ marginLeft: '35px' }}\n >\n <ClearIcon sx={{ color: theme.palette.error.main }} />\n </IconButton>\n </Box>\n )\n )}\n {errorChoices && <Box sx={{...classes.inlineError}}>{errorChoices}</Box>}\n </Box>\n }\n {['Availability'].includes(fieldType) &&\n <Box sx={classes.availabilityContainer}>\n <Box id=\"availability-config-title\" sx={classes.addChoiceLabel}>\n Availability Config\n </Box>\n <Box\n sx={classes.config}\n >\n <FormSelectField\n options={['Weekly', 'Fortnightly']}\n defaultValue=\"Weekly\"\n value={weekDuration}\n onChange={(value) => setWeekDuration(value)}\n label={'How long is your work period?'}\n styles={{ width: '290px', marginBottom: '15px' }}\n required={true}\n />\n <FormSelectField\n options={Date}\n defaultValue=\"Sunday\"\n value={weekStartDay}\n onChange={(value) => {setWeekStartDay(value)}}\n label={'When does the work period start?'}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n <FormTextField\n label='Heading 1'\n value={headingOne}\n onChange={(e) => setHeadingOne(e.target.value)}\n required={false}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n <FormTextField\n label='Heading 2'\n value={headingTwo}\n onChange={(e) => setHeadingTwo(e.target.value)}\n required={false}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n <FormSelectField\n options={['Yes', 'No']}\n defaultValue=\"No\"\n value={allowBreak}\n onChange={(value) => setAllowBreak(value)}\n label={'Allow break?'}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n </Box>\n </Box>\n }\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-new-field-button\"\n sx={classes.modalCancelButton}\n onClick={() => handleClose(true)}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-new-field-button\"\n type=\"submit\"\n sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n onClick={() => handleSubmit(jobId)}\n >\n {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n </Box>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React from 'react';\n\nexport default function NewSystemFieldSVG() {\nreturn (<svg id=\"MDI_alpha-s-box\" data-name=\"MDI / alpha-s-box\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20.719\" height=\"20.719\" viewBox=\"0 0 18.719 18.719\">\n<g id=\"Boundary\" fill=\"#666\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"19.719\" height=\"19.719\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"18.719\" height=\"18.719\" fill=\"none\"/>\n</g>\n<path id=\"Path_alpha-s-box\" data-name=\"Path / alpha-s-box\" d=\"M9.1,6.049A1.524,1.524,0,0,0,7.573,7.573V9.1A1.524,1.524,0,0,0,9.1,10.622h1.524v1.524H7.573V13.67h3.049a1.524,1.524,0,0,0,1.524-1.524V10.622A1.524,1.524,0,0,0,10.622,9.1H9.1V7.573h3.049V6.049H9.1M4.524,3h10.67a1.524,1.524,0,0,1,1.524,1.524v10.67a1.524,1.524,0,0,1-1.524,1.524H4.524A1.524,1.524,0,0,1,3,15.194V4.524A1.524,1.524,0,0,1,4.524,3Z\" transform=\"translate(0)\" fill=\"#666\"/>\n</svg>\n)\n}\n","import React from 'react';\n\nexport default function NoQuestionSVG() {\nreturn (<svg id=\"Group_301\" data-name=\"Group 301\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" width=\"198.688\" height=\"109.364\" viewBox=\"0 0 198.688 109.364\">\n<defs>\n <clipPath id=\"clip-path\">\n <rect id=\"Rectangle_630\" data-name=\"Rectangle 630\" width=\"198.688\" height=\"109.364\" fill=\"none\"/>\n </clipPath>\n</defs>\n<g id=\"Group_300\" data-name=\"Group 300\" clip-path=\"url(#clip-path)\">\n <path id=\"Path_99\" data-name=\"Path 99\" d=\"M178.007,109.363a15.955,15.955,0,0,1-2.128-.538c-8.081-3.485-16.176-6.937-24.21-10.525a12.7,12.7,0,0,0-7.538-.879c-20.632,3.2-40.884,2.114-60.383-6.074-2.627-1.1-5.118-2.525-7.726-3.678a7.515,7.515,0,0,0-3.221-.751c-6.91.31-13.818.343-20.611-1.036a10.864,10.864,0,0,0-6.722.828C39.33,89.3,33.173,91.835,27.02,94.383c-.594.246-1.213.431-2.217.783.291-.774.425-1.19.6-1.586,1.174-2.653,2.411-5.28,3.514-7.962a28.38,28.38,0,0,0,1.347-4.352c.487-2.092.3-2.393-1.519-3.457a48.284,48.284,0,0,1-13.5-11.286c-9.034-11.216-8.668-25.453.892-36.416,6.68-7.661,15.164-12.439,24.689-15.541a86.715,86.715,0,0,1,34.94-3.774,5.131,5.131,0,0,0,2.615-.35A100.8,100.8,0,0,1,117.6.219a109.089,109.089,0,0,1,45.412,6.6c9.32,3.5,17.828,8.368,24.879,15.506,5.655,5.725,9.881,12.318,11.55,20.312,2.172,10.4-.511,19.7-6.646,28.14-5.042,6.936-11.621,12.126-19,16.368-1.916,1.1-2.391,1.611-1.825,3.773,1.154,4.406,2.521,8.759,3.889,13.105.523,1.66,1.289,3.242,2.139,5.34M123.552,55.115a40.479,40.479,0,0,0,.843-4.891c.426-8.084-2.724-14.854-8.062-20.672-5.986-6.523-13.5-10.738-21.737-13.717a80.266,80.266,0,0,0-34.8-4.362c-1.883.167-3.749.53-5.623.8-3.667.776-7.4,1.313-10.988,2.373C32.5,17.812,22.837,22.764,15.919,31.867c-6.134,8.071-7.982,16.969-4.069,26.578,3.417,8.394,9.872,14.051,17.5,18.507,2.228,1.3,2.654,1.985,2.088,4.485a11.211,11.211,0,0,1-.515,1.779c-1.262,3.078-2.554,6.144-3.828,9.218-.132.319-.216.658-.376,1.155.524-.165.846-.241,1.147-.366,5.754-2.387,11.476-4.855,17.275-7.127a14.69,14.69,0,0,1,5.625-1.173c3.164.1,6.305,1.012,9.467,1.078a164.513,164.513,0,0,0,17.935-.284,66,66,0,0,0,22.659-6.47c7.312-3.494,13.848-7.95,18.564-14.7a22.672,22.672,0,0,0,4.159-9.434M155.265,5.2c-.682-.21-1.357-.44-2.045-.626a111.376,111.376,0,0,0-41.729-3.087,93.684,93.684,0,0,0-31,8.807c-.386.189-.756.409-1.133.614a78.251,78.251,0,0,1,29.4,10.781,49.949,49.949,0,0,1,10.02,9.064c6.744,8.525,8.954,17.855,4.721,28.175-2.558,6.236-6.964,11.074-12.3,15.079C103.31,79.916,94.366,83.4,84.795,85.374c-2.626.543-5.29.9-8.144,1.372.427.284.678.481.954.629a83.244,83.244,0,0,0,16.358,6.671c17.232,4.979,34.67,5.451,52.278,2.36a7.11,7.11,0,0,1,3.735.337c6.867,2.812,13.676,5.765,20.5,8.68,1.768.755,3.522,1.542,5.559,2.436-.242-.716-.364-1.111-.508-1.5-.915-2.451-1.968-4.86-2.718-7.36-.844-2.813-1.486-5.692-2.078-8.571-.333-1.619.431-2.7,1.943-3.55,8.354-4.714,15.714-10.6,20.811-18.88,6.733-10.942,7.457-22.264,1.653-33.835a47.287,47.287,0,0,0-13.346-15.794A73.938,73.938,0,0,0,155.265,5.2\" transform=\"translate(-6.222 0)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_100\" data-name=\"Path 100\" d=\"M51.167,17.173c.035.78.029,1.565.114,2.34.263,2.4.581,4.8.825,7.208a3.859,3.859,0,0,1-.29,1.216c-.283-.293-.778-.56-.816-.882q-.515-4.374-.868-8.768c-.033-.4.3-.83.458-1.246l.577.133\" transform=\"translate(-35.816 -12.174)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_101\" data-name=\"Path 101\" d=\"M16.047,35.189c.335.126.81.151.982.392,1.7,2.377,3.349,4.79,5.187,7.446-.551-.132-1.062-.1-1.294-.334A29.017,29.017,0,0,1,15.8,35.613l.25-.424\" transform=\"translate(-11.286 -25.141)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_102\" data-name=\"Path 102\" d=\"M637.183,11.87c-.894,3.094-1.751,6.073-2.634,9.044-.023.077-.335.068-.511.1-.481-2.453,1.659-8.781,3.144-9.143\" transform=\"translate(-452.942 -8.481)\" fill=\"#868686\"/>\n <path id=\"Path_103\" data-name=\"Path 103\" d=\"M651.661,35.327c.979-2.246,6.478-7.29,8.34-7.471l-8.08,7.742Z\" transform=\"translate(-465.582 -19.902)\" fill=\"#858585\"/>\n <path id=\"Path_104\" data-name=\"Path 104\" d=\"M0,66.63l8.5,3.86C7.357,71.1,1.385,68.682,0,66.63\" transform=\"translate(0 -47.604)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_105\" data-name=\"Path 105\" d=\"M661.691,63.983a29.345,29.345,0,0,1,9.664-1.949l.08.355-9.642,1.977-.1-.384\" transform=\"translate(-472.748 -44.32)\" fill=\"#898989\"/>\n <path id=\"Path_106\" data-name=\"Path 106\" d=\"M72.445,40.118c1.874-.273,3.74-.636,5.623-.8a80.266,80.266,0,0,1,34.8,4.362c8.235,2.979,15.752,7.194,21.737,13.717,5.338,5.818,8.488,12.588,8.062,20.672a40.428,40.428,0,0,1-.842,4.891c-.4.7-.852,1.378-1.175,2.112a28.4,28.4,0,0,1-6.6,9.057c-6.94,6.617-15.341,10.649-24.538,13.067a73.92,73.92,0,0,1-22.006,2.388c-4.517-.188-9.03-.191-13.467-1.158a7.748,7.748,0,0,0-4.835.6c-5.12,2.174-10.26,4.3-15.4,6.442-1.179.49-2.376.937-3.861,1.521.814-1.909,1.55-3.4,2.091-4.96.962-2.771,1.861-5.568,2.672-8.387.305-1.061-.222-1.823-1.283-2.386A41.608,41.608,0,0,1,40.64,90.714c-4.67-5.7-7.136-12.088-6.133-19.525.909-6.742,4.261-12.264,9.1-16.873a51.477,51.477,0,0,1,19.017-11.23c3.23-1.114,6.542-1.987,9.817-2.969m3.119,12.544c-4.191,2.5-7.05,5.951-7.78,10.916-.429,2.917,1.072,4.946,4.014,5.436a4.853,4.853,0,0,0,5.8-3.14c1.039-2.716,2.031-5.435,4.273-7.451.821-.235,1.63-.53,2.464-.7a7.26,7.26,0,0,1,7.808,3.454c1.462,2.724.993,5.25-1.617,7.838-1.719,1.7-3.568,3.277-5.365,4.9-3.337,3.017-5.4,6.6-5.048,11.27a4.165,4.165,0,0,0,3.946,4.271,4.764,4.764,0,0,0,5.58-4.079,12.168,12.168,0,0,1,4.4-7.414,81.662,81.662,0,0,0,6.116-5.763,11.352,11.352,0,0,0,3.459-7.47,13.626,13.626,0,0,0-8.927-13.415,23.066,23.066,0,0,0-10.216-1.458,18.648,18.648,0,0,0-8.907,2.8m9.477,50.33c3.465-.02,6.013-2.373,5.976-5.517a5.392,5.392,0,0,0-5.393-5.313,5.91,5.91,0,0,0-6.243,5.7c.041,3,2.417,5.154,5.66,5.135\" transform=\"translate(-24.496 -27.842)\" fill=\"#eaeaea\"/>\n <path id=\"Path_107\" data-name=\"Path 107\" d=\"M278.746,34.7a39.669,39.669,0,0,1,5.478,2.955,76,76,0,0,1,7.185,6.238,28.561,28.561,0,0,1,7.992,14.06,31.812,31.812,0,0,1,.688,5.5c.068,1.112.05,2.1,1.43,2.353.138.026.241.25.381.405-.7.228-1.552.253-1.913.685-.4.48-.256,1.374-.527,2.013-1.288,3.047-2.251,6.32-4.033,9.054-5.784,8.872-14.028,14.823-23.7,18.928a52.381,52.381,0,0,1-12.51,3.729,10.313,10.313,0,0,0-1.113.244,3.18,3.18,0,0,0-.569.362,22.5,22.5,0,0,0,2.242.766c5.643,1.266,11.276,2.59,16.945,3.728,6.861,1.378,13.807,1.148,20.74.713,3.5-.22,7-.568,10.491-.914,1.27-.126,2.52-.547,3.787-.591a9.26,9.26,0,0,1,3.731.4c5.406,2.223,10.755,4.587,16.1,6.947,2.74,1.208,5.436,2.516,8.157,3.768a7.475,7.475,0,0,0,.994.27c-1.016-2.866-2.122-5.491-2.868-8.215-.849-3.1-1.409-6.278-2.03-9.436a2.594,2.594,0,0,1,1.614-2.876,60.572,60.572,0,0,0,14.738-11.333c4.774-5.129,8.59-10.84,9.857-17.844a41.682,41.682,0,0,0,.518-9.355,28.073,28.073,0,0,0-1.508-7.495,38.067,38.067,0,0,0-3.383-7.2,41.528,41.528,0,0,0-4.621-6.312,52,52,0,0,0-5.778-5.484A66.884,66.884,0,0,0,326.75,19.247a6.883,6.883,0,0,1-1.492-1.035,73.942,73.942,0,0,1,26.53,13.174A47.286,47.286,0,0,1,365.134,47.18c5.8,11.571,5.08,22.893-1.653,33.835-5.1,8.283-12.457,14.166-20.811,18.88-1.513.853-2.276,1.931-1.943,3.55.592,2.879,1.234,5.758,2.077,8.571.75,2.5,1.8,4.909,2.718,7.36.144.386.266.781.508,1.5-2.037-.894-3.792-1.681-5.559-2.437-6.825-2.915-13.634-5.868-20.5-8.68a7.113,7.113,0,0,0-3.735-.337c-17.608,3.092-35.046,2.619-52.278-2.36a83.233,83.233,0,0,1-16.358-6.671c-.277-.149-.527-.346-.955-.629,2.853-.475,5.518-.83,8.144-1.372,9.572-1.978,18.516-5.458,26.394-11.367,5.34-4.006,9.747-8.843,12.3-15.08,4.234-10.32,2.023-19.65-4.721-28.175a49.938,49.938,0,0,0-10.02-9.063\" transform=\"translate(-176.216 -13.012)\" fill=\"#eee\"/>\n <path id=\"Path_108\" data-name=\"Path 108\" d=\"M56.887,42.99c-3.275.982-6.588,1.855-9.817,2.969a51.471,51.471,0,0,0-19.017,11.23c-4.842,4.609-8.195,10.131-9.1,16.873-1,7.436,1.463,13.821,6.133,19.525a41.608,41.608,0,0,0,12.789,10.536c1.061.563,1.588,1.325,1.283,2.386-.811,2.819-1.71,5.616-2.672,8.387-.541,1.559-1.278,3.05-2.091,4.96,1.485-.583,2.682-1.03,3.861-1.521,5.136-2.136,10.276-4.267,15.4-6.442a7.748,7.748,0,0,1,4.835-.6c4.437.966,8.95.97,13.467,1.157a73.91,73.91,0,0,0,22.006-2.388c9.2-2.418,17.6-6.45,24.538-13.067a28.4,28.4,0,0,0,6.6-9.057c.323-.734.78-1.41,1.175-2.112a22.679,22.679,0,0,1-4.159,9.434c-4.716,6.749-11.252,11.2-18.563,14.7a66.008,66.008,0,0,1-22.659,6.47,164.585,164.585,0,0,1-17.935.283c-3.161-.066-6.3-.978-9.467-1.078a14.7,14.7,0,0,0-5.625,1.173c-5.8,2.273-11.521,4.74-17.275,7.127-.3.125-.623.2-1.147.366.16-.5.243-.836.376-1.155,1.274-3.073,2.567-6.139,3.828-9.218a11.268,11.268,0,0,0,.515-1.779c.566-2.5.141-3.184-2.088-4.485-7.632-4.455-14.087-10.112-17.5-18.506-3.912-9.61-2.065-18.508,4.069-26.578,6.919-9.1,16.582-14.055,27.266-17.218,3.583-1.061,7.321-1.6,10.988-2.373\" transform=\"translate(-8.937 -30.714)\" fill=\"#e3e3e3\"/>\n <path id=\"Path_109\" data-name=\"Path 109\" d=\"M480.74,81.844a26.778,26.778,0,0,1,.234-3.226,6.128,6.128,0,0,1,8.45-4.492,3.874,3.874,0,0,1,2.487,3.088,33.693,33.693,0,0,1,.5,6.789c-.5,7.3-1.214,14.583-1.889,21.869a9.155,9.155,0,0,1-.687,2.6,3.685,3.685,0,0,1-3.606,2.316,3.258,3.258,0,0,1-3.294-2.653,41.578,41.578,0,0,1-.824-6.055c-.5-6.729-.916-13.464-1.367-20.24m1.114-.535c.554,8.165,1.035,15.8,1.626,23.435a10.628,10.628,0,0,0,1.065,3.946,2.117,2.117,0,0,0,3.938-.054,8.416,8.416,0,0,0,.867-2.986c.616-6.244,1.249-12.49,1.675-18.748a49.018,49.018,0,0,0-.17-8.79,3.681,3.681,0,0,0-3.957-3.536,4.416,4.416,0,0,0-4.635,3.443,24.248,24.248,0,0,0-.408,3.291\" transform=\"translate(-343.467 -52.605)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_110\" data-name=\"Path 110\" d=\"M492.608,227.773a5.78,5.78,0,0,1-5.953,5.654,5.556,5.556,0,0,1-5.732-5.5,5.87,5.87,0,0,1,5.872-5.759,5.682,5.682,0,0,1,5.812,5.6m-10.517.049a4.857,4.857,0,0,0,4.866,4.781,4.683,4.683,0,0,0,4.493-4.641,4.976,4.976,0,0,0-4.891-4.95,4.693,4.693,0,0,0-4.468,4.81\" transform=\"translate(-343.598 -158.729)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_111\" data-name=\"Path 111\" d=\"M199.046,76.947a23.056,23.056,0,0,1,10.215,1.458,13.626,13.626,0,0,1,8.927,13.415,11.351,11.351,0,0,1-3.459,7.47,81.728,81.728,0,0,1-6.116,5.763,12.167,12.167,0,0,0-4.4,7.413,4.765,4.765,0,0,1-5.58,4.079,4.165,4.165,0,0,1-3.946-4.271c-.348-4.673,1.711-8.253,5.048-11.27,1.8-1.625,3.646-3.2,5.365-4.9,2.61-2.588,3.079-5.114,1.617-7.838a7.26,7.26,0,0,0-7.808-3.454c-.835.165-1.644.46-2.464.7,0-.081,0-.161,0-.241a9.386,9.386,0,0,1,8.652-.054,6.106,6.106,0,0,1,2.554,8.945,15.6,15.6,0,0,1-2.528,2.875c-1.816,1.744-3.756,3.361-5.547,5.128a12.444,12.444,0,0,0-3.839,8.361,8.688,8.688,0,0,0,.357,2.939,3.661,3.661,0,0,0,3.689,2.6,2.781,2.781,0,0,0,3.055-2.622c.663-4.6,3.6-7.48,6.924-10.213a41.965,41.965,0,0,0,3.871-3.783c6.152-6.559,3.441-15.257-2.833-19.251a20.844,20.844,0,0,0-11.155-2.943l-.6-.3\" transform=\"translate(-139.07 -54.925)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_112\" data-name=\"Path 112\" d=\"M197.872,236.079c-3.243.019-5.619-2.136-5.66-5.135a5.91,5.91,0,0,1,6.243-5.7,5.393,5.393,0,0,1,5.393,5.313c.037,3.144-2.511,5.5-5.976,5.517m4.828-5.231a5,5,0,0,0-5-5.094c-2.41.035-4.251,2.148-4.293,4.927a5.061,5.061,0,0,0,4.96,5.018c2.408.038,4.339-2.122,4.335-4.85\" transform=\"translate(-137.326 -160.929)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_113\" data-name=\"Path 113\" d=\"M155.431,103.273c-2.942-.49-4.443-2.519-4.014-5.436.73-4.965,3.59-8.416,7.781-10.916l.3.3c-3.309,2.287-5.8,5.177-6.729,9.2-.741,3.214.1,5.014,3.021,6.55l-.361.306\" transform=\"translate(-108.129 -62.101)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_114\" data-name=\"Path 114\" d=\"M165.656,117.084l.361-.306c2.466.106,3.437-.5,4.367-2.775.36-.88.649-1.789,1.016-2.665a8.91,8.91,0,0,1,4.329-5.086l0,.241c-2.242,2.016-3.234,4.735-4.273,7.451a4.854,4.854,0,0,1-5.8,3.14\" transform=\"translate(-118.354 -75.912)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_115\" data-name=\"Path 115\" d=\"M179.148,80.217l-.3-.3a18.645,18.645,0,0,1,8.907-2.8l.6.3a21.774,21.774,0,0,0-9.2,2.8\" transform=\"translate(-127.777 -55.101)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_116\" data-name=\"Path 116\" d=\"M484.642,83.67a24.238,24.238,0,0,1,.408-3.291,4.417,4.417,0,0,1,4.635-3.443,3.681,3.681,0,0,1,3.957,3.536,49.012,49.012,0,0,1,.17,8.79c-.426,6.259-1.059,12.5-1.675,18.748A8.418,8.418,0,0,1,491.27,111a2.117,2.117,0,0,1-3.938.054,10.628,10.628,0,0,1-1.065-3.946c-.59-7.631-1.071-15.27-1.626-23.435\" transform=\"translate(-346.254 -54.966)\" fill=\"#eaeaea\"/>\n <path id=\"Path_117\" data-name=\"Path 117\" d=\"M485.013,229.931a4.693,4.693,0,0,1,4.468-4.81,4.976,4.976,0,0,1,4.891,4.95,4.683,4.683,0,0,1-4.493,4.641,4.857,4.857,0,0,1-4.866-4.781\" transform=\"translate(-346.519 -160.839)\" fill=\"#eaeaea\"/>\n</g>\n</svg>)\n}\n","import type { PointerEvent } from \"react\";\nimport { PointerSensor } from \"@dnd-kit/core\";\n\n/**\n * An extended \"PointerSensor\" that prevent some\n * interactive html element(button, input, textarea, select, option...) from dragging\n */\n\nexport class QuestionCardSensor extends PointerSensor {\n static activators = [\n {\n eventName: \"onPointerDown\" as any,\n handler: ({ nativeEvent: event }: PointerEvent) => {\n if (\n !event.isPrimary ||\n event.button !== 0 ||\n isInteractiveElement(event.target as Element)\n ) {\n return false;\n }\n\n return true;\n },\n },\n ];\n}\n\nfunction isInteractiveElement(element: Element | null) {\n if (element?.dataset?.testid === \"DragIndicatorIcon\" \n || element?.className?.baseVal.toLowerCase().includes(\"select\")\n ) return false;\n\n const interactiveElements = [\n \"button\",\n \"input\",\n \"textarea\",\n \"select\",\n \"option\",\n \"icon\",\n \"svg\",\n \"path\",\n \"ul\",\n \"li\",\n \"span\",\n ];\n if (\n element?.tagName &&\n interactiveElements.includes(element.tagName.toLowerCase())\n ) {\n return true;\n }\n\n return false;\n}\n","import React, { useState, Dispatch, SetStateAction, useEffect, useCallback } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport Box from '@mui/material/Box';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from './styles';\nimport QuestionFieldViewer from '../../Components/Utilities/QuestionFieldViewer';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport Switch from '@mui/material/Switch';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport IconButton from '@mui/material/IconButton';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport Api from '../../Job/API';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IApplicantQuestion } from '../types';\n\nexport default function SortableItem({\n questions,\n setQuestions,\n getQuestions,\n index,\n jobId,\n applicationQuestionTemplateId,\n apiKey,\n setModalsOpen,\n editingQuestion,\n setEditingQuestion,\n setSnackbar,\n} : {\n questions: IApplicantQuestion[];\n setQuestions: Dispatch<SetStateAction<IApplicantQuestion[]>>;\n getQuestions: any;\n index: number;\n jobId: number;\n applicationQuestionTemplateId: number;\n apiKey: string;\n setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n editingQuestion: IApplicantQuestion;\n setEditingQuestion: Dispatch<SetStateAction<Record<IApplicantQuestion, null>>>;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n}) {\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [isDeleting, setIsDeleting] = useState(false);\n\n const deleteQuestion = async (url: string, questionId: number) => {\n setIsDeleting(true);\n try {\n const response = await Api.deleteHRQuestion({ 'X-api-authenticate': apiKey }, questionId, jobId, applicationQuestionTemplateId);\n if (response.errors) {\n setSnackbar({\n message:\n 'You do not have right to delete this field',\n state: 'error'\n });\n }\n else {\n setSnackbar({\n message:\n 'Field has been deleted',\n state: 'success'\n });\n }\n } catch (error) {\n console.log(error);\n } finally {\n setIsDeleting(false);\n setIsDialogOpen(false);\n getQuestions();\n }\n };\n\n const handleUpdateActions = async (action: keyof typeof questions[0]) => {\n const newQuestions = [...questions];\n newQuestions[index][action] = !questions[index][action];\n setQuestions(newQuestions);\n try {\n await fetch(`/api/v4/fields/${questions[index].id}?application_question_template_id=${applicationQuestionTemplateId}`, {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n field: {\n [action]: newQuestions[index][action],\n }\n })\n }).then((response) => {\n response.json()})\n } catch (error) {\n setSnackbar({\n message: 'There was an error saving your changes',\n state: 'error'\n });\n }\n };\n\n const [dialogProps, setDialogProps] = useState({\n url: '',\n title: 'Permanently delete question?',\n description: '',\n buttonText: 'Delete',\n buttonCallback: deleteQuestion,\n callbackLoading: false,\n dialogId: 0\n });\n\n const handleDeleteQuestion = (questionId: number) => {\n setDialogProps((prev) => ({\n ...prev,\n url: `/api/v4/fields/${questionId}?application_question_template_id=${applicationQuestionTemplateId}`,\n description: `Are you sure you want to delete this question? This action cannot be undone.`,\n dialogId: questionId,\n buttonCallback: deleteQuestion\n }));\n setIsDialogOpen(true);\n };\n\n const handleEditQuestion = () => {\n setEditingQuestion({...editingQuestion, enabled: questions[index].enabled, required: questions[index].required, rateable: questions[index].rateable});\n setModalsOpen((prev) => ({ ...prev, newField: true }));\n }\n\n return (\n <Box >\n <Box key={questions[index].id}>\n {questions[index].type === \"AvailabilityField\" || questions[index].type === \"CsvDataLookupField\" || questions[index].type === \"JobReferenceLookupField\"\n ? <span />\n : <Box sx={classes.questionsWrapper} >\n <Box sx={{ marginRight: 'auto', ...classes.questionInput }}>\n <Box sx={{height: '6px'}}></Box>\n <Box sx={{ ...classes.modalFormLine, position: 'relative' }}>\n <QuestionFieldViewer question={questions[index]} draggable={true} />\n </Box>\n </Box>\n <Box sx={{ padding: '0 14px', marginBlock: 'auto' }}>\n <Switch\n sx={questions[index].enabled ? classes.switchActive : classes.switch}\n checked={questions[index].enabled}\n onChange={() => handleUpdateActions('enabled')}\n disabled={(questions.map((questions) => (questions.enabled)).includes(true) && !questions[index].enabled)}\n />\n </Box>\n <Box sx={{ padding: '0 6px', display: 'grid', minWidth: '76px' }}>\n <Box sx={{ display: 'flex', justifyContent: 'flex-end', alignItems: 'flex-start', marginTop: '-8px' }}>\n {questions[index].editable && \n <IconButton\n onClick={() => handleEditQuestion()}\n >\n <EditIcon sx={{ fontSize: 16 }} />\n </IconButton>\n }\n {questions[index].deletable && \n <IconButton\n onClick={() => { handleDeleteQuestion(questions[index].id) }}\n >\n <DeleteIcon sx={{ color: '#E37D7A', fontSize: 16 }} />\n </IconButton>\n }\n </Box>\n </Box>\n </Box>\n }\n </Box>\n <GenericDialog\n url={dialogProps.url}\n title={dialogProps.title}\n description={dialogProps.description}\n buttonText={dialogProps.buttonText}\n buttonCallback={dialogProps.buttonCallback}\n callbackLoading={isDeleting}\n isDialogOpen={isDialogOpen}\n setDialogOpen={setIsDialogOpen}\n dialogId={dialogProps.dialogId}\n />\n </Box>\n );\n}\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../../Job/API';\n\nexport default function AddSystemField({\n apiKey,\n jobId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n getQuestions,\n}: {\n apiKey: string;\n modalsOpen: Record<string, boolean>;\n setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n jobId: number;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n getQuestions: any;\n}) {\n const [isCreating, setIsCreating] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const selectStatusRef = useRef(null);\n const [systemFields, setSystemFields] = useState([]);\n const [selectedField, setSelectedField] = useState(null);\n const [errorField, setErrorField] = useState('');\n\n const handleClose = () => {\n setSelectedField(null);\n setErrorField('');\n setModalsOpen((prev) => ({ ...prev, addSystemField: false }));\n };\n\n const getSystemFields = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await fetch(`/api/v4/system_fields?form_type=Job`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n setSystemFields(\n response?.system_fields.map((field: { id: number; title: string }) => `${field.id} - ${field.title}`)\n )\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey]);\n\n useEffect(() => {\n getSystemFields();\n }, [getSystemFields]);\n\n const handleSubmit = async () => {\n if (!selectedField) {\n setErrorField('This field is required');\n return;\n }\n setIsCreating(true);\n try {\n const data = await Api.addSystemField(\n { 'X-api-authenticate': apiKey },\n jobId,\n selectedField.split(\"-\")[0],\n );\n setSnackbar({\n message:\n 'Field has been added',\n state: 'success'\n });\n handleClose();\n setSelectedField(null);\n setErrorField('');\n } catch (error) {\n console.log(error);\n } finally {\n setIsCreating(false);\n getQuestions();\n }\n }\n\n return (\n <Modal\n open={modalsOpen.addSystemField}\n onClose={handleClose}\n aria-labelledby=\"add-system-field-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box id=\"add-system-title\" sx={classes.actionModalHeader}>\n Add system field\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"add-system-modal-content\"\n aria-label=\"Add System Field Modal Content\"\n >\n <Box role=\"form\" id=\"add-system-form\" aria-label=\"Add System Field form\">\n <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={selectStatusRef}>\n <Virtualize\n value={selectedField}\n passOptions={systemFields}\n setValue={(value: string) => {\n setSelectedField(value);\n setErrorField('');\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '700px',\n marginTop: '20px'\n }}\n label=\"Select a system field\"\n loading={isLoading}\n loadingText=\"Loading system fields...\"\n />\n\n {errorField && <Box sx={{...classes.formError, top: '63px'}}>{errorField}</Box>}\n </Box>\n </Box>\n </Box>\n <Box sx={classes.modalFooterSmallerSection}>\n <Button\n id=\"close-add-system-button\"\n sx={classes.modalCancelButton}\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-add-system-button\"\n type=\"submit\"\n sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState, useEffect, useRef, Dispatch, SetStateAction, useCallback } from 'react';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { FormControlLabel, CircularProgress, Button, Modal, Box, Switch, Tooltip } from '@mui/material';\nimport {\n MultilineFormTextField,\n FormTextField\n} from '../../../Components/CustomUIElements/FormTextField';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../../Job/API';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from '@dnd-kit/core';\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableChoice from './SortableChoice';\nimport { useFieldChoiceList } from '../../../hooks/useFieldChoiceList';\nimport { IPermissions } from '../../../Jobs/types';\n\nconst fieldTypeOptions = ['Select', 'Date', 'Text', 'Radio Button', 'Rank', 'Checkbox', 'Textarea'];\n\nconst fieldTypeValues = {\n Select: 'select_field',\n 'CSV Data Lookup': 'csv_data_lookup_field',\n Date: 'date_field',\n Text: 'text_field',\n 'Radio Button': 'radio_button_field',\n Rank: 'rank_field',\n 'Job Reference Lookup': 'job_reference_lookup_field',\n Availability: 'availability_field',\n Checkbox: 'check_box_field',\n Textarea: 'text_area_field'\n};\n\nconst DateOptions = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport default function NewField({\n aiInterview,\n apiKey,\n autoRating,\n editingQuestion,\n getQuestions,\n jobId,\n modalsOpen,\n setModalsOpen,\n setSnackbar,\n userPermissions,\n canAddIndeedDemographicQ\n}: {\n aiInterview: boolean;\n apiKey: string;\n autoRating: boolean;\n editingQuestion?: any;\n getQuestions: any;\n jobId: number;\n modalsOpen: Record<string, boolean>;\n setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n userPermissions: IPermissions;\n canAddIndeedDemographicQ: boolean;\n}) {\n const [isCreating, setIsCreating] = useState(false);\n const [fieldType, setFieldType] = useState('');\n const [label, setLabel] = useState('');\n const [enabledSwitch, setEnabledSwitch] = useState(true);\n const [requiredSwitch, setRequiredSwitch] = useState(false);\n const [rateableSwitch, setRateableSwitch] = useState(false);\n const [confidentialSwitch, setConfidentialSwitch] = useState(false);\n const [isDemographicQuestion, setIsDemographicQuestion] = useState(false);\n const [felixAISwitch, setFelixAISwitch] = useState(false);\n const [weekDuration, setWeekDuration] = useState('weekly');\n const [weekStartDay, setWeekStartDay] = useState(0);\n const [headingOne, setHeadingOne] = useState('');\n const [headingTwo, setHeadingTwo] = useState('');\n const [allowBreak, setAllowBreak] = useState(false);\n const [errorLabel, setErrorLabel] = useState('');\n const [errorField, setErrorField] = useState('');\n const [errorChoices, setErrorChoices] = useState('');\n const baseSwitchStyle = {\n ...classes.switchLabels,\n ...classes.aiSwitch\n };\n const {\n choiceList,\n setChoiceList,\n addChoice,\n removeChoice,\n clearChoices,\n updateChoice,\n switchChoices,\n updateRank,\n updateRankValue,\n updateRating\n } = useFieldChoiceList();\n\n const labelRef = useRef<HTMLInputElement>(null);\n const fieldTypeRef = useRef<HTMLInputElement>(null);\n const choicesRef = useRef<HTMLInputElement>(null);\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n function handleDragEnd(event) {\n const { active, over } = event;\n switchChoices(active.id, over.id);\n }\n\n const getKeyByValue = (object, value) => {\n return Object.keys(object).find((key) => object[key] === value);\n };\n\n const setDefaultValue = useCallback(async () => {\n if (editingQuestion) {\n setFieldType(getKeyByValue(fieldTypeValues, editingQuestion.field_type));\n setLabel(editingQuestion.title);\n setEnabledSwitch(editingQuestion.enabled);\n setRequiredSwitch(editingQuestion.required);\n setRateableSwitch(editingQuestion.rateable);\n setConfidentialSwitch(editingQuestion.confidential);\n setIsDemographicQuestion(editingQuestion.is_demographic_question);\n setFelixAISwitch(editingQuestion.felix_ai_interview_prompter);\n setChoiceList(editingQuestion.field_choices);\n }\n }, [editingQuestion]);\n\n const handleClose = () => {\n setModalsOpen((prev) => ({ ...prev, newField: false }));\n clearData();\n };\n\n const handleSubmit = async (jobId: number) => {\n if (!fieldType || !label) {\n if (!fieldType) {\n fieldTypeRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorField('This field is required');\n } else {\n labelRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorLabel('This field is required');\n }\n return;\n }\n setIsCreating(true);\n\n let fieldObject = {\n title: label,\n enabled: enabledSwitch,\n required: requiredSwitch,\n rateable: rateableSwitch,\n confidential: confidentialSwitch,\n is_demographic_question: isDemographicQuestion,\n field_type: fieldTypeValues[fieldType],\n felix_ai_interview_prompter: felixAISwitch\n };\n\n if (['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType)) {\n choiceList.map((choice, index) => {\n if (!choice?.name) {\n choicesRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorChoices('All field choices must each have a value');\n return;\n }\n choice.position = index;\n if (choice.id.toString().length == 13) {\n choice.id = '';\n }\n });\n\n const jsonString = JSON.stringify(Object.assign({}, choiceList));\n const attributes = JSON.parse(jsonString);\n fieldObject['field_choices_attributes'] = attributes;\n } else if (['Availability'].includes(fieldType)) {\n fieldObject['availability_config_attributes'] = {\n week_duration: weekDuration.toLowerCase(),\n week_start_day: DateOptions.indexOf(weekStartDay),\n heading_1: headingOne,\n heading_2: headingTwo,\n allow_break: allowBreak\n };\n }\n\n try {\n if (editingQuestion) {\n await Api.putQuestion({ 'X-api-authenticate': apiKey }, editingQuestion.id, jobId, {\n field: fieldObject\n });\n setSnackbar({\n message: 'Field has been updated',\n state: 'success'\n });\n } else {\n await Api.newField({ 'X-api-authenticate': apiKey }, jobId, {\n field: fieldObject\n });\n setSnackbar({\n message: 'Field has been created',\n state: 'success'\n });\n clearData();\n }\n handleClose();\n } catch (error) {\n const errMsg = error.errors.split(',').slice(2).join(',') || error.errors;\n setSnackbar({\n message: errMsg,\n state: 'error'\n });\n } finally {\n setIsCreating(false);\n getQuestions();\n }\n };\n\n const handleChoiceInput = (e, index: number) => {\n const { value } = e.target;\n updateChoice(value, index);\n };\n\n const clearData = () => {\n setFieldType('');\n setLabel('');\n setEnabledSwitch(true);\n setRequiredSwitch(false);\n setRateableSwitch(false);\n setConfidentialSwitch(false);\n setIsDemographicQuestion(false);\n clearChoices();\n setWeekDuration('weekly');\n setWeekStartDay(0);\n setHeadingOne('');\n setHeadingTwo('');\n setAllowBreak(false);\n setErrorLabel('');\n setErrorField('');\n setErrorChoices('');\n setFelixAISwitch(false);\n };\n\n const showAiToggle = aiInterview && fieldType === 'Textarea';\n\n useEffect(() => {\n setDefaultValue();\n }, [setDefaultValue, editingQuestion]);\n\n return (\n <Modal\n data-testid=\"new-field-modal\"\n open={modalsOpen.newField}\n onClose={() => handleClose()}\n aria-labelledby=\"new-field-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <Box sx={classes.modalWrapper}>\n <CloseIcon onClick={() => handleClose()} sx={classes.closeIcon} />\n <Box id=\"new-field-title\" sx={classes.actionModalHeader}>\n New question\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"new-field-modal-content\"\n aria-label=\"New Field Modal Content\"\n >\n <Box role=\"form\" id=\"new-field-form\" aria-label=\"New Field form\">\n <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={fieldTypeRef}>\n <Virtualize\n value={fieldType}\n passOptions={fieldTypeOptions}\n setValue={(value: string) => {\n setFieldType(value);\n setErrorField('');\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '300px',\n marginTop: '20px'\n }}\n label=\"Question Type\"\n />\n {errorField && <Box sx={{ ...classes.formError, top: '63px' }}>{errorField}</Box>}\n </Box>\n </Box>\n <Box sx={{ marginLeft: '15px' }}>\n <Box sx={classes.modalFormLine}>\n <MultilineFormTextField\n dataTestId=\"field-label\"\n value={label}\n onChange={(e) => {\n setErrorLabel('');\n setLabel(e.target.value);\n }}\n styles={{ width: '600px', marginTop: '20px' }}\n rows={6}\n innerRef={labelRef}\n error={errorLabel}\n label={'Question'}\n />\n </Box>\n </Box>\n <Box sx={classes.checkboxContainer} id=\"enabled-filter\">\n <FormControlLabel\n sx={\n !enabledSwitch\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n control={\n <Switch\n data-testid=\"enable-switch\"\n sx={enabledSwitch ? classes.switchActive : classes.switch}\n checked={enabledSwitch}\n onChange={() => setEnabledSwitch(!enabledSwitch)}\n />\n }\n label=\"Enabled\"\n labelPlacement=\"end\"\n />\n <FormControlLabel\n sx={\n !requiredSwitch\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n control={\n <Switch\n sx={requiredSwitch ? classes.switchActive : classes.switch}\n checked={requiredSwitch}\n onChange={() => setRequiredSwitch(!requiredSwitch)}\n />\n }\n label=\"Required\"\n labelPlacement=\"end\"\n />\n <FormControlLabel\n sx={\n !rateableSwitch\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n control={\n <Switch\n sx={rateableSwitch ? classes.switchActive : classes.switch}\n checked={rateableSwitch}\n onChange={() => setRateableSwitch(!rateableSwitch)}\n />\n }\n label=\"Rateable\"\n labelPlacement=\"end\"\n />\n <FormControlLabel\n sx={\n !confidentialSwitch\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n control={\n <Switch\n sx={confidentialSwitch ? classes.switchActive : classes.switch}\n checked={confidentialSwitch}\n onChange={() => setConfidentialSwitch(!confidentialSwitch)}\n />\n }\n label=\"Confidential\"\n labelPlacement=\"end\"\n />\n {canAddIndeedDemographicQ && (\n <Tooltip title=\"Only for EEO question for Indeed US job post\">\n <FormControlLabel\n sx={\n !isDemographicQuestion\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n control={\n <Switch\n sx={isDemographicQuestion ? classes.switchActive : classes.switch}\n checked={isDemographicQuestion}\n onChange={() => {\n setIsDemographicQuestion(!isDemographicQuestion);\n if(!isDemographicQuestion){\n setConfidentialSwitch(true);\n }\n }}\n />\n }\n label=\"Demographic Question\"\n labelPlacement=\"end\"\n />\n </Tooltip>\n )}\n\n {showAiToggle && (\n <FormControlLabel\n sx={\n !felixAISwitch\n ? { ...baseSwitchStyle, ...classes.labelActive }\n : baseSwitchStyle\n }\n control={\n <Switch\n sx={confidentialSwitch ? classes.switchActive : classes.switch}\n checked={felixAISwitch}\n onChange={() => setFelixAISwitch(!felixAISwitch)}\n />\n }\n label=\"Felix AI Feedback\"\n labelPlacement=\"end\"\n />\n )}\n </Box>\n {['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType) && (\n <Box sx={classes.addChoiceContainer} ref={choicesRef}>\n <Box sx={classes.addChoiceHead}>\n <Box id=\"add-choice-title\" sx={classes.addChoiceLabel}>\n Choices\n </Box>\n <Button\n id=\"add-choice-button\"\n sx={classes.modalAddChoiceButton}\n onClick={addChoice}\n >\n Add choice\n </Button>\n </Box>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={choiceList} strategy={verticalListSortingStrategy}>\n {choiceList.map(\n (choice, index) =>\n !(choice?._destroy === 1) && (\n <SortableChoice\n key={choice.id}\n id={choice.id}\n choice={choice}\n index={index}\n handleChoiceInput={handleChoiceInput}\n handleSelectRating={updateRating}\n handleRankInput={updateRank}\n handleSelectRankValue={updateRankValue}\n onRemoveChoice={removeChoice}\n editingQuestion={editingQuestion}\n rateableSwitch={rateableSwitch}\n confidentialSwitch={confidentialSwitch}\n autoRating={autoRating}\n userPermissions={userPermissions}\n fieldType={fieldType}\n />\n )\n )}\n </SortableContext>\n </DndContext>\n {errorChoices && <Box sx={{ ...classes.inlineError }}>{errorChoices}</Box>}\n </Box>\n )}\n {['Availability'].includes(fieldType) && (\n <Box sx={classes.availabilityContainer}>\n <Box id=\"availability-config-title\" sx={classes.addChoiceLabel}>\n Availability Config\n </Box>\n <Box sx={classes.config}>\n <FormSelectField\n options={['Weekly', 'Fortnightly']}\n defaultValue=\"Weekly\"\n value={weekDuration}\n onChange={(value) => setWeekDuration(value)}\n label={'How long is your work period?'}\n styles={{ width: '290px', marginBottom: '15px' }}\n required={true}\n />\n <FormSelectField\n options={DateOptions}\n defaultValue=\"Sunday\"\n value={weekStartDay}\n onChange={(value) => {\n setWeekStartDay(value);\n }}\n label={'When does the work period start?'}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n <FormTextField\n label=\"Heading 1\"\n value={headingOne}\n onChange={(e) => setHeadingOne(e.target.value)}\n required={false}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n <FormTextField\n label=\"Heading 2\"\n value={headingTwo}\n onChange={(e) => setHeadingTwo(e.target.value)}\n required={false}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n <FormSelectField\n options={['Yes', 'No']}\n defaultValue=\"No\"\n value={allowBreak}\n onChange={(value) => setAllowBreak(value)}\n label={'Allow break?'}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n </Box>\n </Box>\n )}\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-new-field-button\"\n sx={classes.modalCancelButton}\n onClick={() => handleClose()}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-new-field-button\"\n data-testid=\"confirm-button\"\n type=\"submit\"\n sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n onClick={() => handleSubmit(jobId)}\n >\n {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n </Box>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from '../styles';\nimport IconButton from '@mui/material/IconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport Box from '@mui/material/Box';\nimport Select from '@mui/material/Select';\nimport MenuItem from '@mui/material/MenuItem';\nimport { alpha, styled } from '@mui/material/styles';\nimport InputBase from '@mui/material/InputBase';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\nconst autoRatingOptions = [1, 2, 3, 4, 5];\n\nconst SelectInput = styled(InputBase)(() => ({\n 'label + &': {\n marginTop: '24px'\n },\n '& .MuiInputBase-input': {\n borderRadius: '6px',\n position: 'relative',\n backgroundColor: '#FFFFFF',\n color: '#333333',\n border: '1px solid #DDDDDD',\n fontSize: '16px',\n padding: '6px 10px',\n margin: '3px 0px',\n fontFamily: 'Source Sans Pro, sans-serif',\n '&:focus': {\n boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n borderColor: theme.palette.primary.main\n }\n },\n '& .MuiInputBase-input:focus': {\n backgroundColor: '#ffffff',\n borderRadius: '6px'\n },\n '& .MuiSvgIcon-root': {\n color: '#AAAAAA',\n transition: 'all 0.16s ease-in-out'\n }\n}));\n\nconst menuItemStyle = {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n};\n\nexport default function SortableChoice({\n id,\n choice,\n index,\n handleChoiceInput,\n handleSelectRating,\n handleRankInput,\n handleSelectRankValue,\n onRemoveChoice,\n editingQuestion,\n rateableSwitch,\n confidentialSwitch,\n autoRating,\n userPermissions,\n fieldType\n}: {\n id: string;\n choice: any;\n index: number;\n handleChoiceInput: any;\n handleSelectRating: any;\n handleRankInput: any;\n handleSelectRankValue: any;\n onRemoveChoice: any;\n editingQuestion: any;\n rateableSwitch: boolean;\n confidentialSwitch: boolean;\n autoRating: boolean;\n userPermissions: any;\n fieldType: string;\n}) {\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n useSortable({ id: id });\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition\n };\n\n return (\n <Box key={index} sx={classes.choice} style={style} ref={setNodeRef} {...attributes}>\n <IconButton ref={setActivatorNodeRef} {...listeners}>\n <DragIndicatorIcon sx={{ fontSize: 18 }} />\n </IconButton>\n <FormTextField\n dataTestId=\"choice-input\"\n value={choice.name}\n onChange={(e) => handleChoiceInput(e, index)}\n required={true}\n styles={{ width: '150px' }}\n />\n {editingQuestion &&\n rateableSwitch &&\n autoRating &&\n userPermissions?.['Job Options']?.['Auto Rating'] &&\n ['Checkbox', 'Radio Button'].includes(fieldType) && (\n <Box sx={{ marginLeft: '25px', display: 'flex', alignItems: 'center' }}>\n <Select\n sx={{ width: '60px' }}\n value={choice.rating}\n onChange={(e) => handleSelectRating(e.target.value, index)}\n input={<SelectInput />}\n >\n {autoRatingOptions.map((option, index) => (\n <MenuItem key={index} value={option} sx={menuItemStyle}>\n {option}\n </MenuItem>\n ))}\n </Select>\n <Box sx={{ marginLeft: '10px', fontSize: '14px' }}>Default rating</Box>\n </Box>\n )}\n {editingQuestion &&\n rateableSwitch &&\n autoRating &&\n userPermissions?.['Job Options']?.['Auto Rating'] &&\n ['Rank'].includes(fieldType) && (\n <Box sx={{ marginLeft: '25px', display: 'flex', alignItems: 'center' }}>\n <Box sx={{ margin: '0 5px 0px 0px', fontSize: '14px' }}>If rank is greater than</Box>\n <FormTextField\n value={choice.rank}\n onChange={(e) => handleRankInput(e.target.value, index)}\n styles={{ width: '60px' }}\n />\n <Box sx={{ margin: '0px 5px', fontSize: '14px' }}>candidate gets</Box>\n <Select\n sx={{ width: '60px' }}\n value={choice.rank_value}\n onChange={(e) => handleSelectRankValue(e.target.value, index)}\n input={<SelectInput />}\n >\n {[0, 1].map((option, index) => (\n <MenuItem key={index} value={option} sx={menuItemStyle}>\n {option}\n </MenuItem>\n ))}\n </Select>\n </Box>\n )}\n <IconButton onClick={() => onRemoveChoice(index)} sx={{ marginLeft: '35px' }}>\n <DeleteIcon sx={{ color: theme.palette.error.main, fontSize: 18 }} />\n </IconButton>\n </Box>\n );\n}\n","import React from 'react';\n\nexport default function NewSystemFieldSVG() {\nreturn (<svg id=\"MDI_alpha-s-box\" data-name=\"MDI / alpha-s-box\" xmlns=\"http://www.w3.org/2000/svg\" width=\"20.719\" height=\"20.719\" viewBox=\"0 0 18.719 18.719\">\n<g id=\"Boundary\" fill=\"#666\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"19.719\" height=\"19.719\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"18.719\" height=\"18.719\" fill=\"none\"/>\n</g>\n<path id=\"Path_alpha-s-box\" data-name=\"Path / alpha-s-box\" d=\"M9.1,6.049A1.524,1.524,0,0,0,7.573,7.573V9.1A1.524,1.524,0,0,0,9.1,10.622h1.524v1.524H7.573V13.67h3.049a1.524,1.524,0,0,0,1.524-1.524V10.622A1.524,1.524,0,0,0,10.622,9.1H9.1V7.573h3.049V6.049H9.1M4.524,3h10.67a1.524,1.524,0,0,1,1.524,1.524v10.67a1.524,1.524,0,0,1-1.524,1.524H4.524A1.524,1.524,0,0,1,3,15.194V4.524A1.524,1.524,0,0,1,4.524,3Z\" transform=\"translate(0)\" fill=\"#666\"/>\n</svg>\n)\n}\n","import React from 'react';\n\nexport default function NoQuestionArrowSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"99.619\" height=\"100.678\" viewBox=\"0 0 99.619 100.678\">\n<path id=\"Path_244\" data-name=\"Path 244\" d=\"M25.61,11.513C26.326,7.643,26.989,4.054,27.737,0L0,19.164l28.871,17.45L26.089,25.473A64.409,64.409,0,0,1,81.952,81.022c1.993-10.516-.943-30.62-13.8-46.171C57.125,21.517,42.948,13.878,25.61,11.513Z\" transform=\"matrix(0.259, 0.966, -0.966, 0.259, 78.262, 0)\" fill=\"#f3f3f3\"/>\n</svg>\n)\n}\n","import React from 'react';\n\nexport default function NoQuestionSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" width=\"106.125\" height=\"131.719\" viewBox=\"0 0 106.125 131.719\">\n<defs>\n <clipPath id=\"clip-path\">\n <rect id=\"Rectangle_775\" data-name=\"Rectangle 775\" width=\"106.125\" height=\"131.719\" fill=\"none\"/>\n </clipPath>\n</defs>\n<g id=\"Group_587\" data-name=\"Group 587\" transform=\"translate(-902.121 -666.15)\">\n <g id=\"Group_586\" data-name=\"Group 586\" transform=\"translate(902.121 666.15)\">\n <g id=\"Group_585\" data-name=\"Group 585\" clip-path=\"url(#clip-path)\">\n <path id=\"Path_232\" data-name=\"Path 232\" d=\"M98.892,28.023l0,95.46a4.412,4.412,0,0,1-4.419,4.4l-90.051,0A4.412,4.412,0,0,1,0,123.481V107.9l.074-8.585,0-94.914A4.412,4.412,0,0,1,4.5,0l87.5,0a6.9,6.9,0,0,1,6.9,6.9V28.023Z\" fill=\"#eee\"/>\n <path id=\"Path_233\" data-name=\"Path 233\" d=\"M109.948,34.73l0,95.46a4.412,4.412,0,0,1-4.419,4.405l-90.051,0a4.412,4.412,0,0,1-4.419-4.405V114.611l.074-8.585,0-94.914a4.412,4.412,0,0,1,4.419-4.405l87.5,0a6.9,6.9,0,0,1,6.9,6.9V34.73Z\" transform=\"translate(-8.685 -5.269)\" fill=\"#f9f9f9\"/>\n <path id=\"Path_234\" data-name=\"Path 234\" d=\"M107.477,33.918q0,5.843,0,11.687,0,13.491,0,26.982,0,15.22,0,30.44,0,11.054,0,22.108c0,1.38.031,2.764,0,4.144a3.979,3.979,0,0,1-3.718,4.128c-.388.015-.78,0-1.168,0H26.623c-4.281,0-8.594.151-12.873,0-2.635-.093-4.129-2.306-4.128-4.75V122.8c0-3.361-.022-6.722.007-10.082q.057-6.582.068-13.162,0-11.627,0-23.254,0-15.255,0-30.509,0-13.074,0-26.147,0-3.79,0-7.579c0-2.284-.1-5,2.628-5.908a14.371,14.371,0,0,1,4.219-.167h83.6a9.1,9.1,0,0,1,2.13.169,6.889,6.889,0,0,1,5.2,6.759c.048,4.09,0,8.184,0,12.275q0,4.36,0,8.72c0,.219,1.036.057,1.036-.277,0-7.036.127-14.083,0-21.118a7.1,7.1,0,0,0-5.82-6.882,11.409,11.409,0,0,0-2.03-.12H16.479c-1.644,0-3.444-.186-4.974.518a4.781,4.781,0,0,0-2.841,4.389c-.006.489,0,.979,0,1.469q0,9.436,0,18.872,0,15.1,0,30.206,0,14.464,0,28.927,0,7.518,0,15.037c-.01,6.361-.074,12.72-.075,19.081,0,1.74-.035,3.484,0,5.223a4.655,4.655,0,0,0,4.723,4.641c1.2.028,2.409,0,3.613,0h85.587c.378,0,.761.015,1.139-.009a5,5,0,0,0,4.863-4.788c.113-4.206,0-8.431,0-12.638q0-13.96,0-27.919,0-15.37,0-30.739v-21.1q0-1.523,0-3.047c0-.219-1.036-.057-1.036.277\" transform=\"translate(-6.732 -4.318)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_235\" data-name=\"Path 235\" d=\"M129.948,44.73l0,95.46a4.412,4.412,0,0,1-4.419,4.405l-90.051,0a4.412,4.412,0,0,1-4.419-4.405V124.611l.074-8.585,0-94.914a4.412,4.412,0,0,1,4.419-4.405l87.5,0a6.9,6.9,0,0,1,6.9,6.9V44.73Z\" transform=\"translate(-24.397 -13.125)\" fill=\"#f9f9f9\"/>\n <path id=\"Path_236\" data-name=\"Path 236\" d=\"M127.178,55.845l0,95.981a4.277,4.277,0,0,1-4.258,4.3l-87.6,0a4.278,4.278,0,0,1-4.258-4.3V136.629l.071-8.374,0-92.579a4.278,4.278,0,0,1,4.258-4.3l87.962,0a3.8,3.8,0,0,1,3.826,3.773Z\" transform=\"translate(-24.398 -24.652)\" fill=\"#fff\"/>\n <path id=\"Path_237\" data-name=\"Path 237\" d=\"M127.478,43.918q0,5.843,0,11.687,0,13.491,0,26.982,0,15.22,0,30.44,0,11.054,0,22.108c0,1.38.031,2.764,0,4.144a3.979,3.979,0,0,1-3.718,4.128c-.388.015-.78,0-1.168,0H46.623c-4.281,0-8.594.151-12.873,0-2.635-.093-4.129-2.306-4.128-4.75V132.8c0-3.361-.022-6.722.007-10.082q.057-6.582.068-13.162,0-11.627,0-23.254,0-15.255,0-30.509,0-13.074,0-26.147,0-3.79,0-7.579c0-2.284-.1-5,2.628-5.908a14.371,14.371,0,0,1,4.219-.167h83.6a9.1,9.1,0,0,1,2.13.169,6.889,6.889,0,0,1,5.2,6.759c.048,4.09,0,8.184,0,12.275q0,4.36,0,8.72c0,.219,1.036.057,1.036-.277,0-7.036.127-14.083,0-21.118a7.1,7.1,0,0,0-5.82-6.882,11.409,11.409,0,0,0-2.03-.12H36.479c-1.644,0-3.444-.186-4.974.518a4.781,4.781,0,0,0-2.841,4.389c-.006.489,0,.979,0,1.469q0,9.436,0,18.872,0,15.1,0,30.206,0,14.464,0,28.927,0,7.518,0,15.037c-.01,6.361-.074,12.72-.075,19.081,0,1.74-.035,3.484,0,5.223a4.655,4.655,0,0,0,4.723,4.641c1.2.028,2.409,0,3.613,0h85.587c.378,0,.761.015,1.139-.009a5,5,0,0,0,4.863-4.788c.113-4.206,0-8.431,0-12.638q0-13.96,0-27.919,0-15.37,0-30.739v-21.1q0-1.523,0-3.047c0-.219-1.036-.057-1.036.277\" transform=\"translate(-22.444 -12.174)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_259\" data-name=\"Path 259\" d=\"M358.778,506.84h6.332c.588,0,.8-.748.094-.748h-6.332c-.588,0-.8.748-.095.748\" transform=\"translate(-281.501 -397.576)\" fill=\"#fff\"/>\n <path id=\"Path_261\" data-name=\"Path 261\" d=\"M246.408,200.5H172.726c-1.69,0-3.06-.8-3.06-1.778s1.37-1.778,3.06-1.778h73.682c1.69,0,3.06.8,3.06,1.778s-1.37,1.778-3.06,1.778\" transform=\"translate(-152.539 -173.05)\" fill=\"#efefef\"/>\n </g>\n </g>\n <g id=\"Group_588\" data-name=\"Group 588\" transform=\"translate(925.322 708.289)\">\n <g id=\"Group_589\" data-name=\"Group 589\" transform=\"translate(0)\">\n <path id=\"Path_262\" data-name=\"Path 262\" d=\"M52.355.577h56.424c.467,0,.66-.577.086-.577H52.441c-.467,0-.661.577-.086.577\" transform=\"translate(-42.917)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_263\" data-name=\"Path 263\" d=\"M.355,30.382H63.189a23.607,23.607,0,0,0,2.562,0,1.028,1.028,0,0,1,.111,0c.467,0,.66-.577.086-.577H3.114a23.56,23.56,0,0,0-2.562,0,1.029,1.029,0,0,1-.111,0c-.467,0-.661.577-.086.577\" transform=\"translate(0 -24.564)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_264\" data-name=\"Path 264\" d=\"M.355,60.577h55.2c.467,0,.66-.577.086-.577H.441c-.467,0-.661.577-.086.577\" transform=\"translate(0 -49.519)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_265\" data-name=\"Path 265\" d=\"M48.262,90.577H105.4c.467,0,.661-.577.086-.577H48.348c-.467,0-.661.577-.086.577\" transform=\"translate(-39.539 -74.278)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_266\" data-name=\"Path 266\" d=\"M.355,120.382H63.189a23.6,23.6,0,0,0,2.562,0,1.029,1.029,0,0,1,.111,0c.467,0,.66-.577.086-.577H3.114a23.562,23.562,0,0,0-2.562,0,1.029,1.029,0,0,1-.111,0c-.467,0-.661.577-.086.577\" transform=\"translate(0 -98.843)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_267\" data-name=\"Path 267\" d=\"M.355,150.577H55.189c.467,0,.66-.577.086-.577H.441c-.467,0-.661.577-.086.577\" transform=\"translate(0 -123.797)\" fill=\"#cfcfcf\"/>\n </g>\n </g>\n</g>\n</svg>\n)\n}\n","import type { PointerEvent } from \"react\";\nimport { PointerSensor } from \"@dnd-kit/core\";\n\n/**\n * An extended \"PointerSensor\" that prevent some\n * interactive html element(button, input, textarea, select, option...) from dragging\n */\n\nexport class QuestionCardSensor extends PointerSensor {\n static activators = [\n {\n eventName: \"onPointerDown\" as any,\n handler: ({ nativeEvent: event }: PointerEvent) => {\n if (\n !event.isPrimary ||\n event.button !== 0 ||\n isInteractiveElement(event.target as Element)\n ) {\n return false;\n }\n\n return true;\n },\n },\n ];\n}\n\nfunction isInteractiveElement(element: Element | null) {\n if (element?.dataset?.testid === \"DragIndicatorIcon\" \n || element?.className?.baseVal.toLowerCase().includes(\"select\")\n ) return false; \n\n const interactiveElements = [\n \"button\",\n \"input\",\n \"textarea\",\n \"select\",\n \"option\",\n \"icon\",\n \"svg\",\n \"path\",\n \"ul\",\n \"li\",\n \"span\",\n ];\n if (\n element?.tagName &&\n interactiveElements.includes(element.tagName.toLowerCase())\n ) {\n return true;\n }\n\n return false;\n}\n","import React, { Dispatch, FC, SetStateAction } from 'react';\nimport { Box } from '@mui/material';\nimport { classes } from './styles';\nimport NoQuestionSVG from './NoQuestionSVG';\nimport NoQuestionArrowSVG from './NoQuestionArrowSVG';\nimport {\n DndContext,\n DragEndEvent,\n KeyboardSensor,\n closestCenter,\n useSensor,\n useSensors\n} from '@dnd-kit/core';\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableItem from './SortableItem';\nimport { IPermissions, IJob } from '../../Job/types';\nimport { QuestionCardSensor } from './QuestionCardSensor';\nimport { IApplicantQuestion } from '../types';\n\ninterface IQuestionListProps {\n apiKey: string;\n aiInterview: boolean;\n enabled: boolean;\n getQuestions: () => Promise<void>;\n handleDragEnd: (event: DragEndEvent) => void;\n isLoading: boolean;\n job: IJob;\n jobId: number;\n questions: IApplicantQuestion[];\n setEditingQuestion: Dispatch<SetStateAction<IApplicantQuestion | null>>;\n setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n setQuestions: Dispatch<SetStateAction<IApplicantQuestion[]>>;\n setSnackbar: Dispatch<\n SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n >;\n userPermissions: IPermissions;\n}\n\nexport const QuestionList: FC<IQuestionListProps> = ({\n apiKey,\n aiInterview,\n enabled,\n getQuestions,\n handleDragEnd,\n isLoading,\n job,\n jobId,\n questions,\n setEditingQuestion,\n setModalsOpen,\n setQuestions,\n setSnackbar\n}) => {\n const filteredQuestions = questions.filter((question) => question.enabled === enabled);\n const sensors = useSensors(\n useSensor(QuestionCardSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n if (!isLoading && !filteredQuestions.length) {\n return (\n <Box sx={{ ...classes.noQuestionsContainer, margin: '100px 0px' }}>\n <Box sx={{ display: 'flex', flexDirection: 'row' }}>\n <Box sx={{ width: '100px' }}></Box>\n <NoQuestionSVG />\n <NoQuestionArrowSVG />\n </Box>\n <Box sx={classes.noQuestionsText}>\n You have no questions\n <br />\n Choose an options above to start creating questions\n </Box>\n </Box>\n );\n }\n\n return (\n <Box sx={classes.questionsContainer}>\n <DndContext sensors={sensors} collisionDetection={closestCenter} onDragEnd={handleDragEnd}>\n <SortableContext\n items={filteredQuestions.map((q) => q.id)}\n strategy={verticalListSortingStrategy}\n >\n {filteredQuestions.map((question, index) => (\n <SortableItem\n aiInterview={aiInterview}\n allQuestions={questions}\n apiKey={apiKey}\n applicationCount={job.applications_count}\n editingQuestion={question}\n getQuestions={getQuestions}\n index={index}\n jobId={jobId}\n key={question.id}\n questions={filteredQuestions}\n setEditingQuestion={setEditingQuestion} //TODO: Fix types in SortableItem\n setModalsOpen={setModalsOpen}\n setQuestions={setQuestions}\n setSnackbar={setSnackbar}\n />\n ))}\n </SortableContext>\n </DndContext>\n </Box>\n );\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Box, Button, ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport LiveHelpIcon from '@mui/icons-material/LiveHelp';\nimport InfoIcon from '@mui/icons-material/Info';\nimport NewSystemFieldSVG from './NewSystemFieldSVG';\nimport NewField from './Modals/NewField';\nimport AddSystemField from './Modals/AddSystemField';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport AIStudioField from '../../../AIStudio/AIStudioQuestions/AIStudioQuestions';\nimport { FelixButtonSVG } from '../../../AIStudio/SharedComponents/Graphics/FelixSVG';\nimport { classes } from './styles';\nimport { classes as AIClasses } from '../styles';\nimport { KeyboardSensor, useSensor, useSensors } from '@dnd-kit/core';\nimport { arrayMove, sortableKeyboardCoordinates } from '@dnd-kit/sortable';\n\nimport { QuestionCardSensor } from './QuestionCardSensor';\nimport { IPermissions, IJob } from '../../Job/types';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { QuestionList } from './QuestionList';\nimport { IApplicantQuestion } from '../types';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { IUserPermissions } from '../../Components/sharedTypes';\n\nexport default function Questions({\n aiInterview,\n aiStudio,\n apiKey,\n job,\n jobId,\n userPermissions,\n canAddIndeedDemographicQ\n}: {\n aiInterview: boolean;\n aiStudio: boolean;\n apiKey: string;\n job: IJob;\n jobId: number;\n userPermissions: IPermissions;\n canAddIndeedDemographicQ: boolean;\n}) {\n const [questions, setQuestions] = useState<IApplicantQuestion[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [buttonHovered, setButtonHovered] = useState(false);\n const [selected, setSelected] = useState('enabledQuestions');\n const [modalsOpen, setModalsOpen] = useState<Record<string, boolean>>({\n newField: false,\n addSystemField: false,\n aiStudioField: false\n });\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const queryClient = useQueryClient();\n const permissions = queryClient.getQueryData<IUserPermissions>(['permissions']);\n const [editingQuestion, setEditingQuestion] = useState<IApplicantQuestion | null>();\n\n const sensors = useSensors(\n useSensor(QuestionCardSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n function handleDragEnd(event) {\n const { active, over } = event;\n\n if (active.id !== over.id) {\n const oldIndex = questions.map((question) => question.id).indexOf(active.id);\n const newIndex = questions.map((question) => question.id).indexOf(over.id);\n const newArray = arrayMove(questions, oldIndex, newIndex);\n\n setQuestions(newArray);\n updateJobQuestions(newArray);\n }\n }\n\n const getQuestions = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await fetch(`/api/v4/fields?job_id=${jobId}`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n console.log('response', response.fields);\n setQuestions(response.fields);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, jobId]);\n const updateJobQuestions = async (questions) => {\n const fieldObject = {};\n questions.map(\n (question, index) =>\n (fieldObject[question.id] = {\n position: index\n })\n );\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/update_questions`, {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n fields: fieldObject\n })\n }).then((response) => response.json());\n setQuestions(response.questions);\n setSnackbar({\n message: 'Questions have been updated',\n state: 'success'\n });\n } catch (error) {\n setSnackbar({\n message: 'There was an error saving your changes',\n state: 'error'\n });\n }\n };\n\n const handleToggle = (event: React.MouseEvent<HTMLElement>, newSelected: string) => {\n if (newSelected !== null) {\n setSelected(newSelected);\n }\n };\n\n useEffect(() => {\n getQuestions();\n }, [getQuestions]);\n\n return (\n <Box sx={classes.questionsPageContainer}>\n <Box sx={classes.pageHeader}>\n <h2 data-testid=\"questions-label\">Questions</h2>\n </Box>\n <Box sx={classes.noticeContainer}>\n <InfoIcon sx={classes.noticeIcon} />\n <Box sx={{ marginLeft: 1 }}>\n Any changes (adding, editing, removing etc.) to your questions will effect and block the\n importing of applications from SEEK into :Recruit.{' '}\n <b>All changes will also be automatically saved and applied immediately.</b>\n </Box>\n </Box>\n <Box sx={classes.noticeContainer}>\n <InfoIcon sx={classes.infoIcon} />\n <Box sx={{ marginLeft: 1 }}>\n All questions that have been answered by a candidate are not able to be edited or deleted.\n To remove or edit a question, you will need to disable it and create a new question.\n </Box>\n </Box>\n <Box sx={classes.toggleButtonsContainer}>\n <ToggleButtonGroup\n value={selected}\n exclusive\n onChange={handleToggle}\n aria-label=\"enabled or disabled questions\"\n >\n <ToggleButton value=\"enabledQuestions\" sx={sharedClasses.toggleButton}>\n Enabled questions\n </ToggleButton>\n <ToggleButton value=\"disabledQuestions\" sx={sharedClasses.toggleButton}>\n Disabled questions\n </ToggleButton>\n </ToggleButtonGroup>\n </Box>\n <Box sx={classes.actionsContianer}>\n {selected === 'enabledQuestions' && (\n <Button\n data-testid=\"new-field-button\"\n variant=\"outlined\"\n startIcon={<LiveHelpIcon />}\n sx={classes.actionButton}\n onClick={() => {\n setEditingQuestion(null);\n setModalsOpen((prev) => ({ ...prev, newField: true }));\n }}\n >\n New question\n </Button>\n )}\n {selected === 'enabledQuestions' && (\n <Button\n variant=\"outlined\"\n startIcon={<NewSystemFieldSVG />}\n sx={classes.actionButton}\n onClick={() => {\n setEditingQuestion(null);\n setModalsOpen((prev) => ({ ...prev, addSystemField: true }));\n }}\n >\n Add system field\n </Button>\n )}\n {permissions?.['AI Features']?.['Activate AI Studio'] && aiStudio && (\n <Box sx={{ marginLeft: 'auto' }}>\n <Box\n id=\"ai-studio-questions-integration-button\"\n sx={{\n ...AIClasses.buttonContainer,\n ...(buttonHovered ? AIClasses.hoverAnimation : AIClasses.unhoverAnimation)\n }}\n onMouseEnter={() => setButtonHovered(true)}\n onMouseLeave={() => setButtonHovered(false)}\n onClick={() => {\n setEditingQuestion(null);\n setModalsOpen((prev) => ({ ...prev, aiStudioField: true }));\n }}\n >\n <Box sx={AIClasses.avatarContainer}>\n <FelixButtonSVG />\n </Box>\n <Button sx={AIClasses.button}>Generate questions</Button>\n <Box sx={AIClasses.betaPill}>Beta</Box>\n </Box>\n </Box>\n )}\n </Box>\n <QuestionList\n aiInterview={aiInterview}\n apiKey={apiKey}\n enabled={selected === 'enabledQuestions'}\n getQuestions={getQuestions}\n handleDragEnd={handleDragEnd}\n isLoading={isLoading}\n job={job}\n jobId={jobId}\n questions={questions}\n sensors={sensors}\n setEditingQuestion={setEditingQuestion}\n setModalsOpen={setModalsOpen}\n setQuestions={setQuestions}\n setSnackbar={setSnackbar}\n userPermissions={userPermissions}\n />\n <NewField\n aiInterview={aiInterview}\n apiKey={apiKey}\n autoRating={job.auto_rater != null}\n editingQuestion={editingQuestion}\n getQuestions={getQuestions}\n jobId={jobId}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n setSnackbar={setSnackbar}\n userPermissions={userPermissions}\n canAddIndeedDemographicQ={canAddIndeedDemographicQ}\n />\n {aiStudio && (\n <AIStudioField\n getQuestions={getQuestions}\n modalsOpen={modalsOpen.aiStudioField}\n setModalsOpen={(open: boolean) =>\n setModalsOpen((prev) => ({ ...prev, aiStudioField: open }))\n }\n jobId={jobId}\n setSnackbar={setSnackbar}\n jobTitle={job.title}\n jobDescription={job.description}\n userPermissions={userPermissions}\n />\n )}\n <AddSystemField\n apiKey={apiKey}\n getQuestions={getQuestions}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n jobId={jobId}\n setSnackbar={setSnackbar}\n />\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { useState, Dispatch, SetStateAction, FC } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { Box, IconButton, Stack, Tooltip } from '@mui/material';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from './styles';\nimport QuestionFieldViewer from '../../Components/Utilities/QuestionFieldViewer';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport Switch from '@mui/material/Switch';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport Api from '../../Job/API';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\nimport { IApplicantQuestion, SortableItemSwitchProps } from '../types';\nimport AvailabilityFieldQuestion from '../../Components/CustomUIElements/AvailabilityFieldQuestion';\nimport { theme } from '../../../../components/ThemeContext/ThemeObject';\nimport {\n Delete as DeleteIcon,\n Edit as EditIcon,\n FileCopy as FileCopyIcon\n} from '@mui/icons-material';\nimport { FelixAIActiveSVG, FelixAISVG } from '../../Components/Icons';\n\nexport default function SortableItem({\n aiInterview,\n allQuestions,\n apiKey,\n editingQuestion,\n getQuestions,\n index,\n jobId,\n questions,\n setEditingQuestion,\n setModalsOpen,\n setQuestions,\n setSnackbar\n}: {\n aiInterview: boolean;\n allQuestions: IApplicantQuestion[];\n apiKey: string;\n applicationCount: number;\n editingQuestion: IApplicantQuestion;\n getQuestions: any;\n index: number;\n jobId: number;\n questions: IApplicantQuestion[];\n setEditingQuestion: Dispatch<SetStateAction<Record<IApplicantQuestion, null>>>;\n setModalsOpen: Dispatch<SetStateAction<Record<string, boolean>>>;\n setQuestions: Dispatch<SetStateAction<IApplicantQuestion[]>>;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n}) {\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [isDeleting, setIsDeleting] = useState(false);\n const [isCloning, setIsCloning] = useState(false);\n const [tempEnabled, setTempEnabled] = useState(questions[index].enabled);\n const [tempRequired, setTempRequired] = useState(questions[index].required);\n const [tempRateable, setTempRateable] = useState(questions[index].rateable);\n const [tempConfidential, setTempConfidential] = useState(questions[index].confidential);\n const [tempWeight, setTempWeight] = useState(questions[index].weight);\n const [tempFelixAI, setTempFelixAI] = useState(questions[index].felix_ai_interview_prompter);\n const isQuestionEditable = questions[index].editable;\n\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: questions[index].id\n });\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition,\n filter: isDragging ? 'brightness(75%)' : 'brightness(100%)',\n zIndex: isDragging ? 10 : 1\n };\n\n const deleteQuestion = async (url: string, questionId: number) => {\n setIsDeleting(true);\n try {\n const response = await Api.deleteQuestion(\n { 'X-api-authenticate': apiKey },\n questionId,\n jobId\n );\n if (response.errors) {\n setSnackbar({\n message: 'You do not have right to delete this field',\n state: 'error'\n });\n } else {\n setSnackbar({\n message: 'Field has been deleted',\n state: 'success'\n });\n }\n } catch (error) {\n console.log(error);\n } finally {\n setIsDeleting(false);\n setIsDialogOpen(false);\n getQuestions();\n }\n };\n\n const cloneQuestion = async (url: string, questionId: number) => {\n setIsCloning(true);\n try {\n await Api.cloneQuestion({ 'X-api-authenticate': apiKey }, questionId, jobId);\n\n setSnackbar({\n message: 'Field has been cloned',\n state: 'success'\n });\n } catch (error) {\n setSnackbar({\n message: `Failed to clone, ${error}`,\n state: 'error'\n });\n } finally {\n setIsCloning(false);\n setIsDialogOpen(false);\n getQuestions();\n }\n };\n\n const handleUpdateActions = async (\n event?: React.ChangeEvent<HTMLInputElement>,\n action: keyof (typeof questions)[0],\n weight?: number\n ) => {\n action === 'enabled' && setTempEnabled(!tempEnabled);\n action === 'required' && setTempRequired(!tempRequired);\n action === 'rateable' && setTempRateable(!tempRateable);\n action === 'confidential' && setTempConfidential(!tempConfidential);\n action === 'weight' && setTempWeight(weight);\n action === 'felix_ai_interview_prompter' && setTempFelixAI(!tempFelixAI);\n const fieldId = questions[index].id;\n const originalWeight = questions[index].weight;\n const originalAiInterviewPrompter = questions[index].felix_ai_interview_prompter;\n try {\n const response = await fetch(`/api/v4/fields/${fieldId}?job_id=${jobId}`, {\n method: 'PUT',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n field: {\n [action]: event?.target.checked,\n ...(action === 'felix_ai_interview_prompter' && {\n felix_ai_interview_prompter: !tempFelixAI\n }),\n weight: weight\n }\n })\n }).then((response) => response.json());\n if (response.id) {\n setSnackbar({\n message: 'The change has been saved',\n state: 'success'\n });\n const newQuestions = [...allQuestions];\n const indexOfAllquestions = allQuestions.findIndex((item) => item.id === fieldId);\n if (weight !== undefined) {\n newQuestions[indexOfAllquestions].weight = weight;\n } else {\n newQuestions[indexOfAllquestions][action] = !allQuestions[indexOfAllquestions][action];\n }\n setTimeout(() => {\n setQuestions(newQuestions);\n }, 500);\n } else if (response.errors) {\n setSnackbar({\n message: `There was an error saving your changes. ${response.errors}`,\n state: 'error'\n });\n setTimeout(() => {\n action === 'enabled' && setTempEnabled(!event?.target.checked);\n action === 'required' && setTempRequired(!event?.target.checked);\n action === 'rateable' && setTempRateable(!event?.target.checked);\n action === 'confidential' && setTempConfidential(!event?.target.checked);\n action === 'felix_ai_interview_prompter' && setTempFelixAI(originalAiInterviewPrompter);\n action === 'weight' && setTempWeight(originalWeight);\n }, 500);\n }\n } catch (error) {\n setSnackbar({\n message: `There was an error saving your changes. ${error}`,\n state: 'error'\n });\n setTimeout(() => {\n action === 'enabled' && setTempEnabled(!event?.target.checked);\n action === 'required' && setTempRequired(!event?.target.checked);\n action === 'rateable' && setTempRateable(!event?.target.checked);\n action === 'confidential' && setTempConfidential(!event?.target.checked);\n action === 'felix_ai_interview_prompter' && setTempFelixAI(originalAiInterviewPrompter);\n action === 'weight' && setTempWeight(originalWeight);\n }, 500);\n }\n };\n\n const [dialogProps, setDialogProps] = useState({\n url: '',\n title: 'Permanently delete question?',\n description: '',\n buttonText: 'Delete',\n buttonCallback: deleteQuestion,\n callbackLoading: false,\n dialogId: 0\n });\n\n const handleDeleteQuestion = (questionId: number) => {\n setDialogProps((prev) => ({\n ...prev,\n url: `/api/v4/fields/${questionId}?job_id=${jobId}`,\n description: `Are you sure you want to delete this question? This action cannot be undone.`,\n dialogId: questionId,\n buttonCallback: deleteQuestion\n }));\n setIsDialogOpen(true);\n };\n\n const handleCloneQuestion = (questionId: number) => {\n setDialogProps((prev) => ({\n ...prev,\n url: `/api/v4/fields/${questionId}?job_id=${jobId}`,\n title: 'Clone question',\n description: `Are you sure you want to clone this question?`,\n buttonText: 'Clone',\n dialogId: questionId,\n buttonCallback: cloneQuestion\n }));\n setIsDialogOpen(true);\n };\n\n const handleEditQuestion = () => {\n setEditingQuestion({\n ...editingQuestion,\n enabled: questions[index].enabled,\n required: questions[index].required,\n rateable: questions[index].rateable,\n felix_ai_interview_prompter: questions[index].felix_ai_interview_prompter\n });\n setModalsOpen((prev) => ({ ...prev, newField: true }));\n };\n\n const switchTypes: { type: SortableItemSwitchProps['type']; isChecked: boolean }[] = [\n { type: 'enabled', isChecked: tempEnabled },\n { type: 'required', isChecked: tempRequired },\n { type: 'rateable', isChecked: tempRateable },\n { type: 'confidential', isChecked: tempConfidential }\n ];\n\n const showAiToggle = aiInterview && questions[index].type === 'TextAreaField';\n const isPrompterOn = questions[index].felix_ai_interview_prompter;\n const aiPrompterToggleText = `Turn ${isPrompterOn ? 'off' : 'on'} AI Interview Prompter`;\n\n return (\n <Box ref={setNodeRef} style={style}>\n <Box key={questions[index].id}>\n {questions[index].type === 'CsvDataLookupField' ||\n questions[index].type === 'JobReferenceLookupField' ? (\n <span />\n ) : (\n <Box sx={{ ...classes.questionsWrapper, minWidth: 'initial', overflow: 'auto' }}>\n <Box sx={{ display: 'flex' }}>\n <DragIndicatorIcon\n sx={{ cursor: isDragging ? 'grabbing' : 'pointer', ...classes.dragHandle }}\n {...listeners}\n {...attributes}\n />\n <Box sx={{ marginRight: 'auto', ...classes.questionInput }}>\n <Box sx={{ height: '6px' }}></Box>\n <Box sx={{ ...classes.modalFormLine, position: 'relative', minWidth: '300px' }}>\n <QuestionFieldViewer question={questions[index]} draggable={true} />\n </Box>\n </Box>\n\n <Stack>\n <Box sx={classes.actionButtonsContainer}>\n {showAiToggle && (\n <Tooltip title={aiPrompterToggleText} placement=\"top\" arrow>\n <IconButton\n onClick={() =>\n handleUpdateActions(undefined, 'felix_ai_interview_prompter')\n }\n >\n {questions[index].felix_ai_interview_prompter ? (\n <FelixAIActiveSVG />\n ) : (\n <FelixAISVG />\n )}\n </IconButton>\n </Tooltip>\n )}\n {isQuestionEditable && !questions[index].answered && (\n <Tooltip title=\"Edit\" placement=\"top\" arrow>\n <IconButton\n data-testid={`edit-question-button-${questions[index].title}`}\n onClick={() => handleEditQuestion()}\n >\n <EditIcon sx={{ fontSize: 16 }} />\n </IconButton>\n </Tooltip>\n )}\n {isQuestionEditable && (\n <Tooltip title=\"Copy\" placement=\"top\" arrow>\n <IconButton\n data-testid={`clone-question-button-${questions[index].title}`}\n onClick={() => handleCloneQuestion(questions[index].id)}\n >\n <FileCopyIcon sx={{ fontSize: 16 }} />\n </IconButton>\n </Tooltip>\n )}\n {!questions[index].answered && (\n <Tooltip title=\"Delete\" placement=\"top\" arrow>\n <IconButton\n data-testid={`delete-question-button-${questions[index].title}`}\n onClick={() => {\n handleDeleteQuestion(questions[index].id);\n }}\n >\n <DeleteIcon\n sx={{ color: theme.palette.error.main, fontSize: theme.spacing(2) }}\n />\n </IconButton>\n </Tooltip>\n )}\n </Box>\n <Stack direction=\"row\" alignItems=\"center\" flexGrow={1}>\n {switchTypes.map(({ type, isChecked }) => (\n <SortableItemSwitch\n key={type}\n question={questions[index]}\n type={type}\n checked={isChecked}\n handleUpdateActions={(event) => handleUpdateActions(event, type)}\n />\n ))}\n <Box sx={{ marginBottom: '12px' }}>\n <FormTextField\n value={tempWeight?.toString()}\n onChange={(e) => handleUpdateActions(e, 'weight', parseInt(e.target.value))}\n styles={{\n width: '50px'\n }}\n draggable={!questions[index].editable}\n />\n <Stack sx={{ fontSize: '12px', textAlign: 'center' }}>Weight</Stack>\n </Box>\n </Stack>\n </Stack>\n </Box>\n {questions[index].type === 'AvailabilityField' && (\n <AvailabilityFieldQuestion question={questions[index]} />\n )}\n {tempConfidential && (\n <Box sx={{ padding: '0 6px', color: '#838383', fontSize: '12px' }}>\n <span style={{ fontWeight: 'bold' }}>Confidential Setting Enabled:</span> For DE&I\n compliance, only authorised users (HR Admins), can view responses. Hiring Managers\n will not have access.\n </Box>\n )}\n </Box>\n )}\n </Box>\n <GenericDialog\n url={dialogProps.url}\n title={dialogProps.title}\n description={dialogProps.description}\n buttonText={dialogProps.buttonText}\n buttonCallback={dialogProps.buttonCallback}\n callbackLoading={isDeleting || isCloning}\n isDialogOpen={isDialogOpen}\n setDialogOpen={setIsDialogOpen}\n dialogId={dialogProps.dialogId}\n />\n </Box>\n );\n}\n\nconst SortableItemSwitch: FC<SortableItemSwitchProps> = ({\n question,\n type,\n checked,\n handleUpdateActions\n}) => {\n const isActive = question[type];\n const isEditable = question.editable;\n const label = `${type.charAt(0).toUpperCase()}${type.slice(1)}`;\n\n return (\n <Box sx={{ ...classes.sortableItemSwitchContainer, fontWeight: isActive ? 'bold' : 'normal' }}>\n <Switch\n sx={isActive ? classes.switchActive : classes.switch}\n checked={checked}\n size=\"small\"\n onChange={(event) => handleUpdateActions(event, type)}\n disabled={!isEditable}\n />\n <Stack sx={classes.switchLabel}>{label}</Stack>\n </Box>\n );\n};\n","import React from 'react';\n\nexport default function AccountClockIcon() {\nreturn (\n <svg id=\"MDI_account-clock-outline\" data-name=\"MDI / account-clock-outline\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" stroke-width=\"1\" opacity=\"0\">\n <rect width=\"24\" height=\"24\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" fill=\"none\"/>\n </g>\n <path id=\"Path_account-clock-outline\" data-name=\"Path / account-clock-outline\" d=\"M16,14h1.5v2.82l2.44,1.41-.75,1.3L16,17.69V14m1-2a5,5,0,1,0,5,5,5,5,0,0,0-5-5m0-2a7,7,0,1,1-6.33,10H1V17c0-2.66,5.33-4,8-4a13.393,13.393,0,0,1,2.12.2A6.992,6.992,0,0,1,17,10m-7,7a6.858,6.858,0,0,1,.29-2A7.921,7.921,0,0,0,9,14.9c-2.97,0-6.1,1.46-6.1,2.1v1.1h7.19A6.71,6.71,0,0,1,10,17M9,4A4,4,0,1,1,5,8,4,4,0,0,1,9,4M9,5.9A2.1,2.1,0,1,0,11.1,8,2.1,2.1,0,0,0,9,5.9Z\" transform=\"translate(0 -2)\" fill=\"#084d6d\"/>\n </svg>\n)}\n","import React, { Dispatch, useState, useRef, useCallback, useEffect, SetStateAction } from 'react';\nimport Box from '@mui/material/Box';\nimport { IJob } from '../../Job/types';\nimport { classes } from '../styles';\nimport Checkbox from '@mui/material/Checkbox';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport Button from '@mui/material/Button';\n\nconst SourceTypes = [\n {\n id: 1,\n name: 'Newspaper'\n },\n {\n id: 2,\n name: 'Online Job Board'\n },\n {\n id: 3,\n name: 'Universities'\n },\n {\n id: 4,\n name: 'General'\n }\n];\n\nconst countries = [\n {\n id: 1,\n name: 'Australia'\n },\n {\n id: 2,\n name: 'Canada'\n },\n {\n id: 3,\n name: 'New Zealand'\n },\n {\n id: 4,\n name: 'South Africa'\n },\n {\n id: 5,\n name: 'United Kingdom'\n },\n {\n id: 6,\n name: 'United States'\n },\n {\n id: 7,\n name: 'International'\n },\n {\n id: 8,\n name: 'Other'\n }\n];\n\nexport default function Sources({\n apiKey,\n job,\n sourcesTabJobData,\n setSourcesTabJobData,\n sourceListIds,\n setSourceListIds,\n setIsEdited\n}: {\n apiKey: string;\n job: IJob;\n setIsEdited: Dispatch<SetStateAction<boolean>>;\n}) {\n const [sourceOptions, setSourceOptions] = useState([]);\n const [selectedType, setSelectedType] = useState();\n const [selectedCountry, setSelectedCountry] = useState();\n const [selectedSource, setSelectedSource] = useState();\n\n const getSourceOptions = useCallback(async () => {\n setSourceOptions([]);\n try {\n const response = await fetch(\n `/api/v4/sources?source_type_id=${selectedType?.id}&country_id=${selectedCountry?.id}`,\n {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }\n ).then((response) => response.json());\n setSourceOptions(response.sources);\n } catch (error) {\n console.log(error);\n }\n }, [apiKey, job, selectedType, selectedCountry]);\n\n const handleChange = (e, id: number) => {\n setIsEdited(true);\n const list = sourceListIds;\n\n if (e.target.checked) {\n list.push(id);\n setSourceListIds(list);\n } else {\n const index = list.indexOf(id);\n if (index > -1) {\n list.splice(index, 1);\n setSourceListIds(list);\n }\n }\n };\n\n const addSourceLabel = () => {\n if (!selectedType || !selectedCountry || !selectedSource) return;\n if (!sourceListIds.includes(selectedSource.id)) {\n const tempSources = { ...sourcesTabJobData };\n tempSources.sources.value.push({\n label: `${selectedType.name}/${selectedCountry.name}/${selectedSource.name}`,\n id: selectedSource.id\n });\n setSourcesTabJobData(tempSources);\n setSourceListIds([...sourceListIds, selectedSource.id]);\n }\n };\n\n useEffect(() => {\n getSourceOptions();\n }, [getSourceOptions]);\n\n const sourcesData = sourcesTabJobData?.sources?.value;\n const sortedSourcesData = sourcesData.sort((a, b) =>\n a.label > b.label ? 1 : b.label > a.label ? -1 : 0\n );\n\n return (\n <Box sx={classes.tabContent}>\n <Box id=\"sources-title\" data-testid=\"sources-title\" sx={classes.headerContent}>\n Sources\n </Box>\n <Box sx={classes.bodyContainer}>\n {sourcesData &&\n sortedSourcesData.map((source, index) => (\n <FormControlLabel\n key={index}\n control={\n <Checkbox\n sx={{ ...classes.checkbox, marginLeft: 1 }}\n onChange={(e) => handleChange(e, source.id)}\n defaultChecked={sourceListIds.includes(source.id)}\n />\n }\n label={source.label}\n sx={classes.label}\n />\n ))}\n </Box>\n <Box sx={classes.selectGroup}>\n <Autocomplete\n disablePortal\n options={SourceTypes}\n filterSelectedOptions={true}\n getOptionLabel={(option) => `${option.name}`}\n id=\"source-type\"\n data-testid=\"source-type\"\n value={selectedType || { name: '' }}\n onChange={(event, value) => {\n setSelectedType(value);\n setSelectedCountry(null);\n setSelectedSource(null);\n setIsEdited(true);\n }}\n sx={{ width: '190px', ...sharedClasses.formAutocomplete, marginTop: '35px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Source type\" InputLabelProps={{ shrink: true }} />\n )}\n renderOption={(props, option, state) => {\n return (\n <li {...props} key={option.id} data-testid={`option-${state.index}`}>\n {option.name}\n </li>\n );\n }}\n />\n <Autocomplete\n disablePortal\n options={countries}\n filterSelectedOptions={true}\n getOptionLabel={(option) => `${option.name}`}\n id=\"source-country\"\n data-testid=\"source-country\"\n value={selectedCountry || { name: '' }}\n onChange={(event, value) => {\n setSelectedCountry(value);\n setSelectedSource(null);\n }}\n sx={{\n width: '190px',\n ...sharedClasses.formAutocomplete,\n marginTop: '35px',\n display: selectedType ? '' : 'none'\n }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Country\" InputLabelProps={{ shrink: true }} />\n )}\n renderOption={(props, option, state) => {\n return (\n <li {...props} key={option.id} data-testid={`option-${state.index}`}>\n {option.name}\n </li>\n );\n }}\n />\n <Autocomplete\n disablePortal\n options={sourceOptions.sort((a, b) =>\n a.name.toLowerCase().replace(/[^a-z]/g, '') >\n b.name.toLowerCase().replace(/[^a-z]/g, '')\n ? 1\n : -1\n )}\n filterSelectedOptions={true}\n loading={sourceOptions.length < 1}\n getOptionLabel={(option) => `${option.name}`}\n id=\"source-name\"\n value={selectedSource || { name: '' }}\n onChange={(event, value) => setSelectedSource(value)}\n sx={{\n width: '290px',\n ...sharedClasses.formAutocomplete,\n marginTop: '35px',\n display: selectedCountry && selectedType ? '' : 'none'\n }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Source\" InputLabelProps={{ shrink: true }} />\n )}\n />\n </Box>\n <Button\n id=\"add-source-button\"\n sx={classes.addSourceButton}\n onClick={() => addSourceLabel()}\n disabled={!selectedSource}\n >\n Add source\n </Button>\n </Box>\n );\n}\n","import React from 'react';\n\nexport default function SourcesIconSVG() {\nreturn (<svg id=\"MDI_bullhorn-outline\" data-name=\"MDI / bullhorn-outline\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\">\n<g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" stroke-width=\"1\" opacity=\"0\">\n <rect width=\"24\" height=\"24\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" fill=\"none\"/>\n</g>\n<path id=\"Path_bullhorn-outline\" data-name=\"Path / bullhorn-outline\" d=\"M12.784,8.314H4.157A2.157,2.157,0,0,0,2,10.471v4.314a2.157,2.157,0,0,0,2.157,2.157H5.235v4.314a1.078,1.078,0,0,0,1.078,1.078H8.471a1.078,1.078,0,0,0,1.078-1.078V16.941h3.235l5.392,4.314V4L12.784,8.314m3.235,8.2-2.157-1.725H4.157V10.471h9.706L16.02,8.745V16.51m7.01-3.882a4.763,4.763,0,0,1-2.7,4.314V8.314A4.805,4.805,0,0,1,23.029,12.627Z\" transform=\"translate(-0.515 -1.167)\" fill=\"#084d6d\"/>\n</svg>)\n}\n","import React, { Dispatch, SetStateAction, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport { IJob } from '../../Job/types';\nimport { classes } from '../styles';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport { MultilineFormTextField } from '../../Components/CustomUIElements/FormTextField';\n\nexport default function Template({\n apiKey,\n job,\n templateTabJobData,\n setTemplateTabJobData,\n setIsEdited\n}: {\n apiKey: string;\n job: IJob;\n setIsEdited: Dispatch<SetStateAction<boolean>>;\n}) {\n\n const templateRef = useRef<HTMLInputElement>(null);\n\n return (\n <Box sx={classes.tabContent}>\n <Box id=\"template-title\" sx={classes.headerContent}>\n Template\n </Box>\n <Box sx={classes.bodyContainer}>\n <FormControlLabel\n control={\n <Checkbox\n sx={classes.checkbox}\n onChange={(event, value) => {\n setTemplateTabJobData((prev) => ({\n ...prev,\n template_enabled: value\n }))\n setIsEdited(true);\n }}\n value={templateTabJobData?.template_enabled}\n defaultChecked={templateTabJobData?.template_enabled}\n name={''}\n />\n }\n label={'Use separate template to current entity/EO skin'}\n sx={classes.label}\n />\n {templateTabJobData.template_enabled && (\n <>\n <Box sx={classes.text}>Add code below to use a different template</Box>\n <Box sx={classes.modalFormLine}>\n <MultilineFormTextField\n value={templateTabJobData?.template?.value}\n onChange={(e) => {\n setTemplateTabJobData((prev) => ({\n ...prev,\n template: { ...prev.template, value: e.target.value }\n }));\n setIsEdited(true);\n }}\n rows={20}\n innerRef={templateRef}\n required={false}\n />\n </Box>\n </>\n )}\n </Box>\n </Box>\n );\n}\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport EditJob from './EditJob';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\nexport interface IEditJobProps {\n aiInterview: boolean;\n aiStudio: boolean;\n aiStudioSummaries: boolean;\n apiKey: string;\n job_id: number;\n userTimeZone: string;\n jobFeedActive: boolean;\n canAddIndeedDemographicQ: boolean;\n}\n\nexport default function EditJobPage({\n aiInterview,\n aiStudio,\n aiStudioSummaries,\n apiKey,\n job_id,\n userTimeZone,\n jobFeedActive,\n canAddIndeedDemographicQ\n}: IEditJobProps) {\n return (\n <QueryClientProvider client={queryClient}>\n <EditJob {...{aiInterview, aiStudio, aiStudioSummaries, apiKey, job_id, userTimeZone, jobFeedActive, canAddIndeedDemographicQ }} />\n </QueryClientProvider>\n );\n}","import React from 'react';\nimport { Skeleton, TableRow, TableCell, TableBody } from '@mui/material';\n\nexport default function SkeletonTable({ rows, cols }) {\n return (\n <TableBody>\n {Array.from(new Array(rows)).map((_row, i) => (\n <TableRow key={i}>\n {Array.from(new Array(cols)).map((_cell, j) => (\n <TableCell key={j}>\n <Skeleton width={'80%'} height={'30px'} />\n </TableCell>\n ))}\n </TableRow>\n ))}\n </TableBody>\n );\n}\n","import React, { ReactElement, useCallback, useEffect, useRef, useState } from 'react';\nimport CloseIcon from '@mui/icons-material/Close';\nimport {\n Autocomplete,\n Box,\n Button,\n CircularProgress,\n FormControl,\n InputLabel,\n Modal,\n TextField\n} from '@mui/material';\nimport moment from 'moment';\n\nimport {\n FormTextField,\n MultilineFormTextField\n} from '../../../Components/CustomUIElements/FormTextField';\nimport { SingleDateTimePicker } from '../../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport StyledSnackbar from '../../../Components/CustomUIElements/StyledSnackbar';\nimport FormSelectWithIconField from '../../../Components/CustomUIElements/FormSelectWithIconField';\n\nimport Api from '../../API';\n\nimport { IJobsForTask, IApplicationsForTask } from '../../types';\nimport { IAssignedUserOptionsType } from '../../../Jobs/types';\n\nimport { classes } from './styles';\nimport { useJobsForTask } from '../../../hooks/useJobsForTask';\nimport { useApplicationsForTask } from '../../../hooks/useApplicationsForTask';\n\nconst priorities = [\n { label: 'Low', value: 'Low', color: '#8CCF95' },\n { label: 'Normal', value: 'Normal', color: '#E6A052' },\n { label: 'High', value: 'High', color: '#E37D7A' }\n];\n\nexport default function AddTasks({\n apiKey,\n jobId,\n setActionsAnchorEl,\n buttonElement,\n isDashboard,\n refetch\n}: {\n apiKey: string;\n jobId?: number;\n setActionsAnchorEl?: (value: null) => void;\n buttonElement?: ReactElement;\n isDashboard: boolean;\n refetch?: () => void;\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [selectedJob, setSelectedJob] = useState<IJobsForTask>();\n const [selectedApplicant, setSelectedApplicant] = useState<IApplicationsForTask>();\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [hasError, setHasError] = useState(false);\n const [date, setDate] = useState(moment().toDate());\n const [subject, setSubject] = useState('');\n const [note, setNote] = useState('');\n const [assignedUserOptions, setAssignedUserOptions] = useState<IAssignedUserOptionsType[] | []>(\n []\n );\n const [priority, setPriority] = useState({\n label: 'Low',\n value: 'Low',\n color: '#8CCF95'\n });\n const [assignTo, setAssignTo] = useState<IAssignedUserOptionsType | null>(null);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n\n const fieldRefs = {\n subject: useRef<HTMLInputElement>(null),\n note: useRef<HTMLInputElement>(null),\n date: useRef<HTMLInputElement>(null),\n priority: useRef<HTMLInputElement>(null),\n assignTo: useRef<HTMLInputElement>(null)\n };\n\n const { fetchJobs, jobs } = useJobsForTask();\n const { fetchApplications, applications } = useApplicationsForTask();\n\n const fetchCreateFormData = useCallback(async () => {\n const response = await Api.getTask({ 'X-api-authenticate': apiKey });\n setAssignedUserOptions(response?.assignable_users);\n }, [apiKey]);\n\n function dateIsValid(date: Date) {\n return date instanceof Date;\n }\n\n useEffect(() => {\n (async () => {\n setIsLoading(true);\n try {\n await Promise.all([fetchCreateFormData()]);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n })();\n }, [fetchCreateFormData]);\n\n useEffect(() => {\n if (selectedJob) {\n fetchApplications(selectedJob.id);\n }\n }, [selectedJob]);\n\n function getPriority(value: string) {\n switch (value) {\n case 'Low':\n return 1;\n case 'Normal':\n return 0;\n default:\n return -1;\n }\n }\n\n function getNewTaskId(): { job_id: number } | { application_id: number } | undefined {\n if (!isDashboard && jobId) {\n return { job_id: jobId };\n }\n if (selectedJob && selectedApplicant) {\n return { application_id: selectedApplicant.id };\n }\n if (selectedJob && !selectedApplicant) {\n return { job_id: selectedJob.id };\n }\n return undefined;\n }\n\n const createNewTask = async () => {\n if (subject && note && assignTo && priority) {\n if (dateIsValid(new Date(date))) {\n setHasError(false);\n } else return setHasError(true);\n } else {\n let firstError: keyof typeof fieldRefs | undefined = undefined;\n if (!assignTo) firstError = 'assignTo';\n if (!priority) firstError = 'priority';\n if (!note) firstError = 'note';\n if (!subject) firstError = 'subject';\n firstError &&\n fieldRefs[firstError]?.current?.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n return setHasError(true);\n }\n\n try {\n await Api.newTask(\n { 'X-api-authenticate': apiKey },\n {\n task: {\n subject: subject,\n note: note,\n due_at: date.toString(),\n priority: getPriority(priority.value),\n user_id: assignTo.id\n }\n },\n getNewTaskId()\n );\n setSnackbar({\n message: 'Your Task was created',\n state: 'success'\n });\n refetch && refetch();\n setSubject('');\n setNote('');\n setIsDialogOpen(false);\n } catch (error) {\n setSnackbar({\n message: 'There was an error adding a task. Please try again.',\n state: 'error'\n });\n } finally {\n !!setActionsAnchorEl && setActionsAnchorEl(null);\n setIsLoading(false);\n handleClose();\n }\n };\n\n const handleOpenDialog = () => {\n // Passively loading on click\n fetchCreateFormData();\n fetchJobs();\n setIsDialogOpen(true);\n };\n\n function handleClose() {\n setSelectedApplicant(undefined);\n setSelectedJob(undefined);\n setDate(moment().toDate());\n setAssignTo(null);\n setSubject('');\n setNote('');\n setIsDialogOpen(false);\n }\n\n return (\n <Box>\n <Box onClick={handleOpenDialog} id=\"add-task-job-button\">\n {buttonElement || 'Add Task'}\n </Box>\n <Modal open={isDialogOpen} aria-labelledby=\"modal-modal-title\" onClose={handleClose}>\n <Box sx={classes.modalContent}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box id=\"modal-modal-title\" sx={classes.modalTitle}>\n Add task\n </Box>\n <Box sx={{ marginTop: '30px', display: 'grid', overflow: 'auto' }}>\n {isDashboard && (\n <Box sx={classes.modalFormLine} pt={3}>\n <Autocomplete\n disablePortal\n options={jobs}\n ref={fieldRefs.assignTo}\n getOptionLabel={(option) => `${option.id} - ${option.title}`}\n id=\"add-task-select-job\"\n value={selectedJob}\n onChange={(_event, value) => setSelectedJob(value || undefined)}\n sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Select Job\" InputLabelProps={{ shrink: true }} />\n )}\n />\n {selectedJob?.id && applications && (\n <Autocomplete\n disablePortal\n options={applications}\n ref={fieldRefs.assignTo}\n getOptionLabel={(option) => `${option.id} - ${option.name}`}\n id=\"add-task-assign-to-candidate\"\n value={selectedApplicant}\n onChange={(_event, value) => setSelectedApplicant(value || undefined)}\n sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Assign to candidate\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n />\n )}\n </Box>\n )}\n <Box sx={classes.modalFormLine}>\n <FormTextField\n value={subject}\n onChange={(e) => setSubject(e.target.value)}\n styles={{ width: '290px' }}\n error={!subject && hasError ? 'This field is required' : ''}\n innerRef={fieldRefs.subject}\n label={'Subject'}\n />\n </Box>\n <Box sx={classes.modalFormLine}>\n <MultilineFormTextField\n value={note}\n onChange={(e) => setNote(e.target.value)}\n styles={{ width: '450px', marginTop: '20px' }}\n rows={6}\n error={!note && hasError ? 'This field is required' : ''}\n innerRef={fieldRefs.note}\n label={'Note'}\n />\n </Box>\n <Box sx={classes.modalFormLine}>\n <FormControl variant=\"standard\">\n <InputLabel shrink htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n Date\n </InputLabel>\n <SingleDateTimePicker\n value={date}\n minDate={moment().toDate()}\n inputStyles={classes.datePicker}\n pickerStyles={classes.calendar}\n onChange={(date) => setDate(moment(date).toDate())}\n />\n </FormControl>\n <FormSelectWithIconField\n options={priorities}\n defaultValue=\"Low\"\n onChange={(value) => setPriority(priorities.filter((p) => p.label === value)[0])}\n label={'Priority'}\n styles={{\n width: '290px',\n '& .MuiSvgIcon-root': { color: priority.color }\n }}\n />\n </Box>\n <Box sx={{ marginTop: '1.75rem' }}>\n {!isLoading || assignedUserOptions ? (\n <Box sx={classes.modalFormLine}>\n <Box sx={{ position: 'relative' }}>\n <Autocomplete\n disablePortal\n options={assignedUserOptions}\n ref={fieldRefs.assignTo}\n getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n id=\"state-region-province\"\n value={assignTo}\n onChange={(_event, value) => setAssignTo(value)}\n sx={{\n width: '290px',\n ...sharedClasses.formAutocomplete\n }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Assign to user\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n />\n {!assignTo && hasError && (\n <Box sx={{ ...sharedClasses.errorBox }}>This field is required</Box>\n )}\n </Box>\n </Box>\n ) : (\n <CircularProgress size={20} color=\"inherit\" />\n )}\n </Box>\n </Box>\n <Box sx={classes.modalActions}>\n <Button\n disableElevation\n sx={{ ...classes.buttonRedLight }}\n variant=\"text\"\n onClick={() => {\n setIsDialogOpen(false);\n !!setActionsAnchorEl && setActionsAnchorEl(null);\n }}\n >\n Cancel\n </Button>\n <Button sx={classes.revertloadButton} onClick={() => createNewTask()}>\n Submit\n </Button>\n </Box>\n </Box>\n </Modal>\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { useState, useCallback, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport Popover from '@mui/material/Popover';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport SortIcon from '@mui/icons-material/Sort';\nimport { classes } from './styles';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\ninterface ICandidates {\n id: number;\n application_id: number;\n name: string;\n status: string;\n export_status: string;\n upload_time: string;\n exported_successfully: boolean;\n exported_confirmation_time: string;\n}\n\nexport default function CeridianDayforce({\n apiKey,\n jobId,\n setSnackbar,\n setActionsAnchorEl\n}: {\n apiKey: string;\n jobId: number;\n setActionsAnchorEl: (value: null) => void;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [candidates, setCandidates] = useState<ICandidates[]>([]);\n const [enabled, setEnabled] = useState(false);\n const [status, setStatus] = useState('');\n const [retryLoading, setRetryLoading] = useState(-1);\n const [filterAnchorEl, setFilterAnchorEl] = useState<null | HTMLElement>(null);\n\n const entityUsesCeridian = useCallback(async () => {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/ceridian_dayforce_uploads/entity_is_configured`,\n {\n method: 'GET',\n headers: {\n 'x-api-authenticate': apiKey\n }\n }\n );\n const { entity_is_configured } = await response.json();\n setEnabled(entity_is_configured);\n }, [apiKey, jobId]);\n\n const getCandidates = useCallback(\n async (selectedStatus?: string) => {\n setIsLoading(true);\n try {\n const response = await fetch(\n `/api/v4/jobs/${jobId}/ceridian_dayforce_uploads${\n selectedStatus ? '?filter[status]=' + selectedStatus : ''\n }`,\n {\n method: 'GET',\n headers: {\n 'x-api-authenticate': apiKey\n }\n }\n );\n const { candidates } = await response.json();\n setCandidates(candidates);\n } catch (error) {\n setSnackbar({\n message: 'Error fetching ceridian dayforce candidates',\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n },\n [apiKey, jobId, setSnackbar]\n );\n\n const handleRetryUpload = async (id: number) => {\n setRetryLoading(id);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/ceridian_dayforce_uploads?id=${id}`, {\n method: 'POST',\n headers: {\n 'x-api-authenticate': apiKey\n }\n });\n if (response.ok) {\n setSnackbar({\n message: 'Application is being uploaded to Ceridian Dayforce',\n state: 'success'\n });\n } else {\n setSnackbar({\n message: 'Error retrying failed upload',\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbar({\n message: 'Error retrying failed upload',\n state: 'error'\n });\n } finally {\n setRetryLoading(-1);\n }\n };\n\n const handleFilter = (selected: string) => {\n if (selected !== status) {\n getCandidates(selected);\n setStatus(selected);\n }\n setFilterAnchorEl(null);\n };\n\n const getStatusText = {\n Processing: 'Processing',\n Pending: 'Pending',\n failed_file_renaming: 'Failed',\n upload_confirmed: 'Successful',\n uploading_failed: 'Failed uploads'\n };\n\n useEffect(() => {\n if (isDialogOpen) {\n getCandidates();\n } else {\n entityUsesCeridian();\n }\n }, [entityUsesCeridian, getCandidates, isDialogOpen]);\n\n if (!enabled) {\n return null;\n } else {\n return (\n <>\n <span>\n <Box\n onClick={() => {\n setIsDialogOpen(true);\n }}\n >\n Ceridian Dayforce\n </Box>\n </span>\n <Modal\n open={isDialogOpen}\n aria-labelledby=\"modal-modal-title\"\n onClose={() => setIsDialogOpen(false)}\n >\n <Box sx={classes.modalContent}>\n <CloseIcon onClick={() => setIsDialogOpen(false)} sx={classes.closeIcon} />\n <Box id=\"modal-modal-title\" sx={classes.modalTitle}>\n Ceridian Dayforce\n </Box>\n <Box sx={classes.filterContainer}>\n <Button\n sx={classes.filterButton}\n startIcon={<SortIcon sx={{ marginRight: '8px' }} />}\n onClick={(e) => setFilterAnchorEl(e.currentTarget)}\n >\n {status ? getStatusText[status as keyof typeof getStatusText] : 'Upload Status'}\n </Button>\n <Popover\n id=\"filter-menu-popover\"\n sx={classes.filterMenu}\n open={Boolean(filterAnchorEl)}\n anchorEl={filterAnchorEl}\n onClose={() => {\n setFilterAnchorEl(null);\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n >\n {status !== 'uploading_failed' && (\n <span onClick={() => handleFilter('uploading_failed')}>Failed uploads</span>\n )}\n {status !== 'Processing' && (\n <span onClick={() => handleFilter('Processing')}>Processing</span>\n )}\n {status !== 'upload_confirmed' && (\n <span onClick={() => handleFilter('upload_confirmed')}>Successful</span>\n )}\n {status !== 'failed_file_renaming' && (\n <span onClick={() => handleFilter('failed_file_renaming')}>Failed</span>\n )}\n {status !== 'Pending' && (\n <span onClick={() => handleFilter('Pending')}>Pending</span>\n )}\n {status && <span onClick={() => handleFilter('')}>Clear filter</span>}\n </Popover>\n </Box>\n {!isLoading ? (\n candidates.length > 0 ? (\n <Box sx={classes.tableContainer}>\n <TableContainer>\n <Table sx={classes.table}>\n <TableHead>\n <TableRow>\n <TableCell sx={{ ...classes.sticky, width: '125px' }}>\n Application ID\n </TableCell>\n <TableCell sx={{ ...classes.sticky, left: '124.5px' }}>\n Canidate Name\n </TableCell>\n <TableCell>Status</TableCell>\n <TableCell>Export Status</TableCell>\n <TableCell>Upload Time</TableCell>\n <TableCell>Exported Successfully</TableCell>\n <TableCell>Export Confirmation Time</TableCell>\n <TableCell sx={classes.stickyRight}>Actions</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {candidates.map((candidate) => (\n <TableRow key={candidate.application_id}>\n <TableCell\n sx={{ ...classes.sticky, width: '125px' }}\n component=\"th\"\n scope=\"row\"\n >\n {candidate.id ? candidate.id : '-'}\n </TableCell>\n <TableCell sx={{ ...classes.sticky, left: '124.5px' }}>\n {candidate.name ? candidate.name : '-'}\n </TableCell>\n <TableCell>{candidate.status ? candidate.status : '-'}</TableCell>\n <TableCell>\n {candidate.export_status ? candidate.export_status : '-'}\n </TableCell>\n <TableCell>{candidate.upload_time ?? '-'}</TableCell>\n <TableCell\n sx={\n candidate.exported_successfully\n ? { color: theme.palette.success.main }\n : { color: theme.palette.error.main }\n }\n >\n {candidate.exported_successfully ? 'True' : 'False'}\n </TableCell>\n <TableCell>{candidate.exported_confirmation_time ?? '-'}</TableCell>\n <TableCell\n sx={{ ...classes.stickyRight, ...classes.clickable }}\n onClick={() => handleRetryUpload(candidate.id)}\n >\n {retryLoading === candidate.id ? (\n <CircularProgress size={15} sx={{ marginLeft: '16px' }} />\n ) : (\n 'Retry upload'\n )}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n </Box>\n ) : (\n <Box sx={classes.noCandidateContainer}>\n {`No candidates${\n status ? ' matching your status filter ' : ' '\n }have been exported to Ceridian Dayforce`}\n </Box>\n )\n ) : (\n <Box sx={classes.loadingContainer}>\n <CircularProgress size={32} />\n </Box>\n )}\n <Box sx={classes.modalActions}>\n <Button\n sx={classes.revertloadButton}\n onClick={() => {\n setIsDialogOpen(false);\n setActionsAnchorEl(null);\n }}\n >\n Close\n </Button>\n </Box>\n </Box>\n </Modal>\n </>\n );\n }\n}\n","import React, { useState, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport Api from '../../API';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { classes } from './styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\n\nexport default function MoveJob({\n apiKey,\n jobId,\n entity,\n fetchJobs,\n setSnackbarState,\n setActionsAnchorEl\n}: {\n apiKey: string;\n entity: string | undefined;\n jobId: number;\n fetchJobs: () => void;\n setActionsAnchorEl: (value: null) => void;\n setSnackbarState: StyledSnackbarProps['setSnackBarState'];\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [hasError, setHasError] = useState(false);\n const [assignedMoveOptions, setMoveJobOptions] = useState<string[] | null>(null);\n const [moveTo, setMoveTo] = useState(null);\n\n const fetchMoveJobData = useCallback(async () => {\n setIsLoading(true);\n try {\n const data = await Api.getMoveJobs({ 'X-api-authenticate': apiKey }, jobId);\n setMoveJobOptions(data?.entities.map((a) => `${a.id} - ${a.name}`));\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, jobId]);\n\n const moveJob = async () => {\n if (moveTo) {\n if (typeof moveTo !== 'string') return setHasError(true);\n else setHasError(false);\n } else return setHasError(true);\n try {\n const entityId = moveTo.split(' -')[0];\n await Api.moveJob({ 'X-api-authenticate': apiKey }, jobId, entityId);\n setSnackbarState({\n message: 'Your job has been moved',\n state: 'success'\n });\n setMoveTo(null);\n setIsDialogOpen(false);\n setActionsAnchorEl(null);\n fetchJobs();\n } catch (error) {\n setSnackbarState({\n message: 'There was an error moving the job. Please try again.',\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n }\n };\n\n function setValue(value: string) {\n setMoveTo(value);\n }\n\n return (\n <Box>\n <Box\n onClick={() => {\n setIsDialogOpen(true);\n !assignedMoveOptions && fetchMoveJobData();\n }}\n id=\"move-job-button\"\n >\n Move Job\n </Box>\n <Modal\n open={isDialogOpen}\n aria-labelledby=\"modal-modal-title\"\n onClose={() => setIsDialogOpen(false)}\n >\n <Box sx={classes.modalContent}>\n <CloseIcon onClick={() => setIsDialogOpen(false)} sx={classes.closeIcon} />\n <Box id=\"modal-modal-title\" sx={classes.modalTitle}>\n Move Job\n </Box>\n <Box sx={{ marginTop: '1rem', display: 'grid' }}>\n <Box sx={classes.subTitle}>Current entity: </Box>\n <Box sx={{ margin: '0.75rem 0' }}>{entity}</Box>\n <Box sx={{ marginTop: '2.25rem' }}>\n {assignedMoveOptions ? (\n <Box sx={{ marginTop: '1rem' }}>\n {!isLoading ? (\n <Box sx={classes.modalFormLine}>\n <Virtualize\n value={moveTo}\n passOptions={assignedMoveOptions}\n setValue={setValue}\n passedStyles={{ width: '460px', ...sharedClasses.formAutocomplete }}\n errorStyles={{ ...sharedClasses.errorBox, top: '-24px', right: '0px' }}\n error={!moveTo && hasError}\n label=\"Move to\"\n />\n </Box>\n ) : (\n <CircularProgress size={20} color=\"inherit\" />\n )}\n </Box>\n ) : (\n <Box>\n {isLoading ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n <Box sx={classes.noEntitys}>No Entities are available</Box>\n )}\n </Box>\n )}\n </Box>\n </Box>\n <Box sx={classes.modalActions}>\n <Button\n disableElevation\n sx={{ ...classes.buttonRedLight }}\n variant=\"text\"\n onClick={() => {\n setIsDialogOpen(false);\n setActionsAnchorEl(null);\n }}\n >\n Cancel\n </Button>\n <Button sx={classes.revertloadButton} onClick={() => moveJob()}>\n Submit\n </Button>\n </Box>\n </Box>\n </Modal>\n </Box>\n );\n}\n","import React, { useEffect, useState, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Api from '../../API';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport DeleteIcon from '@material-ui/icons/Delete';\nimport { classes } from './styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\n\nexport default function RatingSet({\n apiKey,\n jobId,\n setSnackbarState,\n setActionsAnchorEl\n}: {\n apiKey: string;\n jobId: number;\n setActionsAnchorEl: (value: null) => void;\n setSnackbarState: StyledSnackbarProps['setSnackBarState'];\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [deleteBulk, setDeleteBulk] = useState(false);\n const [ratingOptions, setRatingOptions] = useState(null);\n const [raterOptions, setRaterOptions] = useState(null);\n const [raterName, setRaterName] = useState(null);\n const [hasError, setHasError] = useState(false);\n const [deleteUserConfirm, setDeleteUserConfirm] = useState(null);\n\n const fetchRatingData = useCallback(async () => {\n setIsLoading(true)\n try {\n const [ratingSets, raters] = await Promise.all([\n Api.getRatingSets({ 'X-api-authenticate': apiKey }, jobId),\n Api.getRaters({ 'X-api-authenticate': apiKey }, jobId),\n ]);\n ratingSets?.data?.rating_sets && setRatingOptions(ratingSets?.data?.rating_sets);\n raters?.data && setRaterOptions(raters?.data);\n setIsLoading(false);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, jobId]);\n\n const deleteSet = async (id: number) => {\n try {\n await Api.deleteRatingSet({ 'X-api-authenticate': apiKey },\n jobId,\n id,\n );\n setSnackbarState({\n message:\n 'Rating set has been removed',\n state: 'success'\n });\n } catch (error) {\n setSnackbarState({\n message: 'There was an error removing a rating set. Please try again.',\n state: 'error'\n });\n } finally {\n setRatingOptions(null);\n setIsDialogOpen(false);\n setActionsAnchorEl(null);\n setDeleteUserConfirm(null);\n setIsLoading(false);\n }\n };\n\n const deleteRaters = async () => {\n setIsLoading(true);\n if (!raterName) {\n setHasError(true);\n return;\n } else setHasError(false);\n try {\n await Api.deleteRaterSet({ 'X-api-authenticate': apiKey },\n jobId,\n raterName.id\n );\n setSnackbarState({\n message:\n `Rating sets have been removed from ${raterName.firstname} ${raterName.lastname}.`,\n state: 'success'\n });\n setRaterName(null);\n setDeleteBulk(false);\n } catch (error) {\n setSnackbarState({\n message: 'There was an error removing a workflow. Please try again.',\n state: 'error'\n });\n } finally {\n setRatingOptions(null);\n setActionsAnchorEl(null);\n setIsDialogOpen(false);\n setIsLoading(false);\n }\n };\n\n return (\n <Box>\n <Box \n onClick={() => {\n !ratingOptions && fetchRatingData();\n setIsDialogOpen(true);\n }}\n id=\"rating-sets-job-button\"\n >\n Rating Sets\n </Box>\n <Modal \n open={isDialogOpen} \n aria-labelledby=\"modal-modal-title\"\n onClose={() => {\n setIsDialogOpen(false);\n setDeleteBulk(false);\n }}\n >\n\n <Box sx={classes.modalContent}>\n <CloseIcon \n onClick={() => {\n setIsDialogOpen(false);\n setDeleteBulk(false);\n }} \n sx={classes.closeIcon}\n />\n <Box id=\"modal-modal-title\" sx={classes.modalTitle}>Rating Sets</Box>\n <Box sx={{ margin: '10px 0 15px 0', display: 'grid', overflow: 'auto', minHeight: '300px' }}>\n {ratingOptions && ratingOptions?.length > 0\n ? <Box sx={{ marginTop: '1rem' }}>\n {!isLoading\n ? <Box sx={classes.modalFormLine}>\n {deleteBulk \n ? <Box>\n <Box sx={{ position: 'relative' }}>\n <Autocomplete\n disablePortal\n options={raterOptions}\n getOptionLabel={(option) => `${option.firstname} ${option.lastname}`}\n id=\"state-region-province\"\n value={raterName}\n onChange={(event, value) => setRaterName(value)}\n sx={{ width: '290px', ...sharedClasses.formAutocomplete, marginTop: '35px'}}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Rater name\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n />\n {!raterName && hasError && (\n <Box sx={{ ...sharedClasses.errorBox }}>\n This field is required\n </Box>\n )}\n </Box>\n {raterName \n ? <Box sx={{...classes.modalActions, margin: '15px 0 0px 3px'}}>\n <Button\n disableElevation\n sx={classes.buttonGreen}\n variant=\"text\"\n onClick={() => { \n setIsDialogOpen(false);\n setActionsAnchorEl(null);\n }}\n >\n Cancel\n </Button>\n <Button \n sx={{...classes.revertloadButton, backgroundColor: '#D6827D33' }}\n onClick={() => deleteRaters()}\n >\n Delete \n </Button>\n </Box>\n : <span />\n }\n </Box>\n : <Box sx={{ width: '100%' }}>\n {deleteUserConfirm\n ? <Box sx={{ color: '#939393', marginBottom: '1rem' }}>Are you sure you want to delete this rating</Box>\n : <Button\n variant=\"outlined\"\n startIcon={<DeleteIcon />}\n sx={{ ...classes.actionButton, ...classes.deleteApplicant }}\n onClick={() => setDeleteBulk(true)}\n >\n Bulk delete rating set\n </Button>\n }\n {deleteUserConfirm \n ? <Box sx={classes.tableHeader}>\n <Box sx={{ width: '45%' }}>Application</Box>\n <Box sx={{ width: '40%' }}>Rater</Box>\n </Box>\n : <Box sx={classes.tableHeader}>\n <Box sx={{ width: '45%' }}>Application</Box>\n <Box sx={{ width: '40%' }}>Rater</Box>\n <Box>\n <Button\n disableElevation\n disabled\n sx={{ color: '#FFFFFF !Important' }}\n startIcon={<DeleteIcon />}\n />\n </Box>\n </Box>\n }\n {deleteUserConfirm\n ? <Box>\n <Box sx={classes.tableRow}>\n <Box sx={{ width: '45%' }}>{deleteUserConfirm?.application_id} - {deleteUserConfirm?.candidate_name}</Box>\n <Box sx={{ width: '40%' }}>{deleteUserConfirm?.rater_name}</Box>\n </Box>\n <Box sx={{...classes.modalActions, marginTop: '1rem'}}>\n <Button\n disableElevation\n sx={classes.buttonGreen}\n variant=\"text\"\n onClick={() => setDeleteUserConfirm(null)}\n >\n Cancel\n </Button>\n <Button \n sx={{...classes.revertloadButton, backgroundColor: '#D6827D33' }}\n onClick={() => {deleteSet(deleteUserConfirm?.id)}}\n >\n Delete \n </Button>\n </Box>\n </Box>\n : <Box>\n {ratingOptions.map(sets =>\n <Box key={sets.id} sx={classes.tableRow}>\n <Box sx={{ width: '45%' }}>{sets.application_id} - {sets.candidate_name}</Box>\n <Box sx={{ width: '40%' }}>{sets.rater_name}</Box>\n <Box onClick={() => {\n setDeleteUserConfirm(sets);\n \n }}\n >\n <Button\n disableElevation\n sx={{ ...classes.buttonRed, width: '1rem' }}\n startIcon={<DeleteIcon />}\n />\n </Box>\n </Box>\n )\n }\n </Box>\n }\n </Box>\n }\n </Box>\n : <CircularProgress size={20} color=\"inherit\" />\n }\n </Box>\n : <Box>\n {isLoading\n ? <CircularProgress size={20} color=\"inherit\" />\n : <Box sx={classes.noWorkflows}>No Rating sets have been created</Box>\n }\n </Box>\n }\n </Box>\n </Box>\n </Modal>\n </Box>\n );\n}\n","import React, { useState, useCallback, useEffect } from 'react';\nimport Box from '@mui/material/Box';\nimport Slider from '@mui/material/Slider';\nimport Tooltip from '@mui/material/Tooltip';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport moment from 'moment-timezone';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport BusinessCenterIcon from '@mui/icons-material/BusinessCenter';\nimport Api from '../../API';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ExpandLessIcon from '@mui/icons-material/ExpandLess';\nimport { IRevision, ISnackBarMessage } from '../../types';\nimport { classes } from './styles';\n\nexport default function Revisions({\n apiKey,\n jobId,\n fetchJobs,\n setSnackbar,\n setActionsAnchorEl,\n userTimeZone\n}: {\n apiKey: string;\n jobId: number;\n fetchJobs: () => void;\n setActionsAnchorEl: (value: null) => void;\n setSnackbar: ({ message, state }: ISnackBarMessage) => void;\n userTimeZone: string;\n}) {\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const [isLoading, setIsLoading] = useState(false);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [openContent, setOpenContent] = useState('');\n const [versionNumber, setVersionNumber] = useState<number | null>(null);\n const [revisions, setRevisions] = useState<IRevision[] | null>(null);\n const [disableButton, setDisableButton] = useState<boolean>(false);\n\n const handleChange = (event: Event, newValue: number) => {\n setVersionNumber(newValue);\n };\n\n const createNewVersion = async () => {\n try {\n await Api.revertRevision({ 'X-api-authenticate': apiKey }, jobId, versionNumber);\n fetchJobs();\n setIsDialogOpen(false);\n fetchRevision();\n setOpenContent('');\n setActionsAnchorEl(null);\n setSnackbar({\n message: 'Your version was successful changed',\n state: 'success'\n });\n } catch (error) {\n setSnackbar({\n message: 'There was an error changing the version. Please try again.',\n state: 'error'\n });\n setIsDialogOpen(false);\n } finally {\n setIsLoading(false);\n }\n };\n\n const ticked = ['unchecked', 'checked'];\n\n const renderTableData = (field, value) => {\n const timestamp = value.timestamp\n ? moment.tz(value.timestamp, userTimeZone || timeZoneString).format('DD MMM YYYY, h:mma z')\n : '';\n switch (field) {\n case 'expires_at':\n case 'status_changed_at':\n return (\n <span>\n <Box sx={classes.revisionsVersionsContent}>\n <Box\n sx={classes.revisionsVersionsContentBlue}\n onClick={() =>\n window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n }\n >\n {value.editor}\n </Box>\n <Box sx={{ paddingLeft: '2.5px' }}>\n <Box sx={{ display: 'flex' }}>\n changed {field} from\n <Box sx={classes.optionsText}>\n {value.change_from ? moment(value.change_from).format('D MMM YYYY') : '-'}\n </Box>\n to{' '}\n <Box sx={classes.optionsText}>\n {value.change_to ? moment(value.change_to).format('D MMM YYYY') : '-'}{' '}\n </Box>\n <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n </Box>\n </Box>\n </Box>\n </span>\n );\n case 'options':\n return (\n <span>\n <Box sx={classes.revisionsVersionsContentDescription}>\n <Box style={{ display: 'flex' }}>\n <Box\n sx={classes.revisionsVersionsContentBlue}\n onClick={() =>\n window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n }\n >\n {value.editor}\n </Box>\n <Box sx={{ paddingLeft: '2.5px' }}>\n <span>added new {field}</span>\n <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n </Box>\n </Box>\n <span\n onClick={() =>\n setOpenContent(field === '' ? field : field === openContent ? '' : field)\n }\n >\n Show\n {openContent === field ? (\n <ExpandLessIcon sx={{ color: '#939393' }} fontSize=\"small\" />\n ) : (\n <ExpandMoreIcon sx={{ color: '#939393' }} fontSize=\"small\" />\n )}\n </span>\n {openContent === field ? (\n <Box sx={{ marginTop: '0.5rem' }}>\n {!!value.change_from.blind_rating && (\n <div style={{ display: 'flex' }}>\n Blind rating changed from\n <Box sx={classes.optionsText}>\n {value.change_from.blind_rating\n ? ticked[value.change_from.blind_rating]\n : '-'}\n </Box>\n to <Box sx={classes.optionsText}>{ticked[value.change_to.blind_rating]}</Box>\n </div>\n )}\n {!!value.change_from.hide_rating_activity && (\n <div style={{ display: 'flex' }}>\n Hide rating activity rating changed from\n <Box sx={classes.optionsText}>\n {value.change_from.hide_rating_activity\n ? ticked[value.change_from.hide_rating_activity]\n : '-'}\n </Box>\n to{' '}\n <Box sx={classes.optionsText}>\n {ticked[value.change_to.hide_rating_activity]}\n </Box>\n </div>\n )}\n {!!value.change_from.auto_ratings && (\n <div style={{ display: 'flex' }}>\n Auto ratings rating changed from\n <Box sx={classes.optionsText}>\n {value.change_from.auto_ratings\n ? ticked[value.change_from.auto_ratings]\n : '-'}\n </Box>\n to <Box sx={classes.optionsText}>{ticked[value.change_to.auto_ratings]}</Box>\n </div>\n )}\n {!!value.change_from.title_field && (\n <div style={{ display: 'flex' }}>\n Title field rating changed from\n <Box sx={classes.optionsText}>\n {value.change_from.title_field\n ? ticked[value.change_from.title_field]\n : '-'}\n </Box>\n to <Box sx={classes.optionsText}>{ticked[value.change_to.title_field]}</Box>\n </div>\n )}\n {!!value.change_from.gender_field && (\n <div style={{ display: 'flex' }}>\n Gender field rating changed from\n <Box sx={classes.optionsText}>\n {value.change_from.gender_field\n ? ticked[value.change_from.gender_field]\n : '-'}\n </Box>\n to <Box sx={classes.optionsText}>{ticked[value.change_to.gender_field]}</Box>\n </div>\n )}\n {!!value.change_from.linkedin_field && (\n <div style={{ display: 'flex' }}>\n Linkedin field field rating changed from\n <Box sx={classes.optionsText}>\n {value.change_from.linkedin_field\n ? ticked[value.change_from.linkedin_field]\n : '-'}\n </Box>\n to{' '}\n <Box sx={classes.optionsText}>{ticked[value.change_to.linkedin_field]}</Box>\n </div>\n )}\n {!!value.change_from.indeed_apply && (\n <div style={{ display: 'flex' }}>\n Indeed apply field rating changed from\n <Box sx={classes.optionsText}>\n {value.change_from.indeed_apply\n ? ticked[value.change_from.indeed_apply]\n : '-'}\n </Box>\n to <Box sx={classes.optionsText}>{ticked[value.change_to.indeed_apply]}</Box>\n </div>\n )}\n {!!value.change_from.employee_id_field && (\n <div style={{ display: 'flex' }}>\n Employee id field field rating changed from\n <Box sx={classes.optionsText}>\n {value.change_from.employee_id_field\n ? ticked[value.change_from.employee_id_field]\n : '-'}\n </Box>\n to{' '}\n <Box sx={classes.optionsText}>\n {ticked[value.change_to.employee_id_field]}\n </Box>\n </div>\n )}\n {(!!value.change_from.attachments || !!value.change_to.attachments) && (\n <Box sx={{ marginTop: '0.5rem' }}>\n Attachments:\n <Box sx={{ ...classes.htmlContent, margin: '1rem 0' }}>\n <Box sx={{ ...classes.headerContent, color: '#D6827D' }}>Previous</Box>\n <Box sx={classes.attachmentContent}>\n {value.change_from.attachments ? (\n <span>\n {Object.keys(value.change_from.attachments).map((key, i) => (\n <li className=\"travelcompany-input\" key={i}>\n <span className=\"input-label\">\n {value.change_from.attachments[key].name}\n {Number(value.change_from.attachments[key].mandatory)\n ? ' (Required)'\n : ''}\n </span>\n </li>\n ))}\n </span>\n ) : (\n <Box sx={classes.noAttachments}>Unset</Box>\n )}\n </Box>\n </Box>\n <Box sx={{ ...classes.htmlContent, margin: '1.5rem 0' }}>\n <Box sx={{ ...classes.headerContent, color: '#8CCF95' }}>New</Box>\n <Box sx={classes.attachmentContent}>\n {value.change_to.attachments &&\n Object.keys(value.change_to.attachments).length !== 0 ? (\n <span>\n {Object.keys(value.change_to.attachments).map((key, i) => (\n <li className=\"travelcompany-input\" key={i}>\n <span className=\"input-label\">\n {value.change_to.attachments[key].name}\n {Number(value.change_to.attachments[key].mandatory)\n ? ' (Required)'\n : ''}\n </span>\n </li>\n ))}\n </span>\n ) : (\n <Box sx={classes.noAttachments}>No attachments</Box>\n )}\n </Box>\n </Box>\n </Box>\n )}\n </Box>\n ) : (\n <span />\n )}\n </Box>\n </span>\n );\n case 'description':\n case 'summary':\n case 'template':\n return (\n <span style={{ width: '100%' }}>\n <Box sx={classes.revisionsVersionsContentDescription}>\n <Box style={{ display: 'flex' }}>\n <Box\n sx={classes.revisionsVersionsContentBlue}\n onClick={() =>\n window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n }\n >\n {value.editor}\n </Box>\n <Box sx={{ paddingLeft: '2.5px' }}>\n <span>changed the {field}</span>\n <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n </Box>\n </Box>\n <span\n onClick={() =>\n setOpenContent(field === '' ? field : field === openContent ? '' : field)\n }\n >\n Show\n {openContent === field ? (\n <ExpandLessIcon sx={{ color: '#939393' }} fontSize=\"small\" />\n ) : (\n <ExpandMoreIcon sx={{ color: '#939393' }} fontSize=\"small\" />\n )}\n </span>\n {openContent === field ? (\n <Box>\n <Box sx={{ ...classes.htmlContent, margin: '1.5rem 0' }}>\n <Box sx={{ ...classes.headerContent, color: '#D6827D' }}>Previous</Box>\n {field === 'template' ? (\n <Box sx={{ padding: '1rem 1rem 2rem 1rem' }}>{value.change_from}</Box>\n ) : (\n <Box\n sx={{ padding: '1rem 1rem 2rem 1rem' }}\n dangerouslySetInnerHTML={{ __html: value.change_from }}\n />\n )}\n </Box>\n <Box sx={{ ...classes.htmlContent, position: 'relative' }}>\n {value.change_from.replace(/<\\/?[^>]+(>|$)|\\n/g, '') ===\n value.change_to.replace(/<\\/?[^>]+(>|$)|\\n/g, '') ? (\n <Box sx={classes.codeChangesOnly}>Styling or code changes only</Box>\n ) : null}\n <Box sx={{ ...classes.headerContent, color: '#8CCF95' }}>New</Box>\n {field === 'template' ? (\n <Box sx={{ padding: '1rem 1rem 2rem 1rem' }}>{value.change_to}</Box>\n ) : (\n <Box\n sx={{ padding: '1rem 1rem 2rem 1rem' }}\n dangerouslySetInnerHTML={{ __html: value.change_to }}\n />\n )}\n </Box>\n </Box>\n ) : (\n <span />\n )}\n </Box>\n </span>\n );\n case 'template_enabled':\n case 'internal':\n case 'external':\n return (\n <span>\n <Box sx={classes.revisionsVersionsContentDescription}>\n <Box style={{ display: 'flex' }}>\n <Box\n onClick={() =>\n window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n }\n sx={classes.revisionsVersionsContentBlue}\n >\n {value.editor}\n </Box>\n <Box sx={{ paddingLeft: '2.5px' }}>\n <span>changed the job {field}</span>\n <span style={{ fontWeight: '700', marginLeft: '3px' }}>\n {typeof value.change_from === 'boolean' ? value.change_from.toString() : '-'}\n </span>\n <span style={{ margin: '0 3px' }}>to</span>\n <span style={{ fontWeight: '700' }}>\n {typeof value.change_to === 'boolean' ? value.change_to.toString() : '-'}\n </span>\n <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n </Box>\n </Box>\n </Box>\n </span>\n );\n case 'trashed':\n return (\n <span>\n <Box sx={classes.revisionsVersionsContentDescription}>\n <Box style={{ display: 'flex' }}>\n <Box\n onClick={() =>\n window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n }\n sx={classes.revisionsVersionsContentBlue}\n >\n {value.editor}\n </Box>\n <Box sx={{ paddingLeft: '2.5px' }}>\n {value.change_to === false ? (\n <span>restored the job from Trash</span>\n ) : (\n <span>sent the job to Trash</span>\n )}\n <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n </Box>\n </Box>\n </Box>\n </span>\n );\n case 'archived':\n return (\n <span>\n <Box sx={classes.revisionsVersionsContentDescription}>\n <Box style={{ display: 'flex' }}>\n <Box\n onClick={() =>\n window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n }\n sx={classes.revisionsVersionsContentBlue}\n >\n {value.editor}\n </Box>\n <Box sx={{ paddingLeft: '2.5px' }}>\n {value.change_to === false ? (\n <span>Unarchived the job</span>\n ) : (\n <span>Archived the job</span>\n )}\n <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n </Box>\n </Box>\n </Box>\n </span>\n );\n case 'original_job_reference':\n return (\n <span>\n <Box sx={classes.revisionsVersionsContentDescription}>\n <Box style={{ display: 'flex' }}>\n <Box\n onClick={() =>\n window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n }\n sx={classes.revisionsVersionsContentBlue}\n >\n {value.editor}\n </Box>\n <Box sx={{ paddingLeft: '2.5px' }}>\n <span>Cloned from job {value.change_to}</span>\n <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n </Box>\n </Box>\n </Box>\n </span>\n );\n default:\n return (\n <span>\n <Box sx={classes.revisionsVersionsContent}>\n <Box\n sx={classes.revisionsVersionsContentBlue}\n onClick={() =>\n window.open(`${window.location.origin}${value.editor_url}`, '_blank').focus()\n }\n >\n {value.editor}\n </Box>\n <Box sx={{ paddingLeft: '2.5px' }}>\n <span>\n changed {field} from\n <span style={{ fontWeight: '700', marginLeft: '3px' }}>\n {value?.change_from ? value?.change_from : '-'}\n </span>\n <span style={{ margin: '0 3px' }}>to</span>\n <span style={{ fontWeight: '700' }}>\n {value?.change_to ? value.change_to : '-'}\n </span>\n <span style={{ margin: '0 3px' }}>on {timestamp}</span>\n </span>\n </Box>\n </Box>\n </span>\n );\n }\n };\n\n const fetchRevision = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await Api.getRevision({ 'X-api-authenticate': apiKey }, jobId, {});\n\n // Filter out revisions with no changes\n const filteredRevisions: IRevision[] = [];\n response?.data?.job_revisions.forEach((revision: IRevision) => {\n const filteredLogs = {};\n Object.keys(revision.logs).forEach((key) => {\n // Only include options with changes\n if (key === 'options') {\n const filteredOptions = {};\n Object.keys(revision.logs[key].change_from).forEach((optionKey) => {\n if (\n JSON.stringify(revision.logs[key].change_from[optionKey]) !==\n JSON.stringify(revision.logs[key].change_to[optionKey])\n ) {\n filteredOptions['change_from'] = {\n [optionKey]: revision.logs[key].change_from[optionKey]\n };\n filteredOptions['change_to'] = {\n [optionKey]: revision.logs[key].change_to[optionKey]\n };\n }\n if (Object.prototype.hasOwnProperty.call(filteredOptions, 'change_from')) {\n filteredLogs[key] = { ...revision.logs[key], ...filteredOptions };\n }\n });\n return;\n }\n\n // Filter out empty description, summary, and template\n if (\n ['description', 'summary', 'template'].includes(key) &&\n revision.logs[key].change_from.replace(/<\\/?[^>]+(>|$)/g, '') === '' &&\n revision.logs[key].change_to.replace(/<\\/?[^>]+(>|$)/g, '') === ''\n )\n return;\n\n // Only include fields with changes\n if (revision.logs[key].change_from !== revision.logs[key].change_to) {\n filteredLogs[key] = revision.logs[key];\n }\n });\n\n // Add revision to filteredRevisions if it has changes\n if (Object.keys(filteredLogs).length > 0) {\n filteredRevisions.push({ ...revision, logs: filteredLogs });\n }\n });\n\n setRevisions(filteredRevisions);\n setVersionNumber(filteredRevisions.length);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, jobId]);\n\n useEffect(() => {\n if (revisions !== null && versionNumber !== null) {\n const currentRevision = revisions[versionNumber - 1];\n if (currentRevision) {\n if (\n currentRevision.logs.hasOwnProperty('archived') ||\n currentRevision.logs.hasOwnProperty('trashed')\n ) {\n setDisableButton(true);\n } else {\n setDisableButton(false);\n }\n }\n }\n }, [revisions, versionNumber]);\n\n return (\n <Box>\n <Box\n onClick={() => {\n setIsDialogOpen(true);\n !revisions && fetchRevision();\n }}\n id=\"revisions-job-button\"\n >\n Revisions\n </Box>\n <Modal\n open={isDialogOpen}\n onClose={() => setIsDialogOpen(false)}\n aria-labelledby=\"modal-modal-title\"\n >\n <Box sx={classes.revisionsModalContent}>\n <CloseIcon onClick={() => setIsDialogOpen(false)} sx={classes.closeIcon} />\n <Box id=\"modal-modal-title\" sx={classes.revisionsTitle}>\n Revisions\n </Box>\n {revisions && versionNumber ? (\n <Box sx={{ marginTop: '50px' }}>\n <Box sx={classes.revisionsContent}>Versions</Box>\n <Slider\n aria-label=\"Temperature\"\n value={versionNumber}\n onChange={handleChange}\n sx={classes.sliderInput}\n valueLabelDisplay=\"auto\"\n step={1}\n min={1}\n max={revisions.length}\n marks={[\n {\n value: revisions.length,\n label: 'Current'\n }\n ]}\n />\n </Box>\n ) : (\n <span />\n )}\n <Box sx={classes.revisionsSubTitle}>\n {!revisions || revisions?.length === 0 ? '' : 'Changes'}\n </Box>\n {isLoading || !revisions || !versionNumber ? (\n <Box sx={{ display: 'flex', margin: 'auto' }}>\n {revisions && revisions?.length === 0 ? (\n <Box sx={classes.noRevisions}>No revisions for this job</Box>\n ) : (\n <CircularProgress size={32} sx={{ color: '#084D6D' }} />\n )}\n </Box>\n ) : (\n <Box sx={{ display: ' contents' }}>\n <Box sx={{ ...classes.revisionsContent, marginBottom: '10px' }}>\n {moment(revisions[versionNumber - 1]?.created_at).format('D MMM YYYY')}\n </Box>\n <Box sx={{ height: '100%', overflow: 'auto' }}>\n {Object.entries(revisions[versionNumber - 1].logs).map(([key, value], i) => (\n <Box key={i} sx={classes.changesTableContent}>\n <Box sx={classes.revisionsVersionsIcon}>\n <BusinessCenterIcon fontSize=\"small\" />\n </Box>\n {renderTableData(key, value)}\n </Box>\n ))}\n </Box>\n </Box>\n )}\n <Box sx={classes.revisionsActions}>\n <Button\n disableElevation\n sx={{ ...classes.buttonRedLight }}\n variant=\"text\"\n onClick={() => {\n setIsDialogOpen(false);\n setActionsAnchorEl(null);\n }}\n >\n Cancel\n </Button>\n <Tooltip\n title={disableButton ? 'Reverting disabled for Archived and Trashed Jobs' : 'Revert'}\n >\n <span>\n <Button\n sx={\n revisions && versionNumber\n ? { ...classes.revertloadButton, backgroundColor: '#5BC4BF' }\n : { ...classes.revertloadButton, backgroundColor: 'grey' }\n }\n disabled={!revisions || !versionNumber || disableButton}\n onClick={() => revisions && createNewVersion()}\n >\n Revert\n </Button>\n </span>\n </Tooltip>\n </Box>\n </Box>\n </Modal>\n </Box>\n );\n}\n","import React, { useEffect, useState, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport Api from '../../API';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { classes } from './styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport { IJobsForTask, IWorkflowAssignableUser, IWorkflowName } from '../../types';\nimport { useJobsForTask } from '../../../hooks/useJobsForTask';\n\nconst BASE_URL = window.location.origin;\n\nexport default function StartWorkFlow({\n apiKey,\n jobId,\n setSnackbarState,\n setActionsAnchorEl,\n isDashboard,\n buttonElement\n}: {\n apiKey: string;\n jobId?: number;\n setActionsAnchorEl?: (value: null) => void;\n setSnackbarState?: StyledSnackbarProps['setSnackBarState'];\n isDashboard?: boolean;\n buttonElement?: React.ReactElement;\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [workflowOptions, setWorkflowOptions] = useState(null);\n const [usersOptions, setUserOptions] = useState(null);\n const [assignTo, setAssignTo] = useState<IWorkflowAssignableUser | null>(null);\n const [workflowName, setWorkflowName] = useState<IWorkflowName | null>(null);\n const [hasError, setHasError] = useState(false);\n const [newWorkflowURL, setNewWorkflowURL] = useState('');\n const [selectedJob, setSelectedJob] = useState<IJobsForTask>();\n const { fetchJobs, jobs } = useJobsForTask();\n\n const fetchWorkFlowData = useCallback(async () => {\n if (!jobId && !selectedJob?.id) return;\n setIsLoading(true);\n try {\n const { data } = await Api.getWorkflows(\n { 'X-api-authenticate': apiKey },\n {},\n jobId || selectedJob.id\n );\n data?.assignable_users && setUserOptions(data.assignable_users);\n data?.workflows && setWorkflowOptions(data.workflows);\n data?.newWorkflowURL && setNewWorkflowURL(`${BASE_URL}${data.newWorkflowURL}`);\n setIsLoading(false);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, jobId, selectedJob]);\n\n useEffect(() => {\n if (!selectedJob) {\n setUserOptions(null);\n setWorkflowOptions(null);\n setNewWorkflowURL('');\n } else {\n fetchWorkFlowData();\n }\n }, [selectedJob, fetchWorkFlowData]);\n\n const createNewWorkflow = async () => {\n if (!assignTo || !workflowName) {\n setHasError(true);\n return;\n } else setHasError(false);\n try {\n await Api.assignWorkflow(\n { 'X-api-authenticate': apiKey },\n {\n id: workflowName?.id,\n user_id: assignTo?.id\n },\n jobId || selectedJob.id\n );\n if (!isDashboard) {\n setActionsAnchorEl(null);\n }\n setSnackbarState({\n message: 'Workflow has been created',\n state: 'success'\n });\n setIsDialogOpen(false);\n setAssignTo(null);\n setWorkflowName(null);\n } catch (error) {\n console.log(error);\n setSnackbarState({\n message: 'There was an error creating a workflow. Please try again.',\n state: 'error'\n });\n } finally {\n setIsLoading(false);\n if (isDashboard) {\n setIsDialogOpen(false);\n setSelectedJob(undefined);\n }\n }\n };\n\n return (\n <Box>\n <Box\n onClick={() => {\n !workflowOptions && fetchWorkFlowData();\n fetchJobs();\n setIsDialogOpen(true);\n }}\n id=\"start-workflow-job-button\"\n >\n {buttonElement || 'Start Workflow'}\n </Box>\n <Modal\n open={isDialogOpen}\n aria-labelledby=\"modal-modal-title\"\n onClose={() => setIsDialogOpen(false)}\n >\n <Box sx={classes.modalContent}>\n <CloseIcon onClick={() => setIsDialogOpen(false)} sx={classes.closeIcon} />\n <Box id=\"modal-modal-title\" sx={classes.modalTitle}>\n Start Workflow\n </Box>\n <Box sx={{ display: 'flex', flexDirection: 'column', marginTop: '40px' }}>\n {isDashboard && (\n <Box sx={classes.modalFormLine} pt={3}>\n <Autocomplete\n disablePortal\n options={jobs}\n getOptionLabel={(option) => `${option.id} - ${option.title}`}\n id=\"state-region-province\"\n value={selectedJob}\n onChange={(event, value) => setSelectedJob(value || undefined)}\n sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Select Job\" InputLabelProps={{ shrink: true }} />\n )}\n />\n </Box>\n )}\n {workflowOptions && workflowOptions?.length > 0 ? (\n <Box sx={{ marginTop: '1.75rem' }}>\n {!isLoading ? (\n <Box sx={classes.modalFormLine}>\n <Box sx={{ position: 'relative' }}>\n <Autocomplete\n disablePortal\n options={workflowOptions}\n getOptionLabel={(option) => option.name}\n id=\"state-region-province\"\n value={workflowName}\n onChange={(event, value) => setWorkflowName(value)}\n sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Workflow name\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n />\n {!workflowName && hasError && (\n <Box sx={{ ...sharedClasses.errorBox }}>This field is required</Box>\n )}\n </Box>\n <Box sx={{ position: 'relative' }}>\n <Autocomplete\n disablePortal\n options={usersOptions}\n getOptionLabel={(option) => `${option?.firstname} ${option?.lastname}`}\n id=\"state-region-province\"\n value={assignTo}\n onChange={(event, value) => setAssignTo(value)}\n sx={{ width: '290px', ...sharedClasses.formAutocomplete }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Assign to\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n />\n {!assignTo && hasError && (\n <Box sx={{ ...sharedClasses.errorBox }}>This field is required</Box>\n )}\n </Box>\n </Box>\n ) : (\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"center\">\n <CircularProgress size={20} color=\"inherit\" />\n </Box>\n )}\n </Box>\n ) : (\n <Box>\n {isLoading ? (\n <Box display=\"flex\" alignItems=\"center\" justifyContent=\"center\">\n <CircularProgress size={20} color=\"inherit\" />\n </Box>\n ) : (\n <Box sx={classes.noWorkflows}>No Workflows have been configured</Box>\n )}\n </Box>\n )}\n </Box>\n {(workflowOptions && workflowOptions?.length > 0) || (isDashboard && !selectedJob) ? (\n <Box sx={classes.modalActions}>\n <Button\n disableElevation\n sx={{ ...classes.buttonRedLight }}\n variant=\"text\"\n onClick={() => {\n setIsDialogOpen(false);\n !isDashboard && setActionsAnchorEl(null);\n }}\n >\n Cancel\n </Button>\n <Button sx={classes.revertloadButton} onClick={() => createNewWorkflow()}>\n Submit\n </Button>\n </Box>\n ) : (\n <Box sx={{ margin: '0 auto' }}>\n {isLoading ? (\n <span />\n ) : (\n <Button\n sx={classes.createNewWorkflowButton}\n onClick={() => (window.location.href = newWorkflowURL)}\n >\n Create task workflow\n </Button>\n )}\n </Box>\n )}\n </Box>\n </Modal>\n </Box>\n );\n}\n","/* eslint-disable max-lines */\nimport { Box, Button, FormControlLabel, Skeleton, Stack, Switch, Tooltip } from '@mui/material';\nimport { Info as InfoIcon } from '@mui/icons-material';\nimport ApplicationsTable from './ApplicationsTable';\nimport ApplicationsActionsPanel from './ApplicationsActionsPanel';\nimport GenericDialog from '../../Components/Multiposter/GenericDialog';\nimport FieldDropdown from './Dropdowns/FieldDropdown';\nimport FilterDropdown from './Dropdowns/FilterDropdown';\nimport TempCSVExport from './Modals/TempCSVExport';\nimport ExternalEmail from './Modals/ExternalEmail';\nimport SMSCandidates from './Modals/SMSCandidates';\nimport EmailCandidates from './Modals/EmailCandidates';\nimport MoveApplications from './Modals/MoveApplications';\nimport AddToEvent from './Modals/AddToEvent';\nimport InviteToTimeslot from './Modals/InviteToTimeslot';\nimport ChangeStatus from './Modals/ChangeStatus';\nimport ExportToOnboard from './Modals/ExportToOnboard';\nimport ExportPDF from './Modals/ExportPDF';\nimport ExportFoundu from './Modals/ExportFoundu';\nimport Search from './Search';\nimport FilePreviewModal, { IJobAttachment } from '../../Components/Modals/FilePreviewModal';\nimport NewApplication from './Modals/NewApplication';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport InsightsModal from '../../../AIStudio/ApplicationSummaries/InsightsModal/InsightsModal';\nimport StyledSnackbar from '../../Components/CustomUIElements/StyledSnackbar';\nimport Api from '../API';\nimport {\n IApplicationProps,\n IApplicationStatus,\n IDropdownProps,\n IFilterDropdownProps,\n IGetAllApplications,\n IGetApplications,\n IJobApplication,\n IUIPreferences,\n SortableColumnId,\n TSetUserPreferences\n} from '../types';\nimport { defaultFilters, initialModalsOpen, sortableColumnsDefaults } from './config';\nimport { classes } from './styles';\nimport { getUpdatedSortableColumns } from '../../utils/sortable-column';\nimport BetaButton from '../../Components/Buttons/BetaButton';\nimport { fetchPreferences, updateUiSettings } from '../../helpers/uiPreferencesHelpers';\n\nexport default function Applications({\n apiKey,\n jobAttachments,\n jobHasPrivacyAcknowledgement,\n jobId,\n jobIsLoading,\n jobOptions,\n jobQuestions,\n jobSources,\n jobTitle,\n setJob,\n userPermissions,\n newNoteOnApplicationEnabled,\n newApplicationEnabled\n}: IApplicationProps) {\n const SORTABLE_COLUMN_IDS_TO_REMOVE = newNoteOnApplicationEnabled\n ? [SortableColumnId.NOTES]\n : [SortableColumnId.NOTE_PAD, SortableColumnId.PERMANENT_RECORD];\n const [applications, setApplications] = useState<IJobApplication[]>([]);\n const [applicationStatuses, setApplicationStatuses] = useState<IApplicationStatus[]>([]);\n const [filterableStatuses, setFilterableStatuses] = useState<IApplicationStatus[]>([]);\n const [filterableCountries, setFilterableCountries] = useState<IApplicationCountry[]>([]);\n const [filterableSuburbs, setFilterableSuburbs] = useState<IApplicationCountry[]>([]);\n const [globalSelected, setGlobalSelected] = useState<IJobApplication[]>([]);\n const [selectAllIsChecked, setSelectAllIsChecked] = useState(false);\n const [selectAllIsIndeterminate, setSelectAllIsIndeterminate] = useState(false);\n const [selectAllApplications, setSelectAllApplications] = useState<boolean>(false);\n const [isLoading, setIsLoading] = useState(0);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n\n const [selected, setSelected] = useState<number[]>([]);\n const [currentPage, setCurrentPage] = useState(1);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [totalPages, setTotalPages] = useState(0);\n const [totalApplications, setTotalApplications] = useState(0);\n const [sortBy, setSortBy] = useState<string>('date');\n const [sortOrder, setSortOrder] = useState<string>('desc');\n const [search, setSearch] = useState<string>('');\n const [filters, setFilters] = useState<IFilterDropdownProps['filters']>(defaultFilters);\n const [modalsOpen, setModalsOpen] = useState<Record<string, boolean>>(initialModalsOpen);\n const [previewOpen, setPreviewOpen] = useState(false);\n const [selectedAttachment, setSelectedAttachment] = useState<IJobAttachment | null>(null);\n const [isDeleting, setIsDeleting] = useState(false);\n const [sortableColumns, setSortableColumns] = useState(\n sortableColumnsDefaults.filter((column) => !SORTABLE_COLUMN_IDS_TO_REMOVE.includes(column.id))\n );\n const [density, setDensity] = useState<string>('Default');\n const [newApplicationPage, setNewApplicationPage] = useState<boolean>(newApplicationEnabled);\n\n const handleSortTranslate = (sort: string) => {\n switch (sort) {\n case 'candidate':\n return 'firstname';\n case 'date':\n return 'created_at';\n default:\n return sort;\n }\n };\n\n const saveSortableColumns = async ({\n sortableColumns,\n rowCount\n }: {\n sortableColumns?: IDropdownProps['sortableColumns'];\n rowCount?: number;\n }) => {\n await updateUiSettings(\n {\n ...(sortableColumns && { sortable_columns: sortableColumns }),\n ...(rowCount && { row_count: rowCount }),\n source: 'applications'\n },\n () => {\n setSnackbar({\n message: 'There was an error saving your preferences',\n state: 'error'\n });\n }\n );\n };\n\n const setUserPreferences: TSetUserPreferences = useCallback(\n async (limit, sort, columns, newFilters, density) => {\n if (density) {\n await updateUiSettings({ columns: { density }, source: 'universal' }, (errorMessage) => {\n setSnackbar({\n message: `There was an error saving your density preferences, ${errorMessage}`,\n state: 'error'\n });\n });\n return;\n }\n\n if (limit || columns) {\n saveSortableColumns({\n rowCount: limit || rowsPerPage,\n sortableColumns: columns || sortableColumns\n });\n return;\n }\n\n await updateUiSettings(\n {\n sorting: {\n field: sort?.sortBy || sortBy,\n direction: (sort?.sortOrder || sortOrder).toUpperCase()\n },\n filters: newFilters || filters,\n source: `job:${jobId}:applications`\n },\n () => {\n debugger;\n setSnackbar({\n message: 'There was an error saving your preferences',\n state: 'error'\n });\n }\n );\n },\n [apiKey, filters, jobId, rowsPerPage, sortBy, sortOrder, sortableColumns]\n );\n\n const getFirstApplicationsAndPreferences = useCallback(async () => {\n setIsLoading((prev) => prev + 1);\n try {\n const { res: sortAndFilterData } = await fetchPreferences(`job:${jobId}:applications`);\n const { res: columnsAndLimitData } = await fetchPreferences('applications');\n const { res: densityData } = await fetchPreferences('universal');\n const sortAndFilterpreferences = sortAndFilterData?.ui_preferences[0];\n const columnsAndLimitPreferences: IUIPreferences = columnsAndLimitData?.ui_preferences[0];\n const densityPreference = densityData?.ui_preferences[0];\n sortAndFilterpreferences?.sorting?.field && setSortBy(sortAndFilterpreferences.sorting.field);\n sortAndFilterpreferences?.sorting?.direction &&\n setSortOrder(sortAndFilterpreferences.sorting.direction.toLowerCase());\n sortAndFilterpreferences?.filters && setFilters(sortAndFilterpreferences.filters);\n const selectedStatuses = sortAndFilterpreferences?.filters?.status?.map(\n (status) => status.id\n );\n const selectedCountries = sortAndFilterpreferences?.filters?.country?.map(\n (country) => country.id\n );\n const selectedSuburbs = sortAndFilterpreferences?.filters?.suburb?.map(\n (suburb) => suburb.name\n );\n const sessionPage = sessionStorage.getItem(`${jobId}-applicationTablePage`);\n sessionPage && setCurrentPage(Number(sessionPage));\n columnsAndLimitPreferences?.row_count && setRowsPerPage(columnsAndLimitPreferences.row_count);\n\n if (columnsAndLimitPreferences?.sortable_columns) {\n const { updatedColumns } = getUpdatedSortableColumns(\n sortableColumns,\n columnsAndLimitPreferences\n );\n setSortableColumns(updatedColumns);\n saveSortableColumns({ sortableColumns: updatedColumns });\n }\n\n densityPreference?.columns?.density && setDensity(densityPreference.columns?.density);\n const response = await Api.getApplications({ 'X-api-authenticate': apiKey }, jobId, {\n exclude_job_attribute: true,\n page: sessionPage ? Number(sessionPage) : 1,\n limit: columnsAndLimitPreferences?.row_count || rowsPerPage,\n sort_by: handleSortTranslate(\n sortAndFilterpreferences?.sorting?.field || handleSortTranslate('date')\n ),\n sort_direction: (\n sortAndFilterpreferences?.sorting?.direction?.toLowerCase() || 'desc'\n ).toUpperCase(),\n 'q[search]': search,\n 'filter[status_ids]': selectedStatuses?.filters?.length === 0 ? 0 : selectedStatuses,\n 'filter[country_ids]': selectedCountries?.length === 0 ? 0 : selectedCountries,\n 'filter[suburb]': selectedSuburbs?.length === 0 ? 0 : selectedSuburbs,\n 'filter[rating_from]': sortAndFilterpreferences?.filters?.rating[0] || 0,\n 'filter[rating_to]': sortAndFilterpreferences?.filters?.rating[1] || 100,\n 'filter[exclude_unrated]':\n sortAndFilterpreferences?.filters?.excludeApplicantsWithoutRating || false\n });\n setApplications(response.data.applications);\n setTotalPages(response.totalPages);\n setTotalApplications(response.totalItems);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading((prev) => prev - 1);\n }\n }, [apiKey, jobId, search]);\n\n const getApplications: IGetApplications = async (\n page,\n limit,\n searchQuery,\n sort,\n updatedFilters\n ) => {\n setIsLoading((prev) => prev + 1);\n try {\n const selectedStatuses = (updatedFilters?.status || filters.status)?.map(\n (status) => status.id\n );\n const selectedCountries = (updatedFilters?.country || filters.country)?.map(\n (country) => country.id\n );\n const selectedSuburbs = (updatedFilters?.suburb || filters.suburb)?.map(\n (suburb) => suburb.name\n );\n const response = await Api.getApplications({ 'X-api-authenticate': apiKey }, jobId, {\n exclude_job_attribute: true,\n page: page || currentPage,\n limit: limit || rowsPerPage,\n sort_by: handleSortTranslate(sort?.sortBy || sortBy),\n sort_direction: (sort?.sortOrder || sortOrder).toUpperCase(),\n 'q[search]': searchQuery !== null ? searchQuery : search,\n 'filter[status_ids]': selectedStatuses?.length === 0 ? 0 : selectedStatuses,\n 'filter[country_ids]': selectedCountries?.length === 0 ? 0 : selectedCountries,\n 'filter[suburb]': selectedSuburbs?.length === 0 ? 0 : selectedSuburbs,\n 'filter[rating_from]': updatedFilters?.rating[0] || filters.rating[0],\n 'filter[rating_to]': updatedFilters?.rating[1] || filters.rating[1],\n 'filter[exclude_unrated]': updatedFilters\n ? updatedFilters.excludeApplicantsWithoutRating\n : filters.excludeApplicantsWithoutRating\n });\n setApplications(response.data.applications);\n setTotalPages(response.totalPages);\n setTotalApplications(response.totalItems);\n setSelectAllIsChecked(\n response.data.applications\n .map((app: IJobApplication) => app.id)\n .every((id: number) => globalSelected.map((app) => app.id).includes(id))\n );\n setSelectAllIsIndeterminate(\n response.data.applications\n .map((app: IJobApplication) => app.id)\n .some((id: number) => globalSelected.map((app) => app.id).includes(id))\n );\n } catch (error) {\n console.log(error);\n } finally {\n if (sort || updatedFilters) {\n setUserPreferences(null, sort, null, updatedFilters, null);\n } else if (limit) {\n setUserPreferences(limit, null, null, null, null);\n }\n setIsLoading((prev) => prev - 1);\n }\n };\n\n const getAllApplications: IGetAllApplications = async (\n limit,\n searchQuery,\n sort,\n updatedFilters\n ) => {\n setIsLoading((prev) => prev + 1);\n try {\n const selectedStatuses = (updatedFilters?.status || filters.status)?.map(\n (status) => status.id\n );\n const selectedCountries = (updatedFilters?.country || filters.country)?.map(\n (country) => country.id\n );\n const selectedSuburbs = (updatedFilters?.suburb || filters.suburb)?.map(\n (suburb) => suburb.name\n );\n const response = await Api.getAllApplications({ 'X-api-authenticate': apiKey }, jobId, {\n exclude_job_attribute: true,\n override_limit: true,\n limit: totalApplications,\n sort_by: handleSortTranslate(sort?.sortBy || sortBy),\n sort_order: (sort?.sortOrder || sortOrder).toUpperCase(),\n 'q[search]': searchQuery !== null ? searchQuery : search,\n 'filter[status_ids]': selectedStatuses?.length === 0 ? 0 : selectedStatuses,\n 'filter[country_ids]': selectedCountries?.length === 0 ? 0 : selectedCountries,\n 'filter[suburb]': selectedSuburbs?.length === 0 ? 0 : selectedSuburbs,\n 'filter[rating_from]': updatedFilters?.rating[0] || filters.rating[0],\n 'filter[rating_to]': updatedFilters?.rating[1] || filters.rating[1],\n 'filter[exclude_unrated]': updatedFilters\n ? updatedFilters.excludeApplicantsWithoutRating\n : filters.excludeApplicantsWithoutRating\n });\n return response.data.applications;\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading((prev) => prev - 1);\n }\n };\n\n const getFilterableStatuses = useCallback(async () => {\n try {\n const response = await Api.getFilterableStatuses({ 'X-api-authenticate': apiKey }, jobId, {\n limit: 100\n });\n setFilterableStatuses(response.data.filterable_statuses);\n } catch (error) {\n console.log(error);\n }\n }, [apiKey, jobId]);\n\n const getFilterableCountries = useCallback(async () => {\n try {\n const response = await Api.getFilterableCountries(\n { 'X-api-authenticate': apiKey },\n jobId,\n {}\n );\n setFilterableCountries(response.data.countries);\n } catch (error) {\n console.log(error);\n }\n }, [apiKey, jobId]);\n\n const getFilterableSuburbs = useCallback(async () => {\n try {\n const response = await Api.getFilterableSuburbs({ 'X-api-authenticate': apiKey }, jobId, {});\n setFilterableSuburbs(response.data.suburbs);\n } catch (error) {\n console.log(error);\n }\n }, [apiKey, jobId]);\n\n const getApplicationStatuses = useCallback(async () => {\n setIsLoading((prev) => prev + 1);\n try {\n const response = await Api.getApplicationStatuses({ 'X-api-authenticate': apiKey }, jobId, {\n limit: 100\n });\n setApplicationStatuses(response.data.job_application_statuses);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading((prev) => prev - 1);\n }\n }, [apiKey, jobId]);\n\n useEffect(() => {\n getFirstApplicationsAndPreferences();\n getFilterableStatuses();\n getFilterableCountries();\n getFilterableSuburbs();\n getApplicationStatuses();\n }, [\n getFirstApplicationsAndPreferences,\n getFilterableStatuses,\n getFilterableCountries,\n getFilterableSuburbs,\n getApplicationStatuses\n ]);\n\n const deselectAll = () => {\n setSelected([]);\n setGlobalSelected([]);\n setSelectAllIsChecked(false);\n setSelectAllIsIndeterminate(false);\n };\n\n const handleDelete = async (url: string) => {\n setIsDeleting(true);\n try {\n const deleted = await Api.deleteApplications(\n url,\n { 'X-api-authenticate': apiKey },\n { application_ids: globalSelected.map((app) => app.id) }\n );\n setCurrentPage(1);\n getApplications(1, null, null, null, null);\n setJob((prev) => ({\n ...prev,\n applications_count: prev.applications_count - deleted.application_ids.success.length\n }));\n setSnackbar({\n message: `Successfully trashed ${deleted.application_ids.success.length} application(s)`,\n state: 'success'\n });\n } catch (error) {\n console.log(error);\n } finally {\n setIsDeleting(false);\n setModalsOpen({ ...modalsOpen, delete: false });\n deselectAll();\n }\n };\n\n const handleDeselectCandidate = (id: number) => {\n let newGlobalSelected = [...globalSelected];\n newGlobalSelected = newGlobalSelected.filter((app) => app.id !== id);\n const newSelected = newGlobalSelected.map((app) => app.id);\n setSelected(newSelected);\n setGlobalSelected(newGlobalSelected);\n setSelectAllIsChecked(\n applications.map((app) => app.id).every((id) => newSelected.includes(id))\n );\n setSelectAllIsIndeterminate(\n applications.map((app) => app.id).some((id) => newSelected.includes(id))\n );\n };\n\n const handleOpenAIInsights = () => {\n if (globalSelected.length > 10) {\n setSnackbar({\n message: 'AI insights supports a maximum of 10 candidates at a time.',\n state: 'error'\n });\n return;\n }\n setModalsOpen({ ...modalsOpen, aiInsights: true });\n };\n\n const clearAllSelection = () => {\n setSelectAllApplications(false);\n setGlobalSelected([]);\n setSelected([]);\n setSelectAllIsChecked(false);\n setSelectAllIsIndeterminate(false);\n };\n\n const enableSortableColumn = (id: SortableColumnId) => {\n setSortableColumns((prevSortableColumn) => {\n const updatedSortableColumns = prevSortableColumn.map((sortableColumn) => {\n if (sortableColumn.id === id && !sortableColumn.enabled) {\n return { ...sortableColumn, enabled: true };\n }\n return sortableColumn;\n });\n saveSortableColumns({ sortableColumns: updatedSortableColumns });\n return updatedSortableColumns;\n });\n };\n\n const showGender =\n userPermissions?.['Job Options']?.['Candidate Gender'] && jobOptions?.gender_field === '1';\n\n return (\n <Box sx={classes.applicationsContainer}>\n <ApplicationsActionsPanel\n selected={selected}\n setModalsOpen={setModalsOpen}\n userPermissions={userPermissions}\n handleOpenAIInsights={handleOpenAIInsights}\n />\n <Box sx={classes.filtersRow}>\n <Search\n setSearch={setSearch}\n getApplications={getApplications}\n setPage={setCurrentPage}\n jobId={jobId}\n />\n <FilterDropdown\n filters={filters}\n setFilters={setFilters}\n getApplications={getApplications}\n statusList={filterableStatuses}\n countryList={filterableCountries}\n suburbList={filterableSuburbs}\n setUserPreferences={setUserPreferences}\n setCurrentPage={setCurrentPage}\n jobId={jobId}\n clearAllSelection={clearAllSelection}\n />\n <FieldDropdown\n sortableColumns={sortableColumns}\n setSortableColumns={setSortableColumns}\n showGender={showGender}\n density={density}\n setDensity={setDensity}\n setUserPreferences={setUserPreferences}\n />\n <TempCSVExport\n apiKey={apiKey}\n jobId={jobId}\n setSnackbarState={setSnackbar}\n filters={filters}\n sortBy={sortBy}\n sortOrder={sortOrder}\n sortableColumns={sortableColumns}\n />\n {userPermissions?.['Applications']?.['Lodge Application'] &&\n (!jobIsLoading ? (\n <Button\n onClick={() => {\n setModalsOpen({ ...modalsOpen, newApplication: true });\n }}\n sx={classes.newApplicationButton}\n id=\"new-application-button\"\n >\n New application\n </Button>\n ) : (\n <Skeleton animation=\"wave\" height=\"60px\" width=\"168px\" />\n ))}\n </Box>\n {newApplicationEnabled && (\n <Stack\n sx={{ flexDirection: 'row', alignItems: 'center', justifyContent: 'end', columnGap: 1 }}\n >\n <FormControlLabel\n sx={{\n ...classes.switchLabels,\n '& .MuiFormControlLabel-label': {\n color: '#666666',\n fontFamily: 'Source Sans Pro',\n fontSize: '14px',\n fontWeight: 'bold'\n },\n marginRight: 1\n }}\n control={\n <Switch\n sx={newApplicationPage ? classes.switchActive : classes.switch}\n checked={newApplicationPage}\n onChange={() => setNewApplicationPage(!newApplicationPage)}\n />\n }\n label=\"New application page\"\n labelPlacement=\"end\"\n />\n <BetaButton />\n <Tooltip\n title=\"This toggle will enable the new application page when you click on an application in the table\"\n placement=\"top\"\n arrow\n componentsProps={{\n tooltip: {\n sx: {\n width: '250px'\n }\n }\n }}\n >\n <InfoIcon sx={{ color: '#5BC4BF' }} />\n </Tooltip>\n </Stack>\n )}\n <ApplicationsTable\n apiKey={apiKey}\n applications={applications}\n applicationStatuses={applicationStatuses}\n clearAllSelection={clearAllSelection}\n currentPage={currentPage}\n density={density}\n enableSortableColumn={() => enableSortableColumn(SortableColumnId.NOTE_PAD)}\n getAllApplications={getAllApplications}\n getApplications={getApplications}\n getFilterableStatuses={getFilterableStatuses}\n globalSelected={globalSelected}\n isLoading={isLoading > 0}\n jobId={jobId}\n jobTitle={jobTitle}\n rowsPerPage={rowsPerPage}\n selectAllApplications={selectAllApplications}\n selectAllIsChecked={selectAllIsChecked}\n selectAllIsIndeterminate={selectAllIsIndeterminate}\n selected={selected}\n setApplications={setApplications}\n setCurrentPage={setCurrentPage}\n setGlobalSelected={setGlobalSelected}\n setPreviewOpen={setPreviewOpen}\n setRowsPerPage={setRowsPerPage}\n setSelectAllApplications={setSelectAllApplications}\n setSelectAllIsChecked={setSelectAllIsChecked}\n setSelectAllIsIndeterminate={setSelectAllIsIndeterminate}\n setSelected={setSelected}\n setSelectedAttachment={setSelectedAttachment}\n setSnackbarState={setSnackbar}\n setSortableColumns={setSortableColumns}\n setSortBy={setSortBy}\n setSortOrder={setSortOrder}\n showGender={showGender}\n sortableColumns={sortableColumns}\n sortBy={sortBy}\n sortOrder={sortOrder}\n totalApplications={totalApplications}\n totalPages={totalPages}\n userPermissions={userPermissions}\n newNoteOnApplicationEnabled={newNoteOnApplicationEnabled}\n newApplicationPage={newApplicationPage}\n />\n <FilePreviewModal\n applicationLink={selectedAttachment?.application_link}\n isShareable={false}\n allowDownload={userPermissions?.['Applications']?.['Download Attachments']}\n {...{ previewOpen, setPreviewOpen, selectedAttachment }}\n />\n {!jobIsLoading && (\n <NewApplication\n apiKey={apiKey}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n getApplications={getApplications}\n jobId={jobId}\n jobQuestions={jobQuestions}\n jobAttachments={jobAttachments}\n jobSources={jobSources}\n jobHasPrivacyAcknowledgement={jobHasPrivacyAcknowledgement}\n setSnackbar={setSnackbar}\n setJob={setJob}\n />\n )}\n <SMSCandidates\n apiKey={apiKey}\n jobId={jobId}\n setSnackbar={setSnackbar}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n handleTemplatePermissions={\n !!userPermissions?.['Entities']?.['Create / Edit / Delete SMS Templates']\n }\n filters={filters}\n />\n <EmailCandidates\n apiKey={apiKey}\n jobId={jobId}\n setSnackbar={setSnackbar}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n filters={filters}\n />\n <MoveApplications\n apiKey={apiKey}\n jobId={jobId}\n setSnackbar={setSnackbar}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n getApplications={getApplications}\n deselectAll={deselectAll}\n filters={filters}\n />\n <ChangeStatus\n apiKey={apiKey}\n jobId={jobId}\n setSnackbar={setSnackbar}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n applicationStatuses={applicationStatuses}\n getApplications={getApplications}\n filters={filters}\n />\n {modalsOpen.addToEvent && (\n <AddToEvent\n apiKey={apiKey}\n jobId={jobId}\n setSnackbar={setSnackbar}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n filters={filters}\n smsTemplatePermissions={\n !!userPermissions?.['Entities']?.['Create / Edit / Delete SMS Templates']\n }\n />\n )}\n {modalsOpen.inviteToTimeslot && (\n <InviteToTimeslot\n apiKey={apiKey}\n jobId={jobId}\n setSnackbar={setSnackbar}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n filters={filters}\n smsTemplatePermissions={\n !!userPermissions?.['Entities']?.['Create / Edit / Delete SMS Templates']\n }\n />\n )}\n <ExternalEmail\n apiKey={apiKey}\n jobId={jobId}\n setSnackbar={setSnackbar}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n filters={filters}\n />\n <ExportPDF\n apiKey={apiKey}\n jobId={jobId}\n setSnackbar={setSnackbar}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n filters={filters}\n />\n <ExportToOnboard\n apiKey={apiKey}\n jobId={jobId}\n setSnackbar={setSnackbar}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n applicationStatuses={applicationStatuses}\n getApplications={getApplications}\n filters={filters}\n />\n <ExportFoundu\n apiKey={apiKey}\n jobId={jobId}\n setSnackbar={setSnackbar}\n modalsOpen={modalsOpen}\n setModalsOpen={setModalsOpen}\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n filters={filters}\n />\n <InsightsModal\n jobId={jobId}\n open={modalsOpen.aiInsights}\n handleClose={() => setModalsOpen({ ...modalsOpen, aiInsights: false })}\n selectedApplicants={globalSelected}\n handleDeselectApplicant={handleDeselectCandidate}\n setSnackbar={setSnackbar}\n />\n <GenericDialog\n isDialogOpen={modalsOpen.delete}\n setDialogOpen={(isOpen: boolean) => setModalsOpen({ ...modalsOpen, delete: isOpen })}\n buttonCallback={handleDelete}\n title={`Trash Application${selected?.length > 1 ? 's' : ''}`}\n description={`Are you sure you want to trash ${\n selected?.length > 1 ? selected.length : 'the selected'\n } application${selected?.length > 1 ? 's' : ''}?`}\n buttonText=\"Trash\"\n callbackLoading={isDeleting}\n url={`/api/v4/jobs/${jobId}/applications`}\n />\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n );\n}\n","import React, { useContext } from 'react';\nimport Box from '@mui/material/Box';\nimport Collapse from '@mui/material/Collapse';\nimport Button from '@mui/material/Button';\nimport EmailIcon from '@mui/icons-material/Email';\nimport StayCurrentPortraitIcon from '@mui/icons-material/StayCurrentPortrait';\nimport RuleIcon from '@mui/icons-material/Rule';\nimport GroupAddIcon from '@mui/icons-material/GroupAdd';\nimport DriveFileMoveIcon from '@mui/icons-material/DriveFileMove';\nimport MessageIcon from '@mui/icons-material/Message';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport { Event as EventIcon } from '@mui/icons-material';\nimport { ExternalEmailIcon, PDFIcon } from './CustomIcons';\nimport { classes } from './styles';\nimport { EntityContext } from '../Job';\n\nexport default function ApplicationsActionsPanel({\n selected,\n setModalsOpen,\n userPermissions,\n handleOpenAIInsights\n}: {\n selected: number[];\n setModalsOpen: React.Dispatch<React.SetStateAction<Record<string, boolean>>>;\n userPermissions: Record<string, Record<string, boolean>>;\n handleOpenAIInsights: () => void;\n}) {\n const { ai_studio_summaries_enabled, foundu_enabled, foundu_auth_url } = useContext(EntityContext);\n\n const handleFounduExport = () => {\n if (foundu_auth_url) {\n location.href = foundu_auth_url;\n } else {\n setModalsOpen((prev) => ({ ...prev, exportToFoundu: true }))\n }\n }\n\n return (\n <Collapse in={selected?.length > 0}>\n <Box sx={classes.actionsContianer}>\n {userPermissions?.['Applications']?.['Send Bulk Emails'] && (\n <Button\n id=\"email-action-applications-button\"\n variant=\"outlined\"\n startIcon={<EmailIcon />}\n sx={classes.actionButton}\n onClick={() => setModalsOpen((prev) => ({ ...prev, email: true }))}\n >\n Email\n </Button>\n )}\n {userPermissions?.['Applications']?.['Send SMS in bulk'] && (\n <Button\n id=\"sms-action-applications-button\"\n variant=\"outlined\"\n startIcon={<StayCurrentPortraitIcon />}\n sx={classes.actionButton}\n onClick={() => setModalsOpen((prev) => ({ ...prev, sms: true }))}\n >\n SMS\n </Button>\n )}\n {userPermissions?.['Applications']?.['Change status in bulk'] && (\n <Button\n id=\"change-status-action-applications-button\"\n variant=\"outlined\"\n startIcon={<RuleIcon />}\n sx={classes.actionButton}\n onClick={() => setModalsOpen((prev) => ({ ...prev, changeStatus: true }))}\n >\n Change status\n </Button>\n )}\n <Button\n id=\"add-to-event-action-applications-button\"\n variant=\"outlined\"\n startIcon={<EventIcon />}\n sx={classes.actionButton}\n onClick={() => setModalsOpen((prev) => ({ ...prev, addToEvent: true }))}\n >\n Add to Event\n </Button>\n {userPermissions?.['Applications']?.['Bulk Invite to Timeslot'] && (\n <Button\n id=\"invite-to-timeslot-action-applications-button\"\n variant=\"outlined\"\n startIcon={<GroupAddIcon />}\n sx={classes.actionButton}\n onClick={() => setModalsOpen((prev) => ({ ...prev, inviteToTimeslot: true }))}\n >\n Invite to timeslot\n </Button>\n )}\n {userPermissions?.['Applications']?.['Email/Bulk Email External'] && (\n <Button\n id=\"external-email-action-applications-button\"\n variant=\"outlined\"\n startIcon={<ExternalEmailIcon />}\n sx={classes.actionButton}\n onClick={() => setModalsOpen((prev) => ({ ...prev, externalEmail: true }))}\n >\n External email\n </Button>\n )}\n {userPermissions?.['Applications']?.['Bulk PDF'] && (\n <Button\n id=\"export-pdf-action-applications-button\"\n variant=\"outlined\"\n startIcon={<PDFIcon />}\n sx={classes.actionButton}\n onClick={() => setModalsOpen((prev) => ({ ...prev, exportToPdf: true }))}\n >\n Export to PDF\n </Button>\n )}\n {userPermissions?.['Applications']?.['Bulk Move Applications'] && (\n <Button\n id=\"move-action-applications-button\"\n variant=\"outlined\"\n startIcon={<DriveFileMoveIcon />}\n sx={classes.actionButton}\n onClick={() => setModalsOpen((prev) => ({ ...prev, move: true }))}\n >\n Move\n </Button>\n )}\n {userPermissions?.['Applications']?.['Bulk Export To Onboard'] && (\n <Button\n id=\"export-onboard-action-applications-button\"\n variant=\"outlined\"\n startIcon={<DriveFileMoveIcon />}\n sx={classes.actionButton}\n onClick={() => setModalsOpen((prev) => ({ ...prev, exportToOnboard: true }))}\n >\n Export to Onboard\n </Button>\n )}\n {foundu_enabled && (\n <Button\n id=\"export-foundu-button\"\n variant=\"outlined\"\n startIcon={<DriveFileMoveIcon />}\n sx={classes.actionButton}\n onClick={handleFounduExport}\n >\n Export to FoundU\n </Button>\n )}\n {ai_studio_summaries_enabled && (\n <Button\n id=\"ai-insights-action-applications-button\"\n variant=\"outlined\"\n startIcon={<MessageIcon />}\n sx={classes.actionButtonAI}\n onClick={handleOpenAIInsights}\n >\n AI candidate insights\n </Button>\n )}\n {userPermissions?.['Trash']?.['Trash Application'] && (\n <Button\n id=\"trash-action-applications-button\"\n variant=\"outlined\"\n startIcon={<DeleteIcon />}\n sx={{ ...classes.actionButton, ...classes.deleteApplicant }}\n onClick={() => setModalsOpen((prev) => ({ ...prev, delete: true }))}\n >\n Trash\n </Button>\n )}\n </Box>\n </Collapse>\n );\n}\n","/* eslint-disable max-lines */\nimport {\n AttachFile as AttachFileIcon,\n KeyboardArrowLeft as KeyboardArrowLeftIcon,\n KeyboardArrowRight as KeyboardArrowRightIcon,\n Message as MessageIcon,\n NoteAdd as NoteAddIcon\n} from '@mui/icons-material';\nimport {\n Backdrop,\n Box,\n Checkbox,\n CircularProgress,\n FormControl,\n IconButton,\n MenuItem,\n Pagination,\n Paper,\n Popover,\n Select,\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n TableSortLabel,\n Tooltip\n} from '@mui/material';\nimport moment from 'moment-timezone';\nimport React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport InterviewQuestions from '../../../AIStudio/ApplicationSummaries/QuestionsModal/InterviewQuestions';\nimport SummaryPopover from '../../../AIStudio/ApplicationSummaries/SummaryPopover';\nimport { TagList } from '../../Components/CustomUIElements/TagList/TagList';\nimport DocTypeIcon from '../../Components/Utilities/DocTypeIcon';\nimport EditNoteIcon from '@mui/icons-material/EditNote';\nimport Api from '../API';\nimport { EntityContext } from '../Job';\nimport {\n IApplicantAttachment,\n IApplicationTableProps,\n IJobApplication,\n INoteProps,\n NoteState,\n SortableColumnId\n} from '../types';\nimport EditableNote from './EditableNote';\nimport { classes } from './styles';\nimport NotesWithSubjectLine from '../../Components/GenericTable/TableCells/NotesWithSubjectLine';\nimport NotesPopover from './NotePopover';\nimport CandidateIcon from '../../Candidate/CandidateIcon';\n\nconst CHECKBOX_CELL_WIDTH = 58;\nconst ID_CELL_WIDTH = 80;\nconst CANDIDATE_CELL_WIDTH = 200;\n\nexport default function ApplicationsTable({\n apiKey,\n applications,\n applicationStatuses,\n clearAllSelection,\n currentPage,\n density,\n enableSortableColumn,\n getAllApplications,\n getApplications,\n getFilterableStatuses,\n globalSelected,\n isLoading,\n jobId,\n jobTitle,\n rowsPerPage,\n selectAllApplications,\n selectAllIsChecked,\n selectAllIsIndeterminate,\n selected,\n setApplications,\n setCurrentPage,\n setGlobalSelected,\n setPreviewOpen,\n setRowsPerPage,\n setSelectAllApplications,\n setSelectAllIsChecked,\n setSelectAllIsIndeterminate,\n setSelected,\n setSelectedAttachment,\n setSnackbarState,\n setSortBy,\n setSortOrder,\n showGender,\n sortableColumns,\n sortBy,\n sortOrder,\n totalApplications,\n totalPages,\n userPermissions,\n newNoteOnApplicationEnabled,\n newApplicationPage\n}: IApplicationTableProps) {\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const [selectedApplication, setSelectedApplication] = useState<{\n id: null | number;\n attachments: null | IApplicantAttachment[];\n status: null | string;\n link: null | string;\n }>({ id: null, attachments: null, status: null, link: null });\n const [isFetchingAllApplications, setIsFetchingAllApplications] = useState<boolean>(false);\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n const [attachmentsListOpen, setAttachmentsListOpen] = useState(false);\n const [statusAnchorEl, setStatusAnchorEl] = useState<HTMLDivElement | null>(null);\n const [statusIsSending, setStatusIsSending] = useState(false);\n const [tableHovered, setTableHovered] = useState(false);\n const [noteAnchorEl, setNoteAnchorEl] = useState<HTMLButtonElement | null>(null);\n const [canScroll, setCanScroll] = useState([false, true]);\n const tableRef = useRef<HTMLDivElement>(null);\n const actionCellRef = useRef<HTMLDivElement>(null);\n const candidateCellRef = useRef<HTMLDivElement>(null);\n const statusDropdownRef = useRef<HTMLDivElement>(null);\n const preventLoop = useRef(0);\n const [applicantHovered, setApplicantHovered] = useState<boolean>(false);\n const [applicantAnchorEl, setApplicantAnchorEl] = useState<HTMLButtonElement | null>(null);\n const [lastHoveredApplicant, setLastHoveredApplicant] = useState({\n id: null,\n name: '',\n summary: ''\n });\n const [selectedAIApplicant, setSelectedAIApplicant] = useState<IJobApplication | null>(null);\n const [summaryGeneratingIds, setSummaryGeneratingIds] = useState<number[]>([]);\n const { ai_studio_summaries_enabled } = useContext(EntityContext);\n const notesRef = useRef<Array<HTMLInputElement | null>>([]);\n const [activeNote, setActiveNote] = useState<INoteProps['noteState'] | null>(null);\n const canAddNote = userPermissions?.['Applications']?.['Add Notes'];\n const firstThreeColumnsWidth = CHECKBOX_CELL_WIDTH + CANDIDATE_CELL_WIDTH + ID_CELL_WIDTH;\n\n useEffect(() => {\n preventLoop.current = 0;\n }, [applications]);\n\n const handleHoverApplicant = (target, application) => {\n if (application) {\n setLastHoveredApplicant({\n id: application.id,\n name: application.candidate?.firstname + ' ' + application.candidate?.lastname,\n summary: application.summary\n });\n }\n setApplicantHovered(true);\n setApplicantAnchorEl(target);\n };\n\n const handleUnhoverApplicant = useCallback(() => {\n setApplicantHovered(false);\n setApplicantAnchorEl(null);\n }, []);\n\n const tablePadding = (density: string) => {\n if (density === 'Default') {\n return '22px';\n } else if (density === 'Compact') {\n return '15px';\n } else {\n return '8px';\n }\n };\n\n const handleSelectAll = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newGlobalSelected = globalSelected.filter(\n (currentApp) => !applications?.map((app) => app.id).includes(currentApp.id)\n );\n if (event.target.checked) {\n const selectAllGlobalSelected = [...newGlobalSelected, ...applications];\n setSelected(selectAllGlobalSelected?.map((application) => application.id));\n setGlobalSelected(selectAllGlobalSelected);\n setSelectAllIsChecked(true);\n setSelectAllIsIndeterminate(false);\n setSelectAllApplications(true);\n return;\n }\n setSelected(newGlobalSelected?.map((application) => application.id));\n setGlobalSelected(newGlobalSelected);\n setSelectAllIsChecked(false);\n setSelectAllIsIndeterminate(false);\n };\n\n const handleSelectAllApplications = async () => {\n setIsFetchingAllApplications(true);\n const allApplications = await getAllApplications(totalApplications, null, null, null);\n setGlobalSelected(allApplications);\n setSelected(allApplications?.map((application) => application.id));\n setSelectAllIsChecked(true);\n setSelectAllApplications(true);\n setSelectAllIsIndeterminate(false);\n setIsFetchingAllApplications(false);\n };\n\n const handleSelectOne = (\n event: React.ChangeEvent<HTMLInputElement>,\n application: IJobApplication\n ) => {\n let newGlobalSelected = [...globalSelected];\n event.target.checked\n ? newGlobalSelected.push(application)\n : (newGlobalSelected = newGlobalSelected.filter((app) => app.id !== application.id));\n const newSelected = newGlobalSelected?.map((app) => app.id);\n setSelected(newSelected);\n setGlobalSelected(newGlobalSelected);\n setSelectAllIsChecked(\n applications?.map((app) => app.id).every((id) => newSelected.includes(id))\n );\n setSelectAllIsIndeterminate(\n applications?.map((app) => app.id).some((id) => newSelected.includes(id))\n );\n };\n\n const handleRowsPerPageChange = (selection: number) => {\n if (selection === rowsPerPage) return;\n setRowsPerPage(selection);\n getApplications(null, selection, null, null, null);\n };\n\n const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n if (newPage === currentPage) return;\n setCurrentPage(newPage);\n sessionStorage.setItem(`${jobId}-applicationTablePage`, newPage);\n getApplications(newPage, null, null, null, null);\n };\n\n const handleSortChange = (\n event: React.MouseEvent<HTMLSpanElement, MouseEvent>,\n columnValue: string\n ) => {\n const isAsc = sortBy === columnValue && sortOrder === 'asc';\n const newSortOrder = isAsc ? 'desc' : 'asc';\n setSortOrder(newSortOrder);\n setSortBy(columnValue);\n getApplications(null, null, null, { sortBy: columnValue, sortOrder: newSortOrder }, null);\n };\n\n const handleShowAttachmentsList = (\n event: React.MouseEvent<HTMLButtonElement>,\n id: number,\n attachments: IApplicantAttachment[],\n link: string\n ) => {\n setSelectedApplication({ id, attachments, status: null, link });\n setAnchorEl(event.currentTarget);\n setAttachmentsListOpen(true);\n };\n\n const handleStatusChange = async (id: number) => {\n setStatusAnchorEl(null);\n setStatusIsSending(true);\n try {\n const response = await Api.putApplicationStatus(\n { 'X-api-authenticate': apiKey },\n jobId,\n selectedApplication.id ? selectedApplication.id : 0,\n id\n );\n const newApplications = applications?.map((application) => {\n if (application.id === selectedApplication.id) {\n return { ...application, status: response.name, status_details: response };\n } else {\n return application;\n }\n });\n setApplications(newApplications);\n getFilterableStatuses();\n } catch (error) {\n console.log(error);\n } finally {\n setStatusIsSending(false);\n }\n };\n\n const handleScroll = () => {\n if (!tableRef.current) return;\n if (tableRef.current.scrollLeft < 10) {\n setCanScroll([false, true]);\n } else if (\n tableRef.current.scrollLeft >\n tableRef.current.scrollWidth - tableRef.current.clientWidth - 10\n ) {\n setCanScroll([true, false]);\n } else {\n setCanScroll([true, true]);\n }\n };\n\n const handleScrollLeft = () => {\n if (!tableRef.current) return;\n tableRef.current.scrollLeft > 360\n ? (tableRef.current.scrollLeft -= 300)\n : (tableRef.current.scrollLeft = 0);\n };\n\n const handleScrollRight = () => {\n if (!tableRef.current) return;\n tableRef.current.scrollWidth - tableRef.current.clientWidth > 360\n ? (tableRef.current.scrollLeft += 300)\n : (tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth);\n };\n\n const handleStatusDropdown = (anchor: HTMLDivElement, status: string, id: number) => {\n setStatusAnchorEl(anchor);\n setSelectedApplication({ id, attachments: null, status });\n };\n\n const handleSelectAttachment = (attachment: IApplicantAttachment) => {\n setSelectedAttachment({ ...attachment, application_link: selectedApplication.link });\n setPreviewOpen(true);\n };\n\n const handleCloseAttachmentsList = () => {\n setAttachmentsListOpen(false);\n setAnchorEl(null);\n };\n\n const getRatingColor = (rating: number) => {\n if (rating <= 20) {\n return '#CF5005';\n } else if (rating <= 40) {\n return '#E7B500';\n } else if (rating <= 60) {\n return '#B7F018';\n } else if (rating <= 80) {\n return '#94EDBB';\n } else if (rating <= 100) {\n return '#6FCC7C';\n } else {\n return '#FFFFFF';\n }\n };\n\n function isScrollable(element: HTMLElement) {\n return element && element.scrollWidth > element.clientWidth + 20;\n }\n\n const handleScrollableEnter = () => {\n if (!tableRef.current || isLoading) return;\n if (isScrollable(tableRef.current)) setTableHovered(true);\n };\n\n const handleScrollableExit = () => {\n setTableHovered(false);\n };\n\n const handleOpenNote = (\n event: React.MouseEvent<HTMLElement>,\n application: IJobApplication,\n currentIndex: number,\n selectedNote: NoteState\n ) => {\n const isNotePad = selectedNote === NoteState.NOTEPAD;\n if (newNoteOnApplicationEnabled && application.suitability_comment && isNotePad) {\n enableSortableColumn();\n window.requestAnimationFrame(() => {\n notesRef.current[currentIndex]?.focus();\n });\n return;\n }\n\n setSelectedApplication({ id: application.id, attachments: null, status: null });\n setNoteAnchorEl(event.currentTarget);\n setActiveNote(isNotePad ? NoteState.NOTEPAD : NoteState.PERMANENT_RECORD);\n };\n\n const handleCloseNote = () => {\n setNoteAnchorEl(null);\n setSelectedApplication({ id: null, attachments: null, status: null });\n preventLoop.current = 0;\n };\n\n const handleSubmitNote = () => {\n enableSortableColumn();\n };\n\n const headerStyle = (name: string) => {\n switch (name) {\n case 'candidate':\n return {\n ...classes.sticky,\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible),\n minWidth: `${CANDIDATE_CELL_WIDTH}px`,\n left: '138px',\n '& span': { marginLeft: '12px' }\n };\n case 'id':\n return { ...classes.sticky, minWidth: `${ID_CELL_WIDTH}px`, left: '58px' };\n case 'notes':\n return { minWidth: '230px' };\n case 'date':\n return { minWidth: '115px' };\n case 'gender':\n return { paddingLeft: '16px !important' };\n default:\n return { minWidth: '90px' };\n }\n };\n\n const displaySelectAll =\n selectAllApplications &&\n globalSelected?.length !== totalApplications &&\n totalApplications > rowsPerPage;\n\n const renderTableCell = useCallback(\n (\n column: IApplicationTableProps['sortableColumns'][0],\n application: IJobApplication,\n createdAt: JSX.Element[] | '-',\n index: number\n ) => {\n const applicationLink = `${application.application_link}?i=${index + rowsPerPage * (currentPage - 1)}`;\n const newApplicationLink = newApplicationPage\n ? applicationLink.replace('/applications/', '/new_applications/')\n : applicationLink;\n\n const handleHover = {\n onMouseEnter: handleScrollableEnter,\n onMouseLeave: handleScrollableExit\n };\n\n switch (column.id) {\n case 'id':\n return (\n <TableCell\n {...handleHover}\n key={application.id + column.id}\n sx={{\n ...classes.noLinkStyling,\n ...classes.sticky,\n minWidth: '80px',\n left: '58px'\n }}\n >\n <a href={newApplicationLink} className=\"application-id-applications-link\">\n {application.id || '-'}\n </a>\n </TableCell>\n );\n case 'candidate':\n return (\n <TableCell\n key={application.id + column.id}\n sx={{\n ...classes.sticky,\n minWidth: '200px',\n left: '138px',\n ...classes.scrollShadowLeft,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n onMouseEnter={(e) => handleHoverApplicant(e.currentTarget, application)}\n onMouseLeave={handleUnhoverApplicant}\n >\n <Box sx={classes.candidateCell}>\n <CandidateIcon\n existingCandidate={application.candidate?.existing_candidate}\n sx={classes.candidateIcon}\n />\n <a href={newApplicationLink} className=\"candidate-name-applications-link\">\n {application.candidate?.firstname + ' ' + application.candidate?.lastname}\n </a>\n </Box>\n </TableCell>\n );\n case 'gender':\n if (showGender) {\n return (\n <TableCell\n key={application.id + column.id}\n sx={{ paddingLeft: '16px !important' }}\n {...handleHover}\n >\n {application.candidate?.gender_full || '-'}\n </TableCell>\n );\n } else {\n return null;\n }\n case 'suburb':\n return (\n <TableCell key={application.id + column.id} {...handleHover}>\n {application.candidate?.address_details?.suburb || '-'}\n </TableCell>\n );\n case 'state':\n return (\n <TableCell key={application.id + column.id} {...handleHover}>\n {application.candidate?.address_details?.state?.name || '-'}\n </TableCell>\n );\n case 'country':\n return (\n <TableCell\n key={application.id + column.id}\n sx={{ textTransform: 'capitalize !important' }}\n {...handleHover}\n >\n {application.candidate?.address_details?.country?.name?.toLowerCase() || '-'}\n </TableCell>\n );\n case 'phone':\n return (\n <TableCell key={application.id + column.id} {...handleHover}>\n {application.candidate?.phone1 || '-'}\n </TableCell>\n );\n case 'date':\n return (\n <TableCell key={application.id + column.id} {...handleHover}>\n {createdAt}\n </TableCell>\n );\n case 'rating':\n return (\n <TableCell\n key={application.id + column.id}\n sx={{\n color: '#000000',\n fontWeight: '600'\n }}\n {...handleHover}\n >\n <Box\n sx={{\n ...classes.rating,\n backgroundColor: getRatingColor(\n application.rating === null ? 101 : Number(application.rating)\n )\n }}\n >\n {application.rating ? Math.ceil(Number(application.rating)) + '%' : '-'}\n </Box>\n </TableCell>\n );\n case 'status':\n return (\n <TableCell\n key={application.id + column.id}\n sx={classes.applicationStatus}\n {...handleHover}\n >\n <Box\n sx={{\n ...classes.statusDropdown,\n ...classes.statusClamp,\n cursor: userPermissions?.['Applications']?.['Change Status']\n ? 'pointer'\n : 'default',\n ...(!userPermissions?.['Applications']?.['Change Status']\n ? {\n '&::after': {\n display: 'none'\n }\n }\n : {})\n }}\n onClick={(event) => {\n if (!userPermissions?.['Applications']?.['Change Status']) return;\n handleStatusDropdown(event.currentTarget, application.status, application.id);\n }}\n ref={statusDropdownRef}\n className=\"status-dropdown-applications-table\"\n >\n <Box\n className=\"status-dropdown-full\"\n sx={{\n cursor: userPermissions?.['Applications']?.['Change Status']\n ? 'pointer'\n : 'default',\n '&::after': {\n display: userPermissions?.['Applications']?.['Change Status']\n ? 'block'\n : 'none',\n top:\n statusDropdownRef.current && statusDropdownRef.current.clientHeight > 45\n ? '25.5px'\n : '50%'\n }\n }}\n >\n <>\n {statusIsSending && selectedApplication.id === application.id ? (\n <CircularProgress size={18} sx={classes.statusLoader} />\n ) : (\n <>\n <Box\n sx={{\n ...classes.statusColour,\n backgroundColor: application.status_details?.colour\n ? application.status_details?.colour\n : '#AAAAAA'\n }}\n ></Box>\n {application.status}\n </>\n )}\n </>\n </Box>\n {statusIsSending && selectedApplication.id === application.id ? (\n <CircularProgress size={18} sx={classes.statusLoader} />\n ) : (\n <>\n <Box\n sx={{\n ...classes.statusColour,\n backgroundColor: application.status_details?.colour\n ? application.status_details?.colour\n : '#AAAAAA'\n }}\n ></Box>\n {application.status}\n </>\n )}\n </Box>\n </TableCell>\n );\n case SortableColumnId.NOTE_PAD:\n return (\n <TableCell key={application.id + column.id} {...handleHover}>\n {!!application?.suitability_comment?.length && (\n <EditableNote\n application={application}\n setApplications={setApplications}\n jobId={jobId}\n setSnackbarState={setSnackbarState}\n noteRef={(el) => (notesRef.current[index] = el)}\n />\n )}\n </TableCell>\n );\n case SortableColumnId.PERMANENT_RECORD:\n case SortableColumnId.NOTES:\n return (\n <TableCell\n key={application.id + column.id}\n sx={{ minWidth: '300px', paddingRight: '8px !important' }}\n align=\"left\"\n className=\"note-cell\"\n id={`notes-${application.id}`}\n {...handleHover}\n >\n {application?.notes?.length > 0 ? (\n <NotesWithSubjectLine notes={application?.notes} />\n ) : (\n '-'\n )}\n </TableCell>\n );\n case 'candidate_tags':\n return (\n <TableCell\n key={application.id + column.id}\n sx={{ paddingRight: '8px !important' }}\n align=\"left\"\n className=\"location-cell\"\n {...handleHover}\n >\n {application.tag_list.length > 0 && <TagList tags={application.tag_list} />}\n </TableCell>\n );\n default:\n return <TableCell></TableCell>;\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n currentPage,\n handleUnhoverApplicant,\n rowsPerPage,\n selectedApplication.id,\n showGender,\n statusIsSending,\n tableHovered,\n userPermissions,\n newApplicationPage\n ]\n );\n\n return (\n <Box>\n <Box sx={{ position: 'relative' }}>\n <Box\n onMouseEnter={handleScrollableEnter}\n onMouseLeave={handleScrollableExit}\n sx={{\n ...classes.arrowsContainer,\n position: 'absolute',\n left: `${firstThreeColumnsWidth}px`\n }}\n >\n <Box\n onClick={handleScrollLeft}\n sx={{\n ...classes.leftArrow,\n ...(tableHovered && canScroll[0] && classes.showArrows),\n top: 0\n }}\n id=\"left-arrow\"\n >\n <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n <Box\n onMouseEnter={handleScrollableEnter}\n onMouseLeave={handleScrollableExit}\n sx={{\n ...classes.arrowsContainer,\n position: 'absolute',\n right: `${actionCellRef.current?.offsetWidth}px`\n }}\n >\n <Box\n onClick={handleScrollRight}\n sx={{\n ...classes.rightArrow,\n ...(tableHovered && canScroll[1] && classes.showArrows),\n top: 0\n }}\n id=\"right-arrow\"\n >\n <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </Box>\n <TableContainer\n sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}\n component={Paper}\n onMouseEnter={handleScrollableEnter}\n onMouseLeave={handleScrollableExit}\n ref={tableRef}\n onScroll={handleScroll}\n >\n <Backdrop sx={{ color: '#83ECE7', zIndex: '99999' }} open={isFetchingAllApplications}>\n <CircularProgress color=\"inherit\" />\n </Backdrop>\n <Table\n sx={{\n ...classes.tableWrapper,\n 'th, td, tr, thead': { padding: `${tablePadding(density)} 10px` }\n }}\n aria-label=\"job applications\"\n >\n <TableHead>\n <TableRow>\n <TableCell sx={{ ...classes.sticky, width: `${CHECKBOX_CELL_WIDTH}px` }}>\n <Checkbox\n id=\"select-all-checkbox\"\n sx={classes.checkbox}\n indeterminate={!selectAllIsChecked && selectAllIsIndeterminate}\n checked={selectAllIsChecked}\n onChange={handleSelectAll}\n inputProps={{\n 'aria-label': 'select all applications'\n }}\n />\n </TableCell>\n {sortableColumns\n .filter((column) => (column.id === 'gender' && !showGender ? false : true))\n .map(\n (column) =>\n column.enabled && (\n <TableCell\n key={column.id}\n sx={headerStyle(column.id)}\n ref={column.id === 'candidate' ? candidateCellRef : null}\n >\n <TableSortLabel\n id={`${column.id}-sort-label-applications`}\n active={sortBy === column.id}\n direction={sortBy === column.id ? (sortOrder as 'asc' | 'desc') : 'asc'}\n onClick={(event) => handleSortChange(event, column.id)}\n sx={column.sortable ? classes.sortable : null}\n disabled={!column.sortable || column.id == SortableColumnId.NOTES}\n >\n {column.label}\n </TableSortLabel>\n </TableCell>\n )\n )}\n <TableCell\n sx={{\n ...classes.attachmentsHeader,\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n />\n </TableRow>\n </TableHead>\n <TableBody>\n {applications &&\n (!isLoading || isFetchingAllApplications) &&\n applications?.map((application: IJobApplication, index) => {\n const createdAt = application.created_at\n ? moment\n .tz(application.created_at, timeZoneString)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${application.id}-${line}`}>{line}</div>)\n : '-';\n return (\n <TableRow key={application.id}>\n <TableCell sx={{ ...classes.sticky, width: '58px' }}>\n <Checkbox\n id={`select-checkbox-${application.id}`}\n sx={classes.checkbox}\n checked={selected.includes(application.id)}\n onChange={(event) => handleSelectOne(event, application)}\n inputProps={{\n 'aria-label': `select applicant ${application.candidate?.firstname} ${application.candidate?.lastname}`\n }}\n />\n </TableCell>\n {sortableColumns?.map((column) => {\n if (column.enabled) {\n return renderTableCell(column, application, createdAt, index);\n }\n })}\n <TableCell\n sx={{\n ...classes.attachmentsCell,\n ...classes.stickyRight,\n ...classes.scrollShadowRight,\n ...(tableHovered && classes.scrollShadowVisible)\n }}\n ref={actionCellRef}\n >\n <Box sx={classes.actionItems}>\n {canAddNote && newNoteOnApplicationEnabled && (\n <Tooltip title=\"Add note\" placement=\"top\">\n <IconButton\n className=\"notepad-application-table-button\"\n onClick={(e) =>\n handleOpenNote(e, application, index, NoteState.NOTEPAD)\n }\n >\n <EditNoteIcon />\n </IconButton>\n </Tooltip>\n )}\n {canAddNote && (\n <Tooltip\n title={\n newNoteOnApplicationEnabled ? 'Add permanent record' : 'Add note'\n }\n placement=\"top\"\n >\n <IconButton\n className=\"permanent-application-table-button\"\n onClick={(e) =>\n handleOpenNote(e, application, index, NoteState.PERMANENT_RECORD)\n }\n >\n <NoteAddIcon />\n </IconButton>\n </Tooltip>\n )}\n {application?.attachments?.length > 0 && (\n <IconButton\n className=\"show-attachments-applications-button\"\n aria-label=\"show attachments\"\n onClick={(event) =>\n handleShowAttachmentsList(\n event,\n application.id,\n application.attachments,\n application.application_link\n )\n }\n >\n <AttachFileIcon />\n </IconButton>\n )}\n {ai_studio_summaries_enabled && (\n <Tooltip title=\"Suggested interview questions\" placement=\"top\">\n <IconButton\n className=\"ai-studio-interview-questions-button\"\n aria-label=\"ai studio interview questions\"\n onClick={() => setSelectedAIApplicant(application)}\n sx={classes.aiQuestionsButton}\n >\n <MessageIcon />\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n {!isLoading && applications?.length === 0 && (\n <Box sx={classes.noApplications}>No applications found</Box>\n )}\n {isLoading && !isFetchingAllApplications && (\n <>\n {[...Array(10)].map((_, index) => (\n <Box key={index} sx={classes.skeletonContainer}>\n <Skeleton animation=\"wave\" height={60} />\n </Box>\n ))}\n </>\n )}\n </TableContainer>\n </Box>\n <Box sx={classes.paginationParent}>\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n sx={classes.rowSelect}\n value={rowsPerPage}\n onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" value={10}>\n 10\n </MenuItem>\n <MenuItem id=\"second-rpp-item\" value={20}>\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer}>\n <Pagination\n id=\"pagination-menu\"\n count={totalPages}\n page={currentPage}\n siblingCount={0}\n onChange={handlePageChange}\n sx={classes.pagination}\n />\n <span id=\"total-jobs\">{totalApplications} Total</span>\n </Box>\n </Box>\n <Box\n id=\"selected-tooltip\"\n sx={\n globalSelected?.length > 0\n ? { ...classes.selectedTooltip, ...classes.fadeIn }\n : { ...classes.selectedTooltip, ...classes.fadeOut }\n }\n >\n <Box\n id=\"selected-tooltip-text\"\n sx={{\n display: 'flex',\n paddingLeft: '12px',\n alignItems: 'center',\n ...classes.selectedTooltipText\n }}\n >\n {globalSelected.length === totalApplications\n ? `All ${globalSelected?.length} applications are selected`\n : `${globalSelected?.length} selected`}\n <IconButton\n size=\"small\"\n sx={{\n ...classes.selectedTooltipText,\n ...classes.selectedAllTooltipText,\n marginLeft: 1,\n color: '#666666'\n }}\n onClick={clearAllSelection}\n >\n Clear selection\n </IconButton>\n </Box>\n {displaySelectAll && (\n <IconButton\n disabled={isFetchingAllApplications}\n size=\"small\"\n sx={{ ...classes.selectedTooltipText, ...classes.selectedAllTooltipText }}\n onClick={handleSelectAllApplications}\n >\n Select all {totalApplications} applications\n </IconButton>\n )}\n </Box>\n {selectedApplication.id && (\n <NotesPopover\n anchorEl={noteAnchorEl}\n applicationId={selectedApplication.id}\n handleCloseNote={handleCloseNote}\n jobId={jobId}\n onSuccess={handleSubmitNote}\n setApplications={setApplications}\n setSnackbarState={setSnackbarState}\n noteState={activeNote}\n newNoteOnApplicationEnabled={newNoteOnApplicationEnabled}\n />\n )}\n\n <Popover\n id={attachmentsListOpen ? 'applicant-attachments' : undefined}\n open={attachmentsListOpen}\n anchorEl={anchorEl}\n onClose={handleCloseAttachmentsList}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <Box>\n {selectedApplication?.attachments?.map((attachment) => (\n <Box\n key={attachment.id}\n sx={classes.attachmentItem}\n onClick={() => handleSelectAttachment(attachment)}\n >\n <Box sx={classes.fileIcon}>\n {DocTypeIcon(attachment.attached_file_name.split('.').pop())}\n </Box>\n <Box sx={classes.fileName}>{attachment.attached_file_name}</Box>\n </Box>\n ))}\n </Box>\n </Popover>\n <Popover\n id={statusAnchorEl ? 'status-selection' : undefined}\n sx={classes.statusDropdownItems}\n open={Boolean(statusAnchorEl)}\n anchorEl={statusAnchorEl}\n onClose={() => setStatusAnchorEl(null)}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n >\n {selectedApplication &&\n applicationStatuses\n ?.filter((status) => status.name !== selectedApplication.status)\n ?.map((status) => (\n <Box\n key={status.id}\n sx={classes.statusDropdownItem}\n onClick={() => handleStatusChange(status.id)}\n >\n {status.name}\n </Box>\n ))}\n </Popover>\n {ai_studio_summaries_enabled && (\n <>\n <SummaryPopover\n applicantHovered={applicantHovered}\n handleHoverApplicant={handleHoverApplicant}\n handleUnhoverApplicant={handleUnhoverApplicant}\n lastHoveredApplicant={lastHoveredApplicant}\n anchorEl={applicantAnchorEl}\n jobId={jobId}\n setSnackbarState={setSnackbarState}\n summaryGeneratingIds={summaryGeneratingIds}\n setSummaryGeneratingIds={setSummaryGeneratingIds}\n />\n <InterviewQuestions\n jobId={jobId}\n open={!!selectedAIApplicant}\n handleClose={() => setSelectedAIApplicant(null)}\n selectedApplicantId={selectedAIApplicant?.id}\n positionTitle={jobTitle}\n setSnackbarState={setSnackbarState}\n />\n </>\n )}\n </Box>\n );\n}\n","import React from 'react';\nimport SvgIcon from '@mui/material/SvgIcon';\n\nexport function CeridianIcon(props) {\n return (\n <SvgIcon {...props}>\n <g id=\"Layer_1-2\" transform=\"translate(7 4)\">\n <g id=\"Group_423\" data-name=\"Group 423\" transform=\"translate(0)\">\n <path\n id=\"Path_235\"\n data-name=\"Path 235\"\n d=\"M11.715,12.739l.8,1.179c-.271.178-.528.363-.8.523a7.24,7.24,0,0,1-2.787.985,7.636,7.636,0,0,1-7.193-2.8A7.286,7.286,0,0,1,.11,9.04,7.78,7.78,0,0,1,4.061.913,7.374,7.374,0,0,1,6.572.065c.223-.033.45-.044.675-.065H8.3A7.435,7.435,0,0,1,10.2.354,7.836,7.836,0,0,1,12.4,1.5c.043.032.085.066.145.113L11.73,2.782a.4.4,0,0,0-.074-.087,10.132,10.132,0,0,0-.852-.562,6.429,6.429,0,0,0-2-.676A6.409,6.409,0,0,0,3.385,3.117a6.253,6.253,0,0,0-1.112,1.4,6.374,6.374,0,0,0-.863,2.812A5.9,5.9,0,0,0,1.54,9.072,6.439,6.439,0,0,0,2.13,10.7a6.244,6.244,0,0,0,1.387,1.782,6.807,6.807,0,0,0,1.656,1.084,6.087,6.087,0,0,0,2.114.537,6.2,6.2,0,0,0,2.261-.235,6.268,6.268,0,0,0,2.167-1.127Z\"\n transform=\"translate(0)\"\n fill=\"#606060\"\n />\n <path\n id=\"Path_236\"\n data-name=\"Path 236\"\n d=\"M25.576,26.35a6.276,6.276,0,0,1-2.167,1.127,6.2,6.2,0,0,1-2.261.235,6.087,6.087,0,0,1-2.114-.537,6.825,6.825,0,0,1-1.656-1.084,6.215,6.215,0,0,1-1.387-1.782,6.426,6.426,0,0,1-.59-1.627,5.934,5.934,0,0,1-.129-1.741,6.377,6.377,0,0,1,.863-2.812,6.253,6.253,0,0,1,1.112-1.4,6.412,6.412,0,0,1,7.419-.983,10.132,10.132,0,0,1,.852.562.432.432,0,0,1,.074.087l0,0s-.013,0-.013,0a.178.178,0,0,0,0,.022l-.76,1.129a5,5,0,0,0-2.754-1.137c.075-.066,0-.048-.029-.048-.272,0-.544,0-.816,0-.036,0-.07.033-.105.05a5.13,5.13,0,0,0-1.595.455A4.884,4.884,0,0,0,17,19.6a4.958,4.958,0,0,0,2.46,6.217,4.734,4.734,0,0,0,1.724.478,3.54,3.54,0,0,0,.361.051,5.232,5.232,0,0,0,3.147-1.08c.031-.025.063-.047.105-.079l.779,1.165Z\"\n transform=\"translate(-13.861 -13.611)\"\n fill=\"#828588\"\n />\n <path\n id=\"Path_237\"\n data-name=\"Path 237\"\n d=\"M79.28,30.079c.035-.017.07-.049.105-.05.272,0,.544,0,.816,0,.029,0,.1-.018.029.048Z\"\n transform=\"translate(-72.027 -27.278)\"\n fill=\"#3b6fa9\"\n />\n <path\n id=\"Path_238\"\n data-name=\"Path 238\"\n d=\"M80.265,0h0Z\"\n transform=\"translate(-71.964)\"\n fill=\"#4a6a98\"\n />\n <path\n id=\"Path_239\"\n data-name=\"Path 239\"\n d=\"M128.06,30.406a.177.177,0,0,1,0-.022s.008,0,.013,0A.027.027,0,0,1,128.06,30.406Z\"\n transform=\"translate(-116.343 -27.601)\"\n fill=\"#3167d9\"\n />\n </g>\n </g>\n </SvgIcon>\n );\n}\n\nexport function ExternalEmailIcon(props) {\n return (\n <SvgIcon {...props}>\n <path d=\"M14,2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2M12.54,19.37V17.37H8.54V15.38H12.54V13.38L15.54,16.38L12.54,19.37M13,9V3.5L18.5,9H13Z\" />\n </SvgIcon>\n );\n}\n\nexport function ResendIcon(props) {\n return (\n <SvgIcon {...props}>\n <path\n fill=\"currentColor\"\n d=\"M13 19C13 15.69 15.69 13 19 13C20.1 13 21.12 13.3 22 13.81V6C22 4.89 21.1 4 20 4H4C2.89 4 2 4.89 2 6V18C2 19.11 2.9 20 4 20H13.09C13.04 19.67 13 19.34 13 19M4 8V6L12 11L20 6V8L12 13L4 8M20 22V20H16V18H20V16L23 19L20 22Z\"\n />\n </SvgIcon>\n );\n}\n\nexport function PDFIcon(props) {\n return (\n <SvgIcon {...props}>\n <path\n fill=\"currentColor\"\n d=\"M19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19V5C21 3.9 20.1 3 19 3M9.5 11.5C9.5 12.3 8.8 13 8 13H7V15H5.5V9H8C8.8 9 9.5 9.7 9.5 10.5V11.5M14.5 13.5C14.5 14.3 13.8 15 13 15H10.5V9H13C13.8 9 14.5 9.7 14.5 10.5V13.5M18.5 10.5H17V11.5H18.5V13H17V15H15.5V9H18.5V10.5M12 10.5H13V13.5H12V10.5M7 10.5H8V11.5H7V10.5Z\"\n />\n </SvgIcon>\n );\n}\n","import React, { useState } from 'react';\nimport {\n Box,\n Popover,\n IconButton,\n FormControl,\n FormGroup,\n FormControlLabel,\n Switch,\n Stack,\n Tooltip\n} from '@mui/material';\nimport ViewColumnIcon from '@mui/icons-material/ViewColumn';\nimport { IDropdownProps } from '../../types';\nimport { classes } from '../styles';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableField from './SortableField';\n\nexport default function FieldDropdown({\n sortableColumns,\n setSortableColumns,\n showGender,\n density,\n setDensity,\n setUserPreferences\n}: IDropdownProps) {\n const [anchorEl, setAnchorEl] = useState<HTMLButtonElement | null>(null);\n const [dropdownOpen, setDropdownOpen] = useState(false);\n\n const handleFieldSwitchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newSortableColumns = sortableColumns.map((field) => {\n if (field.id === event.target.name) {\n return { ...field, enabled: event.target.checked };\n } else {\n return field;\n }\n });\n setSortableColumns(newSortableColumns);\n setUserPreferences(null, null, newSortableColumns, null, null);\n };\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n setDropdownOpen(true);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n setDropdownOpen(false);\n };\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n function handleDragEnd(event) {\n const { active, over } = event;\n\n if (active.id !== over.id) {\n const oldIndex = sortableColumns.map((c) => c.id).indexOf(active.id);\n const newIndex = sortableColumns.map((c) => c.id).indexOf(over.id);\n const newArray = arrayMove(sortableColumns, oldIndex, newIndex);\n\n setSortableColumns(newArray);\n setUserPreferences(null, null, newArray, null, null);\n }\n }\n\n return (\n <Tooltip title=\"Table settings\" placement=\"top\" arrow>\n <Box>\n <IconButton\n id=\"field-dropdown-applications-table-button\"\n sx={\n dropdownOpen ? { ...classes.iconButton, ...classes.iconButtonOpen } : classes.iconButton\n }\n onClick={handleClick}\n >\n <ViewColumnIcon />\n </IconButton>\n <Popover\n id=\"field-dropdown-popover\"\n sx={classes.popover}\n open={dropdownOpen}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <Box sx={classes.popoverContent}>\n <Stack sx={classes.tableSettingsHeader}>Column</Stack>\n <FormControl component=\"fieldset\" variant=\"standard\">\n <FormGroup id=\"field-dropdown-switches\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={sortableColumns} strategy={verticalListSortingStrategy}>\n {sortableColumns.map((field, index) => {\n if (field.canToggle === false || (field.id === 'gender' && !showGender))\n return null;\n return (\n <SortableField\n key={index}\n field={field}\n handleFieldSwitchChange={handleFieldSwitchChange}\n />\n );\n })}\n </SortableContext>\n </DndContext>\n </FormGroup>\n </FormControl>\n <Stack sx={{ ...classes.tableSettingsHeader, paddingTop: 2 }}>Density</Stack>\n <FormControl>\n <FormGroup>\n {['Default', 'Compact', 'Ultra Compact'].map((size, index) => {\n const isSwitched = size === density;\n return (\n <FormControlLabel\n sx={\n !isSwitched\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n key={index}\n control={\n <Switch\n sx={isSwitched ? classes.switchActive : classes.switch}\n checked={isSwitched}\n onChange={(event) => {\n setDensity(size);\n setUserPreferences(null, null, null, null, size);\n }}\n name={'density'}\n />\n }\n label={size}\n labelPlacement=\"start\"\n />\n );\n })}\n </FormGroup>\n </FormControl>\n </Box>\n </Popover>\n </Box>\n </Tooltip>\n );\n}\n","import React, { useState, useMemo, useCallback, useEffect } from 'react';\nimport MultiSelect, { IOptionType } from '../../../Components/CustomUIElements/MultiSelect';\nimport Box from '@mui/material/Box';\nimport Popover from '@mui/material/Popover';\nimport IconButton from '@mui/material/IconButton';\nimport Badge from '@mui/material/Badge';\nimport Button from '@mui/material/Button';\nimport Switch from '@mui/material/Switch';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Slider from '@mui/material/Slider';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport SortIcon from '@mui/icons-material/Sort';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { defaultFilters } from '../config';\nimport { IFilterDropdownProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Tooltip from '@mui/material/Tooltip';\n\nexport default function FilterDropdown({\n filters,\n setFilters,\n getApplications,\n statusList,\n countryList,\n suburbList,\n setUserPreferences,\n setCurrentPage,\n jobId,\n clearAllSelection\n}: IFilterDropdownProps) {\n const [anchorEl, setAnchorEl] = useState(null);\n const [dropdownOpen, setDropdownOpen] = useState(false);\n const [loadingFilters, setLoadingFilters] = useState(false);\n const [tempFilters, setTempFilters] = useState({ ...filters });\n const [numberOfFilters, setNumberOfFilters] = useState(0);\n\n const calculateNumberOfFilters = useCallback((newFilters) => {\n return (\n Number(!!newFilters.status.length) +\n Number(!!newFilters?.country?.length) +\n Number(!!newFilters?.suburb?.length) +\n Number(newFilters.rating[0] !== 0 || newFilters.rating[1] !== 100) +\n Number(newFilters.excludeApplicantsWithoutRating)\n );\n }, []);\n\n const handleDropdownOpen = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n setDropdownOpen(true);\n };\n\n const handleFilterChange = (name: string, value: IOptionType[] | number[] | boolean) => {\n setTempFilters({ ...tempFilters, [name]: value });\n };\n\n const handleApplyFilters = () => {\n setFilters({ ...tempFilters });\n setCurrentPage(1);\n sessionStorage.setItem(`${jobId}-applicationTablePage`, 1);\n setUserPreferences(null, null, null, { ...tempFilters }, null);\n getApplications(1, null, null, null, tempFilters);\n setDropdownOpen(false);\n setAnchorEl(null);\n setNumberOfFilters(calculateNumberOfFilters(tempFilters));\n clearAllSelection();\n };\n\n const handleResetFilters = () => {\n setTempFilters({ ...defaultFilters });\n setUserPreferences(null, null, null, { ...defaultFilters }, null);\n setFilters({ ...defaultFilters });\n getApplications(null, null, null, null, defaultFilters);\n setDropdownOpen(false);\n setAnchorEl(null);\n setNumberOfFilters(0);\n clearAllSelection();\n };\n\n const statusOptions = useMemo(() => {\n return statusList?.map((status) => ({\n name: status.name,\n id: status.id,\n colour: status.colour\n }));\n }, [statusList]);\n\n const countryOptions = useMemo(() => {\n return countryList?.map((country) => ({\n name: country.name,\n id: country.id\n }));\n }, [countryList]);\n\n const suburbOptions = useMemo(() => {\n return suburbList?.map((suburb) => ({\n name: suburb.name,\n id: suburb.id\n }));\n }, [suburbList]);\n\n useEffect(() => {\n setTempFilters({ ...filters });\n setNumberOfFilters(calculateNumberOfFilters(filters));\n }, [filters, calculateNumberOfFilters]);\n\n return (\n <Tooltip title=\"Filter\" placement=\"top\" arrow>\n <Box>\n <Badge\n badgeContent={numberOfFilters}\n sx={{ '& .MuiBadge-badge': { backgroundColor: '#E37D7A', color: '#FFF' } }}\n >\n <IconButton\n id=\"filter-dropdown-applications-table-button\"\n sx={\n dropdownOpen\n ? { ...classes.iconButton, ...classes.iconButtonOpen }\n : classes.iconButton\n }\n onClick={handleDropdownOpen}\n >\n {loadingFilters ? <CircularProgress size={24} /> : <SortIcon />}\n </IconButton>\n </Badge>\n <Popover\n id=\"filter-dropdown-popover\"\n sx={classes.popover}\n open={dropdownOpen}\n anchorEl={anchorEl}\n onClose={() => setDropdownOpen(false)}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <Box sx={classes.filterPopoverContent}>\n <Box sx={classes.scrollableFilters}>\n <Box sx={classes.filterPopoverHeader}>\n <Button\n id=\"reset-filters-button\"\n variant=\"contained\"\n endIcon={<CancelIcon />}\n sx={classes.clearButton}\n onClick={handleResetFilters}\n >\n Clear all\n </Button>\n <Button\n id=\"apply-filters-button\"\n variant=\"contained\"\n onClick={handleApplyFilters}\n sx={classes.applyButton}\n >\n Apply\n </Button>\n </Box>\n <Box\n sx={{ ...classes.filterOptionContainer, marginBottom: '20px' }}\n id=\"status-filter\"\n >\n Status\n <MultiSelect\n handleFilterChange={(name, value) => handleFilterChange(name, value)}\n selectOptions={statusOptions}\n name={'status'}\n filters={tempFilters.status}\n />\n </Box>\n <Box\n sx={{ ...classes.filterOptionContainer, marginBottom: '20px' }}\n id=\"country-filter\"\n >\n Country\n <MultiSelect\n handleFilterChange={(name, value) => handleFilterChange(name, value)}\n selectOptions={countryOptions}\n name={'country'}\n filters={tempFilters.country}\n />\n </Box>\n <Box\n sx={{ ...classes.filterOptionContainer, marginBottom: '20px' }}\n id=\"suburb-filter\"\n >\n Suburb\n <MultiSelect\n handleFilterChange={(name, value) => handleFilterChange(name, value)}\n selectOptions={suburbOptions}\n name={'suburb'}\n filters={tempFilters.suburb}\n />\n </Box>\n <Box\n sx={{ ...classes.filterOptionContainer, paddingBottom: '6px' }}\n id=\"rating-filter\"\n >\n Rating\n <Box sx={{ padding: '0px 9px' }}>\n <Slider\n sx={sharedClasses.ratingSlider}\n getAriaLabel={() => 'Applicant Rating'}\n value={tempFilters.rating}\n onChange={(event, value: number | number[]) =>\n handleFilterChange('rating', value as number[])\n }\n valueLabelDisplay=\"on\"\n valueLabelFormat={(value: number) => `${value}%`}\n getAriaValueText={(value: number) => `${value}%`}\n />\n </Box>\n </Box>\n <Box sx={classes.checkboxContainer} id=\"unrated-filter\">\n <FormControlLabel\n sx={\n !tempFilters.excludeApplicantsWithoutRating\n ? { ...classes.filterSwitchLabels, ...classes.labelActive }\n : classes.filterSwitchLabels\n }\n control={\n <Switch\n sx={\n tempFilters.excludeApplicantsWithoutRating\n ? classes.filterSwitchActive\n : classes.filterSwitch\n }\n checked={tempFilters.excludeApplicantsWithoutRating}\n onChange={() =>\n handleFilterChange(\n 'excludeApplicantsWithoutRating',\n !tempFilters.excludeApplicantsWithoutRating\n )\n }\n />\n }\n label=\"Exclude unrated\"\n labelPlacement=\"start\"\n />\n </Box>\n </Box>\n </Box>\n </Popover>\n </Box>\n </Tooltip>\n );\n}\n","import React from 'react';\nimport { Box, IconButton, FormControlLabel, Switch } from '@mui/material';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { IDropdownProps } from '../../types';\nimport { classes } from '../styles';\n\nconst SortableField = ({\n field,\n handleFieldSwitchChange\n}: {\n field: IDropdownProps['sortableColumns'][0];\n handleFieldSwitchChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) => {\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n useSortable({ id: field.id });\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition\n };\n\n return (\n <Box key={field.id} sx={classes.sortableField} style={style} ref={setNodeRef} {...attributes}>\n <IconButton ref={setActivatorNodeRef} {...listeners}>\n <DragIndicatorIcon sx={{ fontSize: 16 }} />\n </IconButton>\n <FormControlLabel\n sx={\n !field.enabled\n ? { ...classes.sortableSwitchLabels, ...classes.labelActive }\n : classes.sortableSwitchLabels\n }\n control={\n <Switch\n sx={field.enabled ? classes.switchActive : classes.switch}\n checked={field.enabled}\n onChange={handleFieldSwitchChange}\n name={field.id}\n />\n }\n label={field.label}\n labelPlacement=\"start\"\n />\n </Box>\n );\n};\n\nexport default SortableField;\n","import { Close } from '@mui/icons-material';\nimport { Box, Button, CircularProgress, TextField, Tooltip } from '@mui/material';\nimport { useMutation } from '@tanstack/react-query';\nimport React, { ChangeEvent, FC, useCallback, useEffect, useState } from 'react';\nimport API from '../API';\nimport { IEditableNotes } from '../types';\nimport { classes } from './styles';\nimport { IError } from '../../SmartForms/types';\nimport { emojiInString } from '../../utils/emoji-checker';\nimport { NOTES_ERROR_MESSAGE } from '../../constants';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\n\nconst EditableNote: FC<IEditableNotes> = ({\n application,\n setApplications,\n jobId,\n setSnackbarState,\n noteRef\n}) => {\n const [note, setNote] = useState(application.suitability_comment || '');\n const [isNotEditable, setIsNotEditable] = useState(true);\n const [noteError, setNoteError] = useState('');\n\n const handleOnChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (isNotEditable) return;\n const { value } = e.target;\n setNote(value);\n };\n\n const handleCancel = () => {\n setNoteError('');\n setNote(application.suitability_comment);\n setIsNotEditable(true);\n };\n\n const handleInputFocus = (): void => setIsNotEditable(false);\n\n const validateInput = () => {\n if (emojiInString(note)) {\n setNoteError(NOTES_ERROR_MESSAGE);\n return true;\n }\n return false;\n };\n\n const { mutate: saveNote, isLoading } = useMutation({\n mutationFn: async (): Promise<void> => {\n await API.updateNote(jobId, application.id, { suitability_comment: note }).then(\n (response) => {\n if (response.success) {\n setSnackbarState({\n message: response.message,\n state: 'success'\n });\n }\n setApplications((prevApplications) => {\n const newApplications = [...prevApplications];\n const applicationIndex = newApplications.findIndex(\n (currentApplication) => currentApplication.id === application.id\n );\n newApplications[applicationIndex].suitability_comment = note;\n return newApplications;\n });\n setIsNotEditable(true);\n setNoteError('');\n }\n );\n },\n onError: (error: IError) => {\n const errorMessage = error.errors ? error.errors.join('. ') : error;\n setSnackbarState({\n message: `There was an error updating the note ${errorMessage}`,\n state: 'error'\n });\n }\n });\n\n const handleEditClick = () => {\n setIsNotEditable(false);\n };\n\n const handleKeyDown = useCallback((e: KeyboardEvent) => {\n if (e.key == 'Escape') {\n setIsNotEditable(true);\n }\n }, []);\n\n useEffect(() => {\n window.addEventListener('keydown', handleKeyDown);\n\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [handleKeyDown]);\n\n return (\n <Tooltip placement=\"top-end\" title=\"Edit\" arrow>\n <Box sx={classes.noteContainer}>\n <TextField\n id={`notes-text-area-${application.id}`}\n InputProps={{ sx: classes.text }}\n inputRef={noteRef}\n multiline={true}\n onChange={handleOnChange}\n onClick={handleEditClick}\n onFocus={handleInputFocus}\n rows={2}\n value={note}\n />\n {!!noteError && <Box sx={sharedClasses.errorText}>{noteError}</Box>}\n {!isNotEditable && (\n <Box sx={classes.noteEditButtonContainer}>\n <Button sx={classes.notesCancelButton} endIcon={<Close />} onClick={handleCancel}>\n Cancel\n </Button>\n <Button\n type=\"submit\"\n sx={classes.notesEditSaveButton}\n disabled={isLoading}\n onClick={() => {\n if (validateInput()) return;\n saveNote();\n }}\n >\n {isLoading ? <CircularProgress size={20} color=\"inherit\" /> : 'Save'}\n </Button>\n </Box>\n )}\n </Box>\n </Tooltip>\n );\n};\n\nexport default EditableNote;\n","import React, { useState } from 'react';\nimport { Box, Button, Modal, Stack } from '@mui/material';\nimport { Close as CloseIcon, NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport { ControlledStaticDatePicker } from '../../../Components/CustomUIElements/SingleDatePicker';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { IAddToEventModalProps } from '../../types';\nimport { classes } from '../styles';\nimport { useQuery, useMutation } from '@tanstack/react-query';\nimport { IEvent } from '../../types';\nimport API from '../../API';\nimport { IError } from '../../../SmartForms/types';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport VirtualizeGrouped from '../../../Components/CustomUIElements/VirtualizedGroupedAutocomplete';\nimport SmsTemplateComponent from '../../../Components/CustomUIElements/SmsTemplateComponent';\nimport HtmlEditor from '../../../Components/Utilities/HtmlEditor';\nimport NotificationOptionSwitch from '../../../Application/Modals/Components/NotificationOptionsSwitch';\nimport { usePlaceholders } from '../../../hooks';\nimport { useEmailTemplatesOptions } from '../../../hooks';\nimport { ISmsTemplate } from './SMSCandidates';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\nexport default function AddToEvent({\n apiKey,\n jobId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n globalSelected,\n handleDeselectCandidate,\n filters,\n smsTemplatePermissions\n}: IAddToEventModalProps) {\n const [selectedDay, setSelectedDay] = useState<Date | null>(new Date());\n const [selectedTimeSlot, setSelectedTimeSlot] = useState<number>(0);\n const [step, setStep] = useState<number>(1);\n const [notification, setNotification] = useState<string>('email');\n const [smsMessage, setSmsMessage] = useState<string>('');\n const [smsTemplate, setSmsTemplate] = useState<ISmsTemplate | null>(null);\n const [selectedEmailTemplate, setSelectedEmailTemplate] = useState<string | null>('');\n const [body, setBody] = useState<string>('');\n\n const { data: events, isLoading: loadingEvents } = useQuery({\n queryKey: ['events'],\n queryFn: async () => {\n const { events } = await API.getEvents(new Date(), { 'X-api-authenticate': apiKey });\n return events as IEvent[];\n },\n onError: (error: IError) => setSnackbar({ message: error.errors.join(', '), state: 'error' })\n });\n\n const { data: placeholders } = usePlaceholders({\n type: 'event',\n apiKey,\n onError: (message: string) => setSnackbar({ message, state: 'error' })\n });\n\n const { data: emailTemplates, isLoading: loadingEmailTemplates } = useEmailTemplatesOptions({\n apiKey,\n onError: (message: string) => setSnackbar({ message, state: 'error' })\n });\n\n useQuery({\n queryKey: [selectedEmailTemplate],\n queryFn: async () => {\n if (!selectedEmailTemplate) return;\n const res = await API.getEmailTemplate(\n { 'X-api-authenticate': apiKey },\n Number(selectedEmailTemplate.split(' -')[0])\n );\n return res;\n },\n onSuccess: (emailTemplate) => setBody(emailTemplate.body),\n onError: (error: IError) => setSnackbar({ message: error.errors.join(', '), state: 'error' }),\n enabled: !!selectedEmailTemplate\n });\n\n const eventCandidates = events\n ?.find((e) => e.id === selectedTimeSlot)\n ?.attendees.filter((a) => a.type === 'Candidate')\n .map((c) => c.application_id);\n\n const bookableCandidates = globalSelected\n .map((s) => s.id)\n .filter((c) => !eventCandidates?.includes(c));\n\n const { mutate: sendEmail, isLoading: sendingEmail } = useMutation({\n mutationFn: async () => {\n if (!selectedEmailTemplate) return;\n const res = await API.sendEmail(\n { 'X-api-authenticate': apiKey },\n jobId,\n selectedTimeSlot,\n Number(selectedEmailTemplate.split(' -')[0]),\n body,\n bookableCandidates\n );\n return res;\n },\n onSuccess: () => {\n setSnackbar({\n message: 'Add to event email notification has been sent successfully',\n state: 'success'\n });\n setModalsOpen((prev) => ({ ...prev, addToEvent: false }));\n },\n onError: (error: { success: boolean; message: string }) =>\n setSnackbar({ message: error.message, state: 'error' })\n });\n\n const { mutate: sendSms, isLoading: sendingSms } = useMutation({\n mutationFn: async () => {\n const res = await API.addToEventSms(\n jobId,\n selectedTimeSlot,\n bookableCandidates,\n smsMessage,\n smsTemplate?.id\n );\n if (res.success !== 0) {\n setSnackbar({\n message: 'Add to event SMS notification has been sent successfully',\n state: 'success'\n });\n setModalsOpen((prev) => ({ ...prev, addToEvent: false }));\n } else {\n setSnackbar({ message: 'There is an error in sending SMS notification', state: 'error' });\n }\n return res;\n }\n });\n\n const selectedDayEvents = events?.filter((e) => {\n if (!selectedDay) return false;\n return formatToUserTimeZone(e.begins_at, 'ymd') === formatToUserTimeZone(selectedDay, 'ymd');\n });\n\n const shouldDisableDate = (date: Date) => {\n if (!events) return true;\n return !events\n .map((e) => formatToUserTimeZone(e.begins_at, 'ymd'))\n .includes(formatToUserTimeZone(date, 'ymd'));\n };\n\n const buttonName = step === 1 ? 'Next' : 'Send';\n\n const disableButton = () => {\n if (step === 1) {\n return !selectedTimeSlot || !bookableCandidates.length;\n } else {\n return notification === 'email' ? !body : !smsMessage.trim();\n }\n };\n\n const handleSubmit = () => {\n if (step === 1) {\n setStep(2);\n } else {\n notification === 'email' ? sendEmail() : sendSms();\n }\n };\n\n return (\n <Modal\n open={modalsOpen.addToEvent}\n onClose={() => setModalsOpen((prev) => ({ ...prev, addToEvent: false }))}\n aria-labelledby=\"add-to-event-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon\n onClick={() => setModalsOpen((prev) => ({ ...prev, addToEvent: false }))}\n sx={classes.closeIcon}\n />\n <Box id=\"add-to-event-title\" sx={{ ...classes.actionModalHeader, paddingBottom: 3 }}>\n Add to Event\n </Box>\n {step === 1 ? (\n <>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <Box sx={classes.calendar}>\n <ControlledStaticDatePicker\n displayStaticWrapperAs=\"desktop\"\n views={['day']}\n value={selectedDay}\n disablePast\n onChange={(value) => setSelectedDay(value)}\n shouldDisableDate={shouldDisableDate}\n />\n </Box>\n <Box sx={classes.dailyTimeslots}>\n <Box sx={{ ...classes.dailyTimeslotsHeader, marginTop: 2, marginBottom: '20px' }}>\n Choose available timeslot\n </Box>\n {loadingEvents ? (\n <Box sx={classes.noTimeslots}>\n <CircularProgress size={32} />\n </Box>\n ) : (\n <Stack sx={classes.addToEventTimeslotsContainer}>\n {selectedDayEvents?.map((e) => {\n const candidates = e.attendees.filter((a) => a.type === 'Candidate');\n const fullyBooked = candidates.length === e.max_candidates;\n return (\n <Stack\n key={e.id}\n sx={{\n ...classes.addToEventTimeslot,\n border: `1px solid ${\n e.id === selectedTimeSlot ? '#5BC4C0' : '#DDDDDD'\n }`,\n color: `${fullyBooked ? '#939393' : '#666666'}`,\n background: `${fullyBooked ? '#EAEEF0' : 'inherit'}`,\n cursor: `${fullyBooked ? 'unset' : 'pointer'}`\n }}\n onClick={() => {\n if (fullyBooked) return;\n if (globalSelected.length > e.max_candidates - candidates.length) {\n setSnackbar({\n message:\n 'Candidate count exceeds timeslot capacity. please align candidate numbers with available capacity',\n state: 'warning'\n });\n } else {\n setSelectedTimeSlot(e.id);\n }\n }}\n >\n <Stack sx={{ rowGap: '4px' }}>\n <Stack sx={{ fontSize: '14px' }}>\n {formatToUserTimeZone(e.begins_at, 'onlyTime')}\n </Stack>\n <Stack sx={{ fontSize: '12px' }}>{e.subject}</Stack>\n </Stack>\n <Stack sx={{ color: `${fullyBooked ? '#939393' : '#084D6D'}` }}>\n {candidates.length}/{e.max_candidates} BOOKED\n </Stack>\n </Stack>\n );\n })}\n </Stack>\n )}\n </Box>\n </Stack>\n <Box\n sx={{\n ...classes.modalContent,\n margin: 'unset',\n '&::-webkit-scrollbar': {\n display: 'none'\n }\n }}\n id=\"add-to-event-modal-content\"\n aria-label=\"Add to Event Modal Content\"\n >\n <Box sx={{ marginLeft: '15px' }}>\n <h3>Candidates</h3>\n <SelectedApplicants\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n closeModalCallback={() =>\n setModalsOpen((prev) => ({ ...prev, addToEvent: false }))\n }\n filters={filters}\n eventCandidates={eventCandidates}\n />\n </Box>\n </Box>\n </>\n ) : (\n <Stack sx={classes.addToEventSecondStepContainer}>\n <NotificationOptionSwitch\n setNotification={setNotification}\n notification={notification}\n />\n {notification === 'email' ? (\n <Stack sx={{ paddingTop: 4, rowGap: 3 }}>\n <VirtualizeGrouped\n options={emailTemplates || []}\n value={selectedEmailTemplate}\n onChange={(value) => {\n !value && setBody('');\n setSelectedEmailTemplate(value);\n }}\n styles={{\n ...sharedClasses.formAutocomplete,\n marginRight: '1px',\n '&.MuiAutocomplete-root': {\n '& .MuiOutlinedInput-root': {\n paddingRight: '16px !important'\n }\n }\n }}\n label=\"Choose email template\"\n loading={loadingEmailTemplates}\n loadingText=\"Loading email templates...\"\n />\n <Stack sx={{ marginLeft: '3px', rowGap: 0.5 }}>\n <Stack sx={{ color: '#838383' }}>Body</Stack>\n <HtmlEditor body={body} onBlur={setBody} maxHeight={400} />\n <Stack sx={classes.addToEventEmailPlaceholder}>\n Available placeholders are: {placeholders}\n </Stack>\n </Stack>\n </Stack>\n ) : (\n <SmsTemplateComponent\n smsTemplatePermissions={smsTemplatePermissions}\n setSnackbar={setSnackbar}\n smsMessage={smsMessage}\n setSmsMessage={setSmsMessage}\n smsTemplate={smsTemplate}\n setSmsTemplate={setSmsTemplate}\n />\n )}\n </Stack>\n )}\n <Box sx={{ ...classes.modalFooter, columnGap: 1, paddingTop: 2 }}>\n <Button\n id=\"close-add-to-event-modal-button\"\n sx={classes.modalCancelButton}\n onClick={() => setModalsOpen((prev) => ({ ...prev, addToEvent: false }))}\n >\n Cancel\n </Button>\n {step !== 1 && (\n <Button\n onClick={() => setStep(1)}\n sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n >\n <NavigateBeforeIcon />\n </Button>\n )}\n <Button\n id=\"add-to-event-submit-button\"\n type=\"submit\"\n sx={{\n ...sharedClasses.genericButton,\n '&.Mui-disabled ': { background: '#DDDDDD', color: '#939393' }\n }}\n onClick={handleSubmit}\n disabled={disableButton()}\n >\n {sendingSms || sendingEmail ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n buttonName\n )}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Chip from '@mui/material/Chip';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@mui/material/IconButton';\nimport IosShareIcon from '@mui/icons-material/IosShare';\nimport { IExportCSVProps } from '../../types';\nimport { classes } from '../styles';\n\nexport default function CSVExport({\n apiKey,\n filters,\n order,\n orderBy,\n activeColumns\n}: IExportCSVProps) {\n const [modalOpen, setModalOpen] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [selectedFields, setSelectedFields] = useState({\n candidate: activeColumns.candidate,\n gender: activeColumns.gender,\n suburb: activeColumns.suburb,\n country: activeColumns.country,\n date: activeColumns.date,\n rating: activeColumns.rating,\n status: activeColumns.status,\n answers: true,\n notes: false,\n individualRating: false\n });\n\n const handleModalOpen = () => {\n setModalOpen(true);\n setSelectedFields({\n candidate: activeColumns.candidate,\n gender: activeColumns.gender,\n suburb: activeColumns.suburb,\n country: activeColumns.country,\n date: activeColumns.date,\n rating: activeColumns.rating,\n status: activeColumns.status,\n answers: true,\n notes: false,\n individualRating: false\n });\n };\n\n const handleClickChip = (field: string) => {\n setSelectedFields((previousSelections) => ({\n ...previousSelections,\n [field]: !previousSelections[field]\n }));\n };\n\n const handleExportCSV = () => {\n setIsLoading(true);\n try {\n console.log('api call will go here');\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n setModalOpen(false);\n }\n };\n\n return (\n <>\n <Box>\n <IconButton id=\"export-applications-csv\" sx={classes.iconButton} onClick={handleModalOpen}>\n <IosShareIcon />\n </IconButton>\n </Box>\n <Modal\n open={modalOpen}\n onClose={() => setModalOpen(false)}\n aria-labelledby=\"export-applications-csv-modal\"\n >\n <Box sx={classes.csvExportModal}>\n <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n <Box id=\"export-applications-csv-modal-title\" sx={classes.csvExportHeader}>\n Select the fields to include in the CSV export\n </Box>\n <Box sx={classes.csvExportSubheader}>\n Your active filters and sorting will be applied automatically.\n </Box>\n <Box sx={classes.chipPacket}>\n <Chip label=\"ID\" sx={classes.chipSelected} />\n <Chip label=\"Candidate\" sx={classes.chipSelected} />\n <Chip\n label=\"Gender\"\n sx={selectedFields.gender ? classes.chipSelected : classes.chip}\n onClick={() => handleClickChip('gender')}\n />\n <Chip\n label=\"Suburb\"\n sx={selectedFields.suburb ? classes.chipSelected : classes.chip}\n onClick={() => handleClickChip('suburb')}\n />\n <Chip\n label=\"Country\"\n sx={selectedFields.country ? classes.chipSelected : classes.chip}\n onClick={() => handleClickChip('country')}\n />\n <Chip\n label=\"Date\"\n sx={selectedFields.date ? classes.chipSelected : classes.chip}\n onClick={() => handleClickChip('date')}\n />\n <Chip\n label=\"Rating\"\n sx={selectedFields.rating ? classes.chipSelected : classes.chip}\n onClick={() => handleClickChip('rating')}\n />\n <Chip\n label=\"Status\"\n sx={selectedFields.status ? classes.chipSelected : classes.chip}\n onClick={() => handleClickChip('status')}\n />\n <Chip\n label=\"Answers\"\n sx={selectedFields.answers ? classes.chipSelected : classes.chip}\n onClick={() => handleClickChip('answers')}\n />\n <Chip\n label=\"Notes\"\n sx={selectedFields.notes ? classes.chipSelected : classes.chip}\n onClick={() => handleClickChip('notes')}\n />\n <Chip\n label=\"Individual Rating\"\n sx={selectedFields.individualRating ? classes.chipSelected : classes.chip}\n onClick={() => handleClickChip('individualRating')}\n />\n </Box>\n <Button\n id=\"export-applications-csv-button\"\n sx={classes.csvExportButton}\n onClick={handleExportCSV}\n >\n Export CSV\n </Button>\n </Box>\n </Modal>\n </>\n );\n}\n","import React, { useState, useEffect, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport SelectedApplicants from '../SelectedApplicants';\nimport GenericDialog from '../../../Components/Modals/GenericDialog';\nimport {\n IExtendedActionModalProps,\n IApplicationStatus,\n IJobApplication,\n IGetApplications\n} from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\n\ninterface IChangeStatusModalProps extends IExtendedActionModalProps {\n applicationStatuses: IApplicationStatus[];\n getApplications: IGetApplications;\n}\n\nexport default function ChangeStatus({\n apiKey,\n jobId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n globalSelected,\n handleDeselectCandidate,\n applicationStatuses,\n getApplications,\n filters\n}: IChangeStatusModalProps) {\n const [isSending, setIsSending] = useState(false);\n const [noStatusSelected, setNoStatusSelected] = useState(false);\n const [selectedStatus, setSelectedStatus] = useState<IApplicationStatus | null>(null);\n const [tempGlobalSelected, setTempGlobalSelected] = useState<IJobApplication[]>([]);\n const [confirmCancelIsOpen, setConfirmCancelIsOpen] = useState(false);\n const selectStatusRef = useRef(null);\n\n const handleClose = (confirm: boolean) => {\n if (selectedStatus && confirm) {\n setConfirmCancelIsOpen(true);\n } else {\n setModalsOpen((prev) => ({ ...prev, changeStatus: false }));\n setSelectedStatus(null);\n }\n };\n\n const handleSubmit = async () => {\n if (!selectedStatus) {\n setNoStatusSelected(true);\n return;\n }\n setIsSending(true);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/bulk_change_applications_status`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-authenticate': apiKey\n },\n body: JSON.stringify({\n application_ids: tempGlobalSelected.map((app) => app.id),\n change_status: selectedStatus.id\n })\n });\n if (response.ok) {\n getApplications(null, null, null, null, null);\n handleClose(false);\n setSnackbar({\n message:\n 'Status changes queued, please allow up to a few minutes for them to take effect.',\n state: 'success'\n });\n }\n } catch (error) {\n setSnackbar({\n message: 'An error occurred while changing statuses, please try again',\n state: 'error'\n });\n } finally {\n setIsSending(false);\n }\n };\n\n const handleStatusSelect = (\n event: React.SyntheticEvent<Element, Event>,\n value: IApplicationStatus | null\n ) => {\n setSelectedStatus(value);\n setNoStatusSelected(false);\n };\n\n useEffect(() => {\n if (globalSelected.length > 0 && modalsOpen.changeStatus) {\n setTempGlobalSelected(\n globalSelected.map((application) => ({\n ...application,\n status: selectedStatus?.name,\n status_details: selectedStatus\n }))\n );\n }\n }, [globalSelected, modalsOpen.changeStatus, selectedStatus]);\n\n return (\n <Modal\n open={modalsOpen.changeStatus}\n onClose={() => handleClose(true)}\n aria-labelledby=\"change-status-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={() => handleClose(true)} sx={classes.closeIcon} />\n <Box id=\"change-status-title\" sx={classes.actionModalHeader}>\n Change status\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"change-status-modal-content\"\n aria-label=\"Change Status Modal Content\"\n >\n <Box role=\"form\" id=\"change-status-form\" aria-label=\"Change Status form\">\n <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={selectStatusRef}>\n <Autocomplete\n options={applicationStatuses}\n getOptionLabel={(option) => option.name}\n onChange={handleStatusSelect}\n value={selectedStatus}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Change to status\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n />\n\n {noStatusSelected && <Box sx={classes.formError}>Status must be selected</Box>}\n </Box>\n </Box>\n <Box sx={{ marginLeft: '15px' }}>\n <h3>Candidates</h3>\n <SelectedApplicants\n globalSelected={selectedStatus ? tempGlobalSelected : globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n closeModalCallback={() => handleClose(false)}\n filters={filters}\n />\n </Box>\n </Box>\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-change-status-button\"\n sx={classes.modalCancelButton}\n onClick={() => handleClose(true)}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-change-status-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '91px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n <GenericDialog\n isDialogOpen={confirmCancelIsOpen}\n setDialogOpen={setConfirmCancelIsOpen}\n title=\"Status changes have not been saved\"\n description=\"Are you sure you want to close without submitting your changes?\"\n buttonCallback={() => {\n setConfirmCancelIsOpen(false);\n handleClose(false);\n }}\n callbackLoading={false}\n buttonText=\"Close without saving\"\n url=\"\"\n />\n </Box>\n </Modal>\n );\n}\n","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport VirtualizeGrouped, {\n formatOptions\n} from '../../../Components/CustomUIElements/VirtualizedGroupedAutocomplete';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport SelectedApplicants from '../SelectedApplicants';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IExtendedActionModalProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport HtmlEditor from '../../../Components/Utilities/HtmlEditor';\nimport { FileWithPath } from 'react-dropzone';\nimport { serialize } from 'object-to-formdata';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport AttachmentSelectorAndPreview from '../../../Components/CustomUIElements/AttachmentSelectorAndPreview';\nimport { stringToSeconds } from '../../../Components/Utilities/stringToSeconds';\nimport DelaySelectWrapper from '../../../EditJob/Automation/shared/DelaySelectWrapper';\n\nexport default function EmailCandidates({\n apiKey,\n jobId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n globalSelected,\n handleDeselectCandidate,\n filters\n}: IExtendedActionModalProps) {\n const [isSending, setIsSending] = useState(false);\n const [templateError, setTemplateError] = useState(false);\n const [isLoadingTemplateList, setIsLoadingTemplateList] = useState(false);\n const [templates, setTemplates] = useState<string[]>([]);\n const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n const [excludeApplicants, setExcludeApplicants] = useState(false);\n const [delay, setDelay] = useState('None');\n const [subject, setSubject] = useState('');\n const [body, setBody] = useState('');\n const [sendableBody, setSendableBody] = useState('');\n const [attachments, setAttachments] = useState<FileWithPath[]>([]);\n const [templateAttachments, setTemplateAttachments] = useState([]);\n const [placeholders, setPlaceholders] = useState<string>('');\n const [isLoadingEventList, setIsLoadingEventList] = useState(false);\n const [hasCareAdvantageIntegration, setHasCareAdvantageIntegration] = useState(false);\n const [careAdvantageEvents, setCareAdvantageEvents] = useState([]);\n const [selectedEvent, setSelectedEvent] = useState<string | null>(null);\n\n const templateRef = useRef<HTMLDivElement>(null);\n\n const handleSelectTemplate = async (value: string) => {\n if (!value) {\n setSelectedTemplate(null);\n setBody('');\n setSendableBody('');\n return;\n }\n setBody(\n '<p style=\"text-align: center;\"><span style=\"font-size: 14pt;\"><strong>Loading template...</strong></span></p>'\n );\n const id = value.split(' -')[0];\n setSelectedTemplate(value);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/email_templates/${id}`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const data = await response.json();\n setSubject(data.subject);\n setBody(data.body);\n setSendableBody(data.body);\n setTemplateAttachments(data.email_attachments);\n setTemplateError(false);\n if (response.status !== 200) {\n throw new Error(data);\n }\n } catch (error) {\n setSnackbar({\n message: 'Error loading template',\n state: 'error'\n });\n setBody('');\n }\n };\n\n const getTemplatesAndPlaceholders = useCallback(async () => {\n setIsLoadingTemplateList(true);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/email_templates?group_templates=true`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((res) => res.json());\n const formattedTemplates = formatOptions(response.email_templates);\n setTemplates(formattedTemplates);\n setPlaceholders(response.placeholders);\n } catch (error) {\n setSnackbar({\n message: 'Error fetching templates',\n state: 'error'\n });\n } finally {\n setIsLoadingTemplateList(false);\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const handleClose = () => {\n setModalsOpen((prev) => ({ ...prev, email: false }));\n setSelectedTemplate(null);\n setExcludeApplicants(false);\n setDelay('None');\n setSubject('');\n setBody('');\n setSendableBody('');\n setAttachments([]);\n };\n\n const getCareAdvantageEvents = useCallback(async () => {\n setIsLoadingEventList(true);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/auto_emails/care_advantage_events`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n }\n }).then((res) => res.json());\n setHasCareAdvantageIntegration(response.has_care_advantage_integration);\n setCareAdvantageEvents(response.care_advantage_events);\n } catch (error) {\n setSnackbar({\n message: 'Error fetching care advantage events',\n state: 'error'\n });\n } finally {\n setIsLoadingEventList(false);\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const handleSubmit = async () => {\n if (!selectedTemplate) {\n setTemplateError(true);\n templateRef?.current?.scrollIntoView({ behavior: 'smooth' });\n return;\n }\n setIsSending(true);\n const targetEvent = careAdvantageEvents.find((event) => event.name === selectedEvent);\n const commaSeparatedAppIds = globalSelected.map((app) => app.id).join(',');\n const data = {\n email_batch: {\n applications_ids: commaSeparatedAppIds,\n email_template_id: selectedTemplate.split(' -')[0],\n subject,\n body: sendableBody,\n delay: stringToSeconds(delay),\n only_new: excludeApplicants,\n care_advantage_event_id: targetEvent ? targetEvent.id : '',\n ...(attachments.length > 0 && { new_email_attachments: attachments }),\n filters: filters\n }\n };\n const formData = serialize(data);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/applications/bulk_email`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey\n },\n body: formData\n });\n if (response.status !== 201) {\n const errorData = await response.json();\n throw new Error(errorData.errors || 'An unexpected error occurred');\n } else {\n setSnackbar({\n message: 'Candidates emailed successfully',\n state: 'success'\n });\n handleClose();\n }\n } catch (error) {\n setSnackbar({\n message: error.message,\n state: 'error'\n });\n } finally {\n setIsSending(false);\n }\n };\n\n useEffect(() => {\n if (modalsOpen.email) {\n getTemplatesAndPlaceholders();\n getCareAdvantageEvents();\n }\n }, [getTemplatesAndPlaceholders, getCareAdvantageEvents, modalsOpen.email]);\n\n return (\n <Modal\n open={modalsOpen.email}\n onClose={handleClose}\n disableEnforceFocus\n aria-labelledby=\"email-candidates-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box id=\"email-candidates-title\" sx={classes.actionModalHeader}>\n Email Candidates\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"email-candidates-modal-content\"\n aria-label=\"email Candidates Modal Content\"\n >\n <Box role=\"form\" id=\"email-candidates-form\" aria-label=\"Email Candidates form\">\n <Box sx={classes.actionModalFormLine} ref={templateRef}>\n <VirtualizeGrouped\n value={selectedTemplate}\n options={templates}\n onChange={handleSelectTemplate}\n styles={{\n ...sharedClasses.formAutocomplete,\n width: '600px',\n marginTop: '20px'\n }}\n label=\"Template\"\n loading={isLoadingTemplateList}\n loadingText=\"Loading template list...\"\n />\n {templateError && <Box sx={classes.formError}>Please select a template</Box>}\n </Box>\n <Box sx={classes.actionModalFormLine}>\n <FormControlLabel\n control={\n <Checkbox\n sx={classes.formCheckbox}\n onChange={(e) => setExcludeApplicants(e.target.checked)}\n value={excludeApplicants}\n />\n }\n label=\"Exclude applicants who have received this email template\"\n sx={classes.checkboxLabel}\n />\n </Box>\n <Box sx={{ marginLeft: '15px' }}>\n <h3>Email details</h3>\n </Box>\n <DelaySelectWrapper delay={delay} setDelay={setDelay} />\n {hasCareAdvantageIntegration && (\n <Box sx={{ ...classes.actionModalFormLine, rowGap: '0px !important' }}>\n <Virtualize\n value={selectedEvent}\n passOptions={careAdvantageEvents.map((event) => event.name)}\n setValue={(value: string) => {\n setSelectedEvent(value);\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '600px',\n marginTop: '20px'\n }}\n label=\"Select a Care Advantage Event\"\n />\n <Box sx={classes.placeholderText}>\n Placeholder to use: {'{'}CARE_ADVANTAGE_INVITE_LINK{'}'}\n </Box>\n </Box>\n )}\n <Box sx={classes.actionModalFormLine}>\n <FormTextField\n id=\"email-subject\"\n label=\"Subject\"\n value={subject}\n styles={{ width: '290px' }}\n onChange={(e) => setSubject(e.target.value)}\n />\n </Box>\n <Box sx={classes.modalSection}>\n <Box sx={classes.formLabel}>Body</Box>\n <HtmlEditor body={body} onChange={setSendableBody} />\n <Box sx={classes.placeholderText}>Available placeholders are: {placeholders}</Box>\n </Box>\n <AttachmentSelectorAndPreview\n attachments={attachments}\n setAttachments={setAttachments}\n templateAttachments={templateAttachments}\n />\n <Box sx={{ marginLeft: '15px' }}>\n <h3>Candidates</h3>\n <SelectedApplicants\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n closeModalCallback={handleClose}\n filters={filters}\n />\n </Box>\n </Box>\n </Box>\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-email-candidate-button\"\n sx={classes.modalCancelButton}\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n id=\"send-email-candidate-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Send'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport Checkbox from '@mui/material/Checkbox';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { IExtendedActionModalProps } from '../../types';\nimport { classes } from '../styles';\n\nexport default function ExportFoundU({\n apiKey,\n jobId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n globalSelected,\n handleDeselectCandidate,\n filters\n}: IExtendedActionModalProps) {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [sendEmail, setSendEmail] = useState(false);\n\n const handleSubmit = async () => {\n setIsSubmitting(true);\n try {\n const body = { application_ids: globalSelected.map((app) => app.id) };\n if (sendEmail) {\n body.send_welcome_email = '1';\n }\n\n const response = await fetch(`/api/v4/jobs/${jobId}/export_foundu`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-authenticate': apiKey\n },\n body: JSON.stringify(body)\n });\n if (response.ok) {\n const json = await response.json();\n const failedCount = json.failed;\n const workato: boolean = json.workato;\n\n setModalsOpen((prev) => ({ ...prev, exportToFoundu: false }));\n if (workato) {\n setSnackbar({\n message: 'Applications exported.',\n state: 'success'\n });\n } else {\n setSnackbar({\n message: `Applications exported. ${failedCount} failed`,\n state: failedCount === 0 ? 'success' : 'warning'\n });\n }\n }\n } catch (error) {\n setSnackbar({\n message: 'An error occurred while exporting to FoundU. Please try again.',\n state: 'error'\n });\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <Modal\n open={modalsOpen.exportToFoundu}\n onClose={() => setModalsOpen((prev) => ({ ...prev, exportToFoundu: false }))}\n aria-labelledby=\"export-foundu-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon\n onClick={() => setModalsOpen((prev) => ({ ...prev, exportToFoundu: false }))}\n sx={classes.closeIcon}\n />\n <Box id=\"export-foundu-title\" sx={classes.actionModalHeader}>\n Export to FoundU\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"export-foundu-modal-content\"\n aria-label=\"Export Foundu Modal Content\"\n >\n <Box sx={{ marginLeft: '15px' }}>\n <h3>Candidates</h3>\n <SelectedApplicants\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n closeModalCallback={() =>\n setModalsOpen((prev) => ({ ...prev, exportToFoundu: false }))\n }\n filters={filters}\n />\n </Box>\n <Box sx={{ marginLeft: '15px' }}>\n <Checkbox\n sx={classes.checkbox}\n checked={sendEmail}\n onChange={({ target }) => setSendEmail(target.checked)}\n />\n <span>Send welcome email</span>\n </Box>\n </Box>\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-export-foundu-button\"\n sx={classes.modalCancelButton}\n onClick={() => setModalsOpen((prev) => ({ ...prev, exportToFoundu: false }))}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-export-foundu-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '128px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSubmitting ? <CircularProgress size={20} color=\"inherit\" /> : 'Export'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { IExtendedActionModalProps } from '../../types';\nimport { classes } from '../styles';\n\nexport default function ExportPDF({\n apiKey,\n jobId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n globalSelected,\n handleDeselectCandidate,\n filters\n}: IExtendedActionModalProps) {\n const [isSending, setIsSending] = useState(false);\n\n const handleSubmit = async () => {\n setIsSending(true);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/export_pdf`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-authenticate': apiKey\n },\n body: JSON.stringify({\n application_ids: globalSelected.map((app) => app.id)\n })\n });\n if (response.ok) {\n setModalsOpen((prev) => ({ ...prev, exportToPdf: false }));\n setSnackbar({\n message:\n 'PDFs are being generated. You will receive a download link via email when they are ready.',\n state: 'success'\n });\n }\n } catch (error) {\n setSnackbar({\n message: 'An error occurred while exporting to PDF. Please try again.',\n state: 'error'\n });\n } finally {\n setIsSending(false);\n }\n };\n\n return (\n <Modal\n open={modalsOpen.exportToPdf}\n onClose={() => setModalsOpen((prev) => ({ ...prev, exportToPdf: false }))}\n aria-labelledby=\"export-pdf-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon\n onClick={() => setModalsOpen((prev) => ({ ...prev, exportToPdf: false }))}\n sx={classes.closeIcon}\n />\n <Box id=\"export-pdf-title\" sx={classes.actionModalHeader}>\n Export to PDF\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"export-pdf-modal-content\"\n aria-label=\"Export PDF Modal Content\"\n >\n <Box sx={{ marginLeft: '15px' }}>\n <h3>Candidates</h3>\n <SelectedApplicants\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n closeModalCallback={() => setModalsOpen((prev) => ({ ...prev, exportToPdf: false }))}\n filters={filters}\n />\n </Box>\n </Box>\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-export-pdf-button\"\n sx={classes.modalCancelButton}\n onClick={() => setModalsOpen((prev) => ({ ...prev, exportToPdf: false }))}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-export-pdf-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '128px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Export to PDF'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState } from 'react';\nimport { Box, Button, CircularProgress, Modal, Stack } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { IExtendedActionModalProps } from '../../types';\nimport { classes } from '../styles';\nimport moment from 'moment';\nimport { SingleDatePicker } from '../../../Components/CustomUIElements/SingleDatePicker';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\n\ninterface IFailedExports {\n candidate_name: string;\n error: string;\n}\n\nexport default function ExportToOnboard({\n apiKey,\n jobId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n globalSelected,\n handleDeselectCandidate,\n filters\n}: IExtendedActionModalProps) {\n const [isSending, setIsSending] = useState(false);\n const [failedExports, setFailedExports] = useState<IFailedExports[] | null>(null);\n const [startDate, setStartDate] = useState<Date | null>(null);\n const [dateError, setDateError] = useState<string>('');\n\n const handleClose = () => {\n setStartDate(null);\n setDateError('');\n setFailedExports(null);\n setModalsOpen((prev) => ({ ...prev, exportToOnboard: false }));\n };\n\n const handleSubmit = async () => {\n if (startDate) {\n setIsSending(true);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/scout_onboard_exports`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-authenticate': apiKey\n },\n body: JSON.stringify({\n start_date: moment(startDate).format('YYYY-MM-DD'),\n application_ids: globalSelected.map((app) => app.id)\n })\n });\n if (response.ok) {\n const data = await response.json();\n if (data.errors) {\n setFailedExports(data.errors);\n setSnackbar({\n message: 'Some candidates failed to export',\n state: 'warning'\n });\n } else {\n handleClose();\n setSnackbar({\n message: 'Successfully exported candidate(s) to SCOUT Onboard',\n state: 'success'\n });\n }\n }\n } catch (error) {\n setSnackbar({\n message: 'Error exporting candidate(s) to SCOUT Onboard',\n state: 'error'\n });\n } finally {\n setIsSending(false);\n }\n } else {\n setDateError('Please select a start date');\n }\n };\n\n return (\n <Modal\n open={modalsOpen.exportToOnboard}\n onClose={handleClose}\n aria-labelledby=\"export-onboard-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box id=\"export-onboard-title\" sx={classes.actionModalHeader}>\n Export candidates to Onboard\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"export-onboard-modal-content\"\n aria-label=\"Export Onboard Modal Content\"\n >\n <Box sx={{ marginLeft: '15px' }}>\n <Stack sx={{ paddingBottom: 2 }}>\n <SingleDatePicker\n value={startDate}\n label={`When will the candidate(s) start?`}\n inputStyles={{ ...sharedClasses.datePicker, width: '275px' }}\n onChange={(value) => {\n if (!value?.isValid()) {\n setDateError('Please input a valid date');\n } else {\n setDateError('');\n setStartDate(moment(value).toDate());\n }\n }}\n showTodayButton\n error={dateError}\n required\n />\n </Stack>\n {!failedExports ? (\n <>\n <h3>Candidates</h3>\n <SelectedApplicants\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n closeModalCallback={handleClose}\n filters={filters}\n />\n </>\n ) : (\n <Box sx={classes.centerColumn}>\n <h3>Some candidates failed to export:</h3>\n <Box sx={{ ...classes.centerColumn, ...classes.exportErrors }}>\n {failedExports.map((failedExport) => (\n <Box key={failedExport.candidate_name} sx={classes.centerColumn}>\n <h4>{failedExport.candidate_name}</h4>\n <p>{failedExport.error}</p>\n </Box>\n ))}\n </Box>\n </Box>\n )}\n </Box>\n </Box>\n {!failedExports ? (\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-export-onboard-button\"\n sx={classes.modalCancelButton}\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-export-onboard-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '160px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Export to Onboard'}\n </Button>\n </Box>\n ) : (\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-export-onboard-button\"\n sx={{ ...classes.modalSendButton, width: '91px', height: '41px' }}\n onClick={handleClose}\n >\n Close\n </Button>\n </Box>\n )}\n </Box>\n </Modal>\n );\n}\n","import React, { useState, useContext } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport MultiTagInput from '../../../Components/CustomUIElements/MultiTagInput';\nimport { MultilineFormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IExternalEmailProps } from '../../types';\nimport { classes } from '../styles';\nimport { EntityContext } from '../../Job';\nimport SelectedApplicants from '../SelectedApplicants';\n\nexport default function ExternalEmail({\n apiKey,\n jobId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n globalSelected,\n handleDeselectCandidate,\n filters\n}: IExternalEmailProps) {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [emails, setEmails] = useState<string[]>([]);\n const [includeAttachments, setIncludeAttachments] = useState(false);\n const [includeSmartForms, setIncludeSmartForms] = useState(false);\n const [includeSummaries, setIncludeSummaries] = useState(false);\n const [submissionError, setSubmissionError] = useState('');\n const [notes, setNotes] = useState('');\n const { ai_studio_summaries_enabled } = useContext(EntityContext);\n\n const emailIsValid = (email: string) => {\n const simpleEmailRex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n if (simpleEmailRex.test(String(email).toLowerCase())) {\n setSubmissionError('');\n return true;\n } else {\n return false;\n }\n };\n\n const handleSubmit = async () => {\n if (emails.length === 0) {\n setSubmissionError('Please enter at least one email address');\n return;\n }\n setIsSubmitting(true);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/applications/bulk_external_email`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n application_ids: globalSelected.map((app) => app.id),\n external_view: {\n emails: emails.join(','),\n full_view: includeAttachments,\n smart_forms: includeSmartForms,\n include_summary: includeSummaries,\n notes\n }\n })\n });\n if (response.status === 201) {\n setSnackbar({\n message: 'External emails sent successfully',\n state: 'success'\n });\n handleClose();\n } else {\n setSnackbar({\n message:\n 'Error sending emails, please try again or contact support if the issue persists',\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbar({\n message: 'Error sending emails, please try again or contact support if the issue persists',\n state: 'error'\n });\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleClose = () => {\n setEmails([]);\n setIncludeAttachments(false);\n setIncludeSmartForms(false);\n setSubmissionError('');\n setNotes('');\n setModalsOpen({ ...modalsOpen, externalEmail: false });\n };\n\n return (\n <Modal\n open={modalsOpen.externalEmail}\n onClose={handleClose}\n aria-labelledby=\"external-email-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box id=\"external-email-title\" sx={classes.actionModalHeader}>\n External email\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"external-email-modal-content\"\n aria-label=\"External email modal content\"\n >\n <Box\n role=\"form\"\n id=\"external-email-form\"\n aria-label=\"External email form\"\n sx={{ overflowX: 'hidden' }}\n >\n <h3 style={{ marginLeft: '12px' }}>Recipient Details</h3>\n <Box sx={{ ...classes.actionModalFormLine, marginBottom: '18px' }}>\n <MultiTagInput\n tags={emails}\n setTags={setEmails}\n validation={emailIsValid}\n validationMessage=\"Must input valid email\"\n label=\"Email address/s\"\n width=\"600px\"\n error={submissionError}\n tagType=\"emails\"\n helperText=\"To copy and paste bulk emails, email addresses must be separated with a comma\"\n />\n </Box>\n <Box sx={{ ...classes.actionModalFormLine, marginLeft: '15px' }}>\n <FormControlLabel\n control={\n <Checkbox\n sx={classes.formCheckbox}\n onChange={(e) => setIncludeAttachments(e.target.checked)}\n value={includeAttachments}\n />\n }\n label=\"Include Attachments\"\n sx={classes.checkboxLabel}\n />\n <FormControlLabel\n control={\n <Checkbox\n sx={classes.formCheckbox}\n onChange={(e) => setIncludeSmartForms(e.target.checked)}\n value={includeSmartForms}\n />\n }\n label=\"Include Smart Forms\"\n sx={classes.checkboxLabel}\n />\n {ai_studio_summaries_enabled && (\n <FormControlLabel\n control={\n <Checkbox\n sx={classes.formCheckbox}\n onChange={(e) => setIncludeSummaries(e.target.checked)}\n value={includeSummaries}\n />\n }\n label=\"Include Summaries\"\n sx={classes.checkboxLabel}\n />\n )}\n </Box>\n <Box sx={classes.actionModalFormLine}>\n <MultilineFormTextField\n label=\"Notes\"\n value={notes}\n onChange={(e) => setNotes(e.target.value)}\n styles={{ width: '740px' }}\n />\n </Box>\n <Box sx={{ marginLeft: '15px' }}>\n <h3>Candidates</h3>\n <SelectedApplicants\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n closeModalCallback={() =>\n setModalsOpen((prev) => ({ ...prev, externalEmail: false }))\n }\n filters={filters}\n />\n </Box>\n </Box>\n </Box>\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-external-email-button\"\n sx={classes.modalCancelButton}\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n id=\"send-external-email-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSubmitting ? <CircularProgress size={20} color=\"inherit\" /> : 'Send'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import {\n Autocomplete,\n Box,\n Button,\n Checkbox,\n CircularProgress,\n Collapse,\n FormControlLabel,\n Modal,\n Switch,\n Stack,\n TextField\n} from '@mui/material';\nimport { Close as CloseIcon, NavigateBefore as NavigateBeforeIcon } from '@mui/icons-material';\nimport API from '../../API';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useQuery, useMutation } from '@tanstack/react-query';\nimport { ControlledStaticDatePicker } from '../../../Components/CustomUIElements/SingleDatePicker';\nimport VirtualizeGrouped from '../../../Components/CustomUIElements/VirtualizedGroupedAutocomplete';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport HtmlEditor from '../../../Components/Utilities/HtmlEditor';\nimport { IError } from '../../../SmartForms/types';\nimport { IEvent, IAddToEventModalProps, ISMSTemplate } from '../../types';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { classes } from '../styles';\nimport NotificationOptionSwitch from '../../../Application/Modals/Components/NotificationOptionsSwitch';\nimport SmsTemplateComponent from '../../../Components/CustomUIElements/SmsTemplateComponent';\nimport { usePlaceholders } from '../../../hooks';\nimport { useEmailTemplatesOptions } from '../../../hooks';\nimport { scrollToElement } from '../../../utils/scroll-to-element';\nimport formatToUserTimeZone from '../../../utils/formatToUserTimeZone';\n\ninterface IRecruiter {\n id: number;\n name: string;\n}\n\ninterface IEventType {\n id: number;\n name: string;\n}\n\nexport default function InviteToTimeslot({\n apiKey,\n jobId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n globalSelected,\n handleDeselectCandidate,\n filters,\n smsTemplatePermissions\n}: IAddToEventModalProps) {\n const [isSending, setIsSending] = useState(false);\n const [isLoading, setIsLoading] = useState({\n templates: false,\n recruiters: false,\n eventTypes: false,\n events: false\n });\n const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n const [body, setBody] = useState('');\n const [subject, setSubject] = useState('');\n const [sendableBody, setSendableBody] = useState('');\n const [selectedRecruiter, setSelectedRecruiter] = useState<IRecruiter | null>(null);\n const [eventTypes, setEventTypes] = useState<IEventType[]>([]);\n const [selectedEventType, setSelectedEventType] = useState<IEventType | null>(null);\n const [excludeApplicants, setExcludeApplicants] = useState(false);\n const [showTimeslots, setShowTimeslots] = useState(false);\n const [events, setEvents] = useState<IEvent[]>([]);\n const [selectedDay, setSelectedDay] = useState<Date | null>(null);\n const [step, setStep] = useState<number>(1);\n const [timeslotHovered, setTimeslotHovered] = useState<number | null>(null);\n const recruiterRef = useRef<HTMLDivElement>(null);\n const eventTypeRef = useRef<HTMLDivElement>(null);\n const templateRef = useRef<HTMLDivElement>(null);\n const bodyRef = useRef<HTMLDivElement>(null);\n const [selectedMonth, setSelectedMonth] = useState<string>(\n formatToUserTimeZone(new Date(), 'ymd')\n );\n const [notification, setNotification] = useState<string>('email');\n const [smsMessage, setSmsMessage] = useState<string>('');\n const [smsTemplate, setSmsTemplate] = useState<ISMSTemplate | null>(null);\n const [errors, setErrors] = useState<Record<string, string>>({});\n\n const buttonName = step === 1 ? 'Next' : 'Send';\n\n const { data: emailTemplates, isLoading: loadingEmailTemplates } = useEmailTemplatesOptions({\n apiKey,\n onError: (message: string) => setSnackbar({ message, state: 'error' })\n });\n\n const { data: placeholders } = usePlaceholders({\n type: 'interview',\n apiKey,\n onError: (message: string) => setSnackbar({ message, state: 'error' })\n });\n\n const { data: recruiters, isLoading: loadingRecruiters } = useQuery({\n queryKey: ['recruiters'],\n queryFn: async () => {\n const { users } = await API.getRecruiters({ 'X-api-authenticate': apiKey });\n return users;\n },\n onError: (error: IError) => setSnackbar({ message: error.errors.join(', '), state: 'error' })\n });\n\n const { mutate: sendSms, isLoading: sendingSms } = useMutation({\n mutationFn: async () => {\n if (!selectedEventType) return;\n\n const res = await API.sendInviteSms(\n jobId,\n selectedEventType.id,\n globalSelected.map((a) => a.id),\n smsMessage,\n smsTemplate?.id\n );\n if (res.success !== 0) {\n setSnackbar({\n message: 'Invitation to the event has been sent successfully',\n state: 'success'\n });\n setModalsOpen((prev) => ({ ...prev, inviteToTimeslot: false }));\n } else {\n setSnackbar({ message: 'There is an error in sending SMS invitation', state: 'error' });\n }\n return res;\n }\n });\n\n const getEventTypes = useCallback(async () => {\n setIsLoading((prev) => ({ ...prev, eventTypes: true }));\n try {\n const response = await fetch(`/api/v4/calendar/event_types`, {\n method: 'GET',\n headers: {\n 'x-api-authenticate': apiKey\n }\n });\n const data = await response.json();\n setEventTypes(data.event_types);\n } catch (error) {\n setSnackbar({\n message: 'Failed to load event types',\n state: 'error'\n });\n } finally {\n setIsLoading((prev) => ({ ...prev, eventTypes: false }));\n }\n }, [apiKey, setSnackbar]);\n\n const handleSelectTemplate = async (template: string) => {\n if (!template) {\n setSelectedTemplate(null);\n setBody('');\n setSendableBody('');\n return;\n }\n setSelectedTemplate(template);\n const templateId = template.split(' -')[0];\n try {\n const response = await fetch(`/api/v4/calendar/email_templates/${templateId}`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const data = await response.json();\n setSubject(data.subject);\n setBody(data.body);\n setSendableBody(data.body);\n if (response.status !== 200) {\n throw new Error(data);\n }\n } catch (error) {\n setSnackbar({\n message: 'Error loading template',\n state: 'error'\n });\n setBody('');\n }\n };\n\n const getTimeslots = useCallback(\n async (eventId?: number) => {\n setIsLoading((prev) => ({ ...prev, events: true }));\n const queryString = `/api/v4/calendar/events?${\n eventId ? 'event_type_id=' + eventId : ''\n }&date=${selectedMonth}&override_limit=true`;\n try {\n const response = await fetch(queryString, {\n method: 'GET',\n headers: {\n 'x-api-authenticate': apiKey\n }\n });\n const data = await response.json();\n setEvents(data.events);\n } catch (error) {\n setSnackbar({\n message: 'Failed to load timeslots',\n state: 'error'\n });\n } finally {\n setIsLoading((prev) => ({ ...prev, events: false }));\n }\n },\n [apiKey, setSnackbar, selectedMonth]\n );\n\n const handleClose = () => setModalsOpen((prev) => ({ ...prev, inviteToTimeslot: false }));\n\n const validateInput = () => {\n const fieldsErrors: Record<string, string> = {};\n if (step === 1) {\n !selectedRecruiter && (fieldsErrors.recruiter = 'Must select a recruiter');\n !selectedEventType && (fieldsErrors.eventType = 'Must select an event type');\n } else {\n if (notification === 'email') {\n !selectedTemplate && (fieldsErrors.template = 'Must select a template');\n !sendableBody.trim() && (fieldsErrors.body = 'Must add email body');\n } else {\n !smsMessage.trim() && (fieldsErrors.sms = 'Must add SMS content');\n }\n }\n setErrors(fieldsErrors);\n if (fieldsErrors.recruiter) {\n scrollToElement(recruiterRef);\n } else if (fieldsErrors.eventType) {\n scrollToElement(eventTypeRef);\n } else if (fieldsErrors.template) {\n scrollToElement(templateRef);\n } else if (fieldsErrors.body) {\n scrollToElement(bodyRef);\n }\n return !Object.keys(fieldsErrors).length;\n };\n\n const handleSubmit = async () => {\n if (step === 1) {\n validateInput() && setStep(step + 1);\n } else {\n notification === 'email'\n ? validateInput() && handleSubmitEmail()\n : validateInput() && sendSms();\n }\n };\n\n const handleSubmitEmail = async () => {\n setIsSending(true);\n const templateId = selectedTemplate?.split(' -')[0];\n try {\n const response = await fetch('/api/v4/calendar/invitations', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-authenticate': apiKey\n },\n body: JSON.stringify({\n user_id: selectedRecruiter?.id,\n event_type_id: selectedEventType?.id,\n job_id: jobId,\n invitation: {\n application_ids: globalSelected.map((a) => a.id),\n subject: subject,\n body: sendableBody,\n ...(selectedTemplate ? { email_template_id: templateId } : {}),\n only_new: Number(excludeApplicants)\n }\n })\n });\n if (response.ok) {\n setSnackbar({\n message: 'Timeslot invitations sent successfully',\n state: 'success'\n });\n handleClose();\n } else {\n setSnackbar({\n message: 'Failed to send timeslot invitations, please try again',\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbar({\n message: 'Failed to send timeslot invitations, please try again',\n state: 'error'\n });\n } finally {\n setIsSending(false);\n }\n };\n\n const disableDate = (date: Date) => {\n const datelist = events.map((e) => formatToUserTimeZone(e.begins_at, 'ymd'));\n return !selectedEventType ? true : !datelist.includes(formatToUserTimeZone(date, 'ymd'));\n };\n\n const sameDay = (date: string) => {\n return formatToUserTimeZone(date, 'ymd') === formatToUserTimeZone(selectedDay, 'ymd');\n };\n\n useEffect(() => {\n if (modalsOpen.inviteToTimeslot) {\n getTimeslots();\n getEventTypes();\n }\n }, [getEventTypes, getTimeslots, modalsOpen.inviteToTimeslot, selectedMonth]);\n\n return (\n <Modal\n open={modalsOpen.inviteToTimeslot}\n onClose={handleClose}\n disableEnforceFocus\n aria-labelledby=\"invite-to-event-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box id=\"invite-to-event-title\" sx={{ ...classes.actionModalHeader, paddingBottom: 3 }}>\n Invite to Event\n </Box>\n <Box\n sx={{ padding: '0px 8px', flexGrow: 1, overflow: 'auto' }}\n id=\"invite-to-event-modal-content\"\n aria-label=\"Invite to event modal content\"\n >\n <Box role=\"form\" id=\"invite-to-event-form\" aria-label=\"Invite to event form\">\n {step === 1 && (\n <Stack sx={{ rowGap: 2 }}>\n <Autocomplete\n options={recruiters}\n loading={loadingRecruiters}\n getOptionLabel={(option) => option.name}\n onChange={(_event, value) => {\n value && setErrors({ ...errors, recruiter: '' });\n setSelectedRecruiter(value);\n }}\n value={selectedRecruiter}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px', marginTop: 3 }}\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Recruiter\"\n InputLabelProps={{ shrink: true }}\n required\n sx={sharedClasses.autoCompleteTextfield}\n helperText={errors.recruiter}\n />\n )}\n ref={recruiterRef}\n />\n <Autocomplete\n options={eventTypes}\n getOptionLabel={(option) => option.name}\n onChange={(_event, value) => {\n value && setErrors({ ...errors, eventType: '' });\n setSelectedEventType(value);\n getTimeslots(value?.id);\n }}\n value={selectedEventType}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px', marginTop: 3 }}\n ListboxProps={{ style: sharedClasses.autoCompleteListStyles }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Event type\"\n InputLabelProps={{ shrink: true }}\n required\n sx={sharedClasses.autoCompleteTextfield}\n helperText={errors.eventType}\n />\n )}\n ref={eventTypeRef}\n />\n <FormControlLabel\n sx={classes.formSwitchLabels}\n control={\n <Switch\n sx={{\n ...(showTimeslots ? classes.switchActive : classes.switch)\n }}\n checked={showTimeslots}\n onChange={() => {\n setSelectedDay(new Date());\n setShowTimeslots((prev) => !prev);\n }}\n />\n }\n label=\"Show timeslots\"\n labelPlacement=\"start\"\n />\n <Collapse in={showTimeslots}>\n <Box sx={classes.timeslotsContainer}>\n <Box sx={classes.calendar}>\n <ControlledStaticDatePicker\n displayStaticWrapperAs=\"desktop\"\n views={['day']}\n value={selectedDay}\n shouldDisableDate={disableDate}\n onChange={(value) => setSelectedDay(value)}\n onMonthChange={(value) =>\n setSelectedMonth(formatToUserTimeZone(value._d, 'ymd'))\n }\n />\n </Box>\n <Box sx={classes.dailyTimeslots}>\n <Box sx={classes.dailyTimeslotsHeader}>Timeslots</Box>\n <Box sx={classes.dailyTimeslotsContainer}>\n {events.length > 0 &&\n !isLoading.events &&\n events\n .filter((event) => sameDay(event.begins_at))\n .map((event) => (\n <Box\n key={event.id}\n sx={classes.timeslot}\n onMouseEnter={() => {\n setTimeslotHovered(event.id);\n }}\n onMouseLeave={() => {\n setTimeslotHovered(null);\n }}\n >\n <Box sx={classes.timeslotTime}>\n {formatToUserTimeZone(event.begins_at, 'onlyTime')}\n </Box>\n <Box sx={{ ...classes.timeslotType, ...classes.ellipsis }}>\n {event.subject}\n </Box>\n {timeslotHovered === event.id && (\n <Box sx={classes.expandedTimeslot}>\n <Box sx={classes.timeslotTime}>\n {formatToUserTimeZone(event.begins_at, 'onlyTime')}\n </Box>\n <Box sx={classes.timeslotType}>{event.subject}</Box>\n {event.note && (\n <Box sx={classes.timeslotNote}>{event.note}</Box>\n )}\n </Box>\n )}\n </Box>\n ))}\n {!isLoading.events &&\n events.filter((event) => sameDay(event.begins_at)).length === 0 && (\n <Box sx={classes.noTimeslots}>No timeslots on selected date</Box>\n )}\n {isLoading.events && (\n <Box sx={classes.noTimeslots}>\n <CircularProgress size={32} />\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n </Collapse>\n <Box sx={{ marginLeft: '8px' }}>\n <Stack sx={classes.modalCandidatesHeader}>Candidates</Stack>\n <SelectedApplicants\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n closeModalCallback={handleClose}\n filters={filters}\n />\n </Box>\n </Stack>\n )}\n {step === 2 && (\n <Box>\n <NotificationOptionSwitch\n setNotification={setNotification}\n notification={notification}\n />\n {notification === 'email' ? (\n <Stack sx={{ paddingTop: 4, rowGap: 3 }}>\n <VirtualizeGrouped\n value={selectedTemplate}\n options={emailTemplates || []}\n onChange={(value) => {\n value ? handleSelectTemplate(value) : setBody('');\n }}\n styles={{ ...sharedClasses.formAutocomplete, width: '600px' }}\n label=\"Template\"\n loading={loadingEmailTemplates}\n loadingText=\"Loading template list...\"\n innerRef={templateRef}\n error={errors.template}\n errorStyles={{ ...sharedClasses.errorBox, top: '-24px', right: '0px' }}\n />\n <FormControlLabel\n control={\n <Checkbox\n sx={classes.formCheckbox}\n onChange={(e) => setExcludeApplicants(e.target.checked)}\n value={excludeApplicants}\n />\n }\n label=\"Exclude applicants who have received this email template\"\n sx={classes.checkboxLabel}\n />\n <Box ref={bodyRef}>\n <Stack sx={{ ...classes.formLabel, flexDirection: 'row', columnGap: '2px' }}>\n Body <Stack sx={{ color: '#E37D7A' }}>*</Stack>\n </Stack>\n <HtmlEditor body={body} onChange={setSendableBody} />\n <Stack sx={sharedClasses.errorBox}>{errors.body}</Stack>\n <Box sx={classes.placeholderText}>\n Available placeholders are: {placeholders}\n </Box>\n </Box>\n </Stack>\n ) : (\n <SmsTemplateComponent\n smsTemplatePermissions={smsTemplatePermissions}\n setSnackbar={setSnackbar}\n smsMessage={smsMessage}\n setSmsMessage={setSmsMessage}\n smsTemplate={smsTemplate}\n setSmsTemplate={setSmsTemplate}\n smsMessageError={errors.sms}\n />\n )}\n </Box>\n )}\n </Box>\n </Box>\n <Box sx={{ ...classes.modalFooter, columnGap: 1, paddingTop: 2 }}>\n <Button\n id=\"close-invite-to-event-button\"\n sx={classes.modalCancelButton}\n onClick={handleClose}\n >\n Cancel\n </Button>\n {step !== 1 && (\n <Button\n onClick={() => setStep(1)}\n sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n >\n <NavigateBeforeIcon />\n </Button>\n )}\n <Button\n id=\"send-invite-to-event-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSending || sendingSms ? <CircularProgress size={20} color=\"inherit\" /> : buttonName}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState, useEffect, useCallback, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { IExtendedActionModalProps, IGetApplications } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\n\ninterface IProps extends IExtendedActionModalProps {\n getApplications: IGetApplications;\n deselectAll: () => void;\n}\n\nexport default function MoveApplications({\n apiKey,\n jobId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n globalSelected,\n handleDeselectCandidate,\n getApplications,\n deselectAll,\n filters\n}: IProps) {\n const [isSending, setIsSending] = useState(false);\n const [loadingJobs, setIsLoadingJobs] = useState(false);\n const [jobList, setJobList] = useState<string[]>([]);\n const [selectedJob, setSelectedJob] = useState<string | null>(null);\n const [noJobSelected, setNoJobSelected] = useState(false);\n\n const jobListRef = useRef<HTMLDivElement>(null);\n\n const getJobList = useCallback(async () => {\n setIsLoadingJobs(true);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/bulk_move_applications`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n });\n const data = await response.json();\n setJobList(\n data?.jobs\n .filter((job: { reference: string; title: string }) => job.reference)\n .map((job: { reference: string; title: string }) => `${job.reference} - ${job.title}`)\n );\n } catch (error) {\n setSnackbar({\n message: 'Error fetching jobs',\n state: 'error'\n });\n } finally {\n setIsLoadingJobs(false);\n }\n }, [apiKey, jobId, setSnackbar]);\n\n const handleSubmit = async () => {\n if (!selectedJob) {\n setNoJobSelected(true);\n jobListRef?.current?.scrollIntoView({ behavior: 'smooth' });\n return;\n }\n setIsSending(true);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/bulk_move_applications`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n target_job: selectedJob.split(' -')[0],\n application_ids: globalSelected.map((application) => application.id)\n })\n });\n if (response.status === 200) {\n setSnackbar({\n message: `Successfully queued moving ${globalSelected.length} applications to ${\n selectedJob.split('- ')[1]\n }`,\n state: 'success'\n });\n deselectAll();\n getApplications(null, null, null, null, null);\n handleClose();\n }\n } catch (error) {\n setSnackbar({\n message: 'Error moving applications',\n state: 'error'\n });\n } finally {\n setIsSending(false);\n }\n };\n\n const handleClose = () => {\n setModalsOpen((prev) => ({ ...prev, move: false }));\n setSelectedJob(null);\n setNoJobSelected(false);\n };\n\n useEffect(() => {\n if (modalsOpen.move && !jobList.length) {\n getJobList();\n }\n }, [modalsOpen.move, getJobList, jobList.length]);\n\n return (\n <Modal open={modalsOpen.move} onClose={handleClose} aria-labelledby=\"move-applications-modal\">\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box id=\"move-applications-title\" sx={classes.actionModalHeader}>\n Move Applications\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"move-applications-modal-content\"\n aria-label=\"Move Applications Modal Content\"\n >\n <Box role=\"form\" id=\"move-applications-form\" aria-label=\"Move Applications form\">\n <Box sx={classes.actionModalFormLine} ref={jobListRef}>\n <Virtualize\n value={selectedJob}\n passOptions={jobList}\n setValue={setSelectedJob}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '600px',\n marginTop: '20px'\n }}\n label=\"Select job to move applications to\"\n loading={loadingJobs}\n loadingText=\"Loading job list...\"\n />\n {noJobSelected && <Box sx={classes.formError}>Job must be selected</Box>}\n </Box>\n </Box>\n <Box sx={{ marginLeft: '15px' }}>\n <h3>Candidates</h3>\n <SelectedApplicants\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n closeModalCallback={handleClose}\n filters={filters}\n />\n </Box>\n </Box>\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-move-application-button\"\n sx={classes.modalCancelButton}\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-move-application-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSending ? <CircularProgress size={20} color=\"inherit\" /> : 'Move'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState, useRef, useEffect, useContext } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport FormControlLabel from '@mui/material/FormControlLabel';\nimport Checkbox from '@mui/material/Checkbox';\nimport { DebouncedFormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { INewApplicationProps } from '../../types';\nimport { applicantDetailsDefault } from '../config';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport SingleAttachmentSelector from '../../../Components/Utilities/SingleAttachmentSelector';\nimport { FileWithPath } from 'react-dropzone';\nimport { serialize } from 'object-to-formdata';\nimport QuestionFieldGenerator, {\n IApplicantQuestion,\n IFieldChoice\n} from '../../../Components/Utilities/QuestionFieldGenerator';\nimport GenericDialog from '../../../Components/Modals/GenericDialog';\nimport { EntityContext } from '../../Job';\nimport { emailIsValid } from '../../../Components/Utilities/emailIsValid';\nimport { ICountries, IStates } from '../../../Components/sharedTypes';\nimport { parseCountryData } from '../../../Components/Utilities/countryParser';\n\nconst createApplicantQuestionsObject = (questions: IApplicantQuestion[]) => {\n const newObject = {};\n questions.forEach((question: IApplicantQuestion) => {\n if (question.type === 'RankField') {\n newObject[question.id] = {\n ...question,\n data: {}\n };\n question.field_choices.forEach((choice: IFieldChoice, index: number) => {\n newObject[question.id]['data'][choice.id] = index + 1;\n });\n } else if (\n question.type === 'AvailabilityField' ||\n question.type === 'CsvDataLookupField' ||\n question.type === 'JobReferenceLookupField'\n ) {\n newObject[question.id] = {\n ...question,\n data: 'validation bypass'\n };\n } else {\n newObject[question.id] = {\n ...question,\n data: ''\n };\n }\n });\n return newObject;\n};\n\nconst createQuestionErrorsObject = (questions: IApplicantQuestion[]) => {\n const errors: Record<number, string> = {};\n questions.forEach((question: IApplicantQuestion) => {\n errors[question.id] = '';\n });\n return errors;\n};\n\nconst BASE_URL = window.location.origin;\nexport const genderOptions = [\n { id: 'm', label: 'Male' },\n { id: 'f', label: 'Female' },\n { id: 'Non-binary / Non-conforming', label: 'Non-binary / Non-conforming' },\n { id: 'Prefer not to say', label: 'Prefer not to say' }\n];\nexport default function NewApplication({\n apiKey,\n modalsOpen,\n setModalsOpen,\n getApplications,\n jobId,\n jobQuestions,\n jobAttachments,\n jobSources,\n jobHasPrivacyAcknowledgement,\n setSnackbar,\n setJob\n}: INewApplicationProps) {\n const { apply_with_mobile, apply_with_phone } = useContext(EntityContext);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [confirmCancelIsOpen, setConfirmCancelIsOpen] = useState(false);\n const [countries, setCountries] = useState<ICountries[]>([]);\n const [regionValue, setRegionValue] = useState<IStates | null>(null);\n const [countryValue, setCountryValue] = useState<ICountries | null>(null);\n const [applicantDetails, setApplicantDetails] = useState({\n ...applicantDetailsDefault,\n phone: { ...applicantDetailsDefault.phone, required: apply_with_phone },\n phone2: { ...applicantDetailsDefault.phone2, required: apply_with_mobile }\n });\n const [applicantQuestions, setApplicantQuestions] = useState(() =>\n createApplicantQuestionsObject(jobQuestions || [])\n );\n const [questionErrors, setQuestionErrors] = useState(() =>\n createQuestionErrorsObject(jobQuestions || [])\n );\n const [fileList, setFileList] = useState<Record<string, FileWithPath>>({});\n const [uploadErrors, setUploadErrors] = useState<Record<string, string>>({});\n const [sourceValue, setSourceValue] = useState<string | number>('');\n const [sourceError, setSourceError] = useState('');\n const [privacyAcknowledged, setPrivacyAcknowledged] = useState(false);\n const [privacyError, setPrivacyError] = useState('');\n const [sendNotification, setSendNotification] = useState<boolean>(false);\n const questionsRef = useRef<Array<HTMLDivElement | null>>([]);\n const uploadsRef = useRef<Array<HTMLDivElement | null>>([]);\n const containsDuplicates = (array: string[]) => {\n return new Set(array).size !== array.length;\n };\n\n const fieldRefs = {\n firstName: useRef<HTMLInputElement>(null),\n lastName: useRef<HTMLInputElement>(null),\n email: useRef<HTMLInputElement>(null),\n phone: useRef<HTMLInputElement>(null),\n phone2: useRef<HTMLInputElement>(null),\n addressFirstLine: useRef<HTMLInputElement>(null),\n addressSecondLine: useRef<HTMLInputElement>(null),\n suburb: useRef<HTMLInputElement>(null),\n postcode: useRef<HTMLInputElement>(null),\n country: useRef<HTMLInputElement>(null),\n region: useRef<HTMLInputElement>(null),\n employeeId: useRef<HTMLInputElement>(null)\n };\n\n const sourceRef = useRef<HTMLInputElement>(null);\n const privacyRef = useRef<HTMLInputElement>(null);\n\n const handleClearForm = () => {\n setApplicantDetails(applicantDetailsDefault);\n setApplicantQuestions(createApplicantQuestionsObject(jobQuestions || []));\n setQuestionErrors(createQuestionErrorsObject(jobQuestions || []));\n setFileList({});\n setCountryValue(null);\n setRegionValue(null);\n setModalsOpen((prev) => ({ ...prev, newApplication: false }));\n setPrivacyError('');\n };\n\n useEffect(() => {\n if (!modalsOpen.newApplication || countries.length > 0) return;\n let isMounted = true;\n const handleGetCountries = async () => {\n try {\n const response = await fetch(`${BASE_URL}/api/system/v1/countries_states.json`, {\n method: 'GET'\n });\n const data = await response.json();\n const countriesWithlabels = parseCountryData(data);\n if (isMounted) {\n setCountries(countriesWithlabels);\n }\n } catch (error) {\n console.error(error);\n }\n };\n handleGetCountries();\n return () => {\n isMounted = false;\n };\n }, [modalsOpen.newApplication, countries]);\n\n const handleSubmitApplication = async () => {\n if (!handleValidateFields()) return;\n setIsSubmitting(true);\n const answers_attributes = Object.entries(applicantQuestions)\n .filter(([_, value]) => value.data !== '')\n .map(([id, value]) => {\n if (value.type === 'RadioButtonField' || value.type === 'SelectField') {\n return {\n field_id: id,\n field_choice_id: value.data\n };\n } else if (value.type === 'CheckBoxField') {\n return {\n field_id: id,\n field_choice_ids: Object.entries(value.data)\n .filter(([_, value]) => value)\n .map(([id]) => id)\n };\n } else {\n return {\n field_id: id,\n data: value.data\n };\n }\n });\n const candidate_attributes = {\n firstname: applicantDetails.firstName.value,\n lastname: applicantDetails.lastName.value,\n email: applicantDetails.email.value,\n phone1: applicantDetails.phone.value,\n phone2: applicantDetails.phone2.value,\n address_attributes: {\n street1: applicantDetails.addressFirstLine.value,\n ...(applicantDetails.addressSecondLine.value !== '' && {\n street2: applicantDetails.addressSecondLine.value\n }),\n suburb: applicantDetails.suburb.value,\n postcode: applicantDetails.postcode.value,\n country_id: applicantDetails.country.value,\n state_id: applicantDetails.region.value,\n ...(applicantDetails.employeeId.value !== '' && {\n employee_id: applicantDetails.employeeId.value\n })\n },\n gender: applicantDetails.gender.value.id\n };\n const applicationData = {\n application: {\n candidate_attributes,\n answers_attributes,\n ...(jobHasPrivacyAcknowledgement && { privacy_acknowledgement: privacyAcknowledged }),\n ...(sourceValue && { source_id: sourceValue }),\n asset: fileList,\n send_notification: sendNotification\n }\n };\n const formData = serialize(applicationData);\n try {\n const response = await fetch(`${BASE_URL}/api/v4/jobs/${jobId}/applications`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey\n },\n body: formData\n });\n if (response.status === 201) {\n setModalsOpen({ ...modalsOpen, newApplication: false });\n handleClearForm();\n getApplications(null, null, null, null, null);\n setJob((prev) => ({ ...prev, applications_count: prev.applications_count + 1 }));\n setSnackbar({\n message: 'Application created successfully',\n state: 'success'\n });\n } else {\n throw new Error('Error creating application');\n }\n } catch (error) {\n setSnackbar({\n message: 'Something went wrong. Please try again.',\n state: 'error'\n });\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const handleValidateFields = () => {\n let isValid = true;\n let detailsError: keyof typeof fieldRefs | undefined = undefined;\n let questionError: number | undefined = undefined;\n let uploadError: number | undefined = undefined;\n let sourceInvalid = false;\n\n // Validate applicant detial fields\n Object.entries(applicantDetails).forEach((field) => {\n let tempErrorMessage = '';\n if (field[1].required && !field[1].value) {\n if (detailsError === undefined) {\n detailsError = field[0] as keyof typeof fieldRefs;\n }\n isValid = false;\n tempErrorMessage = 'This field is required';\n } else if (field[0] === 'email' && !emailIsValid(field[1].value)) {\n if (detailsError === undefined) {\n detailsError = field[0];\n }\n isValid = false;\n tempErrorMessage = 'Please input valid email';\n } else if (field[0] === 'postcode' && field[1]?.value?.length > 10) {\n if (detailsError === undefined) {\n detailsError = field[0];\n }\n isValid = false;\n tempErrorMessage = 'Postcode must be less than 10 characters';\n }\n setApplicantDetails((prev) => ({\n ...prev,\n [field[0]]: { ...prev[field[0] as keyof typeof prev], error: tempErrorMessage }\n }));\n });\n\n // Validate applicant question fields\n jobQuestions &&\n jobQuestions.forEach((question: IApplicantQuestion, index: number) => {\n let tempErrorMessage = '';\n if (question.type === 'CheckBoxField') {\n const isChecked = Object.values(applicantQuestions[question.id].data).some(\n (value) => value === true\n );\n if (question.required && !isChecked) {\n tempErrorMessage = 'Must select at least one option';\n if (questionError === undefined) {\n questionError = index;\n }\n isValid = false;\n }\n } else if (question.type === 'RankField') {\n const duplicates = containsDuplicates(\n Object.values(applicantQuestions[question.id].data)\n );\n if (question.required && duplicates) {\n tempErrorMessage = 'Ranked choices must be unique';\n if (questionError === undefined) {\n questionError = index;\n }\n isValid = false;\n }\n } else if (question.required && !applicantQuestions[question.id].data) {\n tempErrorMessage =\n question.type !== 'RadioButtonField'\n ? 'This field is required'\n : 'Must select an option';\n if (questionError === undefined) {\n questionError = index;\n }\n isValid = false;\n }\n setQuestionErrors((prev) => ({\n ...prev,\n [question.id]: tempErrorMessage\n }));\n });\n\n // Validate applicant attachment fields\n jobAttachments &&\n jobAttachments.forEach((attachment, index) => {\n if (attachment.required && !fileList[attachment.value]) {\n setUploadErrors((prev) => ({\n ...prev,\n [attachment.value]: 'Upload required'\n }));\n if (uploadError === undefined) {\n uploadError = index;\n }\n isValid = false;\n }\n });\n\n // Validate applicant source field\n if (jobSources && jobSources.length > 0 && !sourceValue) {\n sourceInvalid = true;\n isValid = false;\n setSourceError('Source is required');\n }\n\n if (jobHasPrivacyAcknowledgement && !privacyAcknowledged) {\n setPrivacyError('Please acknowledge privacy statement');\n isValid = false;\n }\n\n // Scroll to first invalid field\n if (detailsError !== undefined) {\n fieldRefs[detailsError]?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n } else if (questionError !== undefined) {\n questionsRef?.current[questionError]?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n } else if (jobHasPrivacyAcknowledgement && !privacyAcknowledged) {\n privacyRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n } else if (uploadError !== undefined) {\n uploadsRef?.current[uploadError]?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n } else if (sourceInvalid) {\n sourceRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n return isValid;\n };\n\n return (\n <Modal\n open={modalsOpen.newApplication}\n onClose={() => setConfirmCancelIsOpen(true)}\n aria-labelledby=\"new-application-modal\"\n >\n <Box sx={classes.actionsModal}>\n <CloseIcon onClick={() => setConfirmCancelIsOpen(true)} sx={classes.closeIcon} />\n <Box id=\"new-application-modal-title\" sx={classes.modalHeader}>\n Lodge new application\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"new-application-modal-content\"\n aria-label=\"New application modal content\"\n >\n <Box role=\"form\" id=\"new-application-form\" aria-label=\"New application form\">\n <Box sx={classes.modalFormLine}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) =>\n setApplicantDetails((prev) => ({\n ...prev,\n firstName: {\n ...prev.firstName,\n value,\n error:\n value || !applicantDetails.firstName.required\n ? ''\n : 'This field is required'\n }\n }))\n }\n id=\"first-name\"\n label=\"First Name\"\n required={applicantDetails.firstName.required}\n error={applicantDetails.firstName.error}\n innerRef={fieldRefs.firstName}\n styles={{ width: '290px' }}\n />\n <DebouncedFormTextField\n onDebouncedChange={(value: string) =>\n setApplicantDetails((prev) => ({\n ...prev,\n lastName: {\n ...prev.lastName,\n value,\n error:\n value || !applicantDetails.lastName.required ? '' : 'This field is required'\n }\n }))\n }\n id=\"last-name\"\n label=\"Last Name\"\n required={applicantDetails.lastName.required}\n error={applicantDetails.lastName.error}\n innerRef={fieldRefs.lastName}\n styles={{ width: '290px' }}\n />\n </Box>\n <Box sx={classes.modalFormLine}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setApplicantDetails((prev) => ({\n ...prev,\n email: {\n ...prev.email,\n value,\n error: value && !emailIsValid(value) ? 'Please input valid email' : ''\n }\n }));\n }}\n id=\"email\"\n label=\"Email\"\n required={applicantDetails.email.required}\n error={applicantDetails.email.error}\n innerRef={fieldRefs.email}\n styles={{ width: '290px' }}\n />\n <DebouncedFormTextField\n onDebouncedChange={(value: string) =>\n setApplicantDetails((prev) => ({\n ...prev,\n phone: {\n ...prev.phone,\n value,\n error:\n value || applicantDetails.phone.required ? '' : 'This field is required'\n }\n }))\n }\n id=\"phone\"\n label=\"Phone\"\n required={applicantDetails.phone.required}\n error={applicantDetails.phone.error}\n innerRef={fieldRefs.phone}\n styles={{ width: '290px' }}\n />\n <DebouncedFormTextField\n onDebouncedChange={(value: string) =>\n setApplicantDetails((prev) => ({\n ...prev,\n phone2: {\n ...prev.phone2,\n value,\n error:\n value || applicantDetails.phone2.required ? '' : 'This field is required'\n }\n }))\n }\n id=\"phone2\"\n label=\"Mobile\"\n required={applicantDetails.phone2.required}\n error={applicantDetails.phone2.error}\n innerRef={fieldRefs.phone2}\n styles={{ width: '290px' }}\n />\n </Box>\n <Box sx={classes.fullWidthFieldContainer}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) =>\n setApplicantDetails((prev) => ({\n ...prev,\n addressFirstLine: {\n ...prev.addressFirstLine,\n value,\n error:\n value || !applicantDetails.addressFirstLine.required\n ? ''\n : 'This field is required'\n }\n }))\n }\n id=\"street-address\"\n label=\"Street Address\"\n required={applicantDetails.addressFirstLine.required}\n error={applicantDetails.addressFirstLine.error}\n innerRef={fieldRefs.addressFirstLine}\n styles={classes.fullWidthField}\n />\n <DebouncedFormTextField\n onDebouncedChange={(value: string) =>\n setApplicantDetails((prev) => ({\n ...prev,\n addressSecondLine: {\n ...prev.addressSecondLine,\n value,\n error:\n value || !applicantDetails.addressSecondLine.required\n ? ''\n : 'This field is required'\n }\n }))\n }\n id=\"street-address-2\"\n label=\"Street Address Cont'd\"\n error={applicantDetails.addressSecondLine.error}\n innerRef={fieldRefs.addressSecondLine}\n styles={classes.fullWidthField}\n />\n </Box>\n <Box sx={classes.modalFormLine}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) =>\n setApplicantDetails((prev) => ({\n ...prev,\n suburb: {\n ...prev.suburb,\n value,\n error:\n value || !applicantDetails.suburb.required ? '' : 'This field is required'\n }\n }))\n }\n id=\"suburb\"\n label=\"City, Town or Suburb\"\n required={applicantDetails.suburb.required}\n error={applicantDetails.suburb.error}\n innerRef={fieldRefs.suburb}\n styles={{ width: '290px' }}\n />\n <DebouncedFormTextField\n onDebouncedChange={(value: string) =>\n setApplicantDetails((prev) => ({\n ...prev,\n postcode: {\n ...prev.postcode,\n value,\n error:\n value || !applicantDetails.postcode.required ? '' : 'This field is required'\n }\n }))\n }\n id=\"postcode\"\n label=\"Postcode or zipcode\"\n required={applicantDetails.postcode.required}\n error={applicantDetails.postcode.error}\n innerRef={fieldRefs.postcode}\n styles={{ width: '290px' }}\n />\n </Box>\n <Box sx={classes.modalFormLine}>\n <Box sx={{ position: 'relative', marginTop: '26px' }}>\n <Autocomplete\n disablePortal\n ref={fieldRefs.country}\n id=\"country\"\n options={countries}\n value={countryValue}\n loading={countries.length < 1}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Country\"\n InputLabelProps={{ shrink: true }}\n required={applicantDetails.country.required}\n />\n )}\n onChange={(event, value) => {\n setCountryValue(value);\n setRegionValue(null);\n setApplicantDetails((prev) => ({\n ...prev,\n country: {\n ...prev.country,\n value: value ? value.id : null,\n error:\n value || !applicantDetails.country.required\n ? ''\n : 'This field is required'\n },\n region: { ...prev.region, value: null }\n }));\n }}\n />\n {applicantDetails.country.error && (\n <Box sx={sharedClasses.errorBox}>{applicantDetails.country.error}</Box>\n )}\n </Box>\n <Box sx={{ position: 'relative', marginTop: '26px' }}>\n <Autocomplete\n disablePortal\n ref={fieldRefs.region}\n id=\"state-region-province\"\n options={countryValue?.states || []}\n disabled={!countryValue}\n value={regionValue}\n onChange={(event, value) => {\n setRegionValue(value ? value : null);\n setApplicantDetails((prev) => ({\n ...prev,\n region: {\n ...prev.region,\n value: value ? value.id : null,\n error:\n value || !applicantDetails.region.required ? '' : 'This field is required'\n }\n }));\n }}\n sx={{\n ...(!countryValue\n ? sharedClasses.formAutocompleteDisabled\n : sharedClasses.formAutocomplete),\n width: '287px'\n }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"State, Region or Province\"\n InputLabelProps={{ shrink: true }}\n required={applicantDetails.region.required}\n />\n )}\n />\n {applicantDetails.region.error && (\n <Box sx={sharedClasses.errorBox}>{applicantDetails.region.error}</Box>\n )}\n </Box>\n </Box>\n <Box sx={classes.modalFormLine}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) =>\n setApplicantDetails((prev) => ({\n ...prev,\n employeeId: {\n ...prev.employeeId,\n error:\n value || !applicantDetails.employeeId.required\n ? ''\n : 'This field is required',\n value\n }\n }))\n }\n id=\"employee-id\"\n label=\"Employee ID (optional)\"\n error={applicantDetails.employeeId.error}\n innerRef={fieldRefs.employeeId}\n styles={{ width: '290px' }}\n />\n <Autocomplete\n disablePortal\n id=\"gender\"\n options={genderOptions}\n getOptionLabel={(option) => option.label}\n value={applicantDetails.gender.value}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px', marginTop: '25px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Gender (Optional)\"\n InputLabelProps={{ shrink: true }}\n required={applicantDetails.gender.required}\n />\n )}\n onChange={(event, value) => {\n setApplicantDetails((prev) => ({\n ...prev,\n gender: {\n ...prev.gender,\n value\n }\n }));\n }}\n />\n </Box>\n {jobQuestions &&\n jobQuestions.map((question, index) => (\n <Box key={question.id} sx={{ ...classes.modalFormLine, position: 'relative' }}>\n <QuestionFieldGenerator\n question={question}\n questionRef={(el) => (questionsRef.current[index] = el)}\n questionError={questionErrors[question.id]}\n onChangeCallback={(id, value) => {\n setApplicantQuestions((prev) => ({\n ...prev,\n [id]: {\n ...prev[id],\n data: value\n }\n }));\n setQuestionErrors((prev) => ({\n ...prev,\n [id]: value || !question.required ? '' : 'This field is required'\n }));\n }}\n />\n </Box>\n ))}\n {jobHasPrivacyAcknowledgement && (\n <Box sx={{ padding: '6px 0px 12px 12px', position: 'relative' }} ref={privacyRef}>\n <FormControlLabel\n control={\n <Checkbox\n sx={classes.formCheckbox}\n onChange={(e) => setPrivacyAcknowledged(e.target.checked)}\n value={privacyAcknowledged}\n required\n />\n }\n label={\n <>\n Yes I agree to the privacy statement <span>*</span>\n </>\n }\n sx={classes.checkboxLabel}\n />\n {privacyError && (\n <Box sx={{ ...sharedClasses.errorBox, bottom: '-6px', left: '13px' }}>\n {privacyError}\n </Box>\n )}\n </Box>\n )}\n </Box>\n {jobAttachments && (\n <Box id=\"applicant-uploads\" sx={classes.uploadSection}>\n <h3>Candidate Uploads</h3>\n <Box sx={classes.uploadSectionContent}>\n {jobAttachments.map((upload, index) => (\n <Box\n key={index}\n sx={classes.uploadContainer}\n ref={(el) => (uploadsRef.current[index] = el)}\n >\n <Box sx={classes.uploadLabel}>\n {upload.label}\n {upload.required && <span>*</span>}\n </Box>\n <SingleAttachmentSelector\n setFile={(file) => {\n setFileList((previous) => ({ ...previous, [upload.value]: file }));\n setUploadErrors((previous) => ({\n ...previous,\n [upload.value]: ''\n }));\n }}\n file={fileList[upload.value]}\n maxSize={50000000}\n performUpload={false}\n />\n {uploadErrors[upload.value] && (\n <Box sx={classes.uploadError}>{`${upload.label} upload is required`}</Box>\n )}\n </Box>\n ))}\n </Box>\n </Box>\n )}\n {jobSources && jobSources.length > 0 && (\n <Box sx={classes.sourceContainer}>\n <h3>Where did the applicant find this job?</h3>\n <Box sx={classes.modalFormLine}>\n <FormSelectField\n options={jobSources.map((source) => ({ label: source.label, value: source.id }))}\n defaultValue=\"\"\n onChange={(value) => setSourceValue(value)}\n label=\"Source\"\n styles={{ width: '290px' }}\n innerRef={sourceRef}\n error={sourceError}\n required={true}\n />\n </Box>\n </Box>\n )}\n </Box>\n <Box sx={classes.modalFooter}>\n <FormControlLabel\n control={\n <Checkbox\n sx={sharedClasses.formCheckbox}\n checked={sendNotification}\n onClick={() => setSendNotification(!sendNotification)}\n disableRipple\n />\n }\n label=\"Send Notification\"\n sx={{ ...sharedClasses.checkboxLabel, flexGrow: 1 }}\n />\n <Button\n id=\"cancel-application-button\"\n sx={classes.modalCancelButton}\n onClick={() => setConfirmCancelIsOpen(true)}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-new-application-button\"\n type=\"submit\"\n sx={classes.modalConfirmationButton}\n onClick={handleSubmitApplication}\n >\n {isSubmitting ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n 'Lodge new application'\n )}\n </Button>\n </Box>\n <GenericDialog\n isDialogOpen={confirmCancelIsOpen}\n setDialogOpen={setConfirmCancelIsOpen}\n title=\"Close without submitting?\"\n description=\"Are you sure you want to cancel your application? You will lose any progress you have made.\"\n buttonCallback={() => {\n setConfirmCancelIsOpen(false);\n handleClearForm();\n }}\n callbackLoading={false}\n buttonText=\"Close without saving\"\n url=\"\"\n />\n </Box>\n </Modal>\n );\n}\n","import React, { useState, useCallback, useEffect, useRef } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Collapse from '@mui/material/Collapse';\nimport Button from '@mui/material/Button';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport TextField from '@mui/material/TextField';\nimport IconButton from '@mui/material/IconButton';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport CloseIcon from '@mui/icons-material/Close';\nimport GenericDialog from '../../../Components/Modals/GenericDialog';\nimport { FormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport { MultilineFormTextField } from '../../../Components/CustomUIElements/FormTextField';\nimport SelectedApplicants from '../SelectedApplicants';\nimport { ISMSModalProps } from '../../types';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\n\nexport interface ISmsTemplate {\n id: number;\n title: string;\n body: string;\n}\n\nexport default function SMSCandidates({\n apiKey,\n jobId,\n setSnackbar,\n modalsOpen,\n setModalsOpen,\n globalSelected,\n handleDeselectCandidate,\n hasTemplatePermissions,\n filters\n}: ISMSModalProps) {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [templatesLoading, setTemplatesLoading] = useState(false);\n const [savingTemplate, setSavingTemplate] = useState(false);\n const [messageContent, setMessageContent] = useState('');\n const [contentError, setContentError] = useState('');\n const [selectedTemplate, setSelectedTemplate] = useState<ISmsTemplate | null>(null);\n const [templates, setTemplates] = useState<ISmsTemplate[]>([]);\n const [templateError, setTemplateError] = useState('');\n const [templateName, setTemplateName] = useState('');\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [isDeleting, setIsDeleting] = useState(false);\n\n const contentRef = useRef<HTMLDivElement>(null);\n\n const handleClose = () => {\n setMessageContent('');\n setContentError('');\n setSelectedTemplate(null);\n setTemplateName('');\n setTemplateError('');\n setModalsOpen((prev) => ({ ...prev, sms: false }));\n };\n\n const isSMSContentValid = useCallback(() => {\n if (!messageContent) {\n setContentError('Please enter a message');\n contentRef.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n return false;\n } else if (messageContent.length > 160) {\n setContentError('Message cannot be more than 160 characters');\n contentRef.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n return false;\n }\n return true;\n }, [messageContent]);\n\n const getTemplates = useCallback(async () => {\n setTemplatesLoading(true);\n try {\n const response = await fetch(`/api/v4/sms_templates`, {\n method: 'GET',\n headers: {\n 'x-api-authenticate': apiKey\n }\n });\n const data = await response.json();\n setTemplates(data?.sms_templates);\n } catch (error) {\n setSnackbar({\n message: 'Error fetching templates',\n state: 'error'\n });\n } finally {\n setTemplatesLoading(false);\n }\n }, [apiKey, setSnackbar]);\n\n const deleteSmsTemplate = async (url: string, smsTemplateId: number) => {\n setIsDeleting(true);\n try {\n const response = await fetch(`${url}${smsTemplateId}`, {\n method: 'DELETE',\n headers: {\n 'x-api-authenticate': apiKey\n }\n });\n\n if (response.status === 204) {\n var newTemplates = templates?.filter((template: ISmsTemplate) => template.id !== smsTemplateId);\n setTemplates(newTemplates);\n setTemplateError('');\n setMessageContent('');\n setSnackbar({\n message: 'Template deleted',\n state: 'success'\n });\n }\n else {\n setSnackbar({\n message: 'Error deleting template',\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbar({\n message: 'Error deleting template2',\n state: 'error'\n });\n } finally {\n setIsDeleting(false);\n setIsDialogOpen(false);\n }\n };\n\n const saveTemplate = useCallback(async () => {\n if (!isSMSContentValid()) return;\n if (templates?.find((template) => template.title === templateName)) {\n setTemplateError('Template name already exists');\n return;\n }\n setSavingTemplate(true);\n setTemplatesLoading(true);\n try {\n const response = await fetch(`/api/v4/sms_templates`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-authenticate': apiKey\n },\n body: JSON.stringify({\n sms_template: {\n title: templateName,\n body: messageContent\n }\n })\n });\n const data = await response.json();\n if (response.ok) {\n setTemplates((prev) => [...prev, data]);\n setSelectedTemplate(data);\n setTemplateError('');\n setSnackbar({\n message: 'Template saved',\n state: 'success'\n });\n } else {\n setSnackbar({\n message: data?.errors ? data.errors : 'Error saving template',\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbar({\n message: 'Error saving template',\n state: 'error'\n });\n } finally {\n setSavingTemplate(false);\n setTemplatesLoading(false);\n }\n }, [apiKey, messageContent, setSnackbar, templateName, templates]);\n\n const editTemplate = useCallback(async () => {\n if (!isSMSContentValid()) return;\n setSavingTemplate(true);\n setTemplatesLoading(true);\n try {\n const response = await fetch(`/api/v4/sms_templates/${selectedTemplate?.id}`, {\n method: 'PUT',\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-authenticate': apiKey\n },\n body: JSON.stringify({\n sms_template: {\n title: templateName,\n body: messageContent\n }\n })\n });\n const data = await response.json();\n if (response.ok) {\n var newTemplates = templates?.map(template => template.id === selectedTemplate?.id ? data : template)\n setTemplates(newTemplates);\n setSelectedTemplate(data);\n setTemplateError('');\n setSnackbar({\n message: 'Template edited',\n state: 'success'\n });\n } else {\n setSnackbar({\n message: data?.errors ? data.errors : 'Error editing template',\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbar({\n message: 'Error editing template',\n state: 'error'\n });\n } finally {\n setSavingTemplate(false);\n setTemplatesLoading(false);\n }\n }, [apiKey, messageContent, setSnackbar, templateName, templates]);\n\n const [dialogProps, setDialogProps] = useState({\n url: '',\n title: 'Permanently delete SMS Template?',\n description: '',\n buttonText: 'Delete',\n callbackLoading: false,\n dialogId: 0,\n buttonCallback: deleteSmsTemplate\n });\n\n useEffect(() => {\n if (modalsOpen.sms) {\n getTemplates();\n }\n }, [modalsOpen.sms, getTemplates]);\n\n useEffect(() => {\n if (selectedTemplate) {\n setTemplateName(selectedTemplate.title);\n }\n}, [selectedTemplate]);\n\n const handleSubmit = async () => {\n if (!isSMSContentValid()) return;\n setIsSubmitting(true);\n try {\n const response = await fetch(`/api/v4/jobs/${jobId}/applications/bulk_sms`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: JSON.stringify({\n applications_ids: globalSelected.map((app) => app.id),\n content: messageContent,\n sms_template_id: selectedTemplate?.id\n })\n });\n if (response.status === 201) {\n setSnackbar({\n message: 'Candidate SMS messages sent successfully',\n state: 'success'\n });\n handleClose();\n } else {\n setSnackbar({\n message:\n 'Error sending messages, please try again or contact support if the issue persists',\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbar({\n message:\n 'Error sending messages, please try again or contact support if the issue persists',\n state: 'error'\n });\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <Modal open={modalsOpen.sms} onClose={handleClose} aria-labelledby=\"sms-candidates-modal\">\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box id=\"sms-candidates-title\" sx={classes.actionModalHeader}>\n SMS Candidates\n </Box>\n <Box\n sx={{ ...classes.modalContent, marginTop: '16px' }}\n id=\"sms-candidates-modal-content\"\n aria-label=\"SMS Candidates Modal Content\"\n >\n <Box\n sx={{ overflowX: 'hidden' }}\n role=\"form\"\n id=\"sms-candidates-form\"\n aria-label=\"SMS Candidates form\"\n >\n <h3 style={{ marginLeft: '14px' }}>Message</h3>\n <Box sx={classes.actionModalFormLine}>\n <Autocomplete\n key={selectedTemplate?.title}\n disablePortal\n id=\"sms-template-select\"\n options={templates?.map((option) => option.title)}\n value={selectedTemplate?.title}\n sx={{ ...sharedClasses.formAutocomplete, width: '287px', marginTop: '20px' }}\n loading={templatesLoading}\n loadingText=\"Loading SMS templates...\"\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField {...params} label=\"Template\" InputLabelProps={{ shrink: true }} />\n )}\n onChange={(event, value) => {\n if (!value) {\n setSelectedTemplate(null);\n setTemplateName('');\n setMessageContent('');\n }\n const selectedTemplate = templates?.find((template) => template.title === value);\n if (selectedTemplate) {\n setSelectedTemplate(selectedTemplate);\n setMessageContent(selectedTemplate.body);\n }\n }}\n renderOption={(props, option) => (\n <Box component=\"li\" {...props} display=\"flex\">\n {option}\n <Box flexGrow={1} />\n <IconButton\n edge=\"end\"\n aria-label=\"delete\"\n onClick={(event) => {\n event.stopPropagation();\n const selectedTemplate = templates?.find((template: ISmsTemplate) => template.title === option);\n\n selectedTemplate && setDialogProps((prev) => ({\n ...prev,\n url: '/api/v4/sms_templates/',\n description: `Are you sure you want to delete '${selectedTemplate.title}'? This action cannot be undone.`,\n dialogId: selectedTemplate.id,\n buttonCallback: deleteSmsTemplate\n }));\n setIsDialogOpen(true);\n }}\n >\n <DeleteIcon />\n </IconButton>\n </Box>\n )}\n />\n </Box>\n <Box sx={classes.actionModalFormLine} ref={contentRef}>\n <MultilineFormTextField\n label=\"Content\"\n value={messageContent}\n onChange={(e) => {\n setMessageContent(e.target.value);\n if (contentError) setContentError('');\n }}\n styles={{ width: '740px' }}\n error={contentError}\n />\n <Box\n sx={{\n ...classes.characterCount,\n ...(messageContent.length > 160 && { color: theme.palette.error.main })\n }}\n >\n {messageContent.length} / 160\n </Box>\n </Box>\n <Collapse\n in={\n !hasTemplatePermissions &&\n !!messageContent &&\n messageContent !== selectedTemplate?.body\n }\n >\n <Box sx={classes.saveSMSTemplateContainer}>\n <FormTextField\n id=\"new-sms-template-title\"\n label=\"Template title\"\n value={templateName}\n styles={{ width: '290px' }}\n onChange={(e) => {\n setTemplateName(e.target.value);\n if (templateError) setTemplateError('');\n }}\n />\n <Box sx={{ transform: 'translateY(-1.5px)' }}>\n {!!messageContent && !selectedTemplate && (\n <Button\n id=\"save-sms-template\"\n type=\"submit\"\n sx={classes.saveSMSTemplateButton}\n onClick={saveTemplate}\n >\n {savingTemplate ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n 'Save template'\n )}\n </Button>\n )}\n {selectedTemplate && messageContent !== selectedTemplate?.body && (\n <Button\n id=\"edit-sms-template\"\n type=\"submit\"\n sx={classes.saveSMSTemplateButton}\n onClick={editTemplate}\n >\n {savingTemplate ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n 'Edit template'\n )}\n </Button>\n )}\n </Box>\n {templateError && <Box sx={classes.saveSMSTemplateError}>{templateError}</Box>}\n </Box>\n </Collapse>\n <Box sx={{ marginLeft: '15px' }}>\n <h3>Candidates</h3>\n <SelectedApplicants\n globalSelected={globalSelected}\n handleDeselectCandidate={handleDeselectCandidate}\n closeModalCallback={handleClose}\n filters={filters}\n />\n </Box>\n </Box>\n </Box>\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-sms-candidate-button\"\n sx={classes.modalCancelButton}\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n id=\"send-sms-candidate-button\"\n type=\"submit\"\n sx={{ ...classes.modalSendButton, width: '71px', height: '41px' }}\n onClick={handleSubmit}\n >\n {isSubmitting ? <CircularProgress size={20} color=\"inherit\" /> : 'Send'}\n </Button>\n </Box>\n <GenericDialog\n url={dialogProps.url}\n title={dialogProps.title}\n description={dialogProps.description}\n buttonText={dialogProps.buttonText}\n buttonCallback={dialogProps.buttonCallback}\n callbackLoading={isDeleting}\n isDialogOpen={isDialogOpen}\n setDialogOpen={setIsDialogOpen}\n dialogId={dialogProps.dialogId}\n />\n </Box>\n </Modal>\n );\n}\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Modal from '@mui/material/Modal';\nimport Checkbox from '@mui/material/Checkbox';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CloseIcon from '@mui/icons-material/Close';\nimport IconButton from '@mui/material/IconButton';\nimport IosShareIcon from '@mui/icons-material/IosShare';\nimport { classes } from '../styles';\nimport { StyledSnackbarProps } from '../../../Components/CustomUIElements/StyledSnackbar';\nimport Tooltip from '@mui/material/Tooltip';\nimport { IFilterDropdownProps, IDropdownProps } from '../../types';\n\nconst BASE_URL = window.location.origin;\n\nexport default function TempCSVExport({\n apiKey,\n jobId,\n setSnackbarState,\n filters,\n sortBy,\n sortOrder,\n sortableColumns\n}: {\n apiKey: string;\n jobId: number;\n setSnackbarState: StyledSnackbarProps['setSnackBarState'];\n filters: IFilterDropdownProps['filters'];\n sortBy: string;\n sortOrder: string;\n sortableColumns: IDropdownProps['sortableColumns'];\n}) {\n const [modalOpen, setModalOpen] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const activeColumns = {};\n sortableColumns.forEach((column) => {\n activeColumns[column.id] = column.enabled;\n });\n\n const handleSortTranslate = (sort: string) => {\n switch (sort) {\n case 'candidate':\n return 'candidate_name';\n case 'gender':\n return 'candidate_gender';\n case 'email':\n return 'candidate_email';\n case 'suburb':\n return 'candidate_suburb';\n case 'state':\n return 'candidate_state';\n case 'country':\n return 'candidate_state';\n case 'status':\n return 'status_name';\n case 'date':\n return 'created_at';\n default:\n return sort;\n }\n };\n\n const checkboxStyle = {\n color: '#DDDDDD',\n marginLeft: '10px',\n '&.Mui-checked': {\n color: '#5BC4BF'\n },\n '& .MuiSvgIcon-root': {\n fontSize: '28px'\n }\n };\n\n const handleModalOpen = () => {\n setModalOpen(true);\n };\n\n const handleExportCSV = async () => {\n setIsLoading(true);\n let body;\n\n body = JSON.stringify({\n applications_report: {\n with_answers: true,\n sort: handleSortTranslate(sortBy),\n sort_order: sortOrder,\n filter: {\n min_rating: filters?.rating[0],\n max_rating: filters?.rating[1],\n exact_states: filters?.status.map((s) => s.id)\n },\n activeColumns: activeColumns,\n exclude_unrated: filters?.excludeApplicantsWithoutRating\n }\n });\n\n try {\n const response = await fetch(\n `${BASE_URL}/api/v4/jobs/${jobId}/applications/applications_report`,\n {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'X-api-authenticate': apiKey\n },\n body: body\n }\n );\n if (response.status === 202) {\n setSnackbarState({\n message:\n 'Your CSV is being generated. Once complete, a download link will be sent to your email.',\n state: 'success'\n });\n } else {\n setSnackbarState({\n message: 'There was an error generating your CSV. Please try again.',\n state: 'error'\n });\n }\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n setModalOpen(false);\n }\n };\n\n return (\n <Tooltip title=\"Export CSV\" placement=\"top\" arrow>\n <Box>\n <Box>\n <IconButton\n id=\"export-applications-csv-button\"\n sx={classes.iconButton}\n onClick={handleModalOpen}\n >\n <IosShareIcon />\n </IconButton>\n </Box>\n <Modal\n open={modalOpen}\n onClose={() => setModalOpen(false)}\n aria-labelledby=\"export-applications-csv-modal\"\n >\n <Box sx={classes.csvExportModal}>\n <CloseIcon onClick={() => setModalOpen(false)} sx={classes.closeIcon} />\n <Button\n id=\"export-applications-csv-button\"\n sx={classes.csvExportButton}\n onClick={handleExportCSV}\n >\n {isLoading ? (\n <CircularProgress sx={{ color: '#FFFFFF', fontSize: '20px' }} />\n ) : (\n 'Export CSV'\n )}\n </Button>\n </Box>\n </Modal>\n </Box>\n </Tooltip>\n );\n}\n","import CloseIcon from '@mui/icons-material/Close';\nimport DoneIcon from '@mui/icons-material/Done';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Popover from '@mui/material/Popover';\nimport TextField from '@mui/material/TextField';\nimport { useMutation } from '@tanstack/react-query';\nimport React, { useEffect, useState } from 'react';\nimport API from '../API';\nimport { INoteProps, NoteState } from '../types';\nimport { classes } from './styles';\nimport { IError } from '../../SmartForms/types';\nimport { emojiInString } from '../../utils/emoji-checker';\nimport { NOTES_ERROR_MESSAGE } from '../../constants';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { Stack } from '@mui/material';\n\nconst defaultErrors = {\n note: '',\n subject: ''\n};\n\nconst NotesPopover = ({\n anchorEl,\n applicationId,\n handleCloseNote,\n jobId,\n onSuccess,\n setApplications,\n setSnackbarState,\n noteState,\n newNoteOnApplicationEnabled\n}: INoteProps) => {\n const [note, setNote] = useState('');\n const [noteSubject, setNoteSubject] = useState('');\n const isNotePad = noteState === NoteState.NOTEPAD;\n\n const [notesError, setNotesError] = useState<{ note: string; subject: string }>(\n Object.create(defaultErrors)\n );\n\n const validateInputs = () => {\n setNotesError(defaultErrors);\n if (emojiInString(note) || emojiInString(noteSubject)) {\n setNotesError((prev) => ({\n ...prev,\n ...(emojiInString(note) && { note: NOTES_ERROR_MESSAGE }),\n ...(emojiInString(noteSubject) && { subject: NOTES_ERROR_MESSAGE })\n }));\n return true;\n }\n return false;\n };\n\n const { mutate: saveNote, isLoading: savingNote } = useMutation({\n mutationFn: async (): Promise<void> => {\n if (!noteState) return;\n switch (noteState) {\n case NoteState.PERMANENT_RECORD:\n await API.addRecord(jobId, applicationId, { body: note, subject: noteSubject })\n .then((newNote) => {\n if (newNote) {\n setApplications((prevApplications) => {\n const newApplications = [...prevApplications];\n const applicationIndex = newApplications.findIndex(\n (application) => application.id === applicationId\n );\n newApplications[applicationIndex].notes = [\n newNote,\n ...newApplications[applicationIndex].notes\n ];\n return newApplications;\n });\n }\n });\n break;\n case NoteState.NOTEPAD:\n await API.updateNote(jobId, applicationId, { suitability_comment: note }).then(() => {\n setApplications((prevApplications) => {\n const newApplications = [...prevApplications];\n const applicationIndex = newApplications.findIndex(\n (application) => application.id === applicationId\n );\n newApplications[applicationIndex].suitability_comment = note;\n return newApplications;\n });\n });\n }\n },\n onError: (error: IError) => {\n const errorMessage = error.errors ? error.errors.join('. ') : error;\n\n if (!isNotePad) {\n setNote('');\n setNoteSubject('');\n }\n setSnackbarState({\n message: `Error ${isNotePad ? 'adding' : 'saving'} note, ${errorMessage}`,\n state: 'error'\n });\n },\n onSuccess: () => {\n setNotesError(defaultErrors);\n setNote('');\n handleCloseNote();\n onSuccess();\n setSnackbarState({\n message: `Note was successfully ${isNotePad ? 'added' : 'saved'}`,\n state: 'success'\n });\n }\n });\n\n const closeNoteHandler = () => {\n setNotesError(defaultErrors);\n handleCloseNote();\n };\n\n useEffect(() => {\n if (!anchorEl) return;\n setNote('');\n }, [anchorEl]);\n\n return (\n <Popover\n id={anchorEl ? 'edit-note-popover' : undefined}\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={closeNoteHandler}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <Stack sx={classes.notesContainer} spacing={2}>\n <Box sx={classes.notesTitle}>\n {newNoteOnApplicationEnabled && !isNotePad ? 'Add permanent record' : 'Add note'}\n </Box>\n {!isNotePad && (\n <>\n <TextField\n id=\"note-input\"\n sx={classes.noteInput}\n label=\"Subject\"\n fullWidth\n variant=\"outlined\"\n onChange={(e) => setNoteSubject(e.target.value)}\n InputLabelProps={{\n shrink: true\n }}\n required\n />\n {!!notesError.subject && <Box sx={sharedClasses.errorText}>{notesError.subject}</Box>}\n </>\n )}\n <TextField\n id=\"note-input\"\n sx={classes.noteInput}\n label=\"Note\"\n multiline\n fullWidth\n maxRows={4}\n variant=\"outlined\"\n onChange={(e) => setNote(e.target.value)}\n required\n InputLabelProps={{\n shrink: true\n }}\n />\n {!!notesError.note && <Box sx={sharedClasses.errorText}>{notesError.note}</Box>}\n <Box id=\"notes-button-container\" sx={classes.notesButtonContainer}>\n <Button sx={classes.notesCancelButton} endIcon={<CloseIcon />} onClick={closeNoteHandler}>\n Cancel\n </Button>\n <Button\n sx={classes.notesEditSaveButton}\n endIcon={savingNote ? <CircularProgress size={16} /> : <DoneIcon />}\n onClick={() => {\n if (validateInputs()) return;\n saveNote();\n }}\n disabled={!note || savingNote}\n >\n {`${isNotePad ? 'Save' : 'Add'}`}\n </Button>\n </Box>\n </Stack>\n </Popover>\n );\n};\nexport default NotesPopover;\n","import React, { useState } from 'react';\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport SearchIcon from '@mui/icons-material/Search';\nimport { IGetApplications } from '../types';\nimport { classes } from './styles';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function Search({\n setSearch,\n getApplications,\n setPage,\n jobId,\n}: {\n setSearch: (query: string) => void;\n getApplications: IGetApplications;\n setPage: (page: number) => void;\n jobId: number;\n}) {\n const [tempSearch, setTempSearch] = useState('');\n const debouncedAPICall = useDebouncedCallback((searchQuery) => {\n sessionStorage.setItem(`${jobId}-applicationTablePage`, 1);\n getApplications(1, null, searchQuery, null, null);\n setPage(1);\n setSearch(searchQuery);\n }, 600);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTempSearch(event.target.value);\n debouncedAPICall(event.target.value);\n };\n\n return (\n <Box sx={{ width: '100%' }}>\n <FormControl fullWidth>\n <OutlinedInput\n id=\"applicant-search\"\n sx={classes.searchInput}\n placeholder={'Search by name'}\n value={tempSearch}\n onChange={handleChange}\n startAdornment={\n <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n <SearchIcon />\n </InputAdornment>\n }\n />\n </FormControl>\n </Box>\n );\n}\n","import React, { useRef, useState } from 'react';\nimport Box from '@mui/material/Box';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport Paper from '@mui/material/Paper';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport IconButton from '@mui/material/IconButton';\nimport { Stack } from '@mui/material';\nimport ClearIcon from '@mui/icons-material/Clear';\nimport SearchIcon from '@mui/icons-material/Search';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { classes } from './styles';\nimport { ISelectedApplicantsProps } from '../types';\n\nexport const getRatingColor = (rating: number) => {\n if (rating <= 20) {\n return '#CF5005';\n } else if (rating <= 40) {\n return '#E7B500';\n } else if (rating <= 60) {\n return '#B7F018';\n } else if (rating <= 80) {\n return '#94EDBB';\n } else if (rating <= 100) {\n return '#6FCC7C';\n } else {\n return '#FFFFFF';\n }\n};\n\nexport default function SelectedApplicants({\n globalSelected,\n handleDeselectCandidate,\n closeModalCallback,\n filters,\n eventCandidates\n}: ISelectedApplicantsProps) {\n const [searchTerm, setSearchTerm] = useState('');\n const statusDropdownRef = useRef<HTMLDivElement>(null);\n\n const filterCandidates = (application: ISelectedApplicantsProps['globalSelected'][0]) => {\n return searchTerm\n ? `${application.candidate?.firstname?.toLowerCase()} ${application.candidate?.lastname?.toLowerCase()}`.includes(\n searchTerm.toLowerCase()\n ) || application.candidate?.phone1?.includes(searchTerm)\n : true;\n };\n\n const onRemoveCandidate = (id: number) => {\n handleDeselectCandidate(id);\n if (globalSelected?.length <= 1) closeModalCallback();\n };\n\n return (\n <>\n {globalSelected.length > 50 ? (\n <Box></Box>\n ) : (\n <OutlinedInput\n id=\"job-search\"\n sx={classes.candidateSearch}\n placeholder={'Search candidates'}\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n startAdornment={\n <InputAdornment sx={{ padding: '0px 0px 0px 10px' }} position=\"start\">\n <SearchIcon />\n </InputAdornment>\n }\n />\n )}\n <Box sx={classes.selectedApplicantsTableHeader}>\n {globalSelected.length} candidates selected\n </Box>\n {globalSelected.length > 50 ? (\n <>\n <Box sx={classes.selectedApplicantsTableHeader}>Status</Box>\n {filters?.status.length === 0 && <Box sx={classes.filterButton}>No Status Selected</Box>}\n <Stack sx={{ flexDirection: 'row' }}>\n {filters?.status.map((filterStatus) => (\n <Stack\n key={filterStatus.id}\n sx={{\n ...classes.filterButton,\n flexDirection: 'row',\n alignItems: 'center',\n marginRight: 2\n }}\n >\n <Box\n sx={{\n ...classes.statusColour,\n position: 'unset',\n marginRight: 1,\n height: '8px',\n width: '8px',\n backgroundColor: filterStatus.colour ? filterStatus.colour : '#AAAAAA'\n }}\n ></Box>\n {filterStatus.name}\n </Stack>\n ))}\n </Stack>\n <Box>\n <Box sx={classes.selectedApplicantsTableHeader}>Rating</Box>\n <Box sx={classes.filterButton}>\n {filters?.rating[0]} - {filters?.rating[1]} %\n </Box>\n </Box>\n </>\n ) : (\n <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n <Table\n sx={{ ...classes.selectedApplicantsTable, width: eventCandidates ? '100%' : 'unset' }}\n aria-label=\"selected applicants\"\n >\n <TableHead>\n <TableRow>\n <TableCell>Name</TableCell>\n <TableCell>Phone</TableCell>\n <TableCell>Status</TableCell>\n <TableCell>Rating</TableCell>\n {eventCandidates && <TableCell>Timeslot Availability</TableCell>}\n <TableCell></TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {globalSelected\n .filter((candidate) => filterCandidates(candidate))\n .map((application: ISelectedApplicantsProps['globalSelected'][0]) => (\n <TableRow key={application.id}>\n <TableCell>\n {application.candidate.firstname} {application.candidate.lastname}\n </TableCell>\n <TableCell>{application.candidate.phone1}</TableCell>\n <TableCell sx={classes.applicationStatus}>\n <Box\n sx={{ ...classes.statusDropdownSelected, ...classes.statusClampSelected }}\n ref={statusDropdownRef}\n >\n <Box\n className=\"status-dropdown-full\"\n sx={{\n '&::after': {\n display: 'block',\n top:\n statusDropdownRef.current &&\n statusDropdownRef.current.clientHeight > 45\n ? '25.5px'\n : '50%'\n }\n }}\n >\n <>\n <Box\n sx={{\n ...classes.statusColour,\n backgroundColor: application.status_details?.colour\n ? application.status_details?.colour\n : '#AAAAAA'\n }}\n ></Box>\n {application.status}\n </>\n </Box>\n <Box\n sx={{\n ...classes.statusColour,\n backgroundColor: application.status_details?.colour\n ? application.status_details?.colour\n : '#AAAAAA'\n }}\n ></Box>\n {application.status}\n </Box>\n </TableCell>\n <TableCell\n sx={{\n color: '#000000',\n fontWeight: '600'\n }}\n >\n <Box\n sx={{\n ...classes.rating,\n backgroundColor: getRatingColor(\n application.rating === null ? 101 : Number(application.rating)\n )\n }}\n >\n {application.rating ? Math.ceil(Number(application.rating)) + '%' : '-'}\n </Box>\n </TableCell>\n {eventCandidates && (\n <TableCell>\n <Stack\n sx={{\n ...classes.availabilityColumnCell,\n background: eventCandidates.includes(application.id)\n ? '#E5E5E5'\n : '#EFFDF3',\n color: eventCandidates.includes(application.id) ? '#939393' : '#8CCF95'\n }}\n >\n {eventCandidates.includes(application.id) ? 'BOOKED' : 'AVAILABLE'}\n </Stack>\n </TableCell>\n )}\n <TableCell>\n <IconButton\n onClick={() => onRemoveCandidate(application.id)}\n sx={{ marginLeft: '35px' }}\n >\n <ClearIcon sx={{ color: theme.palette.error.main }} />\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n )}\n </>\n );\n}\n","import React, { useEffect, useState, useCallback, ChangeEvent } from 'react';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport moment from 'moment';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport Pagination from '@mui/material/Pagination';\nimport MenuItem from '@mui/material/MenuItem';\nimport FormControl from '@mui/material/FormControl';\nimport Select from '@mui/material/Select';\nimport Paper from '@mui/material/Paper';\nimport Skeleton from '@mui/material/Skeleton';\nimport IconButton from '@mui/material/IconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport FilePreviewModal from '../../Components/Modals/FilePreviewModal';\nimport DocTypeIcon from '../../Components/Utilities/DocTypeIcon';\nimport AttachmentSelector from '../../Components/Utilities/AttachmentSelector';\nimport { IJobAttachment } from '../types';\nimport { classes } from './styles';\nimport Api from '../API';\n\nexport default function Attachments({\n apiKey,\n jobId,\n permissions\n}: {\n apiKey: string;\n jobId: number;\n permissions: Record<string, boolean>;\n}) {\n const BASE_URL = window.location.origin;\n const [attachments, setAttachments] = useState([]);\n const [totalAttachments, setTotalAttachments] = useState(0);\n const [totalPages, setTotalPages] = useState(0);\n const [currentPage, setCurrentPage] = useState(1);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [copied, setCopied] = useState({});\n const [previewOpen, setPreviewOpen] = useState(false);\n const [selectedAttachment, setSelectedAttachment] = useState<IJobAttachment | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [isDeleting, setIsDeleting] = useState(false);\n\n const deleteAttachment = async (url: string, attachmentId: number) => {\n setIsDeleting(true);\n try {\n await Api.deleteJobAttachment({ 'X-api-authenticate': apiKey }, jobId, attachmentId);\n fetchAttachments(currentPage, rowsPerPage);\n } catch (error) {\n console.log(error);\n } finally {\n setIsDeleting(false);\n setIsDialogOpen(false);\n }\n };\n\n const [dialogProps, setDialogProps] = useState({\n url: '',\n title: 'Permanently delete attachment?',\n description: '',\n buttonText: 'Delete',\n buttonCallback: deleteAttachment,\n callbackLoading: false,\n dialogId: 0\n });\n\n const fetchInitialAttachments = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await Api.getJobAttachments({ 'X-api-authenticate': apiKey }, jobId, {});\n setAttachments(response.data.job_attachments);\n setTotalAttachments(response.totalItems);\n setTotalPages(response.totalPages);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, jobId]);\n\n const fetchAttachments = async (page: number, rows: number) => {\n setIsLoading(true);\n try {\n const response = await Api.getJobAttachments({ 'X-api-authenticate': apiKey }, jobId, {\n page: page,\n limit: rows\n });\n setAttachments(response.data.job_attachments);\n setTotalAttachments(response.totalItems);\n setTotalPages(response.totalPages);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleRowsPerPageChange = (selection: number) => {\n if (selection === rowsPerPage) return;\n setRowsPerPage(selection);\n fetchAttachments(currentPage, selection);\n };\n\n const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n if (newPage === currentPage) return;\n setCurrentPage(newPage);\n fetchAttachments(newPage, rowsPerPage);\n };\n\n const handleCopy = (attachmentId: number) => {\n setCopied((prev) => ({ ...prev, [attachmentId]: true }));\n setTimeout(() => setCopied((prev) => ({ ...prev, [attachmentId]: false })), 3000);\n };\n\n const handleDeleteAttachment = (attachmentId: number, attachmentName: string) => {\n setDialogProps((prev) => ({\n ...prev,\n url: `/api/v1/jobs/${jobId}/attachments/${attachmentId}`,\n description: `Are you sure you want to delete ${attachmentName}? This action cannot be undone.`,\n dialogId: attachmentId,\n buttonCallback: deleteAttachment\n }));\n setIsDialogOpen(true);\n };\n\n const handleSelectAttachment = (attachment: IJobAttachment) => {\n setSelectedAttachment(attachment);\n setPreviewOpen(true);\n };\n\n useEffect(() => {\n fetchInitialAttachments();\n }, [fetchInitialAttachments]);\n\n return (\n <Box>\n <AttachmentSelector\n performUpload={true}\n apiKey={apiKey}\n uploadUrl={`${BASE_URL}/api/v4/jobs/${jobId}/job_attachments`}\n onUploadComplete={() => fetchAttachments(currentPage, rowsPerPage)}\n maxSize={50000000}\n data-testid=\"job-attachments-selector\"\n />\n <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n <Table sx={classes.tableWrapper} aria-label=\"job attachments\">\n <TableHead>\n <TableRow>\n <TableCell>File</TableCell>\n <TableCell>Public link</TableCell>\n <TableCell>Attached by</TableCell>\n <TableCell></TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {attachments &&\n !isLoading &&\n attachments.map((attachment: IJobAttachment) => (\n <TableRow key={attachment.id}>\n <TableCell>\n <Box\n onClick={() => handleSelectAttachment(attachment)}\n sx={classes.fileIconContainer}\n >\n <Box sx={classes.fileIcon}>\n {DocTypeIcon(attachment.attached_file_name.split('.').pop())}\n </Box>\n <Box>\n <Box\n sx={classes.fileName}\n className=\"attachment-file-name\"\n data-testid=\"attachment-file-name\"\n >\n {attachment.attached_file_name}\n </Box>\n <Box sx={classes.fileDate}>\n {moment(attachment.created_at).format('Do MMMM YYYY[,] h:mma')}\n </Box>\n </Box>\n </Box>\n </TableCell>\n <TableCell>\n <Box sx={classes.fileLinkContainer}>\n <a href={attachment.public_link} target=\"_blank\" rel=\"noopener noreferrer\">\n <Box>{attachment.public_link}</Box>\n </a>\n <CopyToClipboard\n text={attachment.public_link}\n onCopy={() => handleCopy(attachment.id)}\n >\n <Button sx={classes.copyButton}>\n {copied[attachment.id as keyof typeof copied] ? 'Copied!' : 'Copy'}\n </Button>\n </CopyToClipboard>\n </Box>\n </TableCell>\n <TableCell sx={classes.fileAttachedBy}>{attachment.attached_by}</TableCell>\n <TableCell>\n {permissions.delete && (\n <IconButton\n onClick={() =>\n handleDeleteAttachment(attachment.id, attachment.attached_file_name)\n }\n className=\"delete-job-attachment-button\"\n data-testid=\"delete-job-attachment-button\"\n >\n <DeleteIcon sx={{ color: '#D6827D' }} />\n </IconButton>\n )}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n {!isLoading && attachments?.length === 0 && (\n <Box sx={classes.noAttachments} className=\"no-attachments\" data-testid=\"no-attachments\">\n No attachments added\n </Box>\n )}\n {isLoading && (\n <>\n <Skeleton animation=\"wave\" height={60} />\n <Skeleton animation=\"wave\" height={60} />\n <Skeleton animation=\"wave\" height={60} />\n <Skeleton animation=\"wave\" height={60} />\n </>\n )}\n </TableContainer>\n <Box sx={classes.paginationParent}>\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n sx={classes.rowSelect}\n value={rowsPerPage}\n onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" value={10}>\n 10\n </MenuItem>\n <MenuItem id=\"second-rpp-item\" value={20}>\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer}>\n <Pagination\n id=\"pagination-menu\"\n count={totalPages}\n page={currentPage}\n siblingCount={0}\n onChange={(event, page) => handlePageChange(event, page)}\n sx={classes.pagination}\n />\n <span id=\"total-jobs\">{totalAttachments} Total</span>\n </Box>\n </Box>\n <FilePreviewModal\n previewOpen={previewOpen}\n setPreviewOpen={setPreviewOpen}\n selectedAttachment={selectedAttachment}\n isShareable={true}\n />\n <GenericDialog\n url={dialogProps.url}\n title={dialogProps.title}\n description={dialogProps.description}\n buttonText={dialogProps.buttonText}\n buttonCallback={dialogProps.buttonCallback}\n callbackLoading={isDeleting}\n isDialogOpen={isDialogOpen}\n setDialogOpen={setIsDialogOpen}\n dialogId={dialogProps.dialogId}\n />\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction, useCallback, useEffect, useState } from 'react';\nimport {\n Box,\n Button,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n Paper,\n Stack\n} from '@mui/material';\nimport { classes } from './styles';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport CheckIcon from '@mui/icons-material/Check';\nimport { v4 as uuidv4 } from 'uuid';\nimport { IJob } from '../../Job/types';\nimport { DndContext, DragStartEvent, DragEndEvent } from '@dnd-kit/core';\nimport { arrayMove, SortableContext, rectSortingStrategy } from '@dnd-kit/sortable';\nimport { restrictToVerticalAxis, restrictToWindowEdges } from '@dnd-kit/modifiers';\nimport SortableRow from './SortableRow';\n\nexport default function CandidateAttachments({\n apiKey,\n job,\n candidateAttachments,\n setCandidateAttachments,\n attachmentsTabJobData,\n setAttachmentsTabJobData,\n setIsEdited\n}: {\n apiKey: string;\n job: IJob;\n setIsEdited: Dispatch<SetStateAction<boolean>>;\n}) {\n const [isPillTick, setIsPillTick] = useState<Record<string, boolean>>({\n Resume: false,\n 'Drivers licence': false,\n Video: false\n });\n const [newAttachment, setNewAttachment] = useState('');\n const [activeId, setActiveId] = useState<string | null>(null);\n\n const handleDragStart = useCallback((event: DragStartEvent) => {\n setActiveId(event.active.id as string);\n }, []);\n\n const handleDragEnd = useCallback(\n (event: DragEndEvent) => {\n setIsEdited(true);\n const { active, over } = event;\n if (over === null) {\n return;\n }\n if (active.id !== over.id) {\n const oldIndex = candidateAttachments\n .map((item) => {\n return item.id;\n })\n .indexOf(active.id as string);\n const newIndex = candidateAttachments\n .map((item) => {\n return item.id;\n })\n .indexOf(over.id as string);\n const newData = arrayMove(candidateAttachments, oldIndex, newIndex);\n setCandidateAttachments(newData);\n }\n setActiveId(null);\n },\n [candidateAttachments]\n );\n\n const checkPillValue = useCallback(async () => {\n candidateAttachments?.map((attachment) => {\n const flag = Object.keys(isPillTick).includes(attachment.label);\n flag && setIsPillTick((prev) => ({ ...prev, [attachment.label]: attachment.required }));\n });\n }, [job]);\n\n const handleAttachmentInput = (e, index: number) => {\n setIsEdited(true);\n const { name, value } = e.target;\n const list = [...candidateAttachments];\n list[index].label = value;\n setCandidateAttachments(list);\n };\n\n const onRemoveAttachment = (index: number) => {\n setIsEdited(true);\n const list = [...candidateAttachments];\n if (Object.keys(isPillTick).includes(list[index].label)) {\n setIsPillTick((prev) => ({ ...prev, [list[index].label]: false }));\n }\n list.splice(index, 1);\n setCandidateAttachments(list);\n };\n\n const handleChange = (e, index: number) => {\n setIsEdited(true);\n const list = [...candidateAttachments];\n list[index].required = !list[index].required;\n setCandidateAttachments(list);\n };\n\n const handleAddAttachment = (name: string) => {\n setIsEdited(true);\n const flag = Object.keys(isPillTick).includes(name);\n\n setNewAttachment('');\n\n if (flag && !isPillTick[name]) {\n setCandidateAttachments([\n ...candidateAttachments,\n { id: uuidv4(), label: name, value: name, required: flag }\n ]);\n setIsPillTick((prev) => ({ ...prev, [name]: true }));\n } else if (!flag) {\n setCandidateAttachments([\n ...candidateAttachments,\n { id: uuidv4(), label: name, value: name, required: flag }\n ]);\n }\n };\n\n useEffect(() => {\n checkPillValue();\n }, [checkPillValue]);\n\n return (\n <Box sx={classes.pageContainer}>\n <Box sx={classes.pageHeader}>\n <h2>Candidate attachments</h2>\n </Box>\n <Box sx={{ color: '#939393', fontSize: '16px', padding: '30px 0' }}>\n Select or add the documents that you want candidates to attach. All attachments will be\n optional unless made mandatory.\n </Box>\n <Box sx={classes.actionsContianer}>\n {Object.keys(isPillTick).map((pill, index) => (\n <Button\n key={index}\n variant=\"outlined\"\n startIcon={isPillTick[pill] ? <CheckIcon /> : ''}\n sx={isPillTick[pill] ? classes.checkedPill : classes.actionButton}\n onClick={() => handleAddAttachment(pill)}\n >\n {pill}\n </Button>\n ))}\n </Box>\n <Box sx={{ padding: '20px 0' }}>\n <Box id=\"add-attachment-title\" sx={{ color: '#939393', marginBottom: 1 }}>\n New attachment\n </Box>\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Stack flexGrow=\"0.5\" maxWidth=\"250px\">\n <FormTextField\n dataTestId=\"new-attachment-text-input\"\n value={newAttachment}\n onChange={(e) => {\n setNewAttachment(e.target.value);\n setIsEdited(true);\n }}\n required={true}\n />\n </Stack>\n <Button\n id=\"add-attachment-button\"\n data-testid=\"add-attachment-button\"\n sx={classes.addAttachmentButton}\n onClick={() => handleAddAttachment(newAttachment)}\n disabled={!newAttachment}\n >\n Add attachment\n </Button>\n </Box>\n </Box>\n <DndContext\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n modifiers={[restrictToVerticalAxis, restrictToWindowEdges]}\n >\n <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n <Table sx={classes.tableWrapper} aria-label=\"attachment table\">\n <TableHead>\n <TableRow>\n <TableCell align=\"left\" sx={{ minWidth: '150px' }}>\n Mandatory\n </TableCell>\n <TableCell>Title</TableCell>\n <TableCell></TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n <SortableContext items={candidateAttachments} strategy={rectSortingStrategy}>\n {candidateAttachments &&\n candidateAttachments.map((attachment, index) => (\n <SortableRow\n key={attachment.value + attachment.id}\n id={attachment.id}\n row={attachment}\n index={index}\n handleChange={handleChange}\n handleAttachmentInput={handleAttachmentInput}\n onRemoveAttachment={onRemoveAttachment}\n />\n ))}\n </SortableContext>\n </TableBody>\n </Table>\n </TableContainer>\n </DndContext>\n </Box>\n );\n}\n","import React from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from './styles';\nimport IconButton from '@mui/material/IconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport TableCell from '@mui/material/TableCell';\nimport TableRow from '@mui/material/TableRow';\nimport Checkbox from '@mui/material/Checkbox';\nimport { FormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\n\nexport default function SortableRow({\n id,\n row,\n index,\n handleChange,\n handleAttachmentInput,\n onRemoveAttachment\n}: {\n id: string;\n row: any;\n index: number;\n handleChange: any;\n handleAttachmentInput: any;\n onRemoveAttachment: any;\n}) {\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n useSortable({ id: id });\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition\n };\n\n return (\n <TableRow ref={setNodeRef} style={style} {...attributes}>\n <TableCell align=\"left\">\n <Checkbox\n id={`select-checkbox-${index}`}\n sx={classes.checkbox}\n onChange={(e) => handleChange(e, index)}\n checked={row.required}\n />\n </TableCell>\n <TableCell>\n <FormTextField\n value={row.label}\n onChange={(e) => handleAttachmentInput(e, index)}\n required={true}\n styles={{ width: '250px' }}\n />\n </TableCell>\n <TableCell>\n <IconButton\n data-testid={`delete-attachment-button-${index}`}\n onClick={() => onRemoveAttachment(index)}\n >\n <DeleteIcon sx={{ color: '#E37D7A', fontSize: 16 }} />\n </IconButton>\n </TableCell>\n <TableCell>\n <IconButton ref={setActivatorNodeRef} {...listeners}>\n <DragIndicatorIcon />\n </IconButton>\n </TableCell>\n </TableRow>\n );\n}\n","import React from 'react';\n\nexport default function ClicksNoBackgroundSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 53 53\">\n<g id=\"Group_579\" data-name=\"Group 579\" transform=\"translate(-899 -710)\">\n <g id=\"MDI_cursor-default-click\" data-name=\"MDI / cursor-default-click\" transform=\"translate(912.333 723.833)\">\n <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"26.334\" height=\"26.334\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"25.334\" height=\"25.334\" fill=\"none\"/>\n </g>\n <path id=\"Path_cursor-default-click\" data-name=\"Path / cursor-default-click\" d=\"M11.612,9.535a.834.834,0,0,0-.834.834V22.933a.834.834,0,0,0,.834.834.845.845,0,0,0,.527-.176l2.1-1.7,1.821,3.972a.835.835,0,0,0,.757.472.558.558,0,0,0,.362-.088l3.028-1.4a.815.815,0,0,0,.4-1.108L18.766,19.75l2.644-.494a.965.965,0,0,0,.472-.285.824.824,0,0,0-.132-1.185l-9.59-8.065-.011.011a.829.829,0,0,0-.538-.2m4.652,1.437V8.778H21.75v2.194H16.264M14.98,5.223l3.105-3.105,1.547,1.547L16.528,6.77,14.98,5.223M10.778,0h2.194V5.486H10.778V0M4.118,16.086,7.223,12.98,8.77,14.528,5.665,17.633,4.118,16.086m0-12.421L5.665,2.118,8.77,5.223,7.223,6.77,4.118,3.665m3.369,7.308H2V8.778H7.486v2.194\" transform=\"translate(1.292)\" fill=\"#084d6d\"/>\n </g>\n</g>\n</svg>)\n}","import React from 'react';\nimport { classes } from './styles';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Modal from '@mui/material/Modal';\nexport interface IEmailPreviewModalProps {\n title: string;\n subject: string;\n body: string;\n isDialogOpen: boolean;\n dialogId: number;\n setDialogOpen: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nfunction EmailPreviewModal({\n title,\n subject,\n body,\n isDialogOpen,\n setDialogOpen,\n dialogId\n}: IEmailPreviewModalProps) {\n return (\n <Modal\n id={`${dialogId}`}\n open={isDialogOpen}\n onClose={() => setDialogOpen(false)}\n >\n <Box sx={classes.attachmentPreviewModal}>\n <CloseIcon onClick={() => setDialogOpen(false)} sx={classes.closeIcon} />\n <Box id=\"modal-modal-title\" sx={classes.attachmentPreviewTitle}>\n {title}\n </Box>\n {\n subject && body ? \n <Box sx={classes.attachmentPreviewContent}>{<div dangerouslySetInnerHTML={{ __html: `<h3>${subject}</h3>${body}` }} />}</Box>\n : <Box sx={classes.noPreview}>No email template.</Box>\n }\n <Box sx={classes.attachmentPreviewActions}>\n <Button onClick={() => setDialogOpen(false)} sx={classes.downloadButton}>Close</Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n\nexport default EmailPreviewModal;\n","import React, { useState, useEffect, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\nimport NoEmailStatusSVG from '../EmailStatus/NoEmailStatusSVG';\nimport Button from '@mui/material/Button';\nimport FormControl from '@mui/material/FormControl';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport Paper from '@mui/material/Paper';\nimport IconButton from '@mui/material/IconButton';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport Collapse from '@mui/material/Collapse';\nimport Statistics from './Widgets/Statistics';\nimport Select from '@mui/material/Select';\nimport Pagination from '@mui/material/Pagination';\nimport MenuItem from '@mui/material/MenuItem';\nimport { IJobEmailStatus } from '../types';\nimport moment from 'moment';\nimport Api from '../API';\nimport { classes } from './styles';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport EmailPreviewModal from './EmailPreviewModal';\nimport StatusTypeIcon from './StatusTypeIcon';\nimport { StyledSnackbarProps } from '../../../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport Chip from '@mui/material/Chip';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\n\nexport default function EmailStatus({\n apiKey,\n jobId,\n setSnackbarState\n}: {\n apiKey: string;\n jobId: number;\n setSnackbarState: StyledSnackbarProps['setSnackbarState'];\n}) {\n const [emailStatuses, setEmailStatuses] = useState(null);\n const [totalEmailStatuses, setTotalEmailStatuses] = useState(0);\n const [totalPages, setTotalPages] = useState(0);\n const [currentPage, setCurrentPage] = useState(1);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState([]);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [previewId, setPreviewId] = useState(null);\n const [subject, setSubject] = useState('');\n const [body, setBody] = useState('');\n const [isCancelling, setIsCancelling] = useState([]);\n const [hoveredScheduleButtons, setHoveredScheduleButtons] = useState(\n new Array(emailStatuses?.length || 0).fill(false)\n );\n const [unscheduleIndex, setUnscheduleIndex] = useState(-1);\n const [unscheduleDialogOpen, setUnscheduleDialogOpen] = useState(false);\n const [unscheduledDetailsIsHovered, setUnscheduledDetailsIsHovered] = useState(\n new Array(emailStatuses?.length || 0).fill(false)\n );\n const [selectedEmailStatusId, setSelectedEmailStatusId] = useState(null);\n\n const fetchInitialEmailStatuses = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await Api.getEmailStatuses({ 'X-api-authenticate': apiKey }, jobId, {});\n setEmailStatuses(response.data.job_email_statuses);\n setTotalEmailStatuses(response.totalItems);\n setTotalPages(response.totalPages);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, jobId]);\n\n const fetchEmailStatuses = async (page: number, rows: number) => {\n setIsLoading(true);\n try {\n const response = await Api.getEmailStatuses({ 'X-api-authenticate': apiKey }, jobId, {\n page: page,\n limit: rows\n });\n setEmailStatuses(response.data.job_email_statuses);\n setTotalEmailStatuses(response.totalItems);\n setTotalPages(response.totalPages);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const handleRowsPerPageChange = (selection: number) => {\n if (selection === rowsPerPage) return;\n setRowsPerPage(selection);\n fetchEmailStatuses(currentPage, selection);\n };\n\n const handlePageChange = (event: React.ChangeEvent, newPage: number) => {\n if (newPage === currentPage) return;\n setCurrentPage(newPage);\n fetchEmailStatuses(newPage, rowsPerPage);\n };\n\n const handleOpen = (id: number) => {\n if (!open.includes(id)) {\n const copy = [...open];\n copy.push(id);\n setOpen(copy);\n }\n const flag = open.indexOf(id);\n if (flag > -1) {\n const copy = [...open];\n copy.splice(flag, 1);\n setOpen(copy);\n }\n };\n const cancelEmail = async (emailStatusId: number) => {\n try {\n await Api.cancelEmailBatch(jobId, emailStatusId);\n } catch (error) {\n setSnackbarState({\n message: 'Error cancelling email, please try again',\n state: 'error'\n });\n }\n };\n\n const handleCancel = async (emailStatusId: number) => {\n if (unscheduleIndex !== -1) {\n const index = emailStatuses.findIndex((emailStatus) => emailStatus.id === emailStatusId);\n const newIsCancelling = [...isCancelling];\n newIsCancelling[index] = true;\n setIsCancelling(newIsCancelling);\n try {\n await cancelEmail(emailStatusId);\n } catch (error) {\n setSnackbarState({\n message: 'Error cancelling email, please try again',\n state: 'error'\n });\n } finally {\n const response = await Api.getEmailStatuses({ 'X-api-authenticate': apiKey }, jobId, {});\n setEmailStatuses(response.data.job_email_statuses);\n setTotalEmailStatuses(response.totalItems);\n setTotalPages(response.totalPages);\n const resetIsCancelling = [...isCancelling];\n resetIsCancelling[index] = false;\n setIsCancelling(resetIsCancelling);\n }\n setUnscheduleIndex(-1);\n } else {\n handleUnscheduleDialogOpen(emailStatusId);\n }\n };\n\n const handlePreview = (emailStatus: IJobEmailStatus) => {\n setIsDialogOpen(true);\n setPreviewId(emailStatus.id);\n setSubject(emailStatus.email_template?.subject);\n setBody(emailStatus.email_template?.body);\n };\n\n const statusPastTense = (name: string) => {\n switch (name) {\n case 'open':\n return 'opened';\n case 'click':\n return 'clicked';\n case 'bounce':\n return 'bounced';\n case 'unsubscribe':\n return 'unsubscribed';\n case 'deliver':\n return 'delivered';\n default:\n return name;\n }\n };\n const handleUnscheduleDialogOpen = (emailStatusId: number) => {\n setSelectedEmailStatusId(emailStatusId);\n setUnscheduleIndex(emailStatusId);\n setIsDialogOpen(true);\n };\n useEffect(() => {\n fetchInitialEmailStatuses();\n }, [fetchInitialEmailStatuses]);\n\n return (\n <>\n {emailStatuses && emailStatuses.length > 0 && (\n <>\n <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n <Table sx={classes.tableWrapper} aria-label=\"job email status\">\n <TableHead>\n <TableRow style={{ borderBottom: '1px solid #f3f3f3' }}>\n <TableCell></TableCell>\n <TableCell>Email Template</TableCell>\n <TableCell>User</TableCell>\n <TableCell>Created at</TableCell>\n <TableCell>Sent From</TableCell>\n <TableCell sx={{ textAlign: 'right' }}>Applications</TableCell>\n <TableCell sx={classes.center}>State</TableCell>\n <TableCell></TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {emailStatuses &&\n !isLoading &&\n emailStatuses.map((emailStatus: IJobEmailStatus, index: number) => (\n <>\n <TableRow key={emailStatus.id}>\n <TableCell style={{ padding: '24px 0px 12px 12px' }}>\n <VisibilityIcon\n sx={classes.preview}\n onClick={() => handlePreview(emailStatus)}\n />\n </TableCell>\n <TableCell>\n <Box sx={classes.title}>{emailStatus.email_template?.name || '-'}</Box>\n </TableCell>\n <TableCell>\n <Box>{`${emailStatus.created_by.firstname} ${emailStatus.created_by.lastname}`}</Box>\n </TableCell>\n <TableCell>\n {moment(emailStatus.created_at).format('D MMMM YYYY, h:mm A')}\n </TableCell>\n <TableCell>{emailStatus.from}</TableCell>\n <TableCell sx={{ textAlign: 'right' }}>\n {emailStatus.applications_count}\n </TableCell>\n <TableCell sx={classes.center}>\n {emailStatus.state == 'Sent' ? (\n <Box\n sx={{\n ...classes.state,\n backgroundColor: '#8CCF951F',\n color: '#8CCF95'\n }}\n >\n {emailStatus.state}\n </Box>\n ) : emailStatus.canceled_at ? (\n <Box\n sx={{ display: 'flex', alignItems: 'center', position: 'relative' }}\n >\n <Box\n sx={{ ...classes.unscheduledEmailDetails }}\n onMouseEnter={() => {\n const newHoveredRows = [...unscheduledDetailsIsHovered];\n newHoveredRows[index] = true;\n setUnscheduledDetailsIsHovered(newHoveredRows);\n }}\n onMouseLeave={() => {\n const newHoveredRows = [...unscheduledDetailsIsHovered];\n newHoveredRows[index] = false;\n setUnscheduledDetailsIsHovered(newHoveredRows);\n }}\n >\n Unscheduled\n </Box>\n <Box\n sx={{\n display: unscheduledDetailsIsHovered[index] ? 'flex' : 'none',\n flexDirection: 'column',\n transform: 'translateY(4px)',\n ...classes.unsheduledDetailsPopover\n }}\n >\n <Box sx={classes.unsheduledDetailsLabel}>Unscheduled by:</Box>\n <Box sx={classes.unsheduledDetailsInfo}>\n {emailStatus.canceled_by.firstname}{' '}\n {emailStatus.canceled_by.lastname}\n </Box>\n <Box sx={classes.unsheduledDetailsLabel}>Unscheduled at:</Box>\n <Box sx={classes.unsheduledDetailsInfo}>\n {moment(emailStatus.canceled_at).format('D MMMM YYYY, h:mm A')}\n </Box>\n </Box>\n </Box>\n ) : (\n <Box sx={{ display: 'flex', alignItems: 'center' }}>\n <Button\n variant=\"contained\"\n color=\"secondary\"\n onClick={() => {\n handleCancel(emailStatus.id);\n setUnscheduleDialogOpen(true);\n }}\n disabled={isCancelling[index]}\n sx={{ ...classes.cancelEmailButton }}\n onMouseEnter={() => {\n const newHoveredScheduleButton = [...hoveredScheduleButtons];\n newHoveredScheduleButton[index] = true;\n setHoveredScheduleButtons(newHoveredScheduleButton);\n }}\n onMouseLeave={() => {\n const newHoveredScheduleButtons = [...hoveredScheduleButtons];\n newHoveredScheduleButtons[index] = false;\n setHoveredScheduleButtons(newHoveredScheduleButtons);\n }}\n >\n {isCancelling[index]\n ? 'Cancelling...'\n : hoveredScheduleButtons[index]\n ? 'UnSchedule'\n : 'Scheduled'}\n </Button>\n </Box>\n )}\n </TableCell>\n <TableCell>\n <Box sx={classes.details} onClick={() => handleOpen(emailStatus.id)}>\n <Box sx={classes.center}>More details</Box>\n <IconButton\n aria-label=\"expand row\"\n size=\"small\"\n disableFocusRipple={true}\n disableRipple={true}\n >\n {open.includes(emailStatus.id) ? (\n <KeyboardArrowDownIcon />\n ) : (\n <KeyboardArrowRightIcon />\n )}\n </IconButton>\n </Box>\n </TableCell>\n </TableRow>\n <TableRow style={{ borderBottom: '1px solid #f3f3f3' }}>\n <TableCell style={{ paddingBottom: '12px', paddingTop: '0px' }} colSpan={8}>\n <Collapse in={open.includes(emailStatus.id)} timeout=\"auto\" unmountOnExit>\n {emailStatus.filters && (\n <Box sx={classes.chipContainer} id=\"applied-filter-chips\">\n <Chip\n sx={classes.filterLabel}\n label=\"Filters Applied\"\n variant=\"outlined\"\n />\n {Object.entries(emailStatus.filters).map((filter) => {\n const [key, value] = filter;\n const newKey = key == 'withoutRating' ? 'without rating' : key;\n const newValue =\n key == 'rating' ? `${value[0]}-${value[1]}` : value;\n const label = `${newKey}: ${newValue}`;\n return (\n <div>\n {value !== '' && (\n <Chip\n key={key}\n sx={classes.chipItem}\n label={label}\n variant=\"outlined\"\n />\n )}\n </div>\n );\n })}\n </Box>\n )}\n <Box>\n <Box sx={classes.widgetContainer}>\n <Statistics\n bounced={emailStatus.statistics.bounced}\n bounced_pcent={emailStatus.statistics.bounced_pcent}\n clicks={emailStatus.statistics.clicks}\n clicks_pcent={emailStatus.statistics.clicks_pcent}\n delivered={emailStatus.statistics.delivered}\n delivered_pcent={emailStatus.statistics.delivered_pcent}\n opened={emailStatus.statistics.opened}\n opened_pcent={emailStatus.statistics.opened_pcent}\n unsubscribed={emailStatus.statistics.unsubscribed}\n unsubscribed_pcent={emailStatus.statistics.unsubscribed_pcent}\n isLoading={isLoading}\n />\n </Box>\n <TableContainer sx={{ maxHeight: 440 }}>\n <Table\n stickyHeader\n aria-label=\"sticky table\"\n sx={classes.candidateTableWrapper}\n >\n <TableHead>\n <TableRow>\n <TableCell>ID</TableCell>\n <TableCell>Candidate</TableCell>\n <TableCell>Email</TableCell>\n <TableCell>Status</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {emailStatus.applications.candidates.map((candidate) => (\n <TableRow key={candidate.id}>\n <TableCell>{candidate.id}</TableCell>\n <TableCell>{candidate.candidate}</TableCell>\n <TableCell>{candidate.email}</TableCell>\n <TableCell sx={classes.status}>\n <Box\n sx={\n StatusTypeIcon(candidate.status) && {\n paddingRight: '10px'\n }\n }\n >\n {StatusTypeIcon(statusPastTense(candidate.status))}\n </Box>\n <Box>{statusPastTense(candidate.status)}</Box>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </TableContainer>\n </Box>\n </Collapse>\n </TableCell>\n </TableRow>\n </>\n ))}\n </TableBody>\n </Table>\n {isLoading && (\n <>\n <Skeleton animation=\"wave\" height={60} />\n <Skeleton animation=\"wave\" height={60} />\n <Skeleton animation=\"wave\" height={60} />\n <Skeleton animation=\"wave\" height={60} />\n </>\n )}\n </TableContainer>\n <Box sx={classes.paginationParent}>\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n sx={classes.rowSelect}\n value={rowsPerPage}\n onChange={(e) => handleRowsPerPageChange(Number(e.target.value))}\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" value={10}>\n 10\n </MenuItem>\n <MenuItem id=\"second-rpp-item\" value={20}>\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer}>\n <Pagination\n id=\"pagination-menu\"\n count={totalPages}\n page={currentPage}\n siblingCount={0}\n onChange={handlePageChange}\n sx={classes.pagination}\n />\n <span id=\"total-jobs\">{totalEmailStatuses} Total</span>\n </Box>\n </Box>\n </>\n )}\n {!isLoading && emailStatuses?.length === 0 && (\n <Box sx={{ ...classes.noEmailStatusContainer, margin: '100px 0px' }}>\n <Box>\n <NoEmailStatusSVG />\n </Box>\n <Box sx={classes.noEmailStatusesText}>No emails have been sent yet</Box>\n </Box>\n )}\n {unscheduleDialogOpen && (\n <GenericDialog\n isDialogOpen={unscheduleDialogOpen}\n setDialogOpen={setUnscheduleDialogOpen}\n title=\"Unschedule Email Batch?\"\n description=\"Are you sure you want to unschedule this email batch?\"\n buttonCallback={() => {\n handleCancel(selectedEmailStatusId);\n setSelectedEmailStatusId(null);\n setUnscheduleDialogOpen(false);\n }}\n callbackLoading={false}\n buttonText=\"Unschedule\"\n url=\"\"\n />\n )}\n {previewId && isDialogOpen && (\n <EmailPreviewModal\n title={'Email Template'}\n subject={subject}\n body={body}\n isDialogOpen={isDialogOpen}\n setDialogOpen={setIsDialogOpen}\n dialogId={previewId}\n />\n )}\n </>\n );\n}\n","import React from 'react';\n\nexport default function NoEmailStatusSVG() {\nreturn (<svg \nid=\"Group_299\" \ndata-name=\"Group 299\" \nxmlns=\"http://www.w3.org/2000/svg\" \nxmlnsXlink=\"http://www.w3.org/1999/xlink\" \nwidth=\"116.117\" height=\"115.798\" \nviewBox=\"0 0 116.117 115.798\">\n<defs>\n <clipPath id=\"clip-path\">\n <rect id=\"Rectangle_619\" data-name=\"Rectangle 619\" width=\"116.117\" height=\"115.798\" fill=\"none\"/>\n </clipPath>\n</defs>\n<g id=\"Group_298\" data-name=\"Group 298\" clipPath=\"url(#clip-path)\">\n <path id=\"Path_128\" data-name=\"Path 128\" d=\"M116.117,57.813A57.783,57.783,0,1,1,112.626,38a58.07,58.07,0,0,1,3.491,19.81M58.159,115.469A57.569,57.569,0,1,0,.652,57.739a57.46,57.46,0,0,0,57.507,57.73\" transform=\"translate(0 0)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_129\" data-name=\"Path 129\" d=\"M61.743,117.287a57.569,57.569,0,1,1,57.305-57.293,57.685,57.685,0,0,1-57.305,57.293M96.434,88.636l.741-.844-1.249-.084c.252-.038.5-.1.756-.112,4.377-.266,8.754-.538,13.132-.778.637-.035.859-.266.808-.893-.09-1.1-.126-2.2-.193-3.3q-.482-7.948-.97-15.9-.657-10.674-1.32-21.347-.545-8.869-1.072-17.739c-.034-.582-.27-.751-.817-.706-1.124.093-2.251.154-3.378.219q-4.607.267-9.215.527l-1.086-1.223a2.23,2.23,0,0,0-.368-.667Q74.74,10.815,52.151,15.215c-.313.061-.613.183-.991.3.22.457.389.825.572,1.186Q69.064,50.864,86.4,85.028q2.175,4.288,4.349,8.577c.2.39.427.827.9.366,1.646-1.613,3.262-3.258,4.873-4.906.058-.059-.051-.282-.083-.428M25.144,91.867,29,91.727a3.3,3.3,0,0,1,1.863,1.4,9.51,9.51,0,0,0,1.028,1.217,45.75,45.75,0,0,0,48.579,6.806c.247-.113.481-.256.768-.41-.165-.345-.29-.622-.427-.892Q72.53,83.52,64.245,67.191,52.411,43.864,40.576,20.536c-.465-.917-.485-.923-1.37-.423a45.105,45.105,0,0,0-11.487,9.181c-.318.354-.576.761-.862,1.143l-.775,1.329.49.1a4.085,4.085,0,0,1-.526.1c-4.2.252-8.394.523-12.594.724-.689.033-.827.25-.787.853.212,3.224.406,6.449.6,9.674q.694,11.286,1.384,22.573.786,12.9,1.549,25.8c.038.649.26.836.881.793,2.686-.189,5.373-.348,8.061-.517\" transform=\"translate(-3.584 -1.819)\" fill=\"#fff\"/>\n <path id=\"Path_130\" data-name=\"Path 130\" d=\"M369.019,166.181a3.75,3.75,0,0,1,.906-.3q11.579-.721,23.16-1.414c3.067-.188,6.133-.4,9.2-.606q4.608-.263,9.215-.527c1.127-.065,2.254-.126,3.378-.219.546-.045.783.124.817.706q.517,8.87,1.072,17.739.656,10.674,1.32,21.347.489,7.948.97,15.9c.067,1.1.1,2.2.193,3.3.051.627-.171.858-.808.893-4.378.241-8.755.512-13.132.778-.253.015-.5.074-.756.112l-5.9.307c-.1-.6.387-.515.7-.544.919-.084,1.842-.125,2.763-.18q6.988-.413,13.975-.827c.567-.034,1.132-.11,1.919-.189l-32.688-22.3.084-.248a1.952,1.952,0,0,1,.631.014,3.136,3.136,0,0,1,.646.412q15.573,10.628,31.146,21.256c.195.133.4.244.732.441l-3.552-58.051c-.4.335-.632.521-.855.717q-2.776,2.436-5.549,4.875-8.307,7.274-16.617,14.544-4.6,4.03-9.2,8.065a5.5,5.5,0,0,1-.8.49l-.187-.284,32.721-28.668c-.461,0-.708-.013-.954,0q-5.106.306-10.211.617-8.062.484-16.124.965c-2.687.164-5.372.365-8.059.53q-4.607.283-9.216.522a4.111,4.111,0,0,1-.943-.171\" transform=\"translate(-312.211 -138)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_131\" data-name=\"Path 131\" d=\"M72.866,189.992q5.1-.286,10.191-.571c2.4-.131,4.8-.252,7.2-.377a3.181,3.181,0,0,1-.749.289c-.661.079-1.329.106-1.995.145q-12.249.73-24.5,1.459c-.922.055-1.842.134-2.763.2l-.029.178,48.558,33.022c-.8.484-1.17-.058-1.556-.318-4.039-2.728-8.061-5.481-12.091-8.222Q77.7,203.94,60.259,192.089c-.159-.108-.336-.188-.612-.34l3.543,57.933c.5-.422.829-.7,1.155-.984q2.722-2.381,5.442-4.764,8.512-7.45,17.025-14.9,5.444-4.763,10.9-9.517a3.21,3.21,0,0,1,.692-.355l.174.275L63.7,249.962l.109.181,6.514-.308,1.116.156c-2.687.17-5.375.328-8.061.517-.621.044-.843-.144-.881-.792q-.75-12.9-1.549-25.8-.687-11.287-1.384-22.573c-.2-3.225-.392-6.45-.6-9.674-.04-.6.1-.82.787-.853,4.2-.2,8.4-.472,12.594-.724a4.08,4.08,0,0,0,.526-.1\" transform=\"translate(-49.877 -159.942)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_132\" data-name=\"Path 132\" d=\"M169.35,127.827q-1.98-3.951-3.962-7.9c-.448-.891-.9-1.778-1.431-2.812-1.295.831-2.561,1.586-3.767,2.429a45.464,45.464,0,0,0-8.069,7.209,3.876,3.876,0,0,1-.939.586c.286-.382.544-.789.862-1.143a45.108,45.108,0,0,1,11.487-9.181c.885-.5.9-.494,1.37.423q11.836,23.327,23.669,46.655,8.284,16.329,16.568,32.659c.137.27.262.547.427.892-.287.154-.521.3-.768.41a45.75,45.75,0,0,1-48.579-6.806,9.535,9.535,0,0,1-1.028-1.217,4.007,4.007,0,0,1,1.057.476A44.892,44.892,0,0,0,177.686,201a44.277,44.277,0,0,0,26.349-2.951c.165-.071.327-.149.485-.233a2.456,2.456,0,0,0,.283-.236l-6.062-11.864q-2.929-5.8-5.858-11.6-9.846-19.417-19.7-38.829c-1.265-2.491-2.553-4.969-3.831-7.453\" transform=\"translate(-127.909 -98.718)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_133\" data-name=\"Path 133\" d=\"M350.467,92.773a3.6,3.6,0,0,1-.992-.438,45.043,45.043,0,0,0-21.737-10.7,44.435,44.435,0,0,0-17.114.076c-.222.044-.438.119-.689.188a2.229,2.229,0,0,0,.11.4q3.572,7.023,7.15,14.043c.139.3.268.61.418.906q9.9,19.512,19.807,39.022,4.6,9.05,9.2,18.095l2.8,5.568c.962-.95,1.837-1.8,2.692-2.663.75-.76,1.479-1.542,2.217-2.315.031.146.141.369.083.428-1.611,1.648-3.227,3.293-4.873,4.906-.47.46-.7.024-.9-.366q-2.172-4.29-4.349-8.577-17.333-34.164-34.666-68.33c-.183-.361-.352-.729-.572-1.186.377-.115.678-.237.99-.3q22.583-4.4,40.053,10.577a2.241,2.241,0,0,1,.368.667\" transform=\"translate(-261.478 -68.133)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_134\" data-name=\"Path 134\" d=\"M133.922,581.814l-1.115-.155,6.22-.414,1.277.158-2.525.27-3.858.141\" transform=\"translate(-112.362 -491.766)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_135\" data-name=\"Path 135\" d=\"M80.357,249.421l-6.221.414-6.514.308-.109-.181,34.876-30.524-.174-.275a3.2,3.2,0,0,0-.692.355q-5.456,4.749-10.9,9.517-8.513,7.448-17.025,14.9-2.721,2.381-5.442,4.764c-.326.285-.659.561-1.155.984-1.186-19.385-2.361-38.6-3.543-57.933.276.152.454.232.612.34Q81.514,203.941,98.951,215.8c4.03,2.741,8.052,5.494,12.091,8.222.386.261.759.8,1.556.318L64.04,191.317l.029-.178c.921-.068,1.841-.146,2.762-.2q12.249-.733,24.5-1.459c.666-.04,1.333-.066,1.995-.145a3.184,3.184,0,0,0,.749-.289l1.059.006c1.277,2.484,2.566,4.962,3.831,7.453q9.856,19.411,19.7,38.829,2.939,5.8,5.858,11.6l-.9,0a3.222,3.222,0,0,0-.72-.14c-.9.03-1.791.083-2.686.148-1.148.083-2.294.186-3.44.28-2.89.157-5.781.3-8.67.476-4.168.252-8.335.527-12.5.792l-3.918.264c-.737.055-1.473.12-2.21.162q-4.558.256-9.117.5\" transform=\"translate(-53.692 -159.942)\" fill=\"#eaeaea\"/>\n <path id=\"Path_136\" data-name=\"Path 136\" d=\"M272.245,568.263c4.167-.265,8.334-.54,12.5-.792,2.889-.175,5.78-.319,8.67-.476l1.123.151c-4.039.259-8.077.528-12.116.774-2.965.18-5.933.33-8.9.493l-1.28-.15\" transform=\"translate(-230.335 -479.71)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_137\" data-name=\"Path 137\" d=\"M173.214,577.613q4.559-.249,9.117-.5c.737-.041,1.473-.107,2.21-.162l.964.158-11.015.661-1.277-.158\" transform=\"translate(-146.549 -488.134)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_138\" data-name=\"Path 138\" d=\"M410.9,564.8l-1.123-.151c1.146-.094,2.292-.2,3.44-.28.894-.065,1.79-.118,2.686-.148a3.209,3.209,0,0,1,.72.14c-.655.085-1.309.2-1.967.247-1.25.086-2.5.13-3.756.192\" transform=\"translate(-346.696 -477.358)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_139\" data-name=\"Path 139\" d=\"M247.762,575.656l-.965-.158,3.917-.264,1.28.15-4.233.272\" transform=\"translate(-208.804 -486.68)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_140\" data-name=\"Path 140\" d=\"M392.657,227.5l-1.3.03q-4.6-9.047-9.2-18.095-9.907-19.509-19.807-39.022c-.15-.3-.279-.6-.418-.906l1.091-.024a4.109,4.109,0,0,0,.943.171q4.609-.239,9.216-.522c2.687-.165,5.372-.366,8.059-.53q8.061-.493,16.124-.965,5.106-.306,10.211-.617c.246-.015.493,0,.954,0l-32.721,28.668.187.284a5.491,5.491,0,0,0,.8-.49q4.608-4.023,9.2-8.065,8.307-7.274,16.617-14.544,2.778-2.433,5.549-4.875c.223-.2.455-.382.855-.717,1.189,19.428,2.365,38.653,3.552,58.051-.328-.2-.537-.308-.732-.441q-15.574-10.626-31.146-21.256a3.139,3.139,0,0,0-.646-.412,1.951,1.951,0,0,0-.631-.014l-.084.248,32.689,22.3c-.787.079-1.352.155-1.919.189q-6.987.42-13.975.827c-.922.054-1.844.1-2.763.18-.314.029-.8-.056-.7.544\" transform=\"translate(-306.213 -141.3)\" fill=\"#eaeaea\"/>\n</g>\n</svg>)\n}","import React from 'react';\n\nexport default function StatusTypeOcpm(status: string) {\n switch (status) {\n case 'clicked':\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"20\" viewBox=\"16 16 22 22\">\n <g id=\"Group_579\" data-name=\"Group 579\" transform=\"translate(-899 -710)\">\n <g id=\"MDI_cursor-default-click\" data-name=\"MDI / cursor-default-click\" transform=\"translate(912.333 723.833)\">\n <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"26.334\" height=\"26.334\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"25.334\" height=\"25.334\" fill=\"none\"/>\n </g>\n <path id=\"Path_cursor-default-click\" data-name=\"Path / cursor-default-click\" d=\"M11.612,9.535a.834.834,0,0,0-.834.834V22.933a.834.834,0,0,0,.834.834.845.845,0,0,0,.527-.176l2.1-1.7,1.821,3.972a.835.835,0,0,0,.757.472.558.558,0,0,0,.362-.088l3.028-1.4a.815.815,0,0,0,.4-1.108L18.766,19.75l2.644-.494a.965.965,0,0,0,.472-.285.824.824,0,0,0-.132-1.185l-9.59-8.065-.011.011a.829.829,0,0,0-.538-.2m4.652,1.437V8.778H21.75v2.194H16.264M14.98,5.223l3.105-3.105,1.547,1.547L16.528,6.77,14.98,5.223M10.778,0h2.194V5.486H10.778V0M4.118,16.086,7.223,12.98,8.77,14.528,5.665,17.633,4.118,16.086m0-12.421L5.665,2.118,8.77,5.223,7.223,6.77,4.118,3.665m3.369,7.308H2V8.778H7.486v2.194\" transform=\"translate(1.292)\" fill=\"#084d6d\"/>\n </g>\n </g>\n </svg>\n );\n case 'delivered':\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"12 14 28 28\">\n <g id=\"Group_577\" data-name=\"Group 577\" transform=\"translate(-415 -710)\">\n <g id=\"MDI_account-multiple-check\" data-name=\"MDI / account-multiple-check\" transform=\"translate(426.592 721.592)\">\n <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"29.815\" height=\"29.815\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"28.815\" height=\"28.815\" fill=\"none\"/>\n </g>\n <path id=\"Path_account-multiple-check\" data-name=\"Path / account-multiple-check\" d=\"M23.361,19.908v2.485H8.454V19.908s0-4.969,7.454-4.969,7.454,4.969,7.454,4.969M19.634,8.727a3.727,3.727,0,1,0-3.727,3.727,3.727,3.727,0,0,0,3.727-3.727m3.975,6.286a6.957,6.957,0,0,1,2.236,4.895v2.485h3.727V19.908s0-4.286-5.963-4.895M22.119,5a3.615,3.615,0,0,0-1.106.174,6.211,6.211,0,0,1,0,7.106,3.615,3.615,0,0,0,1.106.174,3.727,3.727,0,1,0,0-7.454M8.876,9.87l1.441,1.752-5.9,5.9L1,13.8l1.441-1.441,1.975,1.963L8.876,9.87\" transform=\"translate(0.242 1.211)\" fill=\"#084d6d\"/>\n </g>\n </g>\n </svg>\n );\n case 'opened':\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"20\" viewBox=\"16 16 22 22\">\n <g id=\"Group_578\" data-name=\"Group 578\" transform=\"translate(-657 -710)\">\n <g id=\"MDI_email-open\" data-name=\"MDI / email-open\" transform=\"translate(671.5 724.5)\">\n <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"24\" height=\"24\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" fill=\"none\"/>\n </g>\n <path id=\"Path_email-open\" data-name=\"Path / email-open\" d=\"M4,8l8,5,8-5h0L12,3,4,8H4M22,8V18a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V8a1.991,1.991,0,0,1,.97-1.71L12,.64l9.03,5.65A1.991,1.991,0,0,1,22,8Z\" transform=\"translate(0 1.36)\" fill=\"#084d6d\"/>\n </g>\n </g>\n </svg>\n );\n case 'bounced':\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"20\" viewBox=\"16 16 22 22\">\n <g id=\"Group_580\" data-name=\"Group 580\" transform=\"translate(-1141 -710)\">\n <g id=\"MDI_close-thick\" data-name=\"MDI / close-thick\" transform=\"translate(1153.658 722.658)\">\n <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"27.684\" height=\"27.684\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"26.684\" height=\"26.684\" fill=\"none\"/>\n </g>\n <path id=\"Path_close-thick\" data-name=\"Path / close-thick\" d=\"M22.456,7.357,19.1,4,13.228,9.871,7.357,4,4,7.357l5.871,5.871L4,19.1l3.357,3.357,5.871-5.871L19.1,22.456,22.456,19.1l-5.871-5.871Z\" transform=\"translate(0.614 0.614)\" fill=\"#084d6d\"/>\n </g>\n </g>\n </svg>\n );\n case 'unsubscribed':\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"20\" viewBox=\"22 16 22 22\">\n <g id=\"Group_581\" data-name=\"Group 581\" transform=\"translate(-1379 -710)\">\n <g id=\"MDI_exclamation-thick\" data-name=\"MDI / exclamation-thick\" transform=\"translate(1393 723.114)\">\n <g id=\"Boundary\" transform=\"translate(0 0.886)\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"25\" height=\"25\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"24\" height=\"24\" fill=\"none\"/>\n </g>\n <path id=\"Path_exclamation-thick\" data-name=\"Path / exclamation-thick\" d=\"M10,3h4.3V14.838H10V3m0,19.371v-4.3h4.3v4.3Z\" transform=\"translate(0.762 0.286)\" fill=\"#084d6d\"/>\n </g>\n </g>\n </svg>\n );\n default:\n return ( null );\n }\n}\n","import React from 'react';\n\nexport default function BouncedSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53\" height=\"53\" viewBox=\"0 0 53 53\">\n<g id=\"Group_580\" data-name=\"Group 580\" transform=\"translate(-1141 -710)\">\n <rect id=\"Rectangle_676\" data-name=\"Rectangle 676\" width=\"53\" height=\"53\" rx=\"16\" transform=\"translate(1141 710)\" fill=\"#edf2f5\"/>\n <g id=\"MDI_close-thick\" data-name=\"MDI / close-thick\" transform=\"translate(1153.658 722.658)\">\n <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"27.684\" height=\"27.684\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"26.684\" height=\"26.684\" fill=\"none\"/>\n </g>\n <path id=\"Path_close-thick\" data-name=\"Path / close-thick\" d=\"M22.456,7.357,19.1,4,13.228,9.871,7.357,4,4,7.357l5.871,5.871L4,19.1l3.357,3.357,5.871-5.871L19.1,22.456,22.456,19.1l-5.871-5.871Z\" transform=\"translate(0.614 0.614)\" fill=\"#084d6d\"/>\n </g>\n</g>\n</svg>)\n}","import React from 'react';\n\nexport default function ClicksSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53\" height=\"53\" viewBox=\"0 0 53 53\">\n<g id=\"Group_579\" data-name=\"Group 579\" transform=\"translate(-899 -710)\">\n <rect id=\"Rectangle_674\" data-name=\"Rectangle 674\" width=\"53\" height=\"53\" rx=\"16\" transform=\"translate(899 710)\" fill=\"#edf2f5\"/>\n <g id=\"MDI_cursor-default-click\" data-name=\"MDI / cursor-default-click\" transform=\"translate(912.333 723.833)\">\n <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"26.334\" height=\"26.334\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"25.334\" height=\"25.334\" fill=\"none\"/>\n </g>\n <path id=\"Path_cursor-default-click\" data-name=\"Path / cursor-default-click\" d=\"M11.612,9.535a.834.834,0,0,0-.834.834V22.933a.834.834,0,0,0,.834.834.845.845,0,0,0,.527-.176l2.1-1.7,1.821,3.972a.835.835,0,0,0,.757.472.558.558,0,0,0,.362-.088l3.028-1.4a.815.815,0,0,0,.4-1.108L18.766,19.75l2.644-.494a.965.965,0,0,0,.472-.285.824.824,0,0,0-.132-1.185l-9.59-8.065-.011.011a.829.829,0,0,0-.538-.2m4.652,1.437V8.778H21.75v2.194H16.264M14.98,5.223l3.105-3.105,1.547,1.547L16.528,6.77,14.98,5.223M10.778,0h2.194V5.486H10.778V0M4.118,16.086,7.223,12.98,8.77,14.528,5.665,17.633,4.118,16.086m0-12.421L5.665,2.118,8.77,5.223,7.223,6.77,4.118,3.665m3.369,7.308H2V8.778H7.486v2.194\" transform=\"translate(1.292)\" fill=\"#084d6d\"/>\n </g>\n</g>\n</svg>)\n}","import React from 'react';\n\nexport default function DeliveredSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53\" height=\"53\" viewBox=\"0 0 53 53\">\n<g id=\"Group_577\" data-name=\"Group 577\" transform=\"translate(-415 -710)\">\n <rect id=\"Rectangle_59\" data-name=\"Rectangle 59\" width=\"53\" height=\"53\" rx=\"16\" transform=\"translate(415 710)\" fill=\"#edf2f5\"/>\n <g id=\"MDI_account-multiple-check\" data-name=\"MDI / account-multiple-check\" transform=\"translate(426.592 721.592)\">\n <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"29.815\" height=\"29.815\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"28.815\" height=\"28.815\" fill=\"none\"/>\n </g>\n <path id=\"Path_account-multiple-check\" data-name=\"Path / account-multiple-check\" d=\"M23.361,19.908v2.485H8.454V19.908s0-4.969,7.454-4.969,7.454,4.969,7.454,4.969M19.634,8.727a3.727,3.727,0,1,0-3.727,3.727,3.727,3.727,0,0,0,3.727-3.727m3.975,6.286a6.957,6.957,0,0,1,2.236,4.895v2.485h3.727V19.908s0-4.286-5.963-4.895M22.119,5a3.615,3.615,0,0,0-1.106.174,6.211,6.211,0,0,1,0,7.106,3.615,3.615,0,0,0,1.106.174,3.727,3.727,0,1,0,0-7.454M8.876,9.87l1.441,1.752-5.9,5.9L1,13.8l1.441-1.441,1.975,1.963L8.876,9.87\" transform=\"translate(0.242 1.211)\" fill=\"#084d6d\"/>\n </g>\n</g>\n</svg>)\n}","import React from 'react';\n\nexport default function OpenedSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53\" height=\"53\" viewBox=\"0 0 53 53\">\n<g id=\"Group_578\" data-name=\"Group 578\" transform=\"translate(-657 -710)\">\n <rect id=\"Rectangle_672\" data-name=\"Rectangle 672\" width=\"53\" height=\"53\" rx=\"16\" transform=\"translate(657 710)\" fill=\"#edf2f5\"/>\n <g id=\"MDI_email-open\" data-name=\"MDI / email-open\" transform=\"translate(671.5 724.5)\">\n <g id=\"Boundary\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"24\" height=\"24\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"23\" height=\"23\" fill=\"none\"/>\n </g>\n <path id=\"Path_email-open\" data-name=\"Path / email-open\" d=\"M4,8l8,5,8-5h0L12,3,4,8H4M22,8V18a2,2,0,0,1-2,2H4a2,2,0,0,1-2-2V8a1.991,1.991,0,0,1,.97-1.71L12,.64l9.03,5.65A1.991,1.991,0,0,1,22,8Z\" transform=\"translate(0 1.36)\" fill=\"#084d6d\"/>\n </g>\n</g>\n</svg>)\n}","import React from 'react';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\nimport BouncedSVG from './BouncedSVG'\nimport ClicksSVG from './ClicksSVG'\nimport DeliveredSVG from './DeliveredSVG'\nimport OpenedSVG from './OpenedSVG'\nimport UnsubscribedSVG from './UnsubscribedSVG'\nimport { classes } from './styles';\n\ninterface IStatisticsProps {\n bounced: number,\n bounced_pcent: number,\n clicks: number,\n clicks_pcent: number,\n delivered: number,\n delivered_pcent: number,\n opened: number,\n opened_pcent: number,\n unsubscribed: number,\n unsubscribed_pcent: number,\n isLoading: boolean,\n}\n\nexport default function Statistics({\n bounced,\n bounced_pcent,\n clicks,\n clicks_pcent,\n delivered,\n delivered_pcent,\n opened,\n opened_pcent,\n unsubscribed,\n unsubscribed_pcent,\n isLoading\n}: IStatisticsProps) {\n return (\n <Box sx={classes.subWidget}>\n <Box sx={classes.widgetBlockContainer}>\n <Box sx={classes.widgetBlock}>\n <Box sx={classes.widgetBlockIcon}>\n <DeliveredSVG />\n </Box>\n <Box sx={classes.widgetBlockText}>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={80} height={30} />\n ) : (\n <Box sx={classes.blockCount}>{`${delivered_pcent}%`}</Box>\n )}\n <Box sx={classes.blockTitle}>{`Delivered (${delivered})`}</Box>\n </Box>\n </Box>\n <Box sx={classes.widgetBlock}>\n <Box sx={classes.widgetBlockIcon}>\n <OpenedSVG />\n </Box>\n <Box sx={classes.widgetBlockText}>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={80} height={30} />\n ) : (\n <Box sx={classes.blockCount}>{`${opened_pcent}%`}</Box>\n )}\n <Box sx={classes.blockTitle}>Opened ({opened})</Box>\n </Box>\n </Box>\n <Box sx={classes.widgetBlock}>\n <Box sx={classes.widgetBlockIcon}>\n <ClicksSVG />\n </Box>\n <Box sx={classes.widgetBlockText}>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={80} height={30} />\n ) : (\n <Box sx={classes.blockCount}>{`${clicks_pcent}%`}</Box>\n )}\n <Box sx={classes.blockTitle}>Clicks ({clicks})</Box>\n </Box>\n </Box>\n <Box sx={classes.widgetBlock}>\n <Box sx={classes.widgetBlockIcon}>\n <BouncedSVG />\n </Box>\n <Box sx={classes.widgetBlockText}>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={80} height={30} />\n ) : (\n <Box sx={classes.blockCount}>{`${bounced_pcent}%`}</Box>\n )}\n <Box sx={classes.blockTitle}>Bounced ({bounced})</Box>\n </Box>\n </Box>\n <Box sx={classes.widgetBlock}>\n <Box sx={classes.widgetBlockIcon}>\n <UnsubscribedSVG />\n </Box>\n <Box sx={classes.widgetBlockText}>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={80} height={30} />\n ) : (\n <Box sx={classes.blockCount}>{`${unsubscribed_pcent}%`}</Box>\n )}\n <Box sx={classes.blockTitle}>Unsubscribed ({unsubscribed})</Box>\n </Box>\n </Box>\n </Box>\n </Box>\n );\n}\n","import React from 'react';\n\nexport default function UnsubscribedSVG() {\nreturn (<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"53\" height=\"53\" viewBox=\"0 0 53 53\">\n<g id=\"Group_581\" data-name=\"Group 581\" transform=\"translate(-1379 -710)\">\n <rect id=\"Rectangle_678\" data-name=\"Rectangle 678\" width=\"53\" height=\"53\" rx=\"16\" transform=\"translate(1379 710)\" fill=\"#edf2f5\"/>\n <g id=\"MDI_exclamation-thick\" data-name=\"MDI / exclamation-thick\" transform=\"translate(1393 723.114)\">\n <g id=\"Boundary\" transform=\"translate(0 0.886)\" fill=\"#084d6d\" stroke=\"rgba(0,0,0,0)\" strokeWidth=\"1\" opacity=\"0\">\n <rect width=\"25\" height=\"25\" stroke=\"none\"/>\n <rect x=\"0.5\" y=\"0.5\" width=\"24\" height=\"24\" fill=\"none\"/>\n </g>\n <path id=\"Path_exclamation-thick\" data-name=\"Path / exclamation-thick\" d=\"M10,3h4.3V14.838H10V3m0,19.371v-4.3h4.3v4.3Z\" transform=\"translate(0.762 0.286)\" fill=\"#084d6d\"/>\n </g>\n</g>\n</svg>)\n}","import React, { useState, useEffect, useCallback, useRef, FC } from 'react';\nimport Box from '@mui/material/Box';\nimport Lottie from 'react-lottie';\nimport chartLoader from './chart-loader.json';\nimport DatePicker from './DatePicker';\nimport moment from 'moment';\nimport { IChartData } from '../../Components/Charts/types';\nimport { classes } from './styles';\nimport { IStyle } from '../types';\nimport Api from '../API';\nimport { CSSProperties } from '@material-ui/core/styles/withStyles';\n\nexport default function ChartWidget({\n Chart,\n ChartIcon,\n chartTitle,\n url,\n apiKey\n}: {\n Chart: ({ data }: { data: IChartData }) => JSX.Element;\n ChartIcon: ({ sx }: { sx: CSSProperties }) => JSX.Element;\n chartTitle: string;\n url: string;\n apiKey: string;\n}) {\n const [data, setData] = useState<IChartData>();\n const [dateFrom, setDateFrom] = useState<Date>(moment().subtract(30, 'days').toDate());\n const [dateTo, setDateTo] = useState<Date>(moment().toDate());\n const [dateError, setDateError] = useState(false);\n const [loading, setLoading] = useState(true);\n\n const chartAnimation = {\n loop: true,\n autoplay: true,\n animationData: chartLoader,\n rendererSettings: {\n preserveAspectRatio: 'xMidYMid slice'\n }\n };\n\n const fetchData = useCallback(\n async (fromDate: Date, toDate: Date) => {\n setLoading(true);\n try {\n const response = await Api.getGraphData(\n url,\n { 'X-api-authenticate': apiKey },\n {\n start_date: moment(fromDate).format('YYYY-MM-DD'),\n end_date: moment(toDate).format('YYYY-MM-DD')\n }\n );\n setData(response.dataset);\n } catch (error) {\n console.error(error);\n } finally {\n setLoading(false);\n }\n },\n [apiKey, url]\n );\n\n useEffect(() => {\n fetchData(moment().subtract(30, 'days').toDate(), moment().toDate());\n }, [fetchData]);\n\n const handleDateChange = (type: 'from' | 'to', date: Date | null) => {\n if (date) {\n if (type === 'from') {\n setDateFrom(date);\n } else {\n setDateTo(date);\n }\n }\n const diff = moment(type === 'to' ? date : dateTo).diff(\n moment(type === 'from' ? date : dateFrom),\n 'days'\n );\n if (diff > 0 && diff < 366) {\n setDateError(false);\n fetchData(type === 'from' ? date : dateFrom, type === 'to' ? date : dateTo);\n } else {\n setDateError(true);\n }\n };\n\n return (\n <Box sx={classes.widget}>\n <Box sx={classes.titleAndDateContainer}>\n <Box sx={classes.title}>{chartTitle}</Box>\n <DatePicker dateFrom={dateFrom} dateTo={dateTo} handleDateChange={handleDateChange} />\n <Box sx={classes.error}>{dateError ? 'Invalid date range (365 days maximum)' : ''}</Box>\n </Box>\n <Box\n sx={\n loading\n ? { ...classes.loading, backdropFilter: 'blur(3px)', opacity: 1, zIndex: 1 }\n : classes.loading\n }\n >\n <Lottie options={chartAnimation} height={400} width={400} style={{ zIndex: 2 }} />\n </Box>\n {data?.data && data.data.length === 0 ? (\n <Box sx={classes.noDataContainer}>\n <ChartIcon sx={classes.noDataIcon} />\n <Box sx={classes.noData}>No data available for selected time range</Box>\n </Box>\n ) : (\n <Box sx={classes.chart}>\n <Chart data={data} />\n </Box>\n )}\n </Box>\n );\n}\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { classes } from './styles';\nimport { SingleDatePicker } from '../../Components/CustomUIElements/SingleDatePicker';\n\nexport default function DatePicker({\n dateFrom,\n dateTo,\n handleDateChange\n}: {\n dateFrom: Date;\n dateTo: Date;\n handleDateChange: (type: 'from' | 'to', date: Date | null) => void;\n}) {\n return (\n <Box sx={classes.date}>\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <SingleDatePicker\n value={dateFrom}\n inputStyles={classes.datePicker}\n onChange={(date) => {\n handleDateChange('from', date);\n }}\n slotProps={{\n popper: {\n sx: classes.calendar,\n placement: 'bottom-end',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [28, 15]\n }\n }\n ]\n },\n textField: { InputProps: { sx: classes.datePicker } }\n }}\n />\n <span>to</span>\n <SingleDatePicker\n value={dateTo}\n inputStyles={classes.datePicker}\n onChange={(date) => {\n handleDateChange('to', date);\n }}\n slotProps={{\n popper: {\n sx: classes.calendar,\n placement: 'bottom-end',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [28, 15]\n }\n }\n ]\n },\n textField: { InputProps: { sx: classes.datePicker } }\n }}\n />\n </LocalizationProvider>\n </Box>\n );\n}\n","import React, { createContext, useCallback, useEffect, useRef, useState } from 'react';\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\nimport {\n Box,\n Button,\n CircularProgress,\n IconButton,\n Popover,\n Skeleton,\n Stack,\n Tab,\n Tabs,\n Tooltip\n} from '@mui/material';\nimport EditIcon from '@mui/icons-material/Edit';\nimport FileCopyIcon from '@mui/icons-material/FileCopy';\nimport ArrowCircleRightIcon from '@mui/icons-material/ArrowCircleRight';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport DoneIcon from '@mui/icons-material/Done';\nimport { ResendIcon } from './Applications/CustomIcons';\nimport Api from './API';\nimport jobsApi from '../Jobs/API';\nimport Applications from './Applications/Applications';\nimport AddTask from './ActionModals/AddTask/AddTasks';\nimport MoveJob from './ActionModals/MoveJob/MoveJob';\nimport StartWorkFlow from './ActionModals/StartWorkflow/StartWorkFlow';\nimport CeridianDayforce from './ActionModals/CeridianDayforce/CeridianDayforce';\nimport EmailStatus from './EmailStatus/EmailStatus';\nimport Attachments from './Attachments/Attachments';\nimport Notes from './Notes/Notes';\nimport Subcontainer from './Widgets/Subcontainer';\nimport JobInformation from './Widgets/JobInformation';\nimport DonutChart from '../Components/Charts/DonutChart';\nimport DonutLargeIcon from '@mui/icons-material/DonutLarge';\nimport LineChart from '../Components/Charts/LineChart';\nimport ShowChartIcon from '@mui/icons-material/ShowChart';\nimport ChartWidget from './Graphs/ChartWidget';\nimport SmartShare from '../../AIStudio/AIStudioSmartShare/SmartShare';\nimport { IJob, IJobCounts, IStyle, ITabs } from './types';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport { classes } from './styles';\nimport Revisions from './ActionModals/Revisions/Revisions';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport { resourceDefault } from '../Jobs/config';\nimport queryString from 'query-string';\nimport PushPinIcon from '@mui/icons-material/PushPin';\nimport { formatUserPermissions } from '../Components/Utilities/formatUserPermissions';\nimport { getPermissions } from '../../shared/permissionHelpers';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\n\nconst BASE_URL = window.location.origin;\nconst URL_PARAMS = new URL(window.location.href);\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\nexport const EntityContext = createContext({\n apply_with_phone: undefined,\n apply_with_mobile: undefined,\n ai_studio_summaries_enabled: false,\n foundu_enabled: false\n});\n\nexport default function Job({\n apiKey,\n job_id,\n aiStudioEnabled,\n ai_studio_summaries_enabled,\n foundu_enabled,\n foundu_auth_url,\n entity,\n userTimeZone,\n newNoteOnApplicationEnabled,\n newApplicationEnabled\n}: {\n apiKey: string;\n job_id: number;\n aiStudioEnabled: boolean;\n ai_studio_summaries_enabled: boolean;\n foundu_enabled: boolean;\n foundu_auth_url?: string;\n entity: object;\n userTimeZone: string;\n newNoteOnApplicationEnabled: boolean;\n newApplicationEnabled: boolean;\n}) {\n const getTabNumber = (urlParams: string) => {\n switch (urlParams) {\n case '?applications=true':\n return 1;\n case '?emailstatus=true':\n return 2;\n case '?attachments=true':\n return 3;\n case '?notes=true':\n return 4;\n default:\n return 0;\n }\n };\n const [job, setJob] = useState<IJob | null>(null);\n const [jobCounts, setJobCounts] = useState<IJobCounts | null>(null);\n const [tabValue, setTabValue] = useState(getTabNumber(URL_PARAMS.search));\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n const [copied, setCopied] = useState(false);\n const [actionsAnchorEl, setActionsAnchorEl] = useState<HTMLButtonElement | null>(null);\n const [stateAnchorEl, setStateAnchorEl] = useState<HTMLDivElement | null>(null);\n const [statusAnchorEl, setStatusAnchorEl] = useState<HTMLDivElement | null>(null);\n const [jobLoading, setJobLoading] = useState(true);\n const [unarchiveLoading, setUnarchiveLoading] = useState(false);\n const [cloneLoading, setCloneLoading] = useState(false);\n const [iframeLoading, setIframeLoading] = useState(true);\n const [stateIsSending, setStateIsSending] = useState(false);\n const [statusIsSending, setStatusIsSending] = useState(false);\n const [isResending, setIsResending] = useState(0);\n const [resourses, setResourses] = useState(resourceDefault);\n const [userPermissions, setUserPermissions] = useState<IUserPermissions>({});\n const [isPinning, setIsPinning] = useState(false);\n const [pinnedByCurrentUser, setPinnedByCurrentUser] = useState(null);\n\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const headerRefs = useRef<HTMLDivElement[]>([]);\n const jobQuestions = job ? job.questions.filter((question) => question.enabled) : [];\n\n const TabPanel = useCallback((props: ITabs) => {\n const { children, tabValue, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={tabValue !== index}\n id={`jobs-tabpanel-${index}`}\n data-testid={`jobs-tabpanel-${index}`}\n aria-labelledby={`jobs-tab-${index}`}\n {...other}\n >\n {tabValue === index && <>{children}</>}\n </div>\n );\n }, []);\n\n const TabProps = useCallback((index: number) => {\n return {\n id: `jobs-tab-${index}`,\n 'aria-controls': `jobs-tabpanel-${index}`,\n 'data-testid': `jobs-tab-${index}`\n };\n }, []);\n\n const getPageParams = (tabNo: number) => {\n switch (tabNo) {\n case 0:\n return '';\n case 1:\n return '?applications=true';\n case 2:\n return '?emailstatus=true';\n case 3:\n return '?attachments=true';\n case 4:\n return '?notes=true';\n default:\n return '';\n }\n };\n\n const fetchJobs = useCallback(async () => {\n setJobLoading(true);\n try {\n const jobResponse = await Api.getJob(job_id, { 'X-api-authenticate': apiKey });\n setJob(jobResponse);\n setPinnedByCurrentUser(jobResponse.pinned_by_user);\n const jobCountsResponse = await Api.getJobCounts(job_id, { 'X-api-authenticate': apiKey });\n setJobCounts(jobCountsResponse);\n setJobLoading(false);\n } catch (error) {\n console.error(error);\n }\n }, [job_id, apiKey]);\n\n const getUserPermissions = useCallback(async () => {\n try {\n const data = await getPermissions(apiKey);\n setUserPermissions(formatUserPermissions(data));\n } catch (error) {\n console.log(error);\n }\n }, [setUserPermissions, apiKey]);\n\n const handleStateChange = useCallback(\n async (link: string) => {\n setStateAnchorEl(null);\n try {\n setStateIsSending(true);\n const response = await Api.putChangedState(link, { 'X-api-authenticate': apiKey });\n setJob((prev) =>\n prev\n ? { ...prev, job_states: response?.job_states, job_statuses: response?.job_statuses }\n : null\n );\n } catch (error) {\n console.error(error);\n } finally {\n setStateIsSending(false);\n }\n },\n [apiKey]\n );\n\n const handleStatusChange = useCallback(\n async (link: string) => {\n setStatusAnchorEl(null);\n try {\n setStatusIsSending(true);\n const response = await Api.putChangedStatus(link, { 'X-api-authenticate': apiKey });\n setJob((prev) => (prev ? { ...prev, job_statuses: response?.job_statuses } : null));\n } catch (error) {\n console.error(error);\n } finally {\n setStatusIsSending(false);\n }\n },\n [apiKey]\n );\n\n const handleStateDropdownOpen = (event: React.MouseEvent<HTMLDivElement>) => {\n setStateAnchorEl(event.currentTarget);\n document.addEventListener('wheel', () => handleScrollClose('state'));\n };\n\n const handleStatusDropdownOpen = (event: React.MouseEvent<HTMLDivElement>) => {\n setStatusAnchorEl(event.currentTarget);\n document.addEventListener('wheel', () => handleScrollClose('status'));\n };\n\n const handleScrollClose = (type: string) => {\n if (type === 'state') {\n setStateAnchorEl(null);\n document.removeEventListener('wheel', () => handleScrollClose('state'));\n } else if (type === 'status') {\n setStatusAnchorEl(null);\n document.removeEventListener('wheel', () => handleScrollClose('status'));\n }\n };\n\n const displayResendIcon = () => {\n if (isResending === 1) {\n return <CircularProgress size={24} color={'inherit'} />;\n } else if (isResending === 2) {\n return <DoneIcon />;\n } else {\n return <ResendIcon />;\n }\n };\n\n const handleResend = async () => {\n setIsResending(1);\n try {\n const response = await fetch(`/api/v4/jobs/${job_id}/applications/resend_all_emails`, {\n method: 'POST',\n headers: {\n 'x-api-authenticate': apiKey\n }\n });\n if (response.ok) {\n setIsResending(2);\n setSnackbar({\n message: 'Successfully resent all applications to recipient.',\n state: 'success'\n });\n } else {\n setIsResending(0);\n const error = await response.json();\n setSnackbar({\n message: error.errors,\n state: 'error'\n });\n }\n } catch (error) {\n setIsResending(0);\n console.log(error);\n setSnackbar({\n message: 'Something went wrong',\n state: 'error'\n });\n } finally {\n setTimeout(() => {\n setIsResending(0);\n }, 5000);\n }\n };\n\n useEffect(() => {\n fetchJobs();\n getUserPermissions();\n }, [fetchJobs, getUserPermissions]);\n\n useEffect(() => {\n setIndicatorWidth(headerRefs.current[tabValue].clientWidth - 32);\n }, [tabValue]);\n\n const handleCopy = () => {\n setCopied(true);\n setTimeout(() => setCopied(false), 3000);\n };\n\n const handleTabChange = (event: React.ChangeEvent, newValue: number) => {\n setTabValue(newValue);\n URL_PARAMS.search = getPageParams(newValue);\n window.history.pushState(null, '', URL_PARAMS.href);\n };\n\n const cloneJob = async () => {\n setCloneLoading(true);\n const queryParams = `?${queryString.stringify(resourses, {\n arrayFormat: 'bracket',\n encode: false\n })}`;\n try {\n const response = await fetch(`/api/v4/jobs/${job_id}/clone${queryParams}`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n job: {\n reference: job.reference,\n title: job.title,\n expires_at: '',\n location: job.location\n }\n })\n }).then((response) => response.json());\n if (response.job_link) {\n window.location.href = `${BASE_URL}${response.job_link}/edit`;\n }\n } catch (error) {\n setSnackbar({\n message: 'An error occurred while cloning the job',\n state: 'error'\n });\n } finally {\n setCloneLoading(false);\n }\n };\n\n async function handleUnarchiveJob(ids: Array<number>) {\n setUnarchiveLoading(true);\n try {\n const response = await Api.putUnarchiveJob(\n { 'X-api-authenticate': apiKey },\n { job_ids: ids }\n );\n if (response.res?.job_ids?.failure?.length) {\n const message = 'Unable to unarchive job.';\n setSnackbar({\n message: message,\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbar({\n message: 'Something went wrong. Please try again.',\n state: 'error'\n });\n } finally {\n fetchJobs();\n }\n }\n\n async function pinJob(jobId: number) {\n setIsPinning(true);\n try {\n const response = await jobsApi.putPinJob(jobId);\n if (!response.res.errors) {\n setPinnedByCurrentUser(true);\n } else {\n setSnackbar({\n message: response.res.errors,\n state: 'error'\n });\n }\n } catch (err) {\n setSnackbar({\n message: err?.errors,\n state: 'error'\n });\n } finally {\n setIsPinning(false);\n }\n }\n\n async function unpinJob(jobId: number) {\n setIsPinning(true);\n try {\n const response = await jobsApi.putUnpinJob(jobId);\n if (!response.res.errors) {\n setPinnedByCurrentUser(false);\n }\n } catch (err) {\n setSnackbarState({\n message: err?.errors,\n state: 'error'\n });\n } finally {\n setIsPinning(false);\n }\n }\n\n const handlePin = (event: React.MouseEvent, id: number, pinned_by_user: boolean) => {\n pinned_by_user ? unpinJob(id) : pinJob(id);\n };\n\n return (\n <QueryClientProvider client={queryClient}>\n <Box sx={classes.jobPageContainer}>\n {job?.archived && (\n <Box sx={classes.jobArchivedContainer}>\n <Stack color=\"error\" justifyContent=\"center\" sx={classes.jobArchiveAlert}>\n THIS JOB HAS BEEN ARCHIVED\n </Stack>\n <Button sx={classes.jobUnarchiveButton} onClick={() => handleUnarchiveJob([job.id])}>\n UNARCHIVE\n {unarchiveLoading && (\n <CircularProgress size={24} color={'inherit'} sx={{ marginLeft: 2 }} />\n )}\n </Button>\n </Box>\n )}\n <Box sx={classes.jobPageHeader}>\n {jobLoading ? (\n <Skeleton animation=\"wave\" width={600} height={56} />\n ) : (\n <Box sx={{ color: '#666666' }}>\n <h4 id=\"reference\">{job?.reference}</h4>\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n columnGap: '10px'\n }}\n >\n {isPinning ? (\n <CircularProgress size={24} sx={{ color: '#E6A052' }} />\n ) : (\n <PushPinIcon\n onClick={(event) => handlePin(event, job?.id, pinnedByCurrentUser)}\n sx={\n pinnedByCurrentUser\n ? {\n color: '#E6A052',\n cursor: 'pointer'\n }\n : {\n color: '#CCCCCC',\n cursor: 'pointer'\n }\n }\n />\n )}\n <h1 id=\"title\" data-testid=\"title\">\n {job?.title}\n </h1>\n </Box>\n </Box>\n )}\n <Box sx={classes.actionButtons}>\n {jobLoading ? (\n <Skeleton animation=\"wave\" width={200} height={56} />\n ) : (\n <>\n {userPermissions?.Jobs?.['Create / Edit Jobs'] && (\n <>\n <Tooltip title=\"Edit\">\n <IconButton\n sx={classes.iconGrey}\n onClick={() => {\n window.location.href = `${BASE_URL}${job?.job_link}/edit`;\n }}\n id=\"edit-job-button\"\n >\n <EditIcon />\n </IconButton>\n </Tooltip>\n <Tooltip title=\"Clone\">\n <IconButton\n sx={classes.iconGrey}\n onClick={cloneJob}\n id=\"clone-job-button\"\n data-testid=\"clone-job-button\"\n >\n {cloneLoading ? (\n <CircularProgress size={24} color={'inherit'} />\n ) : (\n <FileCopyIcon />\n )}\n </IconButton>\n </Tooltip>\n </>\n )}\n {userPermissions?.Integrations?.['Recruit Multiposter (P)'] && (\n <Tooltip title=\"Multiposter\">\n <IconButton\n sx={classes.iconGrey}\n onClick={() => {\n window.location.href = `${BASE_URL}${job?.job_link}/job_ads`;\n }}\n id=\"multiposter-job-button\"\n >\n <ArrowCircleRightIcon />\n </IconButton>\n </Tooltip>\n )}\n {userPermissions?.Applications?.['Re-send Application'] && tabValue === 1 && (\n <Tooltip title=\"Resend all\">\n <IconButton\n sx={classes.iconGrey}\n onClick={handleResend}\n id=\"resend-all-job-button\"\n >\n {displayResendIcon()}\n </IconButton>\n </Tooltip>\n )}\n <Tooltip title=\"More Options\">\n <IconButton\n sx={classes.iconGrey}\n onClick={(event) => setActionsAnchorEl(event.currentTarget)}\n id=\"more-options-job-button\"\n >\n <MoreVertIcon />\n </IconButton>\n </Tooltip>\n </>\n )}\n </Box>\n </Box>\n <Box sx={classes.linkContainer}>\n {jobLoading ? (\n <Skeleton animation=\"wave\" width={400} height={50} />\n ) : (\n job?.public_url && (\n <>\n <a href={job?.public_url} target=\"_blank\" rel=\"noopener noreferrer\">\n <Box id=\"external-link\" sx={classes.link}>\n {job.public_url}\n </Box>\n </a>\n <CopyToClipboard text={job?.public_url} onCopy={handleCopy}>\n <Button sx={classes.copyButton} id=\"copy-link-job-button\">\n {copied ? 'Copied!' : 'Copy'}\n </Button>\n </CopyToClipboard>\n {aiStudioEnabled && (\n <SmartShare\n apiKey={apiKey}\n jobTitle={job?.title}\n jobUrl={job?.public_url}\n jobDescription={job?.description}\n />\n )}\n </>\n )\n )}\n </Box>\n <Box sx={classes.stateStatusContainer}>\n {jobLoading ? (\n <Skeleton animation=\"wave\" width={200} height={40} />\n ) : (\n <>\n {job?.job_states &&\n (job.job_states[1] && userPermissions?.Jobs?.['Create / Edit Jobs'] ? (\n <Box\n id=\"state-dropdown\"\n data-testid={'state-dropdown'}\n sx={{\n ...classes[job.job_states[0].label],\n ...classes.stateDropdown,\n cursor: 'pointer'\n }}\n onClick={handleStateDropdownOpen}\n >\n {stateIsSending ? (\n <CircularProgress size={18} />\n ) : (\n <>\n {job?.job_states[0]?.label} <KeyboardArrowDownIcon sx={classes.downIcon} />\n </>\n )}\n </Box>\n ) : (\n <Box sx={{ ...classes[job.job_states[0].label], ...classes.stateDropdown }}>\n {job?.job_states[0]?.label}\n </Box>\n ))}\n {job?.job_statuses &&\n (job.job_statuses[1] && userPermissions?.Jobs?.['Create / Edit Jobs'] ? (\n <Box\n id=\"status-job-dropdown\"\n sx={{ ...classes.statusDropdown, cursor: 'pointer' }}\n onClick={handleStatusDropdownOpen}\n >\n {statusIsSending || stateIsSending ? (\n <CircularProgress size={18} sx={classes.statusLoader} />\n ) : (\n <>\n {job?.job_statuses[0]?.label}\n <ArrowDropDownIcon sx={classes.statusDownIcon} />\n </>\n )}\n </Box>\n ) : (\n <Box\n id=\"status-dropdown\"\n sx={{\n ...classes.statusDropdown,\n width: 'auto',\n maxWidth: '140xp',\n '&:hover': {\n ...(classes.statusDropdown as IStyle)['&:hover' as keyof IStyle],\n border: '1px solid #E5E5E5',\n maxWidth: 'unset',\n minWidth: 'unset'\n }\n }}\n >\n {statusIsSending || stateIsSending ? (\n <CircularProgress size={18} sx={classes.statusLoader} />\n ) : (\n <>{job?.job_statuses[0]?.label}</>\n )}\n </Box>\n ))}\n </>\n )}\n </Box>\n <Box sx={classes.tabsContainer}>\n <Tabs\n value={tabValue}\n onChange={handleTabChange}\n aria-label=\"Jobs, Archive, Multiposter Tabs\"\n sx={{\n ...classes.tabs,\n '& .MuiTabs-indicator': { ...classes.tabIndicator, maxWidth: indicatorWidth + 'px' }\n }}\n >\n <Tab\n ref={(el) => (el ? (headerRefs.current[0] = el) : null)}\n label=\"Overview\"\n {...TabProps(0)}\n id=\"job-overview-tab\"\n />\n <Tab\n ref={(el) => (el ? (headerRefs.current[1] = el) : null)}\n label=\"Applications\"\n id=\"job-applications-tab\"\n icon={\n <Box\n sx={{\n ...classes.applicationsTabButton,\n ...(tabValue !== 1 ? { backgroundColor: '#f6f6f6' } : {})\n }}\n >\n {job && `${job.applications_count} (${job.open_applications_count})`}\n </Box>\n }\n iconPosition=\"end\"\n {...TabProps(1)}\n />\n <Tab\n sx={{\n display: userPermissions?.Applications?.['View Email Status']\n ? 'flex'\n : 'none !important'\n }}\n ref={(el) => (el ? (headerRefs.current[2] = el) : null)}\n label=\"Email Status\"\n id=\"job-email-status-tab\"\n {...TabProps(2)}\n />\n <Tab\n ref={(el) => (el ? (headerRefs.current[3] = el) : null)}\n label=\"Attachments\"\n id=\"job-attachments-tab\"\n {...TabProps(3)}\n />\n <Tab\n sx={{\n display: userPermissions?.['Job Options']?.['View Job Notes']\n ? 'flex'\n : 'none !important'\n }}\n ref={(el) => (el ? (headerRefs.current[4] = el) : null)}\n label=\"Notes\"\n id=\"job-notes-tab\"\n {...TabProps(4)}\n />\n </Tabs>\n </Box>\n <TabPanel tabValue={tabValue} index={0}>\n <Box sx={classes.tabContent}>\n <Box sx={classes.widgetContainer}>\n <Subcontainer\n applications={job?.applications_count}\n openApplications={job?.open_applications_count}\n jobCounts={jobCounts}\n createdAt={job?.created_at}\n publishedAt={job?.published_at}\n expiresAt={job?.expires_at}\n handleTabChange={handleTabChange}\n isLoading={jobLoading}\n timeZone={job?.time_zone ?? userTimeZone}\n />\n <JobInformation\n createdBy={\n job?.created_by\n ? job?.created_by?.firstname + ' ' + job?.created_by?.lastname\n : null\n }\n createdByLink={\n job?.created_by?.link && job?.created_by?.link !== 'None'\n ? `${BASE_URL}${job?.created_by?.link}`\n : null\n }\n entity={job?.entity}\n entityLink={\n job?.entity_link && job?.entity_link !== 'None'\n ? `${BASE_URL}${job?.entity_link}`\n : null\n }\n brand={job?.brand?.name}\n brandLink={\n job?.brand_link && job?.brand_link !== 'None'\n ? `${BASE_URL}${job?.brand_link}`\n : null\n }\n location={job?.location}\n tags={job?.tags}\n assignedUser={\n job?.assigned_user\n ? job?.assigned_user?.firstname + ' ' + job?.assigned_user?.lastname\n : null\n }\n isLoading={jobLoading}\n />\n <ChartWidget\n Chart={LineChart}\n ChartIcon={ShowChartIcon}\n chartTitle={'Applications per day'}\n url={`/api/v4/jobs/${job_id}/daily_applications`}\n apiKey={apiKey}\n />\n <ChartWidget\n Chart={DonutChart}\n ChartIcon={DonutLargeIcon}\n chartTitle={'Applications by source'}\n url={`/api/v4/jobs/${job_id}/sources`}\n apiKey={apiKey}\n />\n </Box>\n <Box sx={classes.iframeContainer}>\n {iframeLoading && (\n <Skeleton\n variant=\"rectangular\"\n width=\"100%\"\n height={600}\n sx={{ position: 'absolute', top: 0, bottom: 0, zIndex: 2 }}\n />\n )}\n <iframe\n src={`${BASE_URL}${job?.job_link}/preview`}\n title=\"job-iframe\"\n width=\"100%\"\n height=\"100%\"\n frameBorder=\"0\"\n onLoad={() => setIframeLoading(false)}\n ></iframe>\n </Box>\n </Box>\n </TabPanel>\n <TabPanel tabValue={tabValue} index={1}>\n <Box sx={classes.tabContent}>\n <EntityContext.Provider\n value={{\n ...entity,\n ai_studio_summaries_enabled,\n foundu_enabled,\n foundu_auth_url\n }}\n >\n <Applications\n apiKey={apiKey}\n jobId={job_id}\n jobTitle={job?.title}\n jobIsLoading={jobLoading}\n jobQuestions={jobQuestions}\n jobAttachments={job?.candidate_attachments}\n jobSources={job?.sources}\n jobHasPrivacyAcknowledgement={job?.privacy_acknowledgement}\n setJob={setJob}\n userPermissions={userPermissions}\n jobOptions={job?.options}\n newNoteOnApplicationEnabled={newNoteOnApplicationEnabled}\n newApplicationEnabled={newApplicationEnabled}\n />\n </EntityContext.Provider>\n </Box>\n </TabPanel>\n <TabPanel tabValue={tabValue} index={2}>\n <EmailStatus apiKey={apiKey} jobId={job_id} setSnackbarState={setSnackbar} />\n </TabPanel>\n <TabPanel tabValue={tabValue} index={3}>\n <Attachments\n apiKey={apiKey}\n jobId={job_id}\n permissions={{\n delete: userPermissions?.['Job Options']?.['Delete Job Attachments']\n }}\n />\n </TabPanel>\n <TabPanel tabValue={tabValue} index={4}>\n <Notes\n apiKey={apiKey}\n jobId={job_id}\n permissions={{\n create: userPermissions?.['Job Options']?.['Make a Job Note'],\n edit: userPermissions?.['Job Options']?.['Edit Job Note'],\n delete: userPermissions?.['Job Options']?.['Delete Job Note']\n }}\n setSnackbarState={setSnackbar}\n />\n </TabPanel>\n <Popover\n id=\"actions-menu-popover\"\n sx={classes.actionsMenu}\n open={Boolean(actionsAnchorEl)}\n anchorEl={actionsAnchorEl}\n onClose={() => {\n setActionsAnchorEl(null);\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {userPermissions?.['Job Options']?.['Move Jobs'] && (\n <span>\n <MoveJob\n apiKey={apiKey}\n jobId={job_id}\n entity={job?.entity}\n fetchJobs={fetchJobs}\n setSnackbarState={setSnackbar}\n setActionsAnchorEl={setActionsAnchorEl}\n />\n </span>\n )}\n <span>\n <AddTask apiKey={apiKey} jobId={job_id} setActionsAnchorEl={setActionsAnchorEl} />\n </span>\n <span>\n {userPermissions?.['Jobs']?.['Create / Edit Jobs'] && (\n <Revisions\n apiKey={apiKey}\n jobId={job_id}\n fetchJobs={fetchJobs}\n setSnackbar={setSnackbar}\n setActionsAnchorEl={setActionsAnchorEl}\n userTimeZone={userTimeZone}\n />\n )}\n </span>\n <span>\n <StartWorkFlow\n apiKey={apiKey}\n jobId={job_id}\n setSnackbarState={setSnackbar}\n setActionsAnchorEl={setActionsAnchorEl}\n />\n </span>\n <CeridianDayforce\n apiKey={apiKey}\n jobId={job_id}\n setSnackbar={setSnackbar}\n setActionsAnchorEl={setActionsAnchorEl}\n />\n </Popover>\n <Popover\n id=\"state-selection\"\n sx={classes.stateOptions}\n open={Boolean(stateAnchorEl)}\n anchorEl={stateAnchorEl}\n onClose={() => setStateAnchorEl(null)}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n >\n {job?.job_states &&\n job.job_states.slice(1).map((state: IJob['job_states'][0]) => (\n <span\n className=\"state-option\"\n data-testid={`state-option-${state.label}`}\n key={state.label}\n onClick={() => handleStateChange(state.link)}\n >\n {state.label}\n </span>\n ))}\n </Popover>\n <Popover\n id=\"status-selection\"\n sx={classes.statusDropdownItems}\n open={Boolean(statusAnchorEl)}\n anchorEl={statusAnchorEl}\n onClose={() => setStatusAnchorEl(null)}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n >\n {job?.job_statuses &&\n job.job_statuses.slice(1).map((status: IJob['job_statuses'][0]) => (\n <Box\n className=\"status-option\"\n key={`${status.link}`}\n sx={classes.statusDropdownItem}\n onClick={() => handleStatusChange(status.link)}\n >\n {status.label}\n </Box>\n ))}\n </Popover>\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n </Box>\n <ReactQueryDevtools />\n </QueryClientProvider>\n );\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Box, ToggleButtonGroup, ToggleButton, Skeleton } from '@mui/material';\nimport IndeedAds from '../Components/Multiposter/Indeed/IndeedAds';\nimport SeekAds from '../Components/Multiposter/Seek/SeekAds';\nimport IdibuAds from '../Components/Multiposter/Idibu/IdibuAds';\nimport BroadbeanAds from '../Components/Multiposter/Broadbean/BroadbeanAds';\nimport CouncilJobsAds from '../Components/Multiposter/CouncilJobs/CouncilJobsAds';\nimport ViewJobsAds from '../Components/Multiposter/ViewJobs/ViewJobsAds';\nimport { ISingleMultiposterProps } from './types';\nimport { classes } from './styles';\n\nexport default function SingleMultiposter({ apiKey, jobId, jobTitle }: ISingleMultiposterProps) {\n const [isLoading, setIsLoading] = useState(true);\n const [showSeek, setShowSeek] = useState(false);\n const [showIndeed, setShowIndeed] = useState(false);\n const [showIdibu, setShowIdibu] = useState(false);\n const [showBroadbean, setShowBroadbean] = useState(false);\n const [showCouncilJobs, setShowCouncilJobs] = useState(false);\n const [showViewJobs, setViewJobs] = useState(false);\n const [multiposterSelection, setMultiposterSelection] = useState('');\n\n const getPermissions = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await fetch(`/api/v4/job_ad_permissions?job_id=${jobId}`, {\n method: 'GET',\n headers: {\n 'X-api-authenticate': apiKey\n }\n }).then((response) => response.json());\n setShowSeek(response.seek);\n setShowIndeed(response.indeed);\n setShowIdibu(response.idibu);\n setShowBroadbean(response.broadbean);\n setShowCouncilJobs(response.council_jobs);\n setViewJobs(response.view_jobs);\n switch (true) {\n case response.seek:\n setMultiposterSelection('seek');\n break;\n case response.indeed:\n setMultiposterSelection('indeed');\n break;\n case response.idibu:\n setMultiposterSelection('idibu');\n break;\n case response.broadbean:\n setMultiposterSelection('broadbean');\n break;\n case response.council_jobs:\n setMultiposterSelection('counciljobs');\n break;\n case response.view_jobs:\n setMultiposterSelection('viewjobs');\n break;\n default:\n setMultiposterSelection('');\n }\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, jobId]);\n\n useEffect(() => {\n getPermissions();\n }, [getPermissions]);\n\n const displayAdType = () => {\n switch (multiposterSelection) {\n case 'seek':\n return <SeekAds apiKey={apiKey} jobId={jobId} />;\n case 'indeed':\n return <IndeedAds apiKey={apiKey} jobId={jobId} />;\n case 'idibu':\n return <IdibuAds apiKey={apiKey} jobId={jobId} />;\n case 'broadbean':\n return <BroadbeanAds apiKey={apiKey} jobId={jobId} />;\n case 'counciljobs':\n return <CouncilJobsAds apiKey={apiKey} jobId={jobId} />;\n case 'viewjobs':\n return <ViewJobsAds apiKey={apiKey} jobId={jobId} />;\n default:\n return <Box>Multiposter is not enabled for this job</Box>;\n }\n };\n\n return (\n <Box sx={classes.jobPageContainer}>\n <Box sx={classes.jobPageHeader}>\n <h1>{jobTitle}</h1>\n </Box>\n <Box sx={classes.multiposterContainer}>\n <Box sx={classes.toggleContainer}>\n <ToggleButtonGroup\n value={multiposterSelection}\n exclusive\n onChange={(e, value) => {\n if (value === null) return;\n setMultiposterSelection(value);\n }}\n aria-label=\"Multiposter selection\"\n sx={classes.toggleButtonGroup}\n >\n {showSeek && (\n <ToggleButton sx={classes.toggleButton} value=\"seek\" id=\"multiposter-seek-tab\">\n <Box id=\"seek-logo\" sx={classes.logoSize} />\n </ToggleButton>\n )}\n {showIndeed && (\n <ToggleButton sx={classes.toggleButton} value=\"indeed\" id=\"multiposter-indeed-tab\">\n <Box id=\"indeed-logo\" sx={{ transform: 'translateY(3px)', ...classes.logoSize }} />\n </ToggleButton>\n )}\n {showIdibu && (\n <ToggleButton sx={classes.toggleButton} value=\"idibu\" id=\"multiposter-idibu-tab\">\n <Box id=\"idibu-logo\" sx={classes.logoSize} />\n </ToggleButton>\n )}\n {showBroadbean && (\n <ToggleButton\n sx={classes.toggleButton}\n value=\"broadbean\"\n id=\"multiposter-broadbean-tab\"\n >\n <Box id=\"broadbean-logo\" sx={classes.logoSize} />\n </ToggleButton>\n )}\n {showCouncilJobs && (\n <ToggleButton\n sx={classes.toggleButton}\n value=\"counciljobs\"\n id=\"multiposter-counciljobs-tab\"\n >\n <Box id=\"counciljobs-logo\" sx={classes.logoSize} />\n </ToggleButton>\n )}\n {showViewJobs && (\n <ToggleButton\n sx={classes.toggleButton}\n value=\"viewjobs\"\n id=\"multiposter-viewjobs-tab\"\n >\n <Box id=\"viewjobs-logo\" sx={classes.logoSize} />\n </ToggleButton>\n )}\n </ToggleButtonGroup>\n </Box>\n {isLoading ? <Skeleton sx={classes.skeleton} animation=\"wave\" /> : displayAdType()}\n </Box>\n </Box>\n );\n}\n","import React, { memo } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport IconButton from '@mui/material/IconButton';\nimport Skeleton from '@mui/material/Skeleton';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport SadNoteSVG from './SadNoteSVG';\nimport moment from 'moment';\nimport { IJobNote } from '../types';\nimport { classes } from './styles';\n\ninterface INoteListProps {\n notes: IJobNote[];\n editMode: number;\n isDeleting: boolean;\n isLoading: boolean;\n editingId: number;\n handleNewNote: () => void;\n handleEditNote: (id: number, note: string) => void;\n handleDeleteNote: (id: number) => void;\n permissions: Record<string, boolean>;\n}\n\nfunction NoteList({\n notes,\n editMode,\n isDeleting,\n isLoading,\n editingId,\n handleNewNote,\n handleEditNote,\n handleDeleteNote,\n permissions\n}: INoteListProps) {\n return notes && notes.length > 0 ? (\n <Box>\n {permissions.create && (\n <Box sx={classes.newNoteContainer}>\n {!editMode && (\n <Button\n sx={classes.notesNewButton}\n onClick={handleNewNote}\n id=\"add-a-job-note-button\"\n data-testid=\"add-a-job-note-button\"\n >\n Add a note\n </Button>\n )}\n </Box>\n )}\n <Box sx={classes.notesContainer}>\n {notes.map((note: IJobNote) => (\n <Box key={note.id} sx={classes.note}>\n <Box sx={classes.noteContent}>\n <Box sx={classes.noteText} className=\"job-note\" data-testid=\"job-note\">\n {note.body}\n </Box>\n <Box>\n {moment(note.updated_at).format('D MMMM YYYY [at] h:mm A')} by {note.noted_by}\n </Box>\n </Box>\n <Box sx={classes.noteActions}>\n {permissions.edit && (\n <IconButton\n className=\"edit-job-note-button\"\n data-testid=\"edit-job-note-button\"\n onClick={() => handleEditNote(note.id, note.body)}\n >\n <EditIcon sx={{ color: '#666666' }} />\n </IconButton>\n )}\n {permissions.delete && (\n <IconButton\n className=\"delete-job-note-button\"\n data-testid=\"delete-job-note-button\"\n onClick={() => handleDeleteNote(note.id)}\n >\n {isDeleting && editingId === note.id ? (\n <CircularProgress size={32} sx={{ color: '#D6827D' }} />\n ) : (\n <DeleteIcon sx={{ color: '#D6827D' }} />\n )}\n </IconButton>\n )}\n </Box>\n </Box>\n ))}\n </Box>\n </Box>\n ) : (\n <Box>\n {isLoading ? (\n <Box sx={classes.notesSkeleton}>\n <Skeleton animation=\"wave\" height={40} />\n <Skeleton animation=\"wave\" height={40} />\n <Skeleton animation=\"wave\" height={40} />\n <Skeleton animation=\"wave\" height={40} />\n <Skeleton animation=\"wave\" height={40} />\n </Box>\n ) : (\n <Box sx={{ ...classes.newNoteContainer, margin: '100px 0px' }}>\n <Box>\n <SadNoteSVG />\n </Box>\n <Box sx={classes.noNotesText}>No notes added</Box>\n {!editMode && (\n <Button\n sx={classes.notesNewButton}\n onClick={handleNewNote}\n id=\"add-a-job-note-button\"\n data-testid=\"add-a-job-note-button\"\n >\n Add a note\n </Button>\n )}\n </Box>\n )}\n </Box>\n );\n}\n\nexport default memo(NoteList);\n","import React, { useEffect, useState, useCallback } from 'react';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CloseIcon from '@mui/icons-material/Close';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport NoteList from './NoteList';\nimport Api from '../API';\nimport { IJobNote } from '../types';\nimport { classes } from './styles';\nimport { emojiInString } from '../../utils/emoji-checker';\nimport { NOTES_ERROR_MESSAGE } from '../../constants';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\n\nexport default function Notes({\n apiKey,\n jobId,\n permissions,\n setSnackbarState\n}: {\n apiKey: string;\n jobId: number;\n permissions: Record<string, boolean>;\n setSnackbarState: (state: { message: string; state: string }) => void;\n}) {\n const [notes, setNotes] = useState(null);\n const [editMode, setEditMode] = useState(0);\n const [editedNote, setEditedNote] = useState('');\n const [editingId, setEditingId] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [isSending, setIsSending] = useState(false);\n const [isDeleting, setIsDeleting] = useState(false);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [noteError, setNoteError] = useState('');\n\n const fetchNotes = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await Api.getNotes({ 'X-api-authenticate': apiKey }, jobId);\n setNotes(response.job_notes);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, jobId]);\n\n const addNote = async () => {\n setIsSending(true);\n try {\n const response = await Api.newNote({ 'X-api-authenticate': apiKey }, jobId, {\n job_note: { body: editedNote }\n });\n setNotes((prev: IJobNote[]) => [response, ...prev]);\n setEditMode(0);\n } catch (error) {\n console.log(error);\n } finally {\n setIsSending(false);\n }\n };\n\n const updateNote = async () => {\n setIsSending(true);\n try {\n const response = await Api.putNote({ 'X-api-authenticate': apiKey }, jobId, editingId, {\n job_note: { body: editedNote }\n });\n if (!response.error) {\n setNotes((prev: IJobNote[]) =>\n prev.map((note) => (note.id === editingId ? response : note))\n );\n }\n } catch (error) {\n console.log(error);\n } finally {\n setIsSending(false);\n setEditMode(0);\n setEditingId(null);\n }\n };\n\n const deleteNote = useCallback(\n async (url: string, noteId: number) => {\n setIsDeleting(true);\n try {\n const response = await Api.deleteNote({ 'X-api-authenticate': apiKey }, jobId, noteId);\n if (!response.error) {\n setNotes((prev: IJobNote[]) => prev.filter((note) => note.id !== noteId));\n }\n } catch (error) {\n console.log(error);\n } finally {\n setIsDeleting(false);\n setEditMode(0);\n setEditingId(null);\n setIsDialogOpen(false);\n }\n },\n [apiKey, jobId]\n );\n\n const handleNewNote = useCallback(() => {\n setEditedNote('');\n setEditMode(2);\n }, []);\n\n const handleNoteInput = (value: string) => {\n setEditedNote(value);\n };\n\n const handleSaveNote = () => {\n setNoteError('');\n try {\n if (emojiInString(editedNote)) {\n setNoteError(NOTES_ERROR_MESSAGE);\n return;\n }\n if (editMode === 2) {\n addNote();\n } else if (editMode === 1) {\n updateNote();\n }\n } catch (error) {\n console.error(error.message);\n setSnackbarState({\n message: error.message,\n state: 'error'\n });\n }\n };\n\n const handleEditNote = useCallback((noteId: number, note: string) => {\n setEditingId(noteId);\n setEditedNote(note);\n setEditMode(1);\n }, []);\n\n const handleDeleteNote = useCallback((noteId: number) => {\n setEditingId(noteId);\n setIsDialogOpen(true);\n }, []);\n\n useEffect(() => {\n fetchNotes();\n }, [fetchNotes]);\n\n return (\n <>\n <Box\n sx={{\n ...classes.noteEdit,\n height: editMode ? 'fit-content' : '0px'\n }}\n >\n <TextField\n id=\"note-input\"\n data-testid=\"note-input-[Notes]\"\n label=\" \"\n multiline\n rows={6}\n fullWidth\n variant=\"outlined\"\n value={editedNote}\n onChange={(e) => handleNoteInput(e.target.value)}\n InputLabelProps={{\n shrink: false\n }}\n />\n {!!noteError && (\n <Box sx={{ ...sharedClasses.errorText, mt: '8px !important' }}>{noteError}</Box>\n )}\n <Box sx={classes.noteEditFooter}>\n <Button\n sx={classes.notesCancelButton}\n endIcon={<CloseIcon />}\n onClick={() => {\n setNoteError('');\n setEditMode(0);\n }}\n >\n Cancel\n </Button>\n <Button\n sx={classes.notesEditSaveButton}\n onClick={handleSaveNote}\n disabled={!editedNote}\n endIcon={isSending ? <CircularProgress size={16} /> : <DoneIcon />}\n id=\"save-job-note-button\"\n data-testid=\"save-job-note-button\"\n >\n Save\n </Button>\n </Box>\n </Box>\n <NoteList\n notes={notes}\n editMode={editMode}\n isDeleting={isDeleting}\n isLoading={isLoading}\n editingId={editingId}\n handleNewNote={handleNewNote}\n handleEditNote={handleEditNote}\n handleDeleteNote={handleDeleteNote}\n permissions={permissions}\n />\n <GenericDialog\n url={''}\n title={'Are you sure you want to delete this note?'}\n description={'This action cannot be undone.'}\n buttonText={'Delete Note'}\n buttonCallback={deleteNote}\n callbackLoading={isDeleting}\n isDialogOpen={isDialogOpen}\n setDialogOpen={setIsDialogOpen}\n dialogId={editingId}\n />\n </>\n );\n}\n","import React from 'react';\n\nexport default function SadNoteSVG() {\nreturn (<svg\nxmlns=\"http://www.w3.org/2000/svg\"\nwidth=\"93.637\"\nheight=\"96.195\"\nviewBox=\"0 0 93.637 96.195\"\n>\n<g id=\"Group_77\" data-name=\"Group 77\" transform=\"translate(-131.839 -176.424)\">\n <g id=\"_ÎÓÈ_2\" data-name=\"—ÎÓÈ_2\" transform=\"translate(131.839 176.424)\">\n <path\n id=\"Path_21\"\n data-name=\"Path 21\"\n d=\"M343.215,799.111c-4.859-.158-9.672-.4-14.384-.784-1.849-.151-3.7-.333-5.394-.643a5.6,5.6,0,0,1-1.617-.469c-2.04-1.2,3.466-2.547,6.029-2.812,3.612-.374,7.547-.239,11.285-.312,11.486-.226,23.029-.221,34.554.029,5.15.111,10.526.242,15.742.474,4.745.211,11.074.248,14.791,1.48q.2.066.388.136c.734.274,1.227.657,1.026,1.02a2.848,2.848,0,0,1-1.476.761c-4.442,1.37-10.065,1.558-15.809,1.639-7.4.1-14.858-.135-22.248-.183C358.474,799.4,350.836,799.359,343.215,799.111Z\"\n transform=\"translate(-317.04 -718.314)\"\n fill=\"#e5e5e5\"\n />\n <path\n id=\"Path_22\"\n data-name=\"Path 22\"\n d=\"M317.6,888.23c-5.4-.186-10.742-.475-15.975-.938a56.13,56.13,0,0,1-5.99-.78,5.774,5.774,0,0,1-1.795-.572c-2.263-1.466,3.854-3.131,6.7-3.46,4.012-.465,8.383-.306,12.535-.4,12.758-.3,25.579-.309,38.379-.022,5.72.128,11.69.28,17.484.556,5.27.251,12.3.287,16.427,1.792q.221.081.43.167c.815.335,1.361.8,1.138,1.249-.191.381-.9.683-1.64.937-4.936,1.689-11.182,1.928-17.562,2.036-8.223.139-16.5-.141-24.71-.188C334.543,888.555,326.059,888.521,317.6,888.23Z\"\n transform=\"translate(-293.343 -792.635)\"\n fill=\"#e5e5e5\"\n />\n <g id=\"Group_67\" data-name=\"Group 67\" transform=\"translate(4.441 6.923)\">\n <g id=\"Group_65\" data-name=\"Group 65\">\n <path\n id=\"Path_23\"\n data-name=\"Path 23\"\n d=\"M407.922,383.372l-41.645-32.386-41.8,32.466.015.012.051,52.882,83.615-.08-.051-52.894Z\"\n transform=\"translate(-324.104 -350.812)\"\n fill=\"#e3e3e3\"\n />\n <g id=\"Group_64\" data-name=\"Group 64\">\n <path\n id=\"Path_24\"\n data-name=\"Path 24\"\n d=\"M406.223,382.295l-14.1-10.964-22.439-17.45-5.106-3.971c-.144-.112-.516.016-.639.112l-4.169,3.238-9.949,7.728-12.1,9.395-10.412,8.087-3.469,2.694a17.339,17.339,0,0,0-1.631,1.267.791.791,0,0,1-.073.057c-.038.029-.131.1-.063.148a6.981,6.981,0,0,1-.006,1.391l0,3.836q.006,6.3.012,12.6.007,7.666.015,15.332.006,6.595.013,13.19,0,2.176,0,4.351v1.357a2.351,2.351,0,0,0,0,.714.3.3,0,0,1,0,.093c0,.046.113.059.133.059l8.333-.008,20.005-.019,24.112-.023,20.849-.02c3.389,0,6.784.056,10.173-.01h.143c.142,0,.614-.05.614-.259q0-2.623,0-5.246-.006-6.3-.012-12.6l-.015-15.335q-.006-6.6-.013-13.193l0-4.351v-1.358a2.344,2.344,0,0,0,0-.714.3.3,0,0,1,0-.093c0-.046-.113-.059-.133-.059h-.186c-.168,0-.848.319-.481.319.177,0,.006-.114.053.019a.936.936,0,0,1,0,.258v1.019q0,1.921,0,3.842L405.7,400.3l.015,15.334q.006,6.607.013,13.215,0,2.2,0,4.4,0,.679,0,1.357a2.645,2.645,0,0,0,0,.714.341.341,0,0,1,0,.093l.614-.26-5.715.005-14.422.014-18.966.018-19.585.019-16.052.015-8.421.008c-.1,0-.364.051-.451,0,.237.137.13-.316.13-.5q0-2.13,0-4.26-.008-8.39-.016-16.779-.009-9.6-.018-19.2-.005-5.793-.011-11.586c0-.112.066-.466-.038-.546l-.063.148,4.169-3.238,9.949-7.728,12.1-9.395,10.412-8.087,3.468-2.694a10.483,10.483,0,0,0,1.631-1.267.474.474,0,0,1,.073-.057l-.639.112,14.1,10.965,22.439,17.45,5.106,3.971C405.687,382.684,406.347,382.391,406.223,382.295Z\"\n transform=\"translate(-322.054 -349.865)\"\n fill=\"#e3e3e3\"\n />\n </g>\n </g>\n <g id=\"Group_66\" data-name=\"Group 66\" transform=\"translate(0.004 32.314)\">\n <path\n id=\"Path_25\"\n data-name=\"Path 25\"\n d=\"M322.89,611.952q0-2.623-.005-5.246-.006-6.3-.012-12.6l-.015-15.335q-.007-6.6-.013-13.193,0-2.176,0-4.352v-1.358a2.5,2.5,0,0,0,0-.714.331.331,0,0,1,0-.093l-.513.281,8.333-.008,20.005-.019,24.112-.023,20.849-.02,6.882-.007,2.17,0a4.437,4.437,0,0,0,1.12,0,.564.564,0,0,1,.143,0l-.24-.208,0,5.246q.006,6.3.012,12.6.007,7.668.015,15.335l.013,13.193q0,2.176,0,4.351,0,.679,0,1.357a2.509,2.509,0,0,0,0,.714.319.319,0,0,1,0,.093l.513-.281-8.333.008-20.005.019-24.112.023-20.849.02c-3.386,0-6.787-.085-10.173.01-.048,0-.1,0-.143,0-.324,0-.776.49-.273.49l8.333-.008,20.005-.019,24.112-.023,20.849-.02c3.386,0,6.787.085,10.173-.01.047,0,.1,0,.143,0,.142,0,.513-.067.513-.282l0-5.246q-.006-6.3-.012-12.6-.007-7.667-.015-15.335-.006-6.6-.013-13.193,0-2.176,0-4.352a11.491,11.491,0,0,0,0-2.071.542.542,0,0,1,0-.093.219.219,0,0,0-.24-.208l-8.333.008-20.005.019-24.112.023-20.849.02c-3.386,0-6.787-.084-10.173.01-.047,0-.1,0-.143,0-.142,0-.513.067-.513.282l.005,5.246q.006,6.3.012,12.6.007,7.668.015,15.335.006,6.6.013,13.193,0,2.176,0,4.352a10.616,10.616,0,0,0,0,2.071.475.475,0,0,1,0,.093C322.138,612.381,322.89,612.246,322.89,611.952Z\"\n transform=\"translate(-322.077 -558.77)\"\n fill=\"#cfcfcf\"\n />\n </g>\n </g>\n <g id=\"Group_72\" data-name=\"Group 72\" transform=\"translate(13.085)\">\n <path\n id=\"Path_26\"\n data-name=\"Path 26\"\n d=\"M446.946,375.673l0-67.012a2.958,2.958,0,0,0-2.963-2.953l-60.377,0a2.958,2.958,0,0,0-2.963,2.954v10.444l.05,5.756,0,63.638a2.958,2.958,0,0,0,2.963,2.954h47.511l15.778-15.766Z\"\n transform=\"translate(-380.223 -305.615)\"\n fill=\"#e5e5e5\"\n />\n <path\n id=\"Path_27\"\n data-name=\"Path 27\"\n d=\"M393.844,330.97l.048,5.615,0,62.072a2.863,2.863,0,0,0,2.845,2.881H442.36l.658-.668V389.1a3.127,3.127,0,0,1,3.144-3.111h9.519a2.375,2.375,0,0,0,2.388-2.363l0-62.849a2.863,2.863,0,0,0-2.845-2.881l-58.533,0a2.863,2.863,0,0,0-2.845,2.881Z\"\n transform=\"translate(-391.383 -315.921)\"\n fill=\"#fff\"\n />\n <g id=\"Group_68\" data-name=\"Group 68\" transform=\"translate(0.063 45.71)\">\n <path\n id=\"Path_28\"\n data-name=\"Path 28\"\n d=\"M444.2,600.785l-16.918,13.1-2.379,1.843.563-.2-9.221.007-14.625.01-3.4,0,.505.1-16.684-12.924-2.362-1.829c-.488-.378-1.817.32-1.161.828L391.4,611.7l5.9,4.569a1.569,1.569,0,0,0,1.08.31l2.529,0,20.008-.014,3.371,0a2.929,2.929,0,0,0,1.6-.206c.466-.292.891-.691,1.325-1.026l3.14-2.432,14.511-11.239.317-.246c.8-.62-.418-1.055-.975-.623Z\"\n transform=\"translate(-378.345 -600.611)\"\n fill=\"#e3e3e3\"\n />\n </g>\n <g id=\"Group_69\" data-name=\"Group 69\">\n <path\n id=\"Path_29\"\n data-name=\"Path 29\"\n d=\"M445.035,375.312v-7.573q0-8.9,0-17.809,0-10.34,0-20.68,0-8.092,0-16.184,0-2.053,0-4.1c0-.217.005-.435,0-.653a3.212,3.212,0,0,0-3.2-3.161c-2.8-.086-5.612,0-8.41,0H382.3c-.273,0-.546,0-.82,0a3.459,3.459,0,0,0-3.437,2.611,14.6,14.6,0,0,0-.065,2.928v5.01c0,3.255.05,6.509.05,9.763q0,6.021,0,12.042,0,9.911,0,19.822,0,9.732,0,19.463v10.965a6.855,6.855,0,0,0,.032.944,3.224,3.224,0,0,0,3.223,2.674c1.145.026,2.293,0,3.437,0H427.5c.387,0,.784.027,1.17,0a1.169,1.169,0,0,0,.841-.48l12.236-12.226,2.4-2.394c.169-.169.886-.672.892-.956.007-.346-.745-.209-.751.077,0-.1.1-.143-.037,0l-.327.327-1.145,1.144-3.787,3.785-8.438,8.431-1.974,1.973.443-.155H382.067a6.786,6.786,0,0,1-.934-.029,2.812,2.812,0,0,1-2.351-2.821c-.057-2.648,0-5.3,0-7.952q0-8.17,0-16.34V344.964q0-7.52,0-15.04c0-2.051.011-4.1-.007-6.155-.041-4.74-.044-9.479-.044-14.219a4.373,4.373,0,0,1,.627-3.021,2.61,2.61,0,0,1,2.106-.9c1.053,0,2.106,0,3.159,0h49.232c2.552,0,5.119-.082,7.669,0a2.808,2.808,0,0,1,2.759,2.766c.006.188,0,.378,0,.566v3.454q0,6.935,0,13.871,0,9.269,0,18.538,0,8.814,0,17.627V375.39C444.284,375.737,445.035,375.6,445.035,375.312Z\"\n transform=\"translate(-377.936 -305.109)\"\n fill=\"#cfcfcf\"\n />\n </g>\n <g id=\"Group_71\" data-name=\"Group 71\" transform=\"translate(23.258 24.837)\">\n <g id=\"Group_70\" data-name=\"Group 70\" transform=\"translate(1.021 7.165)\">\n <path\n id=\"Path_30\"\n data-name=\"Path 30\"\n d=\"M554.549,515.673a13.349,13.349,0,0,0-6.148-3.24,15.784,15.784,0,0,0-11.252,1.508,10.784,10.784,0,0,0-2.173,1.5c-.327.305.4.36.611.166,2.437-2.274,6.276-3.232,9.507-3.118a13.424,13.424,0,0,1,8.766,3.5c.207.208.917-.08.69-.309Z\"\n transform=\"translate(-534.892 -511.996)\"\n fill=\"#cfcfcf\"\n />\n </g>\n <circle\n id=\"Ellipse_14\"\n data-name=\"Ellipse 14\"\n cx=\"1.154\"\n cy=\"1.154\"\n r=\"1.154\"\n transform=\"translate(0 1.632) rotate(-45)\"\n fill=\"#cfcfcf\"\n />\n <circle\n id=\"Ellipse_15\"\n data-name=\"Ellipse 15\"\n cx=\"1.154\"\n cy=\"1.154\"\n r=\"1.154\"\n transform=\"translate(18.103 1.632) rotate(-45)\"\n fill=\"#cfcfcf\"\n />\n </g>\n </g>\n <g id=\"Group_76\" data-name=\"Group 76\" transform=\"translate(4.228 39.419)\">\n <path\n id=\"Path_31\"\n data-name=\"Path 31\"\n d=\"M351.21,582.735l-28.12-21.79.051,52.882,83.615-.08L406.7,561l-27.672,21.782Z\"\n transform=\"translate(-322.716 -560.79)\"\n fill=\"#e3e3e3\"\n />\n <path\n id=\"Path_32\"\n data-name=\"Path 32\"\n d=\"M368.324,583.028l-24.989-19.29.034,35.143a12.106,12.106,0,0,0,12.118,12.095l68.379-.065-.047-49.619L395.934,583Z\"\n transform=\"translate(-339.83 -561.084)\"\n fill=\"#eaeaea\"\n />\n <g id=\"Group_73\" data-name=\"Group 73\" transform=\"translate(0.714 22.123)\">\n <path\n id=\"Path_33\"\n data-name=\"Path 33\"\n d=\"M326.5,726.275l9.319-7.646,14.719-12.077,3.409-2.8-.754.2,11.689-.011,14.315-.014c.061,0,.379.044.426,0-.068.064-.331-.228-.207-.027a4.395,4.395,0,0,0,.934.761l4.465,3.639,13.507,11.007,5.8,4.729c1.013.825,2,1.731,3.059,2.493.052.037.1.081.149.121.442.36,1.791-.287,1.17-.793L393.016,713.24l-9.607-7.829-2.551-2.079a1.573,1.573,0,0,0-1.2-.368l-23.487.022c-.8,0-1.619-.036-2.423,0-.765.036-1.263.619-1.826,1.081l-8.248,6.767-17.778,14.587-.35.287c-.781.641.442.987.959.563Z\"\n transform=\"translate(-325.288 -702.965)\"\n fill=\"#e3e3e3\"\n />\n </g>\n <g id=\"Group_74\" data-name=\"Group 74\">\n <path\n id=\"Path_34\"\n data-name=\"Path 34\"\n d=\"M349.521,581.765l-9.548-7.4-15.08-11.685-3.493-2.706c-.119-.092-.726.046-.726.225q0,2.622,0,5.245.006,6.3.012,12.6.007,7.666.015,15.332.006,6.6.013,13.19,0,2.175,0,4.351,0,.678,0,1.357a2.3,2.3,0,0,0,0,.714.3.3,0,0,1,0,.093c0,.042.116.047.13.047l8.333-.008,20-.019,24.112-.023,20.849-.02c3.387,0,6.787.08,10.173-.01.047,0,.1,0,.143,0,.127,0,.618-.06.617-.247l-.017-17.858q-.013-14.211-.027-28.422,0-3.234-.006-6.468c0-.169-.651.086-.711.132l-9.443,7.328-15.12,11.735-3.457,2.683.581-.179-9.258,0-14.785-.005h-3.432c-.153,0-.842.294-.488.294l11.737,0,15.007.005a2.987,2.987,0,0,0,1.145-.087,3.473,3.473,0,0,0,.675-.487l4.054-3.146,13.84-10.741,6.2-4.814c1.069-.83,2.273-1.6,3.26-2.53.047-.044.1-.081.155-.12l-.711.132q.009,8.929.017,17.858.014,14.211.027,28.422,0,3.234.006,6.468l.617-.247-5.674.005-14.4.014-18.956.018-19.591.019-16.024.015-8.5.008c-.092,0-.393.054-.474,0,.214.142.123-.31.123-.458l0-4.171q-.008-8.307-.016-16.615-.009-9.651-.018-19.3-.006-5.858-.011-11.716,0-.287,0-.574l-.726.225,9.548,7.4,15.08,11.685,3.493,2.706C348.973,582.137,349.618,581.84,349.521,581.765Z\"\n transform=\"translate(-320.675 -559.945)\"\n fill=\"#cfcfcf\"\n />\n </g>\n <g id=\"Group_75\" data-name=\"Group 75\" transform=\"translate(0.039 21.704)\">\n <path\n id=\"Path_35\"\n data-name=\"Path 35\"\n d=\"M321.6,723.414l9.525-7.74,15.118-12.286,3.491-2.837-.445.148,11.732-.011,14.929-.014a2.266,2.266,0,0,0,.555,0c.2-.058-.067-.034-.067-.034a6.777,6.777,0,0,0,.817.662l4.344,3.518,13.724,11.115,5.959,4.826c1.042.844,2.056,1.757,3.142,2.545.051.037.1.081.149.121.194.157.882-.134.7-.284l-15.877-12.859-9.687-7.845c-.8-.644-1.585-1.3-2.386-1.932-.376-.3-.728-.229-1.205-.229l-24.161.023a20.449,20.449,0,0,0-2.364,0c-.6.072-1.158.727-1.6,1.088l-8.425,6.847-18.207,14.8-.345.28c-.323.263.418.244.593.1Z\"\n transform=\"translate(-320.926 -700.26)\"\n fill=\"#cfcfcf\"\n />\n </g>\n </g>\n </g>\n</g>\n</svg>)\n}","import React from 'react';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\nimport InsertDriveFileIcon from '@mui/icons-material/InsertDriveFile';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport { IAppsAndViewsProps } from '../types';\nimport { classes } from './styles';\n\nexport default function ApplicationsAndViews({\n applications,\n openApplications,\n jobCounts,\n isLoading,\n handleTabChange\n}: IAppsAndViewsProps) {\n return (\n <Box sx={classes.subWidget}>\n <Box sx={classes.widgetBlockContainer}>\n <Box\n sx={{ ...classes.widgetBlock, cursor: 'pointer' }}\n onClick={!isLoading ? () => handleTabChange(undefined, 1) : undefined}\n id=\"applications-widget-job\"\n >\n <Box sx={classes.widgetBlockIcon}>\n <InsertDriveFileIcon />\n </Box>\n <Box sx={classes.widgetBlockNew}>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={32} height={26} />\n ) : (\n jobCounts?.applications_count > 0 && `+ ${jobCounts?.applications_count}`\n )}\n </Box>\n <Box sx={classes.widgetBlockText}>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={80} height={30} />\n ) : (\n <Box sx={classes.blockCount}>{`${applications} (${openApplications})`}</Box>\n )}\n <Box sx={classes.blockTitle}>Applications</Box>\n </Box>\n </Box>\n <Box sx={classes.widgetBlock}>\n <Box sx={classes.widgetBlockIcon}>\n <VisibilityIcon />\n </Box>\n <Box sx={classes.widgetBlockNew}>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={32} height={26} />\n ) : (\n jobCounts?.unique_page_views?.daily_unique_views > 0 &&\n `+ ${jobCounts?.unique_page_views?.daily_unique_views}`\n )}\n </Box>\n <Box sx={classes.widgetBlockText}>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={80} height={30} />\n ) : (\n <Box sx={classes.blockCount}>{jobCounts?.unique_page_views?.unique_views}</Box>\n )}\n <Box sx={classes.blockTitle}>Unique Pageviews</Box>\n </Box>\n </Box>\n </Box>\n </Box>\n );\n}\n","import React, { FC } from 'react';\nimport Box from '@mui/material/Box';\nimport EventIcon from '@mui/icons-material/Event';\nimport Skeleton from '@mui/material/Skeleton';\nimport moment from 'moment-timezone';\nimport { ICreationExpiryProps, IDateWidget } from '../types';\nimport { classes } from './styles';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nexport default function CreationExpiry({\n createdAt,\n publishedAt,\n expiresAt,\n isLoading,\n timeZone\n}: ICreationExpiryProps) {\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const jobTimeZone = timeZone ? timeZone : timeZoneString;\n\n const expiryDateColor = (date: string) => {\n const dayToExpired = (new Date(date).getTime() - Date.now()) / (1000 * 60 * 60 * 24);\n if (dayToExpired < 0) {\n return theme.palette.error.main;\n } else if (dayToExpired < 1) {\n return theme.palette.secondary.yellow;\n } else {\n return '#333333';\n }\n };\n\n return (\n <Box sx={{ ...classes.subWidget, border: '1px solid #E3E3E3' }}>\n <Box sx={classes.creationExpiryContainer}>\n <Box sx={classes.widgetIcon}>\n <EventIcon />\n </Box>\n <DateWidget\n isLoading={isLoading}\n label=\"Creation Date\"\n timezone={jobTimeZone}\n utcDate={createdAt}\n />\n <DateWidget\n isLoading={isLoading}\n label=\"Published Date\"\n timezone={jobTimeZone}\n utcDate={publishedAt}\n />\n <DateWidget\n isLoading={isLoading}\n label=\"Expiry Date\"\n sx={{ color: expiryDateColor(expiresAt) }}\n timezone={jobTimeZone}\n utcDate={expiresAt}\n />\n </Box>\n </Box>\n );\n}\n\nconst DateWidget: FC<IDateWidget> = ({ isLoading, label, timezone, utcDate, sx }) => {\n return (\n <Box sx={{ ...classes.widgetText, marginRight: '20px' }}>\n <Box sx={classes.widgetTextTitle}>{label}</Box>\n <Box sx={{ ...classes.widgetTextContent, ...sx }}>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={100} height={60} />\n ) : utcDate ? (\n <>\n <Box>{moment.tz(utcDate, timezone).format('DD MMM YY')},</Box>\n <Box>{moment.tz(utcDate, timezone).format('hh:mma z')}</Box>\n </>\n ) : (\n <Box sx={{ height: '40px' }}>-</Box>\n )}\n </Box>\n </Box>\n );\n};\n","import React, { useRef, useEffect, useState, memo } from 'react';\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\nimport { IJobInformationProps } from '../types';\nimport { classes } from './styles';\n\nfunction JobInformation({\n createdBy,\n createdByLink,\n entity,\n entityLink,\n brand,\n brandLink,\n location,\n tags,\n assignedUser,\n isLoading\n}: IJobInformationProps) {\n const [infoWidgetWidth, setInfoWidgetWidth] = useState(0);\n const infoWidgetRef = useRef(null);\n\n useEffect(() => {\n const widgetObserver = new ResizeObserver((entries) => {\n setInfoWidgetWidth(entries[0].contentRect.width);\n });\n widgetObserver.observe(infoWidgetRef.current);\n return () => {\n widgetObserver.disconnect();\n };\n }, []);\n\n return (\n <Box\n sx={{ ...classes.infoWidget, minHeight: infoWidgetWidth < 1052 ? '250px' : '118px' }}\n ref={infoWidgetRef}\n >\n <Box sx={classes.infoContainer}>\n <Box sx={classes.jobInfoContainer}>\n <Box sx={classes.infoText}>\n <Box sx={classes.infoTextTitle}>Created By</Box>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={140} height={30} />\n ) : createdBy ? (\n <a href={createdByLink}>\n <Box sx={classes.infoTextContent}>{createdBy}</Box>\n </a>\n ) : (\n <Box sx={classes.infoTextContent}>-</Box>\n )}\n </Box>\n <Box sx={classes.infoText}>\n <Box sx={classes.infoTextTitle}>Entity</Box>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={140} height={30} />\n ) : entity ? (\n <a href={entityLink}>\n <Box sx={classes.infoTextContent}>{entity}</Box>\n </a>\n ) : (\n <Box sx={classes.infoTextContent}>-</Box>\n )}\n </Box>\n <Box sx={classes.infoText}>\n <Box sx={classes.infoTextTitle}>Brand</Box>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={140} height={30} />\n ) : brand ? (\n <a href={brandLink}>\n <Box sx={classes.infoTextContent}>{brand}</Box>\n </a>\n ) : (\n <Box sx={classes.infoTextContent}>-</Box>\n )}\n </Box>\n </Box>\n <Box sx={classes.jobInfoContainer}>\n <Box sx={classes.infoText}>\n <Box sx={classes.infoTextTitle}>Location</Box>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={140} height={30} />\n ) : (\n <Box sx={classes.infoTextContent}>{location ? location : '-'}</Box>\n )}\n </Box>\n <Box sx={classes.infoText}>\n <Box sx={classes.infoTextTitle}>Tags</Box>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={140} height={30} />\n ) : (\n <Box sx={classes.infoTextContent}>\n {tags?.length\n ? tags.map((tag, i) => (\n <Box key={i} sx={classes.tag}>\n {tag.name}\n </Box>\n ))\n : '-'}\n </Box>\n )}\n </Box>\n <Box sx={classes.infoText}>\n <Box sx={classes.infoTextTitle}>Assigned User</Box>\n {isLoading ? (\n <Skeleton animation=\"wave\" width={140} height={30} />\n ) : (\n <Box sx={classes.infoTextContent}>{assignedUser ? assignedUser : '-'}</Box>\n )}\n </Box>\n </Box>\n </Box>\n </Box>\n );\n}\n\nexport default memo(JobInformation);\n","import React from 'react';\nimport Box from '@mui/material/Box';\nimport ApplicationsAndViews from './ApplicationsAndViews';\nimport CreationExpiry from './CreationExpiry';\nimport { ISubcontainerProps } from '../types';\nimport { classes } from './styles';\n\nexport default function Subcontainer({\n applications,\n openApplications,\n jobCounts,\n createdAt,\n publishedAt,\n expiresAt,\n isLoading,\n handleTabChange,\n timeZone\n}: ISubcontainerProps) {\n return (\n <Box sx={classes.subcontainer}>\n <ApplicationsAndViews\n jobCounts={jobCounts}\n isLoading={isLoading}\n applications={applications}\n openApplications={openApplications}\n handleTabChange={handleTabChange}\n />\n <CreationExpiry\n createdAt={createdAt}\n publishedAt={publishedAt}\n expiresAt={expiresAt}\n isLoading={isLoading}\n timeZone={timeZone}\n />\n </Box>\n );\n}\n","import React from 'react';\nimport Job from './Job';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\nexport default function JobPage({\n apiKey,\n job_id,\n aiStudioEnabled,\n ai_studio_summaries_enabled,\n foundu_enabled,\n foundu_auth_url,\n entity,\n userTimeZone,\n newNoteOnApplicationEnabled,\n newApplicationEnabled\n}: {\n apiKey: string;\n job_id: number;\n aiStudioEnabled: boolean;\n entity: object;\n userTimeZone: string;\n ai_studio_summaries_enabled: boolean;\n foundu_enabled: boolean;\n foundu_auth_url?: string;\n newNoteOnApplicationEnabled: boolean;\n newApplicationEnabled: boolean;\n}) {\n return (\n <QueryClientProvider client={queryClient}>\n <Job\n apiKey={apiKey}\n job_id={job_id}\n aiStudioEnabled={aiStudioEnabled}\n ai_studio_summaries_enabled={ai_studio_summaries_enabled}\n foundu_enabled={foundu_enabled}\n foundu_auth_url={foundu_auth_url}\n entity={entity}\n userTimeZone={userTimeZone}\n newNoteOnApplicationEnabled={newNoteOnApplicationEnabled}\n newApplicationEnabled={newApplicationEnabled}\n />\n <ReactQueryDevtools />\n </QueryClientProvider>\n );\n}\n","import React, { useState } from 'react';\nimport { classes } from './useStyles';\nimport Box from '@mui/material/Box';\nimport IconButton from '@mui/material/IconButton';\nimport IosShareIcon from '@mui/icons-material/IosShare';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport DoneIcon from '@mui/icons-material/Done';\nimport ErrorIcon from '@mui/icons-material/Error';\nimport Tooltip from '@mui/material/Tooltip';\nimport Api from '../API';\nimport { IExportCsvProps, IOptionType } from '../types';\nimport moment from 'moment';\n\nexport default function ExportCSV({\n filters,\n order,\n orderBy,\n archived,\n sortableColumns,\n search,\n jobStatusFeature\n}: IExportCsvProps) {\n const [isLoading, setIsLoading] = useState(0);\n const [isError, setIsError] = useState('');\n\n const activeColumns = {};\n sortableColumns.forEach((column) => {\n activeColumns[column.id] = column.id === 'status' && !jobStatusFeature ? false : column.enabled;\n });\n\n const handleClick = async () => {\n setIsLoading(1);\n try {\n const data = await Api.getCSVExport(\n {\n 'filter[archived]': archived,\n sort_by: orderBy,\n sort_direction: order,\n 'filter[location]': filters.location.map((location: IOptionType) => location.name),\n 'filter[state]': filters.state.map((state: IOptionType) => state.value),\n 'filter[entity_ids]': filters.entity.map((entity: IOptionType) => entity.id),\n 'filter[start_published_at]':\n filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n 'filter[end_published_at]':\n filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n 'filter[start_expires_at]':\n filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n 'filter[end_expires_at]':\n filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD'),\n activeColumns: JSON.stringify(activeColumns),\n search: search\n },\n );\n setIsLoading(2);\n setTimeout(() => {\n setIsLoading(0);\n }, 6000);\n } catch (error) {\n console.log(error);\n setIsError('An error occured while exporting the CSV');\n setIsLoading(3);\n }\n };\n\n const showIcons = () => {\n switch (isLoading) {\n case 0:\n return <IosShareIcon />;\n case 1:\n return <CircularProgress size={24} />;\n case 2:\n return <DoneIcon />;\n case 3:\n return <ErrorIcon />;\n default:\n return <IosShareIcon />;\n }\n };\n\n return (\n <Tooltip title=\"Export CSV\" placement=\"top\" arrow>\n <Box>\n <Tooltip\n open={isLoading === 2}\n placement=\"top\"\n title={isError || 'A CSV download link has been sent to your email'}\n arrow\n >\n <IconButton\n id={`export-jobs-csv-${archived ? 'archived' : 'current'}-button`}\n sx={classes.iconButton}\n onClick={handleClick}\n >\n {showIcons()}\n </IconButton>\n </Tooltip>\n </Box>\n </Tooltip>\n );\n}\n","import React, { useState } from 'react';\nimport { classes } from './useStyles';\nimport {\n Box,\n Popover,\n IconButton,\n FormControl,\n FormGroup,\n FormControlLabel,\n Switch,\n Stack,\n Tooltip\n} from '@mui/material';\nimport ViewColumnIcon from '@mui/icons-material/ViewColumn';\nimport { IDropdownProps } from '../types';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableField from './SortableField';\n\nexport default function FieldDropdown({\n sortableColumns,\n setSortableColumns,\n density,\n setDensity,\n postDensitySetting,\n archived,\n jobStatusFeature,\n userPermissions\n}: IDropdownProps) {\n const [anchorEl, setAnchorEl] = useState(null);\n\n const handleFieldSwitchChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newSortableColumns = sortableColumns.map((field) => {\n if (field.id === event.target.name) {\n return { ...field, enabled: event.target.checked };\n } else {\n return field;\n }\n });\n setSortableColumns(newSortableColumns);\n };\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n function handleDragEnd(event) {\n const { active, over } = event;\n\n if (active.id !== over.id) {\n const oldIndex = sortableColumns.map((c) => c.id).indexOf(active.id);\n const newIndex = sortableColumns.map((c) => c.id).indexOf(over.id);\n const newArray = arrayMove(sortableColumns, oldIndex, newIndex);\n\n setSortableColumns(newArray);\n }\n }\n\n const open = Boolean(anchorEl);\n\n return (\n <Tooltip title=\"Table settings\" placement=\"top\" arrow>\n <Box>\n <IconButton\n id={`field-dropdown-${archived ? 'archived' : 'current'}-button}`}\n sx={{\n ...classes.iconButton,\n backgroundColor: open\n ? classes.iconButtonOpen.backgroundColor\n : classes.iconButton.backgroundColor\n }}\n onClick={handleClick}\n >\n <ViewColumnIcon />\n </IconButton>\n <Popover\n id=\"field-dropdown-popover\"\n sx={classes.popover}\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <Box sx={classes.popoverContent}>\n <Stack sx={classes.tableSettingsHeader}>Column</Stack>\n <FormControl component=\"fieldset\" variant=\"standard\">\n <FormGroup id=\"field-dropdown-switches\">\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={sortableColumns} strategy={verticalListSortingStrategy}>\n {sortableColumns.map((field, index) => {\n if (field.canToggle === false || (!jobStatusFeature && field.id === 'status'))\n return null;\n else if (\n field.label === 'RM User' &&\n !userPermissions?.recruitment_team_enabled\n )\n return null;\n else if (\n field.label === 'Entity' &&\n !userPermissions?.Jobs?.['Show Job Sub-Entity']\n )\n return null;\n return (\n <SortableField\n key={index}\n field={field}\n handleFieldSwitchChange={handleFieldSwitchChange}\n />\n );\n })}\n </SortableContext>\n </DndContext>\n </FormGroup>\n </FormControl>\n <Stack sx={classes.tableSettingsHeader} paddingTop=\"16px\">\n Density\n </Stack>\n <FormControl>\n <FormGroup>\n {['Default', 'Compact', 'Ultra Compact'].map((size, index) => {\n const isSwitched = size === density;\n return (\n <FormControlLabel\n sx={{\n ...classes.switchLabels,\n '& .MuiFormControlLabel-label': isSwitched\n ? classes.switchLabels['& .MuiFormControlLabel-label']\n : {\n ...classes.switchLabels['& .MuiFormControlLabel-label'],\n ...classes.labelActive['& .MuiFormControlLabel-label']\n }\n }}\n key={index}\n control={\n <Switch\n sx={isSwitched ? classes.switchActive : classes.switch}\n checked={isSwitched}\n onChange={(event) => {\n setDensity(size);\n postDensitySetting(size);\n }}\n name={'density'}\n />\n }\n label={size}\n labelPlacement=\"start\"\n />\n );\n })}\n </FormGroup>\n </FormControl>\n </Box>\n </Popover>\n </Box>\n </Tooltip>\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport { IFilterProps, IFilters, IOptionType } from '../types';\nimport { classes } from './useStyles';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport Box from '@mui/material/Box';\nimport Popover from '@mui/material/Popover';\nimport IconButton from '@mui/material/IconButton';\nimport Badge from '@mui/material/Badge';\nimport Button from '@mui/material/Button';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport SortIcon from '@mui/icons-material/Sort';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Accordion from '@mui/material/Accordion';\nimport AccordionSummary from '@mui/material/AccordionSummary';\nimport AccordionDetails from '@mui/material/AccordionDetails';\nimport Typography from '@mui/material/Typography';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport DayPicker, { DateUtils } from 'react-day-picker';\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\nimport DateAdapter from '@mui/lab/AdapterMoment';\nimport DesktopDatePicker from '@mui/lab/DesktopDatePicker';\nimport TextField, { TextFieldProps } from '@mui/material/TextField';\nimport moment from 'moment';\nimport MultiSelect from '../../Components/CustomUIElements/MultiSelect';\nimport Tooltip from '@mui/material/Tooltip';\nimport { addLocalStorageItem } from '../../utils/local-storage';\nimport { FILTERS_KEY } from '../../constants';\n\nexport default function FilterDropdown({\n filters,\n setFilters,\n options,\n setPage,\n numberOfFilters,\n loadingFilters,\n archived,\n jobStatusFeature,\n userPermissions\n}: IFilterProps) {\n const [statusOptions, setStatusOptions] = useState([]);\n const [anchorEl, setAnchorEl] = useState(null);\n const [expanded, setExpanded] = useState({ published: true, expiry: false });\n const [publishedRange, setPublishedRange] = useState({ from: null, to: null });\n const [expiryRange, setExpiryRange] = useState({ from: null, to: null });\n const [tempFilters, setTempFilters] = useState({ ...filters });\n const [validDate, setValidDate] = useState({\n publishedStart: true,\n publishedEnd: true,\n expiryStart: true,\n expiryEnd: true\n });\n const defaultFilters: IFilters = {\n state: [],\n status: [],\n entity: [],\n location: [],\n assigned_user: [],\n recruitment_ad_user: [],\n published: [],\n expiry: []\n };\n const publishedModifiers = {\n start: publishedRange.from,\n end: publishedRange.to,\n first: { daysOfWeek: [0] },\n last: { daysOfWeek: [6] }\n };\n const expiryModifiers = {\n start: expiryRange.from,\n end: expiryRange.to,\n first: { daysOfWeek: [0] },\n last: { daysOfWeek: [6] }\n };\n\n const modifiersStyles = {\n first: {\n borderTopLeftRadius: '50%',\n borderBottomLeftRadius: '50%'\n },\n last: {\n borderTopRightRadius: '50%',\n borderBottomRightRadius: '50%'\n }\n };\n\n useEffect(() => {\n updateStatusTempFilter();\n }, [tempFilters.state]);\n\n function handlePublishedDayClick(day: Date) {\n let range = DateUtils.addDayToRange(day, publishedRange);\n if (range.from && range.to && range.from > range.to) range = { from: range.to, to: range.from };\n setPublishedRange(range);\n setTempFilters({\n ...tempFilters,\n published: [range.from ? range.from : null, range.to ? range.to : null]\n });\n if (range.from || range.to)\n setValidDate({ ...validDate, publishedStart: !!range.from, publishedEnd: !!range.to });\n }\n\n function handleExpiryDayClick(day: Date) {\n let range = DateUtils.addDayToRange(day, expiryRange);\n if (range.from && range.to && range.from > range.to) range = { from: range.to, to: range.from };\n setExpiryRange(range);\n setTempFilters({\n ...tempFilters,\n expiry: [range.from ? range.from : null, range.to ? range.to : null]\n });\n if (range.from || range.to)\n setValidDate({ ...validDate, expiryStart: !!range.from, expiryEnd: !!range.to });\n }\n\n function handleDateInput(day: Date, published: boolean, isStart: boolean) {\n if (day === null) {\n if (published) {\n setPublishedRange({\n from: isStart ? null : publishedRange.from,\n to: isStart ? publishedRange.to : null\n });\n setTempFilters({\n ...tempFilters,\n published: [isStart ? null : publishedRange.from, isStart ? publishedRange.to : null]\n });\n } else {\n setExpiryRange({\n from: isStart ? null : expiryRange.from,\n to: isStart ? expiryRange.to : null\n });\n setTempFilters({\n ...tempFilters,\n expiry: [isStart ? null : expiryRange.from, isStart ? expiryRange.to : null]\n });\n }\n setValidDate({\n ...validDate,\n [`${published ? 'published' : 'expiry'}${isStart ? 'Start' : 'End'}`]: true\n });\n return;\n }\n day = new Date(day);\n if (!(moment(day).isValid() && day > new Date('1980-01-01T00:00:00'))) {\n setValidDate({\n ...validDate,\n [`${published ? 'published' : 'expiry'}${isStart ? 'Start' : 'End'}`]: false\n });\n return;\n }\n if (published) {\n if (isStart) {\n const publishedEnd =\n publishedRange.to && day > publishedRange.to ? null : publishedRange.to;\n setPublishedRange({ from: day, to: publishedEnd });\n setTempFilters({ ...tempFilters, published: [day, publishedEnd] });\n } else {\n const publishedStart =\n publishedRange.from && day < publishedRange.from ? null : publishedRange.from;\n setPublishedRange({ from: publishedStart, to: day });\n setTempFilters({ ...tempFilters, published: [publishedStart, day] });\n }\n } else {\n if (isStart) {\n const expiryEnd = expiryRange.to && day > expiryRange.to ? null : expiryRange.to;\n setExpiryRange({ from: day, to: expiryEnd });\n setTempFilters({ ...tempFilters, expiry: [day, expiryEnd] });\n } else {\n const expiryStart = expiryRange.from && day < expiryRange.from ? null : expiryRange.from;\n setExpiryRange({ from: expiryStart, to: day });\n setTempFilters({ ...tempFilters, expiry: [expiryStart, day] });\n }\n }\n setValidDate({\n ...validDate,\n [`${published ? 'published' : 'expiry'}${isStart ? 'Start' : 'End'}`]: true\n });\n }\n\n function updateStatusSelectOptions(tempFilters: IFilters) {\n const states = tempFilters.state.map(function (s) {\n return s.value;\n });\n const statusSelectOptions = options.status.filter(function (status) {\n return states.includes(status.state);\n });\n states.length > 0 ? setStatusOptions(statusSelectOptions) : setStatusOptions(options.status);\n }\n\n function updateStatusTempFilter() {\n const states = tempFilters.state.map(function (s) {\n return s.value;\n });\n const newTemp = tempFilters.status.filter(function (status) {\n return states.includes(status.state);\n });\n setTempFilters({ ...tempFilters, status: newTemp });\n }\n\n const handleExpandChange = (filter: string) => (event: React.SyntheticEvent) => {\n setExpanded({ ...expanded, [filter]: !expanded[filter as keyof typeof expanded] });\n };\n\n const handleFilterChange = (filter: string, newValues: (string | IOptionType)[]) => {\n updateStatusSelectOptions({ ...tempFilters, [filter]: newValues });\n setTempFilters({ ...tempFilters, [filter]: newValues });\n };\n\n const handleCheckPinned = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTempFilters({ ...tempFilters, pinned: event.target.checked });\n };\n\n const handleApplyFilters = () => {\n addLocalStorageItem(FILTERS_KEY, { ...tempFilters });\n setFilters({ ...tempFilters });\n setPage(1);\n setAnchorEl(null);\n };\n\n const handleReset = (event: React.MouseEvent<HTMLButtonElement>) => {\n addLocalStorageItem(FILTERS_KEY, { ...defaultFilters });\n setFilters(defaultFilters);\n setTempFilters(defaultFilters);\n setPublishedRange({ from: null, to: null });\n setExpiryRange({ from: null, to: null });\n setPage(1);\n setAnchorEl(null);\n };\n\n const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (loadingFilters) return;\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const open = Boolean(anchorEl);\n\n useEffect(() => {\n if (!open) return;\n setTempFilters({ ...filters });\n }, [filters, open]);\n\n return (\n <Tooltip title=\"Filter\" placement=\"top\" arrow>\n <Box>\n <Badge\n badgeContent={numberOfFilters}\n sx={{ '& .MuiBadge-badge': { backgroundColor: '#E37D7A', color: '#FFF' } }}\n data-testid={`filter-badge-[FilterDropdown]`}\n >\n <IconButton\n id={`filter-dropdown-${archived ? 'archived' : 'current'}-button`}\n data-testid={`filter-dropdown-${archived ? 'archived' : 'current'}-button`}\n sx={{\n ...classes.iconButton,\n backgroundColor: open\n ? classes.iconButtonOpen.backgroundColor\n : classes.iconButton.backgroundColor\n }}\n onClick={handleClick}\n >\n {loadingFilters ? <CircularProgress size={24} /> : <SortIcon />}\n </IconButton>\n </Badge>\n <Popover\n id=\"filter-dropdown-popover\"\n sx={classes.popover}\n open={open}\n anchorEl={anchorEl}\n onClose={handleClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <Box sx={classes.filterPopoverContent}>\n <Box sx={classes.scrollableFilters}>\n <Box sx={classes.filterPopoverHeader}>\n <Button\n id=\"reset-filters-button\"\n data-testid=\"reset-filters-button-[FilterDropdown]\"\n variant=\"contained\"\n endIcon={<CancelIcon />}\n sx={classes.clearButton}\n onClick={handleReset}\n >\n Clear all\n </Button>\n <Button\n id=\"apply-filters-button\"\n data-testid=\"apply-filters-button-[FilterDropdown]\"\n variant=\"contained\"\n onClick={handleApplyFilters}\n sx={classes.applyButton}\n >\n Apply\n </Button>\n </Box>\n {userPermissions?.Jobs?.['Show Job Sub-Entity'] && (\n <Box\n sx={classes.multiSelectContainer}\n id=\"entity-filter\"\n data-testid=\"entity-filter\"\n >\n Entity\n <MultiSelect\n handleFilterChange={handleFilterChange}\n selectOptions={options.entity}\n name={'entity'}\n filters={tempFilters.entity || filters.entity}\n />\n </Box>\n )}\n <Box sx={classes.multiSelectContainer} id=\"state-filter\" data-testid=\"state-filter\">\n State\n <MultiSelect\n handleFilterChange={handleFilterChange}\n selectOptions={options.state}\n name={'state'}\n filters={tempFilters.state || filters.state}\n />\n </Box>\n {jobStatusFeature && (\n <Box\n sx={classes.multiSelectContainer}\n id=\"status-filter\"\n data-testid=\"status-filter\"\n >\n Status\n <MultiSelect\n handleFilterChange={handleFilterChange}\n selectOptions={tempFilters.state.length > 0 ? statusOptions : options.status}\n name={'status'}\n filters={tempFilters.status || filters.status}\n />\n </Box>\n )}\n <Box sx={classes.multiSelectContainer} id=\"location-filter\">\n Location\n <MultiSelect\n handleFilterChange={handleFilterChange}\n selectOptions={options.location}\n name={'location'}\n filters={tempFilters.location || filters.location}\n />\n </Box>\n <Box sx={classes.multiSelectContainer} id=\"assigned-user-filter\">\n Assigned User\n <MultiSelect\n handleFilterChange={handleFilterChange}\n selectOptions={options.assigned_user}\n name={'assigned_user'}\n filters={tempFilters.assigned_user || filters.assigned_user}\n />\n </Box>\n {userPermissions?.recruitment_team_enabled && (\n <Box sx={classes.multiSelectContainer} id=\"rm-user-filter\">\n RM User\n <MultiSelect\n handleFilterChange={handleFilterChange}\n selectOptions={options.recruitment_ad_user}\n name={'recruitment_ad_user'}\n filters={tempFilters.recruitment_ad_user || filters.recruitment_ad_user}\n />\n </Box>\n )}\n <Accordion\n expanded={expanded.published}\n onChange={handleExpandChange('published')}\n sx={classes.accordionRoot}\n >\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n sx={classes.accordionSummary}\n aria-controls=\"panel3a-content\"\n id=\"panel3a-header\"\n >\n <Typography sx={classes.summaryTypography}>Published Date</Typography>\n </AccordionSummary>\n <AccordionDetails sx={classes.accordionDetails}>\n <Box\n sx={{\n ...sharedClasses.datePickerCalendar,\n ...(publishedRange.from && publishedRange.to === null\n ? sharedClasses.onlyStartDate\n : {})\n }}\n >\n <DayPicker\n onDayClick={handlePublishedDayClick}\n selectedDays={[publishedRange.from, publishedRange]}\n modifiers={publishedModifiers}\n modifiersStyles={modifiersStyles}\n />\n </Box>\n <Box sx={classes.dateDisplay}>\n <LocalizationProvider dateAdapter={DateAdapter}>\n <DesktopDatePicker\n label=\"\"\n inputFormat=\"DD/MM/yyyy\"\n value={publishedRange.from}\n onChange={(input) => handleDateInput(input, true, true)}\n renderInput={(params: TextFieldProps) => (\n <TextField\n {...params}\n sx={{\n ...classes.dateInput,\n '& .MuiOutlinedInput-root': validDate.publishedStart\n ? classes.dateInput['& .MuiOutlinedInput-root']\n : {\n ...classes.dateInput['& .MuiOutlinedInput-root'],\n ...classes.invalidDate['& .MuiOutlinedInput-root']\n }\n }}\n />\n )}\n />\n <span>to</span>\n <DesktopDatePicker\n label=\"\"\n inputFormat=\"DD/MM/yyyy\"\n value={publishedRange.to}\n onChange={(input) => handleDateInput(input, true, false)}\n renderInput={(params: TextFieldProps) => (\n <TextField\n {...params}\n sx={{\n ...classes.dateInput,\n '& .MuiOutlinedInput-root': validDate.publishedEnd\n ? classes.dateInput['& .MuiOutlinedInput-root']\n : {\n ...classes.dateInput['& .MuiOutlinedInput-root'],\n ...classes.invalidDate['& .MuiOutlinedInput-root']\n }\n }}\n />\n )}\n />\n </LocalizationProvider>\n </Box>\n </AccordionDetails>\n </Accordion>\n <Accordion\n expanded={expanded.expiry}\n onChange={handleExpandChange('expiry')}\n sx={classes.accordionRoot}\n >\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n sx={classes.accordionSummary}\n aria-controls=\"panel3a-content\"\n id=\"panel3a-header\"\n >\n <Typography sx={classes.summaryTypography}>Expiry Date</Typography>\n </AccordionSummary>\n <AccordionDetails sx={classes.accordionDetails}>\n <Box\n sx={{\n ...classes.datePicker,\n ...(expiryRange.from && expiryRange.to === null ? classes.onlyStartDate : {})\n }}\n >\n <DayPicker\n onDayClick={handleExpiryDayClick}\n selectedDays={[expiryRange.from, expiryRange]}\n modifiers={expiryModifiers}\n modifiersStyles={modifiersStyles}\n />\n </Box>\n <Box sx={classes.dateDisplay}>\n <LocalizationProvider dateAdapter={DateAdapter}>\n <DesktopDatePicker\n label=\"\"\n inputFormat=\"DD/MM/yyyy\"\n value={expiryRange.from}\n onChange={(input) => handleDateInput(input, false, true)}\n renderInput={(params: TextFieldProps) => (\n <TextField\n {...params}\n sx={{\n ...classes.dateInput,\n '& .MuiOutlinedInput-root': validDate.expiryStart\n ? classes.dateInput['& .MuiOutlinedInput-root']\n : {\n ...classes.dateInput['& .MuiOutlinedInput-root'],\n ...classes.invalidDate['& .MuiOutlinedInput-root']\n }\n }}\n />\n )}\n />\n <span>to</span>\n <DesktopDatePicker\n label=\"\"\n inputFormat=\"DD/MM/yyyy\"\n value={expiryRange.to}\n onChange={(input) => handleDateInput(input, false, false)}\n renderInput={(params: TextFieldProps) => (\n <TextField\n {...params}\n sx={{\n ...classes.dateInput,\n '& .MuiOutlinedInput-root': validDate.expiryEnd\n ? classes.dateInput['& .MuiOutlinedInput-root']\n : {\n ...classes.dateInput['& .MuiOutlinedInput-root'],\n ...classes.invalidDate['& .MuiOutlinedInput-root']\n }\n }}\n />\n )}\n />\n </LocalizationProvider>\n </Box>\n </AccordionDetails>\n </Accordion>\n </Box>\n </Box>\n </Popover>\n </Box>\n </Tooltip>\n );\n}\n","import React from 'react';\nimport { Box, IconButton, FormControlLabel, Switch } from '@mui/material';\nimport DragIndicatorIcon from '@mui/icons-material/DragIndicator';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { IDropdownProps } from '../types';\nimport { classes } from './useStyles';\n\nconst SortableField = ({\n field,\n handleFieldSwitchChange\n}: {\n field: IDropdownProps['sortableColumns'][0];\n handleFieldSwitchChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n}) => {\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } =\n useSortable({ id: field.id });\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition\n };\n\n return (\n <Box key={field.id} sx={classes.sortableField} style={style} ref={setNodeRef} {...attributes}>\n <IconButton ref={setActivatorNodeRef} {...listeners}>\n <DragIndicatorIcon sx={{ fontSize: 16 }} />\n </IconButton>\n <FormControlLabel\n sx={{\n ...classes.sortableSwitchLabels,\n '& .MuiFormControlLabel-label': field.enabled\n ? classes.sortableSwitchLabels['& .MuiFormControlLabel-label']\n : {\n ...classes.sortableSwitchLabels['& .MuiFormControlLabel-label'],\n ...classes.labelActive['& .MuiFormControlLabel-label']\n }\n }}\n control={\n <Switch\n sx={field.enabled ? classes.switchActive : classes.switch}\n checked={field.enabled}\n onChange={handleFieldSwitchChange}\n name={field.id}\n />\n }\n label={field.label}\n labelPlacement=\"start\"\n />\n </Box>\n );\n};\n\nexport default SortableField;\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport { Box, Tab, Tabs, ToggleButton, ToggleButtonGroup } from '@mui/material';\nimport IconButton from '@mui/material/IconButton';\nimport Tooltip from '@mui/material/Tooltip';\nimport PushPinIcon from '@mui/icons-material/PushPin';\nimport { withScoutTheme } from '../../ThemeContext/ThemeContext';\nimport { styles } from './styles';\nimport FieldDropdown from './Dropdowns/FieldDropdown';\nimport FilterDropdown from './Dropdowns/FilterDropdown';\nimport ExportButton from './Dropdowns/Export';\nimport { IFilters, IOptionType, IPermissions, ITabs } from './types';\nimport CurrentJobs from './JobsTable/CurrentJobs';\nimport ArchivedJobs from './JobsTable/ArchivedJobs';\nimport SeekAds from '../Components/Multiposter/Seek/SeekAds';\nimport CreateNewJob from './NewJob/NewJob';\nimport IndeedAds from '../Components/Multiposter/Indeed/IndeedAds';\nimport ViewJobsAds from '../Components/Multiposter/ViewJobs/ViewJobsAds';\nimport Search from './Search';\nimport Api from './API';\nimport { jobsConfig } from './config';\nimport { useDebounce } from 'use-debounce';\nimport { getLocalStorageItem } from '../utils/local-storage';\nimport { FILTERS_KEY } from '../constants';\nimport { IUserPermissions } from '../Components/sharedTypes';\nimport CreateButton from '../Components/Buttons/CreateButton';\nimport { ISortableColumn, IUIPreferences } from '../Job/types';\nimport { getUpdatedSortableColumns } from '../utils/sortable-column';\nimport { getPermissions } from '../../shared/permissionHelpers';\nimport { fetchPreferences, updateUiSettings } from '../helpers/uiPreferencesHelpers';\n\nconst URL_PARAMS = new URL(window.location.href);\n\nconst getTabNumber = (urlParams: string) => {\n switch (urlParams) {\n case '?archived=true':\n return 1;\n case '?multiposter=true':\n return 2;\n default:\n return 0;\n }\n};\n\nfunction AdminJobs({\n apiKey,\n aiStudioEnabled,\n jobStatusFeature,\n userTimezone\n}: {\n apiKey: string;\n aiStudioEnabled: boolean;\n jobStatusFeature: boolean;\n userTimezone: string;\n}) {\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [page, setPage] = useState(1);\n const [search, setSearch] = useState('');\n const [order, setOrder] = useState('desc');\n const [orderBy, setOrderBy] = useState('created_at');\n const [filters, setFilters] = useState<Omit<IFilters, 'pinned'>>({\n state: [],\n status: [],\n entity: [],\n location: [],\n assigned_user: [],\n recruitment_ad_user: [],\n published: [],\n expiry: []\n });\n const [options, setOptions] = useState(jobsConfig.defaultFilterOptions);\n const [sortableColumns, setSortableColumns] = useState(jobsConfig.sortableColumnsDefaults);\n const [fetchUISwitch, setFetchUISwitch] = useState(true);\n const [numberOfFilters, setNumberOfFilters] = useState(0);\n const [loadingFilters, setLoadingFilters] = useState(0);\n const [debouncedSearch] = useDebounce(search, 600);\n const [tabValue, setTabValue] = useState(getTabNumber(URL_PARAMS.search));\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n const [userPermissions, setUserPermissions] = useState<IUserPermissions | undefined>(undefined);\n const [multiposterSelection, setMultiposterSelection] = useState('seek');\n const [showPinnedJobs, setShowPinnedJobs] = useState(false);\n const headerRefs = useRef<HTMLDivElement[]>([]);\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n message: '',\n state: 'success'\n });\n const [density, setDensity] = useState<string>('Default');\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const filterKeys = Object.keys(filters) as (keyof IFilters)[];\n const TabPanel = useCallback((props: ITabs) => {\n const { children, tabValue, index, ...other } = props;\n\n return (\n <div\n role=\"tabpanel\"\n hidden={tabValue !== index}\n id={`jobs-tabpanel-${index}`}\n aria-labelledby={`jobs-tab-${index}`}\n {...other}\n >\n {tabValue === index && <>{children}</>}\n </div>\n );\n }, []);\n\n const TabProps = useCallback((index: number) => {\n return {\n id: `jobs-tab-${index}`,\n 'aria-controls': `jobs-tabpanel-${index}`\n };\n }, []);\n\n const handleTabChange = (event: React.SyntheticEvent, newValue: number) => {\n setFilters({\n state: [],\n status: [],\n entity: [],\n location: [],\n assigned_user: [],\n recruitment_ad_user: [],\n published: [],\n expiry: []\n });\n const states = newValue ? jobsConfig.archivedStateOptions : jobsConfig.currentStateOptions;\n setSearch('');\n setPage(1);\n getEntites(states, Boolean(newValue));\n getLocations(states, Boolean(newValue));\n getAssignedUsers(states, Boolean(newValue));\n getRecruitmentAdUsers(states, Boolean(newValue));\n getStatuses(states, Boolean(newValue));\n setTabValue(newValue);\n URL_PARAMS.search = getPageParams(newValue);\n window.history.pushState(null, null, URL_PARAMS.href);\n };\n\n async function getEntites(states: Record<string, IOptionType[]>, archived: boolean) {\n setLoadingFilters((prevValue) => prevValue + 1);\n try {\n const data = await Api.getFilters('entities', {\n 'filter[archived]': archived\n });\n setOptions((previous) => ({ ...previous, ...states, entity: data.res.entities }));\n setLoadingFilters((prevValue) => prevValue - 1);\n } catch (error) {\n console.log(error);\n }\n }\n\n async function getLocations(states: Record<string, IOptionType[]>, archived: boolean) {\n setLoadingFilters((prevValue) => prevValue + 1);\n try {\n const data = await Api.getFilters('locations', {\n 'filter[archived]': archived\n });\n setOptions((previous) => ({\n ...previous,\n ...states,\n location: data.res.flatMap((location: string, index: number) =>\n location ? { index: index, name: location } : ([] as null[])\n )\n }));\n setLoadingFilters((prevValue) => prevValue - 1);\n } catch (error) {\n console.log(error);\n }\n }\n\n async function getAssignedUsers(states: Record<string, IOptionType[]>, archived: boolean) {\n setLoadingFilters((prevValue) => prevValue + 1);\n try {\n const data = await Api.getFilters('assigned_users', {\n 'filter[archived]': archived\n });\n setOptions((previous) => ({\n ...previous,\n ...states,\n assigned_user: data.res.assigned_users\n }));\n setLoadingFilters((prevValue) => prevValue - 1);\n } catch (error) {\n console.log(error);\n }\n }\n\n async function getRecruitmentAdUsers(states: Record<string, IOptionType[]>, archived: boolean) {\n setLoadingFilters((prevValue) => prevValue + 1);\n try {\n const data = await Api.getFilters('recruitment_ad_users', {\n 'filter[archived]': archived\n });\n setOptions((previous) => ({\n ...previous,\n ...states,\n recruitment_ad_user: data.res.recruitment_ad_users\n }));\n setLoadingFilters((prevValue) => prevValue - 1);\n } catch (error) {\n console.log(error);\n }\n }\n\n async function getStatuses(states: Record<string, IOptionType[]>, archived: boolean) {\n setLoadingFilters((prevValue) => prevValue + 1);\n try {\n const data = await Api.getFilters('statuses', {\n 'filter[archived]': archived\n });\n setOptions((previous) => ({ ...previous, ...states, status: data.res.statuses }));\n setLoadingFilters((prevValue) => prevValue - 1);\n } catch (error) {\n console.log(error);\n }\n }\n\n async function getUserPermissions(apiKey: string) {\n try {\n const data = await getPermissions(apiKey);\n const allRoles: Record<string, Record<string, boolean>> = {};\n data.roles.forEach((role: IPermissions) =>\n role.feature_groups.forEach((group) => {\n !allRoles[group.name] ? (allRoles[group.name] = {}) : null;\n group.permissions.forEach((permission) => (allRoles[group.name][permission] = true));\n })\n );\n const hasRecruitmentTeamEnabled = data.roles.some((user) => user.recruitment_team_enabled);\n allRoles['recruitment_team_enabled'] = hasRecruitmentTeamEnabled;\n setUserPermissions(allRoles);\n } catch (error) {\n console.log(error);\n }\n }\n\n async function fetchUISettings() {\n try {\n const { res } = await fetchPreferences('job');\n const densityData = await fetchPreferences('universal');\n if (res.ui_preferences[0]?.sortable_columns) {\n const { updatedColumns } = getUpdatedSortableColumns(\n sortableColumns as ISortableColumn[],\n res.ui_preferences[0] as IUIPreferences\n );\n setSortableColumns(updatedColumns);\n }\n densityData.res.ui_preferences[0]?.columns?.density &&\n setDensity(densityData.res.ui_preferences[0]?.columns?.density);\n res.ui_preferences[0]?.row_count && setRowsPerPage(res.ui_preferences[0].row_count);\n res.ui_preferences[0]?.sorting?.direction &&\n setOrder(res.ui_preferences[0].sorting.direction);\n res.ui_preferences[0]?.sorting?.field && setOrderBy(res.ui_preferences[0].sorting.field);\n res.ui_preferences[0]?.group_pinned && setShowPinnedJobs(res.ui_preferences[0]?.group_pinned);\n setFetchUISwitch(false);\n } catch (error) {\n console.error(error);\n }\n }\n\n async function postDensitySetting(density: string) {\n await updateUiSettings({ columns: { density }, source: 'universal' }, (errorMessage) => {\n setSnackbar({\n message: `There was an error saving your density preferences, ${errorMessage}`,\n state: 'error'\n });\n });\n }\n\n async function postUISettings({ sortableColumns, order, orderBy, rowsPerPage, showPinnedJobs }) {\n await updateUiSettings({\n sortable_columns: sortableColumns,\n sorting: { direction: order, field: orderBy },\n row_count: rowsPerPage,\n source: 'job',\n group_pinned: showPinnedJobs\n });\n }\n\n useEffect(() => {\n getEntites(jobsConfig.currentStateOptions, Boolean(tabValue));\n getLocations(jobsConfig.currentStateOptions, Boolean(tabValue));\n getAssignedUsers(jobsConfig.currentStateOptions, Boolean(tabValue));\n getRecruitmentAdUsers(jobsConfig.currentStateOptions, Boolean(tabValue));\n getStatuses(jobsConfig.currentStateOptions, Boolean(tabValue));\n fetchUISettings();\n getUserPermissions(apiKey);\n }, []);\n\n useEffect(() => {\n setIndicatorWidth(headerRefs.current[tabValue].clientWidth - 32);\n getUserPermissions(apiKey);\n }, [tabValue]);\n\n useEffect(() => {\n const filtersLength = filterKeys\n .map((key) => filters[key].length)\n .reduce((acc, item) => (acc += item), 0);\n\n setNumberOfFilters(filtersLength);\n }, [filters]);\n\n useEffect(() => {\n return () => {\n if (fetchUISwitch) return;\n postUISettings({ sortableColumns, order, orderBy, rowsPerPage, showPinnedJobs });\n };\n }, [sortableColumns, order, orderBy, rowsPerPage, showPinnedJobs]);\n\n const getPageParams = (tabNo: number) => {\n switch (tabNo) {\n case 0:\n return '';\n case 1:\n return '?archived=true';\n case 2:\n return '?multiposter=true';\n default:\n return '';\n }\n };\n\n useEffect(() => {\n setFilters({\n state: getLocalStorageItem(FILTERS_KEY, { state: [] }).state ?? [],\n status: getLocalStorageItem(FILTERS_KEY, { status: [] }).status ?? [],\n entity: getLocalStorageItem(FILTERS_KEY, { entity: [] }).entity ?? [],\n location: getLocalStorageItem(FILTERS_KEY, { location: [] }).location ?? [],\n assigned_user: getLocalStorageItem(FILTERS_KEY, { assigned_user: [] }).assigned_user ?? [],\n recruitment_ad_user:\n getLocalStorageItem(FILTERS_KEY, { recruitment_ad_user: [] }).recruitment_ad_user ?? [],\n published: getLocalStorageItem(FILTERS_KEY, { published: [] }).published ?? [],\n expiry: getLocalStorageItem(FILTERS_KEY, { expiry: [] }).expiry ?? []\n });\n }, []);\n\n return (\n <Box sx={styles.jobPageContainer}>\n <Box sx={styles.jobPageHeader}>\n <h1>Jobs</h1>\n {userPermissions?.Jobs?.['Create / Edit Jobs'] && (\n <CreateButton\n id=\"add-job-button\"\n ariaLabel=\"add job\"\n onClick={() => setIsDialogOpen(true)}\n disableDropDown\n />\n )}\n </Box>\n <Box sx={styles.tabsContainer}>\n <Tabs\n value={tabValue}\n onChange={handleTabChange}\n aria-label=\"Jobs, Archive, Multiposter Tabs\"\n sx={{\n ...styles.tabs,\n '& .MuiTabs-indicator': { ...styles.tabIndicator, maxWidth: indicatorWidth + 'px' }\n }}\n >\n <Tab\n ref={(el) => (headerRefs.current[0] = el)}\n label=\"Current jobs\"\n {...TabProps(0)}\n id=\"current-jobs-tab-button\"\n data-testid=\"current-jobs-tab-button\"\n />\n <Tab\n ref={(el) => (headerRefs.current[1] = el)}\n label=\"Archived jobs\"\n {...TabProps(1)}\n id=\"archived-jobs-tab-button\"\n />\n <Tab\n ref={(el) => (headerRefs.current[2] = el)}\n label=\"Multiposter job ads\"\n {...TabProps(2)}\n id=\"multiposter-jobs-tab-button\"\n />\n </Tabs>\n </Box>\n <TabPanel tabValue={tabValue} index={0}>\n <Box sx={styles.filtersRow}>\n <Search search={search} setSearch={setSearch} setPage={setPage} />\n <FilterDropdown\n filters={filters}\n setFilters={setFilters}\n options={options}\n setPage={setPage}\n numberOfFilters={numberOfFilters}\n loadingFilters={loadingFilters}\n jobStatusFeature={jobStatusFeature}\n userPermissions={userPermissions}\n />\n <FieldDropdown\n sortableColumns={sortableColumns}\n setSortableColumns={setSortableColumns}\n density={density}\n setDensity={setDensity}\n postDensitySetting={postDensitySetting}\n jobStatusFeature={jobStatusFeature}\n userPermissions={userPermissions}\n />\n <ExportButton\n apiKey={apiKey}\n filters={filters}\n order={order}\n orderBy={orderBy}\n sortableColumns={sortableColumns}\n search={search}\n jobStatusFeature={jobStatusFeature}\n />\n <Tooltip\n placement=\"top\"\n title={showPinnedJobs ? 'Ungroup pinned jobs' : 'Group pinned jobs on top'}\n arrow\n >\n <IconButton\n id=\"group-pinned-jobs-button\"\n data-testid=\"group-pinned-jobs-button\"\n sx={{\n ...styles.iconButton,\n ...(showPinnedJobs ? styles.iconButtonSelected : {})\n }}\n onClick={() => setShowPinnedJobs((prev) => !prev)}\n >\n <PushPinIcon />\n </IconButton>\n </Tooltip>\n </Box>\n <CurrentJobs\n {...{ userTimezone }}\n apiKey={apiKey}\n sortableColumns={sortableColumns}\n rowsPerPage={rowsPerPage}\n setRowsPerPage={setRowsPerPage}\n search={debouncedSearch}\n order={order}\n setOrder={setOrder}\n orderBy={orderBy}\n setOrderBy={setOrderBy}\n filters={filters}\n fetchUISwitch={fetchUISwitch}\n page={page}\n setPage={setPage}\n filtersApplied={numberOfFilters > 0}\n userPermissions={userPermissions}\n setSnackbarState={setSnackbar}\n showPinnedJobs={showPinnedJobs}\n setShowPinnedJobs={setShowPinnedJobs}\n density={density}\n jobStatusFeature={jobStatusFeature}\n />\n </TabPanel>\n <TabPanel tabValue={tabValue} index={1}>\n <Box sx={styles.filtersRow}>\n <Search search={search} setSearch={setSearch} setPage={setPage} />\n <FilterDropdown\n filters={filters}\n setFilters={setFilters}\n options={options}\n setPage={setPage}\n numberOfFilters={numberOfFilters}\n loadingFilters={loadingFilters}\n jobStatusFeature={jobStatusFeature}\n archived\n userPermissions={userPermissions}\n />\n <FieldDropdown\n sortableColumns={sortableColumns}\n setSortableColumns={setSortableColumns}\n density={density}\n setDensity={setDensity}\n postDensitySetting={postDensitySetting}\n archived\n jobStatusFeature={jobStatusFeature}\n userPermissions={userPermissions}\n />\n <ExportButton\n apiKey={apiKey}\n filters={filters}\n order={order}\n orderBy={orderBy}\n sortableColumns={sortableColumns}\n jobStatusFeature={jobStatusFeature}\n archived\n />\n </Box>\n <ArchivedJobs\n apiKey={apiKey}\n sortableColumns={sortableColumns}\n rowsPerPage={rowsPerPage}\n setRowsPerPage={setRowsPerPage}\n search={debouncedSearch}\n order={order}\n setOrder={setOrder}\n orderBy={orderBy}\n setOrderBy={setOrderBy}\n filters={filters}\n fetchUISwitch={fetchUISwitch}\n page={page}\n setPage={setPage}\n filtersApplied={numberOfFilters > 0}\n userPermissions={userPermissions}\n setSnackbarState={setSnackbar}\n density={density}\n jobStatusFeature={jobStatusFeature}\n />\n </TabPanel>\n <TabPanel tabValue={tabValue} index={2}>\n <Box sx={styles.multiposterContainer}>\n <Box sx={styles.toggleContainer}>\n <ToggleButtonGroup\n value={multiposterSelection}\n exclusive\n onChange={(e, value) => {\n if (value === null) return;\n setMultiposterSelection(value);\n }}\n aria-label=\"Multiposter selection\"\n sx={styles.toggleButtonGroup}\n >\n <ToggleButton sx={styles.toggleButton} value=\"seek\" id=\"multiposter-seek-jobs-tab\">\n <Box id=\"seek-logo\" sx={styles.logoSize} />\n </ToggleButton>\n <ToggleButton\n sx={styles.toggleButton}\n value=\"indeed\"\n id=\"multiposter-indeed-jobs-tab\"\n >\n <Box id=\"indeed-logo\" sx={{ transform: 'translateY(3px)', ...styles.logoSize }} />\n </ToggleButton>\n <ToggleButton\n sx={styles.toggleButton}\n value=\"viewjobs\"\n id=\"multiposter-viewjobs-jobs-tab\"\n >\n <Box id=\"viewjobs-logo\" sx={{ transform: 'translateY(3px)', ...styles.logoSize }} />\n </ToggleButton>\n </ToggleButtonGroup>\n </Box>\n {(() => {\n switch (multiposterSelection) {\n case 'seek':\n return <SeekAds apiKey={apiKey} jobId={null} />;\n case 'indeed':\n return <IndeedAds apiKey={apiKey} jobId={null} />;\n case 'viewjobs':\n return <ViewJobsAds apiKey={apiKey} jobId={null} />;\n default:\n return null;\n }\n })()}\n </Box>\n </TabPanel>\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n <CreateNewJob\n apiKey={apiKey}\n setFilters={setFilters}\n filters={filters}\n isDialogOpen={isDialogOpen}\n setIsDialogOpen={setIsDialogOpen}\n aiStudioEnabled={\n !!(userPermissions?.['AI Features']?.['Activate AI Studio'] && aiStudioEnabled)\n }\n showEntitySection={!!userPermissions?.Misc?.['Entity Manager Access']}\n setSnackbar={setSnackbar}\n userPermissions={userPermissions}\n userTimezone={userTimezone}\n />\n </Box>\n );\n}\n\nexport default withScoutTheme(AdminJobs);\n","import React, { useRef, useEffect, useState, memo, useCallback } from 'react';\nimport moment from 'moment-timezone';\nimport Api from '../API';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport TableSortLabel from '@mui/material/TableSortLabel';\nimport TableSkeleton from './TableSkeleton';\nimport NoJobs from './NoJobs';\nimport Pagination from '@mui/material/Pagination';\nimport Backdrop from '@mui/material/Backdrop';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport Paper from '@mui/material/Paper';\nimport Checkbox from '@mui/material/Checkbox';\nimport MenuItem from '@mui/material/MenuItem';\nimport FormControl from '@mui/material/FormControl';\nimport Select from '@mui/material/Select';\nimport Popover from '@mui/material/Popover';\nimport { visuallyHidden } from '@mui/utils';\nimport IconButton from '@mui/material/IconButton';\nimport DeleteIcon from '@mui/icons-material/Delete';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport NotesPopover from './NotesPopover';\nimport { TableHeader, IRequestParams, ITableProps, IJob } from '../types';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { classes } from './useStyles';\n\nconst BASE_URL = window.location.origin;\n\nconst tablePadding = (density: string) => {\n if (density === 'Default') {\n return '22px';\n } else if (density === 'Compact') {\n return '15px';\n } else {\n return '8px';\n }\n};\n\nconst tableHeadingAlignment = (name: string) => {\n switch (name) {\n case 'applications_count':\n return 'right';\n case 'state':\n return 'center';\n default:\n return 'left';\n }\n};\n\nconst tableHeadingWidth = (name: string) => {\n switch (name) {\n case 'published_at':\n return '110px';\n case 'expires_at':\n return '110px';\n case 'created_at':\n return '110px';\n case 'title':\n return '200px';\n case 'applications_count':\n return '120px';\n default:\n return '150px';\n }\n};\n\nconst tableHeadingTransform = (name: string) => {\n switch (name) {\n case 'state':\n return 'translateX(18px)';\n case 'status':\n return 'translateX(12px)';\n default:\n return '';\n }\n};\n\nfunction EnhancedTableHead(props: TableHeader) {\n const {\n onSelectAllClick,\n order,\n orderBy,\n numSelected,\n rowCount,\n onRequestSort,\n sortableColumns,\n handleScrollableEnter,\n handleScrollableExit,\n hovered,\n actionCellRef,\n titleCellRef,\n jobStatusFeature,\n userPermissions\n } = props;\n const createSortHandler = (property: string) => (event: React.MouseEvent) => {\n onRequestSort(event, property);\n };\n return (\n <TableHead>\n <TableRow id=\"table-header\" sx={classes.tableHeaderRow}>\n <TableCell\n padding=\"checkbox\"\n key=\"checkbox\"\n sx={{\n position: 'sticky',\n left: 0,\n width: '60px !important',\n maxWidth: '60px',\n background: 'white',\n zIndex: '4'\n }}\n >\n <Checkbox\n id=\"select-all-checkbox\"\n sx={{\n color: '#aaa !important',\n '&.Mui-checked': {\n color: '#15C7C0 !important'\n }\n }}\n indeterminate={numSelected > 0 && numSelected < rowCount}\n checked={rowCount > 0 && numSelected === rowCount}\n onChange={onSelectAllClick}\n inputProps={{\n 'aria-label': 'select all jobs'\n }}\n />\n </TableCell>\n {sortableColumns.map(\n (headCell, i) =>\n headCell.enabled &&\n !(!jobStatusFeature && headCell.id === 'status') &&\n (headCell.id === 'recruitment_ad_user'\n ? userPermissions?.recruitment_team_enabled\n : true) &&\n (headCell.id === 'entity' ? userPermissions?.Jobs?.['Show Job Sub-Entity'] : true) && (\n <TableCell\n key={headCell.id}\n align={'left'}\n padding={'normal'}\n id={`${headCell.id}-header`}\n ref={headCell.id === 'title' ? titleCellRef : null}\n sortDirection={orderBy === headCell.id ? (order as 'asc' | 'desc') : false}\n onMouseEnter={\n headCell.id !== 'title' && headCell.id !== 'reference'\n ? () => handleScrollableEnter()\n : null\n }\n onMouseLeave={\n headCell.id !== 'title' && headCell.id !== 'reference'\n ? () => handleScrollableExit()\n : null\n }\n sx={{\n ...(i === 0\n ? {\n position: 'sticky',\n left: '60px',\n maxWidth: '96px',\n width: '96px',\n background: 'white',\n zIndex: '3'\n }\n : {\n position: i === 1 ? 'sticky' : 'relative',\n left: i === 1 ? '156px' : 'auto',\n minWidth: tableHeadingWidth(headCell.id),\n background: 'white',\n zIndex: i === 1 ? '2' : headCell.id === 'applications_count' ? '1' : '0',\n textAlign: tableHeadingAlignment(headCell.id),\n transform: tableHeadingTransform(headCell.id),\n paddingLeft: headCell.id === 'state' ? '35px' : ''\n }),\n ...(headCell.id === 'title'\n ? {\n ...classes.titleHeaderCell,\n ...(hovered ? classes.cellAnimate : {})\n }\n : {})\n }}\n >\n <TableSortLabel\n id={`${headCell.id}-sort-label-archived`}\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? (order as 'asc' | 'desc') : 'asc'}\n onClick={createSortHandler(headCell.id)}\n >\n {headCell.label}\n {orderBy === headCell.id ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </Box>\n ) : null}\n </TableSortLabel>\n </TableCell>\n )\n )}\n <TableCell\n padding=\"checkbox\"\n key=\"actions\"\n ref={actionCellRef}\n sx={{ ...classes.actionsHeaderCell, ...(hovered ? classes.cellAnimate : {}) }}\n />\n </TableRow>\n </TableHead>\n );\n}\n\nfunction ArchivedJobs({\n apiKey,\n sortableColumns,\n rowsPerPage,\n setRowsPerPage,\n search,\n order,\n setOrder,\n orderBy,\n setOrderBy,\n filters,\n fetchUISwitch,\n page,\n setPage,\n filtersApplied,\n userPermissions,\n setSnackbarState,\n density,\n jobStatusFeature\n}: ITableProps) {\n const [jobs, setJobs] = useState(null);\n const [selected, setSelected] = useState([]);\n const [maxPages, setMaxPages] = useState(1);\n const [maxJobs, setMaxJobs] = useState(0);\n const [isLoading, setIsLoading] = useState(true);\n const [firstLoad, setFirstLoad] = useState(true);\n const [hovered, setHovered] = useState(false);\n const [canScroll, setCanScroll] = useState([false, true]);\n const [selectedJob, setSelectedJob] = useState({ id: null });\n const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n const [trashAlertOpen, setTrashAlertOpen] = useState(false);\n const [deleteJobs, setDeleteJobs] = useState([]);\n const [showMore, setShowMore] = useState([]);\n const [noteAnchorEl, setNoteAnchorEl] = useState(null);\n const allColumns = useRef(null);\n const actionCellRef = useRef(null);\n const titleCellRef = useRef(null);\n const noteRefs = useRef([]);\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n useEffect(() => {\n if (fetchUISwitch) return;\n getJobs(\n {\n 'filter[archived]': true,\n page: page,\n limit: rowsPerPage,\n sort_by: orderBy,\n sort_direction: order,\n 'q[search]': search ? search : undefined,\n 'filter[location]': filters.location.map((location) => location.name),\n 'filter[state]': filters.state.map((state) => state.value),\n 'filter[entity_ids]': filters.entity.map((entity) => entity.id),\n 'filter[assigned_user_ids]': filters.assigned_user.map((user) => user.id),\n 'filter[recruitment_ad_user_ids]': filters.recruitment_ad_user.map((user) => user.id),\n 'filter[job_status_ids]': filters.status.map((status) => status.id),\n 'filter[start_published_at]':\n filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n 'filter[end_published_at]':\n filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n 'filter[start_expires_at]':\n filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n 'filter[end_expires_at]':\n filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD')\n },\n );\n }, [search, page, rowsPerPage, orderBy, order, filters, fetchUISwitch]);\n\n async function getJobs(params: IRequestParams) {\n setIsLoading(true);\n try {\n const data = await Api.getJobs(params);\n setJobs([...data.res.jobs]);\n setMaxPages(parseInt(data.resHead['x-total-pages']));\n setMaxJobs(parseInt(data.resHead['x-total-count']));\n } catch (err) {\n console.log(err);\n } finally {\n setIsLoading(false);\n firstLoad && setFirstLoad(false);\n }\n }\n\n const vpHeight = window.innerHeight;\n const arrowHeight = () => {\n return allColumns.current?.getBoundingClientRect().top + 100 > vpHeight / 2\n ? allColumns.current?.getBoundingClientRect().top + 100\n : allColumns.current?.getBoundingClientRect().bottom < vpHeight\n ? vpHeight / 2 - (vpHeight - allColumns.current?.getBoundingClientRect().bottom)\n : vpHeight / 2;\n };\n\n const handleScroll = () => {\n if (allColumns.current.scrollLeft < 10) {\n setCanScroll([false, true]);\n } else if (\n allColumns.current.scrollLeft >\n allColumns.current.scrollWidth - allColumns.current.clientWidth - 10\n ) {\n setCanScroll([true, false]);\n } else {\n setCanScroll([true, true]);\n }\n };\n\n const handleScrollLeft = () => {\n allColumns.current.scrollLeft > 360\n ? (allColumns.current.scrollLeft -= 300)\n : (allColumns.current.scrollLeft = 0);\n };\n\n const handleScrollRight = () => {\n allColumns.current.scrollWidth - allColumns.current.clientWidth > 360\n ? (allColumns.current.scrollLeft += 300)\n : (allColumns.current.scrollLeft =\n allColumns.current.scrollWidth - allColumns.current.clientWidth);\n };\n\n function isScrollable(element: HTMLElement) {\n return element && element.scrollWidth > element.clientWidth + 20;\n }\n\n const handleScrollableEnter = () => {\n if (isScrollable(allColumns.current)) setHovered(true);\n };\n\n const handleScrollableExit = () => {\n setHovered(false);\n };\n\n const handleRequestSort = (event: React.MouseEvent<Element, MouseEvent>, property: string) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const handleSelectAllClick = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.checked) {\n const newSelecteds = jobs.map((job: IJob) => job.id);\n setSelected(newSelecteds);\n return;\n }\n setSelected([]);\n };\n\n const handleClick = (event: React.MouseEvent, id: number) => {\n const selectedIndex = selected.indexOf(id);\n let newSelected: Array<number> = [];\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selected, id);\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selected.slice(1));\n } else if (selectedIndex === selected.length - 1) {\n newSelected = newSelected.concat(selected.slice(0, -1));\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selected.slice(0, selectedIndex),\n selected.slice(selectedIndex + 1)\n );\n }\n\n setSelected(newSelected);\n };\n\n const handleOpenNote = (event: React.MouseEvent<HTMLElement>) => {\n setNoteAnchorEl(event.currentTarget);\n };\n\n const handleCloseNote = () => {\n setNoteAnchorEl(null);\n };\n\n const handleShowMore = useCallback(\n (id: number) => {\n if (!showMore.includes(id)) {\n const copy = [...showMore];\n copy.push(id);\n setShowMore(copy);\n }\n const flag = showMore.indexOf(id);\n if (flag > -1) {\n const copy = [...showMore];\n copy.splice(flag, 1);\n setShowMore(copy);\n }\n },\n [showMore]\n );\n\n const handlePaginationChange = (event: React.ChangeEvent<HTMLInputElement>, newPage: number) => {\n setPage(newPage);\n scrollToTableTop();\n };\n\n const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement>) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(1);\n };\n\n const scrollToTableTop = () => {\n window.scrollTo({\n top: 40,\n behavior: 'smooth'\n });\n };\n\n const reloadJobs = () => {\n getJobs(\n {\n 'filter[archived]': true,\n page: page,\n limit: rowsPerPage,\n sort_by: orderBy,\n sort_direction: order,\n 'q[search]': search ? search : undefined,\n 'filter[location]': filters.location.map((location) => location.name),\n 'filter[state]': filters.state.map((state) => state.value),\n 'filter[entity_ids]': filters.entity.map((entity) => entity.id),\n 'filter[assigned_user_ids]': filters.assigned_user.map((user) => user.id),\n 'filter[recruitment_ad_user_ids]': filters.recruitment_ad_user.map((user) => user.id),\n 'filter[job_status_ids]': filters.status.map((status) => status.id),\n 'filter[start_published_at]':\n filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n 'filter[end_published_at]':\n filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n 'filter[start_expires_at]':\n filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n 'filter[end_expires_at]':\n filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD')\n },\n );\n };\n\n async function handleUnarchiveJobs(ids: Array<number>) {\n setIsLoading(true);\n try {\n const response = await Api.putUnrchiveJobs({ job_ids: ids });\n if (response.res?.job_ids?.failure?.length) {\n const message =\n response?.res?.job_ids?.success?.length > 0 || response?.res?.job_ids?.failure?.length > 1\n ? `${response?.res?.job_ids?.failure?.length} ${\n response?.res?.job_ids?.failure?.length > 1 ? 'jobs were' : 'job was'\n } unable to be unarchived. Jobs in the Draft state cannot be unarchived.`\n : 'Unable to unarchive job. Jobs in the Draft state cannot be unarchived.';\n setSnackbarState({\n message: message,\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbarState({\n message: 'Something went wrong. Please try again.',\n state: 'error'\n });\n } finally {\n setSelected([]);\n setSelectedJob({ id: null });\n setActionsAnchorEl(null);\n reloadJobs();\n }\n }\n\n async function handleTrashJobs(ids: Array<number>) {\n setIsLoading(true);\n try {\n await fetch(`${BASE_URL}/api/v4/jobs/delete`, {\n method: 'DELETE',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({ job_ids: ids })\n });\n setDeleteJobs([]);\n } catch (error) {\n setSnackbarState({\n message: 'Something went wrong. Please try again.',\n state: 'error'\n });\n } finally {\n setSelected([]);\n setSelectedJob({ id: null });\n setActionsAnchorEl(null);\n reloadJobs();\n }\n }\n\n const isSelected = (id: number) => selected.indexOf(id) !== -1;\n\n const expiryDateColor = (date: string) => {\n const dayToExpired = (new Date(date).getTime() - Date.now()) / (1000 * 60 * 60 * 24);\n if (dayToExpired < 0) {\n return '#E37D7A';\n } else if (dayToExpired < 1) {\n return '#E6A052';\n } else {\n return '#333333';\n }\n };\n\n const renderTableCell = useCallback(\n (column, job, publishedAt, createdAt, expiresAt, expiryDateColor, labelId, notes) => {\n switch (column.id) {\n case 'reference':\n return (\n <TableCell\n key={job.reference + column.id}\n component=\"th\"\n id={labelId}\n className=\"reference-cell\"\n scope=\"row\"\n sx={{\n position: 'sticky',\n left: '60px',\n wordBreak: 'break-word',\n background: 'white',\n paddingRight: '8px !important',\n fontSize: '14px',\n fontFamily: 'Source Sans Pro',\n zIndex: '3',\n '& a': {\n wordBreak: 'break-word',\n color: '#000000'\n },\n '& a:hover': {\n textDecoration: 'none'\n }\n }}\n >\n <a\n href={`${BASE_URL}${job.job_link || '/admin/jobs/' + job.id}`}\n className=\"job-reference-link-archived\"\n >\n {job.reference ? job.reference : '-'}\n </a>\n </TableCell>\n );\n case 'title':\n return (\n <TableCell\n key={job.reference + column.id}\n component=\"th\"\n id={labelId}\n scope=\"row\"\n sx={{\n ...classes.titleCell,\n ...(hovered ? classes.cellAnimate : {}),\n left: '156px !important'\n }}\n className=\"title-cell\"\n >\n <a\n href={`${BASE_URL}${job.job_link || '/admin/jobs/' + job.id}`}\n className=\"job-title-link-archived\"\n >\n {job.title ? job.title : '-'}\n </a>\n </TableCell>\n );\n case 'published_at':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{\n paddingRight: '8px !important',\n width: '120px !important',\n lineHeight: '1.22'\n }}\n align=\"left\"\n className=\"published-cell\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job.published_at ? publishedAt : '-'}\n </TableCell>\n );\n case 'created_at':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{\n paddingRight: '8px !important',\n width: '120px !important',\n lineHeight: '1.22'\n }}\n align=\"left\"\n className=\"published-cell\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job.created_at ? createdAt : '-'}\n </TableCell>\n );\n case 'expires_at':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{\n paddingRight: '8px !important',\n width: '120px !important',\n lineHeight: '1.22',\n color: expiryDateColor(job.expires_at)\n }}\n align=\"left\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job.expires_at ? expiresAt : '-'}\n </TableCell>\n );\n case 'applications_count':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{\n paddingRight: '43px !important',\n '& a': {\n wordBreak: 'break-word',\n color: '#000000'\n },\n '& a:hover': {\n textDecoration: 'none'\n }\n }}\n align=\"right\"\n className=\"applications-cell\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n <a\n href={`${BASE_URL}/admin/jobs/${job.id}?applications=true`}\n className=\"application-count-link-archived\"\n >\n {job.applications_count} ({job.open_applications_count})\n </a>\n </TableCell>\n );\n case 'state':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{ paddingRight: '8px !important' }}\n className=\"state-cell\"\n align=\"center\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n <Box sx={{ ...classes.stateColumn, ...classes[job.state] }}>{job.state}</Box>\n </TableCell>\n );\n case 'status':\n if (!jobStatusFeature) return null;\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{\n paddingRight: '8px !important'\n }}\n className={'status-cell'}\n align=\"center\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job.job_statuses ? (\n <Box\n sx={{\n ...classes.statusClamp,\n ...classes.noDropdown,\n '& .status-dropdown-full': {\n ...classes.statusClamp['& .status-dropdown-full'],\n ...classes.noDropdown['& .status-dropdown-full']\n }\n }}\n >\n <Box className={'status-dropdown-full'} sx={classes.noDropdown}>\n {job.job_statuses?.length > 0 ? job.job_statuses[0].label : ''}\n </Box>\n {job.job_statuses?.length > 0 ? job.job_statuses[0]?.label : ''}\n </Box>\n ) : (\n <Box sx={classes.noStatuses}>-</Box>\n )}\n </TableCell>\n );\n case 'entity':\n return userPermissions?.Jobs?.['Show Job Sub-Entity'] ? (\n <TableCell\n key={job.reference + column.id}\n sx={{\n paddingRight: '8px !important',\n '& a': {\n wordBreak: 'break-word',\n color: '#000000'\n },\n '& a:hover': {\n textDecoration: 'none'\n }\n }}\n align=\"left\"\n className=\"entity-cell\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n <a href={`${BASE_URL}${job.entity_link}`} className=\"job-entity-link-archived\">\n {job.entity ? job.entity : '-'}\n </a>\n </TableCell>\n ) : null;\n case 'location':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{ paddingRight: '8px !important' }}\n align=\"left\"\n className=\"location-cell\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job.location ? job.location : '-'}\n </TableCell>\n );\n case 'assigned_user':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{ paddingRight: '8px !important' }}\n align=\"left\"\n className=\"location-cell\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job?.assigned_user ? job.assigned_user : '-'}\n </TableCell>\n );\n case 'recruitment_ad_user':\n return userPermissions?.recruitment_team_enabled ? (\n <TableCell\n key={job.reference + column.id}\n sx={{ paddingRight: '8px !important' }}\n align=\"left\"\n className=\"location-cell\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job?.recruitment_ad_user ? job.recruitment_ad_user : '-'}\n </TableCell>\n ) : null;\n case 'notes':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{ minWidth: '300px', paddingRight: '8px !important' }}\n align=\"left\"\n className=\"entity-cell\"\n onMouseEnter={handleScrollableEnter}\n onMouseLeave={handleScrollableExit}\n id={`notes-${labelId}`}\n >\n <Box\n sx={!showMore.includes(job.id) ? classes.noteColumn : {}}\n ref={(element) => (noteRefs.current[job.id] = element)}\n >\n {notes.map((note: { body: string; noted_by: string }, note_index: number) => {\n const listId = `enhanced-table-checkbox-${job.id}-${note_index}`;\n return (\n <Box key={`note-show-${listId}`} style={{ margin: '1em 0' }}>\n <Box key={`note-${listId}`}>{note?.body}</Box>\n <Box>{note?.noted_by}</Box>\n </Box>\n );\n })}\n </Box>\n {noteRefs.current[job.id]?.offsetHeight >= 60 &&\n noteRefs.current[job.id]?.scrollHeight != 81 && (\n <Box\n key={`show-${labelId}`}\n sx={classes.link}\n onClick={() => handleShowMore(job.id)}\n >\n {showMore.includes(job.id) ? 'Show less' : 'Show more'}\n </Box>\n )}\n </TableCell>\n );\n default:\n return <TableCell></TableCell>;\n }\n },\n [classes, handleScrollableEnter, handleShowMore, hovered, showMore]\n );\n\n return (\n <Box id=\"table-container\" sx={{ width: '100%' }}>\n <Backdrop sx={{ color: '#83ECE7', zIndex: '99999' }} open={isLoading && !firstLoad}>\n <CircularProgress color=\"inherit\" />\n </Backdrop>\n <Paper sx={{ width: '100%', mb: 2, boxShadow: 'none ' }}>\n {isLoading && firstLoad ? (\n <>\n <TableContainer\n id=\"table-scrollable\"\n sx={classes.tableContainer}\n onScroll={handleScroll}\n >\n <Table\n stickyHeader\n sx={{\n ...classes.tableWrapper,\n minWidth: 750,\n '& tr': { '& td, th': { padding: `${tablePadding(density)} 18px` } }\n }}\n aria-labelledby=\"tableTitle\"\n size={'medium'}\n >\n <EnhancedTableHead\n numSelected={selected.length}\n order={order}\n orderBy={orderBy}\n onSelectAllClick={handleSelectAllClick}\n onRequestSort={handleRequestSort}\n rowCount={jobs && jobs.length}\n sortableColumns={sortableColumns}\n handleScrollableEnter={handleScrollableEnter}\n handleScrollableExit={handleScrollableExit}\n hovered={hovered}\n actionCellRef={actionCellRef}\n titleCellRef={titleCellRef}\n jobStatusFeature={jobStatusFeature}\n userPermissions={userPermissions}\n />\n </Table>\n </TableContainer>\n <TableSkeleton />\n </>\n ) : (\n <>\n <TableContainer\n id=\"table-scrollable\"\n ref={allColumns}\n sx={classes.tableContainer}\n onScroll={handleScroll}\n >\n <Box\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n onClick={() => handleScrollLeft()}\n sx={{\n ...classes.leftArrow,\n ...(hovered && canScroll[0] ? classes.showArrows : {}),\n left: `${titleCellRef.current?.getBoundingClientRect().right}px`,\n top: `${arrowHeight()}px`\n }}\n id=\"left-arrow\"\n >\n <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n <Box\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n onClick={() => handleScrollRight()}\n sx={{\n ...classes.rightArrow,\n ...(hovered && canScroll[1] ? classes.showArrows : {}),\n left: `${actionCellRef.current?.getBoundingClientRect().left - 40}px`,\n top: `${arrowHeight()}px`\n }}\n id=\"right-arrow\"\n >\n <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n <Table\n stickyHeader\n sx={{\n ...classes.tableWrapper,\n minWidth: 750,\n '& tr': {\n '& td, th': { padding: `${tablePadding(density)} 18px`, textTransform: 'none' }\n }\n }}\n aria-labelledby=\"tableTitle\"\n size={'medium'}\n >\n <EnhancedTableHead\n numSelected={selected.length}\n order={order}\n orderBy={orderBy}\n onSelectAllClick={handleSelectAllClick}\n onRequestSort={handleRequestSort}\n rowCount={jobs && jobs.length}\n sortableColumns={sortableColumns}\n handleScrollableEnter={handleScrollableEnter}\n handleScrollableExit={handleScrollableExit}\n hovered={hovered}\n actionCellRef={actionCellRef}\n titleCellRef={titleCellRef}\n jobStatusFeature={jobStatusFeature}\n userPermissions={userPermissions}\n />\n <TableBody id=\"table-body\" sx={classes.tableBody}>\n {/* if you don't need to support IE11, you can replace the `stableSort` call with:\n rows.slice().sort(getComparator(order, orderBy)) */}\n {jobs &&\n jobs.map((job: IJob, index: number) => {\n const jobTimeZone = job.time_zone ? job.time_zone : timeZoneString;\n const isItemSelected = isSelected(job.id);\n const labelId = `enhanced-table-checkbox-${index}`;\n const notes = job.job_notes ? job.job_notes : [];\n const publishedAt =\n job.published_at &&\n moment\n .tz(job.published_at, jobTimeZone)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${job.id}-${line}`}>{line}</div>);\n const createdAt =\n job.created_at &&\n moment\n .tz(job.created_at, jobTimeZone)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${job.id}-${line}`}>{line}</div>);\n const expiresAt =\n job.expires_at &&\n moment\n .tz(job.expires_at, jobTimeZone)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${job.id}-${line}`}>{line}</div>);\n return (\n <TableRow\n hover\n role=\"checkbox\"\n aria-checked={isItemSelected}\n tabIndex={-1}\n key={job.id}\n selected={isItemSelected}\n >\n <TableCell\n padding=\"checkbox\"\n sx={{\n position: 'sticky',\n left: 0,\n width: '60px !important',\n maxWidth: '60px',\n background: 'white',\n zIndex: 3\n }}\n >\n <Checkbox\n className=\"individual-checkbox\"\n onClick={(event) => handleClick(event, job.id)}\n sx={{\n color: '#aaa !important',\n '&.Mui-checked': {\n color: '#15C7C0 !important'\n }\n }}\n checked={isItemSelected}\n inputProps={{\n 'aria-labelledby': labelId\n }}\n />\n </TableCell>\n {sortableColumns.map((column) => {\n if (column.enabled) {\n return renderTableCell(\n column,\n job,\n publishedAt,\n createdAt,\n expiresAt,\n expiryDateColor,\n labelId,\n notes\n );\n }\n })}\n <TableCell\n sx={{ ...classes.actionsCell, ...(hovered ? classes.cellAnimate : {}) }}\n align=\"right\"\n >\n <Box\n sx={{\n display: 'flex',\n '& svg': {\n fontSize: '20px !important'\n }\n }}\n >\n {userPermissions?.Trash?.['Trash Jobs'] && (\n <IconButton\n onClick={() => {\n setDeleteJobs([job.id]);\n setTrashAlertOpen(true);\n }}\n className=\"trash-button-archived\"\n >\n <DeleteIcon sx={classes.iconRed} />\n </IconButton>\n )}\n {(userPermissions?.Jobs?.['Create / Edit Jobs'] ||\n userPermissions?.Jobs?.['Archive Jobs']) && (\n <IconButton\n className=\"actions-button-archived\"\n onClick={(e) => {\n setActionsAnchorEl(e.currentTarget);\n setSelectedJob({ id: job.id });\n }}\n >\n <MoreVertIcon sx={classes.iconGray} />\n </IconButton>\n )}\n </Box>\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </TableContainer>\n <Popover\n id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n sx={classes.actionsMenu}\n open={Boolean(actionsAnchorEl)}\n anchorEl={actionsAnchorEl}\n onClose={() => {\n setActionsAnchorEl(null);\n setSelectedJob({ id: null });\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {userPermissions?.Jobs?.['Create / Edit Jobs'] && (\n <>\n <span\n onClick={() => {\n window.location.href = BASE_URL + `/admin/jobs/${selectedJob.id}/edit`;\n }}\n className=\"edit-job-button-archived\"\n >\n Edit\n </span>\n <span\n onClick={() => {\n window.location.href = BASE_URL + `/admin/jobs/${selectedJob.id}/clone`;\n }}\n className=\"clone-job-button-archived\"\n >\n Clone\n </span>\n </>\n )}\n {userPermissions?.Jobs?.['Archive Jobs'] && (\n <span\n onClick={() => {\n handleUnarchiveJobs([selectedJob.id]);\n }}\n className=\"unarchive-job-button\"\n >\n Unarchive\n </span>\n )}\n {userPermissions?.['Job Options']?.['View Job Notes'] && (\n <span\n onClick={(e) => handleOpenNote(e, selectedJob.id)}\n className=\"add-note-button-archived\"\n >\n Add note\n </span>\n )}\n </Popover>\n {(userPermissions?.Jobs?.['Archive Jobs'] ||\n userPermissions?.Trash?.['Trash Jobs']) && (\n <Box\n id=\"selected-tooltip\"\n sx={{\n ...classes.selectedTooltip,\n ...(selected.length > 0 ? classes.fadeIn : classes.fadeOut)\n }}\n >\n <Box id=\"selected-tooltip-text\" sx={classes.selectedTooltipText}>\n {selected.length} selected\n </Box>\n <Box sx={classes.selectedTooltipButtonsContainer}>\n {userPermissions?.Jobs?.['Archive Jobs'] && (\n <Button\n variant=\"contained\"\n sx={classes.selectedTooltipButton}\n onClick={() => {\n handleUnarchiveJobs(selected);\n }}\n >\n Unarchive\n </Button>\n )}\n {userPermissions?.Trash?.['Trash Jobs'] && (\n <Button\n variant=\"contained\"\n sx={classes.selectedTooltipButton}\n onClick={() => {\n setDeleteJobs(selected);\n setTrashAlertOpen(true);\n }}\n >\n Trash\n </Button>\n )}\n </Box>\n </Box>\n )}\n {jobs?.length === 0 && (\n <NoJobs searchOrFilterApplied={!!search || !!filtersApplied || isLoading} />\n )}\n </>\n )}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginTop: '16px'\n }}\n >\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n sx={classes.rowSelect}\n value={rowsPerPage}\n onChange={handleChangeRowsPerPage}\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" value={10}>\n 10\n </MenuItem>\n <MenuItem id=\"second-rpp-item\" value={20}>\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer}>\n <Pagination\n id=\"pagination-menu\"\n count={maxPages}\n page={page}\n defaultPage={Math.ceil(maxPages / 2)}\n siblingCount={0}\n onChange={handlePaginationChange}\n sx={classes.pagination}\n />\n <span id=\"total-jobs\">{maxJobs} Total</span>\n </Box>\n </Box>\n <GenericDialog\n isDialogOpen={trashAlertOpen}\n setDialogOpen={setTrashAlertOpen}\n title={deleteJobs.length > 1 ? 'Trash jobs?' : 'Trash job?'}\n description={\n deleteJobs.length > 1\n ? 'Are you sure want to trash these jobs?'\n : 'Are you sure want to trash this job?'\n }\n buttonCallback={() => {\n setTrashAlertOpen(false);\n handleTrashJobs(deleteJobs);\n setDeleteJobs([]);\n }}\n callbackLoading={false}\n buttonText=\"Trash\"\n url=\"\"\n />\n </Paper>\n <NotesPopover\n setJobs={setJobs}\n anchorEl={noteAnchorEl}\n handleCloseNote={handleCloseNote}\n selectedJobId={selectedJob.id}\n apiKey={apiKey}\n setSnackbarState={setSnackbarState}\n />\n </Box>\n );\n}\n\nexport default memo(ArchivedJobs);\n","import React, { useRef, useEffect, useState, memo } from 'react';\nimport moment from 'moment';\nimport Api from '../API';\nimport NotesPopover from './NotesPopover';\nimport {\n Box,\n Button,\n Table,\n TableBody,\n TableContainer,\n Pagination,\n Backdrop,\n CircularProgress,\n Paper,\n MenuItem,\n FormControl,\n Select,\n Popover\n} from '@mui/material';\nimport TableSkeleton from './TableSkeleton';\nimport NoJobs from './NoJobs';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport { IRequestParams, ITableProps, IJob } from '../types';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { classes } from './useStyles';\nimport CurrentJobsTableRow from './CurrentJobsTableRow';\nimport CurrentJobsTableHeader from './CurrentJobsTableHeader';\nimport { resourceDefault } from '../config';\nimport queryString from 'query-string';\n\nconst BASE_URL = window.location.origin;\n\nconst tablePadding = (density: string) => {\n if (density === 'Default') {\n return '22px';\n } else if (density === 'Compact') {\n return '15px';\n } else {\n return '8px';\n }\n};\n\nfunction CurrentJobs({\n apiKey,\n sortableColumns,\n rowsPerPage,\n setRowsPerPage,\n search,\n order,\n setOrder,\n orderBy,\n setOrderBy,\n filters,\n fetchUISwitch,\n page,\n setPage,\n filtersApplied,\n userPermissions,\n setSnackbarState,\n showPinnedJobs,\n density,\n jobStatusFeature,\n isDashboard,\n showNewApplicants,\n hideArrows,\n userTimezone\n}: ITableProps) {\n const [jobs, setJobs] = useState(null);\n const [pinnedJobs, setPinnedJobs] = useState(null);\n const [selected, setSelected] = useState([]);\n const [maxPages, setMaxPages] = useState(1);\n const [maxJobs, setMaxJobs] = useState(0);\n const [isLoading, setIsLoading] = useState(true);\n const [isLoadingPinned, setIsLoadingPinned] = useState(false);\n const [firstLoad, setFirstLoad] = useState(true);\n const [stateIsSending, setStateIsSending] = useState(0);\n const [hovered, setHovered] = useState(false);\n const [canScroll, setCanScroll] = useState([false, true]);\n const [stateAnchorEl, setStateAnchorEl] = useState(null);\n const [tempState, setTempState] = useState<{\n [key: number]: { label: string; list: IJob['job_states'] };\n }>({});\n const [selectedJob, setSelectedJob] = useState({ id: null, states: null, statuses: null });\n const [stateError, setStateError] = useState({ id: null, message: null });\n const [statusIsSending, setStatusIsSending] = useState(0);\n const [statusAnchorEl, setStatusAnchorEl] = useState(null);\n const [tempStatus, setTempStatus] = useState<{\n [key: number]: { label: string; list: IJob['job_statuses'] };\n }>({});\n const [noteAnchorEl, setNoteAnchorEl] = useState(null);\n const [isEditing, setIsEditing] = useState(false);\n const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n const [showMore, setShowMore] = useState([]);\n const noteRefs = useRef([]);\n const allColumns = useRef(null);\n const actionCellRef = useRef(null);\n const titleCellRef = useRef(null);\n const statusDropdownRef = useRef([]);\n const [isPinning, setIsPinning] = useState(0);\n const [pinResponse, setPinResponse] = useState('');\n const [trashAlertOpen, setTrashAlertOpen] = useState(false);\n const [deleteJobs, setDeleteJobs] = useState([]);\n const [resourses, setResourses] = useState(resourceDefault);\n\n useEffect(() => {\n if (fetchUISwitch) return;\n getJobs(\n {\n page: page,\n limit: rowsPerPage,\n sort_by: orderBy,\n sort_direction: order,\n exclude_pinned: showPinnedJobs,\n 'q[search]': search ? search : undefined,\n 'filter[location]': filters.location.map((location) => location.name),\n 'filter[state]': filters.state.map((state) => state.value),\n 'filter[entity_ids]': filters.entity.map((entity) => entity.id),\n 'filter[assigned_user_ids]': filters.assigned_user.map((user) => user.id),\n 'filter[recruitment_ad_user_ids]': filters.recruitment_ad_user.map((user) => user.id),\n 'filter[job_status_ids]': filters.status.map((status) => status.id),\n 'filter[start_published_at]':\n filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n 'filter[end_published_at]':\n filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n 'filter[start_expires_at]':\n filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n 'filter[end_expires_at]':\n filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD'),\n ...(!!isDashboard && { pinned: true, dashboard: true }),\n ...(!!showNewApplicants && { with_new_applications: true, pinned: false })\n },\n );\n if (!showPinnedJobs) return;\n getPinnedJobs(\n {\n page: 1,\n limit: 100,\n sort_by: orderBy,\n sort_direction: order,\n 'q[search]': search ? search : undefined,\n 'filter[location]': filters.location.map((location) => location.name),\n 'filter[state]': filters.state.map((state) => state.value),\n 'filter[entity_ids]': filters.entity.map((entity) => entity.id),\n 'filter[assigned_user_ids]': filters.assigned_user.map((user) => user.id),\n 'filter[recruitment_ad_user_ids]': filters.recruitment_ad_user.map((user) => user.id),\n 'filter[job_status_ids]': filters.status.map((status) => status.id),\n 'filter[start_published_at]':\n filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n 'filter[end_published_at]':\n filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n 'filter[start_expires_at]':\n filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n 'filter[end_expires_at]':\n filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD'),\n pinned: true\n },\n );\n }, [search, page, rowsPerPage, orderBy, order, filters, fetchUISwitch, showPinnedJobs]);\n\n async function getJobs(params: IRequestParams) {\n setIsLoading(true);\n try {\n const data = await Api.getJobs(params);\n setJobs([...data.res.jobs]);\n setMaxPages(parseInt(data.resHead['x-total-pages']));\n setMaxJobs(parseInt(data.resHead['x-total-count']));\n } catch (err) {\n console.log(err);\n } finally {\n setIsLoading(false);\n firstLoad && setFirstLoad(false);\n }\n }\n\n async function getPinnedJobs(params: IRequestParams) {\n setIsLoadingPinned(true);\n try {\n const data = await Api.getJobs(params);\n setPinnedJobs([...data.res.jobs]);\n } catch (err) {\n console.log(err);\n } finally {\n setIsLoadingPinned(false);\n }\n }\n\n async function changeState(state: IJob['job_states'][0], jobId: number) {\n setStateIsSending(jobId);\n try {\n const response = await Api.putChangedState(state.link);\n getNewStateAndStatus(response.res, jobId);\n } catch (err) {\n console.log(err);\n setStateError({ id: jobId, message: err.error ? err.error : 'Unknown error occured' });\n setTimeout(() => {\n setStateError((prevState) => ({ ...prevState, id: null }));\n }, 10000);\n } finally {\n setStateIsSending(0);\n }\n }\n\n async function changeStatus(jobId: number, newStatus: string, statusId: number) {\n setStatusIsSending(jobId);\n try {\n const response = await Api.putChangedStatus(jobId, statusId);\n getNewStateAndStatus(response.res, jobId);\n } catch (err) {\n console.log(err);\n } finally {\n setStatusIsSending(0);\n }\n }\n\n async function pinJob(jobId: number) {\n setIsPinning(jobId);\n try {\n const response = await Api.putPinJob(jobId);\n if (!response.res.errors) {\n if (showPinnedJobs) {\n setJobs((prev: IJob[]) => prev.filter((job) => job.id !== jobId));\n reloadJobs('pinned');\n } else {\n setJobs((prev: IJob[]) =>\n prev.map((job) => (job.id === jobId ? { ...job, pinned_by_user: true } : job))\n );\n }\n } else {\n setPinResponse(response.res.errors);\n }\n } catch (err) {\n setSnackbarState({\n message: err?.errors,\n state: 'error'\n });\n } finally {\n setIsPinning(0);\n }\n }\n\n async function unpinJob(jobId: number) {\n setIsPinning(jobId);\n try {\n const response = await Api.putUnpinJob(jobId);\n if (!response.res.errors) {\n reloadJobs('jobs');\n if (showPinnedJobs) {\n setPinnedJobs((prev: IJob[]) => prev.filter((job) => job.id !== jobId));\n }\n }\n } catch (err) {\n setSnackbarState({\n message: err?.errors,\n state: 'error'\n });\n } finally {\n setIsPinning(0);\n }\n }\n\n const handleScroll = () => {\n if (allColumns.current.scrollLeft < 10) {\n setCanScroll([false, true]);\n } else if (\n allColumns.current.scrollLeft >\n allColumns.current.scrollWidth - allColumns.current.clientWidth - 10\n ) {\n setCanScroll([true, false]);\n } else {\n setCanScroll([true, true]);\n }\n };\n\n const handleScrollLeft = () => {\n allColumns.current.scrollLeft > 360\n ? (allColumns.current.scrollLeft -= 300)\n : (allColumns.current.scrollLeft = 0);\n };\n\n const handleScrollRight = () => {\n allColumns.current.scrollWidth - allColumns.current.clientWidth > 360\n ? (allColumns.current.scrollLeft += 300)\n : (allColumns.current.scrollLeft =\n allColumns.current.scrollWidth - allColumns.current.clientWidth);\n };\n\n function isScrollable(element: HTMLElement) {\n return element && element.scrollWidth > element.clientWidth + 20;\n }\n\n const handleScrollableEnter = () => {\n if (isScrollable(allColumns.current)) setHovered(true);\n };\n\n const handleScrollableExit = () => {\n setHovered(false);\n };\n\n const handleRequestSort = (event: React.MouseEvent<Element, MouseEvent>, property: string) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n const handleSelectAllClick = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.checked) {\n const newSelecteds = jobs.map((job: IJob) => job.id);\n if (showPinnedJobs) {\n newSelecteds.push(...pinnedJobs.map((job: IJob) => job.id));\n }\n setSelected(newSelecteds);\n return;\n }\n setSelected([]);\n };\n\n const handleClick = (event: React.MouseEvent, id: number) => {\n const selectedIndex = selected.indexOf(id);\n let newSelected: Array<number> = [];\n\n if (selectedIndex === -1) {\n newSelected = newSelected.concat(selected, id);\n } else if (selectedIndex === 0) {\n newSelected = newSelected.concat(selected.slice(1));\n } else if (selectedIndex === selected.length - 1) {\n newSelected = newSelected.concat(selected.slice(0, -1));\n } else if (selectedIndex > 0) {\n newSelected = newSelected.concat(\n selected.slice(0, selectedIndex),\n selected.slice(selectedIndex + 1)\n );\n }\n\n setSelected(newSelected);\n };\n\n const handlePin = (event: React.MouseEvent, id: number, pinned_by_user: boolean) => {\n pinned_by_user ? unpinJob(id) : pinJob(id);\n };\n\n const handlePaginationChange = (event: React.ChangeEvent<HTMLInputElement>, newPage: number) => {\n setPage(newPage);\n scrollToTableTop();\n };\n\n const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement>) => {\n setRowsPerPage(parseInt(event.target.value, 10));\n setPage(1);\n };\n\n const scrollToTableTop = () => {\n window.scrollTo({\n top: 40,\n behavior: 'smooth'\n });\n };\n\n async function getNewStateAndStatus(data: IJob, jobId: number) {\n setTempState((prevState) => ({\n ...prevState,\n [jobId]: { label: data.job_states[0].label, list: data.job_states }\n }));\n setTempStatus((prevState) => ({\n ...prevState,\n [jobId]: {\n label: data.job_statuses?.length ? data.job_statuses[0].label : '',\n list: data.job_statuses\n }\n }));\n }\n\n const handleStateDropdown = (\n event: React.MouseEvent<HTMLElement>,\n id: number,\n state: IJob['job_states']\n ) => {\n setStateAnchorEl(event.currentTarget);\n setSelectedJob({ id: id, states: state, statuses: null });\n };\n\n const handleStateDropdownClose = () => {\n setStateAnchorEl(null);\n setTimeout(() => {\n // timeout is used to account for the dropdown close animation time\n setSelectedJob({ id: null, states: null, statuses: null });\n }, 300);\n };\n\n const handleStateChange = (\n e: React.MouseEvent<HTMLElement>,\n id: number,\n state: IJob['job_states'][0]\n ) => {\n changeState(state, id);\n handleStateDropdownClose();\n };\n\n const handleStatusDropdown = (\n event: React.MouseEvent<HTMLElement>,\n id: number,\n statuses: IJob['job_statuses']\n ) => {\n setStatusAnchorEl(event.currentTarget);\n setSelectedJob({\n id: id,\n states: null,\n statuses: statuses\n });\n };\n\n const changeStateTense = (state: string) => {\n switch (state) {\n case 'Draft':\n return 'draft';\n case 'Save':\n return 'saved';\n case 'Publish':\n return 'published';\n case 'Unpublish':\n return 'unpublished';\n case 'Close':\n return 'closed';\n default:\n return state;\n }\n };\n\n const showDropdown = (statuses: IJob['job_statuses']) => {\n if (statuses[1]) return true;\n return false;\n };\n\n const handleStatusDropdownClose = () => {\n setStatusAnchorEl(null);\n setTimeout(() => {\n // timeout is used to account for the dropdown close animation time\n setSelectedJob({ id: null, states: null, statuses: null });\n }, 300);\n };\n\n const handleStatusChange = (id: number, newStatus: string, statusId: string) => {\n handleStatusDropdownClose();\n changeStatus(id, newStatus, Number(statusId.split('status/')[1]));\n };\n const handleOpenNote = (event: React.MouseEvent<HTMLElement>, id: number, pinned: boolean) => {\n setSelectedJob({ id: id, states: null, statuses: null, isPinnedSection: pinned });\n setNoteAnchorEl(event.currentTarget);\n };\n\n const handleCloseNote = () => {\n if (isEditing) return;\n setSelectedJob({ id: null, states: null, statuses: null });\n setNoteAnchorEl(null);\n };\n\n const handleShowMore = (id: number) => {\n if (!showMore.includes(id)) {\n const copy = [...showMore];\n copy.push(id);\n setShowMore(copy);\n }\n const flag = showMore.indexOf(id);\n if (flag > -1) {\n const copy = [...showMore];\n copy.splice(flag, 1);\n setShowMore(copy);\n }\n };\n\n const reloadJobs = (type: 'all' | 'jobs' | 'pinned') => {\n if (type === 'all' || type === 'jobs') {\n getJobs(\n {\n page: page,\n limit: rowsPerPage,\n sort_by: orderBy,\n sort_direction: order,\n exclude_pinned: showPinnedJobs,\n 'q[search]': search ? search : undefined,\n 'filter[location]': filters.location.map((location) => location.name),\n 'filter[state]': filters.state.map((state) => state.value),\n 'filter[entity_ids]': filters.entity.map((entity) => entity.id),\n 'filter[assigned_user_ids]': filters.assigned_user.map((user) => user.id),\n 'filter[recruitment_ad_user_ids]': filters.recruitment_ad_user.map((user) => user.id),\n 'filter[job_status_ids]': filters.status.map((status) => status.id),\n 'filter[start_published_at]':\n filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n 'filter[end_published_at]':\n filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n 'filter[start_expires_at]':\n filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n 'filter[end_expires_at]':\n filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD'),\n pinned: !!isDashboard\n },\n apiKey\n );\n }\n if (showPinnedJobs && (type === 'all' || type === 'pinned')) {\n getPinnedJobs(\n {\n page: 1,\n limit: 100,\n sort_by: orderBy,\n sort_direction: order,\n 'q[search]': search ? search : undefined,\n 'filter[location]': filters.location.map((location) => location.name),\n 'filter[state]': filters.state.map((state) => state.value),\n 'filter[entity_ids]': filters.entity.map((entity) => entity.id),\n 'filter[assigned_user_ids]': filters.assigned_user.map((user) => user.id),\n 'filter[recruitment_ad_user_ids]': filters.recruitment_ad_user.map((user) => user.id),\n 'filter[job_status_ids]': filters.status.map((status) => status.id),\n 'filter[start_published_at]':\n filters.published[0] && moment(filters.published[0]).format('YYYY-MM-DD'),\n 'filter[end_published_at]':\n filters.published[1] && moment(filters.published[1]).format('YYYY-MM-DD'),\n 'filter[start_expires_at]':\n filters.expiry[0] && moment(filters.expiry[0]).format('YYYY-MM-DD'),\n 'filter[end_expires_at]':\n filters.expiry[1] && moment(filters.expiry[1]).format('YYYY-MM-DD'),\n pinned: true\n },\n apiKey\n );\n }\n };\n\n async function handleArchiveJobs(ids: Array<number>) {\n setIsLoading(true);\n try {\n const response = await Api.putArchiveJobs({ job_ids: ids });\n if (response.res?.job_ids?.failure?.length) {\n const message =\n response.res.job_ids.success?.length > 0 || response.res.job_ids.failure?.length > 1\n ? `${response.res.job_ids.failure?.length} ${\n response.res.job_ids.failure?.length > 1 ? 'jobs were' : 'job was'\n } unable to be archived. Jobs in the Published, Closed and Draft state cannot be archived.`\n : `${\n response.res.job_ids.failure?.length === 1\n ? 'Unable to archive job. Jobs in the Published, Closed and Draft state cannot be archived.'\n : ''\n }`;\n setSnackbarState({\n message: message,\n state: 'error'\n });\n }\n } catch (error) {\n setSnackbarState({\n message: error?.errors,\n state: 'error'\n });\n alert('Something went wrong. Please try again.');\n } finally {\n setSelected([]);\n setSelectedJob({ id: null, states: null, statuses: null });\n setActionsAnchorEl(null);\n reloadJobs('all');\n }\n }\n\n async function handleTrashJobs(ids: Array<number>) {\n setIsLoading(true);\n try {\n await fetch(`${BASE_URL}/api/v4/jobs/delete`, {\n method: 'DELETE',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({ job_ids: ids })\n });\n setDeleteJobs([]);\n } catch (error) {\n console.log(error);\n alert('Something went wrong. Please try again.');\n } finally {\n setSelected([]);\n setSelectedJob({ id: null, states: null, statuses: null });\n setActionsAnchorEl(null);\n reloadJobs('all');\n }\n }\n\n useEffect(() => {\n setSelected([]);\n }, [showPinnedJobs]);\n\n const cloneJob = async (id: number) => {\n setIsLoading(true);\n const queryParams = `?${queryString.stringify(resourses, {\n arrayFormat: 'bracket',\n encode: false\n })}`;\n const cloningJob = jobs.find((x) => x.id === id) || pinnedJobs.find((x) => x.id === id);\n try {\n const response = await fetch(`/api/v4/jobs/${id}/clone${queryParams}`, {\n method: 'POST',\n headers: {\n 'X-api-authenticate': apiKey,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n job: {\n reference: cloningJob.reference,\n title: cloningJob.title,\n expires_at: '',\n location: cloningJob.location\n }\n })\n }).then((response) => response.json());\n if (response.job_link) {\n window.location.href = `${BASE_URL}${response.job_link}/edit`;\n }\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const isSelected = (id: number) => selected.indexOf(id) !== -1;\n\n const tableRowSharedProps = {\n userPermissions,\n BASE_URL,\n isPinning,\n sortableColumns,\n tempState,\n stateIsSending,\n stateError,\n tempStatus,\n statusIsSending,\n statusDropdownRef,\n noteRefs,\n hovered,\n isSelected,\n showMore,\n handleShowMore,\n handleClick,\n handlePin,\n handleScrollableEnter,\n handleScrollableExit,\n handleStateDropdown,\n showDropdown,\n handleStatusDropdown,\n handleOpenNote,\n setActionsAnchorEl,\n setSelectedJob,\n jobStatusFeature,\n userTimezone\n };\n\n return (\n <Box id=\"table-container\" sx={{ width: '100%', position: 'relative' }}>\n <Backdrop\n sx={{ color: '#83ECE7', zIndex: '99999' }}\n open={(isLoading || isLoadingPinned) && !firstLoad}\n >\n <CircularProgress color=\"inherit\" />\n </Backdrop>\n <Paper sx={{ width: '100%', mb: 2, boxShadow: 'none ' }}>\n {(isLoading || isLoadingPinned) && firstLoad ? (\n <>\n <TableContainer\n id=\"table-scrollable\"\n sx={classes.tableContainer}\n onScroll={handleScroll}\n >\n <Table\n stickyHeader\n sx={{\n ...classes.tableWrapper,\n minWidth: 750,\n '& tr': { '& td, th': { padding: `${tablePadding(density)} 18px` } }\n }}\n aria-labelledby=\"tableTitle\"\n size={'medium'}\n >\n <CurrentJobsTableHeader\n numSelected={selected.length}\n order={order}\n orderBy={orderBy}\n onSelectAllClick={handleSelectAllClick}\n onRequestSort={handleRequestSort}\n rowCount={jobs && jobs.length}\n pinnedCount={pinnedJobs && showPinnedJobs ? pinnedJobs.length : 0}\n sortableColumns={sortableColumns}\n handleScrollableEnter={handleScrollableEnter}\n handleScrollableExit={handleScrollableExit}\n hovered={hovered}\n actionCellRef={actionCellRef}\n titleCellRef={titleCellRef}\n jobStatusFeature={jobStatusFeature}\n userPermissions={userPermissions}\n isDashboard={isDashboard}\n />\n </Table>\n </TableContainer>\n <TableSkeleton />\n </>\n ) : (\n <>\n <TableContainer\n id=\"table-scrollable\"\n ref={allColumns}\n sx={classes.tableContainer}\n onScroll={handleScroll}\n >\n {!hideArrows && (\n <>\n <Box\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n onClick={() => handleScrollLeft()}\n sx={{\n ...classes.leftArrow,\n ...(hovered && canScroll[0] ? classes.showArrows : {}),\n left: `${titleCellRef.current?.getBoundingClientRect().right}px`\n }}\n id=\"left-arrow\"\n >\n <KeyboardArrowLeftIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n <Box\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n onClick={() => handleScrollRight()}\n sx={{\n ...classes.rightArrow,\n ...(hovered && canScroll[1] ? classes.showArrows : {}),\n left: `${actionCellRef.current?.getBoundingClientRect().left - 40}px`\n }}\n id=\"right-arrow\"\n >\n <KeyboardArrowRightIcon fontSize=\"large\" sx={{ color: '#CCCCCC' }} />\n </Box>\n </>\n )}\n <Table\n stickyHeader\n sx={{\n ...classes.tableWrapper,\n minWidth: 750,\n '& tr': {\n '& td, th': { padding: `${tablePadding(density)} 18px`, textTransform: 'none' }\n }\n }}\n aria-labelledby=\"tableTitle\"\n size={'medium'}\n >\n <CurrentJobsTableHeader\n numSelected={selected.length}\n order={order}\n orderBy={orderBy}\n onSelectAllClick={handleSelectAllClick}\n onRequestSort={handleRequestSort}\n rowCount={jobs && jobs.length}\n pinnedCount={pinnedJobs && showPinnedJobs ? pinnedJobs.length : 0}\n sortableColumns={sortableColumns}\n handleScrollableEnter={handleScrollableEnter}\n handleScrollableExit={handleScrollableExit}\n hovered={hovered}\n actionCellRef={actionCellRef}\n titleCellRef={titleCellRef}\n jobStatusFeature={jobStatusFeature}\n userPermissions={userPermissions}\n isDashboard={isDashboard}\n />\n <TableBody id=\"table-body\" data-testid=\"table-body\" sx={classes.tableBody}>\n {pinnedJobs && showPinnedJobs && (\n <CurrentJobsTableRow\n jobs={pinnedJobs}\n isPinnedSection={true}\n {...tableRowSharedProps}\n />\n )}\n {jobs && (\n <CurrentJobsTableRow\n showPinnedBorder={showPinnedJobs && !isLoadingPinned}\n isPinnedSection={false}\n {...{ ...tableRowSharedProps, jobs, isDashboard }}\n />\n )}\n </TableBody>\n </Table>\n </TableContainer>\n <Popover\n id={stateAnchorEl ? 'state-selection' : undefined}\n sx={classes.stateDropdown}\n open={Boolean(stateAnchorEl)}\n anchorEl={stateAnchorEl}\n onClose={handleStateDropdownClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n >\n {selectedJob.states &&\n selectedJob.states.map(\n (state: IJob['job_states'][0]) =>\n state.label !==\n (tempState[selectedJob.id as keyof typeof tempState]?.label ||\n selectedJob.states[0].label) && (\n <span\n key={`${selectedJob.id}-${state.label}`}\n onClick={(e) => handleStateChange(e, selectedJob.id, state)}\n >\n {changeStateTense(state.label)}\n </span>\n )\n )}\n </Popover>\n <Popover\n id={statusAnchorEl ? 'status-selection' : undefined}\n sx={classes.statusDropdownItems}\n open={Boolean(statusAnchorEl)}\n anchorEl={statusAnchorEl}\n onClose={handleStatusDropdownClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n >\n {selectedJob.statuses &&\n selectedJob.statuses.map(\n (status: IJob['job_statuses'][0]) =>\n ![\n tempStatus[selectedJob.id as keyof typeof tempStatus]?.label ||\n selectedJob.statuses[0].label,\n 'draft',\n 'published',\n 'unpublished',\n 'closed',\n 'saved'\n ].includes(status.label) && (\n <Box\n key={`${selectedJob.id}-${status.label}`}\n sx={classes.statusDropdownItem}\n onClick={() =>\n handleStatusChange(selectedJob.id, status.label, status.link)\n }\n >\n {status.label}\n </Box>\n )\n )}\n </Popover>\n <NotesPopover\n setJobs={selectedJob.isPinnedSection ? setPinnedJobs : setJobs}\n anchorEl={noteAnchorEl}\n handleCloseNote={handleCloseNote}\n selectedJobId={selectedJob.id}\n apiKey={apiKey}\n setSnackbarState={setSnackbarState}\n />\n <Popover\n id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n sx={classes.actionsMenu}\n open={Boolean(actionsAnchorEl)}\n anchorEl={actionsAnchorEl}\n onClose={() => {\n setActionsAnchorEl(null);\n setSelectedJob({ id: null, states: null, statuses: null });\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n {userPermissions?.Jobs?.['Create / Edit Jobs'] && (\n <>\n <span\n onClick={() => {\n window.location.href = BASE_URL + `/admin/jobs/${selectedJob.id}/edit`;\n }}\n className=\"edit-job-button\"\n >\n Edit\n </span>\n {!isDashboard && !showNewApplicants && (\n <span onClick={() => cloneJob(selectedJob.id)} className=\"clone-job-button\">\n Clone\n </span>\n )}\n </>\n )}\n {userPermissions?.Jobs?.['Archive Jobs'] && (\n <span\n onClick={() => handleArchiveJobs([selectedJob.id])}\n className=\"archive-job-button\"\n >\n Archive\n </span>\n )}\n {userPermissions?.Trash?.['Trash Jobs'] && (\n <span\n onClick={() => {\n setActionsAnchorEl(null);\n setTimeout(() => setTrashAlertOpen(true), 100);\n setDeleteJobs([selectedJob.id]);\n }}\n className=\"trash-job-button\"\n data-testid=\"trash-job-button-[CurrentJobs]\"\n >\n Trash\n </span>\n )}\n </Popover>\n {(userPermissions?.Jobs?.['Archive Jobs'] ||\n userPermissions?.Trash?.['Trash Jobs']) && (\n <Box\n id=\"selected-tooltip\"\n sx={{\n ...classes.selectedTooltip,\n ...(selected.length > 0 ? classes.fadeIn : classes.fadeOut)\n }}\n >\n <Box id=\"selected-tooltip-text\" sx={classes.selectedTooltipText}>\n {selected.length} selected\n </Box>\n <Box sx={classes.selectedTooltipButtonsContainer}>\n {userPermissions?.Jobs?.['Archive Jobs'] && (\n <Button\n variant=\"contained\"\n sx={classes.selectedTooltipButton}\n onClick={() => handleArchiveJobs(selected)}\n >\n Archive\n </Button>\n )}\n {userPermissions?.Trash?.['Trash Jobs'] && (\n <Button\n id=\"popover-trash-button\"\n data-testid=\"popover-trash-button\"\n variant=\"contained\"\n sx={classes.selectedTooltipButton}\n onClick={() => {\n setDeleteJobs(selected);\n setTrashAlertOpen(true);\n }}\n >\n Trash\n </Button>\n )}\n </Box>\n </Box>\n )}\n {jobs?.length === 0 && (\n <NoJobs searchOrFilterApplied={!!search || !!filtersApplied || isLoading} />\n )}\n </>\n )}\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginTop: '16px'\n }}\n >\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n data-testid=\"rows-per-page-[CurrentJobs]\"\n sx={classes.rowSelect}\n value={rowsPerPage}\n onChange={handleChangeRowsPerPage}\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" data-testid=\"first-rpp-item-[CurrentJobs]\" value={10}>\n 10\n </MenuItem>\n <MenuItem\n id=\"second-rpp-item\"\n data-testid=\"second-rpp-item-[CurrentJobs]\"\n value={20}\n >\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer} data-testid={'pagination-container-[CurrentJobs]'}>\n <Pagination\n id=\"pagination-menu\"\n count={maxPages}\n page={page}\n defaultPage={Math.ceil(maxPages / 2)}\n siblingCount={0}\n onChange={handlePaginationChange}\n sx={classes.pagination}\n />\n <span id=\"total-jobs\" data-testid=\"total-jobs-[CurrentJobs]\">\n {maxJobs} Total\n </span>\n </Box>\n </Box>\n <GenericDialog\n isDialogOpen={trashAlertOpen}\n setDialogOpen={setTrashAlertOpen}\n title={deleteJobs.length > 1 ? 'Trash jobs?' : 'Trash job?'}\n description={\n deleteJobs.length > 1\n ? 'Are you sure want to trash these jobs?'\n : 'Are you sure want to trash this job?'\n }\n buttonCallback={() => {\n setTrashAlertOpen(false);\n handleTrashJobs(deleteJobs);\n setDeleteJobs([]);\n }}\n callbackLoading={false}\n buttonText=\"Trash\"\n url=\"\"\n />\n </Paper>\n </Box>\n );\n}\n\nexport default memo(CurrentJobs);\n","import React from 'react';\nimport { Box, TableHead, TableRow, TableCell, Checkbox, TableSortLabel } from '@mui/material';\nimport { TableHeader } from '../types';\nimport { visuallyHidden } from '@mui/utils';\nimport { classes } from './useStyles';\n\nexport default function CurrentJobsTableHeader(props: TableHeader) {\n const {\n onSelectAllClick,\n order,\n orderBy,\n numSelected,\n rowCount,\n pinnedCount,\n onRequestSort,\n sortableColumns,\n handleScrollableEnter,\n handleScrollableExit,\n hovered,\n actionCellRef,\n titleCellRef,\n jobStatusFeature,\n userPermissions,\n isDashboard\n } = props;\n const createSortHandler = (property: string) => (event: React.MouseEvent) => {\n onRequestSort(event, property);\n };\n\n const tableHeadingAlignment = (name: string) => {\n switch (name) {\n case 'applications_count':\n return 'right';\n case 'state':\n return 'center';\n case 'status':\n return 'left';\n default:\n return 'left';\n }\n };\n\n const tableHeadingWidth = (name: string) => {\n switch (name) {\n case 'published_at':\n return '115px';\n case 'expires_at':\n return '115px';\n case 'created_at':\n return '115px';\n case 'title':\n return '200px';\n case 'applications_count':\n return '120px';\n default:\n return '150px';\n }\n };\n\n const tableHeadingTransform = (name: string) => {\n switch (name) {\n case 'state':\n return 'translateX(18px)';\n case 'status':\n return 'translateX(12px)';\n default:\n return '';\n }\n };\n\n return (\n <TableHead>\n <TableRow id=\"table-header\" sx={classes.tableHeaderRow}>\n <TableCell\n padding=\"checkbox\"\n key=\"checkbox\"\n sx={{\n position: 'sticky',\n left: 0,\n width: '60px !important',\n maxWidth: '60px',\n background: 'white',\n zIndex: '4'\n }}\n >\n <Checkbox\n id=\"select-all-checkbox\"\n data-testid=\"select-all-checkbox-[CurrentJobsTableHeader]\"\n sx={{\n color: '#aaa !important',\n '&.Mui-checked': {\n color: '#15C7C0 !important'\n }\n }}\n indeterminate={numSelected > 0 && numSelected < rowCount + pinnedCount}\n checked={rowCount > 0 && numSelected === rowCount + pinnedCount}\n onChange={onSelectAllClick}\n inputProps={{\n 'aria-label': 'select all jobs'\n }}\n />\n </TableCell>\n <TableCell\n sx={{\n position: 'sticky',\n left: '60px',\n width: '50px !important',\n maxWidth: '50px',\n background: 'white',\n zIndex: '4'\n }}\n ></TableCell>\n {sortableColumns.map(\n (headCell, i) =>\n headCell.enabled &&\n !(!jobStatusFeature && headCell.id === 'status') &&\n (headCell.id === 'recruitment_ad_user'\n ? userPermissions?.recruitment_team_enabled\n : true) &&\n (headCell.id === 'entity' ? userPermissions?.Jobs?.['Show Job Sub-Entity'] : true) && (\n <TableCell\n key={headCell.id}\n align={'left'}\n padding={'normal'}\n id={`${headCell.id}-header`}\n ref={headCell.id === 'title' ? titleCellRef : null}\n sortDirection={orderBy === headCell.id ? (order as 'asc' | 'desc') : false}\n onMouseEnter={\n headCell.id !== 'title' && headCell.id !== 'reference'\n ? () => handleScrollableEnter()\n : null\n }\n onMouseLeave={\n headCell.id !== 'title' && headCell.id !== 'reference'\n ? () => handleScrollableExit()\n : null\n }\n sx={{\n ...(i === 0\n ? {\n position: 'sticky',\n left: '110px',\n maxWidth: '96px',\n width: '96px',\n background: 'white',\n zIndex: '3'\n }\n : {\n position: i === 1 ? 'sticky' : 'relative',\n left: i === 1 ? '206px' : 'auto',\n minWidth: tableHeadingWidth(headCell.id),\n background: 'white',\n zIndex: i === 1 ? '2' : headCell.id === 'applications_count' ? '1' : '0',\n textAlign: tableHeadingAlignment(headCell.id),\n transform: tableHeadingTransform(headCell.id),\n paddingLeft: headCell.id === 'state' ? '35px' : '',\n '& span': (headCell.id === 'status' || headCell.id === 'notes') && {\n '&:hover': {\n color: '#084d6d !important',\n cursor: 'default'\n }\n }\n }),\n ...(headCell.id === 'title'\n ? {\n ...classes.titleHeaderCell,\n ...(hovered ? classes.cellAnimate : {})\n }\n : {})\n }}\n >\n <TableSortLabel\n id={`${headCell.id}-sort-label`}\n data-testid={`${headCell.id}-sort-label`}\n active={orderBy === headCell.id}\n direction={orderBy === headCell.id ? (order as 'asc' | 'desc') : 'asc'}\n onClick={\n headCell.id !== 'status' && headCell.id !== 'notes'\n ? createSortHandler(headCell.id)\n : null\n }\n hideSortIcon={headCell.id === 'status' || headCell.id === 'notes'}\n >\n {headCell.label}\n {headCell.id !== 'status' &&\n headCell.id !== 'notes' &&\n orderBy === headCell.id ? (\n <Box component=\"span\" sx={visuallyHidden}>\n {order === 'desc' ? 'sorted descending' : 'sorted ascending'}\n </Box>\n ) : null}\n </TableSortLabel>\n </TableCell>\n )\n )}\n <TableCell\n padding=\"checkbox\"\n key=\"actions\"\n ref={actionCellRef}\n sx={{\n ...classes.actionsHeaderCell,\n ...(hovered ? classes.cellAnimate : {}),\n ...(isDashboard && {\n minWidth: '140px'\n })\n }}\n />\n </TableRow>\n </TableHead>\n );\n}\n","import React, { useCallback } from 'react';\nimport { Box, Checkbox, CircularProgress, TableCell, TableRow, Tooltip } from '@mui/material';\nimport PushPinIcon from '@mui/icons-material/PushPin';\nimport NoteAddIcon from '@mui/icons-material/NoteAdd';\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\nimport IconButton from '@mui/material/IconButton';\nimport moment from 'moment-timezone';\nimport { classes } from './useStyles';\nimport { ICurrentJobsTableRowProps, IJob } from '../types';\nimport NotesWithSubjectLine from '../../Components/GenericTable/TableCells/NotesWithSubjectLine';\nimport { SortableColumnId } from '../../Job/types';\n\nexport default function CurrentJobsTableRow({\n jobs,\n userPermissions,\n BASE_URL,\n isPinning,\n sortableColumns,\n tempState,\n stateIsSending,\n stateError,\n tempStatus,\n statusIsSending,\n statusDropdownRef,\n noteRefs,\n hovered,\n isSelected,\n showMore,\n handleShowMore,\n handleClick,\n handlePin,\n handleScrollableEnter,\n handleScrollableExit,\n handleStateDropdown,\n showDropdown,\n handleStatusDropdown,\n handleOpenNote,\n setActionsAnchorEl,\n setSelectedJob,\n showPinnedBorder,\n isPinnedSection,\n jobStatusFeature,\n isDashboard,\n userTimezone\n}: ICurrentJobsTableRowProps) {\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const renderTableCell = useCallback(\n (column, job, publishedAt, createdAt, expiresAt, notes, expiryDateColor, labelId, index) => {\n switch (column.id) {\n case 'reference':\n return (\n <TableCell\n key={job.reference + column.id}\n component=\"th\"\n id={labelId}\n data-testid={`reference-cell-${index}-[CurrentJobsTableRow]`}\n className=\"reference-cell\"\n scope=\"row\"\n sx={{\n position: 'sticky',\n left: '110px',\n background: 'white',\n paddingRight: '8px !important',\n fontSize: '14px',\n fontFamily: 'Source Sans Pro',\n zIndex: '3',\n '& a': {\n wordBreak: 'break-word',\n color: '#000000'\n },\n '& a:hover': {\n textDecoration: 'none'\n }\n }}\n >\n <a\n href={`${BASE_URL}${job.job_link || '/admin/jobs/' + job.id}`}\n className=\"job-reference-link\"\n data-testid={`job-reference-link-${index}-[CurrentJobsTableRow]`}\n >\n {job.reference ? job.reference : '-'}\n </a>\n </TableCell>\n );\n case 'title':\n return (\n <TableCell\n key={job.reference + column.id}\n component=\"th\"\n id={labelId}\n scope=\"row\"\n className=\"title-cell\"\n data-testid={`title-cell-${index}-[CurrentJobsTableRow]`}\n sx={{ ...classes.titleCell, ...(hovered ? classes.cellAnimate : {}) }}\n >\n <a\n href={`${BASE_URL}${job.job_link || '/admin/jobs/' + job.id}`}\n className=\"job-title-link\"\n data-testid=\"job-title-link\"\n >\n {job.title ? job.title : '-'}\n </a>\n </TableCell>\n );\n case 'published_at':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{\n paddingRight: '8px !important',\n width: '120px !important',\n lineHeight: '1.22'\n }}\n align=\"left\"\n className=\"published-cell\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job.published_at ? publishedAt : '-'}\n </TableCell>\n );\n case 'created_at':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{\n paddingRight: '8px !important',\n width: '120px !important',\n lineHeight: '1.22'\n }}\n align=\"left\"\n className=\"created-cell\"\n data-testid={`created-cell-${index}-[CurrentJobsTableRow]`}\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job.created_at ? createdAt : '-'}\n </TableCell>\n );\n case 'expires_at':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{\n paddingRight: '8px !important',\n width: '120px !important',\n lineHeight: '1.22',\n color: expiryDateColor(job.expires_at)\n }}\n align=\"left\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job.expires_at ? expiresAt : '-'}\n </TableCell>\n );\n case 'applications_count':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{\n paddingRight: '43px !important',\n '& a': {\n wordBreak: 'break-word',\n color: '#000000'\n },\n '& a:hover': {\n textDecoration: 'none'\n }\n }}\n align=\"right\"\n className=\"applications-cell\"\n data-testid={`applications-cell-${index}-[CurrentJobsTableRow]`}\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n <a\n href={`${BASE_URL}/admin/jobs/${job.id}?applications=true`}\n className=\"application-count-link\"\n >\n {job.applications_count} ({job.open_applications_count})\n </a>\n </TableCell>\n );\n case 'state':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{ paddingRight: '8px !important' }}\n className={'state-cell'}\n align=\"center\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {userPermissions?.Jobs?.['Create / Edit Jobs'] && job.job_states[1] ? (\n <Tooltip\n open={Boolean(stateError.id === job.id)}\n placement=\"top\"\n sx={classes.stateErrorTooltip}\n title={stateError.message ? stateError.message : ''}\n arrow\n >\n <Box\n className=\"state-dropdown\"\n sx={{\n ...classes.stateColumn,\n ...classes[\n tempState[job.id as keyof typeof tempState]?.label.toLowerCase() ||\n job.state\n ],\n cursor: 'pointer'\n }}\n onClick={(e) =>\n handleStateDropdown(\n e,\n job.id,\n tempState[job.id as keyof typeof tempState]?.list || job.job_states\n )\n }\n >\n {stateIsSending === job.id ? (\n <CircularProgress size={18} sx={classes.stateLoader} />\n ) : (\n <>\n {tempState[job.id as keyof typeof tempState]?.label || job.state}\n ▾\n </>\n )}\n </Box>\n </Tooltip>\n ) : (\n <Box sx={{ ...classes.stateColumn, ...classes[job.state] }}>{job.state}</Box>\n )}\n </TableCell>\n );\n case 'status':\n if (!jobStatusFeature) return null;\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{\n paddingRight: '8px !important'\n }}\n className={'status-cell'}\n align=\"center\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job.job_statuses ? (\n userPermissions?.Jobs?.['Create / Edit Jobs'] &&\n showDropdown(\n tempStatus[job.id as keyof typeof tempStatus]?.list || job.job_statuses\n ) ? (\n <Box\n className={`status-dropdown`}\n sx={{ ...classes.statusDropdown, ...classes.statusClamp }}\n onClick={(e) =>\n handleStatusDropdown(\n e,\n job.id,\n tempStatus[job.id as keyof typeof tempStatus]?.list || job.job_statuses\n )\n }\n ref={(e) => (statusDropdownRef.current[index] = e)}\n >\n <>\n <Box\n className=\"status-dropdown-full\"\n sx={{\n '&::after': {\n display: 'block',\n top:\n statusDropdownRef.current[index] &&\n statusDropdownRef.current[index].clientHeight > 45\n ? '25.5px'\n : '50%'\n }\n }}\n >\n {statusIsSending !== job.id &&\n (tempStatus[job.id as keyof typeof tempStatus]?.label ||\n (job.job_statuses?.length > 0 ? job.job_statuses[0].label : ''))}\n </Box>\n {statusIsSending === job.id ? (\n <CircularProgress size={18} sx={classes.statusLoader} />\n ) : (\n <>\n {tempStatus[job.id as keyof typeof tempStatus]?.label ||\n (job.job_statuses?.length > 0 ? job.job_statuses[0].label : '')}\n </>\n )}\n </>\n </Box>\n ) : (\n <Box\n sx={{\n ...classes.statusClamp,\n ...classes.noDropdown,\n '& .status-dropdown-full': {\n ...classes.statusClamp['& .status-dropdown-full'],\n ...classes.noDropdown['& .status-dropdown-full']\n }\n }}\n >\n <Box className={'status-dropdown-full'} sx={classes.noDropdown}>\n {statusIsSending !== job.id &&\n (tempStatus[job.id as keyof typeof tempStatus]?.label ||\n (job.job_statuses?.length > 0 ? job.job_statuses[0].label : ''))}\n </Box>\n {tempStatus[job.id as keyof typeof tempStatus]?.label ||\n (job.job_statuses?.length > 0 ? job.job_statuses[0]?.label : '')}\n </Box>\n )\n ) : (\n <Box sx={classes.noStatuses}>-</Box>\n )}\n </TableCell>\n );\n case 'entity':\n return userPermissions?.Jobs?.['Show Job Sub-Entity'] ? (\n <TableCell\n key={job.reference + column.id}\n sx={{\n paddingRight: '8px !important',\n '& a': {\n wordBreak: 'break-word',\n color: '#000000'\n },\n '& a:hover': {\n textDecoration: 'none'\n }\n }}\n align=\"left\"\n className=\"entity-cell\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n <a href={`${BASE_URL}${job.entity_link}`} className=\"job-entity-link\">\n {job.entity ? job.entity : '-'}\n </a>\n </TableCell>\n ) : null;\n case 'location':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{ paddingRight: '8px !important' }}\n align=\"left\"\n className=\"location-cell\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job.location ? job.location : '-'}\n </TableCell>\n );\n case 'assigned_user':\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{ paddingRight: '8px !important' }}\n align=\"left\"\n className=\"assigned-user-cell\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job?.assigned_user ? job.assigned_user : '-'}\n </TableCell>\n );\n case 'recruitment_ad_user':\n return userPermissions?.recruitment_team_enabled ? (\n <TableCell\n key={job.reference + column.id}\n sx={{ paddingRight: '8px !important' }}\n align=\"left\"\n className=\"rm-user-cell\"\n onMouseEnter={() => handleScrollableEnter()}\n onMouseLeave={() => handleScrollableExit()}\n >\n {job?.recruitment_ad_user ? job.recruitment_ad_user : '-'}\n </TableCell>\n ) : null;\n case SortableColumnId.NOTES:\n return (\n <TableCell\n key={job.reference + column.id}\n sx={{ minWidth: '300px', paddingRight: '8px !important' }}\n align=\"left\"\n className=\"note-cell\"\n onMouseEnter={handleScrollableEnter}\n onMouseLeave={handleScrollableExit}\n id={`notes-${labelId}`}\n >\n {notes.length > 0 ? <NotesWithSubjectLine notes={notes} /> : '-'}\n </TableCell>\n );\n default:\n return <TableCell></TableCell>;\n }\n },\n [\n BASE_URL,\n classes,\n handleScrollableEnter,\n handleScrollableExit,\n handleShowMore,\n handleStateDropdown,\n handleStatusDropdown,\n hovered,\n noteRefs,\n showDropdown,\n showMore,\n stateError.id,\n stateError.message,\n stateIsSending,\n statusDropdownRef,\n statusIsSending,\n tempState,\n tempStatus,\n userPermissions?.Jobs\n ]\n );\n return jobs.map((job: IJob, index: number) => {\n const jobTimeZone = job.time_zone ?? userTimezone ?? timeZoneString;\n const isItemSelected = isSelected(job.id);\n const labelId = `enhanced-table-checkbox-${index}`;\n const formatDate = (date: string | undefined, timeZone: string, jobId: number) =>\n date &&\n moment\n .tz(date, timeZone)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${jobId}-${line}`}>{line}</div>);\n\n const publishedAt = formatDate(job.published_at, jobTimeZone, job.id);\n const createdAt = formatDate(job.created_at, jobTimeZone, job.id);\n const expiresAt = formatDate(job.expires_at, jobTimeZone, job.id);\n const notes = job.job_notes ? job.job_notes : [];\n const expiryDateColor = (date: string) => {\n const dayToExpired = (new Date(date).getTime() - Date.now()) / (1000 * 60 * 60 * 24);\n if (dayToExpired < 0) {\n return '#E37D7A';\n } else if (dayToExpired < 1) {\n return '#E6A052';\n } else {\n return '#333333';\n }\n };\n return (\n <TableRow\n hover\n role=\"checkbox\"\n aria-checked={isItemSelected}\n tabIndex={-1}\n key={job.id}\n selected={isItemSelected}\n sx={\n showPinnedBorder && index === 0\n ? {\n '& td, th ': {\n borderColor: 'rgba(230, 160, 82, 0.5)'\n }\n }\n : {}\n }\n >\n <TableCell\n padding=\"checkbox\"\n sx={{\n position: 'sticky',\n left: 0,\n width: '60px !important',\n maxWidth: '60px',\n background: 'white',\n zIndex: '3'\n }}\n >\n <Checkbox\n className=\"individual-checkbox\"\n data-testid={`individual-checkbox-${index}-[CurrentJobsTableRow]`}\n onClick={(event) => handleClick(event, job.id)}\n sx={{\n color: '#aaa !important',\n '&.Mui-checked': {\n color: '#15C7C0 !important'\n }\n }}\n checked={isItemSelected}\n inputProps={{\n 'aria-labelledby': labelId\n }}\n />\n </TableCell>\n <TableCell\n sx={{\n position: 'sticky',\n left: '60px',\n width: '50px !important',\n maxWidth: '50px',\n background: 'white',\n zIndex: '3'\n }}\n >\n {isPinning === job.id ? (\n <CircularProgress size={16} sx={{ color: '#E6A052' }} />\n ) : (\n <PushPinIcon\n onClick={(event) => handlePin(event, job.id, job.pinned_by_user)}\n sx={\n job.pinned_by_user\n ? {\n color: '#E6A052',\n cursor: 'pointer'\n }\n : {\n color: '#CCCCCC',\n cursor: 'pointer'\n }\n }\n />\n )}\n </TableCell>\n {sortableColumns.map((column) => {\n if (column.enabled) {\n return renderTableCell(\n column,\n job,\n publishedAt,\n createdAt,\n expiresAt,\n notes,\n expiryDateColor,\n labelId,\n index\n );\n }\n })}\n <TableCell\n align=\"right\"\n sx={{\n ...(isDashboard && {\n minWidth: '140px',\n right: '-70px !important'\n }),\n ...classes.actionsCell,\n ...(hovered ? classes.cellAnimate : {})\n }}\n >\n <Box\n sx={{\n display: 'flex',\n '& svg': {\n fontSize: '20px !important'\n },\n justifyContent: 'end'\n }}\n >\n {userPermissions?.['Job Options']?.['View Job Notes'] && (\n <IconButton\n className=\"add-note-button\"\n onClick={(e) => handleOpenNote(e, job.id, isPinnedSection)}\n >\n <NoteAddIcon sx={classes.iconGray} />\n </IconButton>\n )}\n {(userPermissions?.Jobs?.['Create / Edit Jobs'] ||\n userPermissions?.Jobs?.['Archive Jobs'] ||\n userPermissions?.Trash?.['Trash Jobs']) && (\n <IconButton\n className=\"job-actions-button\"\n data-testid={`job-actions-button-${index}-[CurrentJobsTableRow]`}\n onClick={(e) => {\n setActionsAnchorEl(e.currentTarget);\n setSelectedJob({ id: job.id, states: null, statuses: null });\n }}\n >\n <MoreVertIcon sx={classes.iconGray} />\n </IconButton>\n )}\n </Box>\n </TableCell>\n </TableRow>\n );\n });\n}\n","import React from 'react'\nimport Box from '@mui/material/Box'\n\nfunction NoJobs({ searchOrFilterApplied }: { searchOrFilterApplied: boolean }) {\n return (\n <Box \n sx={{\n paddingTop: '90px',\n marginBottom: '90px',\n borderTop: '1px solid #efefef',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n width: '100%',\n }}\n >\n <svg id=\"Group_382\" data-name=\"Group 382\" xmlns=\"http://www.w3.org/2000/svg\" width=\"108.165\" height=\"114.658\" viewBox=\"0 0 108.165 114.658\">\n <defs>\n <clipPath id=\"clip-path\">\n <rect id=\"Rectangle_714\" data-name=\"Rectangle 714\" width=\"108.165\" height=\"114.658\" fill=\"none\"/>\n </clipPath>\n </defs>\n <g id=\"Group_381\" data-name=\"Group 381\" clipPath=\"url(#clip-path)\">\n <path id=\"Path_196\" data-name=\"Path 196\" d=\"M134.714,629.344c-1.242-.28-1.7-.609-1.105-1,4.134-2.7,22.743-2.615,31.769-2.612,11.354,0,23.167-.067,33.394.589,4.28.275,13.976.528,15.639,1.44,4.362,2.4-26.574,3.057-31.581,3.089-8.347.055-41.023.086-48.116-1.51\" transform=\"translate(-110.912 -520.443)\" fill=\"#e3e3e3\"/>\n <path id=\"Path_197\" data-name=\"Path 197\" d=\"M204.486,22.764l0,83.721a3.7,3.7,0,0,1-3.7,3.69l-75.431,0a3.7,3.7,0,0,1-3.7-3.69V93.434l.062-7.191,0-79.5a3.7,3.7,0,0,1,3.7-3.69l59.357,0,19.713,19.7Z\" transform=\"translate(-101.179 -2.535)\" fill=\"#efefef\"/>\n <path id=\"Path_198\" data-name=\"Path 198\" d=\"M121.65,99.758l.06-7.09,0-78.386a3.6,3.6,0,0,1,3.555-3.638l57,0,.822.844V26.345a3.928,3.928,0,0,0,3.928,3.928h12.646a2.984,2.984,0,0,1,2.983,2.984l0,79.367a3.6,3.6,0,0,1-3.555,3.638l-73.885,0a3.6,3.6,0,0,1-3.555-3.638Z\" transform=\"translate(-101.18 -8.853)\" fill=\"#fff\"/>\n <path id=\"Path_199\" data-name=\"Path 199\" d=\"M201.824,20.042q0,4.6,0,9.207,0,10.836,0,21.673,0,12.71,0,25.421v20.5q0,2.812,0,5.624c0,.389,0,.778,0,1.167a3.357,3.357,0,0,1-3.147,3.518c-3.416.119-6.858,0-10.275,0H124.728c-.446,0-.892,0-1.338,0a3.544,3.544,0,0,1-3.586-3.476c-.1-3.164,0-6.35,0-9.516,0-3.937.062-7.873.062-11.81v-14.6q0-12.161,0-24.321,0-12.113,0-24.226V4.891c0-.312-.008-.625,0-.937A3.34,3.34,0,0,1,123.1.54c1.454-.037,2.915,0,4.369,0h52.986a12.3,12.3,0,0,0,1.711,0c.285-.042.146.116-.02-.086.116.141.265.264.393.393l15.127,15.115,3.012,3.009.85.849c.126.126.3.415.294.22.008.376.824.219.817-.085-.008-.4-.9-1.008-1.151-1.258L198.32,15.53l-8.894-8.887L183.189.411a.943.943,0,0,0-.719-.384c-.566-.032-1.144,0-1.711,0H136.418c-4.362,0-8.727-.059-13.089,0a4.19,4.19,0,0,0-4.277,3.99c-.006.237,0,.476,0,.713q0,2.557,0,5.114,0,10.229,0,20.458,0,12.907,0,25.814,0,10.48,0,20.961c0,3.32,0,6.638-.031,9.958q-.035,3.993-.032,7.984,0,3.107,0,6.214a12.781,12.781,0,0,0,.177,3.719,4.027,4.027,0,0,0,3.879,2.715c.411.008.822,0,1.233,0h71.5a26.657,26.657,0,0,0,3.169-.031,4.148,4.148,0,0,0,3.694-3.995c.008-.319,0-.638,0-.956q0-7.164,0-14.329,0-12.135,0-24.271,0-12.531,0-25.062,0-8.352,0-16.7V19.956c0-.375-.817-.221-.817.085\" transform=\"translate(-98.926 0)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_200\" data-name=\"Path 200\" d=\"M496.544,1.693V17.561a3.886,3.886,0,0,0,3.886,3.886H516.3Z\" transform=\"translate(-412.991 -1.408)\" fill=\"#fff\"/>\n <path id=\"Path_201\" data-name=\"Path 201\" d=\"M494.13.913q0,7.546,0,15.092a4.854,4.854,0,0,0,.789,3.122,4.23,4.23,0,0,0,3.536,1.6c2.658.01,5.316,0,7.973,0h7.6c.082,0,.812-.141.646-.307L497.366,3.113,494.919.665c-.149-.149-.893.15-.765.278L511.459,18.25l2.448,2.448.646-.307H499.666a5.014,5.014,0,0,1-3.034-.636,4.1,4.1,0,0,1-1.69-3.623q0-4,0-8,0-3.716,0-7.431c0-.134-.813-.018-.813.218\" transform=\"translate(-410.983 -0.519)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_202\" data-name=\"Path 202\" d=\"M279.563,168.983h24.813c.225,0,.711-.081.8-.332s-.078-.357-.33-.357H280.038c-.225,0-.711.081-.8.333s.078.357.33.357\" transform=\"translate(-232.226 -139.975)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_203\" data-name=\"Path 203\" d=\"M181.925,230.691h54.264c2.484,0,5.027.158,7.507,0,.036,0,.073,0,.109,0,.308,0,.862-.465.315-.465H189.857c-2.484,0-5.027-.158-7.507,0-.036,0-.073,0-.109,0-.308,0-.862.465-.315.465\" transform=\"translate(-151.121 -191.428)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_204\" data-name=\"Path 204\" d=\"M180.51,255.164h59.8a22.375,22.375,0,0,0,2.462,0,.979.979,0,0,1,.109,0c.458,0,.629-.579.076-.579h-59.8a22.413,22.413,0,0,0-2.462,0,.979.979,0,0,1-.109,0c-.458,0-.629.579-.076.579\" transform=\"translate(-149.848 -211.713)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_205\" data-name=\"Path 205\" d=\"M180.395,278.441q14.835,0,29.671,0c2.191,0,4.355,0,6.539-.176,1.71-.136,5.275-.265,5.174,2.353-.086,2.239-3.7,2.588-5.33,2.948a19.24,19.24,0,0,0-5.6,1.853,3.492,3.492,0,0,0-1.753,1.872,1.694,1.694,0,0,0,.781,2.035,9.455,9.455,0,0,0,3.338.776,18.529,18.529,0,0,0,3.823.037c.231-.021.877-.4.344-.356a17.65,17.65,0,0,1-3.647-.036c-1.032-.122-3.21-.264-3.753-1.339-1.176-2.332,2.782-3.609,4.3-4.024a55.546,55.546,0,0,0,5.982-1.533c1.245-.5,2.769-1.562,2.228-3.117-.559-1.607-2.408-1.906-3.881-1.9-1.015,0-2.023.12-3.034.2-1.182.088-2.368.061-3.552.06H180.739c-.239,0-.882.356-.344.356\" transform=\"translate(-149.866 -231.08)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_206\" data-name=\"Path 206\" d=\"M423.136,352.474l-6.861-4.787,1.493,8.38Z\" transform=\"translate(-346.228 -289.182)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_207\" data-name=\"Path 207\" d=\"M425.146,379.726l30.565,46.348c.272.413.621.662.779.556l4.8-3.21c.158-.106.066-.526-.206-.94l-30.565-46.348Z\" transform=\"translate(-353.607 -312.842)\" fill=\"#efefef\"/>\n <path id=\"Path_208\" data-name=\"Path 208\" d=\"M417.1,349.19l.644,3.464,2.3-1.607Z\" transform=\"translate(-346.912 -290.433)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_209\" data-name=\"Path 209\" d=\"M588.022,625.99l5.162-3.427a.089.089,0,0,1,.124.022l3.633,5.549a.09.09,0,0,1-.029.123l-5.162,3.427a.089.089,0,0,1-.124-.022l-3.633-5.549a.09.09,0,0,1,.029-.123\" transform=\"translate(-489.041 -517.792)\" fill=\"#efefef\"/>\n <path id=\"Path_210\" data-name=\"Path 210\" d=\"M468.874,430.648,442.77,391l-1.38.924,26.1,39.65Z\" transform=\"translate(-367.118 -325.206)\" fill=\"#efefef\"/>\n <path id=\"Path_211\" data-name=\"Path 211\" d=\"M452.219,398.079l-3.954-6-9.079-13.784-10.029-15.227-6.805-10.332a8,8,0,0,0-.981-1.44,22.313,22.313,0,0,0-2.654-1.834l-3.443-2.379-.637-.44c-.144-.1-.83.007-.787.254l1.323,7.715a5.057,5.057,0,0,0,1.013,1.958l7.993,12.136,11.434,17.359,8.821,13.392c.526.8,1.016,1.645,1.589,2.412.654.877,1.365.267,2.051-.191l3.826-2.556c.444-.3.635-.453.321-1.04-.121-.225-.9.058-.813.218.179.334.236.408.05.634a3.105,3.105,0,0,1-.645.431l-2.005,1.34-1.73,1.156c-.046.031-.31.258-.363.243.641.185.143-.389.12-.456a3.8,3.8,0,0,0-.467-.709l-1.076-1.634-8.47-12.859-11.144-16.919L417.429,357a13.226,13.226,0,0,1-1.346-2.044,3.935,3.935,0,0,1-.131-.759l-.343-2-.8-4.664-.148-.861-.787.254,5.782,4a4.136,4.136,0,0,1,1.506,1.453l6.148,9.333,9.869,14.984,9.369,14.223,3.235,4.912a15.635,15.635,0,0,0,1.553,2.358.734.734,0,0,1,.071.108c.146.221.9-.083.813-.218\" transform=\"translate(-344.209 -288.28)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_212\" data-name=\"Path 212\" d=\"M423.33,378.65l5.369-3.593c.457-.306-.214-.562-.533-.348L422.8,378.3c-.457.306.214.562.533.349\" transform=\"translate(-351.525 -311.592)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_213\" data-name=\"Path 213\" d=\"M587.126,625.876l4.861-3.253c.457-.306-.229-.492-.519-.3l-4.861,3.254c-.457.306.229.492.519.3\" transform=\"translate(-487.772 -517.541)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_214\" data-name=\"Path 214\" d=\"M436.877,395.295l8.871,13.474,14.017,21.29,3.217,4.886c.127.194.873-.127.813-.218l-8.871-13.474-14.017-21.29-3.217-4.886c-.128-.194-.873.127-.813.218\" transform=\"translate(-363.362 -328.547)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_215\" data-name=\"Path 215\" d=\"M447.234,388.107l8.871,13.474,14.017,21.29,3.217,4.886c.149.226.938-.04.755-.318l-8.871-13.474-14.017-21.29-3.217-4.886c-.149-.226-.938.04-.755.318\" transform=\"translate(-371.956 -322.465)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_216\" data-name=\"Path 216\" d=\"M.581,634.245a1.191,1.191,0,0,1-.436-1.558c2.177-4.016,11.268-3.738,15.68-3.658,5.549.1,11.328.092,16.288,1.163,2.076.448,6.8.909,7.56,2.292,1.573,2.866-6.109,4.023-7.521,4.281a69.789,69.789,0,0,1-22.984.186c-1.113-.17-6.749-1.107-8.588-2.706\" transform=\"translate(0 -523.153)\" fill=\"#e3e3e3\"/>\n <path id=\"Path_217\" data-name=\"Path 217\" d=\"M46.663,419.842v-7.071l-35.85,0-.005,38.469h0v.01h0c.044,1.374,8.05,4.071,17.923,4.072s17.879-2.694,17.923-4.067h0v-6.529a12.444,12.444,0,0,0,0-24.881m0,21.235,0-17.589a8.8,8.8,0,0,1,0,17.589\" transform=\"translate(-8.99 -343.31)\" fill=\"#eaeaea\"/>\n <path id=\"Path_218\" data-name=\"Path 218\" d=\"M45.062,418.787q0-3.536,0-7.071c0-.086-.194-.082-.238-.082l-12.137,0-19.259,0H8.975c-.157,0-.575.086-.575.3q0,6.593,0,13.187,0,10.4,0,20.8c0,1.432,0,3.219,0,4.5,0,.086.194.082.238.082h0L8.4,450.41c.042.447.58.762.92.966a12.714,12.714,0,0,0,2.5,1.078,41.662,41.662,0,0,0,8.827,1.8,50.4,50.4,0,0,0,20.346-1.692,15.055,15.055,0,0,0,2.907-1.187c.4-.227,1.1-.6,1.154-1.129l-.572.254h0c.157,0,.575-.086.575-.3q0-3.264,0-6.529l-.575.3a13.172,13.172,0,0,0,11.771-7.914,12.637,12.637,0,0,0-3.334-14.241,12.794,12.794,0,0,0-8.007-3.106c-.2-.007-.934.363-.515.377a12.343,12.343,0,0,1,8.25,21.2,11.759,11.759,0,0,1-7.827,3.3c-.157.005-.575.083-.575.3v6.529l.575-.3h0c-.112,0-.555.082-.572.254-.041.434-.6.714-.934.9a13.929,13.929,0,0,1-2.59,1.035,42.339,42.339,0,0,1-8.345,1.606A49.6,49.6,0,0,1,13.2,452.339a15.931,15.931,0,0,1-2.842-1.1c-.381-.2-1.106-.546-1.153-1.048-.008-.088-.186-.082-.238-.082h0l.238.082c0-4.027,0-8.54,0-12.719q0-10.467,0-20.933,0-2.414,0-4.829l-.575.3H20.775l19.259,0h4.454l-.238-.082q0,3.536,0,7.071c0,.181.813.05.813-.218\" transform=\"translate(-6.982 -342.365)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_219\" data-name=\"Path 219\" d=\"M222.266,493.029q0-7.678,0-15.356,0-1.116,0-2.233l-.664.3a8.773,8.773,0,0,1,8.333,8.126,8.508,8.508,0,0,1-7.91,9.083c-.251.012-.876.408-.337.383a9.51,9.51,0,0,0,8.323-5.482,8.957,8.957,0,0,0-2.227-10.231,9.147,9.147,0,0,0-5.668-2.256c-.174-.008-.664.05-.664.3q0,7.678,0,15.356,0,1.116,0,2.233c0,.181.813.05.813-.218\" transform=\"translate(-184.189 -395.372)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_220\" data-name=\"Path 220\" d=\"M46.689,399.01c0,1.379-8.025,2.493-17.925,2.489s-17.925-1.125-17.925-2.5,8.025-2.493,17.925-2.489,17.925,1.125,17.925,2.5\" transform=\"translate(-9.015 -329.786)\" fill=\"#fff\"/>\n <path id=\"Path_221\" data-name=\"Path 221\" d=\"M44.3,398.04c-.026.408-.613.58-.925.694a15.052,15.052,0,0,1-2.628.625,67.492,67.492,0,0,1-8.435.795,93.11,93.11,0,0,1-18.888-.761,18.814,18.814,0,0,1-2.773-.616c-.375-.121-1.136-.311-1.328-.714-.409-.857,2.31-1.254,2.747-1.34,5.983-1.185,12.319-1.169,18.389-.983a73.676,73.676,0,0,1,9.774.83,16.7,16.7,0,0,1,2.91.68c.365.131,1.123.357,1.154.84.014.216.831.06.813-.218-.068-1.052-2.635-1.371-3.343-1.513a59.927,59.927,0,0,0-8.861-.941c-3.871-.192-7.755-.2-11.627-.019a62.5,62.5,0,0,0-8.992.917,14.222,14.222,0,0,0-2.57.683c-.4.158-1.047.4-1.22.844-.386.978,1.856,1.413,2.4,1.546a47.5,47.5,0,0,0,8.369,1.064c3.828.238,7.672.281,11.505.156a67.8,67.8,0,0,0,10.414-.959,13.459,13.459,0,0,0,2.809-.763c.386-.166,1.085-.462,1.117-.964.019-.285-.793-.118-.808.118\" transform=\"translate(-7.03 -328.757)\" fill=\"#cfcfcf\"/>\n <path id=\"Path_224\" data-name=\"Path 224\" d=\"M131.02,301.791a3.235,3.235,0,0,0,1.146-1.139c1.413-2.786-1.813-5.721-3.223-7.74a4.951,4.951,0,0,1,3.227-7.917c-.4.688-.932,1.292-1.35,1.969a3.425,3.425,0,0,0-.605,2.259,4.8,4.8,0,0,0,1.5,2.347,12.332,12.332,0,0,1,1.806,2.511,8.137,8.137,0,0,1,.961,4.36c-.124,1.464-1.5,4.387-3.458,3.35\" transform=\"translate(-106.408 -237.039)\" fill=\"#fff\"/>\n </g>\n </svg>\n <Box\n id=\"no-jobs-message\"\n sx={{\n fontFamily: 'Source Sans Pro',\n fontSize: '18px',\n fontWeight: 'bold',\n color: '#DDDDDD',\n marginTop: '32px',\n }}\n >\n {searchOrFilterApplied ? 'No jobs match your search or filter criteria' : 'You have no current jobs'}\n </Box>\n </Box>\n )\n}\n\nexport default NoJobs","import React, { useEffect, useState } from 'react';\nimport Popover from '@mui/material/Popover';\nimport Box from '@mui/material/Box';\nimport Button from '@mui/material/Button';\nimport TextField from '@mui/material/TextField';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { INoteProps } from '../types';\nimport Api from '../API';\nimport { classes } from './useStyles';\nimport { emojiInString } from '../../utils/emoji-checker';\nimport { NOTES_ERROR_MESSAGE } from '../../constants';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport { Stack } from '@mui/material';\nimport { classes as styles } from '../../Job/Applications/styles';\n\nconst NotesPopover = ({\n setJobs,\n anchorEl,\n handleCloseNote,\n selectedJobId,\n setSnackbarState\n}: INoteProps) => {\n const [editedNote, setEditedNote] = useState('');\n const [savingNote, setSavingNote] = useState(false);\n const [noteError, setNoteError] = useState('');\n\n async function saveNote() {\n if (emojiInString(editedNote)) {\n setNoteError(NOTES_ERROR_MESSAGE);\n return;\n }\n try {\n setSavingNote(true);\n const { res } = await Api.postJobNote(selectedJobId, {\n job_note: { body: editedNote }\n });\n if (res.body) {\n setJobs((prevJobs) => {\n const newJobs = [...prevJobs];\n const jobIndex = newJobs.findIndex((job) => job.id === selectedJobId);\n newJobs[jobIndex].job_notes = [\n { body: res.body, noted_by: res.noted_by },\n ...newJobs[jobIndex].job_notes\n ];\n return newJobs;\n });\n setEditedNote('');\n handleCloseNote();\n }\n setNoteError('');\n } catch (error) {\n console.error(error);\n setSnackbarState({\n message: error.message,\n state: 'error'\n });\n } finally {\n setSavingNote(false);\n }\n }\n\n const closeNoteHandler = () => {\n setNoteError('');\n handleCloseNote();\n };\n\n useEffect(() => {\n if (!anchorEl) return;\n }, [anchorEl]);\n\n return (\n <Popover\n id={anchorEl ? 'edit-note-popover' : undefined}\n open={Boolean(anchorEl)}\n anchorEl={anchorEl}\n onClose={closeNoteHandler}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <Stack sx={styles.notesContainer} spacing={2}>\n <TextField\n id=\"note-input\"\n sx={classes.noteInput}\n label=\"Add Note\"\n multiline\n fullWidth\n maxRows={4}\n variant=\"outlined\"\n onChange={(e) => setEditedNote(e.target.value)}\n />\n {!!noteError && <Box sx={sharedClasses.errorText}>{noteError}</Box>}\n <Box id=\"notes-button-container\" sx={classes.notesButtonContainer}>\n <Button sx={classes.notesCancelButton} endIcon={<CloseIcon />} onClick={closeNoteHandler}>\n Cancel\n </Button>\n <Button\n sx={classes.notesEditSaveButton}\n endIcon={savingNote ? <CircularProgress size={16} /> : <DoneIcon />}\n onClick={() => {\n setNoteError('');\n saveNote();\n }}\n disabled={!editedNote || !!savingNote}\n >\n Save\n </Button>\n </Box>\n </Stack>\n </Popover>\n );\n};\n\nexport default NotesPopover;\n","import React from \"react\";\nimport Box from '@mui/material/Box';\nimport Skeleton from '@mui/material/Skeleton';\n\nexport default function TableSkeleton() {\n\n const boxStyle = {width: '100%', padding: '20px 0px', borderTop: '1px solid #eaeaea'};\n\n return (\n <Box\n sx={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n width: '100%',\n }}\n >\n <Box sx={boxStyle}>\n <Skeleton animation=\"wave\" width=\"100%\" height=\"40px\" />\n </Box>\n <Box sx={boxStyle}>\n <Skeleton animation=\"wave\" width=\"100%\" height=\"40px\" />\n </Box>\n <Box sx={boxStyle}>\n <Skeleton animation=\"wave\" width=\"100%\" height=\"40px\" />\n </Box>\n <Box sx={boxStyle}>\n <Skeleton animation=\"wave\" width=\"100%\" height=\"40px\" />\n </Box>\n <Box sx={boxStyle}>\n <Skeleton animation=\"wave\" width=\"100%\" height=\"40px\" />\n </Box>\n <Box sx={boxStyle}>\n <Skeleton animation=\"wave\" width=\"100%\" height=\"40px\" />\n </Box>\n </Box>\n )\n}","import React, { useEffect, useState, useCallback } from 'react';\nimport moment from 'moment';\nimport Box from '@mui/material/Box';\nimport Table from '@mui/material/Table';\nimport TableBody from '@mui/material/TableBody';\nimport TableCell from '@mui/material/TableCell';\nimport TableContainer from '@mui/material/TableContainer';\nimport TableHead from '@mui/material/TableHead';\nimport TableRow from '@mui/material/TableRow';\nimport Paper from '@mui/material/Paper';\nimport Skeleton from '@mui/material/Skeleton';\nimport DocTypeIcon from '../../../Components/Utilities/DocTypeIcon';\nimport { IJobAttachment } from '../../../Job/types';\nimport { classes } from './styles';\nimport Api from '../../../Job/API';\n\nexport default function Attachments({\n apiKey,\n jobId,\n}: {\n apiKey: string;\n jobId: number;\n}) {\n const [attachments, setAttachments] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n\n const fetchInitialAttachments = useCallback(async () => {\n setIsLoading(true);\n try {\n const response = await Api.getJobAttachments({ 'X-api-authenticate': apiKey }, jobId, {\n page: 1,\n limit: 50\n });\n setAttachments(response.data.job_attachments);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }, [apiKey, jobId]);\n\n useEffect(() => {\n fetchInitialAttachments();\n }, [fetchInitialAttachments]);\n\n return (\n <Box>\n <TableContainer sx={{ boxShadow: 'none' }} component={Paper}>\n <Table sx={classes.tableWrapper} aria-label=\"job attachments\">\n <TableHead>\n {!isLoading && attachments?.length > 0 &&\n <TableRow>\n <TableCell>File</TableCell>\n <TableCell sx={{paddingLeft: '8px'}}>Public link</TableCell>\n <TableCell>Attached by</TableCell>\n </TableRow>\n } \n </TableHead>\n <TableBody>\n {attachments &&\n !isLoading &&\n attachments.map((attachment: IJobAttachment) => (\n <TableRow key={attachment.id}>\n <TableCell>\n <Box sx={classes.fileIconContainer}>\n <Box sx={{paddingRight: '20px'}}>\n <Box sx={classes.fileIcon}>\n {DocTypeIcon(attachment.attached_file_name.split('.').pop())}\n </Box>\n </Box>\n <Box>\n <Box sx={classes.fileDate}>\n {moment(attachment.created_at).format('Do MMMM YYYY[,] h:mma')}\n </Box>\n <Box sx={classes.fileName}>{attachment.attached_file_name}</Box>\n </Box>\n </Box>\n </TableCell>\n <TableCell>\n <Box sx={classes.fileLinkContainer}>\n <a href={attachment.public_link} target=\"_blank\" rel=\"noopener noreferrer\">\n <Box>{attachment.public_link}</Box>\n </a>\n </Box>\n </TableCell>\n <TableCell sx={classes.fileAttachedBy}>{attachment.attached_by}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n {!isLoading && attachments?.length === 0 && (\n <Box sx={classes.noAttachments}>No attachments added</Box>\n )}\n {isLoading && (\n <>\n <Skeleton animation=\"wave\" height={60} />\n <Skeleton animation=\"wave\" height={60} />\n <Skeleton animation=\"wave\" height={60} />\n <Skeleton animation=\"wave\" height={60} />\n </>\n )}\n </TableContainer>\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction, useCallback, useEffect, useRef, useState } from 'react';\nimport {\n Autocomplete,\n Box,\n Button,\n CircularProgress,\n InputLabel,\n Modal,\n TextField\n} from '@mui/material';\nimport queryString from 'query-string';\nimport Api from '../API';\nimport { Virtualize } from '../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { DebouncedFormTextField } from '../../Components/CustomUIElements/FormTextField';\nimport FormRadioButtonGroup from '../../Components/CustomUIElements/FormRadioButtonGroup';\nimport FormCheckboxGroup from '../../Components/CustomUIElements/FormCheckboxGroup';\nimport { SingleDateTimePicker } from '../../Components/CustomUIElements/SingleDatePicker';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IJob } from '../../Job/types';\nimport Attachments from './Attachment/Attachments';\nimport QuestionFieldViewer from '../../Components/Utilities/QuestionFieldViewer';\nimport { createJobDefault, emojiRegex, newJobsConfig, resourceDefault } from '../config';\nimport { classes } from './styles';\nimport EditIcon from '@mui/icons-material/Edit';\nimport DoneIcon from '@mui/icons-material/Done';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport { sharedClasses } from '../../Components/CustomUIElements/sharedClasses';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport ConfirmationDialog from '../../Components/Modals/ConfirmationDialog';\nimport AIStudioNewJob, {\n IGeneratedContent\n} from '../../../AIStudio/NewJobIntegration/AIStudioNewJob';\nimport moment from 'moment';\nimport { QuestionsPreview } from '../../../AIStudio/NewJobIntegration/QuestionsPreview';\nimport DisplayHTMLCollapsible from '../../../AIStudio/SharedComponents/DisplayHTMLCollapsible';\nimport { IFilters, INewJobDefaults, INewJobParam } from '../types';\nimport { StyledSnackbarProps } from '../../Components/CustomUIElements/StyledSnackbar';\n\nexport default function NewJob({\n apiKey,\n jobDefaults,\n setFilters,\n filters,\n isDialogOpen,\n setIsDialogOpen,\n fromApproval,\n approvalFormId,\n aiStudioEnabled,\n showEntitySection,\n setSnackbar,\n userPermissions,\n userTimezone\n}: {\n apiKey: string;\n jobDefaults?: Partial<Record<keyof INewJobDefaults, INewJobParam['value']>>;\n setFilters?: (filter: IFilters) => void;\n filters?: IFilters;\n isDialogOpen: boolean;\n setIsDialogOpen: Dispatch<SetStateAction<boolean>>;\n fromApproval?: boolean;\n approvalFormId?: number;\n aiStudioEnabled: boolean;\n showEntitySection: boolean;\n setSnackbar: StyledSnackbarProps['setSnackbarState'];\n userPermissions: Record<string, Record<string, boolean>>;\n userTimezone: string;\n}) {\n const [isLoading, setIsLoading] = useState(false);\n const [confirmCancelIsOpen, setConfirmCancelIsOpen] = useState(false);\n const [confirmCreatedJobOpen, setConfirmCreatedJobOpen] = useState(false);\n const [confirmFailJobOpen, setConfirmFailJobOpen] = useState(false);\n const [currentStep, setCurrentStep] = useState(1);\n const [createType, setCreateType] = useState('Create new');\n const [resourses, setResourses] = useState(resourceDefault);\n const [jobOptions, setJobOptions] = useState([]);\n const [jobDefaultOptions, setJobDefaultOptions] = useState([]);\n const [prefixReference, setPrefixReference] = useState(null);\n const [clonedJob, setClonedJob] = useState<IJob | null>(null);\n const [copiedJob, setCopiedJob] = useState<IJob | null>(null);\n const [error, setError] = useState(false);\n const [newJobData, setNewJobsData] = useState(createJobDefault);\n const [editJobUrl, setEditJobUrl] = useState<string | null>(null);\n const [generatedContent, setGeneratedContent] = useState<IGeneratedContent>({\n talentLandingPage: '',\n screeningQuestions: []\n });\n const [tlpPreviewCollapsed, setTlpPreviewCollapsed] = useState(true);\n const [entities, setEntities] = useState<{ id: number; name: string }[]>([]);\n const [selectedEntity, setSelectedEntity] = useState<{ id: number; name: string } | null>(null);\n const [loadingEntities, setLoadingEntities] = useState<boolean>(false);\n\n useEffect(() => {\n if (!jobDefaults) return;\n setNewJobsData((prev) => ({\n ...prev,\n ...Object.entries(jobDefaults).reduce((acc, [key, value]) => {\n acc[key] = {\n ...prev[key],\n value\n };\n return acc;\n }, {})\n }));\n }, [jobDefaults]);\n\n const fieldRefs = {\n reference: useRef<HTMLInputElement>(null),\n title: useRef<HTMLInputElement>(null),\n location: useRef<HTMLInputElement>(null),\n expires_at: useRef<HTMLInputElement>(null),\n cloneJob: useRef<HTMLInputElement>(null)\n };\n\n const getEntities = async () => {\n setLoadingEntities(true);\n try {\n const { res } = await Api.getEntities();\n setEntities(res.entities);\n setSelectedEntity(res.current_entity);\n } catch (error) {\n setSnackbar({\n message: `There was an error fetching entities, ${error}`,\n state: 'error'\n });\n } finally {\n setLoadingEntities(false);\n }\n };\n\n const checkReference = async (isValid: boolean) => {\n setIsLoading(true);\n try {\n const response = await Api.referenceValidation(\n { 'job[reference]': newJobData.reference.value }\n );\n if (response.res.valid) {\n isValid && setCurrentStep(currentStep + 1);\n } else {\n if (response.res.correct_format === false) {\n newJobData?.reference?.value &&\n setNewJobsData((prev) => ({\n ...prev,\n reference: {\n ...prev.reference,\n error: 'Incorrect reference format, prefix letters before digits'\n }\n }));\n } else {\n newJobData?.reference?.value &&\n setNewJobsData((prev) => ({\n ...prev,\n reference: { ...prev.reference, error: 'Reference already in use' }\n }));\n }\n fieldRefs['reference']?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const cloneJob = async () => {\n setIsLoading(true);\n try {\n const data = await Api.importResources(\n copiedJob?.id,\n {\n job: {\n reference: newJobData.reference.value,\n title: newJobData.title.value,\n expires_at: newJobData.expires_at.value,\n location: newJobData.location.value,\n requisition_ids: fromApproval ? [approvalFormId] : undefined\n }\n },\n `?${queryString.stringify(\n { ...resourses, 'resources[modal]': true },\n { arrayFormat: 'bracket', encode: false }\n )}`\n );\n setConfirmCreatedJobOpen(true);\n setEditJobUrl(`${window.location.origin}${data?.res?.job_link}/edit`);\n } catch (error) {\n setConfirmFailJobOpen(true);\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const createJob = async () => {\n setIsLoading(true);\n const questions =\n generatedContent.screeningQuestions.length > 0\n ? generatedContent.screeningQuestions.map((question) => ({\n ...question,\n field_type: 'text_area_field'\n }))\n : null;\n try {\n const data = await Api.createJob(\n {\n job: {\n ...jobDefaults,\n reference: newJobData.reference.value,\n title: newJobData.title.value,\n expires_at: newJobData.expires_at.value,\n location: newJobData.location.value,\n ...(generatedContent.talentLandingPage && {\n description: generatedContent.talentLandingPage\n }),\n entity_id: selectedEntity ? selectedEntity.id : undefined,\n requisition_ids: fromApproval ? [approvalFormId] : undefined\n },\n fields: questions\n }\n );\n setConfirmCreatedJobOpen(true);\n setEditJobUrl(`${window.location.origin}${data?.res?.job_link}/edit`);\n } catch (error) {\n setConfirmFailJobOpen(true);\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n const getJobs = useCallback(async () => {\n setIsLoading(true);\n try {\n const [clonedOptions, prefix] = await Promise.all([\n Api.cloneJobsOptions({}),\n Api.referencePrefix({})\n ]);\n setJobDefaultOptions(clonedOptions?.res?.jobs);\n setPrefixReference(prefix?.res);\n setNewJobsData((prev) => ({\n ...prev,\n reference: {\n ...prev.reference,\n value: prefix?.res?.auto_job_reference_prefix || ''\n }\n }));\n setJobOptions(clonedOptions?.res?.jobs.map((a) => `${a.reference} - ${a.title}`));\n } catch (err) {\n console.log(err);\n } finally {\n setIsLoading(false);\n }\n }, []);\n\n async function getJob(jobId: string) {\n setIsLoading(true);\n try {\n const data = await Api.getJob(jobId);\n setCopiedJob(data?.res);\n } catch (err) {\n console.log(err);\n } finally {\n setIsLoading(false);\n }\n }\n\n const handleValidateFields = () => {\n let isValid = true;\n let firstError: keyof typeof fieldRefs | undefined = undefined;\n\n // Validate applicant detial fields\n Object.entries(newJobData).forEach((field) => {\n let tempErrorMessage = '';\n if (field[1].required && !field[1].value) {\n if (!firstError) {\n firstError = field[0] as keyof typeof fieldRefs;\n }\n isValid = false;\n tempErrorMessage = 'This field is required';\n }\n if (field[0] === 'title' || field[0] === 'location') {\n if (field[1].value.match(emojiRegex)) {\n isValid = false;\n tempErrorMessage = \"This field can't have emojis\";\n }\n }\n if (field[0] === 'expires_at') {\n if (!moment(newJobData.expires_at.value).isValid()) {\n isValid = false;\n tempErrorMessage = 'This field must be a valid date';\n } else {\n if (!moment(newJobData.expires_at.value).isAfter(moment())) {\n isValid = false;\n tempErrorMessage = 'Date and Time must be today or in the future';\n }\n }\n }\n setNewJobsData((prev) => ({\n ...prev,\n [field[0]]: { ...prev[field[0] as keyof typeof prev], error: tempErrorMessage }\n }));\n });\n\n // Scroll to first invalid field\n if (firstError) {\n fieldRefs[firstError]?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n\n checkReference(isValid);\n return isValid;\n };\n\n const clearData = () => {\n setNewJobsData(createJobDefault);\n setIsDialogOpen(false);\n setError(false);\n setCurrentStep(1);\n setCreateType('Create new');\n setResourses(resourceDefault);\n setClonedJob(null);\n setNewJobsData((prev) => ({\n ...prev,\n location: { ...prev.location, value: '' },\n reference: { ...prev.reference, value: '' },\n title: { ...prev.title, value: '' },\n expires_at: { ...prev.expires_at, value: '' }\n }));\n setGeneratedContent({\n talentLandingPage: '',\n screeningQuestions: []\n });\n setSelectedEntity(entities[0]);\n };\n\n useEffect(() => {\n getJobs();\n getEntities();\n }, [getJobs]);\n\n return (\n <Modal\n open={isDialogOpen}\n onClose={() => setConfirmCancelIsOpen(true)}\n aria-labelledby=\"new-job-modal\"\n >\n <Box sx={classes.actionsModal}>\n {currentStep !== 3 ? (\n <Box sx={{ width: '25%', padding: '60px 0', borderRight: '#DDDDDD 1px solid' }}>\n <Box id=\"new-job-modal-title\" sx={classes.modalHeader}>\n {fromApproval ? 'Create new job from approval' : 'Create new job'}\n </Box>\n <Box sx={{ display: 'flex', flexDirection: 'column', marginTop: '10px' }}>\n <Box sx={{ display: 'flex', padding: '30px 0' }}>\n <Box>\n <Box sx={classes.verticleLineWhite} />\n <Box sx={{ display: 'flex' }}>\n <Box sx={classes.stepNumberGreen}>1</Box>\n <Box sx={{ paddingLeft: '0.5rem' }}>\n <Box sx={{ fontWeight: '700', color: '#666666' }}>\n New Job{' '}\n {currentStep > 1 ? (\n <DoneIcon sx={{ fontSize: '18px', color: '#76D18F' }} />\n ) : (\n <span />\n )}\n </Box>\n {currentStep !== 1 && currentStep > 1 ? (\n <Box\n sx={classes.editStep}\n onClick={() => {\n setCurrentStep(1);\n setError(false);\n }}\n >\n Edit <EditIcon sx={{ fontSize: '12px', marginBottom: '3px' }} />\n </Box>\n ) : (\n <span />\n )}\n </Box>\n </Box>\n <Box sx={classes.verticleLine} />\n </Box>\n </Box>\n <Box sx={{ display: 'flex', padding: '30px 0' }}>\n <Box>\n <Box sx={classes.verticleLine} />\n <Box sx={{ display: 'flex', opacity: currentStep > 1 ? 1 : 0.4 }}>\n <Box sx={currentStep > 1 ? classes.stepNumberGreen : classes.stepNumberGrey}>\n 2\n </Box>\n <Box sx={{ paddingLeft: '0.5rem' }}>\n <Box\n sx={{ fontWeight: currentStep > 1 ? '700' : 'inherit', color: '#666666' }}\n >\n Job Details{' '}\n {currentStep > 2 ? (\n <DoneIcon sx={{ fontSize: '18px', color: '#76D18F' }} />\n ) : (\n <span />\n )}\n </Box>\n {currentStep !== 2 && currentStep > 1 ? (\n <Box sx={classes.editStep} onClick={() => setCurrentStep(2)}>\n Edit <EditIcon sx={{ fontSize: '12px', marginBottom: '3px' }} />\n </Box>\n ) : (\n <span />\n )}\n </Box>\n </Box>\n <Box sx={classes.verticleLine} />\n </Box>\n </Box>\n <Box sx={{ display: 'flex', padding: '30px 0' }}>\n <Box>\n <Box sx={classes.verticleLine} />\n <Box sx={{ display: 'flex', opacity: currentStep > 2 ? 1 : 0.4 }}>\n <Box sx={currentStep > 2 ? classes.stepNumberGreen : classes.stepNumberGrey}>\n 3\n </Box>\n <Box\n sx={{\n paddingLeft: '0.5rem',\n fontWeight: currentStep > 2 ? '700' : 'inherit',\n color: '#666666'\n }}\n >\n Review\n </Box>\n </Box>\n <Box sx={classes.verticleLineWhite} />\n </Box>\n </Box>\n </Box>\n </Box>\n ) : (\n <span />\n )}\n <Box\n sx={{\n width: currentStep !== 3 ? '75%' : '100%',\n paddingLeft: currentStep !== 3 ? '3.5rem' : '0',\n paddingTop: '60px',\n paddingBottom: '60px'\n }}\n >\n <CloseIcon onClick={() => setConfirmCancelIsOpen(true)} sx={classes.closeIcon} />\n {currentStep === 1 && (\n <Box\n sx={classes.modalContent}\n id=\"new-job-modal-content\"\n aria-label=\"New job modal content\"\n >\n <Box id=\"new-job-modal-title\" sx={classes.modalHeaderContent}>\n Would you like to clone from an existing job or create a new one?\n </Box>\n <Box role=\"form\" id=\"new-job-form\" aria-label=\"New job form\">\n <Box sx={classes.fullWidthFieldContainer}>\n <Box sx={classes.cloneJobInput}>\n <FormRadioButtonGroup\n options={[\n { label: 'Clone existing job', value: 'Clone existing job' },\n { label: 'Create new', value: 'Create new' }\n ]}\n onChange={(value: string) => setCreateType(value)}\n directionRow={true}\n color={'#838383'}\n defaultValue={createType}\n groupLabel={''}\n />\n </Box>\n {createType === 'Clone existing job' ? (\n <Box>\n <Box sx={{ margin: '2rem 0', position: 'relative' }}>\n <Virtualize\n value={clonedJob}\n passOptions={jobOptions}\n setValue={async (event: string, value: string) => {\n const index = Number(event);\n if (typeof index === 'number') {\n const reference = value.split(' -')[0];\n const i = jobDefaultOptions.findIndex(\n (option) => option?.reference === reference\n );\n setClonedJob(value);\n getJob(jobDefaultOptions[i >= 0 ? i : index]?.id);\n }\n }}\n hasIdAndRef={true}\n passedStyles={{ width: '99.5%', ...classes.formAutocomplete }}\n errorStyles={{ ...sharedClasses.errorBox, top: '-24px', right: '0px' }}\n label=\"Choose job\"\n />\n {error && <Box sx={classes.errorBox}>This field is required</Box>}\n </Box>\n <Box sx={classes.fullWidthFieldContainer}>\n <FormCheckboxGroup\n options={newJobsConfig.resource_field_choices}\n directionRow={true}\n defaultValues={resourses}\n onChange={(value: string) => setResourses(value)}\n groupLabel={'Choose resources to import'}\n color={'#838383'}\n />\n </Box>\n </Box>\n ) : (\n <Box />\n )}\n </Box>\n </Box>\n </Box>\n )}\n {currentStep === 2 && (\n <Box\n sx={classes.modalContent}\n id=\"new-job-modal-content\"\n aria-label=\"New job modal content\"\n >\n <Box id=\"new-job-modal-title\" sx={classes.modalHeaderContent}>\n Tell us the details of your job\n </Box>\n <Box role=\"form\" id=\"new-job-form\" aria-label=\"New job form\">\n <Box sx={classes.modalFormLine}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) =>\n setNewJobsData((prev) => ({\n ...prev,\n reference: { ...prev.reference, value }\n }))\n }\n id=\"reference\"\n dataTestId=\"reference\"\n label=\"Reference\"\n defaultValue={newJobData?.reference?.value}\n required={newJobData?.reference?.required}\n error={newJobData?.reference?.error}\n innerRef={fieldRefs.reference}\n styles={{ width: '250px' }}\n />\n <DebouncedFormTextField\n onDebouncedChange={(value: string) =>\n setNewJobsData((prev) => ({\n ...prev,\n title: { ...prev.title, value }\n }))\n }\n id=\"title\"\n dataTestId=\"title\"\n label=\"Title\"\n defaultValue={newJobData?.title?.value}\n required={newJobData?.title?.required}\n error={newJobData?.title?.error}\n innerRef={fieldRefs.title}\n styles={{ width: '250px' }}\n />\n </Box>\n <Box sx={classes.modalFormLine}>\n <DebouncedFormTextField\n onDebouncedChange={(value: string) =>\n setNewJobsData((prev) => ({\n ...prev,\n location: { ...prev.location, value }\n }))\n }\n id=\"location\"\n dataTestId=\"location\"\n label=\"City/Town\"\n error={newJobData?.location?.error}\n defaultValue={newJobData?.location?.value}\n required={newJobData?.location?.required}\n innerRef={fieldRefs.location}\n styles={{ width: '250px' }}\n />\n {showEntitySection && !clonedJob && (\n <Autocomplete\n disablePortal\n autoHighlight\n options={entities}\n loading={loadingEntities}\n getOptionLabel={(option) => option.name}\n noOptionsText=\"No entities\"\n value={entities.find((e) => e.id === selectedEntity?.id)}\n onChange={(_event, newValue) =>\n newValue ? setSelectedEntity(newValue) : setSelectedEntity(entities[0])\n }\n sx={{ ...sharedClasses.formAutocomplete, width: '250px', marginTop: '24px' }}\n ListboxProps={{ style: { fontFamily: 'Source Sans Pro' } }}\n renderInput={(params) => (\n <TextField\n {...params}\n sx={{ input: { height: '20px' } }}\n label=\"Entity\"\n InputLabelProps={{ shrink: true }}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <React.Fragment>\n {loadingEntities ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : null}\n {params.InputProps.endAdornment}\n </React.Fragment>\n )\n }}\n />\n )}\n />\n )}\n </Box>\n <Box\n sx={{ ...classes.modalFormLine, columnGap: '25px', position: 'relative' }}\n ref={fieldRefs.expires_at}\n >\n <Box id=\"expiry-date\" data-testid=\"expiry-date\">\n <SingleDateTimePicker\n label={\n <InputLabel htmlFor=\"text-input\" sx={sharedClasses.inputLabel}>\n Expiry date and time<span>*</span>\n </InputLabel>\n }\n inputStyles={classes.datePicker}\n onChange={(value) => {\n setNewJobsData((prev: any) => ({\n ...prev,\n expires_at: {\n ...prev.expires_at,\n value: moment(value).toISOString(),\n error: ''\n }\n }));\n }}\n timezone={userTimezone ?? moment.tz.guess()}\n value={newJobData.expires_at.value}\n disablePast={true}\n />\n </Box>\n {newJobData.expires_at.error && (\n <Box sx={{ ...classes.errorBox, bottom: '-35px' }}>\n {newJobData.expires_at.error}\n </Box>\n )}\n </Box>\n </Box>\n {aiStudioEnabled && createType !== 'Clone existing job' && (\n <AIStudioNewJob\n generatedContent={generatedContent}\n setGeneratedContent={setGeneratedContent}\n prefillData={{\n title: newJobData?.title?.value,\n country: newJobData?.location?.value\n }}\n />\n )}\n </Box>\n )}\n {currentStep === 3 && (\n <Box\n sx={classes.modalContentStep3}\n id=\"new-job-modal-content\"\n aria-label=\"New job modal content\"\n >\n <Box\n id=\"new-job-modal-title\"\n data-testid=\"new-job-modal-title-step-3\"\n sx={classes.modalHeaderContent}\n >\n Final step! Is this correct?\n </Box>\n <Box role=\"form\" id=\"new-job-form\" aria-label=\"New job form\">\n <Box sx={{ ...classes.modalFormLine, display: 'contents' }}>\n <Box sx={classes.reviewSubheaders}>Reference</Box>\n <Box sx={classes.reviewContent}>{newJobData.reference.value}</Box>\n <Box sx={classes.reviewSubheaders}>Job Title</Box>\n <Box sx={classes.reviewContent}>{newJobData.title.value}</Box>\n {showEntitySection && !clonedJob && (\n <>\n <Box sx={classes.reviewSubheaders}>Entity</Box>\n <Box sx={classes.reviewContent}>{selectedEntity?.name}</Box>\n </>\n )}\n </Box>\n <Box sx={classes.modalFormLine}>\n <Box sx={classes.reviewBoxes}>\n <Box>City/town</Box>\n <Box sx={{ fontWeight: '800' }}>{newJobData.location.value}</Box>\n </Box>\n <Box sx={classes.reviewBoxes}>\n <Box>Expiry</Box>\n <Box sx={{ fontWeight: '800' }}>\n {moment(newJobData.expires_at.value)\n .tz(userTimezone ?? moment.tz.guess())\n .format('D MMM YYYY, hh:mm a')}\n </Box>\n </Box>\n </Box>\n {aiStudioEnabled &&\n createType !== 'Clone existing job' &&\n generatedContent.talentLandingPage && (\n <Box sx={classes.previewContainer}>\n <h3>Talent landing page preview</h3>\n <DisplayHTMLCollapsible\n content={generatedContent.talentLandingPage}\n collapsed={tlpPreviewCollapsed}\n setCollapsed={setTlpPreviewCollapsed}\n />\n </Box>\n )}\n {aiStudioEnabled &&\n createType !== 'Clone existing job' &&\n generatedContent.screeningQuestions.length > 0 && (\n <QuestionsPreview\n questions={generatedContent.screeningQuestions}\n previewOnly={true}\n />\n )}\n <Box>\n {createType === 'Clone existing job' && copiedJob ? (\n <Box>\n {resourses['resources[description]'] ? (\n <Box sx={{ ...classes.modalFormLine, display: 'contents' }}>\n <Box sx={classes.reviewSubheaders}>Description</Box>\n {copiedJob?.description ? (\n <Box sx={classes.reviewContent}>\n <div dangerouslySetInnerHTML={{ __html: copiedJob?.description }} />\n </Box>\n ) : (\n <Box>No Description</Box>\n )}\n </Box>\n ) : (\n <Box />\n )}\n {resourses['resources[questions]'] ? (\n <Box\n sx={{\n ...classes.modalFormLine,\n display: 'contents',\n marginTop: '1.5rem'\n }}\n >\n <Box sx={{ ...classes.reviewSubheaders, marginBottom: '0.5rem' }}>\n Questions\n </Box>\n {copiedJob?.questions && copiedJob?.questions.length > 0 ? (\n <Box>\n {copiedJob?.questions &&\n copiedJob.questions.map((question) => (\n <Box key={question.id}>\n {question.type === 'AvailabilityField' ||\n question.type === 'CsvDataLookupField' ||\n question.type === 'JobReferenceLookupField' ? (\n <span />\n ) : (\n <Box sx={classes.questionsWrapper}>\n <Box sx={{ marginRight: 'auto', ...classes.questionInput }}>\n <Box sx={classes.questionsTitle}>Title</Box>\n <Box\n sx={{\n ...classes.modalFormLine,\n position: 'relative'\n }}\n >\n <QuestionFieldViewer question={question} />\n </Box>\n </Box>\n <Box sx={{ padding: '0 6px' }}>\n <Box sx={classes.questionsTitle}>Enabled</Box>\n {question.enabled ? (\n <CheckCircleIcon sx={classes.iconGreen} />\n ) : (\n <CancelIcon sx={classes.iconRed} />\n )}\n </Box>\n <Box sx={{ padding: '0 6px' }}>\n <Box sx={classes.questionsTitle}>Required</Box>\n {question.required ? (\n <CheckCircleIcon sx={classes.iconGreen} />\n ) : (\n <CancelIcon sx={classes.iconRed} />\n )}\n </Box>\n <Box sx={{ padding: '0 6px' }}>\n <Box sx={classes.questionsTitle}>Rateable</Box>\n {question.rateable ? (\n <CheckCircleIcon sx={classes.iconGreen} />\n ) : (\n <CancelIcon sx={classes.iconRed} />\n )}\n </Box>\n <Box sx={{ padding: '0 6px' }}>\n <Box sx={classes.questionsTitle}>Confidential</Box>\n {question.confidential ? (\n <CheckCircleIcon sx={classes.iconGreen} />\n ) : (\n <CancelIcon sx={classes.iconRed} />\n )}\n </Box>\n <Box sx={{ paddingLeft: '6px' }}>\n <Box sx={classes.questionsTitle}>Weight</Box>\n <Box sx={classes.weightValue}>{question.weight}</Box>\n </Box>\n </Box>\n )}\n </Box>\n ))}\n </Box>\n ) : (\n <Box sx={{ paddingLeft: '4px' }}>No Questions</Box>\n )}\n </Box>\n ) : (\n <Box />\n )}\n {resourses['resources[attachments]'] ? (\n <Box\n sx={{\n ...classes.modalFormLine,\n display: 'contents',\n marginTop: '1.5rem'\n }}\n >\n <Box sx={classes.reviewSubheaders}>Attachments</Box>\n <Attachments\n apiKey={apiKey}\n jobId={copiedJob?.id}\n permissions={{\n delete: false\n }}\n />\n </Box>\n ) : (\n <Box />\n )}\n {resourses['resources[sources]'] ? (\n <Box\n sx={{\n ...classes.modalFormLine,\n display: 'contents',\n marginTop: '2rem'\n }}\n >\n <Box sx={classes.reviewSubheaders}>Sources</Box>\n <Box\n sx={{\n ...classes.reviewContent,\n display: 'flex',\n alignItems: 'center'\n }}\n >\n Imported <CheckCircleIcon sx={classes.iconGreenResources} />\n </Box>\n </Box>\n ) : (\n <Box />\n )}\n {resourses['resources[auto_actions]'] ? (\n <Box\n sx={{\n ...classes.modalFormLine,\n display: 'contents',\n marginTop: '2rem'\n }}\n >\n <Box sx={classes.reviewSubheaders}>Auto-Actions</Box>\n <Box\n sx={{\n ...classes.reviewContent,\n display: 'flex',\n alignItems: 'center'\n }}\n >\n Imported <CheckCircleIcon sx={classes.iconGreenResources} />\n </Box>\n </Box>\n ) : (\n <Box />\n )}\n {resourses['resources[options]'] ? (\n <Box\n sx={{\n ...classes.modalFormLine,\n display: 'contents',\n marginTop: '2rem'\n }}\n >\n <Box sx={classes.reviewSubheaders}>Options</Box>\n <Box\n sx={{\n ...classes.reviewContent,\n display: 'flex',\n alignItems: 'center'\n }}\n >\n Imported <CheckCircleIcon sx={classes.iconGreenResources} />\n </Box>\n </Box>\n ) : (\n <Box />\n )}\n {resourses['resources[visibility]'] ? (\n <Box\n sx={{\n ...classes.modalFormLine,\n display: 'contents',\n marginTop: '2rem'\n }}\n >\n <Box sx={classes.reviewSubheaders}>Visibility</Box>\n <Box\n sx={{\n ...classes.reviewContent,\n display: 'flex',\n alignItems: 'center'\n }}\n >\n Imported <CheckCircleIcon sx={classes.iconGreenResources} />\n </Box>\n </Box>\n ) : (\n <Box />\n )}\n </Box>\n ) : (\n <span />\n )}\n </Box>\n </Box>\n </Box>\n )}\n <Box sx={classes.modalFooter}>\n {currentStep === 3 ? (\n <Button\n id=\"edit-new-job-button\"\n type=\"submit\"\n sx={classes.modalEditButton}\n onClick={() => setCurrentStep(currentStep - 1)}\n >\n Edit\n </Button>\n ) : (\n <span />\n )}\n <Button\n id={currentStep === 3 ? 'create-new-job-button' : 'next-new-job-button'}\n data-testid={currentStep === 3 ? 'create-new-job-button' : 'next-new-job-button'}\n type=\"submit\"\n sx={classes.modalConfirmationButton}\n onClick={() => {\n if (isLoading) return;\n if (currentStep === 1) {\n if (createType === 'Clone existing job') {\n if (!clonedJob) {\n setError(true);\n fieldRefs['cloneJob']?.current?.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n } else {\n setNewJobsData((prev) => ({\n ...prev,\n location: { ...prev.location, value: copiedJob?.location },\n title: { ...prev.title, value: copiedJob?.title },\n expires_at: { ...prev.expires_at, value: '' }\n }));\n const jobEntity = entities.find((e) => e.id === copiedJob?.entity_id);\n jobEntity ? setSelectedEntity(jobEntity) : setSelectedEntity(entities[0]);\n setCurrentStep(currentStep + 1);\n }\n } else setCurrentStep(currentStep + 1);\n }\n currentStep === 2 && handleValidateFields();\n currentStep === 3 && createType === 'Clone existing job' && cloneJob();\n currentStep === 3 && createType === 'Create new' && createJob();\n }}\n >\n {currentStep === 3 || currentStep === 1 ? (\n isLoading ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n 'Confirm'\n )\n ) : (\n 'Next'\n )}\n </Button>\n </Box>\n <GenericDialog\n isDialogOpen={confirmCancelIsOpen}\n setDialogOpen={setConfirmCancelIsOpen}\n title=\"Close without submitting?\"\n description=\"Are you sure you want to cancel your job? You will lose any progress you have made.\"\n buttonCallback={() => {\n setConfirmCancelIsOpen(false);\n clearData();\n }}\n callbackLoading={false}\n buttonText=\"Close without saving\"\n url=\"\"\n />\n </Box>\n <ConfirmationDialog\n isDialogOpen={confirmCreatedJobOpen}\n setDialogOpen={setConfirmCreatedJobOpen}\n title=\"Complete\"\n description=\"Your job has now been created.\"\n moreContent=\"To add more information or edit click below.\"\n buttonCallback={() => {\n setConfirmCreatedJobOpen(false);\n setFilters && setFilters({ ...filters });\n clearData();\n }}\n callbackLoading={false}\n buttonText=\"Continue editing\"\n url={editJobUrl ? editJobUrl : ''}\n />\n <ConfirmationDialog\n isDialogOpen={confirmFailJobOpen}\n setDialogOpen={setConfirmFailJobOpen}\n title=\"Failed\"\n description=\"Your job failed to be created.\"\n moreContent=\"\"\n buttonCallback={() => {\n setConfirmFailJobOpen(false);\n clearData();\n }}\n callbackLoading={false}\n buttonText=\"Confirm\"\n url={''}\n />\n </Box>\n </Modal>\n );\n}\n","import React, { useState } from 'react';\nimport { styles } from './styles';\nimport Box from '@mui/material/Box';\nimport FormControl from '@mui/material/FormControl';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport { ISearchProps } from './types';\nimport SearchIcon from '@mui/icons-material/Search';\n\nexport default function Search({ search, setSearch, setPage }: ISearchProps) {\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSearch(event.target.value);\n setPage(1);\n };\n\n return (\n <Box sx={{ width: '100%' }}>\n <FormControl fullWidth>\n <OutlinedInput\n id=\"job-search\"\n data-testid=\"job-search-[Search]\"\n sx={styles.searchInput}\n placeholder={'Search by title or reference'}\n value={search}\n onChange={handleChange}\n startAdornment={\n <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n <SearchIcon />\n </InputAdornment>\n }\n />\n </FormControl>\n </Box>\n );\n}\n","import React, { useRef } from 'react';\nimport { Box, Breadcrumbs, Link, Tooltip } from '@mui/material';\nimport NavigateNextIcon from '@mui/icons-material/NavigateNext';\nimport HomeRoundedIcon from '@mui/icons-material/HomeRounded';\nimport { classes } from '../styles';\nimport { styled } from '@mui/system';\nimport { theme } from '../../../../../components/ThemeContext/ThemeObject';\nimport { useIsOverflow } from '../../../hooks';\n\nconst MAX_CHARACTER = 8;\n\nconst StyledBreadcrumbs = styled(Breadcrumbs)`\n .MuiBreadcrumbs-ol {\n flex-wrap: nowrap;\n }\n .MuiBreadcrumbs-li {\n display: flex;\n align-items: center;\n }\n`;\n\nconst BreadcrumbsContainer = ({ breadcrumbsData }: { breadcrumbsData: string }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const isHorizontalOverflow = useIsOverflow(containerRef);\n\n const convertBreadcrumbsData = (breadcrumbsData: string) => {\n if (breadcrumbsData?.length < 1) return [];\n const nameRegex = /<a[^>]*>(.*?)<\\/a>/;\n const hrefRegex = /<a[^>]*href=\"([^\"]*)\"[^>]*>/;\n // if path is /admin then return only dashboard\n if (window.location.pathname !== '/admin') {\n const breadcrumbsArray = breadcrumbsData.split('</li>');\n return breadcrumbsArray\n .map((breadcrumb) => ({\n name: breadcrumb.match(nameRegex)?.[1] || '',\n url: breadcrumb.match(hrefRegex)?.[1] || ''\n }))\n .slice(0, -1);\n } else {\n return [\n {\n name: 'Dashboard',\n url: '/admin'\n }\n ];\n }\n };\n\n const newBreadCrumbData = convertBreadcrumbsData(breadcrumbsData).filter(\n (item) => item.name !== 'Home'\n );\n\n return (\n <Box sx={classes.breadcrumbContainer} ref={containerRef}>\n <HomeRoundedIcon onClick={() => window.location.replace('/admin')} sx={classes.homeIcon} />\n <StyledBreadcrumbs\n separator={<NavigateNextIcon sx={classes.breadcrumbSeparator} />}\n aria-label=\"breadcrumb\"\n sx={classes.breadcrumbs}\n >\n <Link underline=\"hover\" color=\"inherit\" href=\"\"></Link>\n {newBreadCrumbData.map((breadcrumb, idx) =>\n idx !== 0 && isHorizontalOverflow && breadcrumb.name.length >= MAX_CHARACTER ? (\n <Tooltip\n key={breadcrumb.name}\n placement=\"bottom-start\"\n componentsProps={{\n tooltip: {\n sx: {\n background: '#DEF3F2',\n color: theme.palette.primary.main,\n fontFamily: 'Source Sans Pro',\n fontSize: '14px'\n }\n }\n }}\n title={breadcrumb.name}\n >\n <Link\n noWrap\n underline=\"hover\"\n key={breadcrumb.name}\n color=\"inherit\"\n href={breadcrumb.url}\n >\n {breadcrumb.name.slice(0, MAX_CHARACTER) + '…'}\n </Link>\n </Tooltip>\n ) : (\n <Link\n noWrap\n underline=\"hover\"\n key={breadcrumb.name}\n color=\"inherit\"\n href={breadcrumb.url}\n >\n {breadcrumb.name}\n </Link>\n )\n )}\n </StyledBreadcrumbs>\n </Box>\n );\n};\n\nexport default BreadcrumbsContainer;\n","import React, { useRef, useState } from 'react';\nimport { Box } from '@mui/material';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport { classes } from '../../styles';\nimport ProfileDropdownPopper from './ProfileDropdownPopper';\nimport { IUserInfo } from '../../Header';\n\nconst ProfileDropdown = ({\n userInfo,\n setChangingEntity,\n widgetsbarExpanded\n}: {\n userInfo: IUserInfo;\n setChangingEntity: (changingEntity: boolean) => void;\n widgetsbarExpanded: boolean;\n}) => {\n const [menuOpen, setMenuOpen] = useState(false);\n const avatarAnchorEl = useRef(null);\n\n const handleAvatarClick = (e: React.MouseEvent<HTMLElement>) => {\n e.stopPropagation();\n setMenuOpen((prev) => !prev);\n };\n\n return (\n <>\n <Box\n sx={{\n ...classes.profileDropdownContainer,\n marginRight: widgetsbarExpanded ? 'none' : 5\n }}\n onClick={handleAvatarClick}\n ref={avatarAnchorEl}\n >\n <Box id=\"profile-circle\" sx={classes.profileAvatar}>{userInfo?.firstName[0] + userInfo?.lastName[0]}</Box>\n <ExpandMoreIcon sx={classes.profileDropdownIcon} />\n </Box>\n <ProfileDropdownPopper\n menuOpen={menuOpen}\n avatarAnchorEl={avatarAnchorEl.current}\n setMenuOpen={setMenuOpen}\n setChangingEntity={setChangingEntity}\n userInfo={userInfo}\n />\n </>\n );\n};\n\nexport default ProfileDropdown;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport {\n Box,\n IconButton,\n ClickAwayListener,\n Divider,\n Fade,\n Popper,\n CircularProgress,\n Tooltip\n} from '@mui/material';\nimport FeaturedPlayListOutlinedIcon from '@mui/icons-material/FeaturedPlayListOutlined';\nimport LiveHelpOutlinedIcon from '@mui/icons-material/LiveHelpOutlined';\nimport SettingsOutlinedIcon from '@mui/icons-material/SettingsOutlined';\nimport LogoutOutlinedIcon from '@mui/icons-material/LogoutOutlined';\nimport VisibilityIcon from '@mui/icons-material/Visibility';\nimport VisibilityOffIcon from '@mui/icons-material/VisibilityOff';\nimport SwitchAccountIcon from '@mui/icons-material/SwitchAccount';\nimport { classes } from '../../styles';\nimport { IUserInfo } from '../../Header';\nimport { handleAPIRequest } from '../../../../Components/Utilities/handleAPIRequest';\nimport { getPermissions } from '../../../../../shared/permissionHelpers';\nimport { formatUserPermissions } from '../../../../Components/Utilities/formatUserPermissions';\nimport Alert from '@mui/material/Alert';\nimport { clearAllPreferenceCache } from '../../../../helpers/uiPreferencesHelpers';\n\nconst ProfileDropdownPopper = ({\n menuOpen,\n setMenuOpen,\n setChangingEntity,\n avatarAnchorEl,\n userInfo\n}: {\n menuOpen: boolean;\n setMenuOpen: (menuOpen: boolean) => void;\n setChangingEntity: (changingEntity: boolean) => void;\n avatarAnchorEl: HTMLElement | null;\n userInfo: IUserInfo;\n}) => {\n const [loadingLogout, setLoadingLogout] = useState(false);\n const [masqueradeIconHovered, setMasqueradeIconHovered] = useState(false);\n const [userPermissions, setUserPermissions] = useState<Record<string, Record<string, boolean>>>(\n {}\n );\n\n const [alertState, setAlertState] = useState({\n message: '',\n state: 'success' as 'success' | 'error' | 'warning'\n });\n \n const sourcePermission = userPermissions['Accounts - User']?.['Edit Source'] ? true : false;\n\n const profileMenuItems = [\n sourcePermission && {\n label: 'Sources',\n icon: <FeaturedPlayListOutlinedIcon />,\n path: userInfo.links.sourceURL\n },\n {\n label: 'Support Centre',\n icon: <LiveHelpOutlinedIcon />,\n path: 'https://scouttalent.my.site.com/myresourcecentre/s/'\n },\n {\n label: 'Settings',\n icon: <SettingsOutlinedIcon />,\n path: '/admin/settings'\n },\n {\n label: 'Log out',\n icon: !loadingLogout ? <LogoutOutlinedIcon /> : <CircularProgress size={24} />,\n path: '#'\n }\n ];\n\n const getUserPermissions = useCallback(async () => {\n try {\n const data = await getPermissions();\n setUserPermissions(formatUserPermissions(data));\n } catch (error) {\n console.log(error);\n setAlertState({\n message: 'There was an error retrieving user permissions',\n state: 'error'\n });\n }\n }, [setUserPermissions]);\n\n useEffect(() => {\n getUserPermissions();\n }, [getUserPermissions]);\n\n const logOut = () => {\n handleAPIRequest({\n url: '/api/v4/logout',\n method: 'DELETE',\n setLoaderState: setLoadingLogout,\n onSuccess: (data) => {\n window.location.href = data?.redirect_url;\n localStorage.removeItem('userPermissions');\n localStorage.removeItem('userPermissionsExpiry');\n clearAllPreferenceCache();\n }\n });\n };\n\n const unmasquerade = () => {\n window.location.href = userInfo?.links.unmasqueradeURL;\n localStorage.removeItem('userPermissions');\n localStorage.removeItem('userPermissionsExpiry');\n clearAllPreferenceCache();\n };\n\n const openChangingEntity = () => {\n setChangingEntity(true);\n setMenuOpen(false);\n };\n\n const showAvatar = userInfo?.links.unmasqueradeURL ? (\n <Tooltip title=\"Unmasquerade\" placement=\"top\">\n <Box\n sx={{\n ...classes.profileAvatar,\n ...classes.avatarSmall,\n ...classes.masqueradeAvatar\n }}\n onClick={unmasquerade}\n onMouseEnter={() => setMasqueradeIconHovered(true)}\n onMouseLeave={() => setMasqueradeIconHovered(false)}\n >\n {masqueradeIconHovered ? <VisibilityOffIcon /> : <VisibilityIcon />}\n </Box>\n </Tooltip>\n ) : (\n <Box sx={{ ...classes.profileAvatar, ...classes.avatarSmall }}>\n {userInfo?.firstName[0] + userInfo?.lastName[0]}\n </Box>\n );\n\n return (\n <ClickAwayListener onClickAway={() => setMenuOpen(false)}>\n <Popper\n open={menuOpen}\n anchorEl={avatarAnchorEl}\n placement=\"bottom-end\"\n transition\n sx={{ zIndex: 1400 }}\n >\n {({ TransitionProps }) => (\n <Fade {...TransitionProps} timeout={350}>\n <Box sx={classes.profileDropdownMenuContainer}>\n <Box sx={classes.profileInformation}>\n {showAvatar}\n <Box sx={classes.profileNameAndEntityContainer}>\n <Box\n sx={classes.profileName}\n >{`${userInfo?.firstName} ${userInfo?.lastName}`}</Box>\n {userInfo?.entity && (\n <a href={userInfo?.entity.url}>\n <Box>{userInfo?.entity.name}</Box>\n </a>\n )}\n <Box sx={classes.roleInformationWrapper}>\n {userInfo.roleNames && (\n <Tooltip title={userInfo.roleNames} placement='bottom'>\n <Box sx={classes.roleInformation}>{userInfo.roleNames}</Box>\n </Tooltip>\n )}\n {userInfo?.entity?.multiEntitiesAccess && (\n <Tooltip title='Switch entity' placement='bottom'>\n <IconButton onClick={openChangingEntity}>\n <SwitchAccountIcon />\n </IconButton>\n </Tooltip>\n )}\n </Box>\n </Box>\n </Box>\n <Divider variant=\"fullWidth\" />\n <Box sx={classes.profileDropdownMenuItemsContainer}>\n {alertState?.state === 'error' && (\n <Alert severity={alertState.state}>{alertState.message}</Alert>\n )}\n {profileMenuItems.filter(item => item).map((item, index) => (\n <a href={item.path} key={index} onClick={item.path === '#' ? logOut : undefined}>\n <Box sx={classes.profileDropdownMenuItem}>\n {item.icon}\n {item.label}\n </Box>\n </a>\n ))}\n </Box>\n </Box>\n </Fade>\n )}\n </Popper>\n </ClickAwayListener>\n );\n};\n\nexport default ProfileDropdownPopper;\n","import React, { useState } from 'react';\nimport { Box, OutlinedInput, Dialog, Stack } from '@mui/material';\nimport { Search as SearchIcon, Close as CloseIcon } from '@mui/icons-material';\nimport { classes } from '../styles';\n\nconst Search = () => {\n const [searchQuery, setSearchQuery] = useState<string>('');\n const [openSearch, setOpenSearch] = useState<boolean>(false);\n\n const handleSearch = () => {\n window.location.href = `/admin/search?utf8=✓&s=${searchQuery}`;\n };\n\n return (\n <Box>\n <SearchIcon sx={classes.searchIcon} onClick={() => setOpenSearch(true)} />\n <Dialog\n open={openSearch}\n sx={classes.searchDialog}\n onClose={() => {\n setOpenSearch(false);\n setSearchQuery('');\n }}\n >\n <OutlinedInput\n autoFocus\n id=\"recruit-search\"\n sx={classes.searchInput}\n placeholder={'Search...'}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n handleSearch();\n }\n }}\n endAdornment={\n <Stack sx={{ flexDirection: 'row', columnGap: 1, alignItems: 'center' }}>\n {searchQuery && (\n <CloseIcon onClick={() => setSearchQuery('')} sx={classes.clearSearch} />\n )}\n <SearchIcon sx={{ ...classes.searchIcon, fontSize: '32px' }} onClick={handleSearch} />\n </Stack>\n }\n />\n </Dialog>\n </Box>\n );\n};\n\nexport default Search;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box } from '@mui/material';\nimport { Menu as MenuIcon, Close as CloseIcon } from '@mui/icons-material';\nimport { classes } from '../styles';\nimport { widgetsbarWidths } from '../../Widgetsbar/config';\n\nconst ShowRightMenu = ({\n widgetsbarState,\n setWidgetsbarState\n}: {\n widgetsbarState: keyof typeof widgetsbarWidths;\n setWidgetsbarState: Dispatch<SetStateAction<keyof typeof widgetsbarWidths>>;\n}) => {\n const handleWidgetsbarStateChange = (state: typeof widgetsbarState) => {\n localStorage.setItem('widgetsbarState', state);\n setWidgetsbarState(state);\n };\n return (\n !window.location.href.includes('search/advanced') && (\n <Box\n sx={\n widgetsbarState === 'expanded' ? classes.showButtonContainer : classes.hideButtonContainer\n }\n onClick={() => {\n handleWidgetsbarStateChange(widgetsbarState === 'expanded' ? 'collapsed' : 'expanded');\n const event = new Event('onWidgetBarChange');\n window.dispatchEvent(event);\n }}\n >\n {widgetsbarState === 'expanded' ? (\n <CloseIcon id=\"close-icon-sidebar\" sx={{ fontSize: '26px' }} />\n ) : (\n <MenuIcon id=\"sandwich-icon-sidebar\" sx={{ fontSize: '26px' }} />\n )}\n </Box>\n )\n );\n};\n\nexport default ShowRightMenu;\n","import React, { useState, useCallback, useEffect } from 'react';\nimport { Dialog, Button } from '@mui/material';\nimport { handleAPIRequest } from '../../../Components/Utilities/handleAPIRequest';\nimport Api from '../../../Dashboard/API';\nimport Select from '../../../../inputs/Select';\nimport { IUserInfo } from '../../Header';\nimport { classes } from '../styles';\n\nconst SwitchEntityDialog = ({\n open,\n setChangingEntity,\n userInfo\n}: {\n open: boolean;\n setChangingEntity: (changingEntity: boolean) => void;\n userInfo: IUserInfo;\n}) => {\n const [userEntities, setUserEntities] = useState([]);\n const [entityId, setEntityId] = useState(userInfo?.entity?.id);\n const getUserEntities = useCallback(async () => {\n try {\n const { entities } = await Api.getUserEntities();\n setUserEntities(entities);\n } catch (error) {\n setAlertState({\n message: 'There was an error retrieving user Entities',\n state: 'error'\n });\n }\n }, [setUserEntities]);\n\n const submitUserEntityChange = () => {\n handleAPIRequest({\n url: '/api/v4/switch_entity',\n method: 'POST',\n body: { entity_id: entityId },\n onSuccess: () => {\n window.location.reload();\n }\n });\n };\n\n useEffect(() => {\n getUserEntities();\n }, [getUserEntities]);\n\n return (\n <Dialog\n open={open}\n sx={classes.switchEntityDialog}\n onClose={() => {\n setChangingEntity(false);\n }}\n >\n <Select\n options={userEntities}\n value={entityId}\n onChange={(value) => setEntityId(value)}\n valueField=\"id\"\n labelField=\"name\"\n />\n <Button\n onClick={submitUserEntityChange}\n sx={classes.switchEntityButton}\n >\n Switch Entity\n </Button>\n </Dialog>\n );\n};\n\nexport default SwitchEntityDialog;\n","import React, { useState, useEffect } from 'react';\nimport { Box } from '@mui/material';\nimport Search from './Components/Search';\nimport { classes } from './styles';\nimport ProfileDropdown from './Components/ProfileDropdown/ProfileDropdown';\nimport BreadcrumbsContainer from './Components/Breadcrumbs';\nimport SwitchEntityDialog from './Components/SwitchEntityDialog';\n\nexport interface IUserInfo {\n firstName: string;\n lastName: string;\n roleNames: string;\n entity: {\n id: number;\n name: string;\n url: string;\n multiEntitiesAccess: boolean;\n };\n links: {\n unmasqueradeURL: string;\n sourceURL: string;\n };\n}\n\nconst Header = ({\n userInfo,\n isUAT,\n breadcrumbsData\n}: {\n userInfo: IUserInfo;\n isUAT: boolean;\n breadcrumbsData: string;\n}) => {\n const [widgetsbarExpanded, setWidgetsbarExpanded] = useState<boolean>(\n localStorage.getItem('widgetsbarState') === 'expanded'\n );\n const [changingEntity, setChangingEntity] = useState(false);\n\n useEffect(() => {\n const checkLocalStorage = () => {\n if (localStorage.getItem('widgetsbarState') === 'expanded') {\n setWidgetsbarExpanded(true);\n } else {\n setWidgetsbarExpanded(false);\n }\n };\n\n window.addEventListener('onWidgetBarChange', checkLocalStorage);\n return () => {\n window.removeEventListener('onWidgetBarChange', checkLocalStorage);\n };\n }, []);\n\n return (\n <Box id=\"react-header\">\n {isUAT && <Box sx={classes.uatBanner} />}\n <Box sx={{ ...classes.headerContainer, paddingRight: widgetsbarExpanded ? '60px' : '76px' }}>\n <BreadcrumbsContainer breadcrumbsData={breadcrumbsData} />\n <Search />\n {userInfo?.entity?.multiEntitiesAccess && (\n <SwitchEntityDialog\n open={changingEntity}\n setChangingEntity={setChangingEntity}\n userInfo={userInfo}\n />\n )}\n <ProfileDropdown\n userInfo={userInfo}\n widgetsbarExpanded={widgetsbarExpanded}\n setChangingEntity={setChangingEntity}\n />\n </Box>\n </Box>\n );\n};\n\nexport default Header;\n","import React from 'react';\n\nconst AppsIcon = () => {\n return (\n <svg\n width=\"17\"\n height=\"18\"\n viewBox=\"0 0 17 18\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ cursor: 'pointer' }}\n id=\"bento-box-dropdown-button\"\n >\n <path\n d=\"M2.125 18C1.54062 18 1.04036 17.7797 0.624219 17.3391C0.208073 16.8984 0 16.3687 0 15.75C0 15.1313 0.208073 14.6016 0.624219 14.1609C1.04036 13.7203 1.54062 13.5 2.125 13.5C2.70937 13.5 3.20964 13.7203 3.62578 14.1609C4.04193 14.6016 4.25 15.1313 4.25 15.75C4.25 16.3687 4.04193 16.8984 3.62578 17.3391C3.20964 17.7797 2.70937 18 2.125 18ZM8.5 18C7.91563 18 7.41536 17.7797 6.99922 17.3391C6.58307 16.8984 6.375 16.3687 6.375 15.75C6.375 15.1313 6.58307 14.6016 6.99922 14.1609C7.41536 13.7203 7.91563 13.5 8.5 13.5C9.08438 13.5 9.58464 13.7203 10.0008 14.1609C10.4169 14.6016 10.625 15.1313 10.625 15.75C10.625 16.3687 10.4169 16.8984 10.0008 17.3391C9.58464 17.7797 9.08438 18 8.5 18ZM14.875 18C14.2906 18 13.7904 17.7797 13.3742 17.3391C12.9581 16.8984 12.75 16.3687 12.75 15.75C12.75 15.1313 12.9581 14.6016 13.3742 14.1609C13.7904 13.7203 14.2906 13.5 14.875 13.5C15.4594 13.5 15.9596 13.7203 16.3758 14.1609C16.7919 14.6016 17 15.1313 17 15.75C17 16.3687 16.7919 16.8984 16.3758 17.3391C15.9596 17.7797 15.4594 18 14.875 18ZM2.125 11.25C1.54062 11.25 1.04036 11.0297 0.624219 10.5891C0.208073 10.1484 0 9.61875 0 9C0 8.38125 0.208073 7.85156 0.624219 7.41094C1.04036 6.97031 1.54062 6.75 2.125 6.75C2.70937 6.75 3.20964 6.97031 3.62578 7.41094C4.04193 7.85156 4.25 8.38125 4.25 9C4.25 9.61875 4.04193 10.1484 3.62578 10.5891C3.20964 11.0297 2.70937 11.25 2.125 11.25ZM8.5 11.25C7.91563 11.25 7.41536 11.0297 6.99922 10.5891C6.58307 10.1484 6.375 9.61875 6.375 9C6.375 8.38125 6.58307 7.85156 6.99922 7.41094C7.41536 6.97031 7.91563 6.75 8.5 6.75C9.08438 6.75 9.58464 6.97031 10.0008 7.41094C10.4169 7.85156 10.625 8.38125 10.625 9C10.625 9.61875 10.4169 10.1484 10.0008 10.5891C9.58464 11.0297 9.08438 11.25 8.5 11.25ZM14.875 11.25C14.2906 11.25 13.7904 11.0297 13.3742 10.5891C12.9581 10.1484 12.75 9.61875 12.75 9C12.75 8.38125 12.9581 7.85156 13.3742 7.41094C13.7904 6.97031 14.2906 6.75 14.875 6.75C15.4594 6.75 15.9596 6.97031 16.3758 7.41094C16.7919 7.85156 17 8.38125 17 9C17 9.61875 16.7919 10.1484 16.3758 10.5891C15.9596 11.0297 15.4594 11.25 14.875 11.25ZM2.125 4.5C1.54062 4.5 1.04036 4.27969 0.624219 3.83906C0.208073 3.39844 0 2.86875 0 2.25C0 1.63125 0.208073 1.10156 0.624219 0.660938C1.04036 0.220313 1.54062 0 2.125 0C2.70937 0 3.20964 0.220313 3.62578 0.660938C4.04193 1.10156 4.25 1.63125 4.25 2.25C4.25 2.86875 4.04193 3.39844 3.62578 3.83906C3.20964 4.27969 2.70937 4.5 2.125 4.5ZM8.5 4.5C7.91563 4.5 7.41536 4.27969 6.99922 3.83906C6.58307 3.39844 6.375 2.86875 6.375 2.25C6.375 1.63125 6.58307 1.10156 6.99922 0.660938C7.41536 0.220313 7.91563 0 8.5 0C9.08438 0 9.58464 0.220313 10.0008 0.660938C10.4169 1.10156 10.625 1.63125 10.625 2.25C10.625 2.86875 10.4169 3.39844 10.0008 3.83906C9.58464 4.27969 9.08438 4.5 8.5 4.5ZM14.875 4.5C14.2906 4.5 13.7904 4.27969 13.3742 3.83906C12.9581 3.39844 12.75 2.86875 12.75 2.25C12.75 1.63125 12.9581 1.10156 13.3742 0.660938C13.7904 0.220313 14.2906 0 14.875 0C15.4594 0 15.9596 0.220313 16.3758 0.660938C16.7919 1.10156 17 1.63125 17 2.25C17 2.86875 16.7919 3.39844 16.3758 3.83906C15.9596 4.27969 15.4594 4.5 14.875 4.5Z\"\n fill=\"white\"\n />\n </svg>\n );\n};\n\nexport default AppsIcon;\n","import React, { useState, useMemo } from 'react';\nimport { Box } from '@mui/material';\nimport AppsIcon from '../../Assets/AppsIcon';\nimport { navbarWidths } from '../../config';\nimport { classes } from '../../styles';\nimport AppMenuItems from './AppMenuItems';\n\nconst AppMenu = ({ navbarState }: { navbarState: keyof typeof navbarWidths }) => {\n const [appMenuAnchorEl, setAppMenuAnchorEl] = useState<null | HTMLElement>(null);\n const isRecruit = useMemo(\n () =>\n !window.location.href.includes('search/advanced') && !window.location.href.includes('engage'),\n []\n );\n const logo = useMemo(() => {\n if (isRecruit) {\n return navbarState === 'expanded' ? ':RECRUIT' : ':RE';\n } else {\n return navbarState === 'expanded' ? ':ENGAGE' : ':EN';\n }\n }, [isRecruit, navbarState]);\n\n return (\n <>\n <Box\n sx={{\n ...classes.appMenuContainer,\n ...(navbarState === 'collapsed' && classes.appMenuContainerCollapsed)\n }}\n onClick={(e) => setAppMenuAnchorEl(e.currentTarget)}\n id={isRecruit ? `logo-name-dropdown-button` : `engage-logo-button`}\n >\n <span>{logo}</span>\n {navbarState === 'expanded' && <AppsIcon />}\n </Box>\n {Boolean(appMenuAnchorEl) && (\n <AppMenuItems\n appMenuAnchorEl={appMenuAnchorEl}\n setAppMenuAnchorEl={setAppMenuAnchorEl}\n navbarState={navbarState}\n isRecruit={isRecruit}\n />\n )}\n </>\n );\n};\n\nexport default AppMenu;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, ClickAwayListener, Fade, Popper } from '@mui/material';\nimport { appMenuItems, navbarWidths } from '../../config';\nimport { classes } from '../../styles';\n\nconst AppMenuItems = ({\n appMenuAnchorEl,\n setAppMenuAnchorEl,\n navbarState,\n isRecruit\n}: {\n appMenuAnchorEl: HTMLElement | null;\n setAppMenuAnchorEl: Dispatch<SetStateAction<HTMLElement | null>>;\n navbarState: keyof typeof navbarWidths;\n isRecruit: boolean;\n}) => {\n return (\n <ClickAwayListener onClickAway={() => setAppMenuAnchorEl(null)}>\n <Popper\n open={Boolean(appMenuAnchorEl)}\n anchorEl={appMenuAnchorEl}\n placement={navbarState === 'expanded' ? 'bottom' : 'right-start'}\n transition\n sx={{ zIndex: 1245 }}\n >\n {({ TransitionProps }) => (\n <Fade {...TransitionProps} timeout={350}>\n <Box\n sx={{\n ...classes.appMenuItemsContainer,\n ...(navbarState === 'collapsed' && classes.appMenuItemsContainerCollapsed)\n }}\n >\n {appMenuItems(isRecruit).map(\n (item) =>\n item && (\n <a href={item.link} key={item.title} target={item.target}>\n {item.title}\n </a>\n )\n )}\n </Box>\n </Fade>\n )}\n </Popper>\n </ClickAwayListener>\n );\n};\n\nexport default AppMenuItems;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, IconButton } from '@mui/material';\nimport ArrowBackIosIcon from '@mui/icons-material/ArrowBackIos';\nimport ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';\nimport { navbarWidths } from '../config';\nimport { classes } from '../styles';\n\nconst ExpandCollapseButton = ({\n navbarState,\n setNavbarState,\n setChildState\n}: {\n navbarState: keyof typeof navbarWidths;\n setNavbarState: Dispatch<SetStateAction<keyof typeof navbarWidths>>;\n setChildState: Dispatch<SetStateAction<[number, null | HTMLElement]>>;\n}) => {\n const handleNavbarStateChange = (state: typeof navbarState) => {\n if (state === 'expanded') {\n setChildState([-1, null]);\n }\n localStorage.setItem('navbarState', state);\n setNavbarState(state);\n };\n return (\n <Box\n sx={{\n ...classes.expandCollapseButtonContainer,\n left: `${navbarWidths[navbarState] - 15}px`\n }}\n >\n {navbarState === 'expanded' ? (\n <IconButton\n onClick={() => handleNavbarStateChange('collapsed')}\n sx={classes.expandCollapseButton}\n >\n <ArrowBackIosIcon sx={{ marginLeft: '5px' }} />\n </IconButton>\n ) : (\n <IconButton\n onClick={() => handleNavbarStateChange('expanded')}\n sx={classes.expandCollapseButton}\n >\n <ArrowForwardIosIcon />\n </IconButton>\n )}\n </Box>\n );\n};\n\nexport default ExpandCollapseButton;\n","import React from 'react';\nimport { Box, Popper, ClickAwayListener, Fade } from '@mui/material';\nimport { classes } from '../../styles';\nimport { TMenuItems } from '../../config';\n\nconst CollapsedNavigationChildren = ({\n menuItems,\n activeChild,\n childState,\n handleChildPopperState\n}: {\n menuItems: TMenuItems;\n activeChild: string;\n childState: [number, null | HTMLElement];\n handleChildPopperState: (index: number, anchorEl: HTMLElement | null) => void;\n}) => {\n if (childState[0] === -1) return null;\n return (\n <ClickAwayListener onClickAway={() => handleChildPopperState(-1, null)}>\n <Popper\n open={childState[0] !== -1}\n anchorEl={childState[1]}\n placement=\"right-start\"\n transition\n sx={{ zIndex: 1400 }}\n >\n {({ TransitionProps }) => (\n <Fade {...TransitionProps} timeout={350}>\n <Box sx={classes.collapsedNavigationChildContainer}>\n {menuItems[childState[0]]?.submenu?.map((subItem) => {\n return (\n <a href={subItem.url} key={subItem.title}>\n <Box sx={{ ...(activeChild === subItem.title && { fontWeight: 700 }) }}>\n {subItem.title}\n </Box>\n </a>\n );\n })}\n </Box>\n </Fade>\n )}\n </Popper>\n </ClickAwayListener>\n );\n};\n\nexport default CollapsedNavigationChildren;\n","import React from 'react';\nimport { Box, Collapse } from '@mui/material';\nimport { classes } from '../../styles';\nimport { TMenuItem } from '../../config';\n\nconst NavigationChildren = ({\n item,\n expandedParents,\n activeItem\n}: {\n item: TMenuItem;\n expandedParents: string[];\n activeItem: {\n parent: string;\n child: string;\n };\n}) => {\n if (!(item.submenu && item.submenu.length > 0)) {\n return null;\n }\n return (\n <Collapse in={expandedParents.includes(item.title)}>\n <Box sx={classes.menuItemChildrenContainer}>\n {item?.submenu.map((subItem) => {\n return (\n <a href={subItem.url} key={subItem.title} id={`${subItem?.id ? subItem?.id : ''}`}>\n <Box\n sx={{\n ...classes.menuItemChild,\n ...(activeItem.child === subItem.title && classes.activeItem)\n }}\n >\n <span>{subItem.title}</span>\n </Box>\n </a>\n );\n })}\n </Box>\n </Collapse>\n );\n};\n\nexport default NavigationChildren;\n","import React, { useEffect, useState, useCallback, Dispatch, SetStateAction, useMemo } from 'react';\nimport { Box } from '@mui/material';\nimport HomeOutlinedIcon from '@mui/icons-material/HomeOutlined';\nimport { defaultMenuItems, navbarWidths } from '../../config';\nimport { classes } from '../../styles';\nimport NavigationParent from './NavigationParent';\nimport NavigationChildren from './NavigationChildren';\nimport CollapsedNavigationChildren from './CollapsedNavigationChildren';\nimport { formatUserPermissionsAsArray } from '../../../../Components/Utilities/formatUserPermissions';\nimport { IPermissions } from '../../../../Job/types';\n\nconst IS_ENGAGE_URL =\n window.location.pathname.includes('/admin/search/advanced') ||\n window.location.pathname.includes('/admin/engage');\n\nconst NavigationItems = ({\n navbarState,\n childState,\n setChildState,\n userPermissions,\n isAdminUser,\n aiStudioEnabled,\n newEngageEnabled\n}: {\n navbarState: keyof typeof navbarWidths;\n childState: [number, null | HTMLElement];\n setChildState: Dispatch<SetStateAction<[number, null | HTMLElement]>>;\n userPermissions: { roles: IPermissions[] };\n isAdminUser: boolean;\n aiStudioEnabled: boolean;\n newEngageEnabled: boolean;\n}) => {\n const [expandedParents, setExpandedParents] = useState<string[]>(\n localStorage.getItem('expandedParents')\n ? JSON.parse(localStorage.getItem('expandedParents') as string)\n : []\n );\n const [activeItem, setActiveItem] = useState({\n parent: '',\n child: ''\n });\n\n const filterMenuItems = useCallback(\n (userPermissions: string[]) => {\n let filteredMenuItems = defaultMenuItems(newEngageEnabled, IS_ENGAGE_URL);\n if (!isAdminUser && !IS_ENGAGE_URL) {\n filteredMenuItems = filteredMenuItems.filter((item) => item.title !== 'Tools');\n }\n filteredMenuItems = filteredMenuItems.map((item) => {\n if (item.submenu && item.submenu.length > 0) {\n item.submenu = item.submenu.filter((subItem) => {\n if (!subItem.permissions) return true;\n return subItem.permissions.some((permission) => userPermissions.includes(permission));\n });\n }\n return item;\n });\n filteredMenuItems = filteredMenuItems.filter(\n (item) => item.submenu && item.submenu.length > 0\n );\n return filteredMenuItems;\n },\n [isAdminUser, newEngageEnabled]\n );\n const menuItems = useMemo(\n () => filterMenuItems(formatUserPermissionsAsArray(userPermissions)),\n [filterMenuItems, userPermissions]\n );\n\n const discoverActiveItem = useCallback(() => {\n const isActive = (regex: RegExp) =>\n regex.test(window.location.pathname + window.location.search);\n if (isActive(/admin\\.?$|\\/admin\\?/)) {\n setActiveItem({\n parent: 'dashboard',\n child: 'none'\n });\n }\n defaultMenuItems(newEngageEnabled, IS_ENGAGE_URL).forEach((item) => {\n if (item.submenu && item.submenu.length > 0) {\n item.submenu.forEach((subItem) => {\n if (isActive(new RegExp(subItem.active))) {\n setActiveItem({\n parent: item.title,\n child: subItem.title\n });\n setExpandedParents((prev) =>\n prev.includes(item.title) ? prev : [...prev, item.title]\n );\n }\n });\n }\n });\n }, [newEngageEnabled]);\n\n useEffect(() => {\n discoverActiveItem();\n }, [discoverActiveItem]);\n\n const handleChildPopperState = (index: number, anchorEl: HTMLElement | null) => {\n if (childState[0] === index) {\n setChildState([-1, null]);\n } else {\n setChildState([index, anchorEl]);\n }\n };\n\n return (\n <>\n <Box\n sx={{\n ...classes.navigationItemsContainer,\n ...(navbarState === 'collapsed' && classes.navigationItemsContainerCollapsed),\n ...(aiStudioEnabled && { marginBottom: '100px' })\n }}\n >\n {!IS_ENGAGE_URL && (\n <a href={activeItem.parent === 'dashboard' ? '#' : '/admin'}>\n <Box\n sx={{\n ...classes.menuItemParent,\n ...(activeItem.parent === 'dashboard' && classes.activeParent),\n ...(navbarState === 'collapsed' && classes.menuItemParentCollapsed)\n }}\n >\n <HomeOutlinedIcon />\n <span>Dashboard</span>\n </Box>\n </a>\n )}\n {menuItems &&\n menuItems.map((item, index) => (\n <Box key={item.title}>\n <NavigationParent\n item={item}\n expandedParents={expandedParents}\n setExpandedParents={setExpandedParents}\n navbarState={navbarState}\n activeParent={activeItem.parent}\n onCollapsedClick={(currentTarget) => handleChildPopperState(index, currentTarget)}\n />\n {navbarState === 'expanded' && (\n <NavigationChildren\n item={item}\n expandedParents={expandedParents}\n activeItem={activeItem}\n />\n )}\n </Box>\n ))}\n </Box>\n {menuItems && navbarState === 'collapsed' && (\n <CollapsedNavigationChildren\n menuItems={menuItems}\n activeChild={activeItem.child}\n childState={childState}\n handleChildPopperState={handleChildPopperState}\n />\n )}\n </>\n );\n};\n\nexport default NavigationItems;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box } from '@mui/material';\nimport KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown';\nimport KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight';\nimport PersonSearchOutlinedIcon from '@mui/icons-material/PersonSearchOutlined';\nimport AdminPanelSettingsOutlinedIcon from '@mui/icons-material/AdminPanelSettingsOutlined';\nimport BuildOutlinedIcon from '@mui/icons-material/BuildOutlined';\nimport { classes } from '../../styles';\nimport { TMenuItem, navbarWidths } from '../../config';\nimport HomeOutlinedIcon from '@mui/icons-material/HomeOutlined';\n\nconst NavigationParent = ({\n item,\n expandedParents,\n setExpandedParents,\n navbarState,\n activeParent,\n onCollapsedClick\n}: {\n item: TMenuItem;\n expandedParents: string[];\n setExpandedParents: Dispatch<SetStateAction<string[]>>;\n navbarState: keyof typeof navbarWidths;\n activeParent: string;\n onCollapsedClick: (currentTarget: HTMLElement) => void;\n}) => {\n const highlightActiveParent = (title: string) =>\n navbarState === 'collapsed' ? activeParent === title : expandedParents.includes(title);\n\n const displayExpandCollapseIcon = (item: TMenuItem) =>\n item.submenu && item.submenu.length > 0 && navbarState === 'expanded';\n\n const renderIcon = (icon: string) => {\n switch (icon) {\n case 'people_search':\n return <PersonSearchOutlinedIcon />;\n case 'shield':\n return <AdminPanelSettingsOutlinedIcon />;\n case 'spanner':\n return <BuildOutlinedIcon sx={{ fontSize: '21px !important' }} />;\n case 'home':\n return <HomeOutlinedIcon />;\n default:\n return null;\n }\n };\n\n const handleParentClick = (title: string, e: React.MouseEvent<HTMLElement, MouseEvent>) => {\n if (navbarState === 'collapsed') {\n e.stopPropagation();\n onCollapsedClick(e.currentTarget);\n return;\n }\n if (expandedParents.includes(title)) {\n const tempExpandedParents = expandedParents.filter((item) => item !== title);\n setExpandedParents(tempExpandedParents);\n localStorage.setItem('expandedParents', JSON.stringify(tempExpandedParents));\n } else {\n const tempExpandedParents = [...expandedParents, title];\n setExpandedParents(tempExpandedParents);\n localStorage.setItem('expandedParents', JSON.stringify(tempExpandedParents));\n }\n };\n return (\n <Box\n key={item.title}\n sx={{\n ...classes.menuItemParent,\n ...(highlightActiveParent(item.title) && classes.activeParent),\n ...(navbarState === 'collapsed' && classes.menuItemParentCollapsed)\n }}\n onClick={(e) => handleParentClick(item.title, e)}\n id={`${item?.id ? item?.id : ''}`}\n >\n {renderIcon(item.icon)}\n <span>{item.title}</span>\n {displayExpandCollapseIcon(item) && (\n <Box sx={classes.menuItemExpandCollapseIcon}>\n {expandedParents.includes(item.title) ? (\n <KeyboardArrowDownIcon />\n ) : (\n <KeyboardArrowRightIcon />\n )}\n </Box>\n )}\n </Box>\n );\n};\n\nexport default NavigationParent;\n","import React, { useState, useEffect } from 'react';\nimport { Box } from '@mui/material';\nimport { navbarWidths } from './config';\nimport { classes } from './styles';\nimport AppMenu from './Components/AppMenu/AppMenu';\nimport NavigationItems from './Components/NavigationItems/NavigationItems';\nimport ExpandCollapseButton from './Components/ExpandCollapseButton';\nimport AIStudioModal from '../../../AIStudio/AIStudioModal/AIStudioModal';\n\nconst Navbar = ({\n userPermissions,\n isAdminUser,\n aiStudioSettings,\n newEngageEnabled\n}: {\n userPermissions: string;\n isAdminUser: boolean;\n aiStudioSettings: {\n aiStudioEnabled: boolean;\n aiSummariesEnabled: boolean;\n showPreview: boolean;\n aiStudioFrenchEnabled: boolean;\n };\n newEngageEnabled: boolean;\n}) => {\n const [navbarState, setNavbarState] = useState<keyof typeof navbarWidths>(\n (localStorage.getItem('navbarState') as keyof typeof navbarWidths) || 'expanded'\n );\n const [childState, setChildState] = useState<[number, null | HTMLElement]>([-1, null]);\n\n useEffect(() => {\n const handleResize = () => {\n if (window.innerWidth < 866) {\n setNavbarState('collapsed');\n localStorage.setItem('navbarState', 'collapsed');\n } else {\n setNavbarState('expanded');\n localStorage.setItem('navbarState', 'expanded');\n setChildState([-1, null]);\n }\n };\n\n !localStorage.getItem('navbarState') && handleResize();\n\n window.addEventListener('resize', handleResize);\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return (\n <Box id=\"react-navbar\">\n <ExpandCollapseButton\n navbarState={navbarState}\n setNavbarState={setNavbarState}\n setChildState={setChildState}\n />\n <Box sx={{ ...classes.navbarContainer, width: `${navbarWidths[navbarState]}px` }}>\n <AppMenu navbarState={navbarState} />\n <NavigationItems\n userPermissions={JSON.parse(userPermissions)}\n navbarState={navbarState}\n childState={childState}\n setChildState={setChildState}\n isAdminUser={isAdminUser}\n aiStudioEnabled={aiStudioSettings.aiStudioEnabled}\n newEngageEnabled={newEngageEnabled}\n />\n <AIStudioModal\n aiStudioEnabled={aiStudioSettings.aiStudioEnabled}\n aiSummariesEnabled={aiStudioSettings.aiSummariesEnabled}\n aiStudioFrenchEnabled={aiStudioSettings.aiStudioFrenchEnabled}\n showPreview={aiStudioSettings.showPreview}\n navbarState={navbarState}\n />\n </Box>\n </Box>\n );\n};\n\nexport default Navbar;\n","import { Box, Accordion, AccordionSummary, AccordionDetails, Typography } from '@mui/material';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport React, { RefObject, UIEvent } from 'react';\nimport Api from '../../../Dashboard/API';\nimport ActivityFeedItem from './ActivityFeedItem';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport dayjs from 'dayjs';\nimport isToday from 'dayjs/plugin/isToday';\nimport { useInfiniteQuery } from '@tanstack/react-query';\nimport LoadingButton from '../../../Components/Buttons/LoadingButton';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\n\ndayjs.extend(isToday);\n\ninterface IProps {\n parentRef: RefObject<HTMLDivElement>;\n}\n\nfunction ActivityFeed({ parentRef }: IProps) {\n let isExecuted = false;\n const {\n isInitialLoading,\n data,\n fetchNextPage,\n isFetchingNextPage,\n hasNextPage,\n status,\n refetch\n } = useInfiniteQuery({\n queryKey: ['getActivityFeed'],\n queryFn: ({ queryKey, pageParam = null }) => {\n const data = Api.getActivityFeed({ page: pageParam });\n return data;\n },\n getNextPageParam: (lastPage) => {\n const lastDate = lastPage[lastPage?.length - 1];\n const lastActivity = lastDate.activities[lastDate.activities?.length - 1];\n return lastActivity.id || undefined;\n },\n onError: (error) => {\n console.error(error);\n },\n onSuccess: () => {\n scrollToBottom();\n },\n staleTime: Infinity,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n enabled: false\n });\n\n const handleScroll = (event: UIEvent<HTMLElement>) => {\n if (!event) return;\n const { scrollTop, scrollHeight, clientHeight } = event.currentTarget;\n if (scrollTop + clientHeight >= scrollHeight - 50) {\n if (!isFetchingNextPage && hasNextPage) {\n fetchNextPage();\n }\n }\n };\n\n const scrollToBottom = () => {\n window.requestAnimationFrame(() => {\n if (!parentRef.current) return;\n parentRef.current.scrollTo({ top: parentRef.current.scrollHeight, behavior: 'smooth' });\n });\n };\n\n const handleOnTransitionEnd = () => {\n if (!isExecuted) {\n scrollToBottom();\n isExecuted = true;\n }\n };\n\n return (\n <Box sx={{ width: '260px' }}>\n <Accordion sx={styles.accordian} onTransitionEnd={handleOnTransitionEnd}>\n <AccordionSummary\n expandIcon={<ExpandMoreIcon />}\n sx={styles.accordionButton}\n id=\"activity-feed-accordion\"\n >\n <Typography\n sx={{\n fontFamily: 'Source Sans Pro',\n fontSize: '18px',\n fontWeight: '700',\n color: '#666666'\n }}\n >\n Activity Feed\n </Typography>\n </AccordionSummary>\n <AccordionDetails sx={styles.activitiesContainer} onScroll={handleScroll}>\n {!data && (\n <LoadingButton\n sx={{\n ...sharedClasses.genericButton,\n fontSize: '14px',\n minWidth: '110px'\n }}\n task={refetch}\n id=\"load-feed-button\"\n >\n Load Feed\n </LoadingButton>\n )}\n {!isInitialLoading &&\n data?.pages.map((page) =>\n page.map(({ date, activities }, i) => (\n <Box key={date}>\n <Box\n sx={{ ...styles.date, marginTop: `${i === 0 ? 'inherit' : theme.spacing(2)}` }}\n >\n {dayjs(date).isToday() ? 'Today' : dayjs(date).format('D MMM YYYY')}\n </Box>\n {activities.map((item, index) => (\n <ActivityFeedItem\n key={item.id}\n activity={item}\n isLast={index === activities.length - 1}\n />\n ))}\n </Box>\n ))\n )}\n </AccordionDetails>\n </Accordion>\n </Box>\n );\n}\n\nconst styles = {\n date: {\n textTransform: 'uppercase',\n color: '#333',\n marginBottom: theme.spacing(2),\n fontWeight: '600'\n },\n accordian: {\n boxShadow: '0px 4px 20px 3px #305A6F14',\n borderRadius: '6px !important',\n '& .MuiAccordionSummary-root.Mui-expanded': {\n minHeight: '40px !important'\n }\n },\n accordionButton: {\n padding: '0 !important',\n width: '100%',\n minHeight: '40px',\n '& .MuiAccordionSummary-content': {\n margin: '20px !important'\n },\n '& .MuiAccordionSummary-expandIconWrapper': {\n marginRight: '10px !important'\n }\n },\n activitiesContainer: {\n maxHeight: '400px',\n overflow: 'auto',\n flexDirection: 'column',\n justifyContent: 'center',\n display: 'grid'\n }\n};\n\nexport default ActivityFeed;\n","import React from 'react';\nimport { IActivity } from '../../../Dashboard/types';\nimport { Box } from '@mui/material';\nimport dayjs from 'dayjs';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport EventCircle from '../../../Dashboard/assets/EventCircle';\nimport dompurify from 'dompurify';\nimport { connectingLine } from '../../../shared/styleClasses';\n\nfunction ActivityFeedItem({ activity, isLast }: { activity: IActivity; isLast: boolean }) {\n return (\n <Box\n display=\"flex\"\n flexDirection=\"column\"\n justifyContent=\"space-between\"\n alignItems=\"flex-start\"\n >\n <Box\n display=\"flex\"\n width=\"100%\"\n justifyContent=\"space-between\"\n alignItems=\"flex-start\"\n gap=\"24px\"\n >\n <Box display=\"flex\" height=\"100%\">\n <Box sx={{ ...styles.lineContainer, ...(!isLast && { ...styles.connectingLine }) }}>\n <EventCircle />\n </Box>\n <Box sx={styles.infoContainer}>\n <Box>{dayjs(activity.timestamp).format('hh:mma')}</Box>\n <Box>{activity.actor}</Box>\n <Box dangerouslySetInnerHTML={{ __html: dompurify.sanitize(activity.activity_html) }} />\n </Box>\n </Box>\n </Box>\n </Box>\n );\n}\n\nconst styles = {\n lineContainer: {\n marginRight: theme.spacing(2),\n position: 'relative',\n '& svg': {\n width: '30px',\n height: '30px'\n }\n },\n connectingLine,\n infoContainer: {\n '& > div:nth-child(1)': {\n color: '#666',\n fontWeight: '700',\n fontSize: '13px',\n textTransform: 'uppercase'\n },\n '& > div:nth-child(2) a': {\n color: '#333',\n fontWeight: '700',\n fontSize: '18px'\n },\n '& > div:nth-child(3)': {\n color: '#666',\n fontSize: '14px'\n }\n }\n};\n\nexport default ActivityFeedItem;\n","import { Box } from '@mui/material';\nimport React, { useState, useEffect } from 'react';\nimport Api from '../../../Dashboard/API';\nimport { IRecentlyViewed } from '../../../Dashboard/types';\nimport { classes } from '../styles';\nimport RecentlyViewedItem from './RecentlyViewedItem';\n\nfunction RecentlyViewed() {\n const [recentlyViewedList, setRecentlyViewedList] = useState<IRecentlyViewed[]>([]);\n\n async function getRecentlyViewed() {\n try {\n const response = await Api.getRecentlyViewed();\n setRecentlyViewedList(response);\n } catch (error) {\n console.log(error);\n }\n }\n\n useEffect(() => {\n getRecentlyViewed();\n }, []);\n\n return (\n <Box sx={classes.recentlyViewedContainer}>\n <Box sx={classes.title}>Recently Viewed</Box>\n {recentlyViewedList.map((item) => (\n <RecentlyViewedItem key={item.id} view={item} />\n ))}\n </Box>\n );\n}\n\nexport default RecentlyViewed;\n","import React from 'react';\nimport { IRecentlyViewed } from '../../../Dashboard/types';\nimport { Box, IconButton, Link, Button } from '@mui/material';\nimport { theme } from '../../../../ThemeContext/ThemeObject';\nimport WorkIcon from '@mui/icons-material/Work';\nimport AccountTreeIcon from '@mui/icons-material/AccountTree';\nimport ContactPageIcon from '@mui/icons-material/ContactPage';\nimport PersonIcon from '@mui/icons-material/Person';\nimport HowToRegIcon from '@mui/icons-material/HowToReg';\nimport EventNoteIcon from '@mui/icons-material/EventNote';\nimport ContactsIcon from '@mui/icons-material/Contacts';\n\nfunction RecentlyViewedItem({ view }: { view: IRecentlyViewed }) {\n const renderColor = (icon: string) => {\n switch (icon) {\n case 'builder':\n case 'jobs':\n return '#FFA085 !important';\n case 'applications':\n case 'search_index':\n case 'new_applications':\n return '#F478FF !important';\n case 'entities':\n return '#B080FF !important';\n case 'users':\n return '#85F0A7 !important';\n case 'events':\n return '#FFC700 !important';\n case 'forms':\n case 'requisitions':\n case 'requisition_forms':\n case 'approvals':\n return '#91CAFF !important';\n case 'candidates':\n return '#F78CA6 !important';\n default:\n return null;\n }\n };\n\n const renderIcon = (icon: string) => {\n switch (icon) {\n case 'builder':\n case 'jobs':\n return <WorkIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n case 'applications':\n case 'search_index':\n case 'new_applications':\n return <ContactPageIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n case 'entities':\n return <AccountTreeIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n case 'users':\n return <PersonIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n case 'events':\n return <EventNoteIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n case 'forms':\n case 'requisitions':\n case 'requisition_forms':\n case 'approvals':\n return <HowToRegIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n case 'candidates':\n return <ContactsIcon sx={{ fontSize: '13px !important', color: '#FFFFFF' }} />;\n default:\n return null;\n }\n };\n\n return (\n <Box sx={{ display: 'flex', alignItems: 'flex-start', padding: '0px 14px' }}>\n <IconButton\n sx={{\n fontSize: '15px !important',\n padding: '5px !important',\n backgroundColor: renderColor(view.controller),\n borderRadius: '50% !important',\n '&:hover': { backgroundColor: renderColor(view.controller), cursor: 'default' }\n }}\n >\n {renderIcon(view.controller)}\n </IconButton>\n <Link href={view.request_url} underline=\"none\" sx={styles.infoContainer}>\n {view.caption}\n </Link>\n </Box>\n );\n}\n\nconst styles = {\n infoContainer: {\n marginLeft: theme.spacing(2),\n color: '#666666 !important',\n fontWeight: '400 !important',\n fontSize: '13px !important'\n }\n};\n\nexport default RecentlyViewedItem;\n","import React, { useState, useEffect, useRef, useReducer } from 'react';\nimport { Box, Stack } from '@mui/material';\nimport { widgetsContainerPadding, widgetsbarWidths } from './config';\nimport { classes } from './styles';\nimport ShowRightMenu from '../Header/Components/ShowRightMenu';\nimport ActivityFeed from './ActivityFeed/ActivityFeed';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';\nimport { StaticDatePicker } from '@mui/x-date-pickers/StaticDatePicker';\nimport IconButton from '@mui/material/IconButton';\nimport AddCircleIcon from '@mui/icons-material/AddCircle';\nimport Popover from '@mui/material/Popover';\nimport RecentlyViewed from './RecentlyViewed/RecentlyViewed';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { InitialScoutCalendarState, ScoutCalendarReducer } from '../../../ScoutCalendar/reducer';\nimport EventCreated from '../../../ScoutCalendar/EventCreated';\nimport CreateEvent from '../../../ScoutCalendar/CreateEvent/CreateEvent';\nimport { EventActionType, ScoutCalendarAction } from '../../../ScoutCalendar/types';\nimport { useEvents } from '../../hooks';\n\nconst BASE_URL = window.location.origin;\nconst queryClient = new QueryClient();\nconst ENGAGE_URL = window.location.pathname.includes('/admin/search/advanced');\n\nconst Widgetsbar = ({\n userPermissions,\n calendlyEnabled,\n apiKey,\n userTimezone\n}: {\n userPermissions: string;\n calendlyEnabled: boolean;\n apiKey: string;\n userTimezone: string;\n}) => {\n const scrollRef = useRef<HTMLDivElement>(null);\n const [widgetsbarState, setWidgetsbarState] = useState<keyof typeof widgetsbarWidths>(\n (localStorage.getItem('widgetsbarState') as keyof typeof widgetsbarWidths) || 'expanded'\n );\n const [selectedDate, setSelectedDate] = useState<Dayjs | null>(dayjs());\n const [month, setMonth] = useState(dayjs().format('MMM'));\n const [actionsAnchorEl, setActionsAnchorEl] = useState(null);\n\n const [ScoutCalendarState, dispatch] = useReducer(\n ScoutCalendarReducer,\n InitialScoutCalendarState\n );\n const { weekStart, showCreateEventModal, createMultipleEvents } = ScoutCalendarState;\n const [eventCreated, setEventCreated] = useState<boolean>(false);\n\n const { data: events } = useEvents({\n weekStart,\n onError: (error: string) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `There was an error getting events, ${error}`, state: 'error' }\n }),\n apiKey\n });\n\n const handleDateClick = (date: Dayjs | null) => {\n if (calendlyEnabled) {\n return;\n }\n window.location.href = `${BASE_URL}/admin/calendar/show/${date?.format('YYYY-MM-DD')}`;\n };\n\n const handleAddEvent = (type: EventActionType) => {\n if (calendlyEnabled) {\n window.location.href = `${BASE_URL}/admin/calendly`;\n return;\n }\n const actions: Record<EventActionType, ScoutCalendarAction> = {\n single: { type: 'SET_SHOW_CREATE_EVENT_MODAL', payload: true },\n multiple: { type: 'CREATE_MULTIPLE_EVENTS', payload: true }\n };\n\n dispatch(actions[type]);\n };\n\n useEffect(() => {\n const calendarRegex = /\\/admin\\/calendar\\/show\\/.*/;\n if (calendarRegex.test(window.location.pathname)) {\n const url = window.location.pathname.split('/');\n const date = dayjs(url[url.length - 1]);\n setSelectedDate(date);\n setMonth(date.format('MMM'));\n }\n\n const handleResize = () => {\n if (window.innerWidth < 866) {\n setWidgetsbarState('collapsed');\n localStorage.setItem('widgetsbarState', 'collapsed');\n const event = new Event('onWidgetBarChange');\n window.dispatchEvent(event);\n }\n };\n\n !localStorage.getItem('widgetsbarState') && handleResize();\n\n window.addEventListener('resize', handleResize);\n\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n useEffect(() => {\n dispatch({ type: 'SET_APIKEY', payload: apiKey });\n }, [apiKey]);\n\n return (\n <QueryClientProvider client={queryClient}>\n <>\n <Stack\n id=\"react-widgetsbar\"\n ref={scrollRef}\n spacing={3}\n alignItems=\"center\"\n paddingInline={widgetsContainerPadding[widgetsbarState]}\n sx={{\n ...classes.widgetsbarContainer,\n width: `${widgetsbarWidths[widgetsbarState]}px`,\n '&::-webkit-scrollbar': {\n display: 'none'\n },\n display: ENGAGE_URL ? 'none' : 'flex'\n }}\n >\n <Box\n sx={{\n ...classes.hideButtonContainer,\n padding: widgetsbarState === 'collapsed' ? '0 !important' : '0 12px 30px'\n }}\n >\n <ShowRightMenu\n widgetsbarState={widgetsbarState}\n setWidgetsbarState={setWidgetsbarState}\n />\n </Box>\n {widgetsbarState === 'expanded' && (\n <>\n <Box sx={classes.datePicker}>\n <Stack alignItems=\"center\" sx={classes.addButton}>\n <IconButton\n aria-label=\"Add new action button\"\n onClick={(e) => {\n setActionsAnchorEl(e.currentTarget);\n }}\n sx={{ padding: 0 }}\n disableRipple\n >\n <AddCircleIcon sx={{ color: '#666666', fontSize: '20px !important' }} />\n </IconButton>\n </Stack>\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <StaticDatePicker\n displayStaticWrapperAs=\"desktop\"\n value={selectedDate}\n onChange={(newValue) => {\n setSelectedDate(newValue);\n handleDateClick(newValue);\n }}\n onMonthChange={(month) => setMonth(month.format('MMM'))}\n slotProps={{\n layout: { sx: { minWidth: '260px', height: '300px' } },\n day: { sx: { width: '30px' } },\n calendarHeader: {\n ref(instance) {\n if (!instance) return;\n const year = selectedDate?.format('YYYY');\n instance.childNodes[0].textContent = `${month} ${year}`;\n }\n }\n }}\n />\n </LocalizationProvider>\n </Box>\n <Popover\n id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n sx={classes.actionsMenu}\n open={Boolean(actionsAnchorEl)}\n anchorEl={actionsAnchorEl}\n onClose={() => {\n setActionsAnchorEl(null);\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <span\n onClick={() => {\n setActionsAnchorEl(null);\n handleAddEvent('single');\n }}\n className=\"add-event-button\"\n >\n Add event\n </span>\n <span\n onClick={() => {\n setActionsAnchorEl(null);\n handleAddEvent('multiple');\n }}\n className=\"add-multiple-event-button\"\n >\n Add multiple events\n </span>\n </Popover>\n </>\n )}\n {widgetsbarState === 'expanded' && <RecentlyViewed />}\n {userPermissions.includes('View activity feed') && widgetsbarState === 'expanded' && (\n <ActivityFeed parentRef={scrollRef} />\n )}\n </Stack>\n\n {(showCreateEventModal || createMultipleEvents) && events && (\n <CreateEvent\n events={events}\n ScoutCalendarState={ScoutCalendarState}\n dispatch={dispatch}\n setEventCreated={setEventCreated}\n userTimezone={userTimezone}\n />\n )}\n <EventCreated\n open={eventCreated}\n onClose={() => {\n setEventCreated(false);\n dispatch({ type: 'RESET_STATE' });\n }}\n ScoutCalendarState={ScoutCalendarState}\n userTimezone={userTimezone}\n />\n </>\n </QueryClientProvider>\n );\n};\n\nexport default Widgetsbar;\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport Widgetsbar from './Widgetsbar';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\nexport interface WidgetsbarWrapperProps {\n userPermissions: string;\n calendlyEnabled: boolean;\n apiKey: string;\n userTimezone: string;\n}\n\nexport default function WidgetsbarWrapper({\n userPermissions,\n calendlyEnabled,\n apiKey,\n userTimezone\n}: WidgetsbarWrapperProps) {\n return (\n <QueryClientProvider client={queryClient}>\n <Widgetsbar\n apiKey={apiKey}\n userPermissions={userPermissions}\n calendlyEnabled={calendlyEnabled}\n userTimezone={userTimezone}\n />\n </QueryClientProvider>\n );\n}\n","import React from 'react';\nimport SmartFormFields from './SmartFormFields';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\nexport default function EditFormPage({\n formId,\n userPermissions: userPermissions\n}: {\n formId: number;\n userPermissions: Record<string, Record<string, boolean>>;\n}) {\n const allRoles = userPermissions.roles.reduce(\n (acc, role) => {\n acc['paid_user'] = role.paid_role;\n role.feature_groups.forEach((group) => {\n acc[group.name] = acc[group.name] || {};\n group.permissions.forEach((permission) => (acc[group.name][permission] = true));\n });\n return acc;\n },\n {} as Record<string, Record<string, boolean> | string | boolean>\n );\n\n allRoles['user_type'] = userPermissions.roles[0]?.user_type;\n\n return (\n <QueryClientProvider client={queryClient}>\n <SmartFormFields formId={formId} userPermissions={allRoles} />\n </QueryClientProvider>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Box, CircularProgress, Modal, Button } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../API';\nimport { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';\nimport { SmartFormFieldsState, SmartFormFieldsAction } from '../../reducer';\n\nexport default function AddSystemField({\n formId,\n SmartFormFieldsState,\n dispatch\n}: {\n formId: number;\n SmartFormFieldsState: SmartFormFieldsState;\n dispatch: Dispatch<SmartFormFieldsAction>;\n}) {\n const queryClient = useQueryClient();\n\n const handleClose = () => {\n dispatch({ type: 'SET_SELECTED_SYSTEM_FIELD', payload: null });\n dispatch({ type: 'SET_SYSTEM_FIELD_ERROR', payload: '' });\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: { ...SmartFormFieldsState.modalsOpen, addSystemField: false }\n });\n };\n\n const { data: systemFields, isLoading: loadingSystemFields } = useQuery({\n queryKey: ['system fields'],\n queryFn: async () => {\n const { res } = await Api.getSystemFields();\n return res.system_fields.map(\n (field: { id: number; title: string }) => `${field.id} - ${field.title}`\n );\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Failed to fetch system fields, ${error}`,\n state: 'error'\n }\n })\n });\n\n const handleSubmit = async () => {\n if (!SmartFormFieldsState.selectedSystemField) {\n dispatch({ type: 'SET_SYSTEM_FIELD_ERROR', payload: 'This field is required' });\n return;\n }\n AddSystemField.mutate(SmartFormFieldsState.selectedSystemField);\n };\n\n const AddSystemField = useMutation({\n mutationFn: (selectedField: string) =>\n Api.addSystemField(formId, Number(selectedField.split('-')[0])),\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There has been an error creating the system field question, ${error}`,\n state: 'error'\n }\n }),\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'Field has been added',\n state: 'success'\n }\n });\n queryClient.invalidateQueries(['questions'], { exact: true });\n handleClose();\n }\n });\n\n return (\n <Modal\n open={SmartFormFieldsState.modalsOpen.addSystemField}\n onClose={handleClose}\n aria-labelledby=\"add-system-field-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box id=\"add-system-title\" sx={classes.actionModalHeader}>\n Add system field\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"add-system-modal-content\"\n aria-label=\"Add System Field Modal Content\"\n >\n <Box role=\"form\" id=\"add-system-form\" aria-label=\"Add System Field form\">\n <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }}>\n <Virtualize\n value={SmartFormFieldsState.selectedSystemField}\n passOptions={systemFields}\n setValue={(value: string) => {\n dispatch({ type: 'SET_SELECTED_SYSTEM_FIELD', payload: value });\n dispatch({ type: 'SET_SYSTEM_FIELD_ERROR', payload: '' });\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '700px',\n marginTop: '20px'\n }}\n label=\"Select a system field\"\n loading={loadingSystemFields}\n loadingText=\"Loading system fields...\"\n />\n\n {SmartFormFieldsState.systemFieldError && (\n <Box sx={{ ...classes.formError, top: '63px' }}>\n {SmartFormFieldsState.systemFieldError}\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n <Box sx={classes.modalFooterSmallerSection}>\n <Button id=\"close-add-system-button\" sx={classes.modalCancelButton} onClick={handleClose}>\n Cancel\n </Button>\n <Button\n id=\"submit-add-system-button\"\n type=\"submit\"\n sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n onClick={handleSubmit}\n >\n {AddSystemField.isLoading ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Box, CircularProgress, Modal, Button } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport SelectField from '../../../Components/CustomUIElements/SelectField';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../API';\nimport { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';\nimport { SmartFormFieldsState, SmartFormFieldsAction } from '../../reducer';\n\nconst sourceTypes = ['Smart Form', 'Approval Template', 'Job'];\n\nexport default function ImportFields({\n formId,\n SmartFormFieldsState,\n dispatch\n}: {\n formId: number;\n SmartFormFieldsState: SmartFormFieldsState;\n dispatch: Dispatch<SmartFormFieldsAction>;\n}) {\n const [sourceType, setSourceType] = useState<string>('Smart Form');\n const queryClient = useQueryClient();\n\n const handleClose = () => {\n dispatch({ type: 'SET_SELECTED_SOURCE_ID', payload: null });\n dispatch({ type: 'SET_SYSTEM_FIELD_ERROR', payload: '' });\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: { ...SmartFormFieldsState.modalsOpen, importFields: false }\n });\n };\n\n const { data: sources, isLoading: loadingSources } = useQuery({\n queryKey: ['sources', sourceType],\n queryFn: async () => {\n let res = null;\n switch (sourceType) {\n case 'Smart Form':\n res = await Api.getSmartForms({ limit: 100 });\n return res.res.smart_forms.map(\n (form: { id: number; title: string }) => `${form.id} - ${form.title}`\n );\n case 'Approval Template':\n res = await Api.getRequisitionForms({ limit: 100 });\n return res.res.requisition_forms.map(\n (form: { id: number; name: string }) => `${form.id} - ${form.name}`\n );\n case 'Job':\n res = await Api.getJobs({ limit: 100 });\n return res.res.jobs.map(\n (job: { reference: number; title: string }) => `${job.reference} - ${job.title}`\n );\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Failed to fetch sources, ${error}`,\n state: 'error'\n }\n })\n });\n\n const handleSubmit = async () => {\n if (!SmartFormFieldsState.selectedSourceId) {\n dispatch({ type: 'SET_SYSTEM_FIELD_ERROR', payload: 'This field is required' });\n return;\n }\n ImportFields.mutate(SmartFormFieldsState.selectedSourceId);\n };\n\n const ImportFields = useMutation({\n mutationFn: (selectedSourceId: string) =>\n Api.importFields(formId, sourceType, selectedSourceId.split('-')[0].trim()),\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There has been an error importing the fields, ${error}`,\n state: 'error'\n }\n }),\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'Fields have been imported',\n state: 'success'\n }\n });\n queryClient.invalidateQueries(['questions'], { exact: true });\n handleClose();\n }\n });\n\n return (\n <Modal\n open={SmartFormFieldsState.modalsOpen.importFields}\n onClose={handleClose}\n aria-labelledby=\"add-from-form-field-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <CloseIcon onClick={handleClose} sx={classes.closeIcon} />\n <Box id=\"import-fields-title\" sx={classes.actionModalHeader}>\n Import Fields\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"add-from-form-modal-content\"\n aria-label=\"Add Fields From Form Modal Content\"\n >\n <Box role=\"form\" id=\"import-fields-form\" aria-label=\"Import fields from source\">\n <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }}>\n <SelectField\n id=\"source-type-select\"\n label=\"Delay\"\n options={sourceTypes}\n value={sourceType}\n onChange={setSourceType}\n styles={{ width: '290px' }}\n />\n </Box>\n <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }}>\n <Virtualize\n value={SmartFormFieldsState.selectedSourceId}\n passOptions={sources || []}\n setValue={(value: string) => {\n dispatch({ type: 'SET_SELECTED_SOURCE_ID', payload: value });\n dispatch({ type: 'SET_SYSTEM_FIELD_ERROR', payload: '' });\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '700px',\n marginTop: '20px'\n }}\n label={`Select a ${sourceType}`}\n loading={loadingSources}\n loadingText=\"Loading sources...\"\n />\n\n {SmartFormFieldsState.systemFieldError && (\n <Box sx={{ ...classes.formError, top: '63px' }}>\n {SmartFormFieldsState.systemFieldError}\n </Box>\n )}\n </Box>\n </Box>\n </Box>\n <Box sx={classes.modalFooterSmallerSection}>\n <Button\n id=\"close-add-from-form-button\"\n sx={classes.modalCancelButton}\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-add-from-form-button\"\n type=\"submit\"\n sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n onClick={handleSubmit}\n >\n {ImportFields.isLoading ? <CircularProgress size={20} color=\"inherit\" /> : 'Confirm'}\n </Button>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { useState, useEffect, useRef, Dispatch, useCallback } from 'react';\nimport { Box, Modal, Button, Switch, CircularProgress, FormControlLabel } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { Virtualize } from '../../../Components/CustomUIElements/VirtualizedAutocomplete';\nimport {\n MultilineFormTextField,\n FormTextField\n} from '../../../Components/CustomUIElements/FormTextField';\nimport FormSelectField from '../../../Components/CustomUIElements/FormSelectField';\nimport { classes } from '../styles';\nimport { sharedClasses } from '../../../Components/CustomUIElements/sharedClasses';\nimport Api from '../../API';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n PointerSensor,\n useSensor,\n useSensors\n} from '@dnd-kit/core';\nimport {\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy\n} from '@dnd-kit/sortable';\nimport SortableChoice from '../../../EditJob/Questions/Modals/SortableChoice';\n// import { IUserPermissions } from '../../../Components/sharedTypes';\nimport { useQueryClient, useMutation } from '@tanstack/react-query';\nimport { useFieldChoiceList } from '../../../hooks/useFieldChoiceList';\nimport { SmartFormFieldsState, SmartFormFieldsAction } from '../../reducer';\nimport { IError } from '../../types';\n\nconst fieldTypeOptions = [\n 'Availability',\n 'Date',\n 'Text',\n 'Textarea',\n 'Radio Button',\n 'Select',\n 'Rank',\n 'Checkbox'\n];\n\nconst fieldTypeValues = {\n Select: 'select_field',\n Date: 'date_field',\n Text: 'text_field',\n 'Radio Button': 'radio_button_field',\n Rank: 'rank_field',\n Availability: 'availability_field',\n Checkbox: 'check_box_field',\n Textarea: 'text_area_field'\n};\n\nconst DateOptions = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\nexport default function NewField({\n formId,\n SmartFormFieldsState,\n dispatch,\n userPermissions\n}: {\n formId: number;\n SmartFormFieldsState: SmartFormFieldsState;\n dispatch: Dispatch<SmartFormFieldsAction>;\n userPermissions: Record<string, Record<string, boolean>>;\n}) {\n const [fieldType, setFieldType] = useState('');\n const [label, setLabel] = useState('');\n const [enabledSwitch, setEnabledSwitch] = useState(true);\n const [requiredSwitch, setRequiredSwitch] = useState(false);\n const [rateableSwitch, setRateableSwitch] = useState(false);\n const [confidentialSwitch, setConfidentialSwitch] = useState(false);\n const [weekDuration, setWeekDuration] = useState('Weekly');\n const [weekStartDay, setWeekStartDay] = useState<string>('Sunday');\n const [headingOne, setHeadingOne] = useState('');\n const [headingTwo, setHeadingTwo] = useState('');\n const [allowBreak, setAllowBreak] = useState('No');\n const [errorLabel, setErrorLabel] = useState('');\n const [errorField, setErrorField] = useState('');\n const [errorChoices, setErrorChoices] = useState('');\n const {\n choiceList,\n setChoiceList,\n addChoice,\n removeChoice,\n clearChoices,\n updateChoice,\n switchChoices\n } = useFieldChoiceList();\n\n const labelRef = useRef<HTMLInputElement>(null);\n const fieldTypeRef = useRef<HTMLInputElement>(null);\n const choicesRef = useRef<HTMLInputElement>(null);\n const queryClient = useQueryClient();\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n function handleDragEnd(event) {\n const { active, over } = event;\n switchChoices(active.id, over.id);\n }\n\n const getKeyByValue = (object, value) => {\n return Object.keys(object).find((key) => object[key] === value);\n };\n\n const setDefaultValue = useCallback(async () => {\n if (SmartFormFieldsState.editingQuestion) {\n setFieldType(getKeyByValue(fieldTypeValues, SmartFormFieldsState.editingQuestion.field_type));\n setLabel(SmartFormFieldsState.editingQuestion.title);\n setEnabledSwitch(SmartFormFieldsState.editingQuestion.enabled);\n setRequiredSwitch(SmartFormFieldsState.editingQuestion.required);\n setRateableSwitch(SmartFormFieldsState.editingQuestion.rateable);\n setConfidentialSwitch(SmartFormFieldsState.editingQuestion.confidential);\n setChoiceList(SmartFormFieldsState.editingQuestion.field_choices);\n if (SmartFormFieldsState.editingQuestion.availability_config) {\n const duration = SmartFormFieldsState.editingQuestion.availability_config.week_duration;\n setWeekDuration(duration.charAt(0).toUpperCase() + duration.slice(1));\n setWeekStartDay(\n DateOptions[SmartFormFieldsState.editingQuestion.availability_config.week_start_day]\n );\n setHeadingOne(SmartFormFieldsState.editingQuestion.availability_config.heading_1);\n setHeadingTwo(SmartFormFieldsState.editingQuestion.availability_config.heading_2);\n setAllowBreak(\n SmartFormFieldsState.editingQuestion.availability_config.allow_break === true\n ? 'Yes'\n : 'No'\n );\n }\n }\n }, [SmartFormFieldsState.editingQuestion]);\n\n const handleClose = () => {\n dispatch({\n type: 'SET_EDITING_QUESTION',\n payload: null\n });\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: { ...SmartFormFieldsState.modalsOpen, newField: false }\n });\n clearData();\n };\n\n const handleSubmit = () => {\n if (!fieldType || !label) {\n if (!fieldType) {\n fieldTypeRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorField('This field is required');\n } else {\n labelRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorLabel('This field is required');\n }\n return;\n }\n\n let fieldObject = {\n title: label,\n enabled: enabledSwitch,\n required: requiredSwitch,\n rateable: rateableSwitch,\n confidential: confidentialSwitch,\n field_type: fieldTypeValues[fieldType]\n };\n\n if (['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType)) {\n choiceList.map((choice, index) => {\n if (!choice?.name) {\n choicesRef?.current?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n setErrorChoices('All field choices must each have a value');\n return;\n }\n choice.position = index;\n if (choice.id.toString().length == 13) {\n choice.id = '';\n }\n });\n\n const jsonString = JSON.stringify(Object.assign({}, choiceList));\n const attributes = JSON.parse(jsonString);\n fieldObject['field_choices_attributes'] = attributes;\n } else if (['Availability'].includes(fieldType)) {\n fieldObject['availability_config_attributes'] = {\n week_duration: weekDuration.toLowerCase(),\n week_start_day: DateOptions.indexOf(weekStartDay),\n heading_1: headingOne,\n heading_2: headingTwo,\n allow_break: allowBreak === 'Yes'\n };\n }\n\n CreateEditField.mutate(fieldObject);\n };\n\n const CreateEditField = useMutation({\n mutationFn: (fieldObject) => {\n if (SmartFormFieldsState.editingQuestion) {\n dispatch({\n type: 'SET_ACTION_STATES',\n payload: {\n ...SmartFormFieldsState.actionStates,\n [SmartFormFieldsState.editingQuestion.id]: {\n enabled: enabledSwitch,\n required: requiredSwitch,\n rateable: rateableSwitch,\n confidential: confidentialSwitch\n }\n }\n });\n return Api.putQuestion(SmartFormFieldsState.editingQuestion.id, formId, {\n field: fieldObject\n });\n } else {\n return Api.newField(formId, {\n field: fieldObject\n });\n }\n },\n onError: (error: IError) => {\n dispatch({\n type: 'SET_ACTION_STATES',\n payload: { ...SmartFormFieldsState.actionStates }\n });\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There has been an error ${\n SmartFormFieldsState.editingQuestion ? 'editing' : 'creating'\n } the question, ${error.errors.join('. ')}`,\n state: 'error'\n }\n });\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Field has been ${SmartFormFieldsState.editingQuestion ? 'updated' : 'created'}`,\n state: 'success'\n }\n });\n queryClient.invalidateQueries(['questions'], { exact: true });\n handleClose();\n }\n });\n\n const handleChoiceInput = (e, index: number) => {\n const { value } = e.target;\n updateChoice(value, index);\n };\n\n const clearData = () => {\n setFieldType('');\n setLabel('');\n setEnabledSwitch(true);\n setRequiredSwitch(false);\n setRateableSwitch(false);\n setConfidentialSwitch(false);\n clearChoices();\n setWeekDuration('Weekly');\n setWeekStartDay('Sunday');\n setHeadingOne('');\n setHeadingTwo('');\n setAllowBreak('No');\n setErrorLabel('');\n setErrorField('');\n setErrorChoices('');\n };\n\n useEffect(() => {\n setDefaultValue();\n }, [setDefaultValue, SmartFormFieldsState.editingQuestion]);\n\n return (\n <Modal\n open={SmartFormFieldsState.modalsOpen.newField}\n onClose={() => handleClose()}\n aria-labelledby=\"new-field-modal\"\n >\n <Box sx={classes.actionsModalReducedPadding}>\n <Box sx={classes.modalWrapper}>\n <CloseIcon onClick={() => handleClose()} sx={classes.closeIcon} />\n <Box id=\"new-field-title\" sx={classes.actionModalHeader}>\n New field\n </Box>\n <Box\n sx={classes.modalContent}\n id=\"new-field-modal-content\"\n aria-label=\"New Field Modal Content\"\n >\n <Box role=\"form\" id=\"new-field-form\" aria-label=\"New Field form\">\n <Box sx={{ ...classes.actionModalFormLine, marginTop: '20px' }} ref={fieldTypeRef}>\n <Virtualize\n value={fieldType}\n passOptions={fieldTypeOptions}\n setValue={(value: string) => {\n setFieldType(value);\n setErrorField('');\n }}\n passedStyles={{\n ...sharedClasses.formAutocomplete,\n width: '300px',\n marginTop: '20px'\n }}\n label=\"Field type\"\n />\n {errorField && <Box sx={{ ...classes.formError, top: '63px' }}>{errorField}</Box>}\n </Box>\n </Box>\n <Box sx={{ marginLeft: '15px' }}>\n <Box sx={classes.modalFormLine}>\n <MultilineFormTextField\n value={label}\n onChange={(e) => {\n setErrorLabel('');\n setLabel(e.target.value);\n }}\n styles={{ width: '600px', marginTop: '20px' }}\n rows={6}\n innerRef={labelRef}\n error={errorLabel}\n label={'Field label'}\n />\n </Box>\n </Box>\n <Box sx={classes.checkboxContainer} id=\"enabled-filter\">\n <FormControlLabel\n sx={\n !enabledSwitch\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n control={\n <Switch\n sx={enabledSwitch ? classes.switchActive : classes.switch}\n checked={enabledSwitch}\n onChange={() => setEnabledSwitch(!enabledSwitch)}\n />\n }\n label=\"Enabled\"\n labelPlacement=\"end\"\n />\n <FormControlLabel\n sx={\n !requiredSwitch\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n control={\n <Switch\n sx={requiredSwitch ? classes.switchActive : classes.switch}\n checked={requiredSwitch}\n onChange={() => setRequiredSwitch(!requiredSwitch)}\n />\n }\n label=\"Required\"\n labelPlacement=\"end\"\n />\n <FormControlLabel\n sx={\n !rateableSwitch\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n control={\n <Switch\n sx={rateableSwitch ? classes.switchActive : classes.switch}\n checked={rateableSwitch}\n onChange={() => setRateableSwitch(!rateableSwitch)}\n />\n }\n label=\"Rateable\"\n labelPlacement=\"end\"\n />\n <FormControlLabel\n sx={\n !confidentialSwitch\n ? { ...classes.switchLabels, ...classes.labelActive }\n : classes.switchLabels\n }\n control={\n <Switch\n sx={confidentialSwitch ? classes.switchActive : classes.switch}\n checked={confidentialSwitch}\n onChange={() => setConfidentialSwitch(!confidentialSwitch)}\n />\n }\n label=\"confidential\"\n labelPlacement=\"end\"\n />\n </Box>\n {['Select', 'Rank', 'Checkbox', 'Radio Button'].includes(fieldType) && (\n <Box sx={classes.addChoiceContainer} ref={choicesRef}>\n <Box sx={classes.addChoiceHead}>\n <Box id=\"add-choice-title\" sx={classes.addChoiceLabel}>\n Choices\n </Box>\n <Button\n id=\"add-choice-button\"\n sx={classes.modalAddChoiceButton}\n onClick={addChoice}\n >\n Add choice\n </Button>\n </Box>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={choiceList} strategy={verticalListSortingStrategy}>\n {choiceList.map(\n (choice, index) =>\n !(choice?._destroy === 1) && (\n <SortableChoice\n key={choice.id}\n id={choice.id}\n choice={choice}\n index={index}\n handleChoiceInput={handleChoiceInput}\n onRemoveChoice={removeChoice}\n />\n )\n )}\n </SortableContext>\n </DndContext>\n {errorChoices && <Box sx={{ ...classes.inlineError }}>{errorChoices}</Box>}\n </Box>\n )}\n {['Availability'].includes(fieldType) && (\n <Box sx={classes.availabilityContainer}>\n <Box id=\"availability-config-title\" sx={classes.addChoiceLabel}>\n Availability Config\n </Box>\n <Box sx={classes.config}>\n <FormSelectField\n options={['Weekly', 'Fortnightly']}\n defaultValue={weekDuration}\n value={weekDuration}\n onChange={(value) => setWeekDuration(value)}\n label={'How long is your work period?'}\n styles={{ width: '290px', marginBottom: '15px' }}\n required={true}\n />\n <FormSelectField\n options={DateOptions}\n defaultValue={weekStartDay}\n value={weekStartDay}\n onChange={(value) => {\n setWeekStartDay(value);\n }}\n label={'When does the work period start?'}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n <FormTextField\n label=\"Heading 1\"\n value={headingOne}\n onChange={(e) => setHeadingOne(e.target.value)}\n required={false}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n <FormTextField\n label=\"Heading 2\"\n value={headingTwo}\n onChange={(e) => setHeadingTwo(e.target.value)}\n required={false}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n <FormSelectField\n options={['Yes', 'No']}\n defaultValue={allowBreak}\n value={allowBreak}\n onChange={(value) => setAllowBreak(value)}\n label={'Allow break?'}\n styles={{ width: '290px', marginBottom: '15px' }}\n />\n </Box>\n </Box>\n )}\n <Box sx={classes.modalFooter}>\n <Button\n id=\"close-new-field-button\"\n sx={classes.modalCancelButton}\n onClick={() => handleClose()}\n >\n Cancel\n </Button>\n <Button\n id=\"submit-new-field-button\"\n type=\"submit\"\n sx={{ ...classes.modalCreateButton, width: '91px', height: '41px' }}\n onClick={handleSubmit}\n >\n {CreateEditField.isLoading ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n 'Confirm'\n )}\n </Button>\n </Box>\n </Box>\n </Box>\n </Box>\n </Modal>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Box, Button, Stack, Skeleton } from '@mui/material';\nimport { LiveHelp as LiveHelpIcon, Info as InfoIcon } from '@mui/icons-material';\nimport NewSystemFieldSVG from '../../EditJob/Questions/NewSystemFieldSVG';\nimport NoQuestionSVG from '../../EditJob/Questions/NoQuestionSVG';\nimport NewField from './Modals/NewField';\nimport AddSystemField from './Modals/AddSystemField';\nimport ImportFields from './Modals/ImportFields';\nimport { IApplicantQuestion } from '../../Components/Utilities/QuestionFieldViewer';\nimport { classes } from './styles';\nimport {\n DndContext,\n closestCenter,\n KeyboardSensor,\n useSensor,\n useSensors,\n DragEndEvent\n} from '@dnd-kit/core';\nimport {\n arrayMove,\n SortableContext,\n sortableKeyboardCoordinates,\n verticalListSortingStrategy\n} from '@dnd-kit/sortable';\n\nimport SortableItem from './SortableItem';\nimport { QuestionCardSensor } from '../../EditJob/Questions/QuestionCardSensor';\nimport Api from '../API';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { SmartFormFieldsState, SmartFormFieldsAction } from '../reducer';\nimport { IError, IForm, ModalType } from '../types';\nimport SmartFormModal from '../SmartFormModal';\nimport { OptionToggleGroup } from '../../Components/OptionToggleGroup';\n\nconst toggleButtonOptions = [\n { value: 'enabledQuestions', label: 'Enabled questions' },\n { value: 'disabledQuestions', label: 'Disabled questions' }\n];\n\nexport default function Questions({\n formData,\n fetchedFormData,\n SmartFormFieldsState,\n dispatch,\n refetchFormData,\n formId,\n userPermissions\n}: {\n formData: IForm;\n fetchedFormData: boolean;\n SmartFormFieldsState: SmartFormFieldsState;\n dispatch: Dispatch<SmartFormFieldsAction>;\n refetchFormData: () => void;\n formId: number;\n userPermissions: Record<string, Record<string, boolean>>;\n}) {\n const [selected, setSelected] = useState<string>('enabledQuestions');\n const queryClient = useQueryClient();\n const sensors = useSensors(\n useSensor(QuestionCardSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates\n })\n );\n\n function handleDragEnd(event: DragEndEvent) {\n const { active, over } = event;\n if (!questions || !over) return;\n if (active.id !== over.id) {\n const originalQuestions = [...questions];\n const oldIndex = questions.map((question) => question.id).indexOf(Number(active.id));\n const newIndex = questions.map((question) => question.id).indexOf(Number(over.id));\n const newArray = arrayMove(questions, oldIndex, newIndex);\n queryClient.setQueryData(['questions'], newArray);\n updateQuestions.mutate(newArray, {\n onError: () => queryClient.setQueryData(['questions'], originalQuestions)\n });\n }\n }\n\n const updateQuestions = useMutation({\n mutationFn: (questions: IApplicantQuestion[]) => {\n const fieldObject: Record<string, { position: number }> = {};\n questions.map(\n (question, index) =>\n (fieldObject[question.id] = {\n position: index\n })\n );\n return Api.updateQuestions(formId, {\n fields: fieldObject\n });\n },\n onError: (error: IError) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error saving your changes, ${error.errors.join('. ')}`,\n state: 'error'\n }\n });\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'Questions have been updated',\n state: 'success'\n }\n });\n }\n });\n\n const { data: questions, isLoading: loadingQuestions } = useQuery({\n queryKey: ['questions'],\n queryFn: async () => {\n const { res } = await Api.getQuestions({\n entity_id: formData?.entity_id,\n form_id: formData?.id\n });\n\n return res.fields;\n },\n onError: (error: IError) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Failed to fetch questions, ${error.errors.join('. ')}`,\n state: 'error'\n }\n });\n },\n onSuccess: (questions: IApplicantQuestion[]) => {\n const questionsActionStates: {\n [key: number]: {\n enabled: boolean;\n required: boolean;\n rateable: boolean;\n confidential: boolean;\n };\n } = {};\n questions.map((question) => {\n questionsActionStates[question.id] = {\n enabled: question.enabled,\n required: question.required,\n rateable: question.rateable,\n confidential: question.confidential\n };\n });\n dispatch({ type: 'SET_ACTION_STATES', payload: questionsActionStates });\n },\n enabled: fetchedFormData\n });\n\n return (\n <Box sx={classes.questionsPageContainer}>\n <Box sx={classes.noticeContainer}>\n <InfoIcon sx={classes.infoIcon} />\n <Box sx={{ marginLeft: 1 }}>\n <b>All changes will be automatically saved and applied immediately. </b>\n All fields that have been answered by a user are not able to be deleted. To remove a\n field, you will need to disable it and create a new field.\n </Box>\n </Box>\n\n <OptionToggleGroup\n options={toggleButtonOptions}\n selected={selected}\n setSelected={setSelected}\n />\n\n <Box sx={classes.actionsContianer}>\n {loadingQuestions ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Stack sx={{ flexDirection: 'row', gap: '22px' }}>\n {selected === 'enabledQuestions' && (\n <>\n <Button\n id=\"smart-form-new-field-button\"\n variant=\"outlined\"\n startIcon={<LiveHelpIcon />}\n sx={classes.actionButton}\n onClick={() => {\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: { ...SmartFormFieldsState.modalsOpen, newField: true }\n });\n }}\n >\n New field\n </Button>\n <Button\n id=\"smart-form-add-system-field-button\"\n variant=\"outlined\"\n startIcon={<NewSystemFieldSVG />}\n sx={classes.actionButton}\n onClick={() => {\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: { ...SmartFormFieldsState.modalsOpen, addSystemField: true }\n });\n }}\n >\n Add system field\n </Button>\n <Button\n id=\"smart-form-add-fields-from-form-button\"\n variant=\"outlined\"\n startIcon={<NewSystemFieldSVG />}\n sx={classes.actionButton}\n onClick={() => {\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: { ...SmartFormFieldsState.modalsOpen, importFields: true }\n });\n }}\n >\n Import fields\n </Button>\n </>\n )}\n </Stack>\n )}\n <>\n {loadingQuestions ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Stack>\n <Button\n id=\"smart-form-settings-button\"\n sx={classes.settingButton}\n onClick={() => {\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: { ...SmartFormFieldsState.modalsOpen, smartFormSettings: true }\n });\n }}\n >\n Settings\n </Button>\n </Stack>\n )}\n </>\n </Box>\n {questions && questions.length > 0 && (\n <Box sx={{ overflow: 'auto' }}>\n <Box sx={classes.questionsContainer}>\n <Box sx={classes.questionsHeader}>Questions</Box>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\n onDragEnd={handleDragEnd}\n >\n <SortableContext items={questions} strategy={verticalListSortingStrategy}>\n {questions\n .filter((el) => (selected === 'enabledQuestions') === el.enabled)\n .map(\n (question) =>\n Object.keys(SmartFormFieldsState.actionStates).length > 0 && (\n <SortableItem\n question={question}\n key={question.id}\n formId={formData?.id}\n SmartFormFieldsState={SmartFormFieldsState}\n dispatch={dispatch}\n userPermissions={userPermissions}\n />\n )\n )}\n </SortableContext>\n </DndContext>\n </Box>\n </Box>\n )}\n {!loadingQuestions && questions?.length === 0 && (\n <Box sx={{ ...classes.noQuestionsContainer, margin: '150px 0px' }}>\n <NoQuestionSVG />\n <Box sx={classes.noQuestionsText}>\n Your smart form is empty. Please add a\n <br />\n question from the options above.\n </Box>\n </Box>\n )}\n {fetchedFormData && (\n <>\n <NewField\n formId={formData?.id}\n SmartFormFieldsState={SmartFormFieldsState}\n dispatch={dispatch}\n userPermissions={userPermissions}\n />\n <AddSystemField\n formId={formData?.id}\n SmartFormFieldsState={SmartFormFieldsState}\n dispatch={dispatch}\n />\n <ImportFields\n formId={formData?.id}\n SmartFormFieldsState={SmartFormFieldsState}\n dispatch={dispatch}\n />\n <SmartFormModal\n dispatch={dispatch}\n form={formData}\n entityId={formData.entity_id}\n smartFormState={SmartFormFieldsState}\n refetchForms={refetchFormData}\n modalType={ModalType.UPDATE}\n />\n </>\n )}\n </Box>\n );\n}\n","import React, { useState, Dispatch } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { Box, Stack, Switch, IconButton } from '@mui/material';\nimport { CSS } from '@dnd-kit/utilities';\nimport { classes } from './styles';\nimport QuestionFieldViewer from '../../Components/Utilities/QuestionFieldViewer';\nimport {\n DragIndicator as DragIndicatorIcon,\n ExpandMore as ExpandMoreIcon,\n ExpandLess as ExpandLessIcon,\n Edit as EditIcon,\n ContentCopy as ContentCopyIcon,\n Delete as DeleteIcon\n} from '@mui/icons-material';\nimport Api from '../API';\nimport GenericDialog from '../../Components/Modals/GenericDialog';\nimport { IApplicantQuestion } from '../../Components/Utilities/QuestionFieldViewer';\nimport AvailabilityPreview from '../../ApprovalForms/Questions/Modals/AvailabilityPreview';\nimport { useQueryClient, useMutation, UseMutationResult } from '@tanstack/react-query';\nimport { SmartFormFieldsState, SmartFormFieldsAction } from '../reducer';\nimport { IError } from '../types';\nimport AvailabilityFieldQuestion from '../../Components/CustomUIElements/AvailabilityFieldQuestion';\n\ninterface IDialogProps {\n title: string;\n description: string;\n buttonText: string;\n callback: UseMutationResult<any, IError, void, unknown>;\n}\n\nexport default function SortableItem({\n question,\n formId,\n SmartFormFieldsState,\n dispatch,\n userPermissions\n}: {\n question: IApplicantQuestion;\n formId: number;\n SmartFormFieldsState: SmartFormFieldsState;\n dispatch: Dispatch<SmartFormFieldsAction>;\n userPermissions: Record<string, Record<string, boolean>>;\n}) {\n const [showPreview, setShowPreview] = useState<boolean>(false);\n const [dialogProps, setDialogProps] = useState<IDialogProps | null>(null);\n\n const queryClient = useQueryClient();\n const actionStates = SmartFormFieldsState.actionStates;\n\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id: question.id\n });\n\n const style = {\n transform: CSS.Translate.toString(transform),\n transition,\n filter: isDragging ? 'brightness(75%)' : 'brightness(100%)',\n zIndex: isDragging ? 10 : 1\n };\n\n const deleteQuestion = useMutation({\n mutationFn: () => Api.deleteQuestion(question.id, formId),\n onError: (error: IError) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: error.errors.join('. '),\n state: 'error'\n }\n });\n setDialogProps(null);\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'The field has been deleted',\n state: 'success'\n }\n });\n setDialogProps(null);\n queryClient.invalidateQueries(['questions'], { exact: true });\n }\n });\n\n const cloneQuestion = useMutation({\n mutationFn: () => Api.cloneQuestion(question.id, formId),\n onError: (error: IError) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: error.errors.join('. '),\n state: 'error'\n }\n });\n setDialogProps(null);\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'The field has been cloned',\n state: 'success'\n }\n });\n setDialogProps(null);\n queryClient.invalidateQueries(['questions'], { exact: true });\n }\n });\n\n const updateActions = useMutation({\n mutationFn: (fieldObject: Record<string, boolean>) =>\n Api.putQuestion(question.id, formId, {\n field: fieldObject\n }),\n onError: (error: IError) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: error.errors.join('. '),\n state: 'error'\n }\n });\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'The change has been saved',\n state: 'success'\n }\n });\n queryClient.invalidateQueries(['questions'], { exact: true });\n }\n });\n\n const handleUpdateActions = async (action: keyof typeof question) => {\n dispatch({\n type: 'SET_ACTION_STATES',\n payload: {\n ...actionStates,\n [question.id]: {\n ...actionStates[question.id],\n [action]: !actionStates[question.id][action]\n }\n }\n });\n updateActions.mutate(\n { [action]: !question[action] },\n {\n onError: () =>\n dispatch({\n type: 'SET_ACTION_STATES',\n payload: {\n ...actionStates,\n [question.id]: {\n ...actionStates[question.id],\n [action]: actionStates[question.id][action]\n }\n }\n })\n }\n );\n };\n\n const handleEditQuestion = (question: IApplicantQuestion) => {\n dispatch({\n type: 'SET_EDITING_QUESTION',\n payload: question\n });\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: { ...SmartFormFieldsState.modalsOpen, newField: true }\n });\n };\n\n const handleDeleteQuestion = () => {\n setDialogProps({\n title: 'Permanently delete question?',\n description: 'Are you sure you want to delete this question? This action cannot be undone.',\n buttonText: 'Delete',\n callback: deleteQuestion\n });\n };\n\n const handleCloneQuestion = () => {\n setDialogProps({\n title: 'Clone question',\n description: `Are you sure you want to clone this question?`,\n buttonText: 'Clone',\n callback: cloneQuestion\n });\n };\n\n return (\n <Box ref={setNodeRef} style={style}>\n <Box key={question.id}>\n {question.type === 'JobReferenceLookupField' ? (\n <span />\n ) : (\n <Box sx={classes.questionsWrapper}>\n <Box sx={{ display: 'flex' }}>\n <DragIndicatorIcon\n sx={{ cursor: isDragging ? 'grabbing' : 'pointer', ...classes.dragHandle }}\n {...listeners}\n {...attributes}\n />\n <Box sx={{ marginRight: 'auto', ...classes.questionInput }}>\n <Box sx={{ height: '6px' }}></Box>\n <Box sx={{ ...classes.modalFormLine, position: 'relative' }}>\n <QuestionFieldViewer question={question} draggable={true} />\n </Box>\n </Box>\n <Box\n sx={{\n ...classes.sortableItemSwitchContainer,\n fontWeight: SmartFormFieldsState.actionStates[question.id]?.enabled ? 'bold' : ''\n }}\n >\n <Box sx={{ marginTop: '12px' }}>\n <Switch\n sx={\n SmartFormFieldsState.actionStates[question.id].enabled\n ? classes.switchActive\n : classes.switch\n }\n checked={SmartFormFieldsState.actionStates[question.id].enabled}\n onChange={() => handleUpdateActions('enabled')}\n />\n <Stack sx={{ marginTop: 1, fontSize: '12px' }}>Enabled</Stack>\n </Box>\n </Box>\n <Box\n sx={{\n ...classes.sortableItemSwitchContainer,\n fontWeight: SmartFormFieldsState.actionStates[question.id].required ? 'bold' : ''\n }}\n >\n <Box sx={{ marginTop: '12px' }}>\n <Switch\n sx={\n SmartFormFieldsState.actionStates[question.id].required\n ? classes.switchActive\n : classes.switch\n }\n checked={SmartFormFieldsState.actionStates[question.id].required}\n onChange={() => handleUpdateActions('required')}\n disabled={!question.editable}\n />\n <Stack sx={{ marginTop: 1, fontSize: '12px' }}>Required</Stack>\n </Box>\n </Box>\n <Box\n sx={{\n ...classes.sortableItemSwitchContainer,\n fontWeight: SmartFormFieldsState.actionStates[question.id].rateable ? 'bold' : ''\n }}\n >\n <Box sx={{ marginTop: '12px' }}>\n <Switch\n sx={\n SmartFormFieldsState.actionStates[question.id].rateable\n ? classes.switchActive\n : classes.switch\n }\n checked={SmartFormFieldsState.actionStates[question.id].rateable}\n onChange={() => handleUpdateActions('rateable')}\n disabled={!question.editable}\n />\n <Stack sx={{ marginTop: 1, fontSize: '12px' }}>Rateable</Stack>\n </Box>\n </Box>\n <Box\n sx={{\n ...classes.sortableItemSwitchContainer,\n fontWeight: SmartFormFieldsState.actionStates[question.id].confidential\n ? 'bold'\n : ''\n }}\n >\n <Box sx={{ marginTop: '12px' }}>\n <Switch\n sx={\n SmartFormFieldsState.actionStates[question.id].confidential\n ? classes.switchActive\n : classes.switch\n }\n checked={SmartFormFieldsState.actionStates[question.id].confidential}\n onChange={() => handleUpdateActions('confidential')}\n disabled={!question.editable}\n />\n <Stack sx={{ marginTop: 1, fontSize: '12px' }}>Confidential</Stack>\n </Box>\n </Box>\n <Box sx={{ padding: '0 6px', minWidth: '120px' }}>\n <Box\n sx={{\n display: 'flex',\n justifyContent: 'flex-end',\n alignItems: 'flex-start',\n marginTop: '-8px'\n }}\n >\n {question.editable && !question.answered && (\n <IconButton\n id={`${question.title}-edit-button`}\n onClick={() => handleEditQuestion(question)}\n >\n <EditIcon sx={{ fontSize: 16 }} />\n </IconButton>\n )}\n {question.editable && (\n <IconButton id={`${question.title}-clone-button`} onClick={handleCloneQuestion}>\n <ContentCopyIcon sx={{ fontSize: 16 }} />\n </IconButton>\n )}\n {question.deletable && (\n <IconButton\n id={`${question.title}-delete-button`}\n onClick={handleDeleteQuestion}\n >\n <DeleteIcon sx={{ color: '#E37D7A', fontSize: 16 }} />\n </IconButton>\n )}\n </Box>\n </Box>\n </Box>\n {question.type === 'AvailabilityField' && (\n <AvailabilityFieldQuestion question={question} />\n )}\n {SmartFormFieldsState.actionStates[question.id].confidential && (\n <Box sx={{ padding: '0 6px', color: '#838383', fontSize: '12px' }}>\n <span style={{ fontWeight: 'bold' }}>Confidential Setting Enabled:</span> For DE&I\n compliance, only authorised users (HR Admins), can view responses. Hiring Managers\n will not have access.\n </Box>\n )}\n </Box>\n )}\n </Box>\n {dialogProps && (\n <GenericDialog\n url={''}\n title={dialogProps.title}\n description={dialogProps.description}\n buttonText={dialogProps.buttonText}\n buttonCallback={() => dialogProps.callback.mutate()}\n callbackLoading={deleteQuestion.isLoading || cloneQuestion.isLoading}\n isDialogOpen={Boolean(dialogProps)}\n setDialogOpen={() => setDialogProps(null)}\n dialogId={question.id}\n />\n )}\n </Box>\n );\n}\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport { Box, Button, Stack, TextField } from '@mui/material';\nimport Api from '../../ApprovalForms/API';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\n\nexport default function ListItem({\n manager,\n setManager,\n setOpenManager\n}: {\n manager?: { id: number; name: string; email: string } | null;\n setManager: Dispatch<SetStateAction<{ id: number; name: string; email: string } | null>>;\n setOpenManager: Dispatch<SetStateAction<boolean>>;\n}) {\n const queryClient = useQueryClient();\n const [editName, setEditName] = useState<boolean>(false);\n const [editEmail, setEditEmail] = useState<boolean>(false);\n const [name, setName] = useState<string>(manager?.name || '');\n const [email, setEmail] = useState<string>(manager?.email || '');\n const approvalManagerId = manager?.id;\n\n const {\n status: createStatus,\n error: createError,\n mutate: addManager\n } = useMutation({\n mutationFn: () =>\n Api.createApprovalManager(\n { requisition_manager: { name: name, email: email } }\n ),\n onSuccess: () => {\n queryClient.invalidateQueries(['managers'], { exact: true });\n setOpenManager(false);\n setManager(null);\n }\n });\n\n const {\n status: editStatus,\n error: editError,\n mutate: editManager\n } = useMutation({\n mutationFn: () =>\n Api.updateApprovalManager(\n { requisition_manager: { name: name, email: email } },\n approvalManagerId\n ),\n onSuccess: (e) => {\n queryClient.invalidateQueries(['managers'], { exact: true });\n setOpenManager(false);\n setManager(null);\n }\n });\n\n return (\n <Box>\n <Button\n onClick={() => {\n setOpenManager(false);\n setManager(null);\n }}\n >\n Back to list\n </Button>\n {manager && <Stack>id: {manager.id}</Stack>}\n <Stack flexDirection=\"row\" sx={{ padding: '16px 0px' }}>\n <TextField\n value={name}\n disabled={manager ? !editName : false}\n label=\"Name\"\n onChange={(e) => setName(e.target.value)}\n />\n {manager && <Button onClick={() => setEditName(!editName)}>Edit Name</Button>}\n </Stack>\n <Stack flexDirection=\"row\" sx={{ padding: '16px 0px' }}>\n <TextField\n value={email}\n disabled={manager ? !editEmail : false}\n label=\"Email\"\n onChange={(e) => setEmail(e.target.value)}\n />\n {manager && <Button onClick={() => setEditEmail(!editEmail)}>Edit Email</Button>}\n </Stack>\n <Button onClick={() => (manager ? editManager() : addManager())}>\n {manager ? 'Save' : 'Add'}\n </Button>\n </Box>\n );\n}\n","import React, { useState } from 'react';\nimport { Box, Button, Stack, Typography } from '@mui/material';\nimport { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';\nimport Api from '../../ApprovalForms/API';\nimport ListItem from './ListItem';\n\nexport default function SampleList({ apiKey }: { apiKey: string }) {\n const [openManager, setOpenManager] = useState<boolean>(false);\n const [manager, setManager] = useState<{ id: number; name: string; email: string } | null>(null);\n const queryClient = useQueryClient();\n\n const managers = useQuery({\n queryKey: ['managers'], // this key has to be unique to each query for caching purposes\n queryFn: () => Api.getApprovalManagers({ override_limit: true, limit: 100 })\n // cacheTime: 10 * 60 * 1000 <--- set cache time for 10 minutes, otherwise, by default it's 5 minutes\n });\n\n // You can call the properties inside the managers directly such as managers.isLoading, managers.error, managers.data\n // or you can deconstruct it and give it a name like below\n\n const {\n status: deleteStatus, // can be used to display loading state\n error: deleteError, // can be used to display snackbar and error message\n mutate: deleteManager\n } = useMutation({\n mutationFn: (id: number) => Api.deleteApprovalManager(id),\n onSuccess: () => {\n // can be used for chaining. think of it as similar to '.then'\n queryClient.invalidateQueries(['managers'], { exact: true }); // remove cached data and initiate refetch for the managers query\n }\n });\n\n // when to use useQuery and useMutation?\n //\n // UseQuery is used to query async data, useMutation is used to mutate it.\n // useQuery is declarative, useMutation is imperative.\n // meaning useQuery runs when component is in focus, or is mounted;\n // whereas useMutation has to be 'invoked'.\n // or in CRUD:\n //\n // Read: useQuery\n // Create/Update/Delete: useMutation\n\n if (managers.error) return <Stack>render snackbar error message</Stack>;\n\n return (\n <Box>\n <Stack sx={{ paddingBottom: 2 }}>\n <Typography variant=\"h3\">Smart Forms New UI Page</Typography>\n </Stack>\n <Box>\n {openManager ? (\n <ListItem manager={manager} setOpenManager={setOpenManager} setManager={setManager} />\n ) : (\n <>\n {managers.isLoading ? (\n <Stack>Loading...</Stack>\n ) : (\n <Stack>\n {managers.data.res.requisition_managers.map((e) => (\n <Stack\n key={e.id}\n sx={{ padding: 1, width: '250px' }}\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n >\n <Typography\n onClick={() => {\n setManager(e);\n setOpenManager(true);\n }}\n sx={{ '&:hover': { cursor: 'pointer' } }}\n >\n {e.name}\n </Typography>\n <Button color=\"error\" onClick={() => deleteManager(e.id)}>\n Delete\n </Button>\n </Stack>\n ))}\n </Stack>\n )}\n <Button variant=\"outlined\" onClick={() => setOpenManager(true)}>\n Add Manager\n </Button>\n </>\n )}\n </Box>\n </Box>\n );\n}\n","import React, { useState } from 'react';\nimport { Box, FormControl, OutlinedInput, InputAdornment } from '@mui/material';\nimport { Search as SearchIcon } from '@mui/icons-material';\nimport { styles } from './styles';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport default function Search({\n idLabel,\n placeholder,\n setSearch\n}: {\n idLabel: string;\n placeholder: string;\n setSearch: (query: string) => void;\n}) {\n const [tempSearch, setTempSearch] = useState('');\n const debouncedAPICall = useDebouncedCallback((searchQuery) => {\n setSearch(searchQuery);\n }, 600);\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setTempSearch(event.target.value);\n debouncedAPICall(event.target.value);\n };\n\n return (\n <Box sx={{ width: '100%' }}>\n <FormControl fullWidth>\n <OutlinedInput\n id={`${idLabel}-search`}\n sx={styles.searchInput}\n placeholder={placeholder}\n value={tempSearch}\n onChange={handleChange}\n startAdornment={\n <InputAdornment sx={{ padding: '0px 0px 0px 14px' }} position=\"start\">\n <SearchIcon />\n </InputAdornment>\n }\n />\n </FormControl>\n </Box>\n );\n}\n","import React, { useEffect, useState, useRef, useReducer } from 'react';\nimport { Box, Typography, Tabs, Tab, Stack, IconButton, Skeleton } from '@mui/material';\nimport { ArrowCircleLeft as ArrowCircleLeftIcon } from '@mui/icons-material';\nimport { styles } from './styles';\nimport { IError } from './types';\nimport Questions from './Questions/Questions';\nimport { useQuery } from '@tanstack/react-query';\nimport { InitialSmartFormFieldsState, SmartFormFieldsReducer } from './reducer';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport Api from './API';\n\nexport default function SmartFormFields({\n formId,\n userPermissions\n}: {\n formId: number;\n userPermissions: Record<string, Record<string, boolean>>;\n}) {\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n const [SmartFormFieldsState, dispatch] = useReducer(\n SmartFormFieldsReducer,\n InitialSmartFormFieldsState\n );\n\n const headerRefs = useRef<HTMLDivElement>(null);\n\n const {\n data: formData,\n isLoading: loadingFormData,\n refetch: refetchFormData,\n isFetched: fetchedFormData\n } = useQuery({\n queryKey: ['formData'],\n queryFn: async () => {\n const { res } = await Api.getSmartForm(formId);\n return res;\n },\n onError: (error: IError) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting form data, ${error.errors.join('. ')}`,\n state: 'error'\n }\n })\n });\n\n useEffect(() => {\n headerRefs.current && setIndicatorWidth(headerRefs?.current.clientWidth - 32);\n }, []);\n\n return (\n <Box sx={styles.smartFormsPageContainer}>\n <Box sx={styles.smartFormsPageHeader}>\n {loadingFormData ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Typography variant=\"h1\">{formData?.name}</Typography>\n )}\n </Box>\n <Box sx={styles.tabsContainer}>\n <Tabs\n value={0}\n aria-label=\"Smart Forms\"\n sx={{\n ...styles.tabs,\n '& .MuiTabs-indicator': { ...styles.tabIndicator, maxWidth: indicatorWidth + 'px' }\n }}\n >\n <Tab ref={headerRefs} label=\"Add/Edit Fields\" disableRipple />\n </Tabs>\n </Box>\n <Box sx={styles.backToApprovalFormsButton}>\n <Stack\n id=\"smart-form-fields-back-button\"\n flexDirection=\"row\"\n alignItems=\"center\"\n onClick={() => {\n window.location.href = '/admin/forms';\n }}\n >\n <IconButton sx={styles.iconGrey}>\n <ArrowCircleLeftIcon />\n </IconButton>\n <Box>Back to smart forms</Box>\n </Stack>\n </Box>\n <Box>\n <Questions\n formData={formData}\n fetchedFormData={fetchedFormData}\n SmartFormFieldsState={SmartFormFieldsState}\n dispatch={dispatch}\n refetchFormData={refetchFormData}\n formId={formId}\n userPermissions={userPermissions}\n />\n </Box>\n <StyledSnackbar\n message={SmartFormFieldsState.snackbar.message}\n state={SmartFormFieldsState.snackbar.state}\n setSnackbarState={() =>\n dispatch({ type: 'SET_SNACKBAR', payload: { message: '', state: 'success' } })\n }\n />\n </Box>\n );\n}\n","import React, { Dispatch, FC, useMemo, useState } from 'react';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { sharedClasses } from '../Components/CustomUIElements/sharedClasses';\nimport { classes } from '../ApprovalForms/NewApprovalPublicLink/styles';\nimport { DebouncedFormTextField } from '../Components/CustomUIElements/FormTextField';\nimport {\n Box,\n FormControlLabel,\n Switch,\n Modal,\n Button,\n CircularProgress,\n TextField,\n Autocomplete\n} from '@mui/material';\nimport { classes as switchStyles } from '../Jobs/Dropdowns/useStyles';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport {\n SmartFormFieldsAction,\n SmartFormFieldsState,\n SmartFormsAction,\n SmartFormsState\n} from './reducer';\nimport { styles } from './styles';\nimport { IEntity, IForm, ModalType } from './types';\nimport Api from './API';\n\ninterface SmartFormModal {\n dispatch: Dispatch<SmartFormsAction> | Dispatch<SmartFormFieldsAction>;\n limit?: number;\n form?: IForm;\n entityId: number;\n smartFormState: SmartFormsState | SmartFormFieldsState;\n refetchForms: () => void;\n modalType: ModalType;\n}\n\nconst SmartFormModal: FC<SmartFormModal> = ({\n dispatch,\n limit,\n form,\n entityId,\n smartFormState,\n refetchForms,\n modalType\n}) => {\n const [enabled, setEnabled] = useState<boolean>(\n form?.enabled || smartFormState.selectedForm?.enabled || modalType === ModalType.CREATE\n );\n const [name, setName] = useState<string>(form?.name || smartFormState.selectedForm?.title || '');\n const [selectedEntity, setSelectedEntity] = useState<number>(() =>\n modalType === ModalType.CLONE ? smartFormState.selectedForm?.entity_id : entityId\n );\n const [selectedForm, setSelectedForm] = useState<number | null>(null);\n\n const modalState = useMemo(() => {\n const closeModal = () => {\n dispatch({\n type: 'SET_MODAL_OPEN',\n payload: null\n });\n dispatch({ type: 'SET_SELECTED_FORM', payload: null });\n };\n\n switch (modalType) {\n case ModalType.UPDATE:\n return {\n heading: 'Settings',\n actionButtonLabel: 'Confirm',\n showModal: (smartFormState as SmartFormFieldsState).modalsOpen?.smartFormSettings,\n handleClose: () =>\n dispatch({\n type: 'SET_MODALS_OPEN',\n payload: { ...smartFormState.modalsOpen, smartFormSettings: false }\n })\n };\n case ModalType.CREATE:\n return {\n heading: 'New smart form',\n actionButtonLabel: 'Create',\n showModal: (smartFormState as SmartFormsState).showSmartFormModal === ModalType.CREATE,\n handleClose: closeModal\n };\n case ModalType.CLONE:\n return {\n heading: 'Clone smart form',\n actionButtonLabel: 'Clone',\n showModal: (smartFormState as SmartFormsState).showSmartFormModal === ModalType.CLONE,\n handleClose: closeModal\n };\n case ModalType.CLONE_WITHOUT_FORM:\n return {\n heading: 'Clone smart form',\n actionButtonLabel: 'Clone',\n showModal:\n (smartFormState as SmartFormsState).showSmartFormModal === ModalType.CLONE_WITHOUT_FORM,\n handleClose: closeModal\n };\n }\n }, [modalType, smartFormState, dispatch]);\n\n const { actionButtonLabel, handleClose, heading, showModal } = modalState;\n\n const { data: entities, isFetching: fetchingEntities } = useQuery({\n queryKey: ['entities'],\n queryFn: async () => {\n const { res } = await Api.getTargetEntities();\n return res.entities;\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error loading entities, ${error}`,\n state: 'error'\n }\n }),\n initialData: []\n });\n\n const { data: forms, isFetching: fetchingForms } = useQuery({\n queryKey: ['all forms'],\n queryFn: async () => {\n const { res } = await Api.getSmartForms({ limit: limit, override_limit: true });\n return res.smart_forms;\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error loading smart forms, ${error}`,\n state: 'error'\n }\n }),\n initialData: []\n });\n\n const { mutate: createUpdateSmartForm, isLoading: isCreating } = useMutation({\n mutationFn: async (): Promise<void> => {\n const body = {\n name: name,\n entity_id: selectedEntity,\n enabled: enabled\n };\n\n if (modalType === ModalType.CLONE || modalType === ModalType.CLONE_WITHOUT_FORM) {\n return await Api.cloneForm(form?.id || smartFormState?.selectedForm?.id || selectedForm, {\n form: body\n });\n }\n\n if (!form) {\n return await Api.postSmartForm({ form: body });\n }\n\n if (modalType === ModalType.UPDATE) {\n await Api.updateSmartForm(form.id, { form: body });\n }\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error ${modalType.substring(\n 0,\n modalType.length - 1\n )}ing the smart form, ${error}`,\n state: 'error'\n }\n }),\n onSuccess: (data) => {\n if (modalType !== 'update') {\n window.location.href = data.res.redirect_url;\n }\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Smart form was successfully ${\n modalType === ModalType.CLONE_WITHOUT_FORM ? 'clone' : modalType\n }d`,\n state: 'success'\n }\n });\n refetchForms();\n },\n onSettled: async () => form && handleClose()\n });\n\n return (\n <>\n {showModal && (\n <Modal open={showModal} onClose={handleClose} aria-labelledby=\"smart-form-modal\">\n <Box\n sx={{\n ...classes.actionsModal,\n maxHeight: modalType === ModalType.CLONE_WITHOUT_FORM ? '555px' : '425px',\n width: '697px'\n }}\n >\n <Box sx={{ padding: '12px 0px 30px 0px' }}>\n <Box id=\"smart-form-modal-title\" sx={classes.modalHeader}>\n {heading}\n </Box>\n </Box>\n <Box sx={{ marginTop: '1.75rem' }}>\n <Box sx={{ ...classes.modalFormLine }}>\n {modalType === ModalType.CLONE_WITHOUT_FORM && (\n <Autocomplete\n filterSelectedOptions\n disablePortal\n autoHighlight\n includeInputInList\n options={forms}\n getOptionLabel={(option) => {\n if (typeof option === 'string') {\n return option;\n }\n return option.name ?? '';\n }}\n renderOption={(props, option, index) => {\n const key = `listItem-${index}-${option.id}`;\n return (\n <li {...props} key={key}>\n {option?.name}\n </li>\n );\n }}\n loading={fetchingForms}\n loadingText={fetchingForms ? 'Loading forms...' : 'No Smart Forms'}\n value={forms.find((form: IForm) => form.id === selectedForm) || null}\n onChange={(_event, newValue) => {\n if (newValue) {\n setSelectedForm(newValue.id);\n setName(newValue.name);\n } else {\n setSelectedForm(0);\n }\n }}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginBottom: '30px' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Select a smart form\"\n InputLabelProps={{ shrink: true }}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <React.Fragment>\n {fetchingForms ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : null}\n {params.InputProps.endAdornment}\n </React.Fragment>\n )\n }}\n />\n )}\n />\n )}\n <Autocomplete\n filterSelectedOptions\n disablePortal\n autoHighlight\n includeInputInList\n options={entities}\n getOptionLabel={(option) => {\n if (typeof option === 'string') {\n return option;\n }\n return option.name ?? '';\n }}\n renderOption={(props, option, index) => {\n const key = `listItem-${index}-${option.id}`;\n return (\n <li {...props} key={key}>\n {option?.name}\n </li>\n );\n }}\n loading={fetchingEntities}\n loadingText={fetchingEntities ? 'Loading entities...' : 'No Entities'}\n value={entities.find((entity: IEntity) => entity.id === selectedEntity) || null}\n onChange={(_event, newValue) => {\n if (newValue) {\n setSelectedEntity(newValue.id);\n } else {\n setSelectedEntity(0);\n }\n }}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%' }}\n ListboxProps={{\n style: {\n fontFamily: 'Source Sans Pro, sans-serif',\n color: '#333333',\n maxHeight: '200px'\n }\n }}\n renderInput={(params) => (\n <TextField\n {...params}\n label={\n modalType === ModalType.CLONE_WITHOUT_FORM ? 'Entity' : 'Select an entity'\n }\n InputLabelProps={{ shrink: true }}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <React.Fragment>\n {fetchingEntities ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : null}\n {params.InputProps.endAdornment}\n </React.Fragment>\n )\n }}\n />\n )}\n />\n </Box>\n <Box\n sx={{\n ...classes.modalFormLine,\n marginBottom: '40px !important'\n }}\n >\n <DebouncedFormTextField\n onDebouncedChange={(value: string) => {\n setName(value);\n }}\n fullWidth\n label=\"Name\"\n defaultValue={name}\n required\n styles={styles.textField}\n />\n </Box>\n\n <FormControlLabel\n sx={{\n ...styles.defaultSwitch,\n '& .MuiFormControlLabel-label': enabled\n ? styles.defaultSwitch['& .MuiFormControlLabel-label']\n : {\n ...styles.defaultSwitch['& .MuiFormControlLabel-label'],\n ...switchStyles.labelActive['& .MuiFormControlLabel-label']\n }\n }}\n control={\n <Switch\n sx={enabled ? switchStyles.switchActive : switchStyles.switch}\n checked={enabled}\n onChange={() => setEnabled(!enabled)}\n />\n }\n label=\"Enabled\"\n labelPlacement=\"end\"\n />\n </Box>\n <CloseIcon\n id=\"smart-form-modal-close-button\"\n onClick={handleClose}\n sx={classes.closeIcon}\n />\n <Box sx={classes.modalActions}>\n <Button\n id=\"smart-form-modal-cancel-button\"\n disableElevation\n sx={{ ...classes.buttonRedLight }}\n variant=\"text\"\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n type=\"submit\"\n sx={{ ...classes.modalEditButton, minWidth: 90 }}\n disabled={!name.length || !selectedEntity || isCreating}\n onClick={() => createUpdateSmartForm()}\n >\n {isCreating ? <CircularProgress size={20} color=\"inherit\" /> : actionButtonLabel}\n </Button>\n </Box>\n </Box>\n </Modal>\n )}\n </>\n );\n};\n\nexport default SmartFormModal;\n","import React, { useRef, useState, useEffect, useReducer } from 'react';\nimport { Box, Button, IconButton, Skeleton, Stack, Tab, Tabs, Typography } from '@mui/material';\nimport { ArrowCircleLeft as ArrowCircleLeftIcon } from '@mui/icons-material';\nimport { styles } from './styles';\nimport { classes } from '../SmartForms/Questions/styles';\nimport Api from './API';\nimport { useQuery } from '@tanstack/react-query';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport { InitialSmartFormsState, SmartFormsReducer } from './reducer';\nimport QuestionFieldGenerator from '../Components/Utilities/QuestionFieldGenerator';\nimport { IError } from './types';\n\nexport default function SmartFormPreview({ formId }: { formId: number }) {\n const [indicatorWidth, setIndicatorWidth] = useState(0);\n const [SmartFormsState, dispatch] = useReducer(SmartFormsReducer, InitialSmartFormsState);\n const headerRef = useRef<HTMLDivElement>(null);\n\n const { data: smartForm, isLoading: loadingSmartForm } = useQuery({\n queryKey: ['smartForm'],\n queryFn: async () => {\n const { res } = await Api.getSmartForm(formId);\n return res;\n },\n onError: (error: IError) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error fetching smart form data, ${error.errors.join('. ')}`,\n state: 'error'\n }\n })\n });\n\n const navigateToEditSmartform = () => {\n window.location.href = `/admin/forms/${formId}/fields`;\n };\n\n useEffect(() => {\n if (!headerRef.current) return;\n setIndicatorWidth(headerRef.current.clientWidth);\n }, []);\n\n return (\n <Box sx={styles.smartFormsPageContainer}>\n {loadingSmartForm ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <Box sx={{ ...styles.smartFormsPageHeader, marginBottom: 3 }}>\n <Typography variant=\"h1\">{smartForm.name}</Typography>\n </Box>\n )}\n <Box sx={{ ...styles.tabsContainer, padding: '0px 16px' }}>\n <Tabs\n value={0}\n variant=\"scrollable\"\n scrollButtons={false}\n aria-label=\"Approvals\"\n sx={{\n ...styles.tabs,\n '& .MuiTabs-indicator': { backgroundColor: '#5BC4BF', maxWidth: indicatorWidth + 'px' }\n }}\n >\n <Tab ref={headerRef} label=\"Smart form preview\" sx={{ padding: 0 }} disableRipple />\n </Tabs>\n </Box>\n <Box sx={{ ...styles.backToApprovalFormsButton, padding: '0px 16px' }}>\n <Stack flexDirection=\"row\" alignItems=\"center\" justifyContent=\"space-between\" width=\"100%\">\n <Stack\n id=\"smart-form-preview-back-button\"\n flexDirection=\"row\"\n alignItems=\"center\"\n onClick={() => {\n window.location.href = '/admin/forms';\n }}\n >\n <IconButton sx={{ ...styles.iconGrey, paddingLeft: 0 }}>\n <ArrowCircleLeftIcon />\n </IconButton>\n <Box>Back to smart forms</Box>\n </Stack>\n <Stack>\n <Button\n id=\"edit-smart-form\"\n sx={classes.settingButton}\n onClick={navigateToEditSmartform}\n >\n Edit form\n </Button>\n </Stack>\n </Stack>\n </Box>\n {loadingSmartForm ? (\n <Skeleton animation=\"wave\" sx={{ marginBottom: '20px' }} width={200} height={56} />\n ) : (\n <>\n {smartForm.fields\n .filter((question) => question.enabled)\n .map((question) => (\n <Box sx={{ padding: '12px 16px' }} key={question.id}>\n <QuestionFieldGenerator disabled question={question} />\n </Box>\n ))}\n </>\n )}\n <StyledSnackbar\n message={SmartFormsState.snackbar.message}\n state={SmartFormsState.snackbar.state}\n setSnackbarState={() => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: '', state: 'success' } });\n }}\n />\n </Box>\n );\n}\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport SmartFormPreview from './SmartFormPreview';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\nexport default function SmartFormPreviewPage({ formId }: { formId: number }) {\n return (\n <QueryClientProvider client={queryClient}>\n <SmartFormPreview formId={formId} />\n </QueryClientProvider>\n );\n}\n","import React, { useReducer, Fragment, useState } from 'react';\nimport { Box, Typography, Divider, Popover } from '@mui/material';\nimport { styles } from './styles';\nimport { useQuery, useMutation } from '@tanstack/react-query';\nimport SmartFormsTable from './SmartFormsTable';\nimport StyledSnackbar from '../Components/CustomUIElements/StyledSnackbar';\nimport Api from './API';\nimport { InitialSmartFormsState, SmartFormsReducer, SmartFormsState } from './reducer';\nimport Search from './Search';\nimport SmartFormModal from './SmartFormModal';\nimport { ModalType } from './types';\nimport CreateButton from '../Components/Buttons/CreateButton';\nimport { clearPreferenceCache } from '../helpers/uiPreferencesHelpers';\n\nexport default function SmartForms({ entityId }: { entityId: number }) {\n const [SmartFormsState, dispatch] = useReducer(SmartFormsReducer, InitialSmartFormsState);\n const [actionsAnchorEl, setActionsAnchorEl] = useState<HTMLDivElement | null>(null);\n const modalType = (SmartFormsState as SmartFormsState).showSmartFormModal;\n\n const { isFetched: fetchedPreferences } = useQuery({\n queryKey: ['preferences'],\n queryFn: () => Api.getPreferences(),\n onSuccess: (pref) => {\n dispatch({ type: 'SET_ROWS_PER_PAGE', payload: pref.res.ui_preferences[0]?.row_count || 10 });\n dispatch({\n type: 'SET_SORT_BY',\n payload: pref.res.ui_preferences[0]?.sorting?.sortBy || 'name'\n });\n dispatch({\n type: 'SET_SORT_ORDER',\n payload: pref.res.ui_preferences[0]?.sorting?.sortOrder?.toLowerCase() || 'asc'\n });\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting user preference data, ${error}`,\n state: 'error'\n }\n })\n });\n\n const { data: density } = useQuery({\n queryKey: ['density'],\n queryFn: () => Api.getDensityPreferences(),\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting table density preference, ${error}`,\n state: 'error'\n }\n })\n });\n\n const {\n data: forms,\n isLoading: loadingForms,\n refetch: refetchForms\n } = useQuery({\n queryKey: [\n 'forms',\n {\n page: SmartFormsState.currentPage,\n limit: SmartFormsState.rowsPerPage,\n sort: SmartFormsState.sortBy,\n sort_order: SmartFormsState.sortOrder,\n search: SmartFormsState.search\n }\n ],\n queryFn: () =>\n Api.getSmartForms({\n page: SmartFormsState.currentPage,\n limit: SmartFormsState.rowsPerPage,\n sort: SmartFormsState.sortBy,\n sort_order: SmartFormsState.sortOrder,\n 'q[search]': SmartFormsState.search\n }),\n onSuccess: () => {\n handleUserPreferenceChange.mutate();\n clearPreferenceCache('smart_forms');\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error loading smart forms, ${error}`,\n state: 'error'\n }\n }),\n enabled: fetchedPreferences\n });\n\n const handleUserPreferenceChange = useMutation({\n mutationFn: () =>\n Api.postUserPreferences({\n ui_preference: {\n row_count: SmartFormsState.rowsPerPage,\n sorting: { sortBy: SmartFormsState.sortBy, sortOrder: SmartFormsState.sortOrder },\n source: `smart_forms`\n }\n }),\n\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error updating user preferences, ${error}`,\n state: 'error'\n }\n })\n });\n\n return (\n <Fragment>\n <Box sx={styles.smartFormsPageContainer}>\n <Box sx={{ ...styles.smartFormsPageHeader, paddingLeft: 2, paddingRight: 1 }}>\n <Typography variant=\"h1\">Smart Forms</Typography>\n <CreateButton\n id=\"smart-form-open-modal-button\"\n ariaLabel=\"Add new smart form\"\n onClick={(e) => {\n setActionsAnchorEl(e.currentTarget);\n }}\n isOpen={Boolean(actionsAnchorEl)}\n />\n <Popover\n id={actionsAnchorEl ? 'actions-menu-popover' : undefined}\n sx={styles.actionsMenu}\n open={Boolean(actionsAnchorEl)}\n anchorEl={actionsAnchorEl}\n onClose={() => {\n setActionsAnchorEl(null);\n }}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'right'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'right'\n }}\n >\n <span\n onClick={() => {\n setActionsAnchorEl(null);\n dispatch({\n type: 'SET_MODAL_OPEN',\n payload: ModalType.CREATE\n });\n }}\n className=\"create-smart-form-action-button\"\n >\n Create Smart Form\n </span>\n <span\n onClick={() => {\n setActionsAnchorEl(null);\n dispatch({\n type: 'SET_MODAL_OPEN',\n payload: ModalType.CLONE_WITHOUT_FORM\n });\n }}\n className=\"clone-smart-form-action-button\"\n >\n Clone Smart Form\n </span>\n </Popover>\n </Box>\n <Divider sx={{ margin: '32px 16px' }} />\n <Box sx={{ padding: 2 }}>\n <Search\n idLabel=\"smart-forms\"\n placeholder=\"Search by title\"\n setSearch={(title) => dispatch({ type: 'SET_SEARCH', payload: title })}\n />\n </Box>\n <SmartFormsTable\n forms={forms?.res.smart_forms}\n loadingForms={loadingForms}\n density={density?.res.ui_preferences[0]?.columns?.density || 'Default'}\n totalPages={forms?.resHead['x-total-pages']}\n totalForms={forms?.resHead['x-total-count']}\n SmartFormsState={SmartFormsState}\n dispatch={dispatch}\n refetchForms={refetchForms}\n />\n </Box>\n <StyledSnackbar\n message={SmartFormsState?.snackbar?.message}\n state={SmartFormsState?.snackbar?.state}\n setSnackbarState={() => {\n dispatch({ type: 'SET_SNACKBAR', payload: { message: '', state: 'success' } });\n }}\n />\n {modalType && (\n <SmartFormModal\n dispatch={dispatch}\n limit={forms?.resHead['x-total-count']}\n entityId={entityId}\n smartFormState={SmartFormsState}\n refetchForms={refetchForms}\n modalType={modalType}\n />\n )}\n </Fragment>\n );\n}\n","import React, { useState } from 'react';\nimport {\n Box,\n FormControl,\n IconButton,\n Select,\n Skeleton,\n MenuItem,\n Pagination,\n TableContainer,\n Table,\n TableBody,\n TableHead,\n TableRow,\n TableCell,\n TableSortLabel,\n Tooltip,\n tooltipClasses,\n TooltipProps,\n styled,\n Stack,\n Popover\n} from '@mui/material';\nimport {\n Delete as DeleteIcon,\n Edit as EditIcon,\n CheckCircle as CheckCircleIcon,\n Cancel as CancelIcon,\n FileCopy as FileCopyIcon\n} from '@mui/icons-material';\nimport { ISmartFormsTableProps, IError, ModalType, ISmartForm } from './types';\nimport { SmartFormsTableHeaders } from './config';\nimport { classes } from '../Job/Applications/styles';\nimport GenericDialog from '../Components/Modals/GenericDialog';\nimport { useMutation } from '@tanstack/react-query';\nimport Api from './API';\nimport moment from 'moment-timezone';\n\nconst tablePadding = (density: string) => {\n if (density === 'Default') {\n return '22px';\n } else if (density === 'Compact') {\n return '15px';\n } else {\n return '8px';\n }\n};\n\nconst DeleteTooltip = styled(({ className, ...props }: TooltipProps) => (\n <Tooltip {...props} classes={{ popper: className }} />\n))({ [`& .${tooltipClasses.tooltip}`]: { maxWidth: '200px', lineHeight: '1.75em' } });\n\nexport default function SmartFormsTable({\n forms,\n loadingForms,\n density,\n totalPages,\n totalForms,\n SmartFormsState,\n dispatch,\n refetchForms\n}: ISmartFormsTableProps) {\n const { sortBy, sortOrder, rowsPerPage, currentPage, isDialogOpen, deleteSmartForm } =\n SmartFormsState;\n const timeZoneString = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const [enabledAnchorEl, setEnabledAnchorEl] = useState<HTMLDivElement | null>(null);\n const [selectedForm, setSelectedForm] = useState<ISmartForm | null>(null);\n\n const handleSortChange = (\n event: React.MouseEvent<HTMLSpanElement, MouseEvent>,\n columnValue: string\n ) => {\n const isAsc = sortBy === columnValue && sortOrder === 'asc';\n const newSortOrder = isAsc ? 'desc' : 'asc';\n dispatch({ type: 'SET_SORT_ORDER', payload: newSortOrder });\n dispatch({ type: 'SET_SORT_BY', payload: columnValue });\n };\n\n const handlePageChange = (event: React.ChangeEvent<unknown>, newPage: number) => {\n if (newPage === currentPage) return;\n dispatch({ type: 'SET_CURRENT_PAGE', payload: newPage });\n sessionStorage.setItem(`smartFormsTablePage`, newPage.toString());\n };\n\n const deleteForm = useMutation({\n mutationFn: async (formId: number) => {\n const { res } = await Api.deleteSmartForm(formId);\n return res;\n },\n onError: (error: IError) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Failed to delete smart form, ${error.errors.join('. ')}`,\n state: 'error'\n }\n }),\n onSuccess: (res) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n refetchForms();\n },\n onSettled: () => {\n dispatch({ type: 'SET_IS_DIALOG_OPEN', payload: false });\n }\n });\n\n const { mutate: updateSmartForm } = useMutation({\n mutationFn: async (): Promise<void> => {\n const body = {\n name: selectedForm?.title,\n entity_id: selectedForm?.entity_id,\n enabled: !selectedForm?.enabled\n };\n\n await Api.updateSmartForm(selectedForm?.id, { form: body });\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error updating the smart form, ${error}`,\n state: 'error'\n }\n }),\n onSuccess: (data) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Smart form was successfully updated`,\n state: 'success'\n }\n });\n refetchForms();\n },\n onSettled: async () => selectedForm\n });\n\n const handleEnabledDropdown = (event: React.MouseEvent<HTMLElement>, form: ISmartForm) => {\n setEnabledAnchorEl(event.currentTarget);\n setSelectedForm(form);\n };\n\n const handleEnabledDropdownClose = () => {\n setEnabledAnchorEl(null);\n setTimeout(() => {\n // timeout is used to account for the dropdown close animation time\n setSelectedForm(null);\n }, 300);\n };\n\n const handleEnabledChange = () => {\n updateSmartForm();\n handleEnabledDropdownClose();\n };\n\n return (\n <Box sx={{ padding: 2 }}>\n <Box sx={{ position: 'relative' }}>\n <TableContainer sx={{ boxShadow: 'none', scrollBehavior: 'smooth' }}>\n <Table\n sx={{\n ...classes.tableWrapper,\n minWidth: 'unset',\n 'th, td, tr, thead': { padding: `${tablePadding(density)} 10px` }\n }}\n aria-label=\"smart forms\"\n >\n <TableHead>\n <TableRow>\n {SmartFormsTableHeaders.map((header) => (\n <TableCell key={header.name}>\n <TableSortLabel\n active={sortBy === header.name}\n direction={sortBy === header.name ? (sortOrder as 'asc' | 'desc') : 'asc'}\n onClick={(event) => handleSortChange(event, header.name)}\n sx={header.sortable ? classes.sortable : null}\n disabled={!header.sortable}\n id={`${header.name}-sort-label-smart-forms`}\n >\n {header.label}\n </TableSortLabel>\n </TableCell>\n ))}\n <TableCell />\n </TableRow>\n </TableHead>\n <TableBody>\n {forms &&\n !loadingForms &&\n forms.map((form) => {\n const updatedAt = form.updated_at\n ? moment\n .tz(form.updated_at, timeZoneString)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${form.id}-${line}`}>{line}</div>)\n : '-';\n const createdAt = form.created_at\n ? moment\n .tz(form.created_at, timeZoneString)\n .format('DD MMM YYYY,-h:mma z')\n .split('-')\n .map((line) => <div key={`${form.id}-${line}`}>{line}</div>)\n : '-';\n return (\n <TableRow key={form.id}>\n <TableCell sx={{ minWidth: '200px' }}>\n <Box\n sx={{\n '& a': {\n color: '#666666',\n fontWeight: 'bold',\n '&:hover': {\n textDecoration: 'none'\n }\n }\n }}\n >\n <a href={`/admin/forms/${form.id}`} className=\"smart-form-title-link\">\n {form.title || '-'}\n </a>\n </Box>\n </TableCell>\n <TableCell sx={{ cursor: 'pointer' }}>\n <Stack id=\"enabled-dropdown\" sx={{ marginLeft: 2 }}>\n {form.enabled ? (\n <CheckCircleIcon\n sx={{ color: '#8CCF95' }}\n onClick={(event) => handleEnabledDropdown(event, form)}\n />\n ) : (\n <CancelIcon\n sx={{ color: '#E37D7A' }}\n onClick={(event) => handleEnabledDropdown(event, form)}\n />\n )}\n </Stack>\n </TableCell>\n <TableCell sx={{ minWidth: '150px' }}>{updatedAt}</TableCell>\n <TableCell sx={{ minWidth: '150px' }}>{createdAt}</TableCell>\n <TableCell sx={{ minWidth: '150px' }}>{form.created_by || '-'}</TableCell>\n <TableCell>\n <Box sx={{ ...classes.actionItems, columnGap: '4px' }}>\n <IconButton\n className=\"smart-form-edit-button\"\n onClick={() => {\n window.location.href = `/admin/forms/${form.id}/fields`;\n }}\n >\n <EditIcon sx={{ fontSize: '18px' }} />\n </IconButton>\n <IconButton\n className=\"smart-form-clone-button\"\n onClick={() => {\n dispatch({ type: 'SET_SELECTED_FORM', payload: form });\n dispatch({\n type: 'SET_MODAL_OPEN',\n payload: ModalType.CLONE\n });\n }}\n >\n <FileCopyIcon sx={{ fontSize: '18px' }} />\n </IconButton>\n <DeleteTooltip\n title={\n !form.deletable\n ? 'This smart form is attached to a candidate/s and cannot be trashed.'\n : ''\n }\n placement=\"top\"\n arrow\n >\n <Stack>\n <IconButton\n className=\"smart-form-delete-button\"\n sx={{ color: '#E37D7A' }}\n onClick={() => {\n dispatch({ type: 'SET_IS_DIALOG_OPEN', payload: true });\n dispatch({ type: 'SET_DELETE_SMART_FORM', payload: form.id });\n }}\n disabled={!form.deletable}\n >\n <DeleteIcon sx={{ fontSize: '18px' }} />\n </IconButton>\n </Stack>\n </DeleteTooltip>\n </Box>\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n {!loadingForms && forms?.length === 0 && (\n <Box sx={classes.noApplications}>No Smart Forms found</Box>\n )}\n {loadingForms && (\n <>\n {[...Array(10)].map((_, index) => (\n <Box key={index} sx={classes.skeletonContainer}>\n <Skeleton animation=\"wave\" height={60} />\n </Box>\n ))}\n </>\n )}\n </TableContainer>\n <Popover\n id={enabledAnchorEl ? 'enabled-selection' : undefined}\n sx={classes.enabledDropdown}\n open={Boolean(enabledAnchorEl)}\n anchorEl={enabledAnchorEl}\n onClose={handleEnabledDropdownClose}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'center'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'center'\n }}\n >\n <span key={`${selectedForm?.id}-enabled`} onClick={handleEnabledChange}>\n {selectedForm?.enabled ? (\n <CancelIcon sx={{ color: '#E37D7A' }} />\n ) : (\n <CheckCircleIcon sx={{ color: '#8CCF95' }} />\n )}\n </span>\n </Popover>\n </Box>\n {!loadingForms && (\n <Box sx={classes.paginationParent}>\n <Box sx={classes.rowSelectContainer}>\n <span>Rows per page: </span>\n <FormControl>\n <Select\n id=\"rows-per-page\"\n sx={classes.rowSelect}\n value={rowsPerPage}\n onChange={(e) =>\n dispatch({ type: 'SET_ROWS_PER_PAGE', payload: Number(e.target.value) })\n }\n displayEmpty\n MenuProps={{ sx: classes.paginationMenuItems }}\n >\n <MenuItem id=\"first-rpp-item\" value={10}>\n 10\n </MenuItem>\n <MenuItem id=\"second-rpp-item\" value={20}>\n 20\n </MenuItem>\n <MenuItem value={30}>30</MenuItem>\n <MenuItem value={40}>40</MenuItem>\n <MenuItem value={50}>50</MenuItem>\n </Select>\n </FormControl>\n </Box>\n <Box sx={classes.paginationContainer}>\n <Pagination\n id=\"pagination-menu\"\n count={Number(totalPages)}\n page={currentPage}\n siblingCount={0}\n onChange={handlePageChange}\n sx={classes.pagination}\n />\n <span id=\"total-forms\">{totalForms} Total</span>\n </Box>\n </Box>\n )}\n <GenericDialog\n isDialogOpen={isDialogOpen}\n setDialogOpen={(value: boolean) => dispatch({ type: 'SET_IS_DIALOG_OPEN', payload: value })}\n title={`Are you sure you want to trash this form?`}\n description=\"\"\n buttonCallback={() => deleteForm.mutate(deleteSmartForm)}\n callbackLoading={deleteForm.isLoading}\n buttonText=\"Trash\"\n url=\"\"\n />\n </Box>\n );\n}\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport SampleList from './Sample/SampleList';\nimport SmartForms from './SmartForms';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\nexport default function SmartFormsPage({ entityId }: { entityId: number }) {\n return (\n <QueryClientProvider client={queryClient}>\n <SmartForms entityId={entityId} />\n {/* <SampleList apiKey={apiKey} /> */}\n <ReactQueryDevtools />\n </QueryClientProvider>\n );\n}\n","import { RefObject } from 'react';\n\ntype ScrollOptions = {\n behavior?: 'auto' | 'smooth' | 'instant';\n block?: 'start' | 'center' | 'end' | 'nearest';\n};\n\nexport const scrollToElement = <T extends HTMLElement>(\n elementRef: RefObject<T> | T | null,\n options: ScrollOptions = {}\n): void => {\n const { behavior = 'smooth', block = 'center' } = options;\n const element = elementRef && 'current' in elementRef ? elementRef.current : elementRef;\n\n if (!element) return;\n\n window.requestAnimationFrame(() => {\n element.scrollIntoView({ behavior, block });\n });\n};\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport { FirstStep, ReviewStep, SecondStep } from './EventProgress';\nimport { Avatar, Box, Button, CircularProgress, Dialog, Divider, Stack } from '@mui/material';\nimport {\n Check as CheckIcon,\n Close as CloseIcon,\n NavigateBefore,\n NavigateNext\n} from '@mui/icons-material';\nimport Api from '../API';\nimport { withFormValidation } from 'react-form-context-validation';\nimport { classes } from './styles';\nimport { IEvent, ScoutCalendarAction, ScoutCalendarState } from '../types';\nimport { sharedClasses } from '../../NewUI/Components/CustomUIElements/sharedClasses';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { InitialScoutCalendarState } from '../reducer';\nimport dayjs from 'dayjs';\nimport { IError } from '../../NewUI/SmartForms/types';\nimport GenericDialog from '../../NewUI/Components/Modals/GenericDialog';\nimport { useDispatch } from '../../NewUI/hooks/useDispatch';\nimport formatToUserTimeZone, { userTimeZone } from '../../NewUI/utils/formatToUserTimeZone';\n\nconst URL_PARAMS = new URL(window.location.href);\n\ninterface Props {\n events: IEvent[];\n ScoutCalendarState: ScoutCalendarState;\n dispatch: Dispatch<ScoutCalendarAction>;\n setEventCreated?: Dispatch<SetStateAction<boolean>>;\n // setSnackbar indicates that the modal is called from dashboard\n setSnackbar?: Dispatch<\n SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n >;\n}\n\nfunction CreateEvent({\n events,\n ScoutCalendarState,\n dispatch,\n setEventCreated,\n setSnackbar\n}: Props) {\n const [exitDialogOpen, setExitDialogOpen] = useState<boolean>(false);\n const { showCreateEventModal, createEventObject, createMultipleEvents, weekStart } =\n ScoutCalendarState;\n const { step, eventId } = createEventObject;\n const queryClient = useQueryClient();\n const { displayError } = useDispatch(dispatch);\n\n const { data: options, isLoading: loadingOptions } = useQuery({\n queryKey: ['event options'],\n queryFn: () => Api.getEventOptions().then(({ res }) => res),\n onError: (error) => {\n const snackbarPayload: { message: string; state: 'error' } = {\n message: `There was an error getting event type options, ${error}`,\n state: 'error'\n };\n setSnackbar ? setSnackbar(snackbarPayload) : displayError(snackbarPayload.message);\n },\n onSuccess: (options) =>\n !eventId &&\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: {\n ...createEventObject,\n eventType: options.event_types[0],\n duration: String(options.event_types[0].duration),\n maxCandidates: String(options.event_types[0].max_candidates)\n }\n })\n });\n\n const { data: recruiterOptions, isLoading: loadingRecruiterOptions } = useQuery({\n queryKey: ['recruiter options'],\n queryFn: () => Api.getEventRecruiters().then(({ res }) => res),\n onError: (error) => {\n const snackbarPayload: { message: string; state: 'error' } = {\n message: `There was an error getting event recruiter options, ${error}`,\n state: 'error'\n };\n setSnackbar ? setSnackbar(snackbarPayload) : displayError(snackbarPayload.message);\n },\n onSuccess: (recruiterOptions) =>\n !eventId &&\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, recruiters: [recruiterOptions.users[0]] }\n })\n });\n\n const validateInput = () => {\n const errors = { ...InitialScoutCalendarState.errorsMessage };\n if (step === 1) {\n if (!createEventObject.eventType) {\n errors.eventType = 'Event Type is a mandatory field';\n }\n if (Number(createEventObject.duration) < 1) {\n errors.duration = 'Duration can not be zero';\n }\n if (Number(createEventObject.maxCandidates) < createEventObject.candidates.length) {\n errors.maxCandidates =\n 'The number of candidates currently booked to this event exceeds max capacity';\n }\n if (Number(createEventObject.maxCandidates) < 1) {\n errors.maxCandidates = 'Minimum 1 candidate per session';\n }\n if (Number(createEventObject.sessions) < 1) {\n errors.sessions = 'Minimum 1 session per day';\n }\n if (!createEventObject.recruiters.length) {\n errors.recruiters = 'You need at least 1 recruiter';\n }\n if (dayjs(createEventObject.eventDate).isBefore(Date.now())) {\n errors.time = 'Time must be in the future';\n }\n if (!createEventObject.dates.length) {\n errors.dates = 'Please select at least 1 date';\n }\n } else {\n if (!createEventObject.eventName) {\n errors.eventName = 'Event name is a mandatory field';\n }\n }\n dispatch({ type: 'SET_ERROR_MESSAGE', payload: errors });\n return Object.values(errors).every((item) => !item);\n };\n\n const nextStep = () => {\n if (validateInput()) {\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, step: step + 1 }\n });\n }\n };\n\n const onClose = () => {\n dispatch({ type: 'RESET_STATE' });\n dispatch({ type: 'SET_SHOW_CREATE_EVENT_MODAL', payload: false });\n URL_PARAMS.search = '';\n window.history.pushState(null, '', URL_PARAMS.href);\n };\n\n const createEventParams = {\n begins_at: dayjs(createEventObject.eventDate).tz(userTimeZone).toISOString(),\n ends_at: dayjs(createEventObject.eventDate)\n .tz(userTimeZone)\n .add(Number(createEventObject.duration), 'm')\n .toISOString(),\n subject: createEventObject.eventName,\n note: createEventObject.eventDescription,\n event_type_id: createEventObject.eventType?.id,\n break_length: eventId ? undefined : Number(createEventObject.breaks),\n duration: Number(createEventObject.duration),\n max_candidates: Number(createEventObject.maxCandidates),\n dates: eventId\n ? undefined\n : createEventObject.dates.map((d) => dayjs(d).tz(userTimeZone).toISOString()),\n user_ids: createEventObject.recruiters.map((r) => r.id),\n number_of_sessions: eventId ? undefined : Number(createEventObject.sessions)\n };\n\n const { mutate: createEvents, isLoading: creatingEvents } = useMutation({\n mutationFn: async () => {\n const { res } = await Api.createEventsBatches(createEventParams);\n return res;\n },\n onError: (error: IError) => {\n const emojiError = error.errors.includes('Incorrect string value');\n displayError(\n `There was an error creating the event. ${\n emojiError ? 'Event name and description can not have emojis.' : error.errors\n }`\n );\n },\n onSuccess: (res) => {\n queryClient.setQueryData(\n ['events', weekStart],\n [\n ...events,\n ...res.events.map((e: IEvent) => ({\n ...e,\n start: new Date(e.begins_at),\n end: new Date(e.ends_at)\n }))\n ]\n );\n dispatch({ type: 'SET_SHOW_CREATE_EVENT_MODAL', payload: false });\n queryClient.invalidateQueries(['getEvents'], { exact: true });\n setEventCreated && setEventCreated(true);\n }\n });\n\n const { mutate: editEvent, isLoading: editingEvent } = useMutation({\n mutationFn: async () => {\n const { res } = await Api.updateEvent(eventId, createEventParams);\n return res;\n },\n onError: (error: IError) => {\n const emojiError = error.errors.includes('Incorrect string value');\n const snackbarPayload: { message: string; state: 'error' } = {\n message: `There was an error editing the event. ${\n emojiError ? 'Event name and description can not have emojis.' : error.errors\n }`,\n state: 'error'\n };\n setSnackbar ? setSnackbar(snackbarPayload) : displayError(snackbarPayload.message);\n },\n onSuccess: (res) => {\n const newList = [...events];\n const index = newList.findIndex((e) => e.id === eventId);\n newList[index] = { ...res, start: new Date(res.begins_at), end: new Date(res.ends_at) };\n setSnackbar\n ? queryClient.setQueryData(['getEvents'], { pages: [{ data: { events: newList } }] })\n : queryClient.setQueryData(['events', weekStart], newList);\n const snackbarPayload: { message: string; state: 'success' } = {\n message: `Event has been updated`,\n state: 'success'\n };\n setSnackbar\n ? setSnackbar(snackbarPayload)\n : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n onClose();\n }\n });\n\n const buttonOnClickAction = () => {\n if (step < 3) {\n return nextStep();\n }\n return eventId ? editEvent() : createEvents();\n };\n\n const buttonName = () => {\n if (step < 3) {\n return 'Next';\n }\n return eventId ? 'Save Event' : 'Create Event';\n };\n\n const createEventModalTitle = `Create ${createMultipleEvents ? 'multiple events' : 'an event'}`;\n\n const ExitDialogDescription = () => (\n <Stack>\n <Stack>{`Are you sure you want to ${\n eventId ? 'discard your changes' : 'cancel your event'\n }?`}</Stack>\n <Stack>You will lose any progress you have made.</Stack>\n </Stack>\n );\n\n return (\n <Dialog\n open={showCreateEventModal || createMultipleEvents}\n onClose={() => setExitDialogOpen(true)}\n sx={classes.modalWrapper}\n >\n <Stack sx={{ flexDirection: 'row' }}>\n <Stack sx={{ padding: 5, minWidth: '260px' }}>\n <Stack sx={classes.modalTitle}>{eventId ? 'Edit event' : createEventModalTitle}</Stack>\n <Stack\n sx={{\n flexDirection: 'row',\n fontFamily: 'Source Sans Pro',\n color: '#666666',\n paddingLeft: 1,\n columnGap: 1,\n alignItems: 'center',\n fontWeight: step === 1 ? 'bold' : 'inherit',\n width: 'fit-content',\n cursor: step !== 1 ? 'pointer' : 'unset'\n }}\n onClick={() =>\n step !== 1 &&\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, step: 1 }\n })\n }\n >\n <Avatar\n sx={{\n fontFamily: 'inherit',\n fontWeight: 'bold',\n color: step >= 1 ? 'white' : 'inherit',\n background: step >= 1 ? '#5BC4C0' : '#D6DEE2',\n width: 32,\n height: 32\n }}\n >\n 1\n </Avatar>\n Event Time\n {step > 1 && <CheckIcon sx={{ color: '#76D18F' }} />}\n </Stack>\n <Stack sx={{ flexDirection: 'row', height: '64px', paddingLeft: '23px' }}>\n <Divider orientation=\"vertical\" sx={{ borderColor: '#D6DEE2', borderWidth: '1px' }} />\n </Stack>\n <Stack\n sx={{\n flexDirection: 'row',\n fontFamily: 'Source Sans Pro',\n color: '#666666',\n paddingLeft: 1,\n columnGap: 1,\n alignItems: 'center',\n fontWeight: step === 2 ? 'bold' : 'inherit',\n width: 'fit-content',\n cursor: step !== 2 ? 'pointer' : 'unset'\n }}\n onClick={() =>\n step !== 2 &&\n validateInput() &&\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, step: 2 }\n })\n }\n >\n <Avatar\n sx={{\n fontFamily: 'inherit',\n fontWeight: 'bold',\n color: step >= 2 ? 'white' : 'inherit',\n background: step >= 2 ? '#5BC4C0' : '#D6DEE2',\n width: 32,\n height: 32\n }}\n >\n 2\n </Avatar>\n Event Details\n {step > 2 && <CheckIcon sx={{ color: '#76D18F' }} />}\n </Stack>\n <Stack sx={{ flexDirection: 'row', height: '64px', paddingLeft: '23px' }}>\n <Divider orientation=\"vertical\" sx={{ borderColor: '#D6DEE2', borderWidth: '1px' }} />\n </Stack>\n <Stack\n sx={{\n flexDirection: 'row',\n fontFamily: 'Source Sans Pro',\n color: '#666666',\n paddingLeft: 1,\n columnGap: 1,\n alignItems: 'center',\n fontWeight: step === 3 ? 'bold' : 'inherit',\n width: 'fit-content',\n cursor: step === 1 && !createEventObject.eventName ? 'unset' : 'pointer'\n }}\n onClick={() =>\n ((step === 1 && createEventObject.eventName) || (step === 2 && validateInput())) &&\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, step: 3 }\n })\n }\n >\n <Avatar\n sx={{\n fontFamily: 'inherit',\n fontWeight: 'bold',\n color: step === 3 ? 'white' : 'inherit',\n background: step === 3 ? '#5BC4C0' : '#D6DEE2',\n width: 32,\n height: 32\n }}\n >\n 3\n </Avatar>\n Review\n </Stack>\n </Stack>\n <Divider orientation=\"vertical\" flexItem />\n <Box sx={{ padding: 3, minWidth: '800px', width: '800px' }}>\n <Stack sx={{ alignItems: 'end' }}>\n <CloseIcon\n id={`close-${eventId ? 'edit' : 'create'}-event-modal-button`}\n onClick={() => setExitDialogOpen(true)}\n style={{ color: '#DDDDDD', cursor: 'pointer' }}\n />\n </Stack>\n <Box sx={{ padding: 2 }}>\n {step === 1 && (\n <FirstStep\n eventTypes={options?.event_types}\n loadingOptions={loadingOptions}\n recruiterOptions={recruiterOptions?.users}\n loadingRecruiterOptions={loadingRecruiterOptions}\n ScoutCalendarState={ScoutCalendarState}\n dispatch={dispatch}\n userTimezone={userTimeZone}\n />\n )}\n {step === 2 && (\n <SecondStep ScoutCalendarState={ScoutCalendarState} dispatch={dispatch} />\n )}\n {step === 3 && (\n <ReviewStep userTimezone={userTimeZone} {...{ ScoutCalendarState, dispatch }} />\n )}\n </Box>\n <Stack\n sx={{ flexDirection: 'row', justifyContent: 'flex-end', columnGap: 2, padding: 2 }}\n >\n {step > 1 && (\n <Button\n id={`back-to-step-${step === 3 ? 'two' : 'one'}-${eventId ? 'edit' : 'create'}-event-button`}\n onClick={() =>\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, step: step - 1 }\n })\n }\n sx={{ ...sharedClasses.genericButtonSecondary, minWidth: 'unset', padding: 1 }}\n >\n <NavigateBefore />\n </Button>\n )}\n <Button\n variant=\"contained\"\n id={\n step === 3\n ? `${eventId ? 'save' : 'create'}-event-button`\n : `next-to-step-${step === 2 ? 'three' : 'two'}-${eventId ? 'edit' : 'create'}-event-button`\n }\n onClick={buttonOnClickAction}\n sx={{\n ...sharedClasses.genericButton,\n padding: step === 3 ? '8px 16px' : '8px 12px 8px 20px'\n }}\n >\n {buttonName()}\n {creatingEvents || editingEvent ? (\n <CircularProgress size={16} sx={{ color: '#FFFFFF', marginLeft: 1 }} />\n ) : (\n step !== 3 && <NavigateNext />\n )}\n </Button>\n </Stack>\n </Box>\n </Stack>\n <GenericDialog\n isDialogOpen={exitDialogOpen}\n setDialogOpen={setExitDialogOpen}\n title={`Close without submitting?`}\n description={ExitDialogDescription()}\n buttonCallback={onClose}\n callbackLoading={false}\n buttonText=\"Yes, close\"\n secondaryButtonText=\"Back to editing\"\n url=\"\"\n />\n </Dialog>\n );\n}\n\nexport default withFormValidation(CreateEvent);\n","import React, { useState } from 'react';\nimport { Popover, Stack } from '@mui/material';\nimport { classes } from './styles';\nimport formatToUserTimeZone from '../../../NewUI/utils/formatToUserTimeZone';\n\nexport default function DateDisplay({ dates }: { dates: Date[] }) {\n const [datesAnchorEl, setDatesAnchorEl] = useState<HTMLDivElement | null>(null);\n return (\n <Stack flexDirection=\"row\">\n {formatToUserTimeZone(dates[0], 'shortWithDayOfWeek')}\n {dates.length > 1 && (\n <Stack\n sx={classes.multipleDatesIndicator}\n onClick={(e) => setDatesAnchorEl(e.currentTarget)}\n >{`+${dates.length - 1}`}</Stack>\n )}\n <Popover\n open={Boolean(datesAnchorEl)}\n anchorEl={datesAnchorEl}\n onClose={() => setDatesAnchorEl(null)}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n sx={{ '& .MuiPaper-root': { marginTop: 1 } }}\n >\n <Stack sx={{ padding: '8px 16px', rowGap: '4px' }}>\n {dates.slice(1).map((d, i) => (\n <Stack key={i} sx={{ fontSize: '14px' }}>\n {formatToUserTimeZone(d, 'shortWithDayOfWeek')}\n </Stack>\n ))}\n </Stack>\n </Popover>\n </Stack>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Autocomplete, Box, CircularProgress, Stack, TextField, Typography } from '@mui/material';\nimport { classes } from './styles';\nimport { sharedClasses } from '../../../NewUI/Components/CustomUIElements/sharedClasses';\nimport { FormNumberField } from '../../../NewUI/Components/CustomUIElements/FormTextField';\nimport {\n ControlledTimePicker,\n SingleDatePicker\n} from '../../../NewUI/Components/CustomUIElements/SingleDatePicker';\nimport { IEventType, ScoutCalendarAction, ScoutCalendarState } from '../../types';\nimport MultipleDatesPicker from '../../../NewUI/Components/CustomUIElements/MultipleDatesPicker';\nimport dayjs, { Dayjs } from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport advanced from 'dayjs/plugin/advancedFormat';\nimport { theme } from '../../../../components/ThemeContext/ThemeObject';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(advanced);\n\nexport default function FirstStep({\n eventTypes,\n loadingOptions,\n recruiterOptions,\n loadingRecruiterOptions,\n ScoutCalendarState,\n dispatch,\n userTimezone\n}: {\n eventTypes?: IEventType[];\n loadingOptions: boolean;\n recruiterOptions?: { id: number; name: string; checked: boolean }[];\n loadingRecruiterOptions: boolean;\n ScoutCalendarState: ScoutCalendarState;\n dispatch: Dispatch<ScoutCalendarAction>;\n userTimezone: string;\n}) {\n const { createEventObject, errorsMessage, createMultipleEvents } = ScoutCalendarState;\n const { eventDate } = createEventObject;\n const handleTimeChange = (time: Dayjs | null) => {\n if (!time) return;\n if (!time.isValid()) {\n dispatch({\n type: 'SET_ERROR_MESSAGE',\n payload: { ...errorsMessage, time: 'Please input a valid time' }\n });\n } else {\n dispatch({\n type: 'SET_ERROR_MESSAGE',\n payload: { ...errorsMessage, time: '' }\n });\n const hourAndMinute = time.format('H:mm').split(':');\n const newDateAndTime = dayjs\n .tz(createEventObject.eventDate, userTimezone)\n .hour(Number(hourAndMinute[0]))\n .minute(Number(hourAndMinute[1]))\n .second(0)\n .toDate();\n const newDates = [...createEventObject.dates];\n newDates[0] = newDateAndTime;\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: {\n ...createEventObject,\n eventDate: newDateAndTime,\n dates: createMultipleEvents ? createEventObject.dates : newDates\n }\n });\n }\n };\n\n return (\n <Box>\n <Box sx={classes.progressHeader}>Interview date and attendees</Box>\n <Stack\n sx={{\n height: '415px',\n overflow: 'auto',\n '&::-webkit-scrollbar': {\n display: 'none'\n },\n rowGap: 3\n }}\n >\n {createEventObject.eventId ? (\n <Stack sx={{ paddingLeft: 0.5, rowGap: 1 }}>\n <Stack sx={{ color: '#939393', flexDirection: 'row', columnGap: '2px' }}>\n Event type <Stack sx={{ color: theme.palette.error.main }}>*</Stack>\n </Stack>\n <Stack>{createEventObject.eventType?.name}</Stack>\n </Stack>\n ) : (\n <Autocomplete\n disablePortal\n autoHighlight\n includeInputInList\n options={eventTypes || []}\n groupBy={(option) => option.entity_name}\n loading={loadingOptions}\n getOptionLabel={(option) => option.name}\n noOptionsText=\"No event types\"\n value={createEventObject.eventType}\n isOptionEqualToValue={(option, value) => option.id === value.id}\n onChange={(_event, newValue) =>\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: {\n ...createEventObject,\n eventType: newValue,\n duration: newValue ? String(newValue.duration) : '15',\n maxCandidates: newValue ? String(newValue.max_candidates) : '1'\n }\n })\n }\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3 }}\n ListboxProps={{ style: classes.autocompleteListboxStyle }}\n renderInput={(params) => (\n <TextField\n {...params}\n sx={classes.autocompleteTextfield}\n label=\"Choose Event Type\"\n InputLabelProps={{ shrink: true }}\n required\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <React.Fragment>\n {loadingOptions ? <CircularProgress color=\"inherit\" size={20} /> : null}\n {params.InputProps.endAdornment}\n </React.Fragment>\n )\n }}\n helperText={errorsMessage.eventType}\n />\n )}\n />\n )}\n <Stack sx={{ flexDirection: 'row', columnGap: 3, margin: '3px' }}>\n <Box sx={{ width: '100%' }}>\n {createMultipleEvents ? (\n <MultipleDatesPicker\n values={createEventObject.dates}\n label={'Dates'}\n required\n minDate={dayjs()}\n onAccept={(dates) => {\n const selectedTime = dayjs(eventDate).format('H:mm').split(':');\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: {\n ...createEventObject,\n dates: dates,\n eventDate: dayjs(dates[0])\n .hour(Number(selectedTime[0]))\n .minute(Number(selectedTime[1]))\n .second(0)\n .toDate()\n }\n });\n }}\n error={errorsMessage.dates}\n />\n ) : (\n <>\n <SingleDatePicker\n value={createEventObject.eventDate}\n label={'Date'}\n inputStyles={classes.datePicker}\n disablePast\n onChange={(value) => {\n if (!value?.isValid()) {\n dispatch({\n type: 'SET_ERROR_MESSAGE',\n payload: { ...errorsMessage, date: 'Please input a valid date' }\n });\n } else {\n dispatch({\n type: 'SET_ERROR_MESSAGE',\n payload: { ...errorsMessage, date: '' }\n });\n value?.isValid() &&\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: {\n ...createEventObject,\n eventDate: dayjs(value.toDate()).second(0).toDate(),\n dates: [dayjs(value.toDate()).second(0).toDate()]\n }\n });\n }\n }}\n showTodayButton\n error={errorsMessage.date}\n />\n </>\n )}\n </Box>\n <Box sx={{ width: '100%' }}>\n <ControlledTimePicker\n onChange={handleTimeChange}\n value={dayjs.tz(createEventObject.eventDate, userTimezone)}\n label=\"Time\"\n minutesInterval={1}\n />\n {!!errorsMessage.time && (\n <Typography variant=\"caption\" sx={classes.errorMessage}>\n {errorsMessage.time}\n </Typography>\n )}\n </Box>\n <FormNumberField\n label={'Duration'}\n value={createEventObject.duration}\n onChange={(e) =>\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, duration: e.target.value }\n })\n }\n unit=\"minutes\"\n fullWidth\n error={errorsMessage.duration}\n />\n </Stack>\n <Stack\n sx={{\n flexDirection: 'row',\n columnGap: 3,\n margin: '3px'\n }}\n >\n <FormNumberField\n label={'Max. candidates per session'}\n value={createEventObject.maxCandidates}\n onChange={(e) =>\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, maxCandidates: e.target.value }\n })\n }\n styles={{ width: createMultipleEvents ? undefined : '31%' }}\n fullWidth\n required\n error={errorsMessage.maxCandidates}\n />\n {createMultipleEvents && (\n <>\n <FormNumberField\n label={'Sessions (in the day)'}\n value={createEventObject.sessions}\n onChange={(e) =>\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, sessions: e.target.value }\n })\n }\n fullWidth\n required\n error={errorsMessage.sessions}\n />\n <FormNumberField\n label={'Break (in between sessions)'}\n value={createEventObject.breaks}\n onChange={(e) =>\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, breaks: e.target.value }\n })\n }\n unit=\"minutes\"\n fullWidth\n required\n />\n </>\n )}\n </Stack>\n <Box>\n <Autocomplete\n multiple\n options={recruiterOptions || []}\n getOptionLabel={(option) => option.name}\n isOptionEqualToValue={(option, value) => option.id === value.id}\n value={createEventObject.recruiters}\n loading={loadingRecruiterOptions}\n onChange={(_e, newValue) =>\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, recruiters: newValue }\n })\n }\n sx={{ ...sharedClasses.formAutocomplete, width: '100%', marginTop: 3 }}\n ListboxProps={{ style: classes.autocompleteListboxStyle }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Add recruiters\"\n sx={classes.autocompleteTextfield}\n InputLabelProps={{ shrink: true }}\n placeholder={createEventObject.recruiters.length ? '' : 'Search Users'}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <React.Fragment>\n {loadingRecruiterOptions ? (\n <CircularProgress color=\"inherit\" size={20} />\n ) : null}\n {params.InputProps.endAdornment}\n </React.Fragment>\n )\n }}\n helperText={errorsMessage.recruiters}\n />\n )}\n />\n </Box>\n </Stack>\n </Box>\n );\n}\n","import React, { PropsWithChildren, ReactNode, useState } from 'react';\nimport {\n AvatarGroup,\n Avatar,\n Popover,\n Stack,\n Badge,\n Typography,\n SxProps,\n Tooltip\n} from '@mui/material';\nimport { classes } from './styles';\nimport { AcceptedIcon, DeclinedIcon } from '../../../../components/NewUI/Components/Icons';\nimport { IAttendee } from '../../types';\nimport { theme } from '../../../ThemeContext/ThemeObject';\n\nconst MAX_VISIBLE_AVATARS = 4;\n\ntype AvatarProps = Pick<IAttendee, 'id' | 'name' | 'state'>;\n\nconst getInitial = (name: string) => {\n if (name.toLowerCase() === 'me') return name;\n return name\n .trim()\n .split(' ')\n .map((x) => x[0])\n .reduce((acc, curr) => acc + curr)\n .slice(0, 2);\n};\n\nconst statusIconMap: Record<string, JSX.Element> = {\n accepted: <AcceptedIcon />,\n declined: <DeclinedIcon />\n};\n\nconst getIcon = (state?: string): JSX.Element | null => {\n if (!state) return null;\n return statusIconMap[state] || null;\n};\n\nconst CustomBadge = ({\n badgeContent,\n sx,\n children\n}: PropsWithChildren<{\n badgeContent: ReactNode;\n sx: SxProps;\n}>) => (\n <Badge\n overlap=\"circular\"\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n badgeContent={badgeContent}\n sx={sx}\n >\n {children}\n </Badge>\n);\n\nconst renderAvatar = (user: { id: number; name: string; state?: string }) => {\n return (\n <CustomBadge\n badgeContent={getIcon(user.state)}\n sx={{ '& .MuiBadge-badge': { bottom: '7% !important' } }}\n >\n <Tooltip key={user.id} title={user.name} placement=\"top\" arrow>\n <Avatar sx={{ ...classes.avatar }}>{getInitial(user.name).toUpperCase()}</Avatar>\n </Tooltip>\n </CustomBadge>\n );\n};\nexport default function GroupedAvatars({ users }: { users: AvatarProps[] }) {\n const [avatarAnchorEl, setAvatarAnchorEl] = useState<HTMLDivElement | null>(null);\n\n return (\n <>\n <AvatarGroup sx={{ justifyContent: 'start', marginLeft: '8px' }}>\n {users.length <= MAX_VISIBLE_AVATARS ? (\n users.slice(0, MAX_VISIBLE_AVATARS).map((r) => renderAvatar(r))\n ) : (\n <Stack flexDirection=\"row-reverse\">\n <Avatar\n sx={{\n ...classes.avatar,\n background: theme.palette.common.white,\n border: '2px solid #084D6D !important',\n cursor: 'pointer'\n }}\n onClick={(e) => setAvatarAnchorEl(e.currentTarget)}\n >{`+${users.length - 3}`}</Avatar>\n {users\n .slice(0, 3)\n .reverse()\n .map((r) => renderAvatar(r))}\n </Stack>\n )}\n </AvatarGroup>\n <Popover\n open={Boolean(avatarAnchorEl)}\n anchorEl={avatarAnchorEl}\n onClose={() => setAvatarAnchorEl(null)}\n anchorOrigin={{\n vertical: 'bottom',\n horizontal: 'left'\n }}\n transformOrigin={{\n vertical: 'top',\n horizontal: 'left'\n }}\n sx={{ '& .MuiPaper-root': { marginTop: 1 } }}\n >\n <Stack sx={{ padding: '8px 16px', rowGap: '4px' }}>\n {users.slice(3).map((r) => (\n <Stack key={r.id} sx={{ flexDirection: 'row', columnGap: 2, alignItems: 'center' }}>\n <Typography>{r.name}</Typography>\n {r.state && r.state !== 'invited' && (\n <CustomBadge\n badgeContent={getIcon(r.state)}\n sx={{ '& .MuiBadge-badge': { bottom: '-2px !important' } }}\n />\n )}\n </Stack>\n ))}\n </Stack>\n </Popover>\n </>\n );\n}\n","import React, { Dispatch, useMemo } from 'react';\nimport { Box, Divider, IconButton, Stack } from '@mui/material';\nimport { Edit as EditIcon, ChevronRight as ChevronRightIcon } from '@mui/icons-material';\nimport { ScoutCalendarState, ScoutCalendarAction } from '../../types';\nimport { classes } from './styles';\nimport GroupedAvatars from './GroupedAvatars';\nimport DateDisplay from './DateDisplay';\nimport { theme } from '../../../ThemeContext/ThemeObject';\nimport { CandidateGroupedAvatars } from '../../helper';\nimport formatToUserTimeZone from '../../../NewUI/utils/formatToUserTimeZone';\n\nexport default function ReviewStep({\n ScoutCalendarState,\n dispatch,\n setTab\n}: {\n ScoutCalendarState: ScoutCalendarState;\n dispatch: Dispatch<ScoutCalendarAction>;\n setTab?: (tab: number) => void;\n}) {\n const { createEventObject, createMultipleEvents, permissions, showViewEventModal } =\n ScoutCalendarState;\n const { recruiters, dates, owner, candidates } = createEventObject;\n const hasDescription = Boolean(createEventObject.eventDescription);\n const descriptionText = hasDescription ? createEventObject.eventDescription : '-';\n\n const memorisedDescriptionText = useMemo(\n () => (\n <>\n <Stack sx={{ color: '#939393' }}>Description</Stack>\n <Stack>{descriptionText}</Stack>\n </>\n ),\n [descriptionText]\n );\n\n return (\n <Box flexGrow={1}>\n {!showViewEventModal && <Box sx={classes.progressHeader}>Final step! is this correct?</Box>}\n <Stack\n sx={{\n height: '415px',\n rowGap: '20px',\n overflow: 'auto',\n '&::-webkit-scrollbar': {\n display: 'none'\n }\n }}\n >\n <Stack>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', color: '#939393' }}>\n Event type\n {permissions?.['Events']?.['Create / Edit Events'] && (\n <EditIcon\n id=\"edit-step-one-button\"\n sx={classes.editIcon}\n onClick={() => {\n if (createEventObject.eventId) {\n dispatch({ type: 'SET_SHOW_VIEW_EVENT_MODAL', payload: false });\n dispatch({ type: 'SET_SHOW_CREATE_EVENT_MODAL', payload: true });\n }\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, step: 1 }\n });\n }}\n />\n )}\n </Stack>\n <Stack>{createEventObject.eventType?.name}</Stack>\n </Stack>\n <Stack sx={{ flexDirection: 'row' }}>\n <Stack sx={{ width: '100%' }}>\n <Stack sx={{ color: '#939393' }}>Date</Stack>\n <DateDisplay {...{ dates }} />\n </Stack>\n <Stack sx={{ width: '100%' }}>\n <Stack sx={{ color: '#939393' }}>Time</Stack>\n <Stack>{formatToUserTimeZone(createEventObject.eventDate, 'onlyTime')}</Stack>\n </Stack>\n <Stack sx={{ width: '100%' }}>\n <Stack sx={{ color: '#939393' }}>Duration</Stack>\n <Stack>{createEventObject.duration} minutes</Stack>\n </Stack>\n </Stack>\n {!owner && (\n <Stack sx={{ flexDirection: 'row' }}>\n <Stack sx={{ width: '100%' }}>\n <Stack sx={{ color: '#939393' }}>{`Max. candidates (per session)`}</Stack>\n <Stack>{createEventObject.maxCandidates}</Stack>\n </Stack>\n {createMultipleEvents && (\n <>\n <Stack sx={{ width: '100%' }}>\n <Stack sx={{ color: '#939393' }}>{`Sessions (in the day)`}</Stack>\n <Stack>{createEventObject.sessions}</Stack>\n </Stack>\n <Stack sx={{ width: '100%' }}>\n <Stack sx={{ color: '#939393' }}>{`Break (in between sessions)`}</Stack>\n <Stack>{createEventObject.breaks} minutes</Stack>\n </Stack>\n </>\n )}\n </Stack>\n )}\n <Stack sx={{ flexDirection: 'row' }}>\n {owner && (\n <Stack sx={{ width: '33%' }} gap={0.5}>\n <Stack sx={{ color: '#939393' }}>Created by</Stack>\n <GroupedAvatars users={[{ id: 0, name: owner }]} />\n </Stack>\n )}\n <Stack sx={{ width: '33%' }} gap={0.5}>\n <Stack sx={{ color: '#939393' }}>Recruiters</Stack>\n <GroupedAvatars\n users={recruiters.map((r) => ({ id: r.id, name: r.name, state: r.state }))}\n />\n </Stack>\n {showViewEventModal && (\n <Stack sx={{ width: '33%' }} gap={0.5}>\n <Stack sx={{ color: '#939393' }}>\n Candidates ({candidates.length}/{createEventObject.maxCandidates} booked)\n </Stack>\n <Stack direction={'row'} gap={0.5}>\n {candidates.length ? (\n <>\n <CandidateGroupedAvatars candidates={candidates} />\n <IconButton\n onClick={() => setTab?.(2)}\n sx={{ color: theme.palette.common.darkGrey, width: 'min-content' }}\n size=\"small\"\n id={'candidates-button-details-tab'}\n >\n <ChevronRightIcon />\n </IconButton>\n </>\n ) : (\n <Stack sx={classes.noCandidatesAssigned}>No Candidates Assigned</Stack>\n )}\n </Stack>\n </Stack>\n )}\n </Stack>\n <Divider />\n <Stack>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', color: '#939393' }}>\n Event name\n {permissions?.['Events']?.['Create / Edit Events'] && (\n <EditIcon\n id=\"edit-step-two-button\"\n sx={classes.editIcon}\n onClick={() => {\n if (createEventObject.eventId) {\n dispatch({ type: 'SET_SHOW_VIEW_EVENT_MODAL', payload: false });\n dispatch({ type: 'SET_SHOW_CREATE_EVENT_MODAL', payload: true });\n }\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, step: 2 }\n });\n }}\n />\n )}\n </Stack>\n <Stack sx={{ wordWrap: 'break-word' }}>{createEventObject.eventName}</Stack>\n </Stack>\n <Stack sx={{ overflowWrap: 'anywhere' }}>\n {showViewEventModal && hasDescription ? memorisedDescriptionText : null}\n {!showViewEventModal && memorisedDescriptionText}\n </Stack>\n </Stack>\n </Box>\n );\n}\n","import React, { Dispatch } from 'react';\nimport { Box, Stack } from '@mui/material';\nimport { classes } from './styles';\nimport {\n FormTextField,\n MultilineFormTextField\n} from '../../../NewUI/Components/CustomUIElements/FormTextField';\nimport { ScoutCalendarAction, ScoutCalendarState } from '../../types';\n\nexport default function SecondStep({\n ScoutCalendarState,\n dispatch\n}: {\n ScoutCalendarState: ScoutCalendarState;\n dispatch: Dispatch<ScoutCalendarAction>;\n}) {\n const { createEventObject, errorsMessage } = ScoutCalendarState;\n\n return (\n <Box>\n <Box sx={classes.progressHeader}>Event Details</Box>\n <Stack sx={{ height: '415px', rowGap: 3 }}>\n <FormTextField\n label=\"Event name\"\n value={createEventObject.eventName}\n onChange={(e) =>\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, eventName: e.target.value }\n })\n }\n fullWidth\n required\n error={errorsMessage.eventName}\n maxLength={255}\n />\n <Box>\n <MultilineFormTextField\n label=\"Description\"\n value={createEventObject.eventDescription}\n onChange={(e) =>\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, eventDescription: e.target.value }\n })\n }\n fullWidth\n rows={6}\n placeholder=\"Write your additional notes or comments\"\n maxLength={255}\n />\n <Stack sx={{ paddingRight: 1, flexDirection: 'row-reverse', color: '#838383' }}>\n {createEventObject.eventDescription.length}/255\n </Stack>\n </Box>\n </Stack>\n </Box>\n );\n}\n","import React from 'react';\nimport { Button, Dialog, Stack, Typography } from '@mui/material';\nimport {\n CheckCircle as CheckCircleIcon,\n AccessTimeRounded as AccessTimeRoundedIcon,\n EventRounded as EventRoundedIcon\n} from '@mui/icons-material';\nimport { classes } from './styles';\nimport { sharedClasses } from '../NewUI/Components/CustomUIElements/sharedClasses';\nimport DateDisplay from './CreateEvent/EventProgress/DateDisplay';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\nimport advanced from 'dayjs/plugin/advancedFormat';\nimport { ScoutCalendarState } from './types';\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(advanced);\n\nexport default function EventCreated({\n open,\n onClose,\n ScoutCalendarState,\n userTimezone\n}: {\n open: boolean;\n onClose: () => void;\n ScoutCalendarState: ScoutCalendarState;\n userTimezone: string;\n}) {\n const { createEventObject } = ScoutCalendarState;\n const sessions = Array.from({ length: Number(createEventObject.sessions) }, (_, i) =>\n dayjs\n .tz(createEventObject.eventDate, userTimezone)\n .add(i * (Number(createEventObject.duration) + Number(createEventObject.breaks)), 'm')\n .toDate()\n );\n return (\n <Dialog open={open} onClose={onClose}>\n <Stack sx={classes.eventCreatedModalContainer}>\n <CheckCircleIcon sx={{ color: '#5BC4BF', fontSize: '4rem', marginTop: 4 }} />\n <Typography sx={classes.eventCreatedModalTitle}>Event Created</Typography>\n <Stack sx={{ alignItems: 'center', rowGap: 1, color: '#333333' }}>\n <Typography sx={{ fontWeight: 'bold', wordBreak: 'break-word' }}>\n {createEventObject.eventName}\n </Typography>\n <Stack sx={{ flexDirection: 'row' }} gap={1}>\n <EventRoundedIcon\n sx={{ color: '#666', width: '16px', marginRight: '1', columnGap: 'unset' }}\n />\n <DateDisplay dates={createEventObject.dates} />\n </Stack>\n <Stack sx={{ flexDirection: 'row' }} gap={1}>\n <AccessTimeRoundedIcon sx={{ color: '#666', width: '16px' }} />\n <Stack sx={classes.eventSessionsContainer}>\n {sessions.map((session, index) => (\n <Typography sx={{ textDecoration: 'underline' }} key={index}>\n {dayjs.tz(session, userTimezone).format('h:mm a')} -{' '}\n {dayjs\n .tz(session, userTimezone)\n .add(Number(createEventObject.duration), 'm')\n .format('h:mm a')}\n </Typography>\n ))}\n </Stack>\n </Stack>\n </Stack>\n <Button\n variant=\"contained\"\n sx={{ ...sharedClasses.genericButton, margin: '16px 0px' }}\n onClick={onClose}\n >\n Exit\n </Button>\n </Stack>\n </Dialog>\n );\n}\n","import React, { Dispatch, useState } from 'react';\nimport { Stack, Avatar, Divider } from '@mui/material';\nimport { Edit as EditIcon, Circle as CircleIcon, Delete as DeleteIcon } from '@mui/icons-material';\nimport { classes } from './styles';\nimport { IEvent, ScoutCalendarAction, ScoutCalendarState } from './types';\nimport GroupedAvatars from './CreateEvent/EventProgress/GroupedAvatars';\nimport GenericDialog from '../NewUI/Components/Modals/GenericDialog';\nimport { CandidateGroupedAvatars, getAttendees, useDeleteEvent } from './helper';\nimport { NoEventsSVG } from '../NewUI/Components/Icons';\nimport { EmptyState } from '../NewUI/Components/CustomUIElements/EmptyState';\nimport formatToUserTimeZone from '../NewUI/utils/formatToUserTimeZone';\n\nexport default function ListView({\n events,\n handleSelectEvent,\n ScoutCalendarState,\n dispatch\n}: {\n events: IEvent[];\n handleSelectEvent: (event: IEvent, withoutModal?: boolean) => void;\n ScoutCalendarState: ScoutCalendarState;\n dispatch: Dispatch<ScoutCalendarAction>;\n}) {\n const [openConfirmationDialog, setOpenConfirmationDialog] = useState<boolean>(false);\n const { createEventObject } = ScoutCalendarState;\n\n const onClose = () => {\n dispatch({ type: 'RESET_STATE' });\n setOpenConfirmationDialog(false);\n };\n\n const { deleteEvent, deletingEvent } = useDeleteEvent({\n events,\n ScoutCalendarState,\n dispatch,\n onClose\n });\n\n if (!events.length) {\n return <EmptyState svgIcon={<NoEventsSVG />} label=\"No events\" />;\n }\n\n return (\n <Stack sx={{ paddingTop: 2, rowGap: 4 }}>\n {events.map((event, index) => {\n const recruiters = event.attendees.filter((a) => a.type === 'User');\n const candidates = event.attendees.filter((a) => a.type === 'Candidate');\n const nextEventIsOnSameDate =\n index + 1 !== events.length &&\n formatToUserTimeZone(event.start, 'short') ===\n formatToUserTimeZone(events[index + 1].start, 'short');\n const previousEventIsOnDifferentDate =\n index === 0 ||\n formatToUserTimeZone(event.start, 'short') !==\n formatToUserTimeZone(events[index - 1].start, 'short');\n\n return (\n <Stack key={event.id}>\n {previousEventIsOnDifferentDate && (\n <Stack sx={{ color: '#333333', paddingBottom: 3, fontWeight: 600, fontSize: '16px' }}>\n {formatToUserTimeZone(event.start, 'shortWithDayOfWeek')}\n </Stack>\n )}\n <Stack flexDirection=\"row\" columnGap={2}>\n <Stack>\n <Avatar sx={{ background: '#EDF2F5', width: 32, height: 32 }}>\n <CircleIcon sx={classes.listViewCircleIcon} />\n </Avatar>\n {nextEventIsOnSameDate && (\n <Divider\n orientation=\"vertical\"\n sx={{ width: '48%', borderRight: '2px solid #E3E3E3' }}\n />\n )}\n </Stack>\n <Stack sx={{ rowGap: 1, flexGrow: 1, paddingTop: 0.5 }}>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <Stack\n id=\"event-time-link\"\n sx={classes.listViewEventTime}\n onClick={() => handleSelectEvent(event)}\n >\n {formatToUserTimeZone(event.start, 'onlyTime')} -{' '}\n {formatToUserTimeZone(event.end, 'onlyTime')}\n </Stack>\n\n <Stack sx={{ flexDirection: 'row', columnGap: 1 }}>\n <EditIcon\n id=\"edit-event-list-view-button\"\n fontSize=\"small\"\n onClick={() => handleSelectEvent(event)}\n sx={{ color: '#666666', cursor: 'pointer' }}\n />\n <DeleteIcon\n id=\"delete-event-list-button\"\n fontSize=\"small\"\n sx={{ color: '#E37D7A', cursor: 'pointer' }}\n onClick={() => {\n handleSelectEvent(event, true);\n setOpenConfirmationDialog(true);\n }}\n />\n </Stack>\n </Stack>\n <Stack flexDirection=\"row\">\n <Stack\n id=\"event-name-link\"\n sx={classes.listViewEventTitle}\n onClick={() => handleSelectEvent(event)}\n >\n {event.subject}\n </Stack>\n </Stack>\n <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n <Stack sx={classes.listViewInfoTag}>\n <Stack sx={{ fontWeight: 'bold' }}>Created: </Stack>\n <Stack sx={{ fontWeight: 600 }}>{formatToUserTimeZone(event.created_at)}</Stack>\n </Stack>\n <Stack sx={classes.listViewInfoTag}>\n <Stack sx={{ fontWeight: 'bold' }}>Duration: </Stack>\n <Stack sx={{ fontWeight: 600 }}>{event.duration}</Stack>\n </Stack>\n </Stack>\n <Stack sx={{ flexDirection: 'row', padding: '16px 0px' }}>\n <Stack sx={{ width: '25%' }}>\n <Stack sx={classes.listViewSectionTitle}>Recruiters</Stack>\n <GroupedAvatars users={getAttendees(recruiters)} />\n </Stack>\n <Stack>\n <Stack sx={classes.listViewSectionTitle}>\n Candidates ({candidates.length}/{event.max_candidates} booked)\n </Stack>\n {candidates.length ? (\n <CandidateGroupedAvatars candidates={candidates} />\n ) : (\n <Stack sx={classes.listViewNoCandidatesAssigned}>\n No Candidates Assigned\n </Stack>\n )}\n </Stack>\n </Stack>\n {event.note && (\n <Stack sx={{ overflowWrap: 'anywhere' }}>\n <Stack sx={classes.listViewSectionTitle}>Description</Stack>\n {event.note}\n </Stack>\n )}\n </Stack>\n </Stack>\n </Stack>\n );\n })}\n <GenericDialog\n isDialogOpen={openConfirmationDialog}\n setDialogOpen={setOpenConfirmationDialog}\n title=\"Delete this event?\"\n description={`Are you sure you want to delete the event \"${createEventObject.eventName}\"?`}\n buttonCallback={() => deleteEvent()}\n callbackLoading={deletingEvent}\n buttonText=\"Delete\"\n url=\"\"\n primaryButtonId=\"confirm-delete-event-list-view-button\"\n secondaryButtonId=\"cancel-delete-event-list-view-button\"\n />\n </Stack>\n );\n}\n","import React, { useEffect, useReducer, useRef, useState } from 'react';\nimport { Calendar, momentLocalizer, Views } from 'react-big-calendar';\nimport StyledSnackbar from '../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport {\n Box,\n Button,\n CircularProgress,\n Link,\n Popover,\n Stack,\n Tooltip,\n Typography\n} from '@mui/material';\nimport {\n CalendarMonth as CalendarMonthIcon,\n ChevronLeftRounded as ChevronLeftRoundedIcon,\n ChevronRightRounded as ChevronRightRoundedIcon,\n Close as CloseIcon,\n Download as DownloadIcon,\n Sort as SortIcon,\n ViewList as ViewListIcon,\n Info as InfoIcon\n} from '@mui/icons-material';\nimport { withScoutTheme } from '../ThemeContext/ThemeContext';\nimport CreateEvent from './CreateEvent/CreateEvent';\nimport Settings from './Settings';\nimport { sharedClasses } from '../NewUI/Components/CustomUIElements/sharedClasses';\nimport { InitialScoutCalendarState, ScoutCalendarReducer } from './reducer';\nimport { classes } from './styles';\nimport { IEvent } from './types';\nimport { DateCalendar, LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport ViewEvent from './ViewEvent';\nimport { useQuery } from '@tanstack/react-query';\nimport CreateButton from '../NewUI/Components/Buttons/CreateButton';\nimport ListView from './ListView';\nimport { formatUserPermissions } from '../NewUI/Components/Utilities/formatUserPermissions';\nimport { getPermissions } from '../shared/permissionHelpers';\nimport EventCreated from './EventCreated';\nimport { getPlatform } from '../NewUI/utils/device-detect';\nimport { IScoutCalendarProps } from './index';\nimport { useEvents } from '../NewUI/hooks';\nimport dayjs, { Dayjs } from 'dayjs';\nimport isoWeek from 'dayjs/plugin/isoWeek';\nimport moment from 'moment-timezone';\n\nimport { userTimeZone } from '../NewUI/utils/formatToUserTimeZone';\n\nmoment.tz.setDefault(userTimeZone);\ndayjs.extend(isoWeek);\nconst localizer = momentLocalizer(moment);\n\nconst URL_PARAMS = new URL(window.location.href);\n\nfunction ScoutCalendar({ currentUser, token, newApplicationEnabled }: IScoutCalendarProps) {\n const { isMobile } = getPlatform();\n const [ScoutCalendarState, dispatch] = useReducer(\n ScoutCalendarReducer,\n InitialScoutCalendarState\n );\n const { weekStart, createEventObject, permissions } = ScoutCalendarState;\n const root = useRef(null);\n const [viewDate, setViewDate] = useState<Date>(new Date());\n const [showList, setShowList] = useState(false);\n const [actionsAnchorEl, setActionsAnchorEl] = useState<HTMLDivElement | null>(null);\n const [calendarAnchorEl, setCalendarAnchorEl] = useState<HTMLDivElement | null>(null);\n const [eventCreated, setEventCreated] = useState<boolean>(false);\n const [calendarView, setCalendarView] = useState<boolean>(!isMobile);\n const { data: events, isLoading: loadingEvents } = useEvents({\n weekStart: weekStart,\n onError: (message: string) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `There was an error getting events, ${message}`, state: 'error' }\n })\n });\n\n function initialData() {\n const URL = window.location.pathname.split('/');\n URL[URL.length - 2] === 'show' && setViewDate(dayjs(URL[URL.length - 1]).toDate());\n URL[URL.length - 1] === 'show' && handleSelectSlot();\n URL_PARAMS.search === '?new' && handleSelectSlot();\n if (URL_PARAMS.search === '?new_multiple') {\n handleSelectSlot();\n dispatch({ type: 'CREATE_MULTIPLE_EVENTS', payload: true });\n }\n }\n\n useEffect(() => {\n initialData();\n\n return () => {\n moment.tz.setDefault();\n };\n }, []);\n\n useQuery({\n queryKey: ['permissions'],\n queryFn: async () => {\n const res = await getPermissions();\n dispatch({ type: 'SET_PERMISSIONS', payload: formatUserPermissions(res) });\n return res;\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting events, ${error}`,\n state: 'error'\n }\n });\n }\n });\n\n useEffect(() => getWeekStart(), [viewDate]);\n\n function getWeekStart() {\n const today = dayjs(viewDate).isoWeekday();\n const startDay =\n today === 0 ? dayjs(viewDate).toDate() : dayjs(viewDate).startOf('week').toDate();\n dispatch({ type: 'SET_WEEK_START', payload: startDay });\n }\n\n const getMonthsName = () => {\n if (dayjs(weekStart).format('MMMM') !== dayjs(weekStart).add(6, 'd').format('MMMM')) {\n return `${dayjs(weekStart).format('MMM')} - ${dayjs(weekStart)\n .add(6, 'd')\n .format('MMM')} ${dayjs(weekStart).add(6, 'd').format('YYYY')}`;\n } else {\n return dayjs(weekStart).format('MMMM YYYY');\n }\n };\n\n function handleSelectEvent(event: IEvent, withoutModal?: boolean) {\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: {\n ...createEventObject,\n eventName: event.subject,\n eventDescription: event.note || '',\n maxCandidates: String(event.max_candidates),\n recruiters: event.attendees\n .filter((a) => a.type === 'User')\n .map((a) => ({\n id: a.id,\n name: a.name,\n checked: false,\n attendeeId: a.attendee_id,\n state: a.state\n })),\n eventType: event.event_type,\n duration: String(event.duration_in_minutes),\n eventDate: new Date(event.begins_at),\n eventId: event.id,\n candidates: event.attendees.filter((a) => a.type === 'Candidate'),\n dates: [new Date(event.begins_at)],\n owner: event.owner\n }\n });\n !withoutModal && dispatch({ type: 'SET_SHOW_VIEW_EVENT_MODAL', payload: true });\n }\n\n function handleSelectSlot(slot?: { slots: Date[] }) {\n slot\n ? dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, eventDate: slot.slots[0], dates: [slot.slots[0]] }\n })\n : dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, eventDate: new Date() }\n });\n dispatch({ type: 'SET_SHOW_CREATE_EVENT_MODAL', payload: true });\n }\n\n function CustomEvent({ event }: { event: IEvent }) {\n const eventLength = dayjs(event.end).diff(dayjs(event.start), 'minute');\n const sessionLength = event.duration_in_minutes;\n\n if (!eventLength) return <span />;\n\n const attendees = event.attendees.filter((attendee) => attendee.type !== 'User');\n\n return (\n <Box\n className={`\n event-container\n ${eventLength <= 10 ? 'small-event' : ''}\n ${sessionLength <= 20 ? 'small-session' : ''}\n ${'blue'}\n `}\n >\n <Box className=\"event-bg\">\n <Box className={`event-details ${eventLength <= 30 ? 'truncate' : ''}`}>\n <Box\n className=\"event-title\"\n sx={{ fontSize: '11px', fontWeight: 'bold', color: '#333333' }}\n >\n {event.subject}\n </Box>\n </Box>\n <Box className=\"session-container\">\n <Box\n key={event.id}\n className={`session-inner ${!(sessionLength < 10) ? 'hoverable' : ''}`}\n style={{\n height: `${(event.duration_in_minutes / eventLength) * 100}%`\n }}\n >\n <Box\n id=\"event-card\"\n className=\"session-length\"\n onClick={() => handleSelectEvent(event)}\n >\n <Box\n className={`session-element ${\n attendees.filter((attendee) => attendee.state === 'accepted').length >=\n event.max_candidates\n ? 'booked'\n : ''\n }`}\n >\n <span\n className=\"session-candidate\"\n style={{ fontSize: eventLength <= 10 ? '11px' : '12px' }}\n >\n {attendees.length > 0\n ? attendees.length === 1\n ? `${attendees[0].name}`\n : `${attendees.length} candidates`\n : 'No bookings'}\n </span>\n {sessionLength >= 20 && (\n <span className=\"session-time\">{dayjs(event.begins_at).format('HH:mma')}</span>\n )}\n </Box>\n </Box>\n </Box>\n </Box>\n </Box>\n </Box>\n );\n }\n\n const handleCreateEvent = (multiple: boolean) => {\n multiple && dispatch({ type: 'CREATE_MULTIPLE_EVENTS', payload: true });\n setActionsAnchorEl(null);\n handleSelectSlot();\n URL_PARAMS.search = multiple ? '?new_multiple' : '?new';\n window.history.pushState(null, '', URL_PARAMS.href);\n };\n\n return (\n <Box sx={{ position: 'relative' }}>\n <Box ref={root} className=\"chronos-calendar\">\n <Box sx={sharedClasses.pageHeader}>\n <Typography variant=\"h1\">Events</Typography>\n {(permissions?.['Events']?.['Create / Edit Events'] ||\n permissions?.['Events']?.['Create Multiple Events']) && (\n <CreateButton\n id=\"create-event-main-button\"\n ariaLabel=\"Add new events\"\n onClick={(e) => {\n setActionsAnchorEl(e.currentTarget);\n }}\n isOpen={Boolean(actionsAnchorEl)}\n />\n )}\n <Popover\n open={Boolean(actionsAnchorEl)}\n anchorEl={actionsAnchorEl}\n onClose={() => {\n setActionsAnchorEl(null);\n }}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}\n transformOrigin={{ vertical: 'top', horizontal: 'right' }}\n sx={{ '& .MuiPaper-root': { marginTop: '12px', borderRadius: '6px' } }}\n >\n <Stack sx={classes.addNewEventsPopover}>\n {permissions?.['Events']?.['Create / Edit Events'] && (\n <Stack onClick={() => handleCreateEvent(false)} id=\"create-an-event-button\">\n Create An Event\n </Stack>\n )}\n {permissions?.['Events']?.['Create Multiple Events'] && (\n <Stack onClick={() => handleCreateEvent(true)} id=\"create-multiple-events-button\">\n Create Multiple Events\n </Stack>\n )}\n </Stack>\n </Popover>\n </Box>\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center' }}>\n <Stack sx={{ width: '150px', flexDirection: 'row' }}>\n <Button\n id=\"today-button\"\n sx={sharedClasses.genericButtonSecondary}\n onClick={() => setViewDate(new Date())}\n >\n Today\n </Button>\n </Stack>\n <Stack>\n <Box\n id=\"select-month\"\n sx={classes.calendarHeader}\n onClick={(e) => {\n setCalendarAnchorEl(e.currentTarget);\n }}\n >\n {getMonthsName()}\n </Box>\n <Popover\n open={Boolean(calendarAnchorEl)}\n anchorEl={calendarAnchorEl}\n onClose={() => {\n setCalendarAnchorEl(null);\n }}\n anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}\n transformOrigin={{ vertical: 'top', horizontal: 'center' }}\n sx={{ '& .MuiPaper-root': { marginTop: 1 } }}\n >\n <Stack sx={{ padding: 1 }}>\n <CloseIcon\n sx={sharedClasses.closeIcon}\n onClick={() => {\n setCalendarAnchorEl(null);\n }}\n />\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <DateCalendar\n views={['month', 'year']}\n openTo=\"month\"\n sx={classes.dateCalendar}\n onChange={(val: Dayjs | null) => val && setViewDate(val.toDate())}\n />\n </LocalizationProvider>\n </Stack>\n </Popover>\n </Stack>\n <Stack sx={classes.viewAndSettingsContainer}>\n {!isMobile && (\n <Tooltip placement=\"top\" title={calendarView ? 'List view' : 'Calendar view'} arrow>\n <Button\n variant=\"outlined\"\n id=\"calendar-list-view-button\"\n sx={classes.viewAndSettingsButton}\n onClick={() => setCalendarView(!calendarView)}\n >\n {calendarView ? (\n <ViewListIcon sx={{ color: '#084D6D' }} fontSize=\"small\" />\n ) : (\n <CalendarMonthIcon sx={{ color: '#084D6D' }} fontSize=\"small\" />\n )}\n </Button>\n </Tooltip>\n )}\n <Tooltip placement=\"top\" title=\"Download iCal\" arrow>\n <Button\n variant=\"outlined\"\n id=\"download-ical-button\"\n sx={classes.viewAndSettingsButton}\n onClick={() => window.open(`${window.location.origin}/ical.ics?token=${token}`)}\n >\n <DownloadIcon sx={{ color: '#084D6D' }} fontSize=\"small\" />\n </Button>\n </Tooltip>\n <Tooltip placement=\"top\" title=\"Filter events\" arrow>\n <Button\n variant=\"outlined\"\n id=\"filter-events-button\"\n sx={classes.viewAndSettingsButton}\n onClick={() => setShowList(!showList)}\n >\n <SortIcon sx={{ color: '#084D6D' }} fontSize=\"small\" />\n </Button>\n </Tooltip>\n </Stack>\n </Stack>\n <Stack sx={classes.weekPeriodContainer}>\n <ChevronLeftRoundedIcon\n id=\"previous-week-button\"\n sx={classes.calendarArrows}\n onClick={() => setViewDate(dayjs(viewDate).subtract(1, 'w').toDate())}\n />\n <Box sx={{ fontSize: '14px' }}>\n {dayjs(weekStart).format('DD MMMM')} - {dayjs(weekStart).add(6, 'd').format('DD MMMM')}\n </Box>\n <ChevronRightRoundedIcon\n id=\"next-week-button\"\n sx={classes.calendarArrows}\n onClick={() => setViewDate(dayjs(viewDate).add(1, 'w').toDate())}\n />\n </Stack>\n <Stack sx={classes.timezoneInfo}>\n <InfoIcon fontSize=\"small\" />\n Your Calendar displays in{' '}\n <b>\n GMT ({dayjs().tz(userTimeZone).format('Z')}) {userTimeZone}\n </b>{' '}\n time.\n <Link href={`${window.location.origin}/admin/settings`} target=\"_blank\" underline=\"hover\">\n Edit time zone\n </Link>\n </Stack>\n {loadingEvents || !events ? (\n <Stack sx={{ paddingTop: 20, alignItems: 'center' }}>\n <CircularProgress size={45} sx={{ color: '#004E70' }} />\n </Stack>\n ) : (\n <>\n {calendarView ? (\n <Calendar\n events={events}\n date={viewDate}\n localizer={localizer}\n scrollToTime={moment().subtract(90, 'm').toDate()}\n defaultView={Views.WEEK}\n step={30}\n timeslots={1}\n selectable={true}\n onSelectSlot={(e) =>\n permissions?.['Events']?.['Create / Edit Events'] && handleSelectSlot(e)\n }\n onSelecting={() => false}\n onNavigate={() => false}\n components={{\n event: CustomEvent\n }}\n formats={{\n dayFormat: 'dddd DD/MM'\n }}\n dayPropGetter={(date) => {\n const day = moment(date).day();\n if (day === 0 || day === 6)\n return { className: 'weekend', style: { backgroundColor: '#F2F2F2' } };\n return {};\n }}\n />\n ) : (\n <ListView\n events={events}\n handleSelectEvent={handleSelectEvent}\n ScoutCalendarState={ScoutCalendarState}\n dispatch={dispatch}\n />\n )}\n </>\n )}\n </Box>\n {showList && events && (\n <Settings\n showList={showList}\n setShowList={setShowList}\n events={events}\n handleSelectEvent={handleSelectEvent}\n />\n )}\n {ScoutCalendarState.showCreateEventModal && events && (\n <CreateEvent\n events={events}\n ScoutCalendarState={ScoutCalendarState}\n dispatch={dispatch}\n setEventCreated={setEventCreated}\n />\n )}\n {ScoutCalendarState.showViewEventModal && events && (\n <ViewEvent\n events={events}\n ScoutCalendarState={ScoutCalendarState}\n dispatch={dispatch}\n currentUserId={currentUser.id}\n userTimezone={userTimeZone}\n newApplicationEnabled={newApplicationEnabled}\n />\n )}\n <EventCreated\n open={eventCreated}\n onClose={() => {\n setEventCreated(false);\n dispatch({ type: 'RESET_STATE' });\n URL_PARAMS.search = '';\n window.history.pushState(null, '', URL_PARAMS.href);\n }}\n ScoutCalendarState={ScoutCalendarState}\n userTimezone={userTimeZone}\n />\n <StyledSnackbar\n message={ScoutCalendarState.snackbar.message}\n state={ScoutCalendarState.snackbar.state}\n setSnackbarState={() =>\n dispatch({ type: 'SET_SNACKBAR', payload: { message: '', state: 'success' } })\n }\n />\n </Box>\n );\n}\n\nexport default withScoutTheme(ScoutCalendar);\n","import React, { Dispatch, useState, useEffect, SetStateAction, useCallback } from 'react';\nimport moment from 'moment';\nimport { Box, Drawer, Autocomplete, TextField } from '@mui/material';\nimport CalendarTodayIcon from '@mui/icons-material/CalendarToday';\nimport QueryBuilderIcon from '@mui/icons-material/QueryBuilder';\nimport { DebouncedFormTextField } from '../NewUI/Components/CustomUIElements/FormTextField';\nimport { classes } from './styles';\nimport CloseIcon from '@mui/icons-material/Close';\nimport { IEvent } from './types';\nimport { sharedClasses } from '../NewUI/Components/CustomUIElements/sharedClasses';\n\ninterface Props {\n events: IEvent[];\n showList: boolean;\n setShowList: Dispatch<SetStateAction<boolean>>;\n handleSelectEvent: (event: IEvent) => void;\n}\n\nfunction Settings({ events, showList, setShowList, handleSelectEvent }: Props) {\n const [searchTerm, setSearchTerm] = useState<string>('');\n const [filter, setFilter] = useState<string | null>(null);\n const [filteredEvents, setFilteredEvents] = useState<IEvent[]>([]);\n\n const filterEvents = useCallback(\n (events: IEvent[]) => {\n if (filter)\n events = events?.filter((slot) =>\n filter === 'Upcoming events'\n ? moment(slot.begins_at).isAfter(new Date())\n : moment(slot.begins_at).isBefore(new Date())\n );\n events = events?.filter((event) =>\n event.subject.toLowerCase().includes(searchTerm.toLowerCase())\n );\n return events;\n },\n [searchTerm, filter]\n );\n\n useEffect(() => {\n setFilteredEvents(filterEvents(events));\n }, [events, filterEvents]);\n\n return (\n <Box sx={{ display: 'flex' }}>\n <Drawer\n anchor=\"left\"\n variant=\"persistent\"\n open={showList}\n onClose={() => {\n setShowList(false);\n setSearchTerm('');\n }}\n PaperProps={{ style: { position: 'absolute', minWidth: 500, maxWidth: 500, zIndex: 11 } }}\n ModalProps={{\n style: { position: 'absolute' }\n }}\n >\n <Box sx={{ padding: '30px 30px 0 30px' }}>\n <Box sx={{ display: 'grid' }}>\n <CloseIcon onClick={() => setShowList(false)} sx={classes.closeIcon} />\n <DebouncedFormTextField\n onDebouncedChange={(e: string) => setSearchTerm(e)}\n id=\"searchEvents\"\n label=\"Search events\"\n defaultValue={searchTerm}\n required={false}\n />\n </Box>\n <Box sx={{ paddingTop: 5, marginRight: 0.5 }}>\n <Autocomplete\n disablePortal\n id=\"select-event-filters\"\n value={filter}\n options={['Upcoming events', 'Past events']}\n getOptionLabel={(option) => option}\n onChange={(_event, newValue) => setFilter(newValue)}\n sx={sharedClasses.formAutocomplete}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Event Filters\"\n InputLabelProps={{ shrink: true }}\n placeholder=\"No filter\"\n />\n )}\n renderOption={(props, option) => (\n <Box\n component=\"li\"\n id={`${option.toLowerCase().replace(' ', '-')}-filter-option`}\n {...props}\n >\n {option}\n </Box>\n )}\n />\n </Box>\n </Box>\n {filteredEvents?.map((event) => (\n <Box\n key={event.id}\n id=\"select-event-from-filter\"\n sx={classes.itemContainer}\n onClick={() => {\n setShowList(false);\n handleSelectEvent(event);\n }}\n >\n <h3>{event.subject}</h3>\n <Box sx={classes.itemDetails}>\n <CalendarTodayIcon fontSize=\"small\" color=\"inherit\" />\n <span>\n {moment(event.begins_at).format('llll')} to {moment(event.ends_at).format('LT')}\n </span>\n </Box>\n <Box sx={classes.itemDetails}>\n <QueryBuilderIcon fontSize=\"small\" color=\"inherit\" />\n <span>{event.event_type.duration} minutes</span>\n </Box>\n </Box>\n ))}\n </Drawer>\n </Box>\n );\n}\n\nexport default Settings;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Collapse, Button, Stack } from '@mui/material';\nimport {\n Email as EmailIcon,\n Smartphone as SmartphoneIcon,\n Rule as RuleIcon,\n Delete as DeleteIcon\n} from '@mui/icons-material';\nimport { sharedClasses } from '../../NewUI/Components/CustomUIElements/sharedClasses';\nimport { IUserPermissions } from '../../NewUI/Components/sharedTypes';\n\nexport default function ActionButtons({\n selectedCandidates,\n permissions,\n setAction,\n openDialog\n}: {\n selectedCandidates: number[];\n permissions: IUserPermissions | null;\n setAction: Dispatch<SetStateAction<string>>;\n openDialog: (action: string) => void;\n}) {\n return (\n <Collapse in={selectedCandidates.length > 0}>\n <Stack sx={{ flexDirection: 'row', columnGap: 2, paddingTop: 0.5 }}>\n {permissions?.['Events']?.['Send emails in bulk on events'] && (\n <Button\n id=\"email-candidates-from-event-button\"\n startIcon={<EmailIcon />}\n sx={{ ...sharedClasses.genericButtonSecondary, padding: '6px 16px' }}\n onClick={() => setAction('Email')}\n >\n Email\n </Button>\n )}\n {permissions?.['Events']?.['Send SMS in bulk on events'] && (\n <Button\n id=\"sms-candidates-from-event-button\"\n startIcon={<SmartphoneIcon />}\n sx={{ ...sharedClasses.genericButtonSecondary, padding: '6px 16px' }}\n onClick={() => setAction('SMS')}\n >\n SMS\n </Button>\n )}\n {permissions?.['Events']?.['Change candidates status in bulk on events'] && (\n <Button\n id=\"change-candidates-status-from-event-button\"\n startIcon={<RuleIcon />}\n sx={{ ...sharedClasses.genericButtonSecondary, padding: '6px 16px' }}\n onClick={() => setAction('Change status')}\n >\n Change Status\n </Button>\n )}\n <Button\n id=\"remove-candidates-from-event-button\"\n startIcon={<DeleteIcon />}\n sx={{ ...sharedClasses.genericRedButton, '&:focus': { outline: 'none' } }}\n onClick={() => openDialog('Remove')}\n >\n Remove\n </Button>\n </Stack>\n </Collapse>\n );\n}\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport StyledModal from '../../NewUI/Components/GenericModal/StyledModal';\nimport {\n Autocomplete,\n Box,\n Button,\n Checkbox,\n CircularProgress,\n Collapse,\n FormControlLabel,\n InputAdornment,\n OutlinedInput,\n Stack,\n TextField\n} from '@mui/material';\nimport { Search as SearchIcon } from '@mui/icons-material';\nimport { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';\nimport Api from '../API';\nimport { IAttendee, ScoutCalendarAction, ScoutCalendarState } from '../types';\nimport { sharedClasses } from '../../NewUI/Components/CustomUIElements/sharedClasses';\nimport ModalFooterButtons from '../../NewUI/Components/GenericModal/ModalFooterButtons';\nimport SelectField from '../../NewUI/Components/CustomUIElements/SelectField';\nimport { FormTextField } from '../../NewUI/Components/CustomUIElements/FormTextField';\nimport { DELAY_OPTIONS } from '../../NewUI/constants';\nimport HtmlEditor from '../../NewUI/Components/Utilities/HtmlEditor';\nimport AttachmentSelectorAndPreview from '../../NewUI/Components/CustomUIElements/AttachmentSelectorAndPreview';\nimport { FileWithPath } from 'react-dropzone';\nimport { classes } from './styles';\nimport { classes as emailStyle } from '../../NewUI/Job/Applications/styles';\nimport VirtualizeGrouped, {\n formatOptions\n} from '../../NewUI/Components/CustomUIElements/VirtualizedGroupedAutocomplete';\nimport { stringToSeconds } from '../../NewUI/Components/Utilities/stringToSeconds';\nimport { serialize } from 'object-to-formdata';\nimport { MultilineFormTextField } from '../../NewUI/Components/CustomUIElements/FormTextField';\nimport { ISmsTemplate } from '../../NewUI/Job/Applications/Modals/SMSCandidates';\nimport { IApplicationStatus } from '../../NewUI/Job/types';\nimport SelectedCandidatesTable from './SelectedCandidatesTable';\nimport API from '../API';\n\nexport default function ActionModal({\n ScoutCalendarState,\n dispatch,\n action,\n handleClose,\n selectedCandidates,\n setSelectedCandidates\n}: {\n ScoutCalendarState: ScoutCalendarState;\n dispatch: Dispatch<ScoutCalendarAction>;\n action: string;\n handleClose: () => void;\n selectedCandidates: IAttendee[];\n setSelectedCandidates: Dispatch<SetStateAction<number[]>>;\n}) {\n const [excludeApplicants, setExcludeApplicants] = useState<boolean>(false);\n const [delay, setDelay] = useState<string>('None');\n const [subject, setSubject] = useState<string>('');\n const [body, setBody] = useState<string>('');\n const [placeholders, setPlaceholders] = useState<string>('');\n const [attachments, setAttachments] = useState<FileWithPath[]>([]);\n const [templateAttachments, setTemplateAttachments] = useState([]);\n const [selectedTemplate, setSelectedTemplate] = useState<string | null>(null);\n const [searchTerm, setSearchTerm] = useState<string>('');\n const [smsTemplate, setSmsTemplate] = useState<ISmsTemplate | null>(null);\n const [smsMessage, setSmsMessage] = useState<string>('');\n const [smsTemplateName, setSmsTemplateName] = useState<string>('');\n const [smsTemplateError, setSmsTemplateError] = useState<string>('');\n const [selectedStatus, setSelectedStatus] = useState<IApplicationStatus | null>(null);\n\n const { createEventObject } = ScoutCalendarState;\n const queryClient = useQueryClient();\n\n const { data: emailTemplates, isLoading: loadingEmailTemplates } = useQuery({\n queryKey: ['email templates'],\n queryFn: async () => {\n const {\n res: { email_templates, placeholders }\n } = await Api.getEmailTemplates();\n placeholders && setPlaceholders(placeholders);\n return formatOptions(email_templates);\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting email templates, ${error}`,\n state: 'error'\n }\n });\n },\n enabled: action === 'Email'\n });\n\n useQuery({\n queryKey: [selectedTemplate],\n queryFn: async () => {\n if (!selectedTemplate) return;\n const { res } = await Api.getEmailTemplate(Number(selectedTemplate.split(' -')[0]));\n return res;\n },\n onSuccess: (emailTemplate) => {\n setSubject(emailTemplate.subject);\n setBody(emailTemplate.body);\n setTemplateAttachments(emailTemplate.email_attachments);\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting template data, ${error}`,\n state: 'error'\n }\n }),\n enabled: !!selectedTemplate\n });\n\n const { mutate: sendEmails, isLoading: sendingEmails } = useMutation({\n mutationFn: async () => {\n const data = {\n email_batch: {\n applications_ids: selectedCandidates.map((c) => c.application_id),\n email_template_id: Number(selectedTemplate?.split(' -')[0]),\n subject,\n body,\n delay: stringToSeconds(delay),\n only_new: excludeApplicants,\n ...(attachments.length > 0 && { new_email_attachments: attachments })\n }\n };\n const { res } = await API.sendEmailBatchesToCandidates(createEventObject.eventId, data);\n return res;\n },\n onSuccess: () => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `Candidates emailed successfully`,\n state: 'success'\n }\n });\n handleClose();\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error in sending email to the candidates', ${error}`,\n state: 'error'\n }\n })\n });\n\n const { data: smsTemplates, isFetching: fetchingSmsTemplates } = useQuery({\n queryKey: ['sms templates'],\n queryFn: async () => {\n const {\n res: { sms_templates }\n } = await Api.getSmsTemplates();\n return sms_templates as ISmsTemplate[];\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `${error}`, state: 'error' }\n }),\n initialData: [],\n enabled: action === 'SMS'\n });\n\n const { mutate: saveTemplate, isLoading: savingTemplate } = useMutation({\n mutationFn: async () => {\n const { res } = await Api.saveSmsTemplate(smsTemplateName, smsMessage);\n return res;\n },\n onError: (error) =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: `${error}`, state: 'error' }\n }),\n onSuccess: (res) => {\n queryClient.setQueryData(['sms templates'], [...smsTemplates, res]);\n setSmsTemplate(res);\n setSmsTemplateName('');\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'Template saved',\n state: 'success'\n }\n });\n }\n });\n\n const handleSaveTemplate = () => {\n if (smsTemplates?.find((template) => template.title === smsTemplateName)) {\n setSmsTemplateError('Template name already exists');\n return;\n }\n saveTemplate();\n };\n\n const { mutate: sendSms, isLoading: sendingSms } = useMutation({\n mutationFn: async () => {\n const { res } = await Api.smsCandidates(\n createEventObject.eventId,\n selectedCandidates.map((c) => c.application_id),\n smsMessage\n );\n if (res.success !== 0) {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'Candidates SMS message sent successfully',\n state: 'success'\n }\n });\n handleClose();\n } else {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'There was an error in sending SMS to the candidates',\n state: 'error'\n }\n });\n }\n return res;\n }\n });\n\n const { data: statuses, isLoading: loadingStatuses } = useQuery({\n queryKey: ['application statuses'],\n queryFn: async () => {\n const {\n res: { event_application_statuses }\n } = await Api.getEventApplicationStatuses(createEventObject.eventId);\n return event_application_statuses;\n },\n onError: (error) => {\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: `There was an error getting application statuses, ${error}`,\n state: 'error'\n }\n });\n },\n enabled: action === 'Change status'\n });\n\n const { mutate: changeStatus, isLoading: changingStatus } = useMutation({\n mutationFn: async () => {\n if (!selectedStatus) return;\n const { res } = await Api.changeApplicationStatuses(\n createEventObject.eventId,\n selectedStatus.id,\n selectedCandidates.map((c) => c.application_id)\n );\n return res;\n },\n onError: () =>\n dispatch({\n type: 'SET_SNACKBAR',\n payload: {\n message: 'There was an error in changing status of the candidates',\n state: 'error'\n }\n }),\n onSuccess: (res) => {\n if (!res) return;\n dispatch({\n type: 'SET_SNACKBAR',\n payload: { message: res.success, state: 'success' }\n });\n handleClose();\n }\n });\n\n const validateInputs = () => {\n if (action === 'Email') {\n return selectedTemplate && subject.trim() && body.trim();\n } else if (action === 'SMS') {\n return smsMessage.trim();\n } else {\n return selectedStatus;\n }\n };\n\n const buttonCallback = () => {\n if (validateInputs()) {\n if (action === 'Email') {\n return sendEmails;\n } else if (action === 'SMS') {\n return sendSms;\n } else {\n return changeStatus;\n }\n }\n };\n\n const candidates = selectedStatus\n ? selectedCandidates.map((s) => ({ ...s, status_details: selectedStatus }))\n : selectedCandidates;\n\n return (\n <StyledModal\n isOpen={!!action}\n label={`${action} event modal`}\n handleClose={handleClose}\n styleOverrides={{\n maxHeight: '700px',\n width: '800px',\n padding: '40px'\n }}\n >\n <Stack sx={{ width: '100%', height: '100%', rowGap: 2 }}>\n <Stack sx={{ fontWeight: 'bold', color: '#084D6D', fontSize: '25px' }}>\n {action} {action !== 'Change status' && 'candidates'}\n </Stack>\n <Stack sx={classes.actionModalContent}>\n {action === 'Email' && (\n <>\n <VirtualizeGrouped\n value={selectedTemplate}\n options={emailTemplates || []}\n onChange={(value) => {\n !value && setBody('');\n setSelectedTemplate(value);\n }}\n styles={{\n ...sharedClasses.formAutocomplete,\n width: '600px',\n marginTop: '20px'\n }}\n label=\"Template\"\n loading={loadingEmailTemplates}\n loadingText=\"Loading template list...\"\n required\n />\n <FormControlLabel\n control={\n <Checkbox\n sx={sharedClasses.formCheckbox}\n checked={excludeApplicants}\n onClick={() => setExcludeApplicants(!excludeApplicants)}\n disableRipple\n />\n }\n label=\"Exclude applicants who have received this email template\"\n sx={sharedClasses.checkboxLabel}\n />\n <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Email details</Stack>\n <SelectField\n label=\"Delay\"\n options={DELAY_OPTIONS}\n value={delay}\n onChange={setDelay}\n styles={{ width: '40%' }}\n />\n <FormTextField\n label=\"Subject\"\n value={subject}\n styles={{ width: '40%', input: { margin: '3px !important' } }}\n onChange={(e) => setSubject(e.target.value)}\n required\n />\n <Stack sx={{ paddingBottom: 2 }}>\n <Stack sx={emailStyle.formLabel}>Body</Stack>\n <HtmlEditor body={body} onChange={setBody} />\n <Stack sx={emailStyle.placeholderText}>\n Available placeholders are: {placeholders}\n </Stack>\n </Stack>\n <AttachmentSelectorAndPreview\n attachments={attachments}\n setAttachments={setAttachments}\n templateAttachments={templateAttachments}\n styleOverrides={{ margin: 'unset' }}\n />\n </>\n )}\n {action === 'SMS' && (\n <>\n <Stack sx={{ color: '#939393', fontWeight: 'bold', paddingBottom: 3 }}>Message</Stack>\n <Autocomplete\n disablePortal\n id=\"add-to-event-sms-template-select\"\n options={smsTemplates}\n getOptionLabel={(option) => option.title}\n value={smsTemplate}\n sx={{ ...sharedClasses.formAutocomplete, width: '100%' }}\n loading={fetchingSmsTemplates}\n loadingText=\"Loading SMS templates...\"\n ListboxProps={{ style: emailStyle.addToEventListboxProps }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Choose SMS template\"\n InputLabelProps={{ shrink: true }}\n sx={{\n '& .MuiInputBase-root': { margin: 'unset', marginTop: 1 }\n }}\n />\n )}\n onChange={(event, value) => {\n if (value) {\n setSmsMessage(value.body);\n } else {\n setSmsMessage('');\n }\n setSmsTemplate(value);\n }}\n />\n <Stack>\n <MultilineFormTextField\n label=\"Content\"\n value={smsMessage}\n onChange={(e) => setSmsMessage(e.target.value)}\n maxLength={160}\n required\n />\n <Stack sx={emailStyle.addToEventCharacterCount}>{smsMessage.length} / 160</Stack>\n <Collapse in={!!smsMessage.trim() && smsMessage !== smsTemplate?.body}>\n <Stack\n sx={{\n flexDirection: 'row',\n alignItems: 'baseline',\n columnGap: 5\n }}\n >\n <FormTextField\n id=\"new-sms-template-title\"\n label=\"Template title\"\n value={smsTemplateName}\n styles={classes.actionModalTemplateTitle}\n onChange={(e) => {\n setSmsTemplateName(e.target.value);\n if (smsTemplateError) setSmsTemplateError('');\n }}\n />\n <Box sx={{ transform: 'translateY(-1.5px)' }}>\n <Button\n id=\"save-sms-template\"\n type=\"submit\"\n sx={emailStyle.saveSMSTemplateButton}\n onClick={handleSaveTemplate}\n >\n {savingTemplate ? (\n <CircularProgress size={20} color=\"inherit\" />\n ) : (\n 'Save template'\n )}\n </Button>\n </Box>\n {smsTemplateError && (\n <Box sx={emailStyle.saveSMSTemplateError}>{smsTemplateError}</Box>\n )}\n </Stack>\n </Collapse>\n </Stack>\n </>\n )}\n {action === 'Change status' && (\n <Autocomplete\n options={statuses || []}\n getOptionLabel={(option: IApplicationStatus) => option.name}\n onChange={(e, value) => setSelectedStatus(value)}\n loading={loadingStatuses}\n value={selectedStatus}\n sx={{\n ...sharedClasses.formAutocomplete,\n width: '44%',\n paddingTop: 3\n }}\n ListboxProps={{ style: emailStyle.addToEventListboxProps }}\n renderInput={(params) => (\n <TextField\n {...params}\n label=\"Change to status\"\n InputLabelProps={{ shrink: true }}\n />\n )}\n />\n )}\n <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>Candidates</Stack>\n <OutlinedInput\n sx={emailStyle.candidateSearch}\n placeholder={'Search candidates'}\n value={searchTerm}\n onChange={(e) => setSearchTerm(e.target.value)}\n startAdornment={\n <InputAdornment sx={{ padding: '0px 0px 0px 10px' }} position=\"start\">\n <SearchIcon />\n </InputAdornment>\n }\n />\n <Box\n sx={{\n ...emailStyle.selectedApplicantsTableHeader,\n margin: 'unset'\n }}\n >\n {selectedCandidates.length} candidates selected\n </Box>\n <SelectedCandidatesTable\n candidates={candidates}\n selectedCandidates={selectedCandidates}\n setSelectedCandidates={setSelectedCandidates}\n searchTerm={searchTerm}\n action={action}\n />\n </Stack>\n <ModalFooterButtons\n primaryButtonText={action === 'Change status' ? 'Confirm' : 'Send'}\n primaryButtonCallback={buttonCallback()}\n primaryButtonMinWidth={action === 'Change status' ? '95px' : '75px'}\n primaryButtonDisabled={!validateInputs()}\n secondaryButtonText=\"Cancel\"\n secondaryButtonCallback={handleClose}\n isLoading={sendingEmails || sendingSms || changingStatus}\n primaryButtonID={`${\n action === 'Change status'\n ? `confirm-${action.toLowerCase().replace(' ', '-')}`\n : `send-${action.toLowerCase()}`\n }-from-event-button`}\n secondaryButtonID={`cancel-${action.toLowerCase().replace(' ', '-')}-from-event-button`}\n />\n </Stack>\n </StyledModal>\n );\n}\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { Box, IconButton, Table, TableHead, TableRow, TableCell, TableBody } from '@mui/material';\nimport { Clear as ClearIcon } from '@mui/icons-material';\nimport { classes } from '../../NewUI/Job/Applications/styles';\nimport { getRatingColor } from '../../NewUI/Job/Applications/SelectedApplicants';\nimport { theme } from '../../ThemeContext/ThemeObject';\nimport { IAttendee } from '../types';\n\nexport default function SelectedCandidatesTable({\n candidates,\n selectedCandidates,\n setSelectedCandidates,\n searchTerm,\n action\n}: {\n candidates: IAttendee[];\n selectedCandidates: IAttendee[];\n setSelectedCandidates: Dispatch<SetStateAction<number[]>>;\n searchTerm: string;\n action: string;\n}) {\n return (\n <Table sx={classes.selectedApplicantsTable} aria-label=\"selected applicants\">\n <TableHead>\n <TableRow>\n <TableCell>Name</TableCell>\n {action !== 'SMS' && <TableCell>Email</TableCell>}\n {action !== 'Email' && <TableCell>Phone</TableCell>}\n <TableCell>Status</TableCell>\n <TableCell>Rating</TableCell>\n <TableCell></TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {candidates\n .filter((candidate) => candidate.name.toLowerCase().includes(searchTerm))\n .map((candidate) => (\n <TableRow key={candidate.attendee_id}>\n <TableCell\n onClick={() =>\n candidate.application_url && window.open(candidate.application_url, '_blank')\n }\n sx={{\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline'\n }\n }}\n >\n {candidate.name}\n </TableCell>\n {action !== 'SMS' && <TableCell>{candidate.email}</TableCell>}\n {action !== 'Email' && <TableCell>{candidate.phone}</TableCell>}\n <TableCell sx={classes.applicationStatus}>\n <Box\n sx={{\n ...classes.statusDropdownSelected,\n ...classes.statusClampSelected\n }}\n >\n <Box\n sx={{\n ...classes.statusColour,\n backgroundColor: candidate.status_details?.colour || '#AAAAAA'\n }}\n ></Box>\n {candidate.status_details?.name || 'New'}\n </Box>\n </TableCell>\n <TableCell\n sx={{\n color: '#000000',\n fontWeight: '600'\n }}\n >\n <Box\n sx={{\n ...classes.rating,\n backgroundColor: getRatingColor(\n candidate.application_rating === null\n ? 101\n : Number(candidate.application_rating)\n )\n }}\n >\n {candidate.application_rating\n ? Math.ceil(Number(candidate.application_rating)) + '%'\n : '-'}\n </Box>\n </TableCell>\n <TableCell sx={{ display: 'flex', justifyContent: 'end' }}>\n <IconButton\n onClick={() =>\n setSelectedCandidates(\n selectedCandidates\n .filter((s) => s.id !== candidate.id)\n .map((c) => c.attendee_id)\n )\n }\n >\n <ClearIcon sx={{ color: theme.palette.error.main }} />\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n}\n","import React, { Dispatch, SetStateAction, useState } from 'react';\nimport {\n Box,\n Button,\n ButtonGroup,\n Checkbox,\n Dialog,\n Divider,\n IconButton,\n Link,\n Stack\n} from '@mui/material';\nimport {\n Close as CloseIcon,\n ContactPage as ContactPageIcon,\n Delete as DeleteIcon\n} from '@mui/icons-material';\nimport { classes } from './styles';\nimport { IEvent, ScoutCalendarAction, ScoutCalendarState } from '../types';\nimport { ReviewStep } from '../CreateEvent/EventProgress';\nimport GenericDialog from '../../NewUI/Components/Modals/GenericDialog';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport API from '../API';\nimport ActionModal from './ActionModal';\nimport ActionButtons from './ActionButtons';\nimport { useDeleteEvent } from '../helper';\n\ninterface Props {\n events: IEvent[];\n ScoutCalendarState: ScoutCalendarState;\n dispatch: Dispatch<ScoutCalendarAction>;\n // setSnackbar indicates that the modal is called from dashboard\n setSnackbar?: Dispatch<\n SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n >;\n currentUserId: number;\n newApplicationEnabled: boolean;\n}\n\nfunction ViewEvent({\n events,\n ScoutCalendarState,\n dispatch,\n setSnackbar,\n currentUserId,\n newApplicationEnabled\n}: Props) {\n const [tab, setTab] = useState<number>(1);\n const [openConfirmationDialog, setOpenConfirmationDialog] = useState<boolean>(false);\n const [selectedCandidates, setSelectedCandidates] = useState<number[]>([]);\n const [confirmAction, setConfirmAction] = useState<string>('');\n const [action, setAction] = useState<string>('');\n const { createEventObject, showViewEventModal, weekStart, permissions } = ScoutCalendarState;\n const { eventId, candidates, recruiters } = createEventObject;\n const queryClient = useQueryClient();\n const currentUserIsARecruiter = recruiters.find((r) => r.id === currentUserId);\n\n const onClose = () => {\n dispatch({ type: 'RESET_STATE' });\n dispatch({ type: 'SET_SHOW_VIEW_EVENT_MODAL', payload: false });\n };\n\n const { deleteEvent, deletingEvent } = useDeleteEvent({\n events,\n setSnackbar,\n ScoutCalendarState,\n dispatch,\n onClose\n });\n\n const { mutate: removeCandidates, isLoading: removingCandidates } = useMutation({\n mutationFn: async () => API.removeAttendees(eventId, selectedCandidates).then(({ res }) => res),\n onError: (error) => {\n const snackbarPayload: { message: string; state: 'error' } = {\n message: `There was an error clearing the session, ${error}`,\n state: 'error'\n };\n setSnackbar\n ? setSnackbar(snackbarPayload)\n : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n },\n onSuccess: () => {\n const snackbarPayload: { message: string; state: 'success' } = {\n message: `${candidates.find((c) => c.attendee_id === selectedCandidates[0])?.name}${\n selectedCandidates.length > 1 ? ` and ${selectedCandidates.length - 1} others` : ''\n } has been successfully removed and notified`,\n state: 'success'\n };\n setSnackbar\n ? setSnackbar(snackbarPayload)\n : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n const updatedCandidates = candidates.filter(\n (c) => !selectedCandidates.includes(c.attendee_id)\n );\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, candidates: updatedCandidates }\n });\n setOpenConfirmationDialog(false);\n setSelectedCandidates([]);\n setSnackbar\n ? queryClient.invalidateQueries(['getEvents'], { exact: true })\n : queryClient.invalidateQueries(['events', ScoutCalendarState.weekStart], { exact: true });\n //refreshes the events list on the application page events table on the tasks and events tab\n queryClient.invalidateQueries(['application events'], { exact: true });\n }\n });\n\n const { mutate: updateInvitation, isLoading: updatingInvitation } = useMutation({\n mutationFn: async () =>\n currentUserIsARecruiter?.attendeeId &&\n (\n await API.updateAttendeeInvitation(\n eventId,\n currentUserIsARecruiter.attendeeId,\n confirmAction === 'Accept' ? 'accepted' : 'declined'\n )\n ).res,\n onError: (error: { errors: string }) => {\n const snackbarPayload: { message: string; state: 'error' } = {\n message: `There was an error ${\n confirmAction === 'Accept' ? 'accepting' : 'declining'\n } the event, ${error.errors}`,\n state: 'error'\n };\n setSnackbar\n ? setSnackbar(snackbarPayload)\n : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n },\n onSuccess: (res: IEvent) => {\n // updating the recruiters accepted/declined state inside the modal\n const updatedRecruiters = [...recruiters];\n const attendeeIndex = updatedRecruiters.findIndex(\n (r) => r.attendeeId === currentUserIsARecruiter?.attendeeId\n );\n updatedRecruiters[attendeeIndex].state = confirmAction === 'Accept' ? 'accepted' : 'declined';\n dispatch({\n type: 'SET_CREATE_EVENT_OBJECT',\n payload: { ...createEventObject, recruiters: updatedRecruiters }\n });\n\n // updating the events list with the new data from accepting/declining the invite\n const updatedEvents = [...events];\n const index = updatedEvents.findIndex((e) => e.id === eventId);\n updatedEvents[index] = {\n ...res,\n start: new Date(res.begins_at),\n end: new Date(res.ends_at)\n };\n setSnackbar\n ? queryClient.setQueryData(['getEvents'], {\n pages: [{ data: { events: updatedEvents } }]\n })\n : queryClient.setQueryData(['events', weekStart], updatedEvents);\n\n // show success snackbar from dashboard or events page\n const snackbarPayload: { message: string; state: 'success' } = {\n message: `Event successfully ${confirmAction === 'Accept' ? 'accepted' : 'declined'}`,\n state: 'success'\n };\n setSnackbar\n ? setSnackbar(snackbarPayload)\n : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n },\n onSettled: () => setOpenConfirmationDialog(false)\n });\n\n const dialogTitle = () => {\n switch (confirmAction) {\n case 'Delete':\n return `Delete this event?`;\n case 'Remove':\n return `Remove ${\n selectedCandidates.length < 2 ? 'this' : 'these'\n } candidate${selectedCandidates.length < 2 ? '' : 's'}`;\n default:\n return `${confirmAction} this invitation?`;\n }\n };\n\n const deleteAndRemoveDialogDescription = (\n <Stack sx={{ rowGap: 3 }}>\n <Stack sx={{ fontSize: '18px', fontWeight: '600' }}>\n {`The following applicant${\n (confirmAction === 'Delete' && candidates.length > 1) ||\n (confirmAction === 'Remove' && selectedCandidates.length > 1)\n ? 's'\n : ''\n } will be notified ${\n confirmAction === 'Delete'\n ? 'of the event cancellations.'\n : 'regarding their removal from the event.'\n }`}\n </Stack>\n <Stack sx={{ fontSize: '18px', color: '#333333', fontWeight: '400' }}>\n {confirmAction === 'Delete'\n ? candidates.map((c) => c.name).join(', ')\n : selectedCandidates\n .map((s) => candidates.find((c) => c.attendee_id === s))\n .map((f) => f?.name)\n .join(', ')}\n </Stack>\n </Stack>\n );\n\n const dialogDescription = () => {\n if (\n confirmAction === 'Delete' &&\n (createEventObject.eventDate < new Date() || !createEventObject.candidates.length) // Message for deleting past event or event that does not have any candidates booked in\n ) {\n return 'Are you sure you want to delete this event?';\n }\n if (confirmAction === 'Delete' || confirmAction === 'Remove') {\n return deleteAndRemoveDialogDescription;\n }\n return (\n <Stack sx={{ rowGap: 0.5 }}>\n <Stack>\n By {confirmAction === 'Accept' ? 'accepting' : 'declining'} this invitation, the event\n </Stack>\n <Stack>creator will be notified regarding your status</Stack>\n </Stack>\n );\n };\n\n const dialogCallback = () => {\n switch (confirmAction) {\n case 'Delete':\n return deleteEvent();\n case 'Remove':\n return removeCandidates();\n default:\n return updateInvitation();\n }\n };\n const dialogLoading = () => {\n switch (confirmAction) {\n case 'Delete':\n return deletingEvent;\n case 'Remove':\n return removingCandidates;\n default:\n return updatingInvitation;\n }\n };\n\n const openDialog = (action: string) => {\n setConfirmAction(action);\n setOpenConfirmationDialog(true);\n };\n\n return (\n <Dialog maxWidth={false} onClose={onClose} open={showViewEventModal} sx={classes.dialog}>\n <Stack\n sx={{\n ...classes.modalContainer,\n width: 'auto',\n height:\n permissions?.['Events']?.['Create / Edit Events'] &&\n currentUserIsARecruiter &&\n tab === 1\n ? '615px'\n : '698px'\n }}\n >\n <Box sx={{ ...classes.modalTitle, ...classes.longEventTitle }}>\n {createEventObject.eventName}\n </Box>\n <Stack sx={classes.modalDeleteAndCloseContainer}>\n <DeleteIcon\n id=\"delete-individual-event-button\"\n sx={{ cursor: 'pointer', color: '#E37D7A' }}\n onClick={() => openDialog('Delete')}\n />\n <Divider orientation=\"vertical\" flexItem />\n <CloseIcon\n id=\"close-event-modal-button\"\n onClick={onClose}\n sx={{ cursor: 'pointer', color: '#DDDDDD' }}\n />\n </Stack>\n <Stack sx={classes.tabsContainer}>\n <Stack\n id=\"event-details-tab\"\n sx={{ ...classes.tab, ...(tab === 1 ? classes.selectedTab : []) }}\n onClick={() => setTab(1)}\n >\n Details\n </Stack>\n <Stack\n id=\"event-candidates-tab\"\n sx={{ ...classes.tab, ...(tab === 2 ? classes.selectedTab : []) }}\n onClick={() => setTab(2)}\n >\n Candidates\n </Stack>\n </Stack>\n {tab === 1 ? (\n <>\n <ReviewStep\n ScoutCalendarState={ScoutCalendarState}\n dispatch={dispatch}\n setTab={setTab}\n />\n </>\n ) : (\n <Stack>\n <ActionButtons\n selectedCandidates={selectedCandidates}\n permissions={permissions}\n setAction={setAction}\n openDialog={openDialog}\n />\n <Stack\n sx={{\n rowGap: 3,\n flexGrow: 1,\n paddingTop: selectedCandidates.length > 0 ? 3 : 0\n }}\n >\n <Stack sx={{ flexDirection: 'row', justifyContent: 'space-between' }}>\n <Stack sx={{ flexDirection: 'row', columnGap: 2 }}>\n <Checkbox\n id=\"select-all-candidates-check-box\"\n sx={{\n ...classes.checkbox,\n '&.MuiCheckbox-indeterminate': {\n color: 'rgb(170, 170, 170)'\n }\n }}\n checked={\n candidates.length > 0 &&\n candidates.every((c) => selectedCandidates.includes(c.attendee_id))\n }\n indeterminate={\n candidates.some((c) => selectedCandidates.includes(c.attendee_id)) &&\n selectedCandidates.length !== candidates.length\n }\n onClick={() => {\n if (candidates.every((c) => selectedCandidates.includes(c.attendee_id))) {\n setSelectedCandidates([]);\n } else {\n setSelectedCandidates(candidates.map((c) => c.attendee_id));\n }\n }}\n />\n <Stack sx={{ color: '#666666', fontWeight: 'bold' }}>\n {createEventObject.eventDate.toLocaleDateString('en-GB', {\n weekday: 'long',\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n })}\n </Stack>\n </Stack>\n <Stack>\n {candidates.length}/{createEventObject.maxCandidates} candidates booked\n </Stack>\n </Stack>\n <Stack\n sx={{\n ...classes.candidatesListContainer,\n height: selectedCandidates.length ? '400px' : '425px'\n }}\n >\n {candidates.length ? (\n <>\n {candidates.map((c) => {\n const applicationUrl =\n c.application_url && newApplicationEnabled && !c.application_url.includes(\"/new_applications/\")\n ? c.application_url.replace('/applications/', '/new_applications/')\n : c.application_url;\n return (\n <Stack key={c.attendee_id} sx={{ flexDirection: 'row', columnGap: 2 }}>\n <Checkbox\n id=\"select-specific-candidate-check-box\"\n disableRipple\n sx={classes.checkbox}\n checked={selectedCandidates.includes(c.attendee_id)}\n onClick={() => {\n if (selectedCandidates.includes(c.attendee_id)) {\n setSelectedCandidates(\n selectedCandidates.filter((f) => f != c.attendee_id)\n );\n } else {\n setSelectedCandidates([...selectedCandidates, c.attendee_id]);\n }\n }}\n />\n <Stack\n sx={{\n ...classes.candidateList,\n ...(selectedCandidates.includes(c.attendee_id) && {\n borderColor: '#5BC4BF'\n })\n }}\n >\n <Stack flexDirection=\"row\">\n <Link\n id=\"individual-applications-link\"\n href={applicationUrl || '#'}\n sx={classes.link}\n target=\"_blank\"\n underline=\"hover\"\n >\n #{c.application_id} - {c.name}\n </Link>\n </Stack>\n <Stack flexDirection=\"row\">\n <Stack\n id=\"individual-job-link\"\n onClick={() =>\n c.job_id &&\n window.open(\n `${window.location.origin}/admin/jobs/${c.job_id}`,\n '_blank'\n )\n }\n sx={{\n ...classes.listViewInfoTag,\n padding: '0px 10px',\n cursor: 'pointer'\n }}\n >\n <Stack sx={{ fontWeight: 'bold' }}>Job:</Stack>\n <Stack>\n {c.job_reference} - {c.job_title}\n </Stack>\n </Stack>\n </Stack>\n </Stack>\n </Stack>\n );\n })}\n </>\n ) : (\n <Stack sx={classes.noCandidatesContainer}>\n <ContactPageIcon sx={{ fontSize: '150px' }} />\n <Stack sx={{ fontWeight: 'bold', fontSize: '20px' }}>\n No candidates are booked\n </Stack>\n </Stack>\n )}\n </Stack>\n </Stack>\n </Stack>\n )}\n </Stack>\n {permissions?.['Events']?.['Create / Edit Events'] &&\n currentUserIsARecruiter &&\n tab === 1 && (\n <Stack sx={classes.acceptingInviteContainer}>\n <Stack sx={{ fontSize: '18px', fontWeight: 'bold', color: '#666666' }}>\n Are you attending?\n </Stack>\n <ButtonGroup sx={classes.acceptingInviteButtonGroup} variant=\"text\">\n <Button\n id=\"accept-event-option\"\n onClick={() => currentUserIsARecruiter.state !== 'accepted' && openDialog('Accept')}\n sx={{\n background: currentUserIsARecruiter.state === 'accepted' ? '#DEF3F2' : 'inherit'\n }}\n >\n Accept\n </Button>\n <Button\n id=\"decline-event-option\"\n onClick={() =>\n currentUserIsARecruiter.state !== 'declined' && openDialog('Decline')\n }\n sx={{\n background: currentUserIsARecruiter.state === 'declined' ? '#DEF3F2' : 'inherit'\n }}\n >\n Decline\n </Button>\n </ButtonGroup>\n </Stack>\n )}\n {tab === 2 && selectedCandidates.length > 0 && (\n <Stack sx={classes.selectedCandidatesIndicatorContainer}>\n <Stack>\n {selectedCandidates.length === candidates.length && 'All'} {selectedCandidates.length}{' '}\n candidate{selectedCandidates.length > 1 ? 's are' : ' is'} selected\n </Stack>\n <IconButton\n id=\"clear-selected-candidates-button\"\n sx={classes.clearSelectionButton}\n onClick={() => setSelectedCandidates([])}\n >\n Clear selection\n </IconButton>\n </Stack>\n )}\n <GenericDialog\n isDialogOpen={openConfirmationDialog}\n setDialogOpen={setOpenConfirmationDialog}\n title={dialogTitle()}\n description={dialogDescription()}\n buttonCallback={dialogCallback}\n callbackLoading={dialogLoading()}\n buttonText={confirmAction}\n url=\"\"\n primaryButtonId={\n confirmAction === 'Delete' || confirmAction === 'Remove'\n ? `confirm-${\n confirmAction === 'Delete' ? 'delete' : 'remove-candidate-from'\n }-event-button`\n : undefined\n }\n secondaryButtonId={\n confirmAction === 'Delete' || confirmAction === 'Remove'\n ? `cancel-${\n confirmAction === 'Delete' ? 'delete' : 'remove-candidate-from'\n }-event-button`\n : undefined\n }\n alternateColor={confirmAction === 'Accept' ? true : false}\n />\n {action && (\n <ActionModal\n ScoutCalendarState={ScoutCalendarState}\n dispatch={dispatch}\n action={action}\n handleClose={() => setAction('')}\n selectedCandidates={candidates.filter((c) => selectedCandidates.includes(c.attendee_id))}\n setSelectedCandidates={setSelectedCandidates}\n />\n )}\n </Dialog>\n );\n}\n\nexport default ViewEvent;\n","import React, { Dispatch, SetStateAction } from 'react';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport API from './API';\nimport { IAttendee, ScoutCalendarAction, ScoutCalendarState } from './types';\nimport { IEvent } from './types';\nimport GroupedAvatars from './CreateEvent/EventProgress/GroupedAvatars';\n\nexport function useDeleteEvent({\n events,\n setSnackbar,\n ScoutCalendarState,\n dispatch,\n onClose\n}: {\n events: IEvent[];\n setSnackbar?: Dispatch<\n SetStateAction<{ message: string; state: 'success' | 'warning' | 'error' }>\n >;\n ScoutCalendarState: ScoutCalendarState;\n dispatch: Dispatch<ScoutCalendarAction>;\n onClose: () => void;\n}) {\n const queryClient = useQueryClient();\n const { createEventObject } = ScoutCalendarState;\n const { candidates, eventId } = createEventObject;\n\n const { mutate: deleteEvent, isLoading: deletingEvent } = useMutation({\n mutationFn: async () => await API.deleteEvent(eventId),\n onError: (error: { errors: string }) => {\n const snackbarPayload: { message: string; state: 'error' } = {\n message: `There was an error deleting the event, ${error.errors}`,\n state: 'error'\n };\n setSnackbar\n ? setSnackbar(snackbarPayload)\n : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n },\n onSuccess: () => {\n const snackbarPayload: { message: string; state: 'success' } = {\n message: `Event has been successfully deleted.${\n candidates.length > 0\n ? ` ${candidates[0].name}${\n candidates.length > 1 ? ` and ${candidates.length - 1} others` : ''\n } has been successfully removed and notified`\n : ''\n }`,\n state: 'success'\n };\n setSnackbar\n ? setSnackbar(snackbarPayload)\n : dispatch({ type: 'SET_SNACKBAR', payload: snackbarPayload });\n const updatedList = events.filter((e) => e.id !== eventId);\n setSnackbar\n ? queryClient.setQueryData(['getEvents'], { pages: [{ data: { events: updatedList } }] })\n : queryClient.setQueryData(['events', ScoutCalendarState.weekStart], updatedList);\n //refreshes the events list on the application page events table on the tasks and events tab\n queryClient.invalidateQueries(['application events'], { exact: true });\n onClose();\n }\n });\n\n return { deleteEvent, deletingEvent };\n}\n\nexport const getAttendees = (attendees: IAttendee[]) =>\n attendees.map((r) => ({ id: r.id, name: r.name, state: r.state }));\n\nexport function CandidateGroupedAvatars({ candidates }: { candidates: IAttendee[] }) {\n return (\n <GroupedAvatars users={getAttendees(candidates).map((c) => ({ ...c, state: undefined }))} />\n );\n}\n","import React from 'react';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport ScoutCalendar from './ScoutCalendar';\n\nconst queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false\n }\n }\n});\n\nexport interface IScoutCalendarProps {\n currentUser: { id: number; time_zone: string | null };\n token: string;\n newApplicationEnabled: boolean;\n}\n\nexport default function ScoutCalendarPage({\n currentUser,\n token,\n newApplicationEnabled\n}: IScoutCalendarProps) {\n return (\n <QueryClientProvider client={queryClient}>\n <ScoutCalendar {...{ currentUser, token, newApplicationEnabled }} />\n </QueryClientProvider>\n );\n}\n","import React, { useEffect, useState } from \"react\"\nimport { createConsumer } from \"@rails/actioncable\"\nimport StyledSnackbar from \"./NewUI/Components/CustomUIElements/StyledSnackbar\"\n\nfunction TestActionCable() {\n const [message, setMessage] = useState<string>(\"\")\n const [snackbar, setSnackbar] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({});\n\n useEffect(() => {\n const consumer = createConsumer(\n document.querySelector('meta[name=\"action-cable-url\"]').content\n )\n consumer.subscriptions.create(\n { channel: \"MessageChannel\" },\n {\n connected: () => setMessage(\"Connected\"),\n received: data => {\n setMessage(data.message)\n if (data.state === \"success\" && setSnackbar) {\n setSnackbar && setSnackbar(data)\n }\n },\n }\n )\n return () => {\n consumer.disconnect()\n }\n }, [])\n\n return (\n <>\n <h1>{message}</h1>\n {snackbar.message && <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />}\n </>\n )\n}\n\nexport default TestActionCable\n","import React, { ReactNode } from 'react';\nimport PropTypes from 'prop-types';\nimport { ThemeProvider, useTheme } from '@material-ui/core/styles'\nimport { createTheme } from '@mui/material/styles';\nimport { theme as baseThemeObject } from './ThemeObject'\n\ninterface ThemeContextProps {\n children: ReactNode;\n}\n\nexport default function ThemeContext ({ children }: ThemeContextProps) {\n const baseTheme = useTheme();\n\n const theme = createTheme({\n ...baseThemeObject.palette,\n ...baseThemeObject.props,\n ...baseThemeObject.overrides,\n typography: {\n ...baseThemeObject.typography,\n button: {\n textTransform: 'none',\n fontWeight: baseTheme.typography.fontWeightBold,\n }\n },\n zIndex: {\n modal: baseTheme.zIndex.modal + 10000,\n tooltip: baseTheme.zIndex.tooltip + 10000,\n }\n });\n\n return (\n <ThemeProvider theme={theme}>\n {children}\n </ThemeProvider>\n )\n}\n\nThemeContext.propTypes = {\n children: PropTypes.node\n}\n\ninterface WithScoutThemeProps {\n [key: string]: any;\n}\n\nexport function withScoutTheme<T extends WithScoutThemeProps>(Component: React.ComponentType<T>) {\n return function WrapperComponent(props: T) {\n return (\n <ThemeContext>\n <Component {...props} />\n </ThemeContext>\n );\n };\n}\n","import React, { useEffect, useState } from 'react';\nimport { useWebSockets } from './NewUI/Components/Utilities/useWebSockets';\nimport StyledSnackbar, { ISnackbarInput } from './NewUI/Components/CustomUIElements/StyledSnackbar';\n\nconst WorkatoNotification = () => {\n const { subscribeToChannel, unsubscribeFromChannel } = useWebSockets(\n 'WorkatoChannel',\n (data: any, UID?: number) => {\n console.log('data.message:', data);\n setSnackbar({ message: data.message, state: data.state });\n }\n );\n const [snackbar, setSnackbar] = useState<ISnackbarInput>({\n message: '',\n state: 'success'\n });\n useEffect(() => {\n subscribeToChannel();\n }, []);\n\n return (\n <StyledSnackbar\n message={snackbar.message}\n state={snackbar.state}\n setSnackbarState={setSnackbar}\n />\n );\n};\n\nexport default WorkatoNotification;\n","import React, { useState } from 'react';\nimport {\n Box,\n Button,\n DialogTitle,\n FormControlLabel,\n Stack,\n TextareaAutosize,\n Typography,\n FormControl,\n Dialog,\n FormLabel,\n RadioGroup,\n Radio\n} from '@mui/material';\nimport FlagIcon from '@mui/icons-material/Flag';\nimport { DialogProps } from './types';\n\nconst XrefDialogue = (props: DialogProps) => {\n const { open, handleClose } = props;\n const [resolution, setResolution] = useState('0');\n const [comments, setComments] = useState('');\n const { referee, reference_id } = props;\n\n const sendInfo = () => {\n fetch(props.resolution_endpoint, {\n headers: {\n 'Content-Type': 'application/json'\n },\n method: 'POST',\n body: JSON.stringify({ resolution, reference_id, referee, note: comments })\n })\n .then((response) => response.json())\n .then((data) => {\n props.setSnackbarState({\n message: 'Successfully Updated Unusual Activity',\n state: 'success'\n });\n })\n .catch((error) => {\n props.setSnackbarState({ message: 'Failed To Update Unusual Activity', state: 'error' });\n });\n handleClose();\n };\n\n const handleRadioChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setResolution(event.target.value);\n };\n\n const handleCommentsChange = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n setComments(event.target.value);\n };\n\n const renderFindings = (index: number, key: string, value: string | boolean) => {\n if (value) {\n return (\n <Stack key={index} flexDirection=\"row\" columnGap=\"16px\">\n <FlagIcon />\n <Typography variant=\"body2\">{findingDescriptions(key)}</Typography>\n </Stack>\n );\n }\n };\n\n const findingDescriptions = (key: string) => {\n switch (key) {\n case 'flag_ip_address':\n return 'Suspicious IP Address Detected: As an example, from same IP Address from the candidate';\n case 'flag_email_address':\n return 'Suspicious Email Address Detected: As an example, from a personal email address';\n case 'flag_browser':\n return 'Suspicious Browser Detected: As an example, from a browser that is not Chrome, Firefox, or Safari';\n }\n };\n return (\n <Dialog open={open} onClose={handleClose}>\n <Box\n sx={{\n width: '400px',\n padding: 2,\n display: 'flex',\n alignItems: 'center',\n flexDirection: 'column'\n }}\n >\n <DialogTitle>Unusual Activity</DialogTitle>\n <Box sx={{ margin: 1, width: '100%' }}>\n <Typography sx={{ textTransform: 'capitalize' }}>Status: {props.ua?.status}</Typography>\n {props.ua?.findings &&\n Object.entries(props.ua.findings).map(([key, value], index) =>\n renderFindings(index, key, value)\n )}\n </Box>\n <FormControl sx={{ width: '100%' }}>\n <FormLabel>Verify This Activity</FormLabel>\n <RadioGroup defaultValue=\"0\" name=\"radio-buttons-group\" onChange={handleRadioChange}>\n <FormControlLabel value=\"0\" control={<Radio />} label=\"Valid\" />\n <FormControlLabel value=\"1\" control={<Radio />} label=\"Suspicious\" />\n </RadioGroup>\n <TextareaAutosize\n aria-label=\"minimum height\"\n minRows={3}\n style={{ width: '100%' }}\n placeholder=\"Comments\"\n onChange={handleCommentsChange}\n />\n\n <Stack sx={{ columnGap: 1, width: '100%', paddingTop: 1, flexDirection: 'row' }}>\n <Button color=\"primary\" onClick={sendInfo} variant=\"outlined\">\n Submit\n </Button>\n <Button color=\"error\" onClick={handleClose} variant=\"outlined\">\n Cancel\n </Button>\n </Stack>\n </FormControl>\n </Box>\n </Dialog>\n );\n};\n\nexport default XrefDialogue;\n","import React, { useState } from 'react';\nimport { Button } from '@mui/material';\nimport StyledSnackbar from '../NewUI/Components/CustomUIElements/StyledSnackbar';\nimport XrefDialogue from './XrefDialogue';\nimport { ButtonProps } from './types';\n\nconst XrefDialogueButton = (props: ButtonProps) => {\n const [open, setOpen] = useState(false);\n const [snackbarState, setSnackbarState] = useState<{\n message: string;\n state: 'success' | 'warning' | 'error';\n }>({\n state: 'success',\n message: ''\n });\n\n return (\n <>\n <Button onClick={() => setOpen(true)}>Unusual Activity</Button>\n <XrefDialogue\n open={open}\n handleClose={() => setOpen(false)}\n setSnackbarState={setSnackbarState}\n {...props}\n />\n <StyledSnackbar\n state={snackbarState.state}\n setSnackbarState={setSnackbarState}\n message={snackbarState.message}\n />\n </>\n );\n};\n\nexport default XrefDialogueButton;\n","import XrefDialogueButton from './XrefDialogueButton';\n\nexport default XrefDialogueButton;\n","import axios from 'axios';\n\nexport default class ServiceApi {\n static get(id, callback) {\n return axios.get(\n `/admin/integration_menu_items/${id}.json`,\n {\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n },\n },\n ).then(response => callback(response.data));\n }\n\n static getPage(path, callback) {\n return axios.get(\n path, {\n headers: {\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n },\n },\n ).then(response => callback(response));\n }\n\n static sendNotification(id, pack, callback) {\n return axios.post(\n `/admin/integration_menu_items/${id}/notify_shortlisting`,\n { price_pack: pack },\n {\n 'Content-Type': 'application/json',\n headers: { 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content') },\n },\n ).then(response => callback(response.data));\n }\n}\n\n","import React from 'react'\nimport { Link } from 'react-router-dom';\n\nexport default class AdminIntegrationsIndex extends React.Component {\n renderIntegrations(integrations) {\n return (\n <div className=\"row row-cols-2 row-cols-sm-4\">\n {\n integrations.map(function (integration) {\n const icon2x = integration.icons[0];\n const icon3x = integration.icons[1];\n return (\n <div className=\"col mb-4\" key={integration.id}>\n <div className=\"card text-center h-100\">\n <div className=\"card-image d-flex justify-content-center align-items-center border-bottom\">\n {integration.icons.length > 0 ?\n <img\n src={icon2x}\n srcSet={`${icon2x} 2x, ${icon3x} 3x`}\n title={integration.title}\n alt={integration.title}\n />\n : integration.title\n }\n </div>\n <div className=\"card-body\">\n <div className=\"card-title mb-0\">{integration.title} </div>\n </div>\n </div>\n </div>\n )\n })\n }\n </div>\n );\n }\n\n render() {\n const { integrations } = this.props;\n\n return (\n <div className=\"layer-content\" >\n <div className=\"layer-container\">\n <div className=\"integrations-index\">\n <div className=\"layer-tabs\">\n <ul className=\"nav nav-tabs\">\n <li className=\"nav-item\">\n <Link to=\"/admin\" className=\"nav-link\">\n <i className=\"material-icons\">chevron_left</i>\n </Link>\n </li>\n <li className=\"nav-item\">\n <Link to=\"/integrations\" className=\"nav-link active\">\n All Integrations\n </Link>\n </li>\n </ul>\n </div>\n {this.renderIntegrations(integrations)}\n </div>\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\nimport renderHTML from 'react-render-html';\nimport { createBrowserHistory } from 'history';\nimport { Link } from \"react-router-dom\";\nimport ServiceApi from '../api.jsx';\n\nconst history = createBrowserHistory();\nconst flashDuration = 10000;\nconst flashMessage = \"Thank you! Your request has been forwarded to our team and they will get back to you shortly. If you haven't heard anything in 24 hours, please contact 07 3330 2595\";\n\nexport default class AdminIntegrationsInfoShow extends React.Component {\n constructor(props) {\n super(props);\n this.state = { tabs: [], packs: [] };\n }\n\n componentDidMount () {\n this.unlisten = history.listen(this.getInfo);\n this.getInfo(window.location);\n }\n\n componentWillUnmount() {\n this.unlisten();\n }\n\n getInfo = (location) => {\n const id = location.hash.split('/').pop();\n\n if (location.hash !== `#/integrations/info/${id}`) {\n return;\n }\n\n ServiceApi.get(id, (response) => {\n const tabs = response.info_tabs;\n this.setState({\n tabs,\n title: response.title,\n logo: response.logo,\n packs: response.packs,\n ctaLabel: response.cta_label,\n targetUrl: response.target_url,\n showButton: response.show_button,\n })\n });\n }\n\n tabs = () => {\n const result = this.state.tabs.map(function (tab, idx) {\n const tabClass = ['nav-link'];\n let tabSelected = 'false';\n if (idx === 0) {\n tabClass.push('active');\n tabSelected = 'true';\n }\n return <a className={tabClass.join(' ')} id={`#tab-id-${tab.id}`} data-toggle=\"pill\" href={`#tab-content-${tab.id}`} role=\"tab\" aria-controls={`#tab-content-${tab.id}`} aria-selected={tabSelected} key={tab.id}>\n {tab.title}\n </a>;\n });\n return result;\n }\n\n tabPanes = () => {\n const result = this.state.tabs.map(function (tab, idx) {\n const tabPaneClass = ['tab-pane', 'fade'];\n if (idx === 0) {\n tabPaneClass.push('show');\n tabPaneClass.push('active');\n }\n\n return (\n <div className={tabPaneClass.join(' ')} id={`tab-content-${tab.id}`} role=\"tabpanel\" aria-labelledby={`tab-id-${tab.id}`} key={tab.id}>\n {renderHTML(tab.body)}\n </div>\n );\n });\n return result;\n }\n\n sendNotification = () => {\n const id = location.hash.split('/').pop();\n const { currentPack } = this.state;\n\n this.setState({ sending: true });\n ServiceApi.sendNotification(id, currentPack, () => {\n this.setState({ sending: false, sent: true }, () => {\n window.setTimeout(() => {\n this.setState({ sent: false })\n }, flashDuration);\n });\n });\n }\n\n handlePackChange = ({ target }) => {\n this.setState({ currentPack: target.value });\n }\n\n priceList() {\n const result = this.state.packs.map(function (price, idx) {\n return <option value={price} key={idx}>{price}</option>\n });\n return result;\n }\n\n render() {\n const { title, logo, packs, ctaLabel, targetUrl, sending, sent, showButton } = this.state;\n const { enableButtons } = this.props;\n const priceList = this.priceList();\n\n return (\n <div className=\"layer-content\">\n <div className=\"layer-container\">\n\n <div className=\"layer-tabs\">\n <ul className=\"nav nav-tabs\">\n <li className=\"nav-item\">\n <Link to=\"/admin\" className=\"nav-link\">\n <i className=\"material-icons\">chevron_left</i>\n </Link>\n </li>\n <li className=\"nav-item\">\n <Link to=\"/integrations\" className=\"nav-link active\">\n All Integrations\n </Link>\n </li>\n </ul>\n </div>\n <div className=\"card border-0\">\n <div className=\"card-body\">\n <div className=\"row\">\n <div className=\"offset-sm-4 col-sm-8\">\n <div className=\"card-image\"><img src={logo} /></div>\n <div className=\"card-title\">{title}</div>\n </div>\n <div className=\"col-sm-4\">\n <div className=\"nav flex-column nav-pills\" role=\"tablist\" aria-orientation=\"vertical\">\n {this.tabs()}\n </div>\n </div>\n <div className=\"col-sm-8\">\n <div className=\"d-flex justify-content-end border-top border-bottom mb-2 pt-1 pb-1\">\n <div className={`${showButton ? 'mr-2' : 'w-100'} ${priceList.length === 0 ? 'd-none' : ''}`}>\n <select className=\"form-control\" name=\"\" id=\"\" onChange={this.handlePackChange}>\n {priceList}\n </select>\n </div>\n {\n showButton && (\n <div className=\"mr-0\">\n {\n targetUrl && targetUrl.length > 0 ?\n <a href={targetUrl} target=\"_blank\" className={`btn filled-blue${enableButtons ? '' : ' disabled'}`} >{ctaLabel}</a> :\n <button className=\"btn filled-blue\" disabled={!enableButtons || sending || sent} onClick={this.sendNotification}>\n {ctaLabel}\n </button>\n }\n </div>\n )\n }\n </div>\n {\n !showButton && (\n <div className=\"text-center mb-4\">\n <strong>Contact your Account Executive</strong>\n </div>\n )\n }\n <div className=\"tab-content\">\n {sent && <div className='flash-msg'>{flashMessage}</div>}\n {this.tabPanes()}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n","import React from 'react'\n\nexport default class AdminIntegrationsNew extends React.Component {\n render() {\n return (\n <div className=\"layer-content\">\n <div className=\"integrations-new\">\n <div className=\"title\">New Integration Setup</div>\n <form className=\"integration\">\n <div className=\"field\">\n <label htmlFor=\"token\" className=\"field\">Indeed integration token</label>\n <input type=\"text\" className=\"field\" name=\"token\"/>\n </div>\n <div className=\"field\">\n <label htmlFor=\"secret\" className=\"field\">Indeed integration secret key</label>\n <input type=\"text\" className=\"field\" name=\"secret\"/>\n </div>\n \n <div className=\"field\">\n <label htmlFor=\"name\" className=\"field\">Indeed company name</label>\n <input type=\"text\" className=\"field\" name=\"name\"/>\n </div>\n <div className=\"actions\">\n <input className=\"action update\" type=\"button\" value=\"Create\" />\n <a className=\"action cancel\" href=\"#\">Cancel</a>\n </div>\n </form>\n </div>\n </div>\n );\n }\n} ","import React from 'react'\nimport { createBrowserHistory } from 'history';\nimport { Link } from 'react-router-dom';\nimport renderHTML from 'react-render-html';\nimport axios from 'axios';\nimport ServiceApi from './api.jsx'\n\nconst history = createBrowserHistory();\n\nexport default class AdminIntegrationsShow extends React.Component {\n constructor (props) {\n super(props);\n }\n\n componentDidMount () {\n this.unlisten = history.listen(this.getInfo);\n this.getInfo(window.location);\n }\n\n componentWillUnmount() {\n this.unlisten();\n }\n\n getInfo = (location) => {\n const id = location.hash.split('/').pop();\n\n if (location.hash !== `#/integrations/${id}`) {\n return;\n }\n\n ServiceApi.get(id, (response) => {\n ServiceApi.getPage(response.integration_edit_path, (pageResponse) => {\n document.querySelector('.edit-integration-modal').innerHTML = pageResponse.data\n })\n });\n }\n \n render() {\n return (\n <div className=\"layer-content\">\n <div className=\"layer-container\">\n <div className=\"layer-tabs\">\n <ul className=\"nav nav-tabs\">\n <li className=\"nav-item\">\n <Link to=\"/admin\" className=\"nav-link\">\n <i className=\"material-icons\">chevron_left</i>\n </Link>\n </li>\n <li className=\"nav-item\">\n <Link to=\"/integrations\" className=\"nav-link active\">\n All Integrations\n </Link>\n </li>\n </ul>\n </div>\n <div className=\"card text-center\">\n <div className=\"edit-integration-modal p-3\" />\n </div>\n </div>\n </div>\n );\n }\n} \n","import React from 'react';\nimport { HashRouter as Router, Switch, Route, Link } from 'react-router-dom';\nimport AdminSubmenu from './submenu';\nimport AdminServicesIndex from './services';\nimport AdminIntegrationsIndex from './integrations';\nimport AdminIntegrationsNew from './integrations/new';\nimport AdminIntegrationsShow from './integrations/show';\nimport AdminIntegrationsInfoShow from './integrations/info/show';\nimport AdminServiceShow from './services/show';\nimport AdminSubserviceShow from './services/subservices/show';\n\nexport default class AdminMenu extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n detailSidebar: false,\n showAllIntegrations: false,\n mobileExpanded: false\n };\n }\n\n toggleDetailSidebar = () => {\n this.setState({ detailSidebar: !this.state.detailSidebar });\n };\n\n toggleIntegrationsList = () => {\n this.setState({ showAllIntegrations: !this.state.showAllIntegrations });\n };\n\n toggleMobileNav = (bool) => {\n bool\n ? $('body').removeClass('navigation-collapsed')\n : $('body').addClass('navigation-collapsed');\n this.setState({ mobileExpanded: !bool });\n };\n\n renderHub() {\n const { apps } = this.props.menu;\n\n return (\n <div className=\"section app-hub-section\">\n <div className=\"toolbar d-flex align-items-center\">\n <div className=\"title\">Apps</div>\n </div>\n\n <div className=\"app-hub-items d-flex justify-content-center text-center\">\n {apps.map(function (app, idx) {\n return (\n <div className={`item ${app.active ? 'active' : ''}`} key={idx}>\n <a href={app.url}>\n <div className={`app-hub-logo ${app.icon}`} title={app.title} />\n <div className=\"app-name\">{app.title}</div>\n </a>\n </div>\n );\n })}\n\n {/* { apps.length < 3 && (\n <div className=\"item more\">\n <span className=\"icon\" />\n <a href=\"#\">Go to App Hub</a>\n </div>\n )} */}\n </div>\n </div>\n );\n }\n\n renderServices() {\n const { services } = this.props.menu;\n\n return (\n <div className=\"section services-section\">\n <div className=\"toolbar d-flex align-items-center\">\n <div className=\"title\">Services</div>\n <div className=\"more ml-auto\">\n <Link to=\"/services\" className=\"btn btn-link link-green\">\n All Services >\n </Link>\n </div>\n </div>\n <ul className=\"nav flex-column services-list\">\n {services.map(function (service) {\n const { id, icon, title, url } = service;\n return (\n <li className=\"nav-item\" key={id}>\n <Link to={`/services/${id}`} className=\"nav-link text-decoration-none\">\n <div className=\"d-flex align-items-center justify-content-between\">\n <div className=\"d-flex service-icon justify-content-center\">\n <img src={icon} title={title} alt={title} />\n </div>\n <div className=\"ml-2\">{title}</div>\n <div className=\"icon arrow-right ml-auto\" />\n </div>\n </Link>\n </li>\n );\n })}\n </ul>\n </div>\n );\n }\n\n renderIntegrations(showAll) {\n const { integrations } = this.props.menu;\n const limit = showAll ? integrations.length : 5;\n\n return (\n <div className=\"section integrations-section\">\n <div className=\"toolbar d-flex align-items-center\">\n <div className=\"title\">Integrations</div>\n <div className=\"more ml-auto\">\n <Link to=\"/integrations\" className=\"btn btn-link link-green\">\n All Integrations >\n </Link>\n </div>\n </div>\n <ul className=\"nav flex-column integrations-list\">\n {integrations.map(function (integration, idx) {\n if (idx >= limit) {\n return null;\n }\n\n const { id, icons, title, configured, info_only } = integration;\n const icon2x = icons[0];\n const icon3x = icons[1];\n\n return (\n <li className=\"nav-item\" key={id}>\n <span className=\"nav-link text-decoration-none\">\n <div className=\"d-flex align-items-center justify-content-between\">\n <div className=\"integration-logo\">\n {icon2x ? (\n <img\n src={icon2x}\n srcSet={`${icon2x} 2x, ${icon3x} 3x`}\n title={title}\n alt={title}\n />\n ) : (\n title\n )}\n </div>\n <div className=\"d-flex\">\n {configured && !info_only && (\n <Link to={`/integrations/${id}`} className=\"btn btn-sm filled-green mr-1\">\n Update\n </Link>\n )}\n\n {!configured && !info_only && (\n <Link to={`/integrations/${id}`} className=\"btn btn-sm outline-green mr-1\">\n <span className=\"icon\" /> Set it up now\n </Link>\n )}\n <Link to={`/integrations/info/${id}`} className=\"btn btn-sm filled-green\">\n Learn more\n </Link>\n </div>\n </div>\n </span>\n </li>\n );\n })}\n </ul>\n <div className=\"d-flex\">\n <button\n className=\"btn btn-link link-green ml-auto text-decoration-none\"\n onClick={this.toggleIntegrationsList}\n >\n Show {showAll ? 'Less' : 'More'}\n </button>\n </div>\n </div>\n );\n }\n\n renderComingSoon() {\n return (\n <div className=\"text-center border-top\">\n <h1>Coming Soon</h1>\n <p className=\"font-weight-bold mb-4\">\n Manage your recruitment services and enable integrations all in one place.\n </p>\n <a\n href=\"https://scouttalenthq.com/new-user-interface-for-scout-talent-software-users/#app-menu\"\n target=\"_blank\"\n >\n <button type=\"button\" className=\"btn filled-blue\">\n Learn More\n </button>\n </a>\n </div>\n );\n }\n\n render() {\n const { menu, applicationName, brandImageUrl, showServicesAndIntegrations, enableButtons } =\n this.props;\n const { integrations, services } = menu;\n const { detailSidebar } = this.state;\n\n return (\n <div>\n <div className=\"logo-wrapper\">\n <Router>\n <Link to=\"/\">\n <i className=\"material-icons\" onClick={this.toggleDetailSidebar}>\n apps\n </i>\n </Link>\n </Router>\n <h2 className=\"new-logo\">{applicationName}</h2>\n </div>\n <ul className=\"nav flex-column\" id=\"main-menu\" role=\"navigation\">\n <li className=\"nav-item d-lg-none\" id=\"navigation-expanded-button\">\n <a\n href=\"#\"\n className=\"nav-link\"\n onClick={() => this.toggleMobileNav(this.state.mobileExpanded)}\n >\n <div className=\"d-flex flex-row\">\n <i className=\"icon material-icons\">chevron_right</i>\n <span>Hide Nav</span>\n <i className=\"chevron material-icons ml-auto\">chevron_left</i>\n </div>\n </a>\n </li>\n\n {menu.items.map((item, idx) => (\n <AdminSubmenu key={idx} item={item} active={item.active} />\n ))}\n\n <div\n id=\"navigation-expander\"\n onClick={() => this.toggleMobileNav(this.state.mobileExpanded)}\n ></div>\n </ul>\n {detailSidebar && (\n <Router>\n <div>\n <div className=\"detail-sidebar\">\n <div className=\"menu-header\">\n <Link to=\"/\">\n <i className=\"material-icons\" onClick={this.toggleDetailSidebar}>\n apps\n </i>\n </Link>\n </div>\n <div className=\"detail-sidebar-content\">\n {this.renderHub()}\n {showServicesAndIntegrations && this.renderServices()}\n {showServicesAndIntegrations &&\n this.renderIntegrations(this.state.showAllIntegrations)}\n {!showServicesAndIntegrations && this.renderComingSoon()}\n </div>\n </div>\n <Route exact path=\"/\"></Route>\n <Switch>\n <Route\n exact\n path=\"/services\"\n render={(props) => <AdminServicesIndex {...props} services={services} />}\n />\n <Route\n exact\n path=\"/integrations\"\n render={(props) => (\n <AdminIntegrationsIndex {...props} integrations={integrations} />\n )}\n />\n <Route exact path=\"/integrations/new\" component={AdminIntegrationsNew} />\n <Route\n path=\"/integrations/info/:id\"\n component={(props) => (\n <AdminIntegrationsInfoShow {...props} enableButtons={enableButtons} />\n )}\n />\n <Route path=\"/integrations/:id\" component={AdminIntegrationsShow} />\n <Route\n exact\n path=\"/services/:serviceId/subservices/:id\"\n component={(props) => (\n <AdminSubserviceShow {...props} enableButtons={enableButtons} />\n )}\n />\n <Route\n exact\n path=\"/services/:id\"\n component={(props) => <AdminServiceShow {...props} />}\n />\n </Switch>\n </div>\n </Router>\n )}\n </div>\n );\n }\n}\n","import React, { Component } from 'react';\nimport paginatedDataSource from '../data-source';\nimport serviceInterface from '../../scout/service-interface-client';\nimport LinkControl from '../../scout/table/fields/control/link_control';\nimport ScoutIndexTable from '../../scout/table/table';\nimport ScoutIndexRow from '../../scout/table/row';\nimport ScoutFilter from '../../scout/table/filter';\nimport CallbackHeader from '../../scout/table/headers/callback';\nimport DataHeader from '../../scout/table/headers/data';\nimport DataColumn from '../../scout/table/fields/data';\nimport LinkColumn from '../../scout/table/fields/link';\nimport CustomControlColumn from '../../scout/table/fields/custom_control';\nimport ScoutSelect from '../../scout/select';\n\nimport T from 'prop-types';\n\nclass PayingUserIndexTemplate extends Component {\n static propTypes = {};\n\n constructor(props) {\n super(props);\n this.state = {\n entityValues: [],\n rootEntityValues: [],\n stateValues: []\n };\n this.selectCallback = this.selectCallback.bind(this);\n this.rolePaidFilterCallback = this.rolePaidFilterCallback.bind(this);\n this.buildCol = this.buildCol.bind(this);\n }\n\n buildControls(user) {\n return [\n <LinkControl\n key={0}\n url={`/admin/entities/${user.entity_id}/users/${user.id}`}\n title=\"show\"\n />\n ];\n }\n\n buildCol(user) {\n let roles = user.roles.map(function (elem, index) {\n if (index == user.roles.length - 1) {\n return elem.paid ? (\n <b key={index} style={{ paddingRight: '0.2em' }}>\n {elem.name}\n </b>\n ) : (\n `${elem.name}`\n );\n } else {\n return elem.paid ? (\n <span key={index} style={{ paddingRight: '0.2em' }}>\n <b>{elem.name}</b>,\n </span>\n ) : (\n `${elem.name}, `\n );\n }\n });\n\n return [\n <DataColumn key={0} data={user.first_name} />,\n <DataColumn key={1} data={user.last_name} />,\n <DataColumn key={2} data={user.email} />,\n <DataColumn key={3} data={user.state} />,\n <LinkColumn key={4} data={user.entity_name} url={`/admin/entities/${user.entity_id}`} />,\n <DataColumn key={5} data={roles} />,\n <CustomControlColumn key={6} components={this.buildControls(user)} />\n ];\n }\n\n buildRow(user, index) {\n return <ScoutIndexRow key={index} cols={this.buildCol(user)} index={index} />;\n }\n\n buildHeaders() {\n const { sortCallback, buildSortableHeader } = this.props;\n\n return [\n <CallbackHeader\n key={0}\n data={buildSortableHeader('FIRST NAME', 'firstname')}\n callback={sortCallback}\n field={'firstname'}\n />,\n <CallbackHeader\n key={1}\n data={buildSortableHeader('LAST NAME', 'lastname')}\n callback={sortCallback}\n field={'lastname'}\n />,\n <CallbackHeader\n key={2}\n data={buildSortableHeader('EMAIL', 'email')}\n callback={sortCallback}\n field={'email'}\n />,\n <CallbackHeader\n key={3}\n data={buildSortableHeader('STATE', 'state')}\n callback={sortCallback}\n field={'state'}\n />,\n <CallbackHeader\n key={4}\n data={buildSortableHeader('Entity', 'entities.name')}\n callback={sortCallback}\n field={'entities.name'}\n />,\n <DataHeader key={5} data={'ROLES'} />,\n <DataHeader key={6} data={'OPERATIONS'} />\n ];\n }\n\n selectCallback(attr, stateName, value) {\n const { filterCallback } = this.props;\n filterCallback({ [attr]: value });\n this.setState({ [stateName]: [].concat(value) });\n }\n\n rolePaidFilterCallback(event) {\n const { filterCallback } = this.props;\n filterCallback({ roles: { paid: $(event.target).prop('checked') } });\n }\n\n payingUserFilters() {\n const { entities, root_entities, user_states, filters, filterCallback } = this.props;\n\n return (\n <ol>\n <li style={{ width: '20em' }}>\n <label htmlFor={'entity_filter'}>Specific Entity</label>\n <ScoutSelect\n name=\"entity_filter\"\n onChange={(value) => this.selectCallback('entity_id', 'entityValues', value)}\n data={entities}\n values={this.state.entityValues}\n multi={true}\n />\n </li>\n <li style={{ width: '20em' }}>\n <label htmlFor={'root_entity_filter'}>Client Level Entity</label>\n <ScoutSelect\n name=\"root_entity_filter\"\n onChange={(value) => this.selectCallback('root_entity_id', 'rootEntityValues', value)}\n data={root_entities}\n values={this.state.rootEntityValues}\n multi={true}\n />\n </li>\n <li style={{ width: '20em' }}>\n <label htmlFor={'state_filter'}>State</label>\n <ScoutSelect\n name=\"state_filter\"\n onChange={(value) => this.selectCallback('state', 'stateValues', value)}\n data={user_states}\n values={this.state.stateValues}\n multi={true}\n />\n </li>\n <li>\n <label htmlFor={'filter_paid_role'}>Paid Role?</label>\n <input\n type={'checkbox'}\n checked={filters.roles.paid}\n onChange={this.rolePaidFilterCallback}\n id={'filter_paid_role'}\n />\n </li>\n <li>\n <label htmlFor={'filter_email'}>Email</label>\n <input\n type={'text'}\n checked={filters.email}\n onChange={(event) => {\n filterCallback({ email: event.target.value });\n }}\n id={'filter_email'}\n />\n </li>\n <li>\n <label htmlFor={'filter_firstname'}>First Name</label>\n <input\n type={'text'}\n checked={filters.firstname}\n onChange={(event) => {\n filterCallback({ firstname: event.target.value });\n }}\n id={'filter_firstname'}\n />\n </li>\n <li>\n <label htmlFor={'filter_lastname'}>Last Name</label>\n <input\n type={'text'}\n checked={filters.lastname}\n onChange={(event) => {\n filterCallback({ lastname: event.target.value });\n }}\n id={'filter_lastname'}\n />\n </li>\n </ol>\n );\n }\n\n render() {\n const { data, pagination, paginationCallback, loading } = this.props;\n\n return (\n <div>\n <ScoutFilter\n title={'Paying Users'}\n csvSubmit={this.props.csvSubmit}\n filterSubmit={this.props.filterSubmit}\n filters={this.payingUserFilters()}\n />\n <ScoutIndexTable\n rows={data.map((item, index) => {\n return this.buildRow(item, index);\n })}\n headers={this.buildHeaders()}\n paginationCallback={paginationCallback}\n pagination={pagination}\n loading={loading}\n />\n </div>\n );\n }\n}\n\nvar options = {\n default_filter: { entity_id: [''], root_entity_id: [''], roles: { paid: true } },\n data_name: 'users',\n title: 'Paying Users',\n sort_key: 'users.id',\n sort_state: {\n expires_at: 'Desc'\n }\n};\n\nconst payingUserIndex = serviceInterface(paginatedDataSource(PayingUserIndexTemplate, options), {});\nexport default payingUserIndex;\n","import axios from 'axios';\n\nexport default class ServiceApi {\n // currently just mockups\n\n static get(id, callback) {\n return axios.get(\n `/admin/service_menu_items/${id}.json`,\n {\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n },\n },\n ).then(response => callback(response.data));\n }\n\n static getSubservice(serviceId, id, callback) {\n return axios.get(\n `/admin/service_menu_items/${serviceId}/subservice_items/${id}.json`,\n {\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n },\n },\n ).then(response => callback(response.data));\n }\n\n static sendNotification(serviceId, id, pack, callback) {\n return axios.post(\n `/admin/service_menu_items/${serviceId}/subservice_items/${id}/notify_shortlisting`,\n { price_pack: pack },\n {\n 'Content-Type': 'application/json',\n headers: { 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content') },\n },\n ).then(response => callback(response.data));\n }\n}\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nexport default class AdminServicesIndex extends React.Component {\n render() {\n const { services } = this.props;\n\n return (\n <div className=\"layer-content\">\n <div className=\"layer-container\">\n\n <div className=\"layer-tabs\">\n <ul className=\"nav nav-tabs\">\n <li className=\"nav-item\">\n <Link to=\"/admin\" className=\"nav-link\">\n <i className=\"material-icons\">chevron_left</i>\n </Link>\n </li>\n <li className=\"nav-item\">\n <Link to=\"/services/\" className=\"nav-link active\">\n All Services\n </Link>\n </li>\n </ul>\n </div>\n\n <div className=\"row row-cols-2 row-cols-sm-4\">\n {services.map(function (service) {\n const { id, icon, title, description } = service;\n return (\n <div className=\"col mb-4\" key={id}>\n <div className=\"card text-center h-100\">\n <div className='card-image d-flex justify-content-center align-items-center border-bottom p-3'>\n <img \n src={ icon }\n title={ title }\n alt={ title }\n className=\"service-icon big\"\n />\n </div>\n <div className=\"card-body\">\n <div className=\"card-title\">{title}</div>\n <div className=\"card-text\">{description}</div>\n <Link to={`/services/${id}`} className=\"btn btn-sm filled-green\">View More</Link>\n </div>\n </div>\n </div>\n )\n })}\n </div>\n </div>\n </div>\n );\n }\n}\n","import React from 'react'\nimport renderHTML from 'react-render-html';\nimport { createBrowserHistory } from 'history';\nimport { Link } from \"react-router-dom\";\nimport ServiceApi from './api.jsx';\n\nconst history = createBrowserHistory();\n\nexport default class AdminServiceShow extends React.Component {\n constructor(props) {\n super(props);\n this.state = { subservices: [] };\n }\n\n componentDidMount () {\n this.unlisten = history.listen(this.getInfo);\n this.getInfo(window.location);\n }\n\n componentWillUnmount() {\n this.unlisten();\n }\n\n getInfo = (location) => {\n const id = location.hash.split('/').pop();\n\n if (location.hash !== `#/services/${id}`) {\n return;\n }\n\n ServiceApi.get(id, (response) => {\n this.setState({\n subservices: response.subservice_items,\n serviceId: response.id,\n serviceTitle: response.title,\n });\n });\n }\n\n render() {\n const { subservices, serviceId, serviceTitle } = this.state;\n\n return (\n <div className=\"layer-content\">\n <div className=\"layer-container\">\n <div className=\"layer-tabs\">\n <ul className=\"nav nav-tabs\">\n <li className=\"nav-item\">\n <Link to=\"/admin\" className=\"nav-link\">\n <i className=\"material-icons\">chevron_left</i>\n </Link>\n </li>\n <li className=\"nav-item\">\n <Link to={`/services/${serviceId}`} className=\"nav-link active\">\n {serviceTitle}\n </Link>\n </li>\n </ul>\n </div>\n\n {\n subservices.map(function (subservice) {\n const { id, title, icon, body } = subservice;\n return (\n <div className=\"card border-0 mb-4\" key={id}>\n <div className=\"card-body\">\n <div className=\"card-image\">\n { icon && <img src={icon} alt={title} /> }\n </div>\n <div className=\"card-title\">{title}</div>\n <div className=\"card-text mb-2\">\n {renderHTML(body)}\n </div>\n <Link to={`/services/${serviceId}/subservices/${id}`} className=\"btn filled-green\">Learn More and Purchase</Link>\n </div>\n </div>\n );\n })\n }\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\nimport renderHTML from 'react-render-html';\nimport { createBrowserHistory } from 'history';\nimport { Link } from \"react-router-dom\";\nimport ServiceApi from '../api.jsx';\n\nconst history = createBrowserHistory();\nconst flashDuration = 10000;\nconst flashMessage = \"Thank you! Your request has been forwarded to our team and they will get back to you shortly. If you haven't heard anything in 24 hours, please contact 07 3330 2595\";\n\nexport default class AdminSubserviceShow extends React.Component {\n constructor(props) {\n super(props);\n this.state = { tabs: [], packs: [] };\n }\n\n componentDidMount () {\n this.unlisten = history.listen(this.getInfo);\n this.getInfo(window.location);\n }\n\n componentWillUnmount() {\n this.unlisten();\n }\n\n getInfo = (location) => {\n const parts = location.hash.split('/');\n const serviceId = parts[2];\n const id = parts[4];\n\n if (location.hash !== `#/services/${serviceId}/subservices/${id}`) {\n return;\n }\n\n ServiceApi.getSubservice(serviceId, id, (response) => {\n const tabs = response.info_tabs;\n this.setState({\n tabs,\n title: response.title,\n logo: response.logo,\n packs: response.packs,\n btnLabel: response.btn_label,\n targetUrl: response.target_url,\n showButton: response.show_button,\n })\n });\n }\n\n tabs = () => {\n const result = this.state.tabs.map(function (tab, idx) {\n const tabClass = ['nav-link'];\n let tabSelected = 'false';\n if (idx === 0) {\n tabClass.push('active');\n tabSelected = 'true';\n }\n return <a className={tabClass.join(' ')} id={`#tab-id-${tab.id}`} data-toggle=\"pill\" href={`#tab-content-${tab.id}`} role=\"tab\" aria-controls={`#tab-content-${tab.id}`} aria-selected={tabSelected} key={tab.id}>\n {tab.title}\n </a>;\n });\n return result;\n }\n\n tabPanes = () => {\n const result = this.state.tabs.map(function (tab, idx) {\n const tabPaneClass = ['tab-pane', 'fade'];\n if (idx === 0) {\n tabPaneClass.push('show');\n tabPaneClass.push('active');\n }\n\n return (\n <div className={tabPaneClass.join(' ')} id={`tab-content-${tab.id}`} role=\"tabpanel\" aria-labelledby={`tab-id-${tab.id}`} key={tab.id}>\n {renderHTML(tab.body)}\n </div>\n );\n });\n return result;\n }\n\n sendNotification = () => {\n const parts = location.hash.split('/');\n const serviceId = parts[2];\n const id = parts[4];\n const { currentPack } = this.state;\n\n this.setState({ sending: true });\n ServiceApi.sendNotification(serviceId, id, currentPack, () => {\n this.setState({ sending: false, sent: true }, () => {\n window.setTimeout(() => {\n this.setState({ sent: false })\n }, flashDuration);\n });\n });\n }\n\n handlePackChange = ({ target }) => {\n this.setState({ currentPack: target.value });\n }\n\n priceList() {\n const result = this.state.packs.map(function (price, idx) {\n return <option value={price} key={idx}>{price}</option>\n });\n return result;\n }\n\n render() {\n const { title, logo, packs, btnLabel, targetUrl, sending, sent, showButton } = this.state;\n const { enableButtons } = this.props;\n const priceList = this.priceList();\n\n return (\n <div className=\"layer-content\">\n <div className=\"layer-container\">\n\n <div className=\"layer-tabs\">\n <ul className=\"nav nav-tabs\">\n <li className=\"nav-item\">\n <Link to=\"/admin\" className=\"nav-link\">\n <i className=\"material-icons\">chevron_left</i>\n </Link>\n </li>\n <li className=\"nav-item\">\n <Link to=\"/integrations\" className=\"nav-link active\">\n All Integrations\n </Link>\n </li>\n </ul>\n </div>\n <div className=\"card border-0\">\n <div className=\"card-body\">\n <div className=\"row\">\n <div className=\"offset-sm-4 col-sm-8\">\n {\n logo &&\n <div className=\"card-image\"><img src={logo} /></div>\n }\n <div className=\"card-title\">{title}</div>\n </div>\n <div className=\"col-sm-4\">\n <div className=\"nav flex-column nav-pills\" role=\"tablist\" aria-orientation=\"vertical\">\n {this.tabs()}\n </div>\n </div>\n <div className=\"col-sm-8\">\n <div className=\"d-flex justify-content-end border-top border-bottom mb-2 pt-1 pb-1\">\n <div className={`${showButton ? 'mr-2' : 'w-100'} ${priceList.length === 0 ? 'd-none' : ''}`}>\n <select className=\"form-control\" name=\"\" id=\"\" onChange={this.handlePackChange}>\n {priceList}\n </select>\n </div>\n {\n showButton && (\n <div className=\"mr-0\">\n {\n targetUrl && targetUrl.length > 0 ?\n <a href={targetUrl} target=\"_blank\" className={`btn filled-blue${enableButtons ? '' : ' disabled'}`} >{btnLabel}</a> :\n <button className=\"btn filled-blue\" disabled={!enableButtons || sending || sent} onClick={this.sendNotification}>\n {btnLabel}\n </button>\n }\n </div>\n )\n }\n </div>\n {\n !showButton && (\n <div className=\"text-center mb-4\">\n <strong>Contact your Account Executive</strong>\n </div>\n )\n }\n <div className=\"tab-content\">\n {sent && <div className='flash-msg'>{flashMessage}</div>}\n {this.tabPanes()}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\n\nexport default class AdminSubmenu extends React.Component {\n constructor(props) {\n super(props);\n this.state = { active: props.active };\n }\n\n toggleActive = () => {\n this.setState({ active: !this.state.active });\n };\n\n setCookie = (cname, cvalue, exdays) => {\n const d = new Date();\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\n const expires = 'expires=' + d.toGMTString();\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\n };\n\n getCookie = (cname) => {\n const name = cname + '=';\n const decodedCookie = decodeURIComponent(document.cookie);\n const ca = decodedCookie.split(';');\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n };\n\n clickHandler = (cname) => {\n this.setCookie(cname, !(this.getCookie(cname) === 'true'), 1);\n };\n\n render() {\n const { active } = this.state;\n const { item } = this.props;\n const subMenuId = item.title.toLowerCase().replace(/ /g, '-');\n\n return (\n <li className={active ? 'active nav-item menu-item' : 'nav-item menu-item'}>\n <a\n href=\"#\"\n className=\"nav-link\"\n data-toggle=\"collapse\"\n data-target={'#' + subMenuId}\n aria-expanded={this.getCookie(subMenuId) === 'true' ? true : false}\n aria-controls={subMenuId}\n onClick={() => this.clickHandler(subMenuId)}\n >\n <div className=\"d-flex flex-row\">\n <i className=\"icon material-icons\">{item.icon}</i>\n <span>{item.title}</span>\n <i className=\"chevron material-icons ml-auto\">chevron_right</i>\n </div>\n </a>\n <div\n className={\n item.active || this.getCookie(subMenuId) === 'true'\n ? 'sub-menu collapse show'\n : 'sub-menu collapse'\n }\n id={subMenuId}\n >\n <ul className=\"nav flex-column\">\n {item.submenu.map((subitem, idx) => (\n <li key={idx} className=\"nav-item\">\n <a\n id={subitem.id}\n href={subitem.url}\n className={subitem.active ? 'nav-link active' : 'nav-link'}\n target={subitem.external ? '_blank' : ''}\n >\n {subitem.title}\n </a>\n </li>\n ))}\n </ul>\n </div>\n </li>\n );\n }\n}\n","import React, { Component } from 'react';\nimport classnames from 'classnames';\nimport videojs from 'video.js';\nimport axios from 'axios';\nimport { logActivity, getVideo, deleteVideo } from './video_interview_helper.jsx';\nimport {\n getBookmarks,\n addBookmark,\n deleteBookmark,\n updateBookmark\n} from './video_bookmarks_helper.jsx';\n\nwindow.addEventListener('error', (e) => {\n if (e.message === 'ResizeObserver loop limit exceeded') {\n e.stopImmediatePropagation();\n e.preventDefault();\n console.log('ResizeObserver loop limit exceeded, error suppressed');\n }\n});\n\nclass VideoInterview extends Component {\n state = {\n videoCurrentTime: 0,\n videoJS: {},\n bookmarkTxt: '',\n timeMins: 0,\n timeSecs: 0,\n time: 0,\n edit: false,\n editTxt: '',\n editNum: 0,\n editSecs: 0,\n editMins: 0,\n addId: 0,\n removeIndex: 0,\n videoId: null,\n bookMarks: [{}],\n deletedVideo: false\n };\n\n componentDidMount() {\n getVideo(this.props.url, this.props.applicationId).then((data) => {\n if (data) {\n this.createVideo(data);\n\n if (this.props.savedBookmarks) {\n this.addMultipleBookmarks(data.video.id, this.props.savedBookmarks);\n } else {\n getBookmarks(this.props.url, data.video.id).then((bookmarks) => {\n this.setState({ bookMarks: bookmarks });\n });\n }\n\n this.player.on('timeupdate', () => {\n const timeMins = Math.floor(this.player.currentTime() / 60);\n this.setState({\n timeSecs: Math.floor(this.player.currentTime() - timeMins * 60),\n timeMins: timeMins\n });\n });\n\n this.player.on('loadedmetadata', () => {\n this.player.addTextTrack('Question List', 'en');\n });\n\n this.handleUpdateTime = this.handleUpdateTime.bind(this);\n }\n });\n }\n\n componentWillUnmount() {\n if (this.player) {\n this.player.dispose();\n }\n }\n\n calcTimeFormat = (time) => {\n let mins = ~~((time % 3600) / 60);\n let secs = time % 60;\n let value = '';\n value += '' + mins + ':' + (secs < 10 ? '0' : '');\n value += '' + secs;\n\n if (!time) {\n return '0:00';\n }\n return value;\n };\n\n createVideo = (data) => {\n const videoJsOptions = {\n autoplay: false,\n controls: true,\n sources: data.video.videoSources.map((video) => ({\n type: `video/${video.format}`,\n src: video.url\n }))\n };\n\n this.player = videojs(this.videoNode, videoJsOptions);\n this.setState({\n videoCurrentTime: this.player.currentTime(),\n videoId: data.video.id\n });\n };\n\n addMultipleBookmarks = (videoId, bookMarks) => {\n var promises = [];\n const query = `mutation createBookmark($videoId: ID!, $seconds: Int!, $description: String) {\n createBookmark(input: {videoId: $videoId, seconds: $seconds, description: $description}){\n errors\n bookmark {\n id\n seconds\n description\n }\n }\n }`;\n\n Array.isArray(bookMarks) &&\n bookMarks.forEach((bookmark) => {\n promises.push(\n axios.post(\n this.props.url,\n {\n query: query,\n variables: {\n videoId: videoId,\n seconds: parseInt(bookmark.timeStamp),\n description: bookmark.text\n }\n },\n {\n headers: {\n 'Content-Type': 'application/json'\n }\n }\n )\n );\n });\n\n axios.all(promises).then((results) => {\n var sortBookmarks = [];\n results.forEach((result) => {\n const bookmark = result.data.data.createBookmark.bookmark;\n sortBookmarks.push({\n text: bookmark.description,\n id: bookmark.id,\n timeStamp: parseInt(bookmark.seconds)\n });\n });\n sortBookmarks.sort(function (a, b) {\n return a.timeStamp - b.timeStamp;\n });\n this.setState({ bookMarks: sortBookmarks });\n });\n };\n\n handleUpdateTime = (val) => {\n this.player.currentTime(val);\n };\n\n handleInput = (e) => {\n this.setState({ [e.target.name]: e.target.value });\n };\n\n handleAddSubmit = async (e) => {\n e.preventDefault();\n const { bookmarkTxt, timeMins, timeSecs, bookMarks, edit } = this.state;\n const previousAry = bookMarks.slice();\n const calTimeStamp = parseInt(timeMins) * 60 + parseInt(timeSecs);\n const addId = await addBookmark(this.props.url, bookmarkTxt, calTimeStamp, this.state.videoId);\n this.setState({ addId: addId });\n previousAry.push({ id: addId, text: bookmarkTxt, timeStamp: parseInt(calTimeStamp) });\n previousAry.sort((a, b) => a.timeStamp - b.timeStamp);\n this.setState({ bookMarks: previousAry, timeMins: 0, timeSecs: 0, bookmarkTxt: '' });\n };\n\n handleEdit = (val, i) => {\n const { edit, editTxt, editNum, removeIndex, editMins, editSecs } = this.state;\n let mins = Math.floor(val.timeStamp / 60);\n let secs = val.timeStamp - mins * 60;\n const dropDown = removeIndex === i ? !edit : true;\n this.setState({\n edit: dropDown,\n editTxt: val.text,\n editNum: val.timeStamp,\n editMins: mins,\n editSecs: secs,\n removeIndex: i\n });\n };\n\n handleEditSubmit = (e) => {\n const { editTxt, bookMarks, editMins, editSecs, removeIndex, edit } = this.state;\n const previousAry = bookMarks.slice();\n const calTimeStamp = parseInt(editMins) * 60 + parseInt(editSecs);\n previousAry.splice(removeIndex, 1);\n previousAry.push({\n text: editTxt,\n timeStamp: parseInt(calTimeStamp),\n id: bookMarks[removeIndex].id\n });\n previousAry.sort((a, b) => a.timeStamp - b.timeStamp);\n updateBookmark(this.props.url, calTimeStamp, editTxt, bookMarks[removeIndex].id);\n this.setState({ bookMarks: previousAry, editSecs: 0, editMins: 0, edit: false });\n e.preventDefault();\n };\n\n handleDelete = (i) => {\n const { bookMarks } = this.state;\n const previousAry = bookMarks.slice();\n previousAry.splice(i, 1);\n this.setState({ bookMarks: previousAry, edit: false });\n deleteBookmark(this.props.url, bookMarks[i].id);\n };\n\n updateColor = (i) => {\n const { removeIndex, edit } = this.state;\n if (removeIndex === i && edit) {\n return 'SelectedTime BookMarkList';\n }\n return 'BookMarkList';\n };\n\n exitEdit = () => {\n const { edit } = this.state;\n this.setState({ edit: !edit });\n };\n\n showBookmarkTime = (bookMarks, admin) => {\n const { videoJS, bookmarkTxt, time, timeMins, timeSecs, edit, editTxt, editMins, editSecs } =\n this.state;\n\n if (admin) {\n return (\n <div className=\"TimeStampSection\" style={{ width: '100%' }}>\n <div className=\"TimeStampWrapper\">\n {bookMarks.map((time, i) => (\n <div\n key={i}\n onClick={this.handleUpdateTime.bind(this, time.timeStamp)}\n className={this.updateColor(i)}\n >\n <div className=\"ellipsTxt\">{time.text}</div>\n <div className=\"TimeStampTxtSection\">\n {this.props.deletePermission && (\n <div>\n <span className=\"deleteIcon\" onClick={this.handleDelete.bind(this, i)}>\n <span className=\"IconTxt\">DELETE</span>\n </span>\n <span className=\"editIcon\" onClick={this.handleEdit.bind(this, time, i)}>\n <span className=\"IconTxt\">EDIT</span>\n </span>\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n <div className=\"TimeStampForm\">\n {edit ? (\n <div>\n <form onSubmit={this.handleEditSubmit}>\n <div style={{ display: 'inline-flex' }}>\n <input\n type=\"text\"\n name=\"editTxt\"\n className=\"TimeStampTxtInput\"\n onChange={this.handleInput}\n value={editTxt}\n placeholder=\"Time Stamp Title\"\n />\n <div className=\"VideoTimeInput\">\n <input\n className=\"InputTimeVideo\"\n required={true}\n type=\"number\"\n name=\"editMins\"\n min=\"0\"\n max=\"99\"\n onChange={this.handleInput}\n value={this.padTimeWithZeros(editMins, 'mins')}\n />\n :\n <input\n type=\"number\"\n className=\"InputTimeVideo\"\n name=\"editSecs\"\n required={true}\n min=\"00\"\n max=\"59\"\n onChange={this.handleInput}\n value={this.padTimeWithZeros(editSecs)}\n />\n </div>\n </div>\n <br />\n <div className=\"SubmitBTNVideos\">\n <input\n onClick={this.exitEdit}\n style={{ width: '3rem', textAlign: 'center' }}\n className=\"EditTimeStampBtn\"\n defaultValue=\"Exit\"\n />\n <input type=\"submit\" value=\"SAVE\" />\n </div>\n </form>\n </div>\n ) : (\n <div className=\"TimeStampForm\">\n {this.props.deletePermission && (\n <form onSubmit={this.handleAddSubmit}>\n <div style={{ display: 'inline-flex' }}>\n <input\n type=\"text\"\n name=\"bookmarkTxt\"\n onChange={this.handleInput}\n className=\"TimeStampTxtInput\"\n value={bookmarkTxt}\n placeholder=\"Time Stamp Title\"\n />\n <div className=\"VideoTimeInput\">\n <input\n className=\"InputTimeVideo\"\n required={true}\n type=\"number\"\n name=\"timeMins\"\n min=\"0\"\n max=\"99\"\n onChange={this.handleInput}\n value={this.padTimeWithZeros(timeMins, 'mins')}\n />\n :\n <input\n className=\"InputTimeVideo\"\n type=\"number\"\n name=\"timeSecs\"\n required={true}\n min=\"00\"\n max=\"59\"\n onChange={this.handleInput}\n value={this.padTimeWithZeros(timeSecs)}\n />\n </div>\n </div>\n <br />\n <input className=\"SubmitBTNVideos\" type=\"submit\" value=\"ADD\" />\n </form>\n )}\n </div>\n )}\n </div>\n </div>\n );\n } else {\n return <div></div>;\n }\n };\n\n showBookmark = (admin) => {\n const { bookMarks, bookmarkTxt, timeMins, timeSecs } = this.state;\n\n if (bookMarks.length === 0 && admin) {\n return (\n <div className=\"EmptyTimeStampForm\">\n {this.props.deletePermission && (\n <form onSubmit={this.handleAddSubmit}>\n <div style={{ display: 'inline-flex' }}>\n <input\n type=\"text\"\n name=\"bookmarkTxt\"\n onChange={this.handleInput}\n className=\"TimeStampTxtInput\"\n value={bookmarkTxt}\n placeholder=\"Time Stamp Title\"\n />\n <div className=\"VideoTimeInput\">\n <input\n className=\"InputTimeVideo\"\n required={true}\n type=\"number\"\n name=\"timeMins\"\n min=\"0\"\n max=\"99\"\n onChange={this.handleInput}\n value={this.padTimeWithZeros(timeMins, 'mins')}\n />\n :\n <input\n className=\"InputTimeVideo\"\n type=\"number\"\n name=\"timeSecs\"\n required={true}\n min=\"00\"\n max=\"59\"\n onChange={this.handleInput}\n value={this.padTimeWithZeros(timeSecs)}\n />\n </div>\n </div>\n <br />\n <input className=\"SubmitBTNVideos\" type=\"submit\" value=\"ADD\" />\n </form>\n )}\n </div>\n );\n } else {\n return <div style={{ margin: 'auto' }}>{this.showBookmarkTime(bookMarks, admin)}</div>;\n }\n };\n\n showDeleteButton = (permission) => {\n if (permission) {\n return (\n <div>\n <button\n type=\"button\"\n onClick={(e) => {\n window.confirm('Are you sure you wish to delete this video?') &&\n deleteVideo(this.props.deleteVideoUrl, this.state.videoId).then((res) => {\n logActivity('deleted video in', this.props.activityUrl);\n this.setState({ deletedVideo: true });\n window.location.reload(true);\n });\n }}\n style={{ backgroundColor: '#d9534f', color: 'white' }}\n >\n DELETE VIDEO\n </button>\n </div>\n );\n }\n };\n\n padTimeWithZeros = (number, unit) => {\n if (unit !== 'mins') unit = 'secs';\n\n number = parseInt(number, 10);\n\n if (unit === 'secs' && number > 59) number = 59;\n if (unit === 'mins' && number > 99) number = 99;\n if (number < 0) number = 0;\n\n if (number < 10) number = `0${number}`;\n\n return number;\n };\n\n showVideo = (admin) => {\n const pathname = window.location.pathname;\n\n const VideoInterviewClass = classnames({\n VideoInterviewAdmin: pathname.startsWith('/admin/'),\n VideoInterviewClient: pathname.startsWith('/video_interviews/')\n });\n\n const VideoWrapperClass = classnames({\n VideoWrapperAdmin: pathname.startsWith('/admin/'),\n VideoWrapperClient: pathname.startsWith('/video_interviews/')\n });\n\n return (\n <div>\n {!this.state.deletedVideo ? (\n <div className={VideoInterviewClass}>\n <div className={VideoWrapperClass}>\n <div data-vjs-player className=\"VideoStyles\">\n <video\n ref={(node) => (this.videoNode = node)}\n className=\"video-js vjs-big-play-centered\"\n controls\n ></video>\n </div>\n {this.showBookmark(admin)}\n </div>\n {this.showDeleteButton(this.props.deletePermission)}\n </div>\n ) : (\n <VideoUpload\n applicationId={this.props.applicationId}\n admin={this.props.admin}\n url={this.props.url}\n uploadUrl={this.props.uploadUrl}\n deleteVideoUrl={this.props.deleteVideoUrl}\n updateUrl={this.props.updateUrl}\n />\n )}\n </div>\n );\n };\n\n render() {\n const admin = this.props.admin;\n\n return this.showVideo(admin);\n }\n}\n\nexport default VideoInterview;\n","import React, { Component } from 'react';\nimport Dropzone from 'react-dropzone';\nimport VideoPlayer from './index.jsx';\nimport axios from 'axios';\nimport { logActivity } from './video_interview_helper.jsx';\n\nclass Upload extends Component {\n state = {\n uploading: false,\n file : [],\n slug: '',\n uploadProgress: 0,\n videoPlayer: false,\n responseVideoURL: {},\n videoId: null,\n display: true,\n transcoding: true,\n loadingState: false,\n validFile: true,\n bookMarks: null,\n errors: ''\n };\n\n componentDidMount() {\n if (this.props.hasVideo) this.checkVideoState();\n }\n\n checkVideoState = () => {\n const query = `query fetchVideo($slug: ID){\n video(slug: $slug) {\n bookmarks{\n description\n seconds\n }\n state\n \t\tid\n videoSources{\n src: url\n type: mimeType\n }\n }\n }`;\n fetch(this.props.url, {\n method: 'post',\n headers: {'Content-Type' : 'application/json' },\n body: JSON.stringify({\n query: query,\n variables: {slug: `interview-application-${this.props.applicationId}`},\n })\n })\n .then(response => response.json())\n .then(response => {\n if (response.data) {\n const videoState = response.data.video.state;\n const url = response.data.video.videoSources;\n const Id = response.data.video.id;\n if (videoState !== 'completed' && this.state.uploadProgress !== 0) {\n setTimeout(this.checkVideoState, 2000);\n }\n else {\n this.setState({ videoPlayer: true, responseVideoURL: url, videoId: Id })\n\n const data = new FormData();\n data.append(`application_id`, this.props.applicationId);\n\n axios.post(\n this.props.updateUrl,\n data,\n {\n headers: {\n 'Content-Type': 'multipart/form-data',\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n },\n },\n ).then((response) => {\n\n });\n }\n }\n });\n }\n\n upload = (file) => {\n const { uploading } = this.state;\n\n if (uploading) return;\n\n this.setState({ uploading: true }, () => this.handelUpload());\n };\n\n onDragOver = (e) => {\n e.stopPropagation();\n e.preventDefault();\n }\n\n prepareLink = (file) => {\n const query = `\n mutation prepare($userId: ID!, $slug: ID!, $checksum: String, $contentType: String, $contentLength: Int){\n prepareUploadingVideo(input: {slug: $slug, userId: $userId, checksum: $checksum, contentLength: $contentLength, contentType: $contentType}) {\n errors\n url\n video {\n id\n state\n originalVideoUrl\n }\n }\n }`;\n const variables = {\n 'slug': `interview-application-${this.props.applicationId}`,\n 'userId': 'SomeID',\n 'contentType': file.type,\n 'contentLength': file.totalSize\n };\n fetch(this.props.url, {\n method: 'post',\n headers: {'Content-Type' : 'application/json' },\n body: JSON.stringify({\n query: query,\n variables: variables,\n })\n })\n .then(response => response.json())\n .then(response => {\n const url = response.data.prepareUploadingVideo.url;\n this.uploadFile(file, url);\n });\n }\n\n uploadFile = (file, url) => {\n var xhr = new XMLHttpRequest();\n xhr.upload.onprogress = (e) => {\n var done = e.position || e.loaded, total = e.totalSize || e.total;\n let progress = (Math.floor(done/total*1000)/10);\n this.setState({ uploadProgress : progress });\n };\n\n xhr.open('put', url, true);\n xhr.setRequestHeader('Content-Type', file.type);\n xhr.send(file);\n xhr.onloadend = () => {\n if (xhr.status !== 200){\n console.log(xhr.status, ' Error ' );\n }\n else { this.upload(); }\n }\n }\n\n getMetaData = (file) => {\n const data = new FormData();\n\n data.append(`video`, file[0]);\n data.append(`application_id`, this.props.applicationId);\n\n axios.post(\n this.props.uploadUrl,\n data,\n {\n headers: {\n 'Content-Type': 'multipart/form-data',\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n },\n },\n ).then((response) => {\n this.setState({ bookMarks: response.data });\n });\n }\n\n onDrop = (file) => {\n const { validFile } = this.state;\n\n if (file.length === 0) {\n this.setState({ validFile : false})\n } else {\n this.getMetaData(file);\n this.prepareLink(file[0]);\n this.setState({display: false, transcoding: false, validFile: true});\n }\n};\n\n handelUpload = () => {\n const query = `mutation notifyUploading($slug: ID!){\n transcodeVideo(input: {slug: $slug}) {\n video {\n state\n }\n }\n }`;\n fetch(this.props.url, {\n method: 'post',\n headers: {'Content-Type' : 'application/json' },\n body: JSON.stringify({\n query: query,\n variables: {slug: `interview-application-${this.props.applicationId}`},\n })\n })\n logActivity('uploaded video for', this.props.activityUrl);\n this.setState({display: true, transcoding: true, loadingState: true})\n console.log(this.state.transcoding);\n this.checkVideoState();\n }\n\n onDropRejected = (rejectedFiles, e) => {\n\n let errorsList = [];\n\n rejectedFiles.forEach((file) => {\n file.file.size > this.props.fileSizeLimit && errorsList.push('This video is bigger than 500MB')\n !file.file.type.match(/video\\//) && errorsList.push('This file is not a valid video...')\n })\n errorsList = errorsList.filter((value, index) => errorsList.indexOf(value) === index)\n\n this.setState({\n errors: errorsList.join(', ')\n });\n }\n\n render () {\n const { uploading, uploadProgress, videoPlayer, responseVideoURL, videoId, display, transcoding, loadingState, validFile } = this.state;\n const progressStyles = {\n width: uploadProgress + '%', background: 'lightgrey',\n display: display ? 'none' : 'block',\n textAlign: 'center'\n }\n const { admin, applicationId, url } = this.props\n const transcode = { display: transcoding ? 'none' : 'block' };\n return (\n <div>\n {!videoPlayer ?\n <div className=\"Upload\">\n { loadingState ?\n <div >Transcoding video.. Please wait, do not refresh the page.\n <div className=\"Loader\"></div>\n </div>\n :\n <div className=\"DropZoneWrapper\">\n <Dropzone accept={{'video/*': []}} maxSize={this.props.fileSizeLimit} onDrop={this.onDrop.bind(this)} onDragOver={this.onDragOver} onDropRejected={this.onDropRejected}>\n {({ getRootProps, getInputProps }) => (\n <div\n {...getRootProps()}\n className=\"DropzoneStyles\"\n >\n <input {...getInputProps()} />\n Drop a video, or click here.\n </div>\n )}\n </Dropzone>\n </div>\n }\n <div style={{marginLeft: '1rem', color: 'red'}}>\n {!validFile && this.state.errors}\n </div>\n <div>\n {uploadProgress > 0 && uploadProgress < 100 &&\n <div>\n <div className=\"progress\" style={{width: '15rem', height: '1.25rem'}}>\n <div className=\"progress-bar\" style={progressStyles}>\n <span className=\"percentStyle\">{parseInt(uploadProgress)}%</span>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n : <VideoPlayer\n applicationId={applicationId}\n admin={admin}\n url={url}\n uploadUrl={this.props.uploadUrl}\n savedBookmarks={this.state.bookMarks}\n activityUrl={this.props.activityUrl}\n deletePermission={this.props.deletePermission}\n deleteVideoUrl={this.props.deleteVideoUrl}\n updateUrl={this.props.updateUrl}\n />\n }\n </div>\n );\n }\n}\n\nexport default Upload;\n","import axios from 'axios';\n\nexport function getBookmarks(url, videoId) {\n const query = `query fetchBookmark($videoId: ID!, $slugId: ID){\n video(id: $videoId, slug: $slugId) {\n bookmarks {\n text : description\n timeStamp : seconds\n id\n }\n }\n }`;\n\n return axios.post(\n url,\n JSON.stringify({\n query: query,\n variables: {\n videoId: videoId,\n },\n }),\n {\n headers: {\n 'Content-Type': 'application/json',\n },\n }\n ).then(response => {\n if (response.data && response.data.data) {\n const sortBookmarks = response.data.data.video.bookmarks;\n sortBookmarks.sort(function (a, b) {\n return a.timeStamp - b.timeStamp;\n });\n return sortBookmarks;\n } else {\n alert('Error fetching bookmarks, refresh to try again');\n }\n });\n}\n\nexport function addBookmark(url, text, seconds, videoId) {\n const variables = {\n \"videoId\": videoId,\n \"seconds\": parseInt(seconds),\n \"description\": text\n };\n\n const query = `mutation createBookmark($videoId: ID!, $seconds: Int!, $description: String) {\n createBookmark(input: {videoId: $videoId, seconds: $seconds, description: $description}){\n errors\n bookmark {\n id\n seconds\n description\n }\n }\n }`;\n \n return axios.post(\n url,\n JSON.stringify({\n query: query,\n variables: variables,\n }),\n {\n headers: {\n 'Content-Type': 'application/json',\n },\n }\n ).then(response => {\n if (response.data && response.data.data) {\n return response.data.data.createBookmark.bookmark.id;\n } else {\n alert('Error adding bookmark, please refresh the page and try again.');\n }\n });\n}\n\nexport function updateBookmark(url, timeStamp, text, bookmarkId) {\n const variables = {\n \"bookmarkId\": bookmarkId,\n \"seconds\": parseInt(timeStamp),\n \"description\": text\n }\n\n const query = `mutation udpdateBookmark($bookmarkId: ID!, $seconds: Int!, $description: String!){\n updateBookmark(input: {bookmarkId: $bookmarkId, seconds: $seconds, description: $description}){\n errors\n bookmark{\n id\n seconds\n description\n }\n }\n }`;\n\n axios.post(\n url,\n JSON.stringify({\n query: query,\n variables: variables,\n }),\n {\n headers: {\n 'Content-Type': 'application/json',\n },\n }\n )\n}\n\nexport function deleteBookmark(url, bookmarkId) {\n const query = `\n mutation deleteBookmark($bookMarkID: ID!){\n deleteBookmark(input: {bookmarkId: $bookMarkID}){\n errors\n }\n }`;\n axios.post(\n url,\n JSON.stringify({\n query: query,\n variables: {bookMarkID: bookmarkId},\n }),\n {\n headers: {\n 'Content-Type': 'application/json',\n },\n }\n );\n}\n","import axios from 'axios';\n\nexport function logActivity(activity, activityUrl) {\n const data = new FormData();\n\n data.append(`verb`, activity);\n axios.post(\n activityUrl,\n data,\n {\n headers: {\n 'Content-Type': 'multipart/form-data',\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n },\n },\n );\n}\n\nexport function getVideo(url, applicationId) {\n const data = new FormData();\n\n const query = `\n query getVideo($id: ID, $slug: ID) {\n video(id:$id, slug: $slug){\n id\n slug\n originalVideoUrl\n state\n userId\n videoSources {\n format\n id\n mimeType\n url\n }\n bookmarks {\n description\n seconds\n }\n }\n }\n `;\n\n return axios.post(\n url,\n JSON.stringify({\n query: query,\n variables: {\n slug: `interview-application-${applicationId}`,\n },\n }),\n {\n headers: {\n 'Content-Type': 'application/json',\n },\n }\n ).then(response => {\n return response.data.data;\n });\n}\n\nexport function deleteVideo(url, videoId) {\n if (videoId) {\n const data = new FormData();\n data.append(`video_id`, videoId);\n\n return axios.post(\n url,\n data,\n {\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content'),\n },\n }\n ).then(response => {\n return response.data;\n });\n }\n}\n","import React, { Component } from 'react';\n\nexport default class IntegrationSettings extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n entity_id: this.props.entityId,\n integration_id: this.props.integration.id,\n enabled: false,\n auth_string: '',\n body: '',\n response: ''\n }\n }\n\n componentWillMount() {\n const { url } = this.props;\n\n fetch(`${url}?entity_id=${this.props.entityId}&integration_id=${this.props.integration.id}`,\n { headers: { \"Content-Type\": \"application/json\" }}\n )\n .then(response => response.json())\n .then((json) => {\n json.id !== null && this.setState(json);\n });\n }\n\n handleChange = (e) => {\n const target = e.target;\n const value = target.type === 'checkbox' ? target.checked : target.value;\n const name = target.name;\n\n this.setState({ [name]: value });\n }\n\n handleSave = () => {\n const { url } = this.props;\n\n fetch(url, {\n method: 'POST',\n body: JSON.stringify(this.state),\n headers: {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': $('meta[name=\"csrf-token\"]').attr('content')\n }\n }).then(response => {\n if (response.status === 201) {\n this.setState({ response: 'Saved successfully'})\n } else if(response.status === 422) {\n this.setState({ response: 'Invalid JSON' })\n }\n })\n .catch(error => this.setState({ response: 'Could not save settings' }));\n }\n\n render () {\n const { integration } = this.props;\n\n return (\n <div>\n <fieldset>\n <legend>{this.props.integration.name}</legend>\n <div>\n <li className=\"boolean input\">\n <label>\n <input\n name=\"enabled\"\n type=\"checkbox\"\n onChange={this.handleChange}\n checked={this.state.enabled}\n />\n Enabled\n </label>\n </li>\n </div>\n <div>\n <li className=\"string input optional stringish\">\n <label>Auth String</label>\n <textarea\n name=\"auth_string\"\n rows=\"10\"\n cols=\"150\"\n onChange={this.handleChange}\n value={this.state.auth_string}\n />\n </li>\n </div>\n <div>\n <li className=\"string input optional stringish\">\n <label>Body</label>\n <textarea\n name=\"body\"\n rows=\"20\"\n cols=\"150\"\n onChange={this.handleChange}\n value={this.state.body}\n />\n </li>\n </div>\n <li className=\"action input_action\">\n <button\n className=\"commit\"\n type=\"button\"\n onClick={this.handleSave}\n >\n Save\n </button>\n </li>\n {this.state.response}\n </fieldset>\n </div>\n );\n }\n}\n","import React, { Component } from 'react';\nimport IntegrationSettings from './integration_settings';\n\nconst Integrations = (props) => {\n return (\n <div>\n {props.integrations.map((integration) => {\n return (\n <IntegrationSettings\n key={integration.id}\n integration={integration}\n entityId={props.entity_id}\n url={props.url}\n />\n );\n })}\n </div>\n );\n};\n\nexport default Integrations;\n","import React from 'react';\nimport ScoutSelect from './scout/select';\n\nexport default class MvsRequestTest extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { values: [] };\n }\n\n onPackageChange(e) {\n let values = [];\n\n this.props.packages.map(function (item) {\n if (item.id === e.target.value) {\n values = item.checks.map((item) => item.value);\n return true;\n }\n });\n\n this.setState({ values });\n }\n\n render() {\n const { packages, blueprints } = this.props;\n const { values } = this.state;\n\n return (\n <fieldset className=\"inputs\">\n <ol>\n <li className=\"select input\">\n <label htmlFor=\"package_id\">Package</label>\n <select name=\"package_id\" id=\"package_id\" onChange={this.onPackageChange.bind(this)}>\n <option value=\"\"> </option>\n {packages.map(function (item, key) {\n return (\n <option key={key} value={item.id}>\n {item.name}\n </option>\n );\n })}\n </select>\n </li>\n </ol>\n <ol>\n <li className=\"select input\">\n <label htmlFor=\"blueprint_id\">Additional Checks</label>\n <ScoutSelect\n key={values}\n name=\"blueprint_ids[]\"\n values={values}\n data={blueprints}\n multi={true}\n />\n </li>\n </ol>\n </fieldset>\n );\n }\n}\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport InPlaceInputEditor from '../scout/table/fields/inplace_input_editor';\n\nconst SavedSearchItem = ({ savedSearch, isStaff }) => {\n const [title, setTitle] = useState(savedSearch.title);\n const itemUrl = '/admin/search/advanced/saved/' + savedSearch.id;\n const emailUrl =\n '/admin/search/advanced/saved/' +\n savedSearch.id +\n '/email-batches/new' +\n (isStaff ? '?skip_scout_clients=true' : '');\n\n const updateItem = (value, id) =>\n $.ajax({\n url: `/admin/api/v1/saved_searches/${id}`,\n method: 'PATCH',\n data: {\n saved_search: {\n title: value,\n name: value\n }\n },\n success: ({ data }) => setTitle(data.saved_search.title)\n });\n\n const renderSearchLink = () => {\n const { post_code1, post_code2, status, tags, date1, date2, by_title, query } =\n savedSearch.params;\n\n let url = window.location.origin + '/admin/search/advanced/results?';\n\n let data_params = {\n query: query || '',\n sorting: 'id',\n start: '0',\n date1: date1 || '',\n date2: date2 || '',\n post_code1: post_code1 || '',\n post_code2: post_code2 || '',\n by_title: by_title || false\n };\n let ret = [];\n ret = encodeDataParams(ret, data_params);\n ret = encodeStatus(ret, status);\n ret = encodeTags(ret, tags);\n\n url += ret.join('&');\n\n return <a href={url}>{title || savedSearch.name}</a>;\n };\n\n const renderFilters = () => {\n const { post_code1, post_code2, status, tags, date1, date2, by_title } = savedSearch.params;\n const parameters = [];\n\n if (tags && tags.length > 0) parameters.push(`Tags: (${tags.join(', ')})`);\n if (status && status.length > 0) parameters.push(`Statuses: (${status.join(', ')})`);\n if (post_code1 && post_code2) parameters.push(`Postcode: ${post_code1} — ${post_code2}`);\n if (date1) parameters.push(`Dates: ${date1} — ${date2}`);\n if (by_title) parameters.push('Search by title');\n\n return parameters.join(', ');\n };\n\n return (\n <tr>\n <td>\n <InPlaceInputEditor\n id={savedSearch.id}\n saveCallback={updateItem}\n defaultLabel={renderSearchLink()}\n value={title || savedSearch.name}\n />\n </td>\n <td>{renderFilters()}</td>\n <td className=\"\">\n <a className=\"btn\" href={emailUrl}>\n Email This List\n </a>\n <a className=\"btn\" href={itemUrl} data-method=\"delete\">\n Delete\n </a>\n <a className=\"btn\" href={`${itemUrl}.csv`}>\n Export As CSV\n </a>\n </td>\n </tr>\n );\n};\n\nSavedSearchItem.propTypes = {\n savedSearch: PropTypes.object,\n isStaff: PropTypes.bool\n};\n\nconst encodeDataParams = (array, dataParams) => {\n for (let d in dataParams) {\n if (dataParams[d] === '') continue;\n array.push(encodeURIComponent(d) + '=' + encodeURIComponent(dataParams[d]));\n }\n return array;\n};\n\nconst encodeStatus = (array, status) => {\n if (status) {\n for (let i = 0; i < status.length; i++) {\n array.push(encodeURIComponent('status[]') + '=' + encodeURIComponent(status[i]));\n }\n }\n\n return array;\n};\n\nconst encodeTags = (array, tags) => {\n if (tags) {\n for (let i = 0; i < tags.length; i++) {\n array.push(encodeURIComponent('tags[]') + '=' + encodeURIComponent(tags[i]));\n }\n }\n return array;\n};\n\nexport default SavedSearchItem;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SavedSearchItem from './item';\n\nconst SavedSearchTable = ({ collection, isStaff }) => (\n <table className=\"saved-searches\">\n <thead>\n <tr>\n <th>Title </th>\n <th>Filtering Options </th>\n <th>Operations </th>\n </tr>\n </thead>\n <tbody>\n {collection &&\n collection.map((savedSearch, key) => (\n <SavedSearchItem key={key} savedSearch={savedSearch} isStaff={isStaff} />\n ))}\n </tbody>\n </table>\n);\n\nSavedSearchTable.propTypes = {\n collection: PropTypes.array,\n isStaff: PropTypes.bool,\n token: PropTypes.string,\n endpoint: PropTypes.string\n};\n\nexport default SavedSearchTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ScoutTrainingsTable from './table';\nimport ScoutTrainingsPortalButton from './portal-button';\n\nexport default class ScoutTrainingsIndex extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = { courses: [] };\n }\n\n static propTypes = {\n candidate: PropTypes.object.required,\n accessToken: PropTypes.string.required,\n endPoint: PropTypes.string.required\n };\n\n loadCourses() {\n const { candidate, accessToken, endPoint } = this.props;\n const url = endPoint + '/api/candidates/' + candidate.scout_candidate_id + '/courses';\n\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-AccessToken': accessToken\n };\n\n fetch(url, {\n method: 'GET',\n headers: headers\n })\n .then((response) => {\n return response.json();\n })\n .then((courses) => {\n return this.setState({ courses: courses });\n })\n .catch((response) => {});\n }\n\n syncCandidate() {\n const { accessToken, endPoint } = this.props;\n const url = endPoint + '/api/candidates';\n\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'X-AccessToken': accessToken\n };\n\n fetch(url, {\n method: 'POST',\n headers: headers,\n body: JSON.stringify({ candidate: this.props.candidate })\n })\n .then((response) => {\n return response.json();\n })\n .then((data) => {\n if (data.url) {\n return (window.location = data.url);\n }\n })\n .catch((response) => {\n response.json().then((body) => {\n alert(Object.values(body.error).join(', '));\n });\n });\n }\n\n componentDidMount() {\n this.loadCourses();\n }\n\n render() {\n return (\n <div>\n <div className=\"section\">\n <h2>\n <div className=\"east\">\n <div className=\"west\">Scout Trainings</div>\n </div>\n </h2>\n <ScoutTrainingsTable collection={this.state.courses} />\n </div>\n <div className=\"section\">\n <ScoutTrainingsPortalButton onClick={this.syncCandidate.bind(this)} />\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\n\nexport default class ScoutTrainingsPortalButton extends React.Component {\n static propTypes = {\n onClick: PropTypes.func.required\n }\n render() {\n return (\n <div>\n <button className=\"commit\" onClick={ this.props.onClick }>Scout Trainings</button>\n </div>\n );\n }\n} \n","import React from 'react';\nimport moment from 'moment';\nexport default class ScoutTrainingsTable extends React.Component {\n \n constructor( props ) {\n super( props );\n }\n \n static propTypes = {\n collection: PropTypes.array.required\n }\n render() {\n return (\n <div>\n <table>\n <thead>\n <tr>\n <th>Course</th>\n <th>Details</th>\n <th>Provider</th>\n <th>Status</th>\n <th>Commencement Date</th>\n <th>Estimated Completion</th>\n </tr>\n </thead>\n <tbody>\n { this.props.collection.map((course, key)=> (\n <tr key={ key }>\n <td>{ course.name }</td>\n <td>{ course.details }</td>\n <td>{ course.provider }</td>\n <td>{ course.status }</td>\n <td>{ course.commencemented_at ? moment(course.commencemented_at).format(\"D/MM/YYYY\") : '' }</td>\n <td>{ course.completed_at ? moment(course.completed_at).format(\"D/MM/YYYY\") : '' }</td>\n </tr>\n ))}\n </tbody>\n </table>\n \n </div>\n );\n }\n} \n","import React from 'react';\nimport ScoutSelect from './select';\n\ninterface IEventStatus {\n id: number;\n details: string;\n}\n\nfunction EventStatusSelect({\n data,\n onChangeFunctionName\n}: {\n data: IEventStatus;\n onChangeFunctionName: string;\n}) {\n const formattedData = data.map(({ id, details }) => ({ value: id, label: details }));\n\n const handleChange = (value) => {\n window[onChangeFunctionName](value);\n };\n\n return <ScoutSelect name=\"event_status_id\" data={formattedData} onChange={handleChange} />;\n}\n\nexport default EventStatusSelect;\n","import React, { Component } from 'react';\nimport ScoutSelect from './select';\n\nexport default class ScoutAddButton extends Component {\n constructor() {\n super();\n\n this.state = {\n fields: []\n };\n\n this.add = this.add.bind(this);\n }\n\n add(e) {\n e.preventDefault();\n const { fields } = this.state;\n fields.push({ id: Date.now(), label: '', value: '' });\n this.setState({ fields });\n }\n\n remove(index) {\n const { fields } = this.state;\n fields.splice(index, 1);\n\n this.setState({ fields });\n }\n\n handleSelect = (i) => (e) => {\n const { fields } = this.state;\n const re = /([a-zA-Z0-9._+-]+@[a-zA-Z0-9._+-]+\\.[a-zA-Z0-9_+-]+)/gi;\n\n if (e.target.innerText != 'Select...') {\n fields[i].label = e.target.innerText;\n fields[i].value = e.target.innerText.match(re).toString();\n }\n\n this.setState(fields);\n };\n\n render() {\n const { fields } = this.state;\n const { name, data, selected } = this.props;\n\n const inputs = fields.map((item, i) => (\n <div key={i} className=\"approver\">\n <div className=\"select inputs\" style={{ marginBottom: '5px' }}>\n <div className=\"label\" style={{ fontWeight: 'bold' }}>\n Email\n </div>\n <span onClick={this.handleSelect(i)}>\n <ScoutSelect name={name.replace('%i', item.id)} data={data} value={item.value} />\n </span>\n </div>\n <div className=\"approver-remove\">\n <span onClick={this.remove.bind(this, i)}>Remove</span>\n </div>\n <div className=\"clearfix\"></div>\n </div>\n ));\n\n return (\n <div>\n <div>{inputs}</div>\n <button\n onClick={this.add}\n className={'add_field'}\n disabled={fields.length + selected.length >= data.length}\n >\n {this.props.title}\n </button>\n </div>\n );\n }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nimport debounce from 'debounce';\nimport Async from 'react-select/async';\n\nexport default class ScoutAutocomplete extends Component {\n static propTypes = {\n url: T.string.isRequired,\n name: T.string.isRequired,\n onChange: T.func,\n multi: T.bool,\n values: T.array,\n value: T.string,\n includeBlank: T.string,\n urlHeaders: T.object,\n selectedLabel: T.string,\n placeholder: T.string\n };\n\n constructor (props) {\n super(props);\n const { values, value } = this.props;\n\n this.state = { values, value, options: [], limitation: '50', optionsFirstLoad: false };\n }\n\n handleLimitationChange = (e) => this.setState({limitation: e.target.value});\n\n onChange = (option) => {\n if (this.props.multi) {\n let values = [];\n if (option) {\n option.map((opt) => { values.push(opt.value) })\n }\n this.setState({ values });\n if (this.props.onChange) {\n this.props.onChange(values);\n }\n } else {\n this.setState({ value: option.value });\n if (this.props.onChange) {\n this.props.onChange(option.value, option.label, option.attrs);\n }\n }\n }\n\n getOptions = (input, callback) => {\n const { url, multi, includeBlank, urlHeaders } = this.props;\n const { value, values, limitation } = this.state;\n const selected = multi ? values.join(',') : value;\n const searchString = input.toLowerCase().trim();\n const searchUrl = `${url}${url.indexOf('?') < 0 ? '?' : '&'}search=${searchString}&selected=${selected}&limit=${limitation}`\n fetch(searchUrl, { headers: urlHeaders }).then((response) => {\n response.json().then((json) => {\n let options = json.data.map(node => ({ label: node[0], value: node[1], attrs: node[2] }));\n if (includeBlank) {\n options.unshift({ label: includeBlank, value: '' });\n }\n this.setState({ options, optionsFirstLoad: true });\n callback(options);\n });\n });\n\n return;\n }\n\n loadOptions = debounce(this.getOptions, 500);\n\n limitationSelect = (limitation) => {\n const limitationOptions = ['50', '100', '200', '300', '400', '500', '1000', 'All'];\n\n return (\n <div className='limit-selection'>\n <label className='inline-label'>Number of the entities:</label>\n <select name=\"entities_limitation\" onChange={this.handleLimitationChange} value={limitation}>\n { limitationOptions.map(option => <option value={option}>{option}</option>)}\n </select>\n </div>\n )\n }\n\n render () {\n const { values, value, limitation, options, optionsFirstLoad } = this.state;\n const { name, multi, className, url, moveType, selectedLabel, placeholder } = this.props;\n let selected;\n\n if (multi) {\n selected = options.filter((option) => values.indexOf(option.value) >= 0);\n return (\n <div key={limitation}>\n {moveType == 'job_moving' ? this.limitationSelect(limitation) : ''}\n <Async\n placeholder={ placeholder }\n key={ url }\n className={ className }\n name={ name }\n isMulti\n value={ selected }\n onChange={ this.onChange }\n joinValues={ false }\n loadOptions={ this.loadOptions }\n cache={ false }\n defaultOptions={ selectedLabel ? selected : true }\n />\n </div>\n );\n } else {\n if (!optionsFirstLoad && selectedLabel) {\n selected = [{ label: selectedLabel, value: value }];\n } else {\n selected = options.filter((option) => value + '' === option.value + '');\n }\n return (\n <div key={limitation}>\n {moveType == 'job_moving' ? this.limitationSelect(limitation) : ''}\n <Async\n placeholder={ placeholder }\n key={ url }\n className={ className }\n name={ name }\n value={ selected }\n onChange={ this.onChange }\n loadOptions={ this.loadOptions }\n cache={ false }\n defaultOptions={ selectedLabel ? selected : true }\n />\n </div>\n );\n }\n }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\nimport ScoutAutocomplete from './autocomplete';\n\nexport default class NestedAutocomplete extends Component {\n static propTypes = {\n parentUrl: T.string.isRequired,\n childBaseUrl: T.string.isRequired,\n parentLabel: T.string.isRequired,\n label: T.string.isRequired,\n parentValue: T.string,\n value: T.string,\n parentName: T.string,\n name: T.string,\n includeBlank: T.string\n };\n\n constructor(props) {\n super(props);\n const { parentValue, value, childBaseUrl } = props;\n\n this.state = {\n parentValue,\n value,\n childUrl: childBaseUrl.replace('{parentValue}', parentValue || '')\n };\n }\n\n setParentValue = (parentValue) => {\n const { childBaseUrl } = this.props;\n this.setState({\n parentValue,\n childUrl: childBaseUrl.replace('{parentValue}', parentValue || '')\n });\n };\n\n render() {\n const { parentName, parentLabel, parentUrl, label, name, includeBlank } = this.props;\n const { parentValue, value, childUrl } = this.state;\n\n return (\n <fieldset className=\"inputs\">\n <ol>\n <li>\n <label>{parentLabel}</label>\n <ScoutAutocomplete\n url={parentUrl}\n name={parentName}\n onChange={this.setParentValue}\n value={parentValue}\n />\n </li>\n <li>\n <label>{label}</label>\n <ScoutAutocomplete\n url={childUrl}\n name={name}\n value={value}\n includeBlank={includeBlank}\n />\n </li>\n </ol>\n </fieldset>\n );\n }\n}\n","import React, { Component, Fragment } from 'react';\nimport T from 'prop-types';\nimport Async from 'react-select/async';\n\nconst LIMIT = 300;\n\nexport default class ScoutSelect extends Component {\n static propTypes = {\n multi: T.bool,\n values: T.array,\n value: T.string,\n data: T.array.isRequired,\n name: T.string.isRequired,\n onChange: T.func,\n className: T.string,\n };\n\n constructor (props) {\n super(props);\n const { data, values, value } = this.props;\n\n this.state = { value, values, options: data, selectingOption: false }\n\n this.onChange = this.onChange.bind(this);\n this.getOptions = this.getOptions.bind(this);\n this.formatEmail = this.formatEmail.bind(this);\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n if (!nextProps.multi && !prevState.selectingOption) {\n return { value: nextProps.value };\n } else {\n return { selectingOption: false };\n }\n }\n\n onChange (option) {\n if (this.props.multi) {\n let values = [];\n if (option) {\n option.map((opt) => { values.push(opt.value) })\n }\n\n this.setState({ values, selectingOption: true, options: this.optionsForQuery('') });\n if (this.props.onChange) {\n this.props.onChange(values);\n }\n } else {\n this.setState({ selectingOption: true, value: option.value, options: this.optionsForQuery('') });\n if (this.props.onChange) {\n \n this.props.onChange(option.value)\n }\n }\n }\n\n optionsForQuery(input) {\n const searchString = input.toLowerCase().trim();\n return this.props.data.filter(\n ({ value, label }) => {\n if (this.props.multi) {\n if (searchString.length == 0) {\n return this.state.values;\n } else {\n return this.state.values.includes(value) || label.toLowerCase().includes(searchString);\n }\n } else {\n return label.toLowerCase().includes(searchString);\n }\n }\n );\n }\n\n formatEmail (str) {\n if (typeof str !== 'string') return str;\n\n return str.trim().charAt(0) === '*' ? str.trim().substring(1) : str.trim();\n }\n\n getOptions (input, callback) {\n const options = this.optionsForQuery(input);\n\n const newOptions = options.map((item) => {\n item.value = this.formatEmail(item.value);\n return item;\n });\n\n this.setState({ options: newOptions });\n return callback(options.slice(0, LIMIT));\n }\n\n render () {\n const { values, value, options } = this.state;\n const { name, multi, className } = this.props;\n\n if (multi) {\n const selected = options.filter((option) => values.indexOf(option.value) >= 0);\n return (\n <Async\n className={ className }\n name={ name }\n isMulti\n value={ selected }\n onChange={ this.onChange }\n joinValues={ false }\n loadOptions={ this.getOptions }\n defaultOptions\n />\n );\n } else {\n const selected = this.state.options.filter((option) => this.formatEmail(value) === option.value);\n const defaultValue = this.props.value;\n const disabled = defaultValue && defaultValue.trim().charAt(0) === '*' ? true : false;\n return (\n <Fragment>\n <Async\n className={ className }\n name={ name }\n value={ selected }\n onChange={ this.onChange }\n loadOptions={ this.getOptions }\n isDisabled={ disabled }\n defaultOptions\n />\n { disabled && <input type=\"hidden\" name={name} value={this.formatEmail(defaultValue)} />}\n </Fragment>\n );\n }\n }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class LinkControl extends Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n const { url, method, confirm, title } = this.props\n return(\n <div><a href={url} data-method={method} data-confirm={confirm}> {title} </a></div>\n )\n }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class CustomControlColumn extends Component {\n constructor(props) {\n super(props)\n }\n\n render() {\n const { components } = this.props\n return(\n <td>\n { components }\n </td>\n )\n }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class DataColumn extends Component {\n static propTypes = {\n data: T.node // T.oneOf(['string', 'number', 'date'])\n }\n\n constructor(props) {\n super(props)\n }\n\n render() {\n return (<td>{this.props.data}</td>)\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class InPlaceInputEditor extends React.Component {\n constructor(props) {\n super(props)\n\n this.state = {\n editing: false,\n value: this.props.value\n }\n\n this.toggleEditing = this.toggleEditing.bind(this)\n this.saveCallback = this.saveCallback.bind(this)\n this.inputCallback = this.inputCallback.bind(this)\n }\n\n toggleEditing() {\n const { editing } = this.state\n this.setState({editing: !editing})\n }\n\n saveCallback(event) {\n const { value, editing } = this.state\n const { id } = this.props\n this.toggleEditing();\n this.props.saveCallback(value, id);\n }\n\n inputCallback(event) {\n this.setState({value: event.target.value})\n }\n\n renderInput(event) {\n const { saveCallback, defaultLabel} = this.props\n const { editing, value } = this.state\n if (editing) {\n return (<div>\n <input onChange={this.inputCallback} value={value} style={{width: '80%'}}/>\n <a href='#' className='' onClick={this.saveCallback} style={{paddingLeft: '10px'}}><i className='fa fa-check' style={{color: 'green'}}/></a>\n <a href='#' className='' onClick={this.toggleEditing}>\n <i className='fa fa-close' style={{color: 'red'}}/>\n </a>\n </div>)\n } else {\n return (<div>\n {defaultLabel}\n <a href='#' style={{paddingLeft: '10px'}} onClick={this.toggleEditing}><i className='fa fa-pencil'/></a>\n </div>)\n }\n }\n\n render() {\n return(\n this.renderInput()\n )\n }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class LinkColumn extends Component {\n static propTypes = {\n data: T.string,\n url: T.string\n }\n\n constructor(props) {\n super(props)\n }\n\n render() {\n const { className, url, data } = this.props\n return (<td><a className={className} href={url}>{data}</a></td>)\n }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class ScoutFilter extends Component {\n static propTypes = {\n csvSubmit: T.func, // Will add a 'Export CSV' button that calls this function on click\n filterSubmit: T.func,\n title: T.string\n }\n\n constructor (props) {\n super(props)\n\n this.filterFields = this.filterFields.bind(this)\n this.localSubmit = this.localSubmit.bind(this);\n }\n\n filterFields() {\n let out = []\n for (var i = 0; i < filters.length ; i++) {\n out.push(\n <li key={i}>\n {filters[i]}\n </li>)\n }\n return (\n {out}\n )\n }\n\n localSubmit(event) {\n event.preventDefault();\n this.props.filterSubmit()\n }\n\n render() {\n const {filters} = this.props\n\n return(\n <div className='filter'>\n <link rel=\"stylesheet\" media=\"screen\" href=\"/assets/filters.self.css?body=1\"/>\n <h2>Filter {this.props.title}</h2>\n <form onSubmit={this.localSubmit}>\n <ol>\n {filters}\n </ol>\n <div className=\"submit\">\n <input type=\"submit\" name=\"commit\" value=\"Filter\"/>\n {\n this.props.csvSubmit && (\n <input type=\"button\" name=\"export_csv\" value=\"Export CSV\" onClick={this.props.csvSubmit} className='export-csv'/>\n )\n }\n </div>\n </form>\n </div>\n )\n }\n}\n","\nimport React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class CallbackHeader extends Component {\n static propTypes = {\n callback: T.func,\n field: T.string\n };\n constructor(props) {\n super(props)\n }\n\n render() {\n return (<th><a href='#' onClick={this.props.callback} data-field={this.props.field}>{this.props.data}</a></th>)\n }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class DataHeader extends Component {\n static propTypes = {\n data: T.string,\n }\n\n constructor(props) {\n super(props)\n }\n\n render() {\n return (<th>{this.props.data}</th>)\n }\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class ScoutTablePagination extends React.Component {\n static propTypes = {\n pagination: PropTypes.obj,\n onClick: PropTypes.func\n }\n\n constructor(props) {\n super(props)\n const width = 7;\n\n // {\n // total_pages: 10,\n // current_page: 1,\n // }\n this.renderControl = this.renderControl.bind(this)\n this.renderPageControl = this.renderPageControl.bind(this)\n this.renderActiveLink = this.renderActiveLink.bind(this)\n this.renderForwardControl = this.renderForwardControl.bind(this)\n this.renderBackwardControl = this.renderBackwardControl.bind(this)\n\n }\n\n renderActiveLink(key, index, label, classNames = '') {\n return(<a key={ key } className={ classNames } href={ `#page=${index}` } onClick={ () => { this.props.onClick(index) }}>{ label }</a>);\n }\n\n renderControl(links) {\n return (\n <span>\n {links}\n </span>\n )\n }\n\n renderPageControl() {\n const { pagination } = this.props;\n const { total_pages, current_page } = pagination;\n const width = 6;\n const middle = 3;\n\n var start = current_page - middle\n var end = start + width\n if( start <= 0) {\n start = 1;\n if (width > total_pages) {\n end = total_pages;\n } else {\n end = start + width;\n }\n } else if(end > total_pages) {\n if (width > total_pages) {\n start = 1;\n } else {\n start = total_pages - width;\n }\n end = total_pages;\n }\n\n var output = []\n for (var i = start; i <= end; i++) {\n if(current_page === i) {\n output.push(<em key={ i } className='current'>{i}</em>)\n } else {\n output.push(this.renderActiveLink(i, i, i, 'next_page'))\n }\n }\n if(total_pages > end) {\n output.push('...')\n output.push(this.renderActiveLink(end + 1,\n total_pages,\n total_pages,\n 'next_page'))\n }\n return this.renderControl(output)\n }\n\n renderBackwardControl() {\n const { pagination } = this.props;\n const { total_pages, current_page } = pagination;\n\n if (current_page > 1) {\n return this.renderControl([\n this.renderActiveLink(1, 1, 'First', 'next_page'),\n this.renderActiveLink(2, current_page - 1, '↠Previous', 'next_page')\n ])\n } else {\n return this.renderControl([\n (<span key={1} className='next_page disabled'>First</span>),\n (<span key={2} className='previous_page disabled'>↠Previous</span>)\n ])\n }\n }\n\n renderForwardControl() {\n const { pagination } = this.props;\n const { total_pages, current_page } = pagination;\n if (current_page < total_pages) {\n return this.renderControl([\n this.renderActiveLink(1, current_page + 1, 'Next →', 'next_page'),\n this.renderActiveLink(2, total_pages, 'Last', 'next_page')\n ])\n } else {\n return this.renderControl([\n (<span key={1} className='next_page disabled'>Next →</span>),\n (<span key={2} className='next_page disabled'>Last</span>)\n ])\n }\n }\n\n render() {\n const { pagination } = this.props;\n const { total_pages, total_records } = pagination;\n return (\n <div className='pagination' >\n <span style={{float: 'left'}}> Total Records: {total_records} </span>\n { total_pages != 1 && this.renderBackwardControl() }\n { total_pages != 1 && this.renderPageControl() }\n { total_pages != 1 && this.renderForwardControl() }\n </div>\n );\n }\n};\n","import React, { Component } from 'react';\nimport T from 'prop-types';\n\nexport default class ScoutIndexRow extends Component {\n static propTypes = {\n cols: T.array,\n index: T.number\n }\n\n constructor (props) {\n super(props)\n }\n\n zebraClass() {\n if(this.props.index % 2 == 0) {\n return 'even'\n } else {\n return 'odd'\n }\n }\n\n render() {\n return(\n <tr className={this.zebraClass()}>\n {this.props.cols}\n </tr>\n )\n }\n}\n","import React, { Component } from 'react';\nimport ReactLoading from 'react-loading';\nimport ScoutTablePagination from './pagination';\n\nimport T from 'prop-types';\n\nexport default class ScoutIndexTable extends Component {\n static propTypes = {\n pagination: T.object,\n paginationCallback: T.func,\n rows: T.array,\n headers: T.array,\n loading: T.bool\n };\n\n constructor(props) {\n super(props);\n }\n\n renderPagination() {\n const { pagination, paginationCallback } = this.props;\n return <ScoutTablePagination pagination={pagination} onClick={paginationCallback.bind(this)} />;\n }\n\n renderLoadingRow() {\n const { loading, headers } = this.props;\n\n let output = [\n <td key=\"0\">\n <div className=\"loading\">\n <ReactLoading key=\"spinner\" type=\"cylon\" color=\"blue\" height=\"25px\" width=\"25px\" />\n </div>\n </td>\n ];\n\n for (var i = 1; i < headers.length; i++) {\n output.push(<td key={i}></td>);\n }\n return <tr style={{ display: loading ? '' : 'none' }}>{output}</tr>;\n }\n\n renderNothingFound() {\n return <p>No items Found</p>;\n }\n\n renderTableBody() {\n const { pagination, rows, headers, loading, idName } = this.props;\n\n return (\n <div>\n {pagination && this.renderPagination()}\n <table id={idName}>\n <thead>\n <tr>{headers}</tr>\n </thead>\n <tbody>\n {this.renderLoadingRow()}\n {!loading && rows}\n </tbody>\n </table>\n {pagination && this.renderPagination()}\n </div>\n );\n }\n\n render() {\n const { rows, loading } = this.props;\n return (\n <div>{rows.length == 0 && !loading ? this.renderNothingFound() : this.renderTableBody()}</div>\n );\n }\n}\n","import React, { Component } from 'react';\nimport T from 'prop-types';\nimport AsyncCreatable from 'react-select/async-creatable';\n\nconst LIMIT = 300;\n\nexport default class ScoutTags extends Component {\n static propTypes = {\n values: T.array,\n data: T.array.isRequired,\n name: T.string.isRequired,\n onChange: T.func\n };\n\n constructor (props) {\n super(props);\n const { data, values } = this.props;\n\n this.state = { values }\n this.onChange = this.onChange.bind(this);\n this.getOptions = this.getOptions.bind(this);\n }\n\n UNSAFE_componentWillReceiveProps ({ values }) {\n if (this.props.values && this.props.values.length > 0 && this.props.values !== values) {\n this.setState({ values: values});\n }\n }\n\n onChange (value) {\n this.setState({ values: [].concat(value) });\n\n if (this.props.onChange) {\n this.props.onChange([].concat(value))\n }\n }\n\n getOptions (input, callback) {\n const searchString = input.toLowerCase().trim();\n let options = this.props.data.filter(\n ({ value, label }) => {\n if (searchString.length == 0) {\n return this.state.values.includes(value);\n } else {\n return this.state.values.includes(value) || label.toLowerCase().includes(searchString);\n }\n });\n\n return callback(options.slice(0, LIMIT));\n }\n\n render () {\n const { values } = this.state;\n const { name, className } = this.props;\n\n return (\n <AsyncCreatable\n className={ className }\n name={ name }\n isMulti\n value={ values }\n onChange={ this.onChange }\n joinValues={ false }\n loadOptions={ this.getOptions }\n defaultOptions\n />\n );\n }\n}\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport DayPickerInput from 'react-day-picker/DayPickerInput';\nimport _ from 'lodash';\nimport ScoutSelect from '../scout/select';\nimport dayjs from 'dayjs';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport { DateUtils } from 'react-day-picker';\n\ndayjs.extend(customParseFormat);\n\nconst FilteringOptionsTable = ({\n defaultStatuses,\n defaultTags,\n onSubmit,\n onChange,\n data,\n tags,\n canFilterScoutClients\n}) => {\n const [statuses, setStatuses] = useState(data.status || []);\n const [hidden, setHidden] = useState(\n _.compact([data.by_title, data.post_code1, data.post_code2, data.date1, data.date2]).length ===\n 0\n );\n const [componentTags, setTags] = useState(data.tags || []);\n\n const onDropdownChange = (e) => {\n const newStatuses = [...statuses, e.target.value];\n setStatuses(newStatuses);\n onChange({ target: { name: 'status', value: newStatuses } });\n };\n\n const onRemoveClick = (status) => {\n const newStatuses = _.xor(statuses, [status]);\n setStatuses(newStatuses);\n onChange({ target: { name: 'status', value: newStatuses } });\n };\n\n const handleToggle = () => {\n setHidden(!hidden);\n };\n\n const isDisabled = (status) => {\n return _.indexOf(statuses, status) > -1;\n };\n\n const onTagsChange = (newTags) => {\n const updatedTags = [...newTags];\n setTags(updatedTags);\n onChange({ target: { name: 'tags', value: updatedTags } });\n };\n\n const renderDropdown = () => {\n return (\n <div className=\"input\">\n <select name=\"status\" onChange={onDropdownChange}>\n {defaultStatuses.map((status) => (\n <option\n key={status}\n value={status}\n disabled={isDisabled(status)}\n onClick={onDropdownChange}\n >\n {status}\n </option>\n ))}\n </select>\n {statuses.map((status, key) => (\n <div key={key}>\n {status}\n <a href=\"#\" onClick={() => onRemoveClick(status)}>\n X\n </a>\n </div>\n ))}\n </div>\n );\n };\n\n const onDate1Change = (day, modifiers, dayPickerInput) => {\n const inputDay = dayPickerInput.getInput().value;\n if (day !== undefined) {\n let dayYear = day.getFullYear().toString();\n if (dayYear.length > 3) {\n onChange({ target: { name: 'date1', value: dayjs(day).format(FORMAT) } });\n }\n } else if (inputDay !== '') {\n onChange({ target: { name: 'date1', value: inputDay } });\n } else {\n onChange({ target: { name: 'date1', value: '' } });\n }\n };\n\n const onDate2Change = (day, modifiers, dayPickerInput) => {\n const inputDay = dayPickerInput.getInput().value;\n if (day !== undefined) {\n let dayYear = day.getFullYear().toString();\n if (dayYear.length > 3) {\n onChange({ target: { name: 'date2', value: dayjs(day).format(FORMAT) } });\n }\n } else if (inputDay !== '') {\n onChange({ target: { name: 'date2', value: inputDay } });\n } else {\n onChange({ target: { name: 'date2', value: '' } });\n }\n };\n\n const { by_title, post_code1, post_code2, date1, date2 } = data;\n\n function parseDate(str, format, locale) {\n const parsed = dayjs(str, format, locale);\n if (DateUtils.isDate(parsed)) {\n return parsed;\n }\n return undefined;\n }\n\n function formatDate(date, format, locale) {\n return dayjs(date, format, locale);\n }\n\n const FORMAT = 'DD/MM/YYYY';\n\n return (\n <div className=\"filtering-options\">\n <div id=\"titlebar\" className=\"page-title\" onClick={handleToggle}>\n <h1 className={hidden ? 'inactive' : 'active'}>Filtering Options</h1>\n </div>\n\n <div className={hidden ? 'hidden' : 'search-welcome'}>\n <div className=\"item\">\n <label>\n <input\n type=\"checkbox\"\n name=\"by_title\"\n onChange={onChange}\n defaultChecked={!!by_title}\n />{' '}\n Search By Title\n </label>\n </div>\n\n <div className=\"item\">\n <div className=\"title\">Post code:</div>\n <div className=\"input\">\n <input type=\"text\" name=\"post_code1\" onChange={onChange} value={post_code1} />\n — \n <input type=\"text\" name=\"post_code2\" onChange={onChange} value={post_code2} />\n </div>\n </div>\n\n <div className=\"item\">\n <div className=\"title\">Status:</div>\n {renderDropdown()}\n </div>\n\n <div className=\"item\">\n <div className=\"title\">Date:</div>\n <div className=\"input\">\n <DayPickerInput\n name=\"date1\"\n placeholder=\"DD/MM/YYYY\"\n value={date1}\n formatDate={formatDate}\n parseDate={parseDate}\n format={FORMAT}\n onDayChange={onDate1Change}\n />\n — \n <DayPickerInput\n name=\"date2\"\n placeholder=\"DD/MM/YYYY\"\n value={date2}\n formatDate={formatDate}\n parseDate={parseDate}\n format={FORMAT}\n onDayChange={onDate2Change}\n />\n </div>\n </div>\n\n {defaultTags && (\n <div className=\"item\">\n <div className=\"title\">Tags:</div>\n <ScoutSelect\n name=\"tags\"\n values={defaultTags}\n onChange={onTagsChange}\n data={tags}\n multi={true}\n />\n </div>\n )}\n\n <div className=\"buttons\" style={{ width: '18%' }}>\n <input\n type=\"submit\"\n value=\"Apply\"\n className=\"apply-button\"\n style={{ width: '100%' }}\n onClick={onSubmit}\n />\n </div>\n </div>\n </div>\n );\n};\n\nFilteringOptionsTable.propTypes = {\n defaultStatuses: PropTypes.array,\n defaultTags: PropTypes.array,\n onSubmit: PropTypes.func,\n onChange: PropTypes.func,\n data: PropTypes.object,\n tags: PropTypes.array,\n canFilterScoutClients: PropTypes.bool\n};\nexport default FilteringOptionsTable;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SearchResultsHeaderRow from './header_row';\n\nexport default class SearchResultsHeader extends React.Component {\n static propTypes = {\n onSorting: PropTypes.func\n };\n\n render() {\n return (\n <div className=\"header\">\n <div className=\"sorting row\">\n {SearchResultsHeader.rows.map((row, key) => (\n <SearchResultsHeaderRow row={row} key={key} onSorting={this.props.onSorting} />\n ))}\n </div>\n </div>\n );\n }\n}\n\nSearchResultsHeader.rows = [\n { id: 'id', name: 'ID' },\n { id: 'candidate', name: 'Candidate' },\n { id: 'reference', name: 'Reference' },\n { id: 'job', name: 'Job' },\n { id: 'post_code', name: 'Postcode' },\n { id: 'location', name: 'Location' },\n { id: 'created_at', name: 'Created At' },\n { id: 'rating', name: 'Rating' },\n { id: 'status', name: 'Status' }\n];\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport default class SearchResultsHeaderRow extends React.Component {\n static propTypes = {\n row: PropTypes.object,\n onSorting: PropTypes.func\n };\n\n isSortingAsc() {\n return this.context.sorting === this.props.row.id;\n }\n\n isSortingDesc() {\n return this.context.sorting === `-${this.props.row.id}`;\n }\n\n className() {\n const defaultClassName = `head-cell ${this.props.row.id}`;\n if (this.isSortingAsc()) {\n return `sorting-asc ${defaultClassName}`;\n }\n if (this.isSortingDesc()) {\n return `sorting-desc ${defaultClassName}`;\n }\n return defaultClassName;\n }\n\n render() {\n const { row } = this.props;\n return (\n <div className={this.className()}>\n <div className=\"title\" onClick={() => this.props.onSorting(row.id)}>\n {row.name}\n </div>\n </div>\n );\n }\n}\n\nSearchResultsHeaderRow.contextTypes = {\n sorting: PropTypes.string\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\n\nexport default class SearchResultsItem extends React.Component {\n\n static propTypes = {\n item: PropTypes.object\n }\n\n render() {\n const { item } = this.props;\n\n return(\n <div className='row'>\n <div className='body-cell'>\n <a href={ item.url }>{ item.id }</a>\n </div>\n <div className='body-cell'>\n <a href={ item.url }> { item.candidate }</a>\n </div>\n <div className='body-cell'>{ item.reference }</div>\n <div className='body-cell'>{ item.job }</div>\n <div className='body-cell'>{ item.post_code }</div>\n <div className='body-cell'>{ item.location }</div>\n <div className='body-cell'>{ moment(item.created_at[0]).format('DD/MM/YYYY') }</div>\n <div className='body-cell'>{ item.rating }</div>\n <div className='body-cell'>{ item.status }</div>\n </div>\n );\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class SearchResultsPagination extends React.Component {\n static propTypes = {\n pagination: PropTypes.object,\n onClick: PropTypes.func\n }\n\n isEmpty() {\n const { pagination } = this.props;\n return pagination.pages && pagination.pages.length == 1\n }\n\n renderPreviousPage() {\n const { pagination } = this.props;\n\n if (!pagination.previous_page && this.isEmpty()) { return null }\n\n if (pagination.previous_page) {\n return this.renderActiveLink(pagination.previous_page, '↠Previous', 'previous_page');\n } else {\n return(<span className='previous_page disabled'>↠Previous</span>)\n }\n }\n\n renderNextPage() {\n const { pagination } = this.props;\n\n if (!pagination.next_page && this.isEmpty()) {\n return null\n }\n\n if (pagination.next_page) {\n return this.renderActiveLink(pagination.next_page, 'Next →', 'next_page')\n } else {\n return (<span className='next_page disabled'>Next →</span>)\n }\n\n }\n\n renderActiveLink(page, title, classNames = '') {\n return(<a key={ title } className={ classNames } href={ `#page=${page.title}` } onClick={ () => { this.props.onClick(page.url) }}>{ title }</a>);\n }\n\n isNothingToRender() {\n return this.props.pagination.pages.length === 1 && this.isEmpty()\n }\n\n renderFirstPage() {\n const { pagination } = this.props;\n\n if (this.isNothingToRender()) { return null }\n\n const firstPage = pagination.pages[0];\n\n if (pagination.previous_page) {\n return this.renderActiveLink(firstPage, 'First', 'next_page')\n } else {\n return (<span className='next_page disabled'>First</span>);\n }\n }\n\n renderLastPage() {\n const { pagination } = this.props;\n\n if (this.isNothingToRender()) { return null }\n\n const lastPage = pagination.pages.slice(-1)[0];\n\n if (pagination.next_page) {\n return this.renderActiveLink(lastPage, 'Last', 'next_page');\n } else {\n return (<span className='next_page disabled'>Last</span>);\n }\n }\n\n renderPages() {\n const { pagination, onClick } = this.props;\n const paginationSize = 6;\n\n const currentPage = pagination.pages.find(({ current }) => current);\n const previousPages = (currentPage.title >= paginationSize) ? currentPage.title - paginationSize : 0;\n const nextPages = currentPage.title + paginationSize - 1;\n\n if (!pagination.pages || this.isEmpty()) return null;\n\n return pagination.pages.slice(previousPages, nextPages).map((item, key) =>\n item.current\n ? <em key={ item.title } className='current'>{item.title}</em>\n : this.renderActiveLink(item, item.title)\n );\n }\n\n render() {\n return (\n <div className='pagination'>\n { this.renderFirstPage() }\n { this.renderPreviousPage() }\n { this.renderPages() }\n { this.renderNextPage() }\n { this.renderLastPage() }\n </div>\n );\n }\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class SearchBox extends React.Component {\n static propTypes = {\n data: PropTypes.object\n };\n\n render() {\n const { data } = this.props;\n\n return (\n <div className=\"search-welcome\">\n <form action=\"/admin/search/advanced/results\" acceptCharset=\"UTF-8\" method=\"get\">\n <input name=\"utf8\" type=\"hidden\" value=\"✓\" />\n <input\n type=\"search\"\n name=\"query\"\n defaultValue={data.query}\n id=\"query\"\n className=\"search\"\n autoFocus=\"autofocus\"\n />\n {data.by_title && <input type=\"hidden\" name=\"by_title\" value={data.by_title} />}\n {data.post_code1 && <input type=\"hidden\" name=\"post_code1\" value={data.post_code1} />}\n {data.post_code2 && <input type=\"hidden\" name=\"post_code2\" value={data.post_code2} />}\n {data.date1 && <input type=\"hidden\" name=\"date1\" value={data.date1} />}\n {data.date2 && <input type=\"hidden\" name=\"date2\" value={data.date2} />}\n {data.status &&\n data.status.map((status, key) => (\n <input type=\"hidden\" name=\"status[]\" value={status} key={key} />\n ))}\n <input type=\"submit\" name=\"commit\" value=\"Search Now\" className=\"search\" />\n </form>\n </div>\n );\n }\n}\n","import React, { Component, createContext } from 'react';\nimport PropTypes from 'prop-types';\nimport ReactLoading from 'react-loading';\nimport SearchResultsTableWithSpinner from './table_with_spinner.jsx';\nimport FilteringOptionsTable from './filtering_options_table';\nimport SearchBox from './search_box';\nimport SearchResultsPagination from './pagination.jsx';\nimport SearchResultsItem from './item.jsx';\nimport SearchResultsHeader from './header.jsx';\n\nconst SortingContext = createContext('');\n\nexport default class SearchResultsTable extends Component {\n constructor(props) {\n super(props);\n const results = { results: [], pagination: {} };\n const { query } = this.props;\n\n this.state = {\n results,\n query,\n pagination: false,\n isSearchSave: false,\n loading: true,\n by_title: false\n };\n }\n\n componentDidMount = () => {\n this.loadResults();\n document.getElementById('query').value = this.props.query.query;\n };\n\n loadResults = () => {\n this.setState({ pagination: true });\n const { token, searchEndpoint } = this.props;\n\n const params = Object.entries(this.state.query).reduce((acc, [key, value]) => {\n if (value !== null) {\n acc[key] = value;\n }\n return acc;\n }, {});\n params['token'] = token;\n\n const url_with_params = `${searchEndpoint}?${$.param(params)}`;\n\n fetch(url_with_params)\n .then((response) => response.json())\n .then((data) =>\n this.setState({\n results: data,\n query: this.state.query,\n loading: false,\n pagination: false,\n by_title: false\n })\n );\n };\n\n handleSorting = (sorting) => {\n let { query } = this.state;\n\n if (query.sorting === sorting) {\n query.sorting = `-${sorting}`;\n } else {\n query.sorting = sorting;\n }\n\n this.setState({ query }, this.loadResults);\n };\n\n handleSaveSearch = () => {\n const { query } = this.state;\n const $searchName = document.getElementById('#search_name');\n const token = document.querySelector('meta[name=\"csrf-token\"]').getAttribute('content');\n const searchName = $searchName ? $searchName.value : query.query.substring(0, 255);\n\n fetch(this.props.savedSearchEndpoint, {\n method: 'POST',\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n 'X-CSRF-Token': token,\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n saved_search: { name: searchName, params: query }\n }),\n credentials: 'same-origin'\n })\n .then((response) => {\n if (!response.ok) {\n throw response;\n }\n return response;\n })\n .then((response) => {\n this.setState({ isSearchSaved: true });\n })\n .catch((response) => {\n response.json().then((body) => {\n alert(Object.values(body.error).join(', '));\n });\n });\n };\n\n handlePagination = (url) => {\n let url_with_params = `${url}&token=${this.props.token}`;\n this.setState({ pagination: true });\n\n fetch(url_with_params)\n .then((response) => response.json())\n .then((results) => {\n this.setState({ results, pagination: false });\n });\n };\n\n handleFilterOnChange = (e) => {\n const { query } = this.state;\n query[e.target.name] = e.target.type === 'checkbox' ? e.target.checked : e.target.value;\n this.setState({ query });\n };\n\n handleFilterOnSubmit = () => this.loadResults();\n\n renderHeader() {\n const { isSearchSaved } = this.state;\n\n return (\n <div id=\"titlebar\" className=\"page-title search-toolbar\">\n <div className=\"west\">\n <div className=\"east\">\n <div className=\"search-title\">Found Items: {this.state.results.pagination.total}</div>\n <div className=\"search-header\">\n {isSearchSaved && <button className=\"save-search-disabled\">Save This Search</button>}\n {!isSearchSaved && <input type=\"text\" id=\"search_name\" placeholder=\"Search name\" />}\n {!isSearchSaved && (\n <button className=\"save-search\" onClick={this.handleSaveSearch}>\n Save This Search\n </button>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n hasResults = () => {\n if (this.state.results.error !== undefined) {\n return false;\n } else {\n return this.state.results.results.length > 0;\n }\n };\n\n renderResultsWithSpinner = () => {\n return (\n <div>\n <div className=\"results-table\">\n <SearchResultsHeader onSorting={this.handleSorting} />\n <SearchResultsTableWithSpinner\n items={this.state.results.results}\n color={this.props.color}\n />\n </div>\n\n <SearchResultsPagination\n pagination={this.state.results.pagination}\n onClick={this.handlePagination}\n />\n </div>\n );\n };\n\n renderResults = () => {\n return (\n <div>\n <div className=\"results-table\">\n <SortingContext.Provider value={{ sorting: this.state.query.sorting }}>\n {<SearchResultsHeader onSorting={this.handleSorting} />}\n </SortingContext.Provider>\n <div className=\"body\">\n {this.state.results.results.map((item, key) => {\n return <SearchResultsItem key={key} item={item.fields} />;\n })}\n </div>\n </div>\n <SearchResultsPagination\n pagination={this.state.results.pagination}\n onClick={this.handlePagination}\n />\n </div>\n );\n };\n\n renderError = () =>\n this.state.results.error !== undefined\n ? 'An error has happened during search. Contact Support Team.'\n : '';\n\n renderNoResults = () =>\n this.state.loading ? (\n <div className=\"loading-results\">\n <ReactLoading type=\"spin\" color={this.props.color} />\n </div>\n ) : (\n <p>No results found!</p>\n );\n\n defaultTags = (tags) => {\n const result = [];\n tags.forEach((skill) => result.push({ value: skill, label: skill }));\n return result;\n };\n\n render = () => {\n return (\n <div className=\"content\">\n <SearchBox data={this.state.query} />\n <FilteringOptionsTable\n defaultStatuses={this.props.statuses}\n defaultTags={this.defaultTags(this.props.query.tags)}\n tags={this.defaultTags(this.props.tags)}\n canFilterScoutClients={this.props.canFilterScoutClients}\n onSubmit={this.handleFilterOnSubmit}\n onChange={this.handleFilterOnChange}\n data={this.state.query}\n />\n\n {this.renderError()}\n {this.hasResults() && this.renderHeader()}\n {this.hasResults() && this.state.pagination && this.renderResultsWithSpinner()}\n {this.hasResults() && !this.state.pagination && this.renderResults()}\n {!this.hasResults() && this.renderNoResults()}\n </div>\n );\n };\n}\n\nSearchResultsTable.propTypes = {\n query: PropTypes.object,\n token: PropTypes.string,\n searchEndpoint: PropTypes.string,\n savedSearchEndpoint: PropTypes.string,\n color: PropTypes.string,\n statuses: PropTypes.array,\n tags: PropTypes.array,\n canFilterScoutClients: PropTypes.bool\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactLoading from 'react-loading';\n\nexport default class SearchResultsTableWithSpinner extends React.Component {\n static propTypes = {\n items: PropTypes.array,\n color: PropTypes.string\n }\n\n render() {\n return (\n <div className='body'>\n { this.props.items.map((item, key) => {\n return(\n <div className='row' key={ key }>\n <div className='body-cell'>\n </div>\n <div className='body-cell'>\n </div>\n <div className='body-cell'>\n </div>\n <div className='body-cell'>\n <div className=\"loading\">\n <ReactLoading type='cylon' color={ this.props.color } height='25px' width='25px'/>\n </div>\n </div>\n <div className='body-cell'>\n </div>\n <div className='body-cell'>\n </div>\n <div className='body-cell'>\n\n </div>\n <div className='body-cell'>\n\n </div>\n <div className='body-cell'>\n\n </div>\n </div>\n );\n })\n }\n </div>);\n }\n}\n","// eslint-disable-next-line react/no-deprecated\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport className from 'classnames';\n\nexport class AccordionItem extends Component {\n static propTypes = {\n title: PropTypes.string.isRequired,\n children: PropTypes.object.isRequired,\n };\n\n state = {\n isActive: false,\n };\n\n onClick = () => {\n this.setState({\n isActive: !this.state.isActive,\n });\n };\n\n render() {\n const { title } = this.props;\n const { isActive } = this.state;\n const classes = className({\n \"accordion__item\": true,\n \"accordion__item--active\": isActive,\n });\n\n return <div className={classes}>\n <h2 onClick={this.onClick} className='title'> {title} </h2>\n <div className='accordion__body'>\n {isActive && this.props.children}\n </div>\n </div>\n }\n}\n\nexport class Accordion extends Component {\n render() {\n return <div className='accordion'>\n { this.props.children }\n </div>\n }\n}\n\nAccordion.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.array\n ])\n};\n","export const adEditorCancelButton = {\n color: '#E37D7A',\n fontSize: 16,\n fontWeight: '600',\n textDecoration: 'underline',\n '&:hover': {\n cursor: 'pointer',\n color: '#E37D7A'\n }\n};\n","var __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useEffect, useState } from \"react\";\nimport { Accordion, AccordionSummary, AccordionDetails, Typography, Box, Chip, CircularProgress } from \"@mui/material\";\nimport ExpandMoreIcon from \"@mui/icons-material/ExpandMore\";\nimport Api from \"../../lib/Api\";\nimport { classes } from \"./styles\";\nimport dayjs from \"dayjs\";\nimport isToday from \"dayjs/plugin/isToday\";\nimport LocalizedFormat from \"dayjs/plugin/localizedFormat\";\nimport relativeTime from \"dayjs/plugin/relativeTime\";\ndayjs.extend(relativeTime);\ndayjs.extend(LocalizedFormat);\ndayjs.extend(isToday);\nfunction ActivityFeed() {\n const [activityList, setList] = useState([]);\n const [loading, setLoading] = useState(false);\n const [finished, setFinished] = useState(false);\n function getActivities(prevId) {\n return __async(this, null, function* () {\n setLoading(true);\n const response = yield Api.getActivities(prevId);\n if (response[0]) {\n setList([...activityList, ...response]);\n } else {\n setFinished(true);\n }\n setLoading(false);\n });\n }\n function checkScroll(evt) {\n if (loading || finished) return;\n if (evt.target.scrollTop + evt.target.clientHeight < evt.target.scrollHeight - 50) return;\n const lastDate = activityList[activityList.length - 1];\n const lastActivity = lastDate.activities[lastDate.activities.length - 1];\n getActivities(lastActivity.id);\n }\n useEffect(() => {\n getActivities();\n }, []);\n if (activityList[0]) activityList[0].isToday = dayjs(activityList[0].date).isToday();\n return /* @__PURE__ */ React.createElement(Box, { mb: 2 }, /* @__PURE__ */ React.createElement(Accordion, { defaultExpanded: true, sx: classes.accordian }, /* @__PURE__ */ React.createElement(\n AccordionSummary,\n {\n sx: classes.accordianButton,\n expandIcon: /* @__PURE__ */ React.createElement(ExpandMoreIcon, { sx: { color: \"#ffffff\" } })\n },\n /* @__PURE__ */ React.createElement(Typography, { sx: classes.accordianTitle }, \"Activity Feed\")\n ), /* @__PURE__ */ React.createElement(\n AccordionDetails,\n {\n sx: classes.activitiesContainer,\n onScroll: checkScroll\n },\n activityList.map(({ date, activities, isToday: isToday2 }) => /* @__PURE__ */ React.createElement(Box, { py: 2, key: date, width: \"100%\" }, /* @__PURE__ */ React.createElement(Box, { sx: classes.dateContainer }, /* @__PURE__ */ React.createElement(\n Chip,\n {\n size: \"small\",\n label: isToday2 ? \"Today\" : dayjs(date).format(\"LL\"),\n sx: classes.chip\n }\n )), activities.map(({ id, timestamp, actor, activity_html }) => /* @__PURE__ */ React.createElement(Box, { key: id, py: 1 }, /* @__PURE__ */ React.createElement(Typography, { sx: classes.timeStamp }, isToday2 ? dayjs().to(dayjs(timestamp)) : dayjs(timestamp).format(\"LT\")), /* @__PURE__ */ React.createElement(Typography, { sx: classes.actor }, actor), /* @__PURE__ */ React.createElement(\n Typography,\n {\n dangerouslySetInnerHTML: { __html: activity_html },\n sx: classes.activity\n }\n ))))),\n loading && /* @__PURE__ */ React.createElement(Box, { display: \"flex\", justifyContent: \"center\" }, /* @__PURE__ */ React.createElement(CircularProgress, null))\n )));\n}\nexport default ActivityFeed;\n","import ActivityFeed from \"./ActivityFeed\";\nexport default ActivityFeed;\n","import { theme } from \"../ThemeContext/ThemeObject\";\nexport const classes = {\n dateContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n justifyContent: \"center\",\n position: \"relative\",\n width: \"100%\",\n \"&:before\": {\n content: '\"\"',\n position: \"absolute\",\n left: 0,\n right: 0,\n borderBottom: \"1px solid\",\n borderBottomColor: \"rgba(0, 0, 0, 0.12)\",\n marginLeft: theme.spacing(-2),\n marginRight: theme.spacing(-2)\n }\n },\n chip: {\n zIndex: 2,\n color: theme.palette.common.white,\n backgroundColor: \"#616161\",\n fontFamily: \"Source Sans Pro\"\n },\n actor: {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n margin: `0 ${theme.spacing(0.5)}`,\n fontSize: \"0.875rem\",\n lineHeight: 1.43\n },\n activity: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"0.875rem\",\n fontWeight: 400,\n lineHeight: 1.43,\n color: \"rgba(0, 0, 0, 0.87)\",\n \"& a\": {\n color: \"#2a7572\",\n textDecoration: \"none\"\n }\n },\n timeStamp: {\n fontSize: \"0.875rem\",\n fontFamily: \"Source Sans Pro\",\n fontWeight: 500,\n lineHeight: 1.57,\n color: \"rgba(0, 0, 0, 0.6)\"\n },\n accordian: {\n \"& .MuiAccordionSummary-root.Mui-expanded\": {\n minHeight: \"40px\"\n }\n },\n activitiesContainer: {\n maxHeight: \"400px\",\n overflow: \"auto\",\n flexDirection: \"column\"\n },\n accordianButton: {\n borderRadius: 0,\n backgroundColor: theme.palette.primary.main,\n minHeight: \"40px\",\n \"& .MuiAccordionSummary-content\": {\n margin: \"0 !important\"\n }\n },\n accordianTitle: {\n fontSize: \"0.88rem\",\n fontFamily: \"Source Sans Pro\",\n fontWeight: 700,\n lineHeight: 1.75,\n textTransform: \"none\",\n color: theme.palette.common.white\n }\n};\n","import { makeStyles } from \"@material-ui/core/styles\";\nexport default makeStyles(() => ({\n root: {\n position: \"relative\"\n }\n}));\n","var __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useState, useEffect, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { withScoutTheme } from \"../../ThemeContext/ThemeContext\";\nimport { Step1, Step2, Step3 } from \"./Steps\";\nimport { Button, Dialog, Snackbar, CircularProgress } from \"@material-ui/core\";\nimport useStyles from \"./useStyles\";\nimport sharedStyles from \"../AdList/useStyles\";\nimport axios from \"axios\";\nimport draftToHtml from \"draftjs-to-html\";\nimport { convertToRaw } from \"draft-js\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport moment from \"moment\";\nimport StepperComponent from \"../../../components/NewUI/Components/CustomUIElements/StepperComponent\";\nimport StepperLeftButton from \"../../../components/NewUI/Components/Buttons/StepperLeftButton\";\nimport StepperRightButton from \"../../../components/NewUI/Components/Buttons/StepperRightButton\";\nimport { handleNext } from \"../../../components/NewUI/Components/Multiposter/handleNext\";\nimport { handleDraftValue } from \"../../../components/NewUI/Components/Multiposter/handleDraftValue\";\nconst steps = [\"Classify Job\", \"Job Details\", \"Preview Ad\"];\nconst salaryTypes = [\n [\"Range\", \"Range\"],\n [\"Exact Rate\", \"ExactRate\"]\n];\nfunction AdEditor({ jobAdParams }) {\n const [saving, setSaving] = useState(false);\n const [savingDraft, setSavingDraft] = useState(false);\n const [isSnackOpen, setIsSnackOpen] = useState(false);\n const [snackMessage, setSnackMessage] = useState(\"\");\n const [isSuccessDialogOpen, setIsSuccessDialogOpen] = useState(false);\n const [activeStep, setActiveStep] = useState(0);\n const [isExitModalOpen, setIsExitModalOpen] = useState(false);\n const [answers, setAnswers] = useState(updateAnswers(jobAdParams));\n const [activeError, setActiveError] = useState(null);\n const classes = useStyles();\n const sharedClasses = sharedStyles();\n function updateAnswers(params) {\n return {\n companyName: params.company_name || \"\",\n industry: params.industry_options.find((param) => param[1] === params.listing_classification) || \"\",\n subIndustry: params.listing_classification ? params.sub_industry_options[params.listing_classification].find(\n (param) => param[1] === params.listing_sub_classification\n ) : \"\",\n jobTitle: params.title || \"\",\n reportToWork: params.report_to ? \"true\" : \"false\",\n address: params.address || \"\",\n city: params.city || \"\",\n state: params.state || \"\",\n country: params.country || \"\",\n language: params.language || \"\",\n remoteWork: params.remote || params.remote_type_options[0][0],\n hires: params.number_of_hires || 1,\n hiring: params.always_hiring === null ? false : params.always_hiring,\n employmentType: params.work_type_options.filter((param) => params.work_type.includes(param[1])).map((param) => param[1]) || [],\n schedule: params.schedules_options.filter((param) => params.schedules.includes(param[1])).map((param) => param[1]) || [],\n isStartDate: params.start_date ? true : false,\n startDate: params.start_date ? moment(params.start_date).format(\"LL\") : \"\",\n salaryTypes,\n selectedSalaryType: salaryTypes.find((param) => param[1] === params.salary_type) || salaryTypes[0],\n rangeTo: params.salary_max ? params.salary_max : \"\",\n rangeFrom: params.salary_min ? params.salary_min : \"\",\n rangeUnit: params.payment_frequencies_options.find((param) => param[1] === params.salary_frequency) || params.payment_frequencies_options[0],\n additionalPay: params.additional_payment_options.filter((param) => params.additional_payments.includes(param[1])).map((param) => param[1]) || [],\n benefits: params.salary_benefit_options.filter((param) => params.salary_benefits.includes(param[1])).map((param) => param[1]) || [],\n submitResume: params.require_resume || \"required\",\n isApplicationDeadline: params.application_deadline ? true : false,\n applicationDeadline: params.application_deadline ? moment(params.application_deadline).format(\"LL\") : \"\",\n startConversation: params.applicant_starts_conversation,\n covidPrecautions: params.covid_precautions || \"\",\n jobReference: params.id || \"\",\n askQualifications: params.applicant_qualifications,\n description: handleDraftValue(params.description) || \"\",\n ad_preview: params.ad_preview || \"\"\n };\n }\n function submit(type) {\n return __async(this, null, function* () {\n try {\n type === \"draft\" ? setSavingDraft(true) : setSaving(true);\n const token = document.querySelector('meta[name=\"csrf-token\"]').content;\n const { data } = yield axios.put(`/admin/job_ads/${jobAdParams.id}/indeed_ads/builder`, {\n headers: { \"Content-Type\": \"application/json\" },\n authenticity_token: token,\n page: activeStep + 1,\n job_ad: {\n additional_payments: answers.additionalPay || null,\n listing_location: answers.address || null,\n always_hiring: answers.hiring || false,\n applicant_qualifications: answers.askQualifications || false,\n applicant_starts_conversation: answers.startConversation || false,\n application_deadline: moment(answers.applicationDeadline).format() || null,\n city: answers.city || null,\n company_name: answers.companyName || null,\n country: answers.country || null,\n covid_precautions: answers.covidPrecautions || null,\n ad_details: draftToHtml(convertToRaw(answers.description.getCurrentContent())) || null,\n language: answers.language || null,\n listing_classification: answers.industry && answers.industry[1] || null,\n listing_sub_classification: answers.subIndustry && answers.subIndustry[1] || null,\n work_type: answers.employmentType || null,\n number_of_hires: answers.hires || null,\n remote: answers.remoteWork || null,\n report_to: answers.reportToWork || null,\n require_resume: answers.submitResume || null,\n salary_benefits: answers.benefits || null,\n salary_frequency: answers.rangeUnit && answers.rangeUnit[0] || null,\n salary_max: parseFloat(answers.rangeTo) || null,\n salary_min: parseFloat(answers.rangeFrom) || null,\n salary_type: answers.selectedSalaryType && answers.selectedSalaryType[1] || null,\n schedules: answers.schedule || null,\n start_date: moment(answers.startDate).format() || null,\n state: answers.state || null,\n title: answers.jobTitle || null,\n approved: type === \"submit\" ? true : false\n }\n });\n if (type === \"draft\") {\n handleSnack(\"Draft saved\");\n setIsExitModalOpen(false);\n window.history.back();\n } else if (type === \"submit\") {\n setIsSuccessDialogOpen(true);\n } else if (type === \"next\") {\n setAnswers(updateAnswers(data));\n setActiveStep(activeStep + 1);\n }\n } catch (e) {\n if (type === \"draft\") {\n handleSnack(\"Unable to save draft\");\n } else if (type === \"submit\") {\n handleSnack(\"Unable to post to Indeed. Please check required fields and try again.\");\n } else if (type === \"next\") {\n setActiveStep(activeStep + 1);\n }\n } finally {\n setSaving(false);\n setSavingDraft(false);\n }\n });\n }\n function handleSnack(message) {\n setIsSnackOpen(true);\n setSnackMessage(message);\n }\n const requiredRefs = {\n companyName: useRef(null),\n industry: useRef(null),\n jobTitle: useRef(null),\n address: useRef(null),\n hires: useRef(null),\n employmentType: useRef(null),\n schedule: useRef(null),\n startDate: useRef(null),\n salary: useRef(null),\n description: useRef(null),\n jobReference: useRef(null)\n };\n const handleNextButton = (type) => {\n handleNext(type, checkErrors, requiredRefs, setActiveError, submit);\n };\n function checkErrors() {\n const error = Object.keys(requiredRefs).find((ref) => {\n if (activeStep === 0) {\n if ([\"companyName\", \"industry\", \"jobTitle\"].includes(ref)) {\n return !answers[ref] && ref;\n } else if (ref === \"address\") {\n return !answers.address || !answers.city || !answers.state && ref;\n } else if (ref === \"hires\") {\n return !answers.hiring && !answers.hires && ref;\n }\n } else if (activeStep === 1) {\n if ([\"schedule\", \"employmentType\"].includes(ref)) {\n return answers[ref] && answers[ref].length <= 0 && ref;\n } else if (ref === \"startDate\") {\n return answers.isStartDate && !answers.startDate && ref;\n } else if (ref === \"salary\") {\n return answers.rangeTo < answers.rangeFrom && ref;\n } else if (ref === \"description\") {\n return answers.description.getCurrentContent().getPlainText(\"\").length === 0 && ref;\n } else if (ref === \"jobReference\") {\n return !answers.jobReference && ref;\n }\n }\n });\n return error;\n }\n useEffect(() => {\n setActiveError(null);\n }, [answers]);\n useEffect(() => {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n }, [activeStep]);\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.containerOuter }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.container }, /* @__PURE__ */ React.createElement(StepperComponent, { activeStep, steps, classes }), activeStep === 0 && /* @__PURE__ */ React.createElement(\n Step1,\n {\n jobAdParams,\n answers,\n setAnswers,\n requiredRefs,\n activeError\n }\n ), activeStep === 1 && /* @__PURE__ */ React.createElement(\n Step2,\n {\n jobAdParams,\n answers,\n setAnswers,\n handleDraftValue,\n requiredRefs,\n activeError\n }\n ), activeStep === 2 && /* @__PURE__ */ React.createElement(\n Step3,\n {\n setActiveStep,\n jobAdParams,\n answers,\n setAnswers\n }\n ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttonContainer }, /* @__PURE__ */ React.createElement(\"a\", { className: sharedClasses.buttonGreenLight, onClick: () => setIsExitModalOpen(true) }, \"Save and exit\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttons }, /* @__PURE__ */ React.createElement(\n StepperLeftButton,\n {\n activeStep,\n onClick: () => setActiveStep(activeStep - 1),\n classes: sharedClasses\n }\n ), /* @__PURE__ */ React.createElement(\n StepperRightButton,\n {\n activeStep,\n steps,\n isSaving: saving,\n onClick: () => handleNextButton(activeStep + 1 === steps.length ? \"submit\" : \"next\"),\n classes: sharedClasses\n }\n )))), /* @__PURE__ */ React.createElement(\n Dialog,\n {\n open: isExitModalOpen,\n onClose: () => setIsExitModalOpen(false),\n classes: { paper: classes.dialog }\n },\n /* @__PURE__ */ React.createElement(\"h4\", null, \"Are you sure?\"),\n /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer }, /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: sharedClasses.buttonSecondaryLight,\n onClick: () => setIsExitModalOpen(false)\n },\n \"Cancel\"\n ), /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: sharedClasses.buttonSecondary,\n onClick: () => submit(\"draft\"),\n style: { minWidth: 130 }\n },\n savingDraft ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : \"Save and exit\"\n ))\n ), /* @__PURE__ */ React.createElement(\n Dialog,\n {\n open: isSuccessDialogOpen,\n onClose: () => window.history.back(),\n classes: { paper: classes.successDialog }\n },\n /* @__PURE__ */ React.createElement(\"div\", { className: classes.successCheck }, /* @__PURE__ */ React.createElement(CheckCircleIcon, { color: \"primary\", fontSize: \"large\" })),\n /* @__PURE__ */ React.createElement(\"h4\", null, \"Success\"),\n /* @__PURE__ */ React.createElement(\"span\", null, \"Your ad has been posted to Indeed\"),\n /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer, style: { marginTop: 20 } }, /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: sharedClasses.buttonSecondaryLight,\n onClick: () => window.history.back()\n },\n \"Back to ads\"\n ), /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: sharedClasses.buttonSecondary,\n onClick: () => window.location = `/admin/indeed/job_ads/${jobAdParams.id}/sponsored_job/edit/`\n },\n \"Sponsor job\"\n ))\n ), /* @__PURE__ */ React.createElement(Snackbar, { open: isSnackOpen, onClose: () => setIsSnackOpen(false), message: snackMessage }));\n}\nAdEditor.propTypes = {\n jobAdParams: PropTypes.object.isRequired\n};\nexport default withScoutTheme(AdEditor);\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React from \"react\";\nimport {\n Select,\n FormControl,\n FormLabel,\n FormControlLabel,\n Checkbox,\n TextField,\n Radio,\n RadioGroup,\n FormHelperText,\n Grid,\n IconButton,\n MenuItem\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport RemoveIcon from \"@material-ui/icons/Remove\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport { jobAdPropTypes } from \"../../../NewUI/Components/Multiposter/types\";\nimport AddressInput from \"../../../NewUI/Components/CustomUIElements/AddressInput\";\nfunction Step1({ answers, setAnswers, jobAdParams, requiredRefs, activeError }) {\n const [value, setValue] = React.useState({\n description: [answers.address, answers.city, answers.state].filter((cur) => cur).join(\", \")\n });\n const classes = useStyles();\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Let's get started\"), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.companyName,\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Company name for this job\"),\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.companyName,\n className: classes.textField,\n variant: \"outlined\",\n value: answers.companyName,\n onChange: (e) => e.target.value.length <= 52 && setAnswers(__spreadProps(__spreadValues({}, answers), { companyName: e.target.value })),\n InputProps: {\n endAdornment: activeError === requiredRefs.companyName && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n }\n }\n ),\n /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, answers.companyName.length, \"/52\")\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.industry,\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Industry\"),\n /* @__PURE__ */ React.createElement(\n Select,\n {\n classes: { select: classes.input },\n variant: \"outlined\",\n value: answers.industry,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { industry: e.target.value, subIndustry: \"\" })),\n displayEmpty: true,\n renderValue: (value2) => value2 && value2[0] || /* @__PURE__ */ React.createElement(\"span\", { className: classes.placeholder }, \"Select an option\"),\n endAdornment: activeError === requiredRefs.industry && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n },\n jobAdParams.industry_options.map((industry) => /* @__PURE__ */ React.createElement(MenuItem, { key: industry[1], value: industry }, industry[0]))\n )\n ), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, \"Sub-industry\"), /* @__PURE__ */ React.createElement(\n Select,\n {\n disabled: !answers.industry,\n classes: { select: classes.input },\n variant: \"outlined\",\n value: answers.subIndustry,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { subIndustry: e.target.value })),\n displayEmpty: true,\n renderValue: (value2) => value2 ? value2[0] : /* @__PURE__ */ React.createElement(\"span\", { className: classes.placeholder }, \"Select an option\")\n },\n answers.industry && jobAdParams.sub_industry_options[answers.industry[1]].map((subIndustry) => /* @__PURE__ */ React.createElement(MenuItem, { key: subIndustry[1], value: subIndustry }, subIndustry[0]))\n )), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.jobTitle,\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Job title\"),\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.jobTitle,\n className: classes.textField,\n variant: \"outlined\",\n value: answers.jobTitle,\n onChange: (e) => e.target.value.length <= 52 && setAnswers(__spreadProps(__spreadValues({}, answers), { jobTitle: e.target.value })),\n InputProps: {\n endAdornment: activeError === requiredRefs.jobTitle && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n }\n }\n ),\n /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, answers.companyName.length, \"/52\")\n ), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Where will an employee report to work?\"), /* @__PURE__ */ React.createElement(\n RadioGroup,\n {\n value: answers.reportToWork,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { reportToWork: e.target.value }))\n },\n /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"Employees will report to a specific address\",\n value: \"true\",\n control: /* @__PURE__ */ React.createElement(Radio, null)\n }\n ),\n /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"Employees will not report to a specific address\",\n value: \"false\",\n control: /* @__PURE__ */ React.createElement(Radio, null)\n }\n )\n )), /* @__PURE__ */ React.createElement(\n AddressInput,\n {\n requiredRef: requiredRefs.address,\n classes,\n value,\n setValue,\n activeError: activeError === requiredRefs.address,\n answers,\n setAnswers\n }\n ), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.formControl} ${classes.medium} ${classes.greyBox}` }, /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true }, /* @__PURE__ */ React.createElement(Grid, { container: true, alignItems: \"center\" }, /* @__PURE__ */ React.createElement(\"span\", null, \"Country:\"), /* @__PURE__ */ React.createElement(\n Select,\n {\n classes: {\n select: classes.greyInput,\n icon: classes.greyIcon\n },\n value: answers.country,\n renderValue: (value2) => jobAdParams.country_options.find((cur) => cur[1] === value2)[0],\n onChange: (e) => {\n setValue(null);\n setAnswers(__spreadProps(__spreadValues({}, answers), {\n country: e.target.value,\n address: \"\",\n city: \"\",\n state: \"\"\n }));\n },\n IconComponent: EditIcon,\n disableUnderline: true\n },\n jobAdParams.country_options.map((country) => /* @__PURE__ */ React.createElement(MenuItem, { key: country[1], value: country[1] }, country[0]))\n ))), /* @__PURE__ */ React.createElement(FormControl, null, /* @__PURE__ */ React.createElement(Grid, { container: true, alignItems: \"center\" }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job posting will be displayed in:\"), /* @__PURE__ */ React.createElement(\n Select,\n {\n classes: {\n select: classes.greyInput,\n icon: classes.greyIcon\n },\n value: answers.language,\n renderValue: (value2) => jobAdParams.languages_options.find((cur) => cur[1] === value2)[0],\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { language: e.target.value })),\n IconComponent: EditIcon,\n disableUnderline: true\n },\n jobAdParams.languages_options.map((language) => /* @__PURE__ */ React.createElement(MenuItem, { key: language[1], value: language[1] }, language[0]))\n )))), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Can this job be performed remotely, meaning primarily from home? If so, we\\u2019ll add a \\u201CRemote\\u201D tag to your post\"), /* @__PURE__ */ React.createElement(\n RadioGroup,\n {\n value: answers.remoteWork,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { remoteWork: e.target.value }))\n },\n jobAdParams.remote_type_options.map((remote) => /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n key: remote[1],\n label: remote[0],\n value: remote[1],\n control: /* @__PURE__ */ React.createElement(Radio, null)\n }\n ))\n )), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.hires,\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { focused: false, required: true, className: classes.label }, \"How many hires?\"),\n /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"This helps us match you with the right number of applicants.\"),\n /* @__PURE__ */ React.createElement(\n Grid,\n {\n container: true,\n classes: {\n root: `${classes.controlledNumberInput} ${activeError === requiredRefs.hires ? classes.errorOutline : \"\"}`\n }\n },\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n type: \"number\",\n variant: \"outlined\",\n className: `${classes.textField}`,\n value: answers.hires,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { hires: parseInt(e.target.value) || 0 })),\n InputProps: {\n classes: { root: classes.w200 },\n endAdornment: activeError === requiredRefs.hires && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n }\n }\n ),\n /* @__PURE__ */ React.createElement(\n IconButton,\n {\n onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { hires: answers.hires - 1 })),\n disabled: answers.hires <= 0 || answers.hiring\n },\n /* @__PURE__ */ React.createElement(RemoveIcon, null)\n ),\n /* @__PURE__ */ React.createElement(\n IconButton,\n {\n onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { hires: answers.hires + 1 })),\n disabled: answers.hires >= 100 || answers.hiring\n },\n /* @__PURE__ */ React.createElement(AddIcon, null)\n )\n ),\n /* @__PURE__ */ React.createElement(Grid, { container: true, style: { marginTop: 10 } }, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"Always Hiring\",\n control: /* @__PURE__ */ React.createElement(\n Checkbox,\n {\n checked: answers.hiring,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { hiring: !answers.hiring }))\n }\n )\n }\n ))\n ));\n}\nStep1.propTypes = jobAdPropTypes;\nexport default Step1;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React from \"react\";\nimport {\n Select,\n FormGroup,\n FormControl,\n FormLabel,\n FormControlLabel,\n Checkbox,\n TextField,\n Radio,\n RadioGroup,\n FormHelperText,\n Grid,\n MenuItem,\n InputAdornment,\n Box,\n Switch\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport DayPickerInput from \"react-day-picker/DayPickerInput\";\nimport { formatDate } from \"react-day-picker/moment\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport { jobAdPropTypes } from \"../../../NewUI/Components/Multiposter/types\";\nimport TextEditor from \"../../../NewUI/Components/CustomUIElements/TextEditor\";\nfunction Step2({ answers, setAnswers, jobAdParams, requiredRefs, activeError }) {\n const classes = useStyles();\n function handleMultiCheck(value, state, key) {\n state.includes(value) ? setAnswers(__spreadProps(__spreadValues({}, answers), { [key]: state.filter((id) => id !== value) })) : setAnswers(__spreadProps(__spreadValues({}, answers), { [key]: [...answers[key], value] }));\n }\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Job details\"), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium} ${classes.greyBox}`\n },\n /* @__PURE__ */ React.createElement(Grid, { container: true, alignItems: \"center\" }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job title:\"), /* @__PURE__ */ React.createElement(\"div\", null, answers.jobTitle)),\n /* @__PURE__ */ React.createElement(Grid, { container: true, alignItems: \"center\" }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job company name:\"), /* @__PURE__ */ React.createElement(\"div\", null, answers.companyName)),\n /* @__PURE__ */ React.createElement(Grid, { container: true, alignItems: \"center\" }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job location:\"), /* @__PURE__ */ React.createElement(\"div\", null, `${[answers.address, answers.city, answers.state].filter((cur) => cur).join(\", \")}`))\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.employmentType,\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"What type of employment is it?\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.employmentType && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(Grid, { container: true }, jobAdParams.work_type_options.map((type) => /* @__PURE__ */ React.createElement(Grid, { key: type[0], item: true, xs: 6 }, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n disabled: answers.employmentType.length >= 2 && !answers.employmentType.includes(type[1]),\n label: type[0],\n value: type[1],\n control: /* @__PURE__ */ React.createElement(\n Checkbox,\n {\n checked: answers.employmentType.includes(type[1]),\n onChange: (e) => handleMultiCheck(e.target.value, answers.employmentType, \"employmentType\")\n }\n )\n }\n )))))\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.schedule,\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"What is the schedule for this job?\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.schedule && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(Grid, { container: true }, jobAdParams.schedules_options.map((schedule) => /* @__PURE__ */ React.createElement(Grid, { key: schedule[1], item: true, xs: 6 }, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: schedule[0],\n value: schedule[1],\n control: /* @__PURE__ */ React.createElement(\n Checkbox,\n {\n checked: answers.schedule.includes(schedule[1]),\n onChange: (e) => handleMultiCheck(e.target.value, answers.schedule, \"schedule\")\n }\n )\n }\n )))))\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.startDate,\n fullWidth: true,\n className: `${classes.formControl} ${classes.small}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Is there a planned start date for this job?\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.startDate && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"Yes\",\n control: /* @__PURE__ */ React.createElement(\n Radio,\n {\n checked: answers.isStartDate === true,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { isStartDate: true }))\n }\n )\n }\n ), /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"No\",\n control: /* @__PURE__ */ React.createElement(\n Radio,\n {\n checked: answers.isStartDate === false,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { isStartDate: false }))\n }\n )\n }\n )),\n answers.isStartDate && /* @__PURE__ */ React.createElement(\n DayPickerInput,\n {\n value: answers.startDate,\n onDayChange: (day) => setAnswers(__spreadProps(__spreadValues({}, answers), { startDate: formatDate(day, \"LL\") })),\n classNames: {\n container: `${classes.calendarContainer} ${activeError === requiredRefs.startDate ? classes.errorStartDate : \"\"}`,\n overlay: classes.calendarOverlay\n },\n format: \"LL\",\n placeholder: \"Select a date\"\n }\n )\n ), /* @__PURE__ */ React.createElement(\"h4\", { ref: requiredRefs.salary, className: classes.requiredHeader }, \"Salary & benefits\", /* @__PURE__ */ React.createElement(\"span\", null, \"*\"), activeError === requiredRefs.salary && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"Please input valid salary range\"))), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(Box, { mb: 1, classes: { root: classes.salaryInput } }, /* @__PURE__ */ React.createElement(\n Select,\n {\n classes: { select: classes.input, root: classes.fullWidth },\n variant: \"outlined\",\n value: answers.selectedSalaryType,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), {\n selectedSalaryType: e.target.value,\n rangeTo: 0,\n rangeFrom: 0\n })),\n displayEmpty: true,\n renderValue: (value) => value[0]\n },\n answers.salaryTypes.map((type) => /* @__PURE__ */ React.createElement(MenuItem, { key: type[1], value: type }, type[0]))\n )), /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: classes.inputAdornment } }, /* @__PURE__ */ React.createElement(\n Grid,\n {\n item: true,\n container: true,\n xs: 9,\n alignContent: \"center\",\n alignItems: \"center\",\n justifyContent: \"center\",\n wrap: \"nowrap\"\n },\n answers.selectedSalaryType[0] === \"Range\" ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { m: 1, ml: 0 }, /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.salary,\n className: classes.textField,\n variant: \"outlined\",\n value: Number(answers.rangeFrom).toLocaleString(),\n InputProps: {\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"$\")\n },\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), {\n rangeFrom: e.target.value ? parseFloat(e.target.value.split(\",\").join(\"\")) : \"\"\n }))\n }\n )), /* @__PURE__ */ React.createElement(Box, { sx: { marginTop: \"20px\" }, m: 1 }, /* @__PURE__ */ React.createElement(\"span\", null, \"to\")), /* @__PURE__ */ React.createElement(Box, { m: 1 }, /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.salary,\n className: classes.textField,\n variant: \"outlined\",\n value: Number(answers.rangeTo).toLocaleString(),\n InputProps: {\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"$\")\n },\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), {\n rangeTo: e.target.value ? parseFloat(e.target.value.split(\",\").join(\"\")) : \"\"\n }))\n }\n ))) : /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.salary,\n style: { width: \"100%\", marginRight: 10 },\n className: classes.textField,\n variant: \"outlined\",\n value: Number(answers.rangeTo).toLocaleString(),\n InputProps: {\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"$\")\n },\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), {\n rangeTo: e.target.value ? parseFloat(e.target.value.split(\",\").join(\"\")) : \"\",\n rangeFrom: e.target.value ? parseFloat(e.target.value.split(\",\").join(\"\")) : \"\"\n }))\n }\n )\n ), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 3 }, /* @__PURE__ */ React.createElement(Box, { m: 1, mr: 0 }, /* @__PURE__ */ React.createElement(\n Select,\n {\n classes: { select: classes.input },\n className: classes.salaryDropdown,\n variant: \"outlined\",\n value: answers.rangeUnit,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { rangeUnit: e.target.value })),\n displayEmpty: true,\n renderValue: (value) => value[1]\n },\n jobAdParams.payment_frequencies_options.map((range) => /* @__PURE__ */ React.createElement(MenuItem, { key: range[0], value: range }, range[1]))\n ))))), /* @__PURE__ */ React.createElement(Box, { mt: 1 }, /* @__PURE__ */ React.createElement(\"span\", null, \"Specifying $0 omits salary from your job ad\"))), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Are any forms of additional pay offered?\"), /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(Grid, { container: true }, jobAdParams.additional_payment_options.map((pay) => /* @__PURE__ */ React.createElement(Grid, { key: pay[1], item: true, xs: 6 }, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: pay[0],\n value: pay[1],\n control: /* @__PURE__ */ React.createElement(\n Checkbox,\n {\n checked: answers.additionalPay.includes(pay[1]),\n onChange: (e) => handleMultiCheck(e.target.value, answers.additionalPay, \"additionalPay\")\n }\n )\n }\n )))))), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Are any of the following benefits offered?\"), /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(Grid, { container: true }, jobAdParams.salary_benefit_options.map((benefit) => /* @__PURE__ */ React.createElement(Grid, { key: benefit[1], item: true, xs: 6 }, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: benefit[0],\n value: benefit[1],\n control: /* @__PURE__ */ React.createElement(\n Checkbox,\n {\n checked: answers.benefits.includes(benefit[1]),\n onChange: (e) => handleMultiCheck(e.target.value, answers.benefits, \"benefits\")\n }\n )\n }\n )))))), /* @__PURE__ */ React.createElement(\"h4\", null, \"Application Settings\"), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Do you want applicants to submit a resume?\"), /* @__PURE__ */ React.createElement(\n RadioGroup,\n {\n value: answers.submitResume,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { submitResume: e.target.value }))\n },\n /* @__PURE__ */ React.createElement(FormControlLabel, { label: \"Yes\", value: \"required\", control: /* @__PURE__ */ React.createElement(Radio, null) }),\n /* @__PURE__ */ React.createElement(FormControlLabel, { label: \"No\", value: \"hidden\", control: /* @__PURE__ */ React.createElement(Radio, null) }),\n /* @__PURE__ */ React.createElement(FormControlLabel, { label: \"Optional\", value: \"optional\", control: /* @__PURE__ */ React.createElement(Radio, null) })\n )), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.small}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Is there an application deadline?\"), /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"Yes\",\n control: /* @__PURE__ */ React.createElement(\n Radio,\n {\n checked: answers.isApplicationDeadline === true,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { isApplicationDeadline: true }))\n }\n )\n }\n ), /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"No\",\n control: /* @__PURE__ */ React.createElement(\n Radio,\n {\n checked: answers.isApplicationDeadline === false,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { isApplicationDeadline: false }))\n }\n )\n }\n )), answers.isApplicationDeadline && /* @__PURE__ */ React.createElement(\n DayPickerInput,\n {\n value: answers.applicationDeadline,\n onDayChange: (day) => setAnswers(__spreadProps(__spreadValues({}, answers), { applicationDeadline: formatDate(day, \"LL\") })),\n classNames: { container: `${classes.calendarContainer}` },\n format: \"LL\",\n placeholder: \"Select a date\"\n }\n )), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.large}` }, /* @__PURE__ */ React.createElement(Grid, { container: true }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 10 }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Do you want to let applicants start the conversation?\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"Allow job seekers to message you about their applications.\", /* @__PURE__ */ React.createElement(\"br\", null), \"Messages will be sent to the email address you added in Application settings.\")), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 2 }, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: answers.startConversation ? \"Yes\" : \"No\",\n control: /* @__PURE__ */ React.createElement(\n Switch,\n {\n checked: answers.startConversation,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { startConversation: !answers.startConversation }))\n }\n )\n }\n )))), /* @__PURE__ */ React.createElement(\"h4\", { ref: requiredRefs.description, className: classes.requiredHeader }, \"Job description\", /* @__PURE__ */ React.createElement(\"span\", null, \"*\"), activeError === requiredRefs.description && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n fullWidth: true,\n className: `${classes.formControl} ${classes.large}`,\n style: { marginTop: 5 }\n },\n /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Describe the responsbilities of this job, required work experience, skills, or education.\"),\n /* @__PURE__ */ React.createElement(\n TextEditor,\n {\n editorState: answers.description,\n setAnswers,\n answers,\n activeError,\n requiredRef: requiredRefs.description,\n classes\n }\n )\n ), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.large}` }, /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, \"Are you taking any additional COVID-19 precautions?\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"Let job seekers know how you're responding to COVID-19\"), /* @__PURE__ */ React.createElement(\n TextField,\n {\n multiline: true,\n placeholder: \"Eg. All customers are required to wear a mask, curbside pickup available, common surfaces sanitised regularly, etc.\",\n className: `${classes.textField} ${classes.textBox}`,\n variant: \"outlined\",\n value: answers.covidPrecautions,\n onChange: (e) => e.target.value.length <= 255 && setAnswers(__spreadProps(__spreadValues({}, answers), { covidPrecautions: e.target.value }))\n }\n ), /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, answers.covidPrecautions.length, \"/255\")), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.jobReference,\n fullWidth: true,\n className: `${classes.formControl} ${classes.small}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: true, focused: false, className: classes.label }, \"Job reference ID\"),\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.jobReference,\n type: \"number\",\n className: classes.textField,\n variant: \"outlined\",\n value: answers.jobReference,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { jobReference: e.target.value })),\n InputProps: {\n endAdornment: activeError === requiredRefs.jobReference && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n }\n }\n )\n ), /* @__PURE__ */ React.createElement(\"h4\", null, \"Applicant qualifications\"), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: classes.large, style: { marginTop: 14 } }, /* @__PURE__ */ React.createElement(Grid, { container: true }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 10 }, /* @__PURE__ */ React.createElement(\"span\", { className: classes.label }, \"Include applicant questionnaire from your job.\")), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 2 }, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: answers.askQualifications ? \"On\" : \"Off\",\n control: /* @__PURE__ */ React.createElement(\n Switch,\n {\n checked: answers.askQualifications,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { askQualifications: !answers.askQualifications }))\n }\n )\n }\n )))));\n}\nStep2.propTypes = jobAdPropTypes;\nexport default Step2;\n","import React, { useState, useEffect } from \"react\";\nimport {\n Grid\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nimport FavoriteBorderIcon from \"@material-ui/icons/FavoriteBorder\";\nimport renderHTML from \"react-render-html\";\nimport moment from \"moment\";\nfunction Step2({ jobAdParams, answers, setActiveStep }) {\n const [isMobile, setIsMobile] = useState(false);\n const classes = useStyles();\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Preview Ad\"), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.previewType} ${isMobile ? \"mobile\" : \"\"}` }, /* @__PURE__ */ React.createElement(\"div\", { onClick: () => setIsMobile(false) }, \"Desktop\"), /* @__PURE__ */ React.createElement(\"div\", { onClick: () => setIsMobile(true) }, \"Mobile\")), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.previewContainer} ${isMobile ? \"mobile\" : \"\"}` }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.previewTitle }, answers.jobTitle), /* @__PURE__ */ React.createElement(\"div\", { className: classes.previewDetails }, `${jobAdParams.company_name} ${jobAdParams.address}`), /* @__PURE__ */ React.createElement(\"div\", { className: classes.previewButtons }, /* @__PURE__ */ React.createElement(\"div\", null, \"Apply Now\"), /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(FavoriteBorderIcon, null))), /* @__PURE__ */ React.createElement(\"div\", { className: classes.previewContent }, renderHTML(answers.ad_preview))), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.large}` }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.applicationSettings }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Application settings\"), /* @__PURE__ */ React.createElement(\"span\", { onClick: () => setActiveStep(0) }, \"Edit\")), /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: classes.greyBox } }, /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: classes.applicationSettingsInner } }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 8 }, \"Resume:\"), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, answers.submitResume === \"required\" && \"Required document\", answers.submitResume === \"optional\" && \"Optional document\", answers.submitResume === \"hidden\" && \"Not required\")), /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: classes.applicationSettingsInner } }, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 8 }, \"Application deadline:\"), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 4 }, answers.isApplicationDeadline ? moment(answers.applicationDeadline).format(\"LL\") : \"No deadline\")))));\n}\nStep2.propTypes = {\n setActiveStep: PropTypes.func.isRequired,\n jobAdParams: PropTypes.object.isRequired,\n answers: PropTypes.object.isRequired,\n setAnswers: PropTypes.func.isRequired\n};\nexport default Step2;\n","import AdEditor from \"./AdEditor\";\nexport default AdEditor;\n","import { makeStyles } from \"@material-ui/core\";\nimport { adEditorCancelButton } from \"../../shared/commonStyles\";\nexport default makeStyles((theme) => ({\n containerOuter: {\n marginTop: 40,\n background: \"#FFF\",\n borderRadius: 8,\n padding: 40,\n display: \"flex\",\n justifyContent: \"center\",\n \"& button:focus\": {\n outline: 0\n }\n },\n container: {\n padding: \"50px 120px\",\n width: \"100%\"\n },\n stepSelect: {\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: 40,\n width: \"90%\",\n margin: \"auto\"\n },\n stepContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n \"& h4\": {\n color: \"#666666\",\n fontSize: 20,\n fontWeight: \"900\",\n marginBottom: 0,\n marginTop: 70,\n \"&:first-child\": {\n marginTop: 0\n },\n \"& + span\": {\n color: \"#939393\",\n fontSize: 16,\n marginTop: 20\n },\n \"& span\": {\n color: \"#E37D7A\"\n },\n \"& + div\": {\n marginTop: 20\n }\n },\n \"& fieldset\": {\n borderColor: \"#DDDDDD\"\n },\n \"& .MuiSwitch-switchBase + .MuiSwitch-track\": {\n backgroundColor: \"#A0A0A0\"\n }\n },\n formControl: {\n marginTop: 50\n },\n subFormControl: {\n marginTop: 20\n },\n large: {\n width: 600\n },\n medium: {\n width: 400\n },\n small: {\n width: 300\n },\n greyBox: {\n background: \"#FAFAFA\",\n border: \"1px solid #DDDDDD\",\n borderRadius: 6,\n padding: 30,\n \"& span\": {\n color: \"#939393\",\n fontSize: 16,\n display: \"block\",\n marginRight: 8\n },\n \"& > div\": {\n marginBottom: 15,\n \"&:last-child\": {\n marginBottom: 0\n }\n }\n },\n applicationSettingsInner: {\n \"& > div\": {\n fontSize: 16,\n color: \"#000\",\n textAlign: \"right\",\n \"&:first-child\": {\n fontSize: 18,\n color: \"#939393\",\n textAlign: \"left\"\n }\n },\n \"& span\": {\n display: \"block\",\n color: \"#000\"\n }\n },\n greyIcon: {\n color: theme.palette.secondary.main,\n width: 18,\n height: 18\n },\n greyInput: {\n padding: \"0 32px 0 0 !important\",\n color: \"#000000\",\n \"&:focus\": {\n background: \"#FAFAFA\"\n }\n },\n inputField: {\n padding: \"10px 18px\",\n borderRadius: 6,\n border: \"1px solid #DDDDDD\",\n background: \"#FFF\"\n },\n textField: {\n \"& input\": {\n // padding: '10px 18px',\n borderRadius: 6\n }\n },\n textBox: {\n \"& input\": {\n height: 150\n }\n },\n salaryDropdown: {\n marginTop: \"0.5rem\",\n height: \"44px\"\n },\n controlledNumberInput: {\n \"& fieldset\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0\n },\n \"& button\": {\n color: \"#A2A2A2\",\n borderRadius: 0,\n border: \"1px solid #DDDDDD\",\n borderLeft: 0,\n padding: 0,\n minWidth: 40,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"44px\",\n marginTop: \"0.5rem\",\n \"&:last-child\": {\n borderTopRightRadius: 6,\n borderBottomRightRadius: 6\n },\n \"&[disabled]\": {\n background: \"#F3F3F3\",\n color: \"#E5E5E5\"\n }\n }\n },\n fullWidth: {\n width: \"100%\"\n },\n input: {\n padding: \"10px 18px\",\n borderRadius: 6,\n width: \"100%\",\n \"&:focus\": {\n background: \"#FFF\"\n }\n },\n inputAdornment: {\n \"& input\": {\n paddingLeft: 0\n },\n \"& span\": {\n fontSize: 16\n }\n },\n placeholder: {\n fontSize: 14,\n color: \"#CCCCCC\"\n },\n salaryInput: {\n width: \"31%\",\n \"& > div:first-child\": {\n width: \"100%\"\n }\n },\n label: {\n color: \"#939393\",\n fontSize: 16,\n marginBottom: 14,\n display: \"flex\",\n lineHeight: \"20px\",\n \"& span\": {\n color: \"#E37D7A\"\n }\n },\n asterisk: {\n display: \"block\",\n marginLeft: 10,\n color: theme.palette.error.main\n },\n requiredHeader: {\n display: \"flex\",\n lineHeight: \"20px\"\n },\n subLabel: {\n display: \"block\",\n color: \"#000\",\n fontSize: 14,\n marginBottom: 10\n },\n helperText: {\n textAlign: \"right\",\n position: \"absolute\",\n bottom: \"-22px\",\n right: 0\n },\n calendarContainer: {\n marginTop: 10,\n \"& input\": {\n padding: \"10px 18px\",\n borderRadius: 6,\n border: \"1px solid #DDD\",\n width: \"100%\",\n \"&:focus\": {\n background: \"#FFF\",\n outline: 0,\n borderColor: theme.palette.primary.main\n }\n },\n \"& .DayPicker\": {\n background: \"#FFF\",\n borderRadius: 6,\n boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n position: \"absolute\",\n zIndex: 100\n },\n \"& .DayPicker-wrapper\": {\n padding: \"20px 10px\",\n borderRadius: 6\n },\n \"& .DayPicker-Caption\": {\n height: \"2rem\",\n \"& div\": {\n fontWeight: \"600\",\n fontSize: 18,\n color: theme.palette.primary.main\n }\n },\n \"& .DayPicker-NavBar\": {\n top: \"1.3rem\",\n \"& span\": {\n height: \"0.9rem\",\n width: \"0.9rem\"\n }\n },\n \"& .DayPicker-Weekdays abbr\": {\n textDecoration: \"none\"\n },\n \"& .DayPicker-Day\": {\n border: 0,\n padding: \"10px 12px\",\n fontSize: 12\n },\n \"& .DayPicker-Day--today\": {\n color: theme.palette.primary.main,\n fontWeight: \"600\"\n },\n \"& .DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside)\": {\n backgroundColor: theme.palette.secondary.main,\n borderRadius: \"100%\"\n }\n },\n actionText: {\n fontWeight: \"600\",\n color: theme.palette.primary.main,\n fontSize: 14,\n display: \"block\",\n marginBottom: 10,\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n spaceItems: {\n \"& > *\": {\n marginBottom: 14\n }\n },\n removeIcon: {\n position: \"absolute\",\n right: 10,\n color: \"#DDD\",\n \"&:hover\": {\n color: \"#E37D7A\",\n cursor: \"pointer\"\n }\n },\n sliderContainer: {\n width: 560,\n marginTop: 15,\n borderRadius: 6,\n border: \"1px solid #DDDDDD\",\n padding: \"30px 60px\",\n display: \"flex\",\n flexDirection: \"column\",\n textAlign: \"center\"\n },\n sliderTitle: {\n color: theme.palette.primary.main,\n fontWeight: \"600\",\n display: \"block\",\n marginBottom: 35\n },\n sliderValue: {\n display: \"block\",\n marginTop: 4,\n color: \"#999\",\n textAlign: \"right\"\n },\n thumb: {\n width: 20,\n height: 20,\n marginTop: \"-9px\"\n },\n textEditor: {\n borderRadius: 6,\n border: \"1px solid #DDDDDD\",\n overflow: \"hidden\"\n },\n textEditorToolbar: {\n display: \"flex\",\n flexDirection: \"row\",\n background: \"#DDDDDD\",\n padding: \"10px 15px 6px\",\n \"& .rdw-inline-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\"\n },\n \"& .rdw-option-wrapper\": {\n padding: \"0 10px\"\n }\n },\n textEditorBody: {\n minHeight: 250,\n padding: 20,\n \"&:hover\": {\n cursor: \"text\"\n },\n \"& ul\": {\n paddingLeft: 20\n },\n \"& li\": {\n listStyle: \"disc\"\n }\n },\n stepperRoot: {\n width: \"100%\"\n },\n stepItem: {\n fontWeight: \"600\"\n },\n stepIconActive: {\n color: `${theme.palette.secondary.main} !important`,\n boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n \"& text\": {\n color: \"#FFF\"\n }\n },\n stepIconCompleted: {\n color: `${theme.palette.secondary.main} !important`,\n boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n \"& text\": {\n color: \"#FFF\"\n }\n },\n stepIconRoot: {\n color: \"#F3F3F3\",\n borderRadius: \"100%\",\n width: \"50px !important\",\n height: \"50px !important\",\n \"& text\": {\n color: \"#CCCCCC\"\n }\n },\n stepLabelIconContainer: {\n width: \"50px !important\",\n height: \"50px !important\"\n },\n stepLabelLabel: {\n fontWeight: \"600 !important\",\n color: \"#CCCCCC !important\"\n },\n stepLabelActive: {\n color: \"#666666 !important\"\n },\n stepLabelCompleted: {\n color: \"#666666 !important\"\n },\n stepHover: {\n \"&:hover\": {\n cursor: \"pointer\",\n opacity: 0.8\n }\n },\n stepNoHover: {\n \"&:hover\": {\n cursor: \"auto\"\n }\n },\n buttonContainer: {\n marginTop: 60,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n \"& a\": adEditorCancelButton\n },\n buttons: {\n display: \"flex\",\n \"& > *\": {\n marginLeft: 20\n }\n },\n buttonSecondary: {\n borderRadius: 6,\n padding: \"6px 8px !important\",\n color: \"#FFF !important\",\n textDecoration: \"none !important\",\n fontWeight: \"600 !important\",\n fontSize: 14,\n background: theme.palette.secondary.main,\n \"&:hover\": {\n background: theme.palette.secondary.dark\n },\n \"&.Mui-disabled\": {\n backgroundColor: \"#666666\"\n },\n \"& svg\": {\n width: \"24px !important\",\n height: \"25px !important\",\n \"& path\": {\n fill: \"white !important\",\n width: \"100%\",\n height: \"100%\"\n }\n }\n },\n buttonSecondaryLight: {\n borderRadius: 6,\n padding: \"6px 8px\",\n background: theme.palette.secondary.light,\n color: theme.palette.secondary.main,\n \"&:hover\": {\n background: theme.palette.secondary.main,\n color: \"#FFF\"\n }\n },\n successDialogText: {\n display: \"flex\",\n alignItems: \"center\",\n height: \"3rem\",\n fontWeight: \"600\",\n color: \"#666666\",\n \"& span\": {\n paddingRight: \"0.5rem\"\n }\n },\n successDialogContainer: {\n marginTop: \"20px\",\n \"& button\": {\n padding: \"9px 13px\"\n }\n },\n previewType: {\n display: \"flex\",\n marginTop: 20,\n borderBottom: \"3px solid #F3F3F3\",\n position: \"relative\",\n width: 260,\n \"& div\": {\n padding: 20,\n fontSize: 16,\n color: \"#939393\",\n flexGrow: 1,\n textAlign: \"center\",\n \"&:hover\": {\n cursor: \"pointer\",\n color: \"#666\"\n }\n },\n \"&:after\": {\n content: '\"\"',\n display: \"block\",\n position: \"absolute\",\n width: \"50%\",\n background: \"#2557A7\",\n borderRadius: 3,\n left: \"0%\",\n bottom: \"-3px\",\n height: 3,\n transition: \"left 0.2s ease\"\n },\n \"&.mobile:after\": {\n left: \"50%\"\n }\n },\n previewContainer: {\n border: \"1px solid #DDD\",\n borderRadius: 6,\n padding: \"40px 50px\",\n marginTop: 20,\n marginBottom: 60,\n width: \"80%\",\n \"&.mobile\": {\n width: \"40%\"\n }\n },\n previewTitle: {\n color: \"#666666\",\n fontSize: 30,\n fontWeight: \"600\"\n },\n previewDetails: {\n fontSize: 20,\n color: \"#939393\",\n marginTop: 6\n },\n previewButtons: {\n display: \"flex\",\n marginTop: 30,\n \"& div\": {\n borderRadius: 6,\n fontWeight: \"600\",\n lineHeight: \"20px\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n \"& div:first-child\": {\n background: \"#2557A7\",\n color: \"#FFF\",\n fontSize: 20,\n marginRight: 10,\n padding: \"9px 24px\",\n \"&:hover\": {\n background: \"#3d6fbf\"\n }\n },\n \"& div:last-child\": {\n color: \"#606060\",\n background: \"#F3F3F3\",\n padding: \"9px 12px\",\n \"&:hover\": {\n background: \"#e6e3e3\"\n }\n }\n },\n previewContent: {\n marginTop: 30,\n \"& p, li\": {\n fontSize: 18,\n color: \"#939393\",\n marginTop: 0\n },\n \"& strong\": {\n fontWeight: \"600\",\n color: \"#666666\",\n fontSize: 20\n },\n \"& ul\": {\n listStyle: \"disc\",\n paddingLeft: 20\n },\n \"& li:marker\": {\n color: \"#939393\"\n }\n },\n applicationSettings: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: 25,\n \"& span\": {\n color: theme.palette.primary.main,\n fontWeight: \"600\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n }\n },\n dialog: {\n padding: \"40px 60px\",\n alignItems: \"center\",\n textAlign: \"center\",\n \"& > h4\": {\n fontSize: 26,\n color: theme.palette.primary.main,\n marginBottom: 14\n },\n \"& > span\": {\n fontWeight: \"600\",\n color: \"#666666\",\n fontSize: 16,\n lineHeight: \"20px\"\n },\n \"& button:focus\": {\n outline: 0\n }\n },\n dialogButtonContainer: {\n display: \"flex\",\n marginTop: 40,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: \"row\",\n \"& > button\": {\n margin: \"0 10px\",\n minWidth: 150\n }\n },\n successDialog: {\n padding: \"80px 100px\",\n alignItems: \"center\",\n textAlign: \"center\",\n \"& svg\": {\n width: 80,\n height: 80,\n \"& path\": {\n fill: \"#0064F7\",\n width: \"100%\",\n height: \"100%\"\n }\n },\n \"& > h4\": {\n marginTop: 10,\n fontSize: 48,\n color: \"#666666\",\n marginBottom: 4,\n fontWeight: \"900\"\n },\n \"& > span\": {\n fontWeight: \"500\",\n color: \"#666666\",\n fontSize: 24,\n display: \"block\",\n marginBottom: 20\n }\n },\n successCheck: {\n position: \"relative\",\n \"&:after\": {\n content: '\"\"',\n display: \"block\",\n position: \"absolute\",\n height: \"100%\",\n width: \"100%\",\n top: 0,\n left: 0,\n border: \"16px solid #0064F7\",\n borderRadius: \"100%\",\n boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.3)\"\n }\n },\n autoComplete: {\n marginTop: 10,\n \"& input\": {\n minHeight: 30\n }\n },\n autoCompleteRoot: {\n padding: \"0 6px !important\",\n \"& input::placeholder\": {\n fontSize: 14,\n color: \"#CCCCCC\",\n opacity: 1\n }\n },\n autoCompleteClose: {\n position: \"absolute\",\n right: 0,\n \"& svg\": {\n fill: \"#c7c7c7\"\n }\n },\n autoCompletePopper: {\n \"& fieldset\": {\n padding: \"10px 18px\",\n borderRadius: 6,\n border: \"1px solid #DDDDDD\"\n },\n \"& svg\": {\n fill: \"#DDD\",\n marginRight: 10\n }\n },\n sponsorJobContainer: {\n maxWidth: 780,\n paddingLeft: 30\n },\n disabled: {\n pointerEvents: \"none\",\n opacity: 0.2\n },\n sponsorJobSubTitle: {\n display: \"block\",\n marginTop: 20,\n fontSize: 16,\n color: \"#939393\"\n },\n hireCounter: {\n display: \"flex\",\n alignItems: \"center\",\n \"& > *\": {\n padding: 12,\n border: \"1px solid #DDDDDD\",\n borderRadius: 6,\n marginRight: 6,\n color: \"#2557A7\",\n lineHeight: \"1.5rem\",\n minWidth: \"50px\",\n textAlign: \"center\",\n \"&:last-child\": {\n marginRight: 0\n }\n },\n \"& > div\": {\n fontSize: 20\n }\n },\n smallText: {\n color: \"#939393\",\n fontSize: 12,\n display: \"block\",\n marginTop: 8\n },\n mediumText: {\n color: \"#939393\",\n fontSize: 14,\n display: \"block\",\n marginTop: 14\n },\n budgetInput: {\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"nowrap\",\n \"& fieldset\": {\n border: 0\n },\n \"& > *\": {\n border: \"1px solid #DDDDDD\",\n borderRight: 0,\n borderRadius: 0,\n \"&:first-child\": {\n borderBottomLeftRadius: 6,\n borderTopLeftRadius: 6,\n display: \"flex\",\n alignSelf: \"stretch\",\n alignItems: \"center\",\n fontSize: 12\n },\n \"&:last-child\": {\n borderTopRightRadius: 6,\n borderBottomRightRadius: 6,\n borderRight: \"1px solid #DDDDDD\"\n }\n }\n },\n budgetInutFocused: {\n border: \"1px solid #DDDDDD !important\"\n },\n estimatedResults: {\n border: \"1px solid #DDDDDD\",\n borderRadius: 6,\n padding: 26,\n \"& h4\": {\n marginTop: 0,\n fontSize: 16,\n fontWeight: \"600\",\n color: \"#666666\",\n borderBottom: \"1px solid #F3F3F3\",\n paddingBottom: 10\n },\n \"& h3\": {\n marginTop: 12,\n color: \"#2557A7\",\n fontSize: 20,\n \"& b\": {\n fontSize: 26\n }\n },\n \"& span\": {\n display: \"block\",\n marginTop: 4,\n fontSize: 15,\n color: \"#939393\"\n }\n },\n paragraphTitle: {\n marginBottom: 10,\n fontSize: 18\n },\n paragraph: {\n color: \"#939393\",\n fontSize: 15,\n \"& ul\": {\n listStyle: \"disc\",\n paddingLeft: 20,\n margin: \"10px 0\"\n }\n },\n error: {\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"row\",\n color: theme.palette.error.main,\n left: \"25px\",\n position: \"relative\",\n width: 0,\n \"& span\": {\n position: \"absolute\",\n whiteSpace: \"nowrap\",\n left: 30,\n fontSize: 13,\n fontWeight: \"400\"\n },\n \"& svg\": {\n \"&:hover\": {\n cursor: \"auto\"\n }\n }\n },\n errorOutline: {\n \"& $error\": {\n left: 120\n },\n \"& fieldset\": {\n borderLeft: `1px solid ${theme.palette.error.main}`,\n borderTop: `1px solid ${theme.palette.error.main}`,\n borderBottom: `1px solid ${theme.palette.error.main}`\n },\n \"& button\": {\n borderTop: `1px solid ${theme.palette.error.main}`,\n borderBottom: `1px solid ${theme.palette.error.main}`,\n \"&:last-child\": {\n borderRight: `1px solid ${theme.palette.error.main}`\n }\n }\n },\n w200: {\n maxWidth: 200,\n minWidth: 200\n },\n errorStartDate: {\n \"& input\": {\n borderColor: theme.palette.error.main\n }\n },\n errorDescription: {\n borderColor: theme.palette.error.main\n },\n submitButtonContainer: {\n marginTop: 30,\n display: \"flex\",\n justifyContent: \"flex-end\"\n },\n menuItem: {\n fontSize: 14\n }\n}));\n","var __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useState } from \"react\";\nimport { Button } from \"@material-ui/core\";\nimport AdTable from \"../components/AdTable\";\nimport PropTypes from \"prop-types\";\nimport { withScoutTheme } from \"../../ThemeContext/ThemeContext\";\nimport axios from \"axios\";\nimport useStyles from \"./useStyles\";\nconst ADTYPES = [{\n id: [\"open\", \"new\"],\n name: \"Active\"\n}, {\n id: [\"expired\"],\n name: \"Expired\"\n}, {\n id: [\"archived\"],\n name: \"Archived\"\n}];\nfunction AdList({ job_ads, requestNewAdUrl }) {\n const [ads, setAds] = useState(job_ads);\n const [selectedAdType, setSelectedAdType] = useState(ADTYPES[0].id);\n const classes = useStyles();\n function getNewAdUrl() {\n return __async(this, null, function* () {\n try {\n const token = document.querySelector('meta[name=\"csrf-token\"]').content;\n const { data } = yield axios.post(requestNewAdUrl, {\n authenticity_token: token,\n headers: {\n \"Content-Type\": \"x-www-form-urlencoded\"\n }\n });\n window.location = data.url;\n } catch (e) {\n console.log(e);\n }\n });\n }\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.containerOuter }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.container }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.banner }, /* @__PURE__ */ React.createElement(\"div\", { id: \"indeed-logo\" }), /* @__PURE__ */ React.createElement(\n Button,\n {\n style: { minWidth: 110, fontSize: 12 },\n disableElevation: true,\n className: classes.buttonSecondary,\n onClick: () => getNewAdUrl()\n },\n \"New Ad\"\n )), /* @__PURE__ */ React.createElement(\"div\", { className: classes.toggleButtonGroup }, ADTYPES.map(\n (type) => /* @__PURE__ */ React.createElement(\n Button,\n {\n key: type.name,\n disableElevation: true,\n onClick: () => setSelectedAdType(type.id),\n className: type.id[0] === selectedAdType[0] ? [classes.buttonPrimary, classes.buttonActive] : classes.buttonGrey\n },\n type.name\n )\n )), /* @__PURE__ */ React.createElement(\n AdTable,\n {\n jobAds: job_ads,\n ads: ads.filter((ad) => selectedAdType.includes(ad.status)),\n setAds\n }\n )));\n}\nAdList.propTypes = {\n job_ads: PropTypes.array.isRequired,\n requestNewAdUrl: PropTypes.string.isRequired\n};\nexport default withScoutTheme(AdList);\n","import AdList from \"./AdList\";\nexport default AdList;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n container: {\n background: \"#F3F3F3\",\n borderRadius: 8,\n padding: 40,\n width: \"100%\"\n },\n banner: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\"\n },\n toggleButtonGroup: {\n borderRadius: 8,\n margin: \"20px 0\",\n \"& button\": {\n padding: \"6px 16px\",\n borderRadius: 0,\n textTransform: \"capitalize\",\n borderRight: \"1px solid #f3f3f3\",\n \"&:first-child\": {\n borderTopLeftRadius: 6,\n borderBottomLeftRadius: 6\n },\n \"&:last-child\": {\n borderTopRightRadius: 6,\n borderBottomRightRadius: 6,\n borderRight: 0\n }\n }\n },\n containerOuter: {\n marginTop: 40,\n background: \"#FFF\",\n borderRadius: 8,\n padding: 40,\n display: \"flex\",\n justifyContent: \"center\",\n \"& button:focus\": {\n outline: 0\n }\n },\n buttonPrimary: {\n borderRadius: 6,\n padding: \"14px 30px\",\n color: \"#FFF\",\n fontWeight: \"600\",\n fontSize: 14,\n background: theme.palette.primary.main,\n \"&:hover\": {\n background: theme.palette.primary.dark\n }\n },\n buttonPrimaryLight: {\n borderRadius: 6,\n padding: \"14px 30px\",\n background: theme.palette.primary.light,\n color: theme.palette.primary\n },\n buttonSecondary: {\n borderRadius: 6,\n padding: \"14px 30px\",\n color: \"#FFF\",\n fontWeight: \"600\",\n fontSize: 14,\n background: theme.palette.secondary.main,\n \"&:hover\": {\n background: theme.palette.secondary.dark\n }\n },\n buttonSecondaryLight: {\n borderRadius: 6,\n padding: \"14px 30px\",\n background: theme.palette.secondary.light,\n color: theme.palette.secondary.main,\n \"&:hover\": {\n background: theme.palette.secondary.main,\n color: \"#FFF\"\n }\n },\n buttonRed: {\n borderRadius: 6,\n padding: \"14px 30px\",\n color: \"#FFF\",\n fontWeight: \"600\",\n fontSize: 14,\n background: theme.palette.error.main,\n \"&:hover\": {\n background: theme.palette.error.dark,\n color: \"#FFF\"\n }\n },\n buttonRedLight: {\n padding: \"14px 30px\",\n background: theme.palette.error.light,\n color: theme.palette.error.main,\n \"&:hover\": {\n background: theme.palette.error.main,\n color: \"#FFF\"\n }\n },\n buttonGreen: {\n padding: \"14px 30px\",\n background: theme.palette.success.main\n },\n buttonGreenLight: {\n padding: \"14px 30px\",\n background: theme.palette.success.light,\n color: theme.palette.success.main,\n \"&:hover\": {\n background: theme.palette.success.main,\n color: \"#FFF\"\n }\n },\n buttonWhite: {\n padding: \"14px 30px\",\n background: \"#FFF\",\n color: theme.palette.secondary.main,\n \"&:hover\": {\n background: theme.palette.secondary.main,\n color: \"#FFF\"\n }\n },\n buttonGrey: {\n padding: \"14px 30px\",\n background: \"#FFF\",\n color: \"#DDDDDD\",\n \"&:hover\": {\n background: theme.palette.secondary.main,\n color: \"#FFF\"\n }\n },\n buttonActive: {\n color: theme.palette.secondary.main\n },\n disableIcon: {\n pointerEvents: \"none\",\n opacity: 0.5\n }\n}));\n","var __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useState, useEffect } from \"react\";\nimport {\n Grid,\n FormControl,\n FormLabel,\n FormControlLabel,\n Checkbox,\n IconButton,\n TextField,\n Select,\n InputAdornment,\n MenuItem,\n Button,\n CircularProgress,\n Dialog\n} from \"@material-ui/core\";\nimport { withScoutTheme } from \"../../ThemeContext/ThemeContext\";\nimport useStyles from \"../AdEditor/useStyles\";\nimport useSharedStyles from \"../AdEditor/useStyles\";\nimport axios from \"axios\";\nimport PropTypes from \"prop-types\";\nimport DayPickerInput from \"react-day-picker/DayPickerInput\";\nimport AddIcon from \"@material-ui/icons/Add\";\nimport RemoveIcon from \"@material-ui/icons/Remove\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport { formatDate } from \"react-day-picker/moment\";\nconst budgetTypes = [[\"One time\", \"one_time\"], [\"Monthly Average*\", \"monthly\"]];\nfunction SponsoredJobEditor({ sponsoredAd, apiKey, accessToken, jobId }) {\n const [isAdvanced, setIsAdvanced] = useState(false);\n const [costPerClick, setCostPerClick] = useState(0.25);\n const [isEndDate, setIsEndDate] = useState(!!sponsoredAd.end_date);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [isSuccessDialogOpen, setIsSuccessDialogOpen] = useState(false);\n const [budgetType, setBudgetType] = useState(budgetTypes.find((budget2) => budget2[1] === sponsoredAd.budget_type) || budgetTypes[0]);\n const [budget, setBudget] = useState(sponsoredAd.budget_amount);\n const [hireCount, setHireCount] = useState(sponsoredAd.hires_number);\n const [endDate, setEndDate] = useState(sponsoredAd.end_date || \"\");\n function handleSubmit() {\n return __async(this, null, function* () {\n setIsSubmitting(true);\n try {\n yield axios.put(`/api/v4/indeed/job_ads/${sponsoredAd.job_ad_id}/sponsored_job`, {\n indeed_access_token: accessToken,\n sponsored_job: {\n budget_type: budgetType[1],\n budget_amount: budget,\n hires_number: hireCount,\n end_date: endDate ? formatDate(endDate, \"YYYY-MM-DD\") : null\n }\n }, {\n headers: {\n \"X-api-authenticate\": apiKey\n }\n });\n } catch (err) {\n console.log(err);\n } finally {\n setIsSubmitting(false);\n setIsSuccessDialogOpen(true);\n }\n });\n }\n const classes = useStyles();\n const sharedClasses = useSharedStyles();\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.containerOuter }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.container }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Sponsor Job\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.sponsorJobSubTitle }, \"Choosing the \", /* @__PURE__ */ React.createElement(\"b\", null, \"recommended budget\"), \" means your listing will get \", /* @__PURE__ */ React.createElement(\"b\", null, \"better visibility\"), \" and show up more often in search results, making it easier for relevant job seekers to find and apply to your job.\", /* @__PURE__ */ React.createElement(\"br\", null), /* @__PURE__ */ React.createElement(\"br\", null), \"All currency values will use the currency defined in your Indeed account.\"), /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.previewType} ${isAdvanced ? \"mobile\" : \"\"}` }, /* @__PURE__ */ React.createElement(\"div\", { onClick: () => setIsAdvanced(false) }, \"Simple\"), /* @__PURE__ */ React.createElement(\"div\", { onClick: () => {\n setIsAdvanced(true);\n setBudgetType(budgetTypes[0]);\n } }, \"Advanced\")), /* @__PURE__ */ React.createElement(Grid, { container: true, className: classes.sponsorJobContainer }, isAdvanced ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"div\", { className: classes.formControl }, /* @__PURE__ */ React.createElement(\"h4\", { className: classes.paragraphTitle }, \"Job Budget\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.paragraph }, \"Instead of paying a large amount up-front to post your job, choose a small amount you are willing to pay each time a job seeker clicks to view your job (the Maximum cost per click or Max CPC).\", /* @__PURE__ */ React.createElement(\"ul\", null, /* @__PURE__ */ React.createElement(\"li\", null, \"Most clicks on Indeed cost between $0.20 - $1.20 (USD)\"), /* @__PURE__ */ React.createElement(\"li\", null, \"Jobs with higher Max CPCs tend to get seen more often\"), /* @__PURE__ */ React.createElement(\"li\", null, \"You can change your Max CPC at any time\")))), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Maximum cost per click\"), /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: `${classes.controlledNumberInput} ${classes.budgetInput}` } }, /* @__PURE__ */ React.createElement(\n TextField,\n {\n className: `${classes.textField} ${classes.inputAdornment}`,\n variant: \"outlined\",\n value: costPerClick,\n placeholder: \"0\",\n InputProps: {\n classes: { focused: classes.budgetInputFocused },\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"$\")\n },\n onChange: (e) => {\n if (!e.target.value) setCostPerClick(null);\n else if (/^\\d+(\\.\\d{0,2})?$/.test(e.target.value)) setCostPerClick(e.target.value);\n }\n }\n ))), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Job budget\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.subLabel }, \"Choose the total amount you want to spend promoting your job on Indeed. You can change your job budget at any time.\"), /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: `${classes.controlledNumberInput} ${classes.budgetInput}` } }, /* @__PURE__ */ React.createElement(\n TextField,\n {\n className: `${classes.textField} ${classes.inputAdornment}`,\n variant: \"outlined\",\n value: Number(budget).toLocaleString(),\n InputProps: {\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"$\")\n },\n onChange: (e) => setBudget(e.target.value ? parseFloat(e.target.value.split(\",\").join(\"\")) : 0)\n }\n ))), /* @__PURE__ */ React.createElement(\"span\", { className: classes.mediumText }, \"You'll get at least \", parseInt(budget / costPerClick), \" clicks on your job if you use your entire budget.\")) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 8 }, /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, required: true, className: classes.label }, \"How many people do you need to hire?\"), /* @__PURE__ */ React.createElement(Grid, { className: classes.hireCounter }, /* @__PURE__ */ React.createElement(IconButton, { disabled: hireCount <= 0, onClick: () => setHireCount(hireCount - 1) }, /* @__PURE__ */ React.createElement(RemoveIcon, null)), /* @__PURE__ */ React.createElement(\"div\", null, hireCount), /* @__PURE__ */ React.createElement(IconButton, { onClick: () => setHireCount(hireCount + 1) }, /* @__PURE__ */ React.createElement(AddIcon, null)))), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: classes.formControl }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Job budget\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"Recommended budget (value) based on your job title and location.\"), /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: `${classes.controlledNumberInput} ${classes.budgetInput}` } }, /* @__PURE__ */ React.createElement(\n TextField,\n {\n className: `${classes.textField} ${classes.inputAdornment}`,\n variant: \"outlined\",\n value: Number(budget).toLocaleString(),\n InputProps: {\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"$\")\n },\n onChange: (e) => setBudget(e.target.value ? parseFloat(e.target.value.split(\",\").join(\"\")) : 0)\n }\n ), /* @__PURE__ */ React.createElement(\n Select,\n {\n classes: { select: classes.input, selectMenu: classes.menuItem },\n variant: \"outlined\",\n value: budgetType,\n onChange: (e) => setBudgetType(e.target.value),\n displayEmpty: true,\n renderValue: (value) => value[0]\n },\n budgetTypes.map(\n (type) => /* @__PURE__ */ React.createElement(MenuItem, { classes: { root: classes.menuItem }, key: type[1], value: type }, type[0])\n )\n )), /* @__PURE__ */ React.createElement(\"span\", { className: classes.smallText }, \"You can change the amount, pause or close your job at any time.\")))), /* @__PURE__ */ React.createElement(Grid, { container: true, style: { marginTop: 35 } }, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"Set an end date (optional)\",\n control: /* @__PURE__ */ React.createElement(\n Checkbox,\n {\n checked: isEndDate,\n onChange: () => setIsEndDate(!isEndDate)\n }\n )\n }\n )), isEndDate && /* @__PURE__ */ React.createElement(\n DayPickerInput,\n {\n value: endDate,\n onDayChange: (day) => setEndDate(formatDate(day, \"LL\")),\n classNames: { container: `${classes.calendarContainer} ${classes.small}`, overlay: {} },\n format: \"LL\",\n placeholder: \"Select a date\"\n }\n ), /* @__PURE__ */ React.createElement(Grid, { container: true, style: { marginTop: 15 }, direction: \"column\" }, /* @__PURE__ */ React.createElement(\"span\", { className: classes.smallText }, \"* Actual daily spend may vary.\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.smallText }, \"** Based on Indeed's past results. This is not a guarantee of future performance.\"))), /* @__PURE__ */ React.createElement(\"div\", { className: classes.submitButtonContainer }, /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n color: \"secondary\",\n onClick: handleSubmit,\n disabled: !budget || !hireCount\n },\n \"Sponsor job\",\n isSubmitting && /* @__PURE__ */ React.createElement(CircularProgress, { style: { marginLeft: 6 }, size: 20, color: \"inherit\" })\n ))))), /* @__PURE__ */ React.createElement(Dialog, { open: isSuccessDialogOpen, onClose: () => window.history.back(), classes: { paper: classes.successDialog } }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.successCheck }, /* @__PURE__ */ React.createElement(CheckCircleIcon, { color: \"primary\", fontSize: \"large\" })), /* @__PURE__ */ React.createElement(\"h4\", null, \"Success\"), /* @__PURE__ */ React.createElement(\"span\", null, \"Your ad has been sponsored\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer, style: { marginTop: 20 } }, /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n color: \"secondary\",\n className: sharedClasses.buttonSecondary,\n onClick: () => window.location = `/admin/jobs/${jobId}/job_ads`\n },\n \"Back to ads\"\n ))));\n}\nSponsoredJobEditor.propTypes = {\n sponsoredAd: PropTypes.object.isRequired,\n apiKey: PropTypes.string.isRequired,\n accessToken: PropTypes.string.isRequired,\n jobId: PropTypes.number.isRequired\n};\nexport default withScoutTheme(SponsoredJobEditor);\n","import SponsoredJobEditor from \"./SponsoredJobEditor\";\nexport default SponsoredJobEditor;\n","var __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useState, useEffect } from \"react\";\nimport useStyles from \"./useStyles\";\nimport sharedStyles from \"../../AdList/useStyles\";\nimport PropTypes from \"prop-types\";\nimport { Button, IconButton, Snackbar, Tooltip } from \"@material-ui/core\";\nimport moment from \"moment\";\nimport axios from \"axios\";\nimport GenericDialog from \"../GenericDialog\";\nimport CancelIcon from \"@material-ui/icons/Cancel\";\nimport CheckCircleIcon from \"@material-ui/icons/CheckCircle\";\nimport EditIcon from \"@material-ui/icons/Edit\";\nimport FileCopyIcon from \"@material-ui/icons/FileCopy\";\nimport DeleteIcon from \"@material-ui/icons/Delete\";\nimport ArchiveIcon from \"@material-ui/icons/Archive\";\nfunction AdTable({ jobAds, ads, setAds }) {\n const [token, setToken] = useState(null);\n const [dialogUrl, setDialogUrl] = useState(\"\");\n const [dialogTitle, setDialogTitle] = useState(\"\");\n const [dialogDescription, setDialogDescription] = useState(\"\");\n const [dialogButtonText, setDialogButtonText] = useState(\"\");\n const [dialogButtonCallback, setDialogButtonCallback] = useState(null);\n const [dialogLoading, setDialogLoading] = useState(false);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [isSnackOpen, setIsSnackOpen] = useState(false);\n const [snackMessage, setSnackMessage] = useState(\"\");\n const classes = useStyles();\n const sharedClasses = sharedStyles();\n function handleSnack(message) {\n setIsSnackOpen(true);\n setSnackMessage(message);\n }\n useEffect(() => {\n setToken(document.querySelector('meta[name=\"csrf-token\"]').content);\n }, []);\n function handleButtonStyle(ad) {\n switch (ad.status) {\n case \"open\":\n return {\n text: \"Expire Ad\",\n class: sharedClasses.buttonRedLight,\n callback: () => {\n setDialogUrl(ad.indeed_urls.expire);\n setDialogTitle(\"Are you sure you want to expire this ad?\");\n setDialogDescription(\"This will remove it from Indeed immediately. To repost this ad later you will be charged for a new ad.\");\n setDialogButtonText(\"Expire now\");\n setDialogButtonCallback(() => handleExpire);\n setDialogOpen(true);\n }\n };\n case \"new\":\n return {\n text: \"Continue Draft\",\n class: sharedClasses.buttonGreenLight,\n callback: () => handleEdit(ad.indeed_urls.edit)\n };\n default:\n return {\n text: \"Clone Ad\",\n class: sharedClasses.buttonSecondaryLight,\n callback: () => {\n setDialogUrl(ad.indeed_urls.copy);\n setDialogTitle(\"Are you sure you want to clone this ad?\");\n setDialogDescription(\"You will have to repost for your ad to be active on Indeed.\");\n setDialogButtonText(\"Clone ad\");\n setDialogButtonCallback(() => handleCopy);\n setDialogOpen(true);\n }\n };\n }\n }\n function handleEdit(url) {\n return __async(this, null, function* () {\n window.location = url;\n });\n }\n function handleExpire(url) {\n return __async(this, null, function* () {\n setDialogLoading(true);\n try {\n const { data } = yield axios.put(`${url}`, {\n authenticity_token: token\n });\n handleSnack(`${data.title} has been expired`);\n const newAds = [...jobAds];\n newAds[newAds.findIndex((ad) => ad.id === data.id)].status = \"expired\";\n setAds(newAds);\n } catch (e) {\n console.log(e);\n handleSnack(\"Could not expire ad\");\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n });\n }\n function handleArchive(url) {\n return __async(this, null, function* () {\n setDialogLoading(true);\n try {\n const { data } = yield axios.put(`${url}`, {\n authenticity_token: token\n });\n const newAds = [...jobAds];\n newAds[newAds.findIndex((ad) => ad.id === data.id)].status = \"archived\";\n setAds(newAds);\n handleSnack(`${data.title} has been archived`);\n } catch (e) {\n console.log(e);\n handleSnack(\"Could not archive ad\");\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n });\n }\n function handleDelete(url) {\n return __async(this, null, function* () {\n setDialogLoading(true);\n try {\n const { data } = yield axios.delete(`${url}`, {\n data: {\n authenticity_token: token\n }\n });\n handleSnack(`${data.title} has been deleted`);\n setAds(jobAds.filter((ad) => ad.id !== data.id));\n } catch (e) {\n console.log(e);\n handleSnack(\"Could not delete ad\");\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n });\n }\n function handleCopy(url) {\n return __async(this, null, function* () {\n setDialogLoading(true);\n try {\n const { data } = yield axios.get(`${url}?operation=clone`);\n window.location = data.url;\n } catch (e) {\n console.log(e);\n handleSnack(\"Could not clone ad\");\n } finally {\n setDialogLoading(false);\n setDialogUrl(null);\n setDialogOpen(false);\n }\n });\n }\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.table }, /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.row} ${classes.rowHeader}` }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job\"), /* @__PURE__ */ React.createElement(\"span\", null, \"Creation Date\"), /* @__PURE__ */ React.createElement(\"span\", null, \"Created By\"), /* @__PURE__ */ React.createElement(\"span\", null, \"Expiry\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.center }, \"Active on Indeed\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.center }, \"Sponsored\"), /* @__PURE__ */ React.createElement(\"span\", null), /* @__PURE__ */ React.createElement(\"span\", null)), ads.length > 0 ? ads.map(\n (ad) => /* @__PURE__ */ React.createElement(\"div\", { key: ad.id, className: classes.row }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.title }, ad.title), /* @__PURE__ */ React.createElement(\"div\", null, moment(ad.created_at).format(\"D MMM YYYY\")), /* @__PURE__ */ React.createElement(\"div\", null, ad.created_by), /* @__PURE__ */ React.createElement(\"div\", null, ad.expiry ? moment(ad.expiry).format(\"D MMM YYYY\") : \"No expiry\"), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.icon} ${classes.center}` }, ad.status === \"open\" ? /* @__PURE__ */ React.createElement(CheckCircleIcon, { className: classes.iconGreen }) : /* @__PURE__ */ React.createElement(CancelIcon, { className: classes.iconRed })), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.icon} ${classes.center}` }, ad.sponsored ? /* @__PURE__ */ React.createElement(CheckCircleIcon, { className: classes.iconGreen }) : /* @__PURE__ */ React.createElement(\n \"div\",\n {\n onClick: () => window.location = `/admin/indeed/job_ads/${ad.id}/sponsored_job/edit/`,\n className: classes.sponsorText\n },\n \"Sponsor Ad\"\n )), /* @__PURE__ */ React.createElement(\"div\", { className: classes.center }, /* @__PURE__ */ React.createElement(\n Button,\n {\n style: { minWidth: 150, padding: \"6px 16px\" },\n disableElevation: true,\n size: \"large\",\n classes: { root: handleButtonStyle(ad).class },\n onClick: handleButtonStyle(ad).callback\n },\n handleButtonStyle(ad).text\n )), /* @__PURE__ */ React.createElement(\"div\", { className: classes.actionsContainer }, /* @__PURE__ */ React.createElement(Tooltip, { title: \"Edit\" }, /* @__PURE__ */ React.createElement(\n IconButton,\n {\n className: `${[\"expired\", \"archived\"].includes(ad.status) ? sharedClasses.disableIcon : \"\"}`,\n onClick: () => handleEdit(ad.indeed_urls.edit)\n },\n /* @__PURE__ */ React.createElement(EditIcon, { fontSize: \"small\", className: classes.iconGrey })\n )), /* @__PURE__ */ React.createElement(Tooltip, { title: \"Clone\" }, /* @__PURE__ */ React.createElement(\n IconButton,\n {\n className: `${[\"expired\", \"archived\"].includes(ad.status) ? sharedClasses.disableIcon : \"\"}`,\n onClick: () => {\n setDialogUrl(ad.indeed_urls.copy);\n setDialogTitle(\"Are you sure you want to clone this ad?\");\n setDialogDescription(\"You will have to repost for your ad to be active on Indeed.\");\n setDialogButtonText(\"Clone ad\");\n setDialogButtonCallback(() => handleCopy);\n setDialogOpen(true);\n }\n },\n /* @__PURE__ */ React.createElement(FileCopyIcon, { className: classes.iconGrey })\n )), ad.status === \"expired\" ? /* @__PURE__ */ React.createElement(Tooltip, { title: \"Archive\" }, /* @__PURE__ */ React.createElement(IconButton, null, /* @__PURE__ */ React.createElement(\n ArchiveIcon,\n {\n className: classes.iconRed,\n onClick: () => {\n setDialogUrl(ad.indeed_urls.archive);\n setDialogTitle(\"Are you sure you want to archive this ad?\");\n setDialogDescription(null);\n setDialogButtonText(\"Archive now\");\n setDialogButtonCallback(() => handleArchive);\n setDialogOpen(true);\n }\n }\n ))) : /* @__PURE__ */ React.createElement(Tooltip, { title: \"Delete\" }, /* @__PURE__ */ React.createElement(\n IconButton,\n {\n disabled: ad.status === \"open\",\n className: `${[\"open\", \"archived\"].includes(ad.status) ? sharedClasses.disableIcon : \"\"}`,\n onClick: () => {\n setDialogUrl(ad.indeed_urls.delete);\n setDialogTitle(\"Are you sure you want to delete this ad?\");\n setDialogDescription(\"Your job ad will be permanently deleted and you will not be able to recover your ad details.\");\n setDialogButtonText(\"Delete ad\");\n setDialogButtonCallback(() => handleDelete);\n setDialogOpen(true);\n }\n },\n /* @__PURE__ */ React.createElement(DeleteIcon, { className: classes.iconRed })\n ))))\n ) : /* @__PURE__ */ React.createElement(\"div\", { className: classes.row }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.title }, \"No ads to display\")), /* @__PURE__ */ React.createElement(\n GenericDialog,\n {\n url: dialogUrl,\n title: dialogTitle,\n description: dialogDescription,\n buttonText: dialogButtonText,\n buttonCallback: dialogButtonCallback,\n callbackLoading: dialogLoading,\n isDialogOpen: dialogOpen,\n setDialogOpen\n }\n ), /* @__PURE__ */ React.createElement(\n Snackbar,\n {\n open: isSnackOpen,\n onClose: () => setIsSnackOpen(false),\n message: snackMessage\n }\n ));\n}\nAdTable.propTypes = {\n jobAds: PropTypes.array.isRequired,\n ads: PropTypes.array.isRequired,\n setAds: PropTypes.func.isRequired\n};\nexport default AdTable;\n","import AdTable from \"./AdTable\";\nexport default AdTable;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n table: {\n display: \"table\",\n borderCollapse: \"collapse\",\n borderSpacing: 0,\n width: \"100%\",\n background: \"#FFF\",\n borderRadius: 8\n },\n rowHeader: {\n \"& span\": {\n fontSize: 14,\n fontWeight: \"600\",\n color: theme.palette.primary.main\n }\n },\n row: {\n display: \"table-row-group\",\n width: \"100%\",\n borderBottom: \"1px solid #f3f3f3\",\n \"& > *\": {\n padding: 24,\n paddingRight: 0,\n display: \"table-cell\",\n fontSize: 14,\n \"&:first-child\": {\n paddingLeft: 44\n },\n \"&:last-child\": {\n paddingRight: 44\n }\n }\n },\n actionsContainer: {\n whiteSpace: \"nowrap\",\n textAlign: \"right\"\n },\n title: {\n color: \"#666666\",\n fontWeight: \"600\"\n },\n center: {\n textAlign: \"center\"\n },\n iconGreen: {\n color: theme.palette.success.main\n },\n iconRed: {\n color: theme.palette.error.main\n },\n iconGrey: {\n color: \"#666666\"\n },\n sponsorText: {\n textDecoration: \"underline\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n }\n}));\n","import React from \"react\";\nimport useStyles from \"../../AdEditor/useStyles\";\nimport sharedStyles from \"../../AdList/useStyles\";\nimport PropTypes from \"prop-types\";\nimport { Dialog, Button, CircularProgress } from \"@material-ui/core\";\nfunction GenericDialog({ url, title, description, buttonText, buttonCallback, callbackLoading, isDialogOpen, setDialogOpen }) {\n const classes = useStyles();\n const sharedClasses = sharedStyles();\n return /* @__PURE__ */ React.createElement(Dialog, { open: isDialogOpen, onClose: () => setDialogOpen(false), classes: { paper: classes.dialog } }, /* @__PURE__ */ React.createElement(\"h4\", null, title), description && /* @__PURE__ */ React.createElement(\"span\", null, description), /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer }, /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: sharedClasses.buttonSecondaryLight,\n onClick: () => setDialogOpen(false),\n style: { padding: \"10px 30px\" }\n },\n \"Cancel\"\n ), /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: buttonText === \"Clone ad\" ? sharedClasses.buttonSecondary : sharedClasses.buttonRed,\n onClick: () => buttonCallback(url),\n style: { padding: \"10px 30px\" }\n },\n callbackLoading ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : buttonText\n )));\n}\nGenericDialog.propTypes = {\n url: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n description: PropTypes.string.isRequired,\n buttonText: PropTypes.string.isRequired,\n buttonCallback: PropTypes.func,\n callbackLoading: PropTypes.bool.isRequired,\n isDialogOpen: PropTypes.bool.isRequired,\n setDialogOpen: PropTypes.func.isRequired\n};\nexport default GenericDialog;\n","import GenericDialog from \"./GenericDialog\";\nexport default GenericDialog;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ButtonBase, Paper, Box } from \"@mui/material\";\nimport TrendingDownIcon from \"@mui/icons-material/TrendingDown\";\nimport TrendingUpIcon from \"@mui/icons-material/TrendingUp\";\nimport TrendingFlatIcon from \"@mui/icons-material/TrendingFlat\";\nimport { getClasses } from \"./styles\";\nexport default function KpiCard(props) {\n const { description, indicator, direction, url } = props;\n const classes = getClasses(props);\n const TRENDING_ICONS = {\n up: /* @__PURE__ */ React.createElement(TrendingUpIcon, { sx: classes.trendingIcon }),\n down: /* @__PURE__ */ React.createElement(TrendingDownIcon, { sx: classes.trendingIcon }),\n steady: /* @__PURE__ */ React.createElement(TrendingFlatIcon, { sx: classes.trendingIcon })\n };\n return /* @__PURE__ */ React.createElement(ButtonBase, { onClick: url ? () => location.href = url : void 0 }, /* @__PURE__ */ React.createElement(Paper, { sx: classes.card }, /* @__PURE__ */ React.createElement(Box, { sx: classes.cardImageContainer }, /* @__PURE__ */ React.createElement(Box, { sx: classes.cardImage })), /* @__PURE__ */ React.createElement(Box, { display: \"flex\", flexDirection: \"column\", alignItems: \"flex-start\" }, /* @__PURE__ */ React.createElement(Box, { display: \"flex\" }, /* @__PURE__ */ React.createElement(\n Box,\n {\n component: \"span\",\n sx: classes.indicator,\n style: { fontSize: indicator ? \"3rem\" : \"2rem\" }\n },\n indicator || \"No Data\"\n )), /* @__PURE__ */ React.createElement(Box, { component: \"h3\", sx: classes.description }, description)), /* @__PURE__ */ React.createElement(Box, { flex: 1 }), TRENDING_ICONS[direction]));\n}\nKpiCard.propTypes = {\n description: PropTypes.string.isRequired,\n indicator: PropTypes.string,\n url: PropTypes.string,\n imageUrl: PropTypes.string.isRequired,\n status: PropTypes.string.isRequired,\n direction: PropTypes.string\n};\n","import KpiCard from \"./KpiCard\";\nexport default KpiCard;\n","import { theme } from \"../../ThemeContext/ThemeObject\";\nconst STATUS_COLOR = {\n good: \"#4ED182\",\n bad: \"#FF2121\",\n average: \"#FF981F\"\n};\nexport const getClasses = (props) => {\n return {\n card: {\n borderLeft: \"4px solid\",\n borderLeftColor: STATUS_COLOR[props.status],\n display: \"flex\",\n alignItems: \"center\",\n padding: \"16px 18px\",\n height: \"124px\",\n width: \"296px\"\n },\n cardImage: {\n height: \"32px\",\n width: \"32px\",\n margin: \"12px\",\n backgroundPosition: \"center\",\n backgroundSize: \"contain\",\n backgroundRepeat: \"no-repeat\",\n backgroundImage: `url(${props.imageUrl})`\n },\n cardImageContainer: {\n backgroundColor: STATUS_COLOR[props.status] || theme.palette.common.black,\n borderRadius: \"50%\",\n marginRight: \"24px\"\n },\n description: {\n marginTop: \"10px\",\n fontSize: \"0.8rem\",\n color: \"#878787\",\n maxHeight: \"1rem\",\n textAlign: \"left\"\n },\n indicator: {\n height: \"36px\",\n fontWeight: \"bold\",\n position: \"relative\",\n lineHeight: \"36px\",\n color: STATUS_COLOR[props.status]\n },\n kpiIcon: {\n height: \"20px\",\n width: \"20px\",\n backgroundPosition: \"center\",\n backgroundSize: \"cover\",\n marginLeft: \"8px\"\n },\n trendingIcon: {\n color: STATUS_COLOR[props.directionStatus],\n fontSize: \"40px !important\"\n },\n cardInner: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\"\n }\n };\n};\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useEffect, useState } from \"react\";\nimport ReactLoading from \"react-loading\";\nimport Api from \"../../lib/Api\";\nimport KpiCard from \"./KpiCard\";\nimport { Button, Grid, Box } from \"@mui/material\";\nimport SettingsIcon from \"@mui/icons-material/Settings\";\nimport KpiSettings from \"./KpiSettings\";\nimport { classes } from \"./styles\";\nfunction KpiDashboard() {\n const [kpiCategories, setCategories] = useState(null);\n const [settingsOpen, setSettingsOpen] = useState(false);\n function getDashboard() {\n return __async(this, null, function* () {\n setCategories(null);\n const response = yield Api.getDashboard();\n setCategories(response);\n });\n }\n useEffect(() => {\n getDashboard();\n }, []);\n if (!kpiCategories) return /* @__PURE__ */ React.createElement(Box, { mb: 4 }, /* @__PURE__ */ React.createElement(\n ReactLoading,\n {\n type: \"cylon\",\n color: \"blue\"\n }\n ));\n return /* @__PURE__ */ React.createElement(Box, { sx: classes.root }, /* @__PURE__ */ React.createElement(Box, { sx: classes.manageMetrics }, /* @__PURE__ */ React.createElement(\n Button,\n {\n sx: classes.button,\n variant: \"contained\",\n startIcon: /* @__PURE__ */ React.createElement(SettingsIcon, null),\n onClick: () => setSettingsOpen(true)\n },\n \"Manage Metrics\"\n )), kpiCategories.map(({ title, cards }) => /* @__PURE__ */ React.createElement(Box, { mb: 4, key: title }, /* @__PURE__ */ React.createElement(Box, { component: \"h2\", sx: classes.category }, title), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 2 }, cards.map((cardProps) => /* @__PURE__ */ React.createElement(Grid, { item: true, key: cardProps.description }, /* @__PURE__ */ React.createElement(KpiCard, __spreadValues({}, cardProps))))))), /* @__PURE__ */ React.createElement(\n KpiSettings,\n {\n open: settingsOpen,\n setOpen: setSettingsOpen,\n getDashboard\n }\n ));\n}\nexport default KpiDashboard;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useState, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Dialog, DialogTitle, DialogContent, CircularProgress, Box, Typography, Grid, DialogActions, Button } from \"@mui/material\";\nimport { capitalCase } from \"change-case\";\nimport Api from \"../../../lib/Api\";\nimport KpiSettingsCard from \"./KpiSettingsCard\";\nimport { withFormValidation } from \"react-form-context-validation\";\nimport { classes } from \"./styles\";\nfunction KpiSettings({ open, setOpen, getDashboard }) {\n const [kpiSettings, setSettings] = useState(null);\n const [saving, setSaving] = useState(false);\n function fetchSettings() {\n return __async(this, null, function* () {\n const { settings } = yield Api.getDashboardSettings();\n setSettings(settings);\n });\n }\n function getCardList(category) {\n const list = Object.keys(kpiSettings[category]);\n list.sort((kpiA, kpiB) => kpiSettings[category][kpiA].position - kpiSettings[category][kpiB].position);\n return list;\n }\n function moveCard(category, kpi, forward) {\n const list = getCardList(category);\n const currentIndex = list.indexOf(kpi);\n const currentPosition = kpiSettings[category][kpi].position;\n const swapWith = list[forward ? currentIndex - 1 : currentIndex + 1];\n if (!swapWith) return;\n const newSettings = __spreadValues({}, kpiSettings);\n newSettings[category][kpi].position = newSettings[category][swapWith].position;\n newSettings[category][swapWith].position = currentPosition;\n setSettings(newSettings);\n }\n function saveSettings() {\n return __async(this, null, function* () {\n setSaving(true);\n yield Api.saveDashboardSettings(kpiSettings);\n setOpen(false);\n getDashboard();\n });\n }\n useEffect(() => {\n fetchSettings();\n }, []);\n return /* @__PURE__ */ React.createElement(\n Dialog,\n {\n open,\n onClose: () => {\n setOpen(false);\n },\n maxWidth: \"lg\"\n },\n /* @__PURE__ */ React.createElement(DialogTitle, { sx: { fontFamily: \"Source Sans Pro\" } }, \"Dashboard Settings\"),\n /* @__PURE__ */ React.createElement(DialogContent, null, kpiSettings ? Object.keys(kpiSettings).map((category) => /* @__PURE__ */ React.createElement(Box, { mb: 4, key: category }, /* @__PURE__ */ React.createElement(Typography, { variant: \"h5\", sx: { fontFamily: \"Source Sans Pro\" } }, \":\", capitalCase(category)), /* @__PURE__ */ React.createElement(Box, { mb: 2 }), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 2 }, getCardList(category).map((kpi) => /* @__PURE__ */ React.createElement(Grid, { item: true, key: kpi }, /* @__PURE__ */ React.createElement(\n KpiSettingsCard,\n __spreadProps(__spreadValues({}, kpiSettings[category][kpi]), {\n title: capitalCase(kpi),\n move: (forward) => moveCard(category, kpi, forward),\n onChange: (field, value) => setSettings(__spreadProps(__spreadValues({}, kpiSettings), {\n [category]: __spreadProps(__spreadValues({}, kpiSettings[category]), {\n [kpi]: __spreadProps(__spreadValues({}, kpiSettings[category][kpi]), {\n [field]: value\n })\n })\n }))\n })\n )))))) : /* @__PURE__ */ React.createElement(Box, { display: \"flex\", justifyContent: \"center\" }, /* @__PURE__ */ React.createElement(CircularProgress, null))),\n /* @__PURE__ */ React.createElement(DialogActions, { sx: classes.buttonContainer }, /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"outlined\",\n onClick: () => setOpen(false),\n sx: classes.cancelButton\n },\n \"Cancel\"\n ), /* @__PURE__ */ React.createElement(Box, { position: \"relative\" }, /* @__PURE__ */ React.createElement(\n Button,\n {\n onClick: saveSettings,\n disabled: saving,\n sx: classes.saveButton\n },\n \"Save Setting\"\n ), saving && /* @__PURE__ */ React.createElement(\n CircularProgress,\n {\n size: 24,\n sx: classes.buttonProgress\n }\n )))\n );\n}\nKpiSettings.propTypes = {\n open: PropTypes.bool.isRequired,\n setOpen: PropTypes.func.isRequired,\n getDashboard: PropTypes.func.isRequired\n};\nexport default withFormValidation(KpiSettings);\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Card, Typography, CardContent, Grid, Box, CardActions, Button, Tooltip, IconButton } from \"@mui/material\";\nimport TextInput from \"../../../inputs/TextInput/TextInput\";\nimport Checkbox from \"../../../inputs/Checkbox/Checkbox\";\nimport Select from \"../../../inputs/Select\";\nimport HelpIcon from \"@mui/icons-material/Help\";\nimport { classes } from \"../styles\";\nconst THRESHOLD_DIRECTION_OPTS = [{\n value: \"<=\",\n label: \"Less than\"\n}, {\n value: \">=\",\n label: \"Greater than\"\n}];\nexport default function KpiSettingsCard({ title, visible, onChange, good, bad, move, tooltip, good_direction, bad_direction }) {\n return /* @__PURE__ */ React.createElement(Card, { variant: \"outlined\", sx: { maxWidth: \"320px\" } }, /* @__PURE__ */ React.createElement(CardContent, null, /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 1, alignItems: \"center\" }, /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(Tooltip, { title: tooltip }, /* @__PURE__ */ React.createElement(IconButton, { size: \"small\" }, /* @__PURE__ */ React.createElement(HelpIcon, { fontSize: \"small\" })))), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true }, /* @__PURE__ */ React.createElement(Typography, { sx: { fontFamily: \"Source Sans Pro\" } }, title)), /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(\n Checkbox,\n {\n onCheck: (checked) => onChange(\"visible\", checked),\n checked: visible\n }\n ))), /* @__PURE__ */ React.createElement(Box, { mb: 1 }), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 1, sx: { marginBottom: \"14px\" } }, /* @__PURE__ */ React.createElement(Grid, { item: true, sx: { width: \"50%\" } }, /* @__PURE__ */ React.createElement(\n Select,\n {\n options: THRESHOLD_DIRECTION_OPTS,\n value: bad_direction,\n onChange: (selected) => onChange(\"bad_direction\", selected),\n valueField: \"value\",\n labelField: \"label\"\n }\n )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true }, /* @__PURE__ */ React.createElement(\n TextInput,\n {\n label: \"Bad Threshold\",\n value: bad,\n onChange: (val) => onChange(\"bad\", val),\n type: \"number\",\n variant: \"standard\"\n }\n ))), /* @__PURE__ */ React.createElement(Box, { mb: 1 }), /* @__PURE__ */ React.createElement(Grid, { container: true, spacing: 1 }, /* @__PURE__ */ React.createElement(Grid, { item: true, sx: { width: \"50%\" } }, /* @__PURE__ */ React.createElement(\n Select,\n {\n options: THRESHOLD_DIRECTION_OPTS,\n value: good_direction,\n onChange: (selected) => onChange(\"good_direction\", selected),\n valueField: \"value\",\n labelField: \"label\"\n }\n )), /* @__PURE__ */ React.createElement(Grid, { item: true, xs: true }, /* @__PURE__ */ React.createElement(\n TextInput,\n {\n label: \"Good Threshold\",\n value: good,\n onChange: (val) => onChange(\"good\", val),\n type: \"number\",\n variant: \"standard\"\n }\n )))), /* @__PURE__ */ React.createElement(CardActions, { sx: { display: \"flex\", justifyContent: \"space-around\", width: \"100%\" } }, /* @__PURE__ */ React.createElement(\n Button,\n {\n size: \"small\",\n variant: \"text\",\n onClick: () => move(true),\n sx: classes.moveButton\n },\n \"Move Forward\"\n ), /* @__PURE__ */ React.createElement(\n Button,\n {\n size: \"small\",\n variant: \"text\",\n onClick: () => move(false),\n sx: classes.moveButton\n },\n \"Move Back\"\n )));\n}\nKpiSettingsCard.propTypes = {\n title: PropTypes.string,\n visible: PropTypes.bool,\n onChange: PropTypes.func,\n good: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n bad: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n move: PropTypes.func,\n tooltip: PropTypes.string,\n bad_direction: PropTypes.string,\n good_direction: PropTypes.string\n};\n","import KpiSettingsCard from \"./KpiSettingsCard\";\nexport default KpiSettingsCard;\n","import KpiSettings from \"./KpiSettings\";\nexport default KpiSettings;\n","export const classes = {\n buttonProgress: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12\n },\n moveButton: {\n textTransform: \"none\",\n fontFamily: \"Source Sans Pro\",\n fontWeight: 700,\n color: \"#084d6d\",\n padding: \"8px 16px\"\n },\n buttonContainer: {\n display: \"flex\",\n columnGap: \"16px\",\n paddingRight: \"24px\",\n paddingBottom: \"24px\"\n },\n saveButton: {\n textTransform: \"none\",\n fontFamily: \"Source Sans Pro\",\n fontWeight: 700,\n color: \"#ffffff\",\n backgroundColor: \"#084d6d\",\n padding: \"8px 16px\",\n \"&:hover\": {\n backgroundColor: \"rgb(5, 53, 76)\"\n }\n },\n cancelButton: {\n textTransform: \"none\",\n fontFamily: \"Source Sans Pro\",\n fontWeight: 700,\n color: \"#084d6d\",\n borderColor: \"#084d6d\",\n padding: \"8px 16px\",\n backgroundColor: \"#ffffff\",\n \"&:hover\": {\n backgroundColor: \"rgb(235, 235, 235)\"\n }\n }\n};\n","import KpiDashboard from \"./KpiDashboard\";\nexport default KpiDashboard;\n","import { theme } from \"../ThemeContext/ThemeObject\";\nexport const classes = {\n category: {\n marginBottom: theme.spacing(2),\n marginTop: 0\n },\n root: {\n position: \"relative\"\n },\n manageMetrics: {\n position: \"absolute\",\n top: 0,\n right: 0\n },\n button: {\n fontFamily: \"source sans pro\",\n fontSize: \"0.85rem\",\n fontWeight: 700,\n backgroundColor: theme.palette.primary.main + \" !important\",\n color: \"#fff !important\",\n textTransform: \"none\",\n borderRadius: \"4px !important\",\n padding: \"10px 20px !important\",\n \"&:hover\": {\n backgroundColor: theme.palette.primary.dark + \" !important\"\n }\n }\n};\n","const getOrCreateTooltip = (chart) => {\n let tooltipEl = chart.canvas.parentNode.querySelector(\"div\");\n if (!tooltipEl) {\n tooltipEl = document.createElement(\"div\");\n tooltipEl.style.color = \"#084D6D\";\n tooltipEl.style.opacity = 1;\n tooltipEl.style.pointerEvents = \"none\";\n tooltipEl.style.position = \"absolute\";\n tooltipEl.style.transform = \"translate(-20%, -70%)\";\n tooltipEl.style.transition = \"all .1s ease\";\n const table = document.createElement(\"table\");\n table.style.margin = \"0px\";\n tooltipEl.appendChild(table);\n chart.canvas.parentNode.appendChild(tooltipEl);\n }\n return tooltipEl;\n};\nconst paperCon = document.createElement(\"img\");\npaperCon.src = \"/images/icons/newNote.svg\";\npaperCon.style.height = \"22px\";\npaperCon.style.paddingTop = \"3px\";\nexport const externalTooltipHandler = (context) => {\n const { chart, tooltip } = context;\n const tooltipEl = getOrCreateTooltip(chart);\n const data = tooltip.body[0].lines[0];\n if (tooltip.opacity === 0) {\n tooltipEl.style.opacity = 0;\n return;\n }\n if (tooltip.body) {\n const title = data.split(\": \")[0];\n const body = data.split(\": \")[1];\n const tableHead = document.createElement(\"thead\");\n const trow = document.createElement(\"tr\");\n trow.style.borderWidth = 0;\n trow.style.background = \"transparent\";\n trow.style.fontSize = \"18px\";\n const th = document.createElement(\"th\");\n th.style.borderWidth = 0;\n th.style.background = \"transparent\";\n th.style.padding = \"0px\";\n th.style.display = \"flex\";\n th.style.alignItems = \"center\";\n th.style.textTransform = \"unset\";\n const titleText = document.createTextNode(title);\n th.appendChild(paperCon);\n th.appendChild(titleText);\n trow.appendChild(th);\n tableHead.appendChild(trow);\n const tableBody = document.createElement(\"tbody\");\n const span = document.createElement(\"span\");\n span.innerText = \" Applicants\";\n span.style.fontSize = \"12px\";\n const tr = document.createElement(\"tr\");\n tr.style.backgroundColor = \"transparent\";\n tr.style.borderWidth = 0;\n const td = document.createElement(\"td\");\n td.style.borderWidth = 0;\n td.style.fontSize = \"12px\";\n td.style.color = \"#666666\";\n td.style.padding = \"0px\";\n td.style.paddingLeft = \"3px\";\n const text = document.createTextNode(body);\n td.appendChild(text);\n td.appendChild(span);\n tr.appendChild(td);\n tableBody.appendChild(tr);\n const tableRoot = tooltipEl.querySelector(\"table\");\n tableRoot.style.background = \"transparent\";\n while (tableRoot.firstChild) {\n tableRoot.firstChild.remove();\n }\n tableRoot.appendChild(tableHead);\n tableRoot.appendChild(tableBody);\n }\n const { offsetLeft: positionX, offsetTop: positionY } = chart.canvas;\n tooltipEl.style.opacity = 1;\n tooltipEl.style.left = positionX + tooltip.caretX + \"px\";\n tooltipEl.style.top = positionY + tooltip.caretY + \"px\";\n tooltipEl.style.font = tooltip.options.bodyFont.string;\n tooltipEl.style.background = \"#FEFEFE80\";\n tooltipEl.style.borderRadius = \"4px\";\n tooltipEl.style.padding = \"6px\";\n tooltipEl.style.backdropFilter = \"blur(4px)\";\n};\n","const getOrCreateTooltip = (chart) => {\n let tooltipEl = chart.canvas.parentNode.querySelector(\"div\");\n if (!tooltipEl) {\n tooltipEl = document.createElement(\"div\");\n tooltipEl.style.color = \"#084D6D\";\n tooltipEl.style.opacity = 1;\n tooltipEl.style.pointerEvents = \"none\";\n tooltipEl.style.position = \"absolute\";\n tooltipEl.style.transform = \"translate(-50%, 30%)\";\n tooltipEl.style.transition = \"all .1s ease\";\n tooltipEl.style.width = \"82px\";\n const table = document.createElement(\"table\");\n table.style.margin = \"0px\";\n tooltipEl.appendChild(table);\n chart.canvas.parentNode.appendChild(tooltipEl);\n }\n return tooltipEl;\n};\nconst eyeCon = document.createElement(\"img\");\neyeCon.src = \"/images/icons/eyeLogo.svg\";\neyeCon.style.height = \"18px\";\neyeCon.style.marginRight = \"6px\";\nexport const externalTooltipHandler = (context) => {\n const { chart, tooltip } = context;\n const tooltipEl = getOrCreateTooltip(chart);\n if (tooltip.opacity === 0) {\n tooltipEl.style.opacity = 0;\n return;\n }\n if (tooltip.body) {\n const titleLines = tooltip.title || [];\n const bodyLines = tooltip.body.map((b) => b.lines);\n const tableHead = document.createElement(\"thead\");\n titleLines.forEach((title) => {\n const tr = document.createElement(\"tr\");\n tr.style.borderWidth = 0;\n tr.style.background = \"transparent\";\n tr.style.fontSize = \"18px\";\n const th = document.createElement(\"th\");\n th.style.borderWidth = 0;\n th.style.background = \"transparent\";\n th.style.padding = \"0px\";\n th.style.display = \"flex\";\n th.style.alignItems = \"center\";\n th.style.textTransform = \"unset\";\n const text = document.createTextNode(title);\n th.appendChild(eyeCon);\n th.appendChild(text);\n tr.appendChild(th);\n tableHead.appendChild(tr);\n });\n const tableBody = document.createElement(\"tbody\");\n bodyLines.forEach((body, i) => {\n const span = document.createElement(\"span\");\n span.innerText = \" Applicants\";\n span.style.fontSize = \"12px\";\n const tr = document.createElement(\"tr\");\n tr.style.backgroundColor = \"transparent\";\n tr.style.borderWidth = 0;\n const td = document.createElement(\"td\");\n td.style.borderWidth = 0;\n td.style.fontSize = \"12px\";\n td.style.color = \"#666666\";\n td.style.padding = \"0px\";\n const text = document.createTextNode(body);\n td.appendChild(text);\n td.appendChild(span);\n tr.appendChild(td);\n tableBody.appendChild(tr);\n });\n const tableRoot = tooltipEl.querySelector(\"table\");\n tableRoot.style.background = \"transparent\";\n while (tableRoot.firstChild) {\n tableRoot.firstChild.remove();\n }\n tableRoot.appendChild(tableHead);\n tableRoot.appendChild(tableBody);\n }\n const { offsetLeft: positionX, offsetTop: positionY } = chart.canvas;\n tooltipEl.style.opacity = 1;\n tooltipEl.style.left = positionX + tooltip.caretX + \"px\";\n tooltipEl.style.top = positionY + tooltip.caretY + \"px\";\n tooltipEl.style.font = tooltip.options.bodyFont.string;\n tooltipEl.style.background = \"#FEFEFE20\";\n tooltipEl.style.borderRadius = \"4px\";\n tooltipEl.style.padding = \"6px\";\n tooltipEl.style.backdropFilter = \"blur(4px)\";\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Stepper, Step, StepLabel, StepConnector } from \"@material-ui/core\";\nimport { withStyles } from \"@material-ui/core/styles\";\nconst QontoConnector = withStyles((theme) => ({\n alternativeLabel: {\n top: 25,\n left: \"calc(-50% + 25px)\",\n right: \"calc(50% + 25px)\"\n },\n active: {\n \"& $line\": {\n borderColor: theme.palette.secondary.main\n }\n },\n completed: {\n \"& $line\": {\n borderColor: theme.palette.secondary.main\n }\n },\n line: {\n borderColor: \"#F3F3F3\",\n borderTopWidth: 3,\n borderRadius: 1\n }\n}))(StepConnector);\nconst StepperComponent = ({ activeStep, steps, classes }) => {\n StepperComponent.propTypes = {\n activeStep: PropTypes.number.isRequired,\n steps: PropTypes.array.isRequired,\n classes: PropTypes.object.isRequired\n };\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepSelect }, /* @__PURE__ */ React.createElement(\n Stepper,\n {\n classes: { root: classes.stepperRoot },\n alternativeLabel: true,\n activeStep,\n connector: /* @__PURE__ */ React.createElement(QontoConnector, null)\n },\n steps.map((step, i) => /* @__PURE__ */ React.createElement(Step, { key: i, classes: { root: `${classes.stepItem}` } }, /* @__PURE__ */ React.createElement(\n StepLabel,\n {\n classes: {\n iconContainer: classes.stepLabelIconContainer,\n label: classes.stepLabelLabel,\n active: classes.stepLabelActive,\n completed: classes.stepLabelCompleted\n },\n StepIconProps: {\n classes: {\n root: classes.stepIconRoot,\n active: classes.stepIconActive,\n completed: classes.stepIconCompleted\n }\n }\n },\n step.label\n )))\n ));\n};\nexport default StepperComponent;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useState, useRef, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { withScoutTheme } from \"../../../../ThemeContext/ThemeContext\";\nimport { Snackbar } from \"@material-ui/core\";\nimport { Step1, Step2, Step3 } from \"./Steps\";\nimport useStyles from \"../../../../IndeedIntegration/AdEditor/useStyles\";\nimport ExitConfirmationDialog from \"../../../../../components/SeekAd/AdEditor/Components/ExitConfirmationDialog\";\nimport StepperComponent from \"../../CustomUIElements/StepperComponent\";\nimport StepperLeftButton from \"../../Buttons/StepperLeftButton\";\nimport StepperRightButton from \"../../Buttons/StepperRightButton\";\nimport JobAdSuccessDialog from \"../../CustomUIElements/JobAdSuccessDialog\";\nimport { handleNext } from \"../handleNext\";\nimport axios from \"axios\";\nimport _ from \"lodash\";\nconst steps = [\n { label: \"Classify Job\", value: \"job_details\" },\n { label: \"Ad Description\", value: \"job_description\" },\n { label: \"Preview Ad\", value: \"preview\" }\n];\nfunction AdEditor({ jobAdParams }) {\n const [activeStep, setActiveStep] = useState(0);\n const [answers, setAnswers] = useState(updateAnswers(jobAdParams));\n const [activeError, setActiveError] = useState(null);\n const [isExitModalOpen, setIsExitModalOpen] = useState(false);\n const [saving, setSaving] = useState(false);\n const [savingDraft, setSavingDraft] = useState(false);\n const [editExistingJob, setEditExistingJob] = useState(false);\n const [isSnackOpen, setIsSnackOpen] = useState(false);\n const [snackMessage, setSnackMessage] = useState(\"\");\n const [isSuccessDialogOpen, setIsSuccessDialogOpen] = useState(false);\n const [checkoutUrl, setCheckoutUrl] = useState(\"\");\n const [checkNewListingUrl, setCheckNewListingUrl] = useState(\"\");\n const classes = useStyles();\n function updateAnswers(params) {\n return {\n featured: params.featured || false,\n title: params.title || \"\",\n description: params.ad_details || \"\",\n classification: params.listing_classification || \"\",\n workType: params.work_type || \"\",\n workLocation: params.work_location || \"\",\n address: params.address || \"\",\n payType: params.pay_type || \"\",\n payRangeLow: params.salary_min || 0,\n payRangeHigh: params.salary_max || 0,\n benefits: params.benefits ? JSON.parse(params.benefits) : [],\n jobPreview: JSON.parse(params.job_preview) || {},\n externalUrl: params.external_url || \"\",\n externalId: params.external_id || \"\",\n advertisement_id: params.advertisement_id || \"\",\n preview_url: params.preview_url || \"\"\n };\n }\n function submit(type) {\n return __async(this, null, function* () {\n try {\n type === \"draft\" ? setSavingDraft(true) : setSaving(true);\n const token = document.querySelector('meta[name=\"csrf-token\"]').content;\n const { data } = yield axios.put(`/admin/job_ads/${jobAdParams.id}/view_jobs_ads/builder`, {\n headers: { \"Content-Type\": \"application/json\" },\n authenticity_token: token,\n page: activeStep + 1,\n draft: type === \"draft\" ? true : false,\n job_ad: __spreadProps(__spreadValues(__spreadValues({\n title: answers.title || \"\",\n ad_details: answers.description || null,\n listing_classification: answers.classification || null,\n work_type: answers.workType || null,\n work_location: answers.workLocation || null,\n address: answers.address || null,\n pay_type: answers.payType || null,\n salary_min: answers.payRangeLow || 0,\n salary_max: answers.payRangeHigh || 0,\n benefits: answers.benefits || []\n }, activeStep === 1 && { featured: answers.featured || false }), activeStep === 1 && answers.featured && { job_preview: answers.jobPreview }), {\n external_url: answers.externalUrl || null,\n external_id: answers.externalId || null,\n advertisement_id: answers.advertisement_id || null,\n preview_url: answers.preview_url || null\n })\n });\n if (type === \"draft\") {\n handleSnack(\"Draft saved\");\n setIsExitModalOpen(false);\n window.history.back();\n } else if (type === \"submit\") {\n setIsSuccessDialogOpen(true);\n } else if (type === \"next\") {\n if (activeStep === 1) {\n setCheckoutUrl(data.checkout_url);\n setCheckNewListingUrl(data.check_new_listing_url);\n } else {\n const newAnswers = updateAnswers(data.job_ad);\n if (!_.isEqual(newAnswers, answers)) {\n setAnswers(newAnswers);\n }\n }\n setActiveStep(activeStep + 1);\n }\n console.log(\"submit\", type);\n } catch (e) {\n console.log(e);\n if (type === \"draft\") {\n handleSnack(\"Unable to save draft\");\n } else if (type === \"submit\") {\n handleSnack(\"Unable to post to ViewJobs. Please check required fields and try again.\");\n } else if (type === \"next\") {\n handleSnack(\n \"Unable to update ViewJobs job ad. Please check required fields and try again.\"\n );\n }\n } finally {\n setSaving(false);\n setSavingDraft(false);\n }\n });\n }\n function handleSnack(message) {\n setIsSnackOpen(true);\n setSnackMessage(message);\n }\n const requiredRefs = {\n title: useRef(null),\n address: useRef(null),\n classification: useRef(null),\n workType: useRef(null),\n workLocation: useRef(null),\n payType: useRef(null),\n salary: useRef(null),\n benefits: useRef(null),\n featured: useRef(null),\n jobPreview: useRef(null)\n };\n const handleNextButton = (type) => {\n handleNext(type, checkErrors, requiredRefs, setActiveError, submit);\n };\n function checkErrors() {\n const errorChecks = {\n title: !answers.title,\n address: !answers.address,\n classification: !answers.classification,\n workType: !answers.workType,\n workLocation: !answers.workLocation,\n payType: !answers.payType,\n salary: !answers.payRangeHigh\n };\n const error = Object.keys(errorChecks).find((ref) => errorChecks[ref]);\n return error;\n }\n useEffect(() => {\n setActiveError(null);\n }, [answers]);\n useEffect(() => {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n }, [activeStep]);\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.containerOuter }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.container }, /* @__PURE__ */ React.createElement(StepperComponent, { activeStep, steps, classes }), activeStep === 0 && /* @__PURE__ */ React.createElement(\n Step1,\n {\n jobAdParams,\n answers,\n setAnswers,\n requiredRefs,\n activeError\n }\n ), activeStep === 1 && /* @__PURE__ */ React.createElement(\n Step2,\n {\n jobAdParams,\n answers,\n setAnswers,\n requiredRefs,\n activeError\n }\n ), activeStep === 2 && /* @__PURE__ */ React.createElement(\n Step3,\n {\n answers,\n setAnswers,\n checkoutUrl,\n checkNewListingUrl\n }\n ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttonContainer }, /* @__PURE__ */ React.createElement(\"a\", { onClick: () => setIsExitModalOpen(true) }, \"Save and exit\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttons }, /* @__PURE__ */ React.createElement(\n StepperLeftButton,\n {\n activeStep,\n onClick: () => setActiveStep(activeStep - 1),\n classes\n }\n ), /* @__PURE__ */ React.createElement(\n StepperRightButton,\n {\n activeStep,\n steps,\n isSaving: saving,\n onClick: () => handleNextButton(activeStep + 1 === steps.length ? \"submit\" : \"next\"),\n classes\n }\n )))), /* @__PURE__ */ React.createElement(\n ExitConfirmationDialog,\n {\n saving,\n savingDraft,\n setActiveStep,\n isExitModalOpen,\n setIsExitModalOpen,\n editExistingJob,\n submit\n }\n ), /* @__PURE__ */ React.createElement(\n JobAdSuccessDialog,\n {\n open: isSuccessDialogOpen,\n onClose: () => window.location.replace(document.referrer),\n answers,\n classes,\n adType: \"viewjobs\"\n }\n ), /* @__PURE__ */ React.createElement(Snackbar, { open: isSnackOpen, onClose: () => setIsSnackOpen(false), message: snackMessage }));\n}\nAdEditor.propTypes = {\n jobAdParams: PropTypes.object.isRequired\n};\nexport default withScoutTheme(AdEditor);\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React from \"react\";\nimport {\n Box,\n TextField,\n FormControlLabel,\n FormControl,\n FormLabel,\n FormHelperText,\n Select,\n MenuItem,\n Radio,\n RadioGroup,\n FormGroup,\n Checkbox,\n Grid,\n InputAdornment\n} from \"@material-ui/core\";\nimport sharedStyles from \"../../../../../IndeedIntegration/AdEditor/useStyles\";\nimport usestyles from \"../useStyles\";\nimport { jobAdPropTypes } from \"../../../../../NewUI/Components/Multiposter/types\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport AddressInput from \"../../../../../NewUI/Components/CustomUIElements/AddressInput\";\nimport { parseSalary } from \"../../salaryHelper\";\nfunction Step1({ answers, setAnswers, jobAdParams, requiredRefs, activeError }) {\n const [value, setValue] = React.useState({\n description: [answers.address].filter((cur) => cur).join(\", \")\n });\n const sharedClasses = sharedStyles();\n const classes = usestyles();\n function handleMultiCheck(value2, state, key) {\n state.includes(value2) ? setAnswers(__spreadProps(__spreadValues({}, answers), { [key]: state.filter((id) => id !== value2) })) : setAnswers(__spreadProps(__spreadValues({}, answers), { [key]: [...answers[key], value2] }));\n }\n return /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.stepContainer }, /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.title,\n fullWidth: true,\n className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: sharedClasses.label }, \"Job Title\"),\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.title,\n className: sharedClasses.textField,\n variant: \"outlined\",\n value: answers.title,\n onChange: (e) => {\n const newValue = e.target.value;\n if (newValue.length <= 52 && newValue !== answers.title) {\n setAnswers(__spreadProps(__spreadValues({}, answers), { title: newValue }));\n }\n },\n InputProps: {\n endAdornment: activeError === requiredRefs.title && /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n }\n }\n ),\n /* @__PURE__ */ React.createElement(FormHelperText, { className: sharedClasses.helperText }, answers.title.length, \"/52\")\n ), /* @__PURE__ */ React.createElement(\n AddressInput,\n {\n requiredRef: requiredRefs.address,\n classes: sharedClasses,\n value,\n setValue,\n activeError: activeError === requiredRefs.address,\n answers,\n setAnswers,\n viewJobsAd: true\n }\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.classification,\n fullWidth: true,\n className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: sharedClasses.label }, \"Classification\"),\n /* @__PURE__ */ React.createElement(\n Select,\n {\n classes: { select: sharedClasses.input },\n variant: \"outlined\",\n value: answers.classification,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { classification: e.target.value })),\n displayEmpty: true,\n renderValue: (value2) => value2 || /* @__PURE__ */ React.createElement(\"span\", { className: sharedClasses.placeholder }, \"Select an option\"),\n endAdornment: activeError === requiredRefs.classification && /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n },\n jobAdParams.classifications.map((classification) => /* @__PURE__ */ React.createElement(MenuItem, { key: classification[1], value: classification[0] }, classification[0]))\n )\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.workType,\n fullWidth: true,\n className: `${sharedClasses.formControl}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: sharedClasses.label }, \"Work type\", activeError === requiredRefs.workType && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n /* @__PURE__ */ React.createElement(\n RadioGroup,\n {\n value: answers.workType,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { workType: e.target.value }))\n },\n jobAdParams.worktypes.map((type) => /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n key: type[1],\n label: type[0],\n value: type[0],\n control: /* @__PURE__ */ React.createElement(Radio, { color: \"secondary\" })\n }\n ))\n )\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.workLocation,\n fullWidth: true,\n className: `${sharedClasses.formControl}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: sharedClasses.label }, \"Work location\", activeError === requiredRefs.workLocation && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n /* @__PURE__ */ React.createElement(\n RadioGroup,\n {\n value: answers.workLocation,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { workLocation: e.target.value }))\n },\n jobAdParams.worklocations.map((location) => /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n key: location[1],\n label: location[0],\n value: location[0],\n control: /* @__PURE__ */ React.createElement(Radio, { color: \"secondary\" })\n }\n ))\n )\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.payType,\n fullWidth: true,\n className: `${sharedClasses.formControl}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: sharedClasses.label }, \"Pay details\", activeError === requiredRefs.payType && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n /* @__PURE__ */ React.createElement(\n RadioGroup,\n {\n value: answers.payType,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { payType: e.target.value }))\n },\n jobAdParams.paytypes.map((type) => /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n key: type[1],\n label: type[0],\n value: type[0],\n control: /* @__PURE__ */ React.createElement(Radio, { color: \"secondary\" })\n }\n ))\n )\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.salary,\n fullWidth: true,\n className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: sharedClasses.label }, \"Pay Range\", /* @__PURE__ */ React.createElement(\"span\", { className: sharedClasses.asterisk }, \" *\"), activeError === requiredRefs.salary && /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n /* @__PURE__ */ React.createElement(\"span\", { className: sharedClasses.subLabel }, \"Enter a pay range to offer candidates\"),\n /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: sharedClasses.controlledNumberInput } }, /* @__PURE__ */ React.createElement(\n Grid,\n {\n item: true,\n container: true,\n alignContent: \"center\",\n alignItems: \"center\",\n justifyContent: \"center\",\n wrap: \"nowrap\"\n },\n /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { m: 1, ml: 0 }, /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.salary,\n className: sharedClasses.textField,\n variant: \"outlined\",\n onBlur: () => {\n if (answers.payRangeLow > answers.payRangeHigh)\n setAnswers(__spreadProps(__spreadValues({}, answers), { payRangeHigh: answers.payRangeLow }));\n },\n value: Number(answers.payRangeLow).toLocaleString(),\n InputProps: {\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"From\")\n },\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { payRangeLow: parseSalary(e.target.value) }))\n }\n )), /* @__PURE__ */ React.createElement(Box, { m: 1 }, /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.salary,\n className: sharedClasses.textField,\n variant: \"outlined\",\n value: Number(answers.payRangeHigh).toLocaleString(),\n onBlur: () => {\n if (answers.payRangeHigh < answers.payRangeLow)\n setAnswers(__spreadProps(__spreadValues({}, answers), { payRangeHigh: answers.payRangeLow }));\n },\n InputProps: {\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"To\")\n },\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { payRangeHigh: parseSalary(e.target.value) }))\n }\n )), /* @__PURE__ */ React.createElement(\"span\", { className: classes.salaryIntervalLabel }, \"per \", answers.payType === \"Annual salary\" ? \"Year\" : \"Hour\"))\n ))\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n fullWidth: true,\n className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: sharedClasses.label }, \"Benefits\"),\n /* @__PURE__ */ React.createElement(FormGroup, null, /* @__PURE__ */ React.createElement(Grid, { container: true }, jobAdParams.extrabenefits.map((benefit) => {\n var _a;\n return /* @__PURE__ */ React.createElement(Grid, { key: benefit[1], item: true, xs: 6 }, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: benefit[0],\n value: benefit[0],\n control: /* @__PURE__ */ React.createElement(\n Checkbox,\n {\n checked: (_a = answers == null ? void 0 : answers.benefits) == null ? void 0 : _a.includes(benefit[0]),\n onChange: (e) => handleMultiCheck(e.target.value, answers.benefits, \"benefits\")\n }\n )\n }\n ));\n })))\n ));\n}\nStep1.propTypes = jobAdPropTypes;\nexport default Step1;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React, { useEffect, useState, useMemo } from \"react\";\nimport {\n Box,\n FormControl,\n FormLabel,\n FormHelperText,\n TextField,\n FormControlLabel,\n Switch\n} from \"@material-ui/core\";\nimport sharedStyles from \"../../../../../IndeedIntegration/AdEditor/useStyles\";\nimport usestyles from \"../useStyles\";\nimport { jobAdPropTypes } from \"../../../../../NewUI/Components/Multiposter/types\";\nconst MAX_KEY_SELLING_POINTS = 3;\nconst MAX_CHAR_LIMIT = 80;\nfunction Step2({ answers, setAnswers, jobAdParams, requiredRefs, activeError }) {\n var _a, _b;\n const sharedClasses = sharedStyles();\n const classes = usestyles();\n return /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Feature Job on Viewjobs\"), /* @__PURE__ */ React.createElement(Box, { className: classes.switchContainer }, /* @__PURE__ */ React.createElement(FormLabel, null, \"From $350 + GST, boost visibility and attract more candidates.\"), /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n control: /* @__PURE__ */ React.createElement(\n Switch,\n {\n checked: answers.featured,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { featured: !answers.featured })),\n color: \"secondary\"\n }\n ),\n label: \"\"\n }\n )), answers.featured && /* @__PURE__ */ React.createElement(\n FormControl,\n {\n fullWidth: true,\n className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: false, className: sharedClasses.label }, \"Short Summary (Optional)\"),\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n className: sharedClasses.textField,\n variant: \"outlined\",\n value: answers.jobPreview.summary,\n onChange: (e) => e.target.value.length <= 150 && setAnswers(__spreadProps(__spreadValues({}, answers), {\n jobPreview: __spreadProps(__spreadValues({}, answers.jobPreview), { summary: e.target.value })\n }))\n }\n ),\n /* @__PURE__ */ React.createElement(FormHelperText, { className: sharedClasses.helperText }, ((_b = (_a = answers.jobPreview) == null ? void 0 : _a.summary) == null ? void 0 : _b.length) || 0, \"/150\")\n ), answers.featured && /* @__PURE__ */ React.createElement(\n FormControl,\n {\n fullWidth: true,\n className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: false, className: sharedClasses.label }, \"Key Selling Points (Optional)\"),\n /* @__PURE__ */ React.createElement(\"span\", { className: sharedClasses.subLabel }, \"Enter \", MAX_KEY_SELLING_POINTS, \" key selling points to attract candidates to view your role\"),\n Array.from({ length: MAX_KEY_SELLING_POINTS }).map((_, index) => {\n var _a2, _b2;\n return /* @__PURE__ */ React.createElement(\n FormControl,\n {\n key: index,\n fullWidth: true,\n className: `${sharedClasses.formControl} ${sharedClasses.medium}`\n },\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n className: sharedClasses.textField,\n variant: \"outlined\",\n value: answers.jobPreview[`key${index + 1}`],\n onChange: (e) => e.target.value.length <= MAX_CHAR_LIMIT && setAnswers(__spreadProps(__spreadValues({}, answers), {\n jobPreview: __spreadProps(__spreadValues({}, answers.jobPreview), { [`key${index + 1}`]: e.target.value })\n }))\n }\n ),\n /* @__PURE__ */ React.createElement(FormHelperText, { className: sharedClasses.helperText }, ((_b2 = (_a2 = answers.jobPreview) == null ? void 0 : _a2[`key${index + 1}`]) == null ? void 0 : _b2.length) || 0, \"/\", MAX_CHAR_LIMIT)\n );\n })\n ), /* @__PURE__ */ React.createElement(\"h4\", null, \"Job description\"), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n fullWidth: true,\n style: { margin: \"0.5rem 0 1.5rem 0\" },\n className: `preview-html ${classes.formControl} ${classes.large}`\n },\n /* @__PURE__ */ React.createElement(\"div\", { dangerouslySetInnerHTML: { __html: answers.description || \"No description\" } })\n ));\n}\nStep2.propTypes = jobAdPropTypes;\nexport default Step2;\n","import React from \"react\";\nimport { Box } from \"@mui/material\";\nimport sharedStyles from \"../../../../../IndeedIntegration/AdEditor/useStyles\";\nimport { jobAdPropTypes } from \"../../../../../NewUI/Components/Multiposter/types\";\nimport renderHTML from \"react-render-html\";\nconst MAX_KEY_SELLING_POINTS = 3;\nfunction Step3({ answers }) {\n const sharedClasses = sharedStyles();\n return /* @__PURE__ */ React.createElement(Box, { className: sharedClasses.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Preview Ad\"), /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewContainer }, /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewTitle }, `${answers.title} (${answers.workType})`), /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: sharedClasses.previewDetails\n },\n `${answers.address} (${answers.workLocation})`\n ), /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: sharedClasses.previewDetails\n },\n `$${answers.payRangeLow}-$${answers.payRangeHigh}`\n ), answers.benefits && /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewDetails }, answers.benefits.map((benefit, index) => /* @__PURE__ */ React.createElement(\"span\", { key: index }, benefit, index < answers.benefits.length - 1 && \" \\u2022 \"))), answers.featured && /* @__PURE__ */ React.createElement(Box, { sx: { marginTop: \"1rem\" } }, /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewDetails }, \"Featured Job on Viewjobs\"), /* @__PURE__ */ React.createElement(\"br\", null), /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewDetails }, answers.jobPreview.summary), Array.from({ length: MAX_KEY_SELLING_POINTS }).map((_, index) => /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewDetails, key: index }, \"\\u2022 \", answers.jobPreview[`key${index + 1}`]))), /* @__PURE__ */ React.createElement(\"div\", { className: sharedClasses.previewContent }, renderHTML(answers.description))));\n}\nStep3.propTypes = jobAdPropTypes;\nexport default Step3;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n switchContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n flexDirection: \"row\"\n },\n descriptionLabel: {\n marginTop: 50\n },\n textField: {\n marginTop: 10\n },\n salaryIntervalLabel: {\n width: 150\n },\n formControl: {\n marginTop: 50\n },\n large: {\n maxWidth: 600\n },\n previewButtons: {\n display: \"flex\",\n marginTop: 30,\n \"& div\": {\n borderRadius: 6,\n fontWeight: \"600\",\n lineHeight: \"20px\",\n background: \"#2557A7\",\n color: \"#FFF\",\n fontSize: 20,\n marginRight: 10,\n padding: \"9px 24px\",\n \"&:hover\": {\n background: \"#3d6fbf\",\n cursor: \"pointer\"\n }\n }\n }\n}));\n","import { ContentState, EditorState } from \"draft-js\";\nimport htmlToDraft from \"html-to-draftjs\";\nexport function handleDraftValue(e) {\n const contentBlock = htmlToDraft(e);\n if (contentBlock) {\n const contentState = ContentState.createFromBlockArray(contentBlock.contentBlocks);\n const editorState = EditorState.createWithContent(contentState);\n return editorState;\n }\n return null;\n}\n","export const handleNext = (type, checkErrors, requiredRefs, setActiveError, submit) => {\n const errorRef = checkErrors();\n if (errorRef) {\n const ref = requiredRefs[errorRef];\n setActiveError(ref);\n window.scrollTo({ top: ref.current.offsetTop - 120, behavior: \"smooth\" });\n } else {\n submit(type);\n }\n};\n","export const parseSalary = (value) => {\n return parseFloat(value.split(\",\").join(\"\")) || 0;\n};\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useState, useEffect, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { usePreviewSeekAd } from \"../../SeekAd/hooks/usePreviewSeekAd\";\nimport { withScoutTheme } from \"../../ThemeContext/ThemeContext\";\nimport { Step1, Step2, Step3, Step4 } from \"./Steps\";\nimport { Button, Dialog, Snackbar, CircularProgress } from \"@material-ui/core\";\nimport useStyles from \"./useStyles\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\nimport axios from \"axios\";\nimport ExitConfirmationDialog from \"./Components/ExitConfirmationDialog\";\nimport StepperComponent from \"../../../components/NewUI/Components/CustomUIElements/StepperComponent\";\nimport JobAdSuccessDialog from \"../../../components/NewUI/Components/CustomUIElements/JobAdSuccessDialog\";\nconst steps = [\n { label: \"Classify Job\", value: \"classify_job\" },\n { label: \"What Jobseekers See In Search Results\", value: \"search_results\" },\n { label: \"Ad Description\", value: \"description\" },\n { label: \"Preview\", value: \"preview\" },\n { label: \"Publish\", value: \"publish\" }\n];\nfunction AdEditor({\n jobAdId,\n apiKey,\n jobId,\n linkOutEnabled,\n privacyOverLimit,\n seek_billing_reference,\n seek_billing_reference_flag,\n job_url_prop\n}) {\n const [saving, setSaving] = useState(false);\n const [savingDraft, setSavingDraft] = useState(false);\n const [isSnackOpen, setIsSnackOpen] = useState(false);\n const [brandingEnabled, setBrandingEnabled] = useState(false);\n const [maxBulletPoints, setMaxBulletPoints] = useState(0);\n const [snackMessage, setSnackMessage] = useState(\"\");\n const [isSuccessDialogOpen, setIsSuccessDialogOpen] = useState(false);\n const [failedSeekDialogOpen, setFailedSeekDialogOpen] = useState(false);\n const [failedSeekDialogMessage, setfailedSeekDialogMessage] = useState(\"\");\n const [activeStep, setActiveStep] = useState(0);\n const [isExitModalOpen, setIsExitModalOpen] = useState(false);\n const [getSeekAdBrandingData, setGetSeekAdBrandingData] = useState(null);\n const [answers, setAnswers] = useState(null);\n const [activeError, setActiveError] = useState(null);\n const [activeErrorMessage, setActiveErrorMessage] = useState(null);\n const [editExistingJob, setEditExistingJob] = useState(false);\n const classes = useStyles();\n const { previewUrl } = usePreviewSeekAd(jobAdId);\n function submit(type) {\n return __async(this, null, function* () {\n try {\n type === \"draft\" ? setSavingDraft(true) : setSaving(true);\n yield axios.put(\n `/api/v4/seek/job_ads/${jobAdId}`,\n { job_ad: answers, draft: type === \"draft\" ? true : false },\n {\n headers: { \"X-api-authenticate\": apiKey }\n }\n );\n if (activeStep === 3 && type !== \"draft\") {\n try {\n answers.advertisement_id ? yield axios.put(`/api/v4/seek/job_ads/${jobAdId}/ad_posting`, null, {\n headers: { \"X-api-authenticate\": apiKey }\n }) : yield axios.post(`/api/v4/seek/job_ads/${jobAdId}/ad_posting`, null, {\n headers: { \"X-api-authenticate\": apiKey }\n });\n setIsSuccessDialogOpen(true);\n } catch (e) {\n setFailedSeekDialogOpen(true);\n return;\n }\n }\n if (type === \"draft\") {\n handleSnack(\"Draft saved\");\n setIsExitModalOpen(false);\n window.location.href = `/admin/jobs/${jobId}/job_ads`;\n } else if (type === \"submit\") {\n setIsSuccessDialogOpen(true);\n } else if (type === \"next\") {\n setActiveStep(activeStep + 1);\n }\n } catch (e) {\n if (type === \"draft\") {\n handleSnack(\"Unable to save draft\");\n } else if (type === \"submit\") {\n handleSnack(\"Unable to post to SEEK. Please check required fields and try again.\");\n } else if (type === \"next\") {\n setActiveStep(activeStep + 1);\n }\n } finally {\n setSaving(false);\n setSavingDraft(false);\n }\n });\n }\n function handleSnack(message) {\n setIsSnackOpen(true);\n setSnackMessage(message);\n }\n function getJobData() {\n return __async(this, null, function* () {\n try {\n const { data } = yield axios.get(`/api/v4/seek/job_ads/${jobAdId}`, {\n headers: { \"X-api-authenticate\": apiKey }\n });\n setAnswers(data);\n setEditExistingJob(data.advertisement_id && data.advertisement_published_at ? true : false);\n setActiveStep(0);\n } catch (e) {\n }\n });\n }\n useEffect(() => {\n getJobData();\n }, []);\n useEffect(() => {\n setActiveError(null);\n }, [answers]);\n useEffect(() => {\n window.scrollTo({ top: 0, behavior: \"smooth\" });\n }, [activeStep]);\n const requiredRefs = {\n title: useRef(null),\n listing_location: useRef(null),\n category: useRef(null),\n salary: useRef(null),\n description: useRef(null),\n ad_details: useRef(null),\n link_out: useRef(null),\n video_embed_code: useRef(null),\n ad_type: useRef(null)\n };\n function setError(data) {\n setActiveError(requiredRefs[Object.keys(data)[0]]);\n setActiveErrorMessage(Object.values(data)[0]);\n }\n function handleNext(type) {\n return __async(this, null, function* () {\n const errorRef = checkErrors();\n if (errorRef) {\n const ref = requiredRefs[errorRef];\n setActiveError(ref);\n window.scrollTo({ top: ref.current.offsetTop - 120, behavior: \"smooth\" });\n } else {\n try {\n const { data } = yield axios.post(\n `/api/v4/seek/job_ads/${jobAdId}/validate`,\n { job_ad: __spreadProps(__spreadValues({}, answers), { current_step: steps[activeStep].value }) },\n {\n headers: { \"X-api-authenticate\": apiKey }\n }\n );\n if (data.success) {\n submit(type);\n if (activeError) {\n setActiveError(null);\n setActiveErrorMessage(null);\n }\n } else {\n setFailedSeekDialogOpen(true);\n setfailedSeekDialogMessage(data.error_message);\n }\n } catch (e) {\n return e;\n }\n }\n });\n }\n function checkErrors() {\n const error = Object.keys(requiredRefs).find((ref) => {\n if (activeStep === 0) {\n if ([\"title\", \"listing_location\"].includes(ref)) {\n return !answers[ref] && ref;\n } else if (ref === \"category\") {\n return answers.use_suggested_classification ? !answers.listing_sub_classification && ref : !answers.listing_sub_classification && !answers.listing_classification && ref;\n } else if (ref === \"salary\") {\n let difference = answers.salary_max - answers.salary_min;\n return !answers.salary_min || !answers.salary_max || answers.salary_min < 1e5 && difference > 1e5 && ref;\n } else if (ref === \"ad_type\") {\n return !answers[ref] && ref;\n }\n } else if (activeStep === 1) {\n if ([\"description\"].includes(ref)) {\n return !answers[ref] && ref;\n } else if (ref === \"video_embed_code\" && answers.video_embed_code !== \"\") {\n if (!answers.video_embed_code) return;\n const regex = /https:\\/\\/((www\\.youtube\\.com\\/embed|youtu\\.be)\\/[\\w-]+(\\?[\\w-]+=[\\w-]*(&[\\w-]+=[\\w-]*)*)?|www\\.youtube\\.com\\/watch\\?v=[\\w-]+(&[\\w-]+=[\\w-]*)*)/;\n return !answers.video_embed_code.match(regex) && ref;\n }\n } else if (activeStep === 2) {\n if ([\"title\", \"ad_details\"].includes(ref)) {\n return !answers[ref] && ref;\n }\n }\n });\n return error;\n }\n const buttonName = () => {\n if (activeStep + 2 >= steps.length) {\n return editExistingJob ? \"Update\" : \"Publish\";\n } else {\n return \"Next\";\n }\n };\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.containerOuter }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.container }, /* @__PURE__ */ React.createElement(StepperComponent, { activeStep, steps, classes }), answers && activeStep === 0 && /* @__PURE__ */ React.createElement(\n Step1,\n {\n answers,\n setAnswers,\n apiKey,\n jobId,\n jobAdId,\n requiredRefs,\n activeError,\n setBrandingEnabled,\n setMaxBulletPoints,\n seek_billing_reference,\n seek_billing_reference_flag\n }\n ), answers && activeStep === 1 && /* @__PURE__ */ React.createElement(\n Step2,\n {\n answers,\n setAnswers,\n getSeekAdBrandingData,\n setGetSeekAdBrandingData,\n apiKey,\n jobAdId,\n requiredRefs,\n activeError,\n activeErrorMessage,\n maxBulletPoints,\n brandingEnabled\n }\n ), answers && activeStep === 2 && /* @__PURE__ */ React.createElement(\n Step3,\n {\n setActiveStep,\n answers,\n setAnswers,\n requiredRefs,\n activeError,\n linkOutEnabled,\n privacyOverLimit,\n activeErrorMessage,\n jobId,\n setActiveError,\n setActiveErrorMessage,\n job_url_prop\n }\n ), answers && (activeStep === 3 || activeStep === 4) && /* @__PURE__ */ React.createElement(Step4, { answers }), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttonContainer }, /* @__PURE__ */ React.createElement(\"a\", { onClick: () => setIsExitModalOpen(true) }, \"Save and exit\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttons }, activeStep !== 0 && /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: classes.buttonSecondaryLight,\n onClick: () => {\n setAnswers(__spreadProps(__spreadValues({}, answers), { current_step: steps[activeStep - 1].value }));\n setActiveStep(activeStep - 1);\n }\n },\n /* @__PURE__ */ React.createElement(ChevronLeftIcon, null)\n ), activeStep === 3 && /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: `${classes.buttonSecondary} preview`,\n style: { minWidth: 130 },\n href: previewUrl,\n target: \"_blank\"\n },\n \"Preview on SEEK\"\n ), activeStep !== 4 && /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: classes.buttonSecondary,\n id: \"SeekNextStepMultiposterBtn\",\n style: { minWidth: 130 },\n onClick: () => handleNext(activeStep + 1 === steps.length ? \"submit\" : \"next\"),\n endIcon: saving ? null : /* @__PURE__ */ React.createElement(ChevronRightIcon, null)\n },\n saving ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : buttonName()\n )))), /* @__PURE__ */ React.createElement(\n ExitConfirmationDialog,\n {\n saving,\n savingDraft,\n setActiveStep,\n isExitModalOpen,\n setIsExitModalOpen,\n editExistingJob,\n submit\n }\n ), /* @__PURE__ */ React.createElement(\n JobAdSuccessDialog,\n {\n open: isSuccessDialogOpen,\n onClose: () => window.location.replace(document.referrer),\n answers,\n classes,\n adType: \"seek\",\n jobId\n }\n ), /* @__PURE__ */ React.createElement(\n Dialog,\n {\n open: failedSeekDialogOpen,\n onClose: () => {\n setFailedSeekDialogOpen(false);\n setfailedSeekDialogMessage(\"\");\n },\n classes: { paper: classes.failDialog }\n },\n /* @__PURE__ */ React.createElement(\"h4\", null, \"Posting Failed\"),\n /* @__PURE__ */ React.createElement(\"span\", null, failedSeekDialogMessage || \"Please check all your details again and republish.\"),\n /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer }, /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: classes.buttonSecondary,\n onClick: () => {\n setFailedSeekDialogOpen(false);\n setfailedSeekDialogMessage(\"\");\n setActiveStep(0);\n }\n },\n /* @__PURE__ */ React.createElement(\"span\", { style: { marginRight: \"0.5rem\" } }, \"Ok\"),\n \" >\"\n ))\n ), /* @__PURE__ */ React.createElement(Snackbar, { open: isSnackOpen, onClose: () => setIsSnackOpen(false), message: snackMessage }));\n}\nAdEditor.propTypes = {\n jobAdId: PropTypes.number.isRequired,\n jobId: PropTypes.number.isRequired,\n apiKey: PropTypes.string.isRequired,\n linkOutEnabled: PropTypes.bool.isRequired,\n privacyOverLimit: PropTypes.bool,\n seek_billing_reference: PropTypes.bool,\n seek_billing_reference_flag: PropTypes.bool,\n job_url_prop: PropTypes.string\n};\nexport default withScoutTheme(AdEditor);\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useState, useEffect } from \"react\";\nimport { Radio, Grid, CircularProgress, withStyles } from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nimport axios from \"axios\";\nconst PinkRadio = withStyles({\n root: {\n \"&$checked\": {\n color: \"#E60278\"\n }\n },\n checked: {}\n})((props) => /* @__PURE__ */ React.createElement(Radio, __spreadValues({ color: \"default\" }, props)));\nfunction AdProductSelection({\n debouncedTitle,\n answers,\n setAnswers,\n requiredRefs,\n jobAdId,\n setMaxBulletPoints,\n setBrandingEnabled\n}) {\n const [seekAdProduct, setSeekAdProduct] = useState(null);\n const [adProductInfo, setAdProductInfo] = useState(\"\");\n const [loadingSeekAdProduct, setLoadingSeekAdProduct] = useState(true);\n const [selectedId, setSelectedId] = useState(null);\n const classes = useStyles();\n const setSelectedValue = (value) => {\n setSelectedId(value);\n setAnswers(__spreadProps(__spreadValues({}, answers), { ad_type: value }));\n };\n const handleChangeAdType = (ad) => {\n setSelectedValue(ad.id.value);\n setBrandingEnabled(!!ad.features.branding);\n setMaxBulletPoints(\n ad.features.searchBulletPoints ? Number(ad.features.searchBulletPoints.limit) : 0\n );\n };\n useEffect(() => {\n const getSeekAdProducts = (url) => __async(this, null, function* () {\n setLoadingSeekAdProduct(true);\n try {\n const { data } = yield axios.get(url, {\n params: {\n listing_sub_classification: answers.listing_sub_classification,\n listing_location: answers.listing_location,\n title: debouncedTitle,\n job_ad_id: jobAdId\n }\n });\n const { products, information } = data.data.advertisementProducts;\n setSeekAdProduct(products);\n setAdProductInfo(information);\n products.forEach((product) => {\n if (product.selected) {\n handleChangeAdType(product);\n }\n });\n } catch (exception) {\n console.error(exception);\n setSeekAdProduct(null);\n } finally {\n setLoadingSeekAdProduct(false);\n }\n });\n answers.listing_sub_classification && debouncedTitle && answers.listing_location && getSeekAdProducts(`/api/v4/seek/job_ads/${jobAdId}/ad_products`);\n }, [answers.listing_location, answers.listing_sub_classification, debouncedTitle, jobAdId]);\n if (loadingSeekAdProduct) {\n return /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" });\n }\n return /* @__PURE__ */ React.createElement(Grid, { container: true }, seekAdProduct && seekAdProduct.map((ad, index) => {\n const id = ad.id.value;\n const selected = selectedId === id;\n return /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, sm: 12, md: Math.floor(12 / seekAdProduct.length), key: index }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.seekAdType, onClick: () => handleChangeAdType(ad) }, /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: \"seekAdheaderWrapper\",\n style: index === 0 || index === seekAdProduct.length - 1 ? { borderRadius: index === 0 ? \"5px 0 0 0\" : \"0 5px 0 0\" } : {}\n },\n \"Pay using your SEEK Contract\"\n ), /* @__PURE__ */ React.createElement(\n \"div\",\n {\n style: selected ? { border: \"#E60278 1px solid\", height: \"calc(100% - 2rem)\" } : { border: \"#E9E8E8 1px solid\", height: \"calc(100% - 2rem)\" }\n },\n /* @__PURE__ */ React.createElement(\"div\", { className: \"seekRadioRadioBtnWrapper\", ref: requiredRefs.ad_type }, /* @__PURE__ */ React.createElement(\n PinkRadio,\n {\n checked: selected,\n onChange: () => handleChangeAdType(ad),\n value: id,\n name: \"radio-buttons\",\n inputProps: { \"aria-label\": \"A\" }\n }\n )),\n /* @__PURE__ */ React.createElement(\"h4\", null, ad.label),\n /* @__PURE__ */ React.createElement(\"div\", null, ad.price && ad.price.summary),\n /* @__PURE__ */ React.createElement(\"div\", { className: classes.seekEmbeddedHTML }, /* @__PURE__ */ React.createElement(\"div\", null, ad.description), /* @__PURE__ */ React.createElement(\"ul\", null, ad.sellingPoints.map((sp, index2) => /* @__PURE__ */ React.createElement(\"li\", { key: index2 }, sp.text))))\n )));\n }), /* @__PURE__ */ React.createElement(\"p\", { className: classes.adProductInfo }, adProductInfo));\n}\nAdProductSelection.propTypes = {\n answers: PropTypes.object.isRequired,\n setAnswers: PropTypes.func.isRequired,\n requiredRefs: PropTypes.object.isRequired,\n jobAdId: PropTypes.number,\n setMaxBulletPoints: PropTypes.func.isRequired,\n setBrandingEnabled: PropTypes.func.isRequired,\n debouncedTitle: PropTypes.string\n};\nexport default AdProductSelection;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useState, useEffect } from \"react\";\nimport { Radio, Grid, CircularProgress, withStyles } from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nimport axios from \"axios\";\nconst PinkRadio = withStyles({\n root: {\n \"&$checked\": {\n color: \"#E60278\"\n }\n },\n checked: {}\n})((props) => /* @__PURE__ */ React.createElement(Radio, __spreadValues({ color: \"default\" }, props)));\nfunction AdSelection({\n answers,\n setAnswers,\n requiredRefs,\n jobAdId,\n setMaxBulletPoints,\n setBrandingEnabled\n}) {\n const [getSeekAdSelectionData, setGetSeekAdSelectionData] = useState(null);\n const [loadingSeekAdType, setLoadingSeekAdType] = useState(true);\n const [selectedValue, setSelectedValue] = React.useState(answers.ad_type);\n const classes = useStyles();\n const handleChangeAdType = (event) => {\n const adType = event.target.value;\n setSelectedValue(adType);\n setAnswers(__spreadProps(__spreadValues({}, answers), { ad_type: adType }));\n };\n useEffect(() => {\n if (selectedValue === \"Classic\") {\n setMaxBulletPoints(0);\n setBrandingEnabled(false);\n } else {\n setMaxBulletPoints(3);\n setBrandingEnabled(true);\n }\n }, [selectedValue, setMaxBulletPoints, setBrandingEnabled]);\n useEffect(() => {\n const getSeekAdType = (url) => __async(this, null, function* () {\n setLoadingSeekAdType(true);\n try {\n const { data } = yield axios.get(url, {\n params: {\n listing_sub_classification: answers.listing_sub_classification,\n listing_location: answers.listing_location,\n title: answers.title,\n job_ad_id: jobAdId\n }\n });\n setGetSeekAdSelectionData(data.data.seekAnzHirerAdvertisementCreationProducts);\n } catch (exception) {\n console.error(exception);\n setGetSeekAdSelectionData(null);\n } finally {\n setLoadingSeekAdType(false);\n }\n });\n answers.listing_sub_classification && answers.title && answers.listing_location && getSeekAdType(`/api/v4/seek/job_ads/${jobAdId}/ad_selections`);\n }, [answers.listing_location, answers.listing_sub_classification, answers.title, jobAdId]);\n if (loadingSeekAdType) {\n return /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" });\n }\n return /* @__PURE__ */ React.createElement(Grid, { container: true }, getSeekAdSelectionData && getSeekAdSelectionData.map((ad, index) => /* @__PURE__ */ React.createElement(Grid, { item: true, xs: 12, sm: 12, md: 4, key: index }, /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: !ad.enabledIndicator ? classes.seekAdTypeDisabled : classes.seekAdType,\n onClick: () => {\n if (!ad.enabledIndicator) {\n return;\n }\n setSelectedValue(ad.advertisementTypeCode);\n setAnswers(__spreadProps(__spreadValues({}, answers), { ad_type: ad.advertisementTypeCode }));\n }\n },\n /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: \"seekAdheaderWrapper\",\n style: index === 0 || index === 2 ? { borderRadius: index === 0 ? \"5px 0 0 0\" : \"0 5px 0 0\" } : {}\n },\n \"Pay using your SEEK Contract\"\n ),\n /* @__PURE__ */ React.createElement(\n \"div\",\n {\n style: selectedValue === ad.advertisementTypeCode && ad.enabledIndicator ? { border: \"#E60278 1px solid\", minHeight: \"12.75rem\" } : { border: \"#E9E8E8 1px solid\", minHeight: \"12.5rem\" }\n },\n /* @__PURE__ */ React.createElement(\"div\", { className: \"seekRadioRadioBtnWrapper\", ref: requiredRefs.ad_type }, /* @__PURE__ */ React.createElement(\n PinkRadio,\n {\n checked: selectedValue === ad.advertisementTypeCode && ad.enabledIndicator,\n onChange: handleChangeAdType,\n value: ad.advertisementTypeCode,\n disabled: !ad.enabledIndicator,\n name: \"radio-buttons\",\n inputProps: { \"aria-label\": \"A\" }\n }\n )),\n /* @__PURE__ */ React.createElement(\"h4\", null, ad.advertisementTypeCode),\n /* @__PURE__ */ React.createElement(\"div\", null, ad.price.summary),\n /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: classes.seekEmbeddedHTML,\n dangerouslySetInnerHTML: { __html: ad.description }\n }\n )\n )\n ))));\n}\nAdSelection.propTypes = {\n answers: PropTypes.object.isRequired,\n setAnswers: PropTypes.func.isRequired,\n requiredRefs: PropTypes.object.isRequired,\n jobAdId: PropTypes.number,\n setMaxBulletPoints: PropTypes.func.isRequired,\n setBrandingEnabled: PropTypes.func.isRequired\n};\nexport default AdSelection;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Dialog } from \"@material-ui/core\";\nimport useDialogStyles from \"../useDialogStyles\";\nimport ExitExistingDialogContent from \"./ExitExistingDialogContent\";\nimport ExitNewDialogContent from \"./ExitNewDialogContent\";\nexport function ExitConfirmationDialog({\n saving,\n savingDraft,\n isExitModalOpen,\n setIsExitModalOpen,\n editExistingJob,\n submit\n}) {\n const classes = useDialogStyles();\n const close = () => setIsExitModalOpen(false);\n const saveDraft = () => submit(\"draft\");\n return /* @__PURE__ */ React.createElement(Dialog, { open: isExitModalOpen, onClose: close, classes: { paper: classes.dialog } }, editExistingJob ? /* @__PURE__ */ React.createElement(\n ExitExistingDialogContent,\n {\n saving,\n savingDraft,\n close,\n saveDraft\n }\n ) : /* @__PURE__ */ React.createElement(ExitNewDialogContent, { savingDraft, close, saveDraft }));\n}\nExitConfirmationDialog.propTypes = {\n saving: PropTypes.bool,\n savingDraft: PropTypes.bool,\n editExistingJob: PropTypes.bool,\n isExitModalOpen: PropTypes.bool,\n setActiveStep: PropTypes.func,\n setIsExitModalOpen: PropTypes.func,\n submit: PropTypes.func\n};\nexport default ExitConfirmationDialog;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Button, CircularProgress } from \"@material-ui/core\";\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\nimport IconButton from \"@mui/material/IconButton\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport useDialogStyles from \"../useDialogStyles\";\nexport function ExitExistingDialogContent({ saving, savingDraft, close, saveDraft }) {\n const classes = useDialogStyles();\n return /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\"div\", { className: classes.closeContainer }, /* @__PURE__ */ React.createElement(IconButton, { onClick: close }, /* @__PURE__ */ React.createElement(CloseIcon, { style: { fill: \"#cccccc\", width: 20, height: 20 } }))), /* @__PURE__ */ React.createElement(\"h4\", { className: classes.dialogHeader }, \"Changes are not yet live!\"), /* @__PURE__ */ React.createElement(\"p\", { className: classes.dialogDescription }, \"Your changes are not saved yet.\"), /* @__PURE__ */ React.createElement(\"p\", { className: classes.dialogDescription }, `Please navigate to the last page and click 'Update' to ensure all edits to your SEEK Ad are saved.`), /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer }, /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: classes.buttonSecondaryLight,\n onClick: saveDraft,\n style: { minWidth: 130 }\n },\n savingDraft ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : \"No, save and exit\"\n ), /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: classes.buttonSecondary,\n id: \"SeekNextStepMultiposterBtn\",\n style: { minWidth: 130 },\n onClick: close,\n endIcon: saving ? null : /* @__PURE__ */ React.createElement(ChevronRightIcon, null)\n },\n \"Continue Editing\"\n )));\n}\nExitExistingDialogContent.propTypes = {\n saving: PropTypes.bool,\n savingDraft: PropTypes.bool,\n close: PropTypes.func,\n saveDraft: PropTypes.func\n};\nexport default ExitExistingDialogContent;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Button, CircularProgress } from \"@material-ui/core\";\nimport useDialogStyles from \"../useDialogStyles\";\nexport function ExitNewDialogContent({ savingDraft, close, saveDraft }) {\n const classes = useDialogStyles();\n return /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\"h4\", { className: classes.dialogDescription }, \"Are you sure?\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.dialogButtonContainer }, /* @__PURE__ */ React.createElement(Button, { disableElevation: true, className: classes.buttonSecondaryLight, onClick: close }, \"Cancel\"), /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: classes.buttonSecondary,\n onClick: saveDraft,\n style: { minWidth: 130 }\n },\n savingDraft ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : \"Save and exit\"\n )));\n}\nExitNewDialogContent.propTypes = {\n savingDraft: PropTypes.bool,\n close: PropTypes.func,\n saveDraft: PropTypes.func\n};\nexport default ExitNewDialogContent;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React from \"react\";\nimport {\n FormControl,\n FormLabel,\n FormControlLabel,\n InputAdornment,\n TextField,\n Radio,\n RadioGroup,\n Grid,\n Box,\n Select,\n MenuItem\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport { useSeekPayTypes } from \"../../hooks/useSeekPayTypes\";\nimport { useSeekCurrencies } from \"../../hooks/useSeekCurrencies\";\nimport PropTypes from \"prop-types\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport TextAreaWithCounter from \"../UtilComponents/TextAreaWithCounter\";\nimport { parseSalary } from \"../../../NewUI/Components/Multiposter/salaryHelper\";\nfunction PayDetails({ answers, setAnswers, requiredRefs, activeError }) {\n const { payTypes } = useSeekPayTypes();\n const { currencies } = useSeekCurrencies();\n const classes = useStyles();\n const setSalaryType = (value) => {\n const [basisCode, intervalCode] = value.split(\":\");\n setAnswers(__spreadProps(__spreadValues({}, answers), { salary_type: basisCode, salary_interval: intervalCode }));\n };\n return /* @__PURE__ */ React.createElement(Box, { className: classes.payDetailsContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Pay details\"), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Pay Type\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\")), /* @__PURE__ */ React.createElement(\n RadioGroup,\n {\n value: `${answers.salary_type}:${answers.salary_interval || \"Hour\"}`,\n onChange: (e) => setSalaryType(e.target.value)\n },\n payTypes.map((pay) => /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n key: pay.label,\n label: pay.label,\n value: `${pay.basisCode}:${pay.intervalCode}`,\n control: /* @__PURE__ */ React.createElement(Radio, null)\n }\n ))\n )), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.salary,\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Pay Range\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.salary && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), !answers.salary_min || !answers.salary_max ? /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\") : /* @__PURE__ */ React.createElement(\"span\", null, \"The pay range cannot exceed $100,000\"))),\n /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"Enter a pay range to offer candidates (this will not show on your ad)\"),\n /* @__PURE__ */ React.createElement(Grid, { container: true, classes: { root: classes.controlledNumberInput } }, /* @__PURE__ */ React.createElement(\n Grid,\n {\n item: true,\n container: true,\n alignContent: \"center\",\n alignItems: \"center\",\n justifyContent: \"center\",\n wrap: \"nowrap\"\n },\n /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Box, { m: 1, ml: 0 }, /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.salary,\n className: classes.textField,\n variant: \"outlined\",\n onBlur: () => {\n if (answers.salary_min > answers.salary_max)\n setAnswers(__spreadProps(__spreadValues({}, answers), { salary_max: answers.salary_min }));\n },\n value: Number(answers.salary_min).toLocaleString(),\n InputProps: {\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"From\")\n },\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { salary_min: parseSalary(e.target.value) }))\n }\n )), /* @__PURE__ */ React.createElement(Box, { m: 1 }, /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.salary,\n className: classes.textField,\n variant: \"outlined\",\n value: Number(answers.salary_max).toLocaleString(),\n onBlur: () => {\n if (answers.salary_max < answers.salary_min)\n setAnswers(__spreadProps(__spreadValues({}, answers), { salary_max: answers.salary_min }));\n },\n InputProps: {\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, \"To\")\n },\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { salary_max: parseSalary(e.target.value) }))\n }\n )), /* @__PURE__ */ React.createElement(Box, { m: 1 }, /* @__PURE__ */ React.createElement(\n Select,\n {\n classes: { select: classes.dropdown },\n variant: \"outlined\",\n value: answers.currency,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { currency: e.target.value })),\n displayEmpty: false,\n renderValue: (value) => value\n },\n currencies.map((currency) => /* @__PURE__ */ React.createElement(MenuItem, { key: currency.code, value: currency.code }, currency.code))\n )), /* @__PURE__ */ React.createElement(\"span\", { className: classes.salaryIntervalLabel }, \"per \", answers.salary_interval || \"Hour\"))\n ))\n ), /* @__PURE__ */ React.createElement(\n TextAreaWithCounter,\n {\n title: \"Customise the Pay information on your Ad (Optional)\",\n value: answers.salary_additional_text,\n setValue: (value) => setAnswers(__spreadProps(__spreadValues({}, answers), { salary_additional_text: value })),\n maxLength: 50,\n helperText: \"E.g. $50,000 + annual bonus\"\n }\n ));\n}\nPayDetails.propTypes = {\n answers: PropTypes.object.isRequired,\n setAnswers: PropTypes.func.isRequired,\n requiredRefs: PropTypes.object.isRequired,\n activeError: PropTypes.ref\n};\nexport default PayDetails;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React from \"react\";\nimport TextAreaWithCounter from \"../UtilComponents/TextAreaWithCounter\";\nimport PropTypes from \"prop-types\";\nfunction SeekBillingReference({ answers, setAnswers }) {\n return /* @__PURE__ */ React.createElement(\n TextAreaWithCounter,\n {\n title: \"Seek Billing Reference (Optional)\",\n value: answers.billing_reference,\n setValue: (value) => setAnswers(__spreadProps(__spreadValues({}, answers), { billing_reference: value })),\n maxLength: 50,\n helperText: \"Include a purchase order or reference to appear on your SEEK invoice\"\n }\n );\n}\nSeekBillingReference.propTypes = {\n answers: PropTypes.object.isRequired,\n setAnswers: PropTypes.func.isRequired\n};\nexport default SeekBillingReference;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React from \"react\";\nimport { FormControl, FormLabel, FormControlLabel, Radio, RadioGroup } from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nconst workSalaryOptions = [\n { value: \"Casual\", label: \"Casual\" },\n { value: \"ContractTemp\", label: \"Contract\" },\n { value: \"FullTime\", label: \"Full Time\" },\n { value: \"PartTime\", label: \"Part Time\" }\n];\nfunction WorkTypes({ answers, setAnswers }) {\n const classes = useStyles();\n return /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Work Type\"), /* @__PURE__ */ React.createElement(\n RadioGroup,\n {\n value: answers.listing_work_type,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { listing_work_type: e.target.value }))\n },\n workSalaryOptions.map((pay) => /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n key: pay.value,\n label: pay.label,\n value: pay.value,\n control: /* @__PURE__ */ React.createElement(Radio, null)\n }\n ))\n ));\n}\nWorkTypes.propTypes = {\n answers: PropTypes.object.isRequired,\n setAnswers: PropTypes.func.isRequired\n};\nexport default WorkTypes;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useState, useEffect, useCallback } from \"react\";\nimport {\n FormControl,\n FormLabel,\n FormControlLabel,\n TextField,\n Radio,\n RadioGroup,\n FormHelperText,\n Grid,\n Select,\n MenuItem\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nimport axios from \"axios\";\nimport { useDebounce } from \"use-debounce\";\nimport { CircularProgress } from \"@material-ui/core\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport ScoutAutocomplete from \"../../../scout/autocomplete\";\nimport AdProductSelection from \"../Components/AdProductSelection\";\nimport AdSelection from \"../Components/AdSelection\";\nimport PayDetails from \"../Components/PayDetails\";\nimport WorkTypes from \"../Components/WorkTypes\";\nimport SeekBillingReference from \"../Components/SeekBillingReference\";\nconst TITLE_LIMIT = 80;\nfunction Step1({\n answers,\n setAnswers,\n apiKey,\n requiredRefs,\n activeError,\n jobAdId,\n setBrandingEnabled,\n setMaxBulletPoints,\n seek_billing_reference,\n seek_billing_reference_flag\n}) {\n const [loadingSeekAdAllCategories, setLoadingSeekAdTypeAllCategories] = useState(true);\n const [loadingSeekAdCategories, setLoadingSeekAdCategories] = useState(true);\n const [seekAdCategories, setSeekAdCategories] = useState(null);\n const [getSeekAdCategoriesData, setGetSeekAdCategoriesData] = useState(null);\n const [categoriesIndex, setCategoriesIndex] = useState(null);\n const [debouncedTitle] = useDebounce(answers.title, 2500);\n const [debouncedAddress] = useDebounce(answers.listing_location, 2500);\n const classes = useStyles();\n const updateCategoryIndex = useCallback(\n (rawData) => {\n const data = rawData || getSeekAdCategoriesData;\n if (data) {\n const index = data.findIndex(\n (category) => category.id.value === answers.listing_classification\n );\n setCategoriesIndex(index);\n }\n },\n [answers.listing_classification, getSeekAdCategoriesData]\n );\n useEffect(() => {\n const getSeekAdCategories = (url) => __async(this, null, function* () {\n setLoadingSeekAdTypeAllCategories(true);\n try {\n const { data } = yield axios.get(url, {\n headers: { \"Content-Type\": \"application/json\" }\n });\n setGetSeekAdCategoriesData(data.data.jobCategories);\n setLoadingSeekAdTypeAllCategories(false);\n } catch (e) {\n setSeekAdCategories(null);\n setLoadingSeekAdTypeAllCategories(false);\n }\n });\n getSeekAdCategories(\n `/api/v4/seek/job_ads/${jobAdId}/job_categories?location_id=${answers.listing_location}`\n );\n }, [jobAdId, answers.listing_location]);\n useEffect(() => {\n answers.use_suggested_classification && answers.listing_classification && answers.listing_sub_classification && updateCategoryIndex(getSeekAdCategoriesData);\n }, [\n answers.listing_classification,\n answers.listing_sub_classification,\n answers.use_suggested_classification,\n getSeekAdCategoriesData,\n updateCategoryIndex\n ]);\n const getSugestedSeekAdCategories = (url) => __async(this, null, function* () {\n if (!answers.title || !answers.listing_location) {\n setSeekAdCategories(null);\n setLoadingSeekAdCategories(false);\n return;\n }\n try {\n const { data } = yield axios.get(url, {\n headers: { \"X-api-authenticate\": apiKey },\n params: { title: answers.title, listing_location: answers.listing_location }\n });\n setSeekAdCategories(data.data.jobCategorySuggestions);\n setLoadingSeekAdCategories(false);\n } catch (e) {\n setSeekAdCategories(null);\n setLoadingSeekAdCategories(false);\n }\n });\n useEffect(() => {\n getSugestedSeekAdCategories(`/api/v4/seek/job_ads/${jobAdId}/job_categories/suggestions`);\n }, [jobAdId, debouncedTitle, debouncedAddress]);\n useEffect(() => {\n setLoadingSeekAdCategories(true);\n }, [debouncedTitle, answers.listing_location]);\n useEffect(() => {\n if (!getSeekAdCategoriesData) return;\n updateCategoryIndex(null);\n }, [answers.listing_classification, getSeekAdCategoriesData, updateCategoryIndex]);\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.title,\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Job Title\"),\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.title,\n className: classes.textField,\n variant: \"outlined\",\n value: answers.title,\n onChange: (e) => e.target.value.length <= TITLE_LIMIT && setAnswers(__spreadProps(__spreadValues({}, answers), { title: e.target.value })),\n InputProps: {\n endAdornment: activeError === requiredRefs.title && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n }\n }\n ),\n /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, answers.title.length, \"/\", TITLE_LIMIT)\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.listing_location,\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, \"Location\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.listing_location && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", { id: \"SeekMultiposterErrorTxt\" }, \"This field is required\"))),\n /* @__PURE__ */ React.createElement(\n ScoutAutocomplete,\n {\n className: `${activeError === requiredRefs.listing_location ? classes.errorAutocomplete : \"\"} select-seek-location`,\n url: `/api/v4/seek/job_ads/${jobAdId}/locations/options`,\n name: \"location\",\n value: answers.listing_location,\n selectedLabel: answers.listing_location_display,\n includeBlank: true,\n placeholder: \"Type to search...\",\n onChange: (value, label, attrs) => {\n setAnswers(__spreadProps(__spreadValues({}, answers), {\n listing_location: value,\n listing_location_display: label,\n currency: attrs && attrs.currencies ? attrs.currencies[0].code : \"AUD\"\n }));\n }\n }\n )\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.category,\n fullWidth: true,\n className: `${classes.formControl}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Category\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.category && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))),\n seekAdCategories && /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"Suggested category based on both job title and location\"),\n loadingSeekAdCategories || loadingSeekAdAllCategories ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : seekAdCategories ? /* @__PURE__ */ React.createElement(\n RadioGroup,\n {\n value: answers.listing_sub_classification,\n onChange: (e) => {\n setAnswers(__spreadProps(__spreadValues({}, answers), {\n listing_sub_classification: e.target.value,\n use_suggested_classification: false,\n listing_sub_classification_display: e.target.name\n }));\n }\n },\n seekAdCategories.map((category) => /* @__PURE__ */ React.createElement(\"div\", { key: category.jobCategory.id.value }, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: category.jobCategory.parent.name,\n name: `${category.jobCategory.parent.name} > ${category.jobCategory.name}`,\n value: category.jobCategory.id.value,\n control: /* @__PURE__ */ React.createElement(Radio, null)\n }\n ), /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\"span\", { style: { padding: \"0 0.5rem 0 1.75rem\" } }, \">\"), \" \", category.jobCategory.name)))\n ) : /* @__PURE__ */ React.createElement(Grid, { item: true }, /* @__PURE__ */ React.createElement(\"div\", null, !answers.listing_location || !answers.listing_sub_classification ? \"No suggested categories, please add a job title and location to see suggested categories\" : \"No suggested categories for the current job title and location\")),\n /* @__PURE__ */ React.createElement(\n RadioGroup,\n {\n value: answers.use_suggested_classification,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), {\n use_suggested_classification: true,\n listing_sub_classification: null,\n listing_classification: null\n }))\n },\n /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n key: \"other\",\n label: \"Choose a different category\",\n checked: answers.use_suggested_classification === true,\n control: /* @__PURE__ */ React.createElement(Radio, null)\n }\n )\n ),\n answers.use_suggested_classification && getSeekAdCategoriesData && /* @__PURE__ */ React.createElement(\n FormControl,\n {\n style: { marginTop: \"5px\" },\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium}`\n },\n /* @__PURE__ */ React.createElement(\n Select,\n {\n error: activeError === requiredRefs.category,\n classes: { select: classes.input },\n variant: \"outlined\",\n value: answers.listing_classification,\n onChange: (e) => {\n const index = getSeekAdCategoriesData.findIndex(\n (category) => category.id.value === e.target.value\n );\n setAnswers(__spreadProps(__spreadValues({}, answers), {\n listing_classification: e.target.value,\n listing_classification_display: index >= 0 ? getSeekAdCategoriesData[index].name : \"\"\n }));\n },\n displayEmpty: true\n },\n getSeekAdCategoriesData.map((category) => /* @__PURE__ */ React.createElement(MenuItem, { key: category.id.value, value: category.id.value }, category.name))\n ),\n /* @__PURE__ */ React.createElement(\n FormLabel,\n {\n focused: false,\n style: { marginTop: \"20px\" },\n required: true,\n className: classes.label\n },\n \"Sub Category\"\n ),\n /* @__PURE__ */ React.createElement(\n Select,\n {\n error: activeError === requiredRefs.category,\n classes: { select: classes.input },\n disabled: !answers.listing_classification,\n variant: \"outlined\",\n value: answers.listing_sub_classification,\n onChange: (e) => {\n const index = getSeekAdCategoriesData[categoriesIndex].children.findIndex(\n (category) => category.id.value === e.target.value\n );\n setAnswers(__spreadProps(__spreadValues({}, answers), {\n listing_sub_classification: e.target.value,\n listing_sub_classification_display: index >= 0 ? getSeekAdCategoriesData[categoriesIndex].children[index].name : \"\"\n }));\n },\n displayEmpty: true\n },\n answers.listing_classification && getSeekAdCategoriesData && typeof categoriesIndex === \"number\" && categoriesIndex >= 0 && getSeekAdCategoriesData[categoriesIndex].children.map((category) => /* @__PURE__ */ React.createElement(MenuItem, { key: category.id.value, value: category.id.value }, category.name))\n )\n )\n ), /* @__PURE__ */ React.createElement(WorkTypes, { answers, setAnswers }), /* @__PURE__ */ React.createElement(\n PayDetails,\n {\n answers,\n setAnswers,\n requiredRefs,\n activeError\n }\n ), seek_billing_reference && seek_billing_reference_flag && /* @__PURE__ */ React.createElement(SeekBillingReference, { answers, setAnswers }), /* @__PURE__ */ React.createElement(\"h4\", null, \"SEEK Ad Type\"), activeError === requiredRefs.ad_type && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", { id: \"SeekMultiposterErrorTxt\" }, \"This field is required\")), answers.seek_account_id ? /* @__PURE__ */ React.createElement(\n AdProductSelection,\n {\n answers,\n setAnswers,\n requiredRefs,\n jobAdId,\n setMaxBulletPoints,\n setBrandingEnabled,\n debouncedTitle\n }\n ) : /* @__PURE__ */ React.createElement(\n AdSelection,\n {\n answers,\n setAnswers,\n requiredRefs,\n jobAdId,\n setMaxBulletPoints,\n setBrandingEnabled\n }\n ));\n}\nStep1.propTypes = {\n answers: PropTypes.object.isRequired,\n setAnswers: PropTypes.func.isRequired,\n apiKey: PropTypes.string.isRequired,\n requiredRefs: PropTypes.object.isRequired,\n activeError: PropTypes.ref,\n jobAdId: PropTypes.number.isRequired,\n seek_billing_reference: PropTypes.bool,\n seek_billing_reference_flag: PropTypes.bool,\n setBrandingEnabled: PropTypes.func.isRequired,\n setMaxBulletPoints: PropTypes.func.isRequired\n};\nexport default Step1;\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useState, useEffect } from \"react\";\nimport {\n FormControl,\n FormLabel,\n Checkbox,\n TextField,\n FormHelperText,\n Grid,\n FormControlLabel,\n Button\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nimport axios from \"axios\";\nimport { CircularProgress } from \"@material-ui/core\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nfunction Step2({\n answers,\n setAnswers,\n getSeekAdBrandingData,\n setGetSeekAdBrandingData,\n apiKey,\n jobAdId,\n activeError,\n requiredRefs,\n maxBulletPoints,\n brandingEnabled\n}) {\n const [loadingSeekAdBranding, setLoadingSeekAdBranding] = useState(true);\n const [seekBrandindInfo, setSeekBrandindInfo] = useState(null);\n const classes = useStyles();\n const shortDescriptionLength = 150;\n const getSeekAdType = (url, nextPage) => __async(this, null, function* () {\n !nextPage && setLoadingSeekAdBranding(true);\n try {\n const { data } = yield axios.get(url, {\n headers: { \"X-api-authenticate\": apiKey }\n });\n setGetSeekAdBrandingData(\n nextPage ? [...getSeekAdBrandingData, ...data.data.advertisementBrandings.edges] : data.data.advertisementBrandings.edges\n );\n setSeekBrandindInfo(data.data.advertisementBrandings.pageInfo);\n if (!answers.branding_id)\n setAnswers(__spreadProps(__spreadValues({}, answers), {\n branding_id: data.data.advertisementBrandings.edges[0].node.id.value\n }));\n setLoadingSeekAdBranding(false);\n } catch (e) {\n setGetSeekAdBrandingData(null);\n setLoadingSeekAdBranding(false);\n }\n });\n const setStandoutBullet = (index, value) => {\n const standoutBullets = answers.standout_bullets;\n standoutBullets[index] = value;\n setAnswers(__spreadProps(__spreadValues({}, answers), { standout_bullets: standoutBullets }));\n };\n useEffect(() => {\n if (!getSeekAdBrandingData) {\n getSeekAdType(`/api/v4/seek/job_ads/${jobAdId}/brands`, false);\n } else setLoadingSeekAdBranding(false);\n }, []);\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Job details\"), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.description,\n fullWidth: true,\n className: `${classes.formControl} ${classes.large}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Short Description\"),\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.description,\n multiline: true,\n className: `${classes.textField} ${classes.textBox}`,\n variant: \"outlined\",\n value: answers.description,\n onChange: (e) => e.target.value.length <= shortDescriptionLength && setAnswers(__spreadProps(__spreadValues({}, answers), { description: e.target.value })),\n InputProps: {\n endAdornment: activeError === requiredRefs.description && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n }\n }\n ),\n /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, answers.description.length, \"/\", shortDescriptionLength)\n ), maxBulletPoints > 0 && /* @__PURE__ */ React.createElement(\"div\", { style: { display: \"grid\" } }, /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.large}` }, /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, \"Key Selling Points (Optional)\"), /* @__PURE__ */ React.createElement(\"span\", { className: classes.subLabel }, \"Enter \", maxBulletPoints, \" key selling points to attract candidates to view your role\")), [...Array(maxBulletPoints).keys()].map((index) => /* @__PURE__ */ React.createElement(\n FormControl,\n {\n fullWidth: true,\n className: `${classes.formControl} ${classes.large}`,\n key: index\n },\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n className: classes.textField,\n variant: \"outlined\",\n value: answers.standout_bullets[index],\n onChange: (e) => e.target.value.length <= 80 && setStandoutBullet(index, e.target.value)\n }\n ),\n /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, answers.standout_bullets[index] ? answers.standout_bullets[index].length : 0, \"/80\")\n ))), brandingEnabled && /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl}` }, /* @__PURE__ */ React.createElement(FormLabel, { style: { paddingBottom: \"10px\" }, className: classes.label }, \"Branding\"), loadingSeekAdBranding ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 20, color: \"inherit\" }) : /* @__PURE__ */ React.createElement(Grid, { container: true, style: { margin: 0 }, spacing: 2 }, getSeekAdBrandingData ? getSeekAdBrandingData.map((brand) => {\n const selected = answers.branding_id === brand.node.id.value;\n const borderColor = selected ? \"#5BC4BF\" : \"#e9e8e8\";\n return /* @__PURE__ */ React.createElement(\n Grid,\n {\n item: true,\n xs: 12,\n sm: 12,\n md: 4,\n key: brand.node.id.value,\n style: {\n height: \"230px\",\n maxWidth: \"215px\",\n minWidth: \"215px\",\n cursor: \"pointer\",\n border: `solid ${borderColor} 3px`,\n borderRadius: \"5px\",\n marginRight: \"10px\",\n marginBottom: \"10px\",\n padding: 0\n }\n },\n /* @__PURE__ */ React.createElement(RenderList, { brand: brand.node, setAnswers, answers })\n );\n }) : /* @__PURE__ */ React.createElement(\"div\", null, \"No Branding.\"), getSeekAdBrandingData && seekBrandindInfo && /* @__PURE__ */ React.createElement(\"div\", null, seekBrandindInfo.hasNextPage ? /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n className: classes.buttonSecondary,\n style: { minWidth: 130 },\n onClick: () => {\n getSeekAdType(\n `/api/v4/seek/job_ads/${jobAdId}/brands?after=${seekBrandindInfo.endCursor}`,\n true\n );\n }\n },\n \"Load More Branding\"\n ) : \"\"))), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium}`,\n ref: requiredRefs.video_embed_code\n },\n /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, \"Video URL\"),\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n className: classes.textField,\n error: activeError === requiredRefs.video_embed_code,\n variant: \"outlined\",\n value: answers.video_embed_code,\n onChange: (e) => e.target.value.length >= 0 && setAnswers(__spreadProps(__spreadValues({}, answers), { video_embed_code: e.target.value }))\n }\n ),\n activeError === requiredRefs.video_embed_code ? /* @__PURE__ */ React.createElement(\"span\", null, /* @__PURE__ */ React.createElement(\"div\", { style: { display: \"flex\", marginTop: \"0.5rem\" }, className: classes.errorMessage }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"div\", { className: \"seekValidationErrorMsg\" }, \"URL must start with https://\")), /* @__PURE__ */ React.createElement(\"div\", { style: { display: \"flex\", marginTop: \"0.5rem\" }, className: classes.errorMessage }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"div\", { className: \"seekValidationErrorMsg\" }, \"Seek requires a YouTube link in one of the following formats:\")), /* @__PURE__ */ React.createElement(\"div\", { style: { display: \"flex\", marginTop: \"0.5rem\" }, className: classes.errorMessage }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.seekYoutubeUrl }, /* @__PURE__ */ React.createElement(\"div\", null, \" https://www.youtube.com/embed/aAgePQvHBQM\"), /* @__PURE__ */ React.createElement(\"div\", { style: { padding: \"0.25rem 0\" } }, \" \", \"https://www.youtube.com/watch?v=aAgePQvHBQM\"), /* @__PURE__ */ React.createElement(\"div\", null, \" https://youtu.be/aAgePQvHBQM\")))) : /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, \"The URL you require will look like this: https://youtube.com/embed/abcd12345\")\n ), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, \"Video Position\"), /* @__PURE__ */ React.createElement(Grid, { container: true, style: { margin: 0 }, spacing: 2 }, /* @__PURE__ */ React.createElement(Grid, { style: { marginRight: \"10px\" } }, /* @__PURE__ */ React.createElement(\n \"div\",\n {\n id: \"seek-video-top\",\n onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { video_position: \"Above\" })),\n style: {\n border: `solid ${answers.video_position === \"Above\" ? \"#5BC4BF\" : \"#e9e8e8\"} 1px`,\n borderRadius: \"5px\",\n cursor: \"pointer\"\n }\n }\n )), /* @__PURE__ */ React.createElement(Grid, null, /* @__PURE__ */ React.createElement(\n \"div\",\n {\n id: \"seek-video-bottom\",\n onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { video_position: \"Below\" })),\n style: {\n border: `solid ${answers.video_position === \"Below\" ? \"#5BC4BF\" : \"#e9e8e8\"} 1px`,\n borderRadius: \"5px\",\n cursor: \"pointer\"\n }\n }\n )))));\n}\nStep2.propTypes = {\n answers: PropTypes.object.isRequired,\n setAnswers: PropTypes.func.isRequired,\n jobAdId: PropTypes.number.isRequired,\n apiKey: PropTypes.string.isRequired,\n getSeekAdBrandingData: PropTypes.array || PropTypes.null,\n setGetSeekAdBrandingData: PropTypes.func.isRequired,\n requiredRefs: PropTypes.object.isRequired,\n activeError: PropTypes.ref,\n maxBulletPoints: PropTypes.number.isRequired,\n brandingEnabled: PropTypes.bool.isRequired\n};\nexport default Step2;\nconst RenderList = ({ brand, setAnswers, answers }) => {\n const imageLength = brand.images.length;\n return /* @__PURE__ */ React.createElement(\"div\", null, imageLength === 1 ? /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n \"div\",\n {\n role: \"img\",\n alt: \"Image not found\",\n onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { branding_id: brand.id.value })),\n style: brand.images[0].typeCode !== \"OriginalLogo\" ? {\n backgroundImage: `url(${brand.images[0].url})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n backgroundRepeat: \"no-repeat\",\n height: \"100px\"\n } : { height: \"100px\", padding: \"10px\" }\n },\n brand.images[0].typeCode === \"OriginalLogo\" && \"No Cover Image\"\n ), /* @__PURE__ */ React.createElement(\n \"div\",\n {\n role: \"img\",\n alt: \"Image not found\",\n onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { branding_id: brand.id.value })),\n style: brand.images[0].typeCode === \"OriginalLogo\" ? {\n backgroundImage: `url(${brand.images[0].url})`,\n backgroundSize: \"contain\",\n backgroundRepeat: \"no-repeat\",\n padding: \"0 0 0 5px\",\n height: \"70px\",\n width: \"100%\"\n } : { height: \"100px\", padding: \"10px\" }\n },\n brand.images[0].typeCode !== \"OriginalLogo\" && \"No Logo Image\"\n )) : /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n \"div\",\n {\n role: \"img\",\n alt: \"Image not found\",\n onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { branding_id: brand.id.value })),\n style: {\n backgroundImage: `url(${brand.images[brand.images[0].typeCode === \"OriginalLogo\" ? 1 : 0].url})`,\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n backgroundRepeat: \"no-repeat\",\n height: \"100px\"\n }\n }\n ), /* @__PURE__ */ React.createElement(\n \"div\",\n {\n role: \"img\",\n alt: \"Image not found\",\n onClick: () => setAnswers(__spreadProps(__spreadValues({}, answers), { branding_id: brand.id.value })),\n style: {\n backgroundImage: `url(${brand.images[brand.images[0].typeCode === \"OriginalLogo\" ? 0 : 1].url})`,\n backgroundSize: \"contain\",\n backgroundRepeat: \"no-repeat\",\n padding: \"0 0 0 5px\",\n height: \"70px\",\n width: \"100%\"\n }\n }\n )), /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\"div\", { style: { padding: \"10px\" } }, brand.name)));\n};\nRenderList.propTypes = {\n answers: PropTypes.object.isRequired,\n setAnswers: PropTypes.func.isRequired,\n brand: PropTypes.object\n};\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React, { useEffect } from \"react\";\nimport {\n FormControlLabel,\n RadioGroup,\n FormControl,\n FormLabel,\n Checkbox,\n TextField,\n Radio\n} from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nimport ErrorIcon from \"@material-ui/icons/Error\";\nimport HtmlEditor from \"../../../NewUI/Components/Utilities/HtmlEditor\";\nfunction Step3({\n answers,\n setAnswers,\n activeError,\n requiredRefs,\n linkOutEnabled,\n privacyOverLimit,\n activeErrorMessage,\n jobId,\n setActiveError,\n setActiveErrorMessage,\n job_url_prop\n}) {\n const classes = useStyles();\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\n FormControl,\n {\n ref: requiredRefs.title,\n fullWidth: true,\n className: `${classes.formControl} ${classes.medium}`\n },\n /* @__PURE__ */ React.createElement(FormLabel, { required: true, className: classes.label }, \"Job Title\"),\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n error: activeError === requiredRefs.title,\n className: classes.textField,\n variant: \"outlined\",\n value: answers.title,\n onChange: (e) => e.target.value.length >= 0 && setAnswers(__spreadProps(__spreadValues({}, answers), { title: e.target.value })),\n InputProps: {\n endAdornment: activeError === requiredRefs.title && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))\n }\n }\n )\n ), /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.editor}` }, /* @__PURE__ */ React.createElement(FormLabel, { focused: false, className: classes.label }, \"Ad Details\", /* @__PURE__ */ React.createElement(\"span\", { className: classes.asterisk }, \" *\"), activeError === requiredRefs.ad_details && /* @__PURE__ */ React.createElement(\"div\", { className: classes.error }, /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }), /* @__PURE__ */ React.createElement(\"span\", null, \"This field is required\"))), /* @__PURE__ */ React.createElement(\n HtmlEditor,\n {\n body: answers.ad_details,\n onChange: (e) => setAnswers(__spreadProps(__spreadValues({}, answers), { ad_details: e }))\n }\n ), /* @__PURE__ */ React.createElement(\"div\", null, \"Supported formatting styles: headings (H2), Italics, Bold, Underline, Bullet Points/Numbered List\"), /* @__PURE__ */ React.createElement(\"div\", null, \"NOTE: If your job description contains unsupported formatting styles, they will be removed from the Ad Details section.\")), /* @__PURE__ */ React.createElement(\"h4\", null, \"Candidate Application Options\"), linkOutEnabled && /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n RadioGroup,\n {\n value: answers.link_out,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { link_out: true }))\n },\n /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"Apply through :Recruit Talent Landing Page\",\n checked: answers.link_out === true,\n control: /* @__PURE__ */ React.createElement(Radio, null)\n }\n )\n ), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n fullWidth: true,\n style: { margin: \"0.5rem 0 1.5rem 0\" },\n className: `${classes.formControl} ${classes.large}`\n },\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n className: classes.textField,\n style: { marginLeft: \"1rem\" },\n variant: \"outlined\",\n disabled: answers.link_out === false,\n value: answers.application_url || \"\",\n onChange: (e) => e.target.value.length >= 0 && setAnswers(__spreadProps(__spreadValues({}, answers), { application_url: e.target.value }))\n }\n )\n )), linkOutEnabled && /* @__PURE__ */ React.createElement(\n RadioGroup,\n {\n value: answers.link_out,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { link_out: false }))\n },\n /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n ref: requiredRefs.link_out,\n label: \"Apply through SEEK\",\n checked: answers.link_out === false,\n disabled: answers.link_out && answers.advertisement_id,\n control: /* @__PURE__ */ React.createElement(Radio, null)\n }\n ),\n activeError === requiredRefs.link_out && activeErrorMessage && activeErrorMessage.length >= 1 && /* @__PURE__ */ React.createElement(\"span\", null, activeErrorMessage.map((error, i) => /* @__PURE__ */ React.createElement(\n \"div\",\n {\n style: { display: \"flex\", marginTop: \"0.5rem\" },\n className: classes.errorMessage,\n key: i\n },\n /* @__PURE__ */ React.createElement(ErrorIcon, { color: \"error\" }),\n /* @__PURE__ */ React.createElement(\"div\", { className: \"seekValidationErrorMsg\" }, error, \".\")\n )), /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: classes.reviewQuestionText,\n onClick: () => {\n window.open(`${window.location.origin}/admin/jobs/${jobId}/fields`, \"_blank\").focus();\n setActiveError(null);\n setActiveErrorMessage(null);\n }\n },\n \"Review questions\"\n ))\n ), !answers.link_out && linkOutEnabled && /* @__PURE__ */ React.createElement(RadioGroup, { value: answers.posting_questionnaire, className: classes.secondaryRadioGroup }, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"Include application questionnaire\",\n checked: answers.posting_questionnaire,\n disabled: answers.advertisement_id,\n className: classes.secondaryRadio,\n control: /* @__PURE__ */ React.createElement(\n Radio,\n {\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { posting_questionnaire: true, link_out: false }))\n }\n )\n }\n ), /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"Do not include application questionnaire\",\n checked: !answers.posting_questionnaire,\n disabled: answers.advertisement_id,\n className: classes.secondaryRadio,\n control: /* @__PURE__ */ React.createElement(\n Radio,\n {\n className: classes.secondaryRadio,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { posting_questionnaire: false, link_out: false }))\n }\n )\n }\n ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.optionHint }, /* @__PURE__ */ React.createElement(\"strong\", null, \"Please note: \"), answers.posting_questionnaire && /* @__PURE__ */ React.createElement(\"span\", null, \"All questions will be mandatory and cannot be changed once this option has been selected and the ad has been published. Please click\", \" \", /* @__PURE__ */ React.createElement(\"a\", { href: job_url_prop, target: \"_blank\", rel: \"noreferrer\" }, \"HERE\"), \" \", \"to alter questions if required before posting.\"), !answers.posting_questionnaire && /* @__PURE__ */ React.createElement(\"span\", null, \"Candidates will receive an email to fill out the missing questions after applying.\"))), !linkOutEnabled && /* @__PURE__ */ React.createElement(RadioGroup, { value: answers.posting_questionnaire }, /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"Include application questionnaire\",\n checked: answers.posting_questionnaire,\n disabled: answers.advertisement_id,\n className: classes.secondaryRadio,\n control: /* @__PURE__ */ React.createElement(\n Radio,\n {\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { posting_questionnaire: true, link_out: false }))\n }\n )\n }\n ), /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n label: \"Do not include application questionnaire\",\n checked: !answers.posting_questionnaire,\n disabled: answers.advertisement_id,\n className: classes.secondaryRadio,\n control: /* @__PURE__ */ React.createElement(\n Radio,\n {\n className: classes.secondaryRadio,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { posting_questionnaire: false, link_out: false }))\n }\n )\n }\n ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.optionHint }, /* @__PURE__ */ React.createElement(\"strong\", null, \"Please note: \"), answers.posting_questionnaire && /* @__PURE__ */ React.createElement(\"span\", null, \"All questions will be mandatory and cannot be changed once this option has been selected and the ad has been published. Please click\", \" \", /* @__PURE__ */ React.createElement(\"a\", { href: job_url_prop, target: \"_blank\", rel: \"noreferrer\" }, \"HERE\"), \" \", \"to alter questions if required before posting.\"), !answers.posting_questionnaire && /* @__PURE__ */ React.createElement(\"span\", null, \"Candidates will receive an email to fill out the missing questions after applying.\"))), /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n style: { marginTop: \"2rem\" },\n label: \"Include a privacy policy agreement\",\n control: /* @__PURE__ */ React.createElement(\n Checkbox,\n {\n checked: answers.include_privacy,\n disabled: privacyOverLimit || answers.advertisement_id,\n onChange: () => setAnswers(__spreadProps(__spreadValues({}, answers), { include_privacy: !answers.include_privacy }))\n }\n )\n }\n ), privacyOverLimit && /* @__PURE__ */ React.createElement(\"div\", null, \"Privacy Policy agreement is unable to be included because it is is over Seek\\u2019s 250 character limit. Please check entity settings or contact Support\"));\n}\nStep3.propTypes = {\n answers: PropTypes.object.isRequired,\n setAnswers: PropTypes.func.isRequired,\n requiredRefs: PropTypes.object.isRequired,\n activeError: PropTypes.ref,\n linkOutEnabled: PropTypes.bool.isRequired,\n job_url_prop: PropTypes.string\n};\nexport default Step3;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport useStyles from \"../useStyles\";\nimport { FormControl } from \"@material-ui/core\";\nfunction Step4({ answers }) {\n const classes = useStyles();\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.stepContainer }, /* @__PURE__ */ React.createElement(\"h4\", null, answers.title), answers.listing_location_display, answers.use_suggested_classification ? /* @__PURE__ */ React.createElement(\"div\", null, answers.listing_location_display, \" \", /* @__PURE__ */ React.createElement(\"span\", { style: { margin: \"0 1rem\" } }, \">\"), \" \", answers.listing_sub_classification_display) : /* @__PURE__ */ React.createElement(\"div\", null, answers.listing_sub_classification_display), /* @__PURE__ */ React.createElement(\n FormControl,\n {\n fullWidth: true,\n style: { margin: \"0.5rem 0 1.5rem 0\" },\n className: `preview-html ${classes.formControl} ${classes.large}`\n },\n /* @__PURE__ */ React.createElement(\"div\", { dangerouslySetInnerHTML: { __html: answers.ad_details } })\n ));\n}\nStep4.propTypes = {\n answers: PropTypes.object\n};\nexport default Step4;\n","import React from \"react\";\nimport { FormControl, FormLabel, TextField, FormHelperText } from \"@material-ui/core\";\nimport useStyles from \"../useStyles\";\nimport PropTypes from \"prop-types\";\nfunction TextAreaWithCounter({ title, value, setValue, maxLength, helperText }) {\n const classes = useStyles();\n return /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className: `${classes.formControl} ${classes.medium}` }, /* @__PURE__ */ React.createElement(FormLabel, { className: classes.label }, title), /* @__PURE__ */ React.createElement(\n TextField,\n {\n className: classes.textField,\n variant: \"outlined\",\n value,\n onChange: (e) => e.target.value.length <= maxLength && setValue(e.target.value)\n }\n ), /* @__PURE__ */ React.createElement(FormHelperText, { className: classes.helperText }, /* @__PURE__ */ React.createElement(\"span\", { style: { marginRight: \"1rem\" } }, helperText), value ? value.length : 0, \" /\", maxLength));\n}\nTextAreaWithCounter.propTypes = {\n title: PropTypes.string.isRequired,\n setValue: PropTypes.func.isRequired,\n maxLength: PropTypes.number.isRequired,\n value: PropTypes.string,\n helperText: PropTypes.string\n};\nexport default TextAreaWithCounter;\n","import AdEditor from \"./AdEditor\";\nexport default AdEditor;\n","import { makeStyles } from \"@material-ui/core\";\nimport {\n SCOUT_SECONDARY_BLUE,\n SCOUT_SECONDARY_LIGHT_BLUE,\n RED,\n DARK_RED,\n WHITE,\n SCOUT_BLUE\n} from \"../../ThemeContext/constants\";\nexport default makeStyles(() => ({\n dialog: {\n padding: \"40px 60px\",\n alignItems: \"center\",\n textAlign: \"center\"\n },\n dialogHeader: {\n fontSize: \"26px\",\n color: SCOUT_BLUE,\n marginTop: 0,\n marginBottom: 14\n },\n dialogDescription: {\n fontWeight: \"600\",\n color: \"#666666\",\n fontSize: \"16px\",\n lineHeight: \"20px\",\n margin: 0\n },\n dialogButtonContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: \"row\",\n marginTop: 40\n },\n buttonSecondaryLight: {\n borderRadius: 6,\n padding: \"14px 30px\",\n marginRight: 20,\n fontSize: \"15px !important\",\n background: `${SCOUT_SECONDARY_LIGHT_BLUE} !important`,\n color: `${SCOUT_SECONDARY_BLUE} !important`,\n \"&:hover\": {\n background: `${SCOUT_SECONDARY_BLUE} !important`,\n color: `${SCOUT_SECONDARY_LIGHT_BLUE} !important`\n }\n },\n buttonSecondary: {\n borderRadius: 6,\n padding: \"14px 30px\",\n fontSize: \"15px !important\",\n background: `${RED} !important`,\n color: `${WHITE} !important`,\n \"&:hover\": {\n background: `${DARK_RED} !important`\n }\n },\n closeContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n width: \"100%\"\n }\n}));\n","import { makeStyles } from \"@material-ui/core\";\nimport { adEditorCancelButton } from \"../../shared/commonStyles\";\nexport default makeStyles((theme) => ({\n containerOuter: {\n marginTop: 40,\n background: \"#FFF\",\n borderRadius: 8,\n padding: 40,\n display: \"flex\",\n justifyContent: \"center\",\n \"& button:focus\": {\n outline: 0\n }\n },\n container: {\n padding: \"50px 120px\",\n width: \"100%\"\n },\n stepSelect: {\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: 40,\n width: \"100%\",\n margin: \"auto\"\n },\n payDetailsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: 40\n },\n stepContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n \"& h4\": {\n color: \"#666666\",\n fontSize: 20,\n fontWeight: \"600\",\n marginBottom: 0,\n marginTop: 70,\n \"&:first-child\": {\n marginTop: 0\n },\n \"& span\": {\n color: \"#E37D7A\"\n },\n \"& + div\": {\n marginTop: 20\n }\n },\n \"& fieldset\": {\n borderColor: \"#DDDDDD\"\n }\n },\n formControl: {\n marginTop: 50\n },\n subFormControl: {\n marginTop: 20\n },\n exLarge: {\n maxWidth: 800\n },\n editor: {\n width: \"100%\"\n },\n large: {\n maxWidth: 600\n },\n medium: {\n width: 400\n },\n small: {\n width: 300\n },\n adProductInfo: {\n fontSize: 12,\n paddingTop: 10,\n textAlign: \"center\"\n },\n seekAdTypeDisabled: {\n justifyContent: \"center\",\n opacity: 0.5,\n cursor: \"default\",\n textAlign: \"center\",\n \"& .seekAdheaderWrapper\": {\n color: \"white\",\n height: \"2rem\",\n alignItems: \"center\",\n backgroundColor: \"#E60278\",\n display: \"flex\",\n justifyContent: \"center\",\n fontSize: \"1rem\",\n padding: \"1.3rem 0 1.3rem 0\"\n },\n \"& h4\": {\n marginTop: \"0.1rem\",\n textAlign: \"center\",\n marginBottom: \"-10px\",\n color: \"black\"\n },\n \"& div\": {\n textAlign: \"center\"\n },\n \"& .seekRadioRadioBtnWrapper\": {\n marginTop: \"1rem\",\n \"& span:nth-child(1)\": {\n margin: \"auto\",\n display: \"flex\",\n width: \"2.5rem\"\n }\n }\n },\n seekAdType: {\n justifyContent: \"center\",\n cursor: \"pointer\",\n textAlign: \"center\",\n height: \"100%\",\n \"& .seekAdheaderWrapper\": {\n color: \"white\",\n height: \"2rem\",\n alignItems: \"center\",\n backgroundColor: \"#E60278\",\n display: \"flex\",\n justifyContent: \"center\",\n fontSize: \"1rem\",\n padding: \"1.3rem 0 1.3rem 0\"\n },\n \"& h4\": {\n marginTop: \"0.1rem\",\n textAlign: \"center\",\n marginBottom: \"-10px\",\n color: \"black\"\n },\n \"& div\": {\n textAlign: \"center\"\n },\n \"& .seekRadioRadioBtnWrapper\": {\n marginTop: \"1rem\",\n \"& span:nth-child(1)\": {\n margin: \"auto\",\n display: \"flex\",\n width: \"2.5rem\"\n }\n }\n },\n seekEmbeddedHTML: {\n padding: \"1rem 0.2rem 0 0.2rem\",\n \"& ul\": {\n listStyle: \"disc\",\n listStylePosition: \"inside\",\n margin: \"1rem 0.4rem\",\n paddingLeft: \"1rem\"\n }\n },\n checkboxWrapper: {\n color: \"#939393\"\n },\n greyBox: {\n background: \"#FAFAFA\",\n border: \"1px solid #DDDDDD\",\n borderRadius: 6,\n padding: 30,\n \"& span\": {\n color: \"#939393\",\n fontSize: 16,\n display: \"block\",\n marginRight: 8\n },\n \"& > div\": {\n marginBottom: 15,\n \"&:last-child\": {\n marginBottom: 0\n }\n }\n },\n applicationSettingsInner: {\n \"& > div\": {\n fontSize: 16,\n color: \"#000\",\n textAlign: \"right\",\n \"&:first-child\": {\n fontSize: 18,\n color: \"#939393\",\n textAlign: \"left\"\n }\n },\n \"& span\": {\n display: \"block\",\n color: \"#000\"\n }\n },\n greyIcon: {\n color: theme.palette.secondary.main,\n width: 18,\n height: 18\n },\n greyInput: {\n padding: \"0 32px 0 0 !important\",\n color: \"#000000\",\n fontSize: 16,\n \"&:focus\": {\n background: \"#FAFAFA\"\n }\n },\n inputField: {\n padding: \"10px 18px\",\n borderRadius: 6,\n border: \"1px solid #DDDDDD\",\n background: \"#FFF\"\n },\n textField: {\n \"& input\": {\n borderRadius: 6\n }\n },\n dropdown: {\n \"& input\": {\n borderRadius: 6\n }\n },\n textBox: {\n \"& input\": {\n height: 150\n }\n },\n controlledNumberInput: {\n \"& fieldset\": {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0\n },\n \"& button\": {\n color: \"#A2A2A2\",\n borderRadius: 0,\n border: \"1px solid #DDDDDD\",\n borderLeft: 0,\n padding: 0,\n minWidth: 40,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"&:last-child\": {\n borderTopRightRadius: 6,\n borderBottomRightRadius: 6\n },\n \"&[disabled]\": {\n background: \"#F3F3F3\",\n color: \"#E5E5E5\"\n }\n }\n },\n fullWidth: {\n width: \"100%\"\n },\n input: {\n padding: \"10px 18px\",\n borderRadius: 6,\n width: \"100%\",\n \"&:focus\": {\n background: \"#FFF\"\n }\n },\n inputAdornment: {\n \"& input\": {\n paddingLeft: 0\n },\n \"& span\": {\n fontSize: 16\n }\n },\n placeholder: {\n fontSize: 14,\n color: \"#CCCCCC\"\n },\n salaryInput: {\n width: \"31%\",\n \"& > div:first-child\": {\n width: \"100%\"\n }\n },\n label: {\n color: \"#939393\",\n fontSize: 16,\n marginBottom: 14,\n display: \"flex\",\n alignItems: \"center\",\n lineHeight: \"20px\",\n \"& span\": {\n color: \"#E37D7A\"\n }\n },\n asterisk: {\n display: \"block\",\n marginLeft: 3,\n color: theme.palette.error.main\n },\n errorAutocomplete: {\n \"& > div:first-child\": {\n borderColor: theme.palette.error.main\n }\n },\n errorDescription: {\n borderColor: `${theme.palette.error.main} !important`\n },\n subLabel: {\n display: \"block\",\n color: \"#000\",\n fontSize: 14,\n marginBottom: 10\n },\n salaryIntervalLabel: {\n width: 150\n },\n helperText: {\n textAlign: \"right\",\n position: \"absolute\",\n bottom: \"-22px\",\n right: 0\n },\n calendarContainer: {\n marginTop: 10,\n \"& input\": {\n padding: \"10px 18px\",\n borderRadius: 6,\n border: \"1px solid #DDD\",\n width: \"100%\",\n \"&:focus\": {\n background: \"#FFF\",\n outline: 0,\n borderColor: theme.palette.primary.main\n }\n },\n \"& .DayPicker\": {\n background: \"#FFF\",\n borderRadius: 6,\n boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n position: \"absolute\",\n zIndex: 100\n },\n \"& .DayPicker-wrapper\": {\n padding: \"20px 10px\",\n borderRadius: 6\n },\n \"& .DayPicker-Caption\": {\n height: \"2rem\",\n \"& div\": {\n fontWeight: \"600\",\n fontSize: 18,\n color: theme.palette.primary.main\n }\n },\n \"& .DayPicker-NavBar\": {\n top: \"1.3rem\",\n \"& span\": {\n height: \"0.9rem\",\n width: \"0.9rem\"\n }\n },\n \"& .DayPicker-Weekdays abbr\": {\n textDecoration: \"none\"\n },\n \"& .DayPicker-Day\": {\n border: 0,\n padding: \"10px 12px\",\n fontSize: 12\n },\n \"& .DayPicker-Day--today\": {\n color: theme.palette.primary.main,\n fontWeight: \"600\"\n },\n \"& .DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside)\": {\n backgroundColor: theme.palette.secondary.main,\n borderRadius: \"100%\"\n }\n },\n actionText: {\n fontWeight: \"600\",\n color: theme.palette.primary.main,\n fontSize: 14,\n display: \"block\",\n marginBottom: 10,\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n spaceItems: {\n \"& > *\": {\n marginBottom: 14\n }\n },\n removeIcon: {\n position: \"absolute\",\n right: 10,\n color: \"#DDD\",\n \"&:hover\": {\n color: \"#E37D7A\",\n cursor: \"pointer\"\n }\n },\n sliderContainer: {\n width: 560,\n marginTop: 15,\n borderRadius: 6,\n border: \"1px solid #DDDDDD\",\n padding: \"30px 60px\",\n display: \"flex\",\n flexDirection: \"column\",\n textAlign: \"center\"\n },\n sliderTitle: {\n color: theme.palette.primary.main,\n fontWeight: \"600\",\n display: \"block\",\n marginBottom: 35\n },\n sliderValue: {\n display: \"block\",\n marginTop: 4,\n color: \"#999\",\n textAlign: \"right\"\n },\n thumb: {\n width: 20,\n height: 20,\n marginTop: \"-9px\"\n },\n textEditor: {\n borderRadius: 6,\n border: \"1px solid #DDDDDD\",\n overflow: \"hidden\"\n },\n textEditorToolbar: {\n display: \"flex\",\n flexDirection: \"row\",\n background: \"#DDDDDD\",\n padding: \"10px 15px 6px\",\n \"& .rdw-inline-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\"\n },\n \"& .rdw-list-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\"\n },\n \"& .rdw-text-align-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\"\n },\n \"& .rdw-link-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\",\n \"& .rdw-link-modal\": {\n display: \"grid\",\n position: \"absolute\",\n background: \"lightgrey\",\n padding: \"10px\",\n marginTop: \"1.75rem\",\n \"& label\": {\n padding: \"10px 0\"\n },\n \"& button\": {\n marginRight: \"1rem\"\n },\n \"& #openLinkInNewWindow\": {\n marginRight: \"0.5rem\"\n }\n }\n },\n \"& .rdw-option-wrapper\": {\n padding: \"6px 10px 0px 10px\",\n height: \"1.75rem\",\n backgroundColor: \"transparent\",\n cursor: \"pointer\"\n },\n \"& .rdw-option-active \": {\n backgroundColor: \"darkgrey\"\n }\n },\n textEditorBody: {\n minHeight: 250,\n padding: 20,\n \"&:hover\": {\n cursor: \"text\"\n },\n \"& li\": {\n listStyle: \"disc\"\n },\n \"& .rdw-center-aligned-block *\": {\n textAlign: \"center !important\"\n },\n \"& .rdw-left-aligned-block *\": {\n textAlign: \"left !important\"\n },\n \"& .rdw-right-aligned-block *\": {\n textAlign: \"right !important\"\n }\n },\n stepperRoot: {\n width: \"100%\",\n paddingLeft: \"5px\",\n paddingRight: \"5px\"\n },\n stepItem: {\n fontWeight: \"600\"\n },\n stepIconActive: {\n color: `${theme.palette.secondary.main} !important`,\n boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n \"& text\": {\n color: \"#FFF\"\n }\n },\n stepIconCompleted: {\n color: `${theme.palette.secondary.main} !important`,\n boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n \"& text\": {\n color: \"#FFF\"\n }\n },\n stepIconRoot: {\n color: \"#F3F3F3\",\n borderRadius: \"100%\",\n width: \"50px\",\n height: \"50px\",\n \"& text\": {\n color: \"#CCCCCC\"\n }\n },\n stepLabelIconContainer: {\n width: \"50px\",\n height: \"50px\"\n },\n stepLabelLabel: {\n fontWeight: \"600 !important\",\n color: \"#CCCCCC !important\"\n },\n stepLabelActive: {\n color: \"#666666 !important\"\n },\n stepLabelCompleted: {\n color: \"#666666 !important\"\n },\n stepHover: {\n \"&:hover\": {\n cursor: \"pointer\",\n opacity: 0.8\n }\n },\n stepNoHover: {\n \"&:hover\": {\n cursor: \"auto\"\n }\n },\n buttonContainer: {\n marginTop: 60,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n \"& a:not(.preview)\": adEditorCancelButton\n },\n buttons: {\n display: \"flex\",\n \"& > *\": {\n marginLeft: 20\n }\n },\n previewType: {\n display: \"flex\",\n marginTop: 20,\n borderBottom: \"3px solid #F3F3F3\",\n position: \"relative\",\n width: 260,\n \"& div\": {\n padding: 20,\n fontSize: 16,\n color: \"#939393\",\n flexGrow: 1,\n textAlign: \"center\",\n \"&:hover\": {\n cursor: \"pointer\",\n color: \"#666\"\n }\n },\n \"&:after\": {\n content: '\"\"',\n display: \"block\",\n position: \"absolute\",\n width: \"50%\",\n background: \"#2557A7\",\n borderRadius: 3,\n left: \"0%\",\n bottom: \"-3px\",\n height: 3,\n transition: \"left 0.2s ease\"\n },\n \"&.mobile:after\": {\n left: \"50%\"\n }\n },\n previewContainer: {\n border: \"1px solid #DDD\",\n borderRadius: 6,\n padding: \"40px 50px\",\n marginTop: 20,\n marginBottom: 60,\n width: \"80%\",\n \"&.mobile\": {\n width: \"40%\"\n }\n },\n previewTitle: {\n color: \"#666666\",\n fontSize: 30,\n fontWeight: \"600\"\n },\n previewDetails: {\n fontSize: 20,\n color: \"#939393\",\n marginTop: 6\n },\n previewButtons: {\n display: \"flex\",\n marginTop: 30,\n \"& div\": {\n borderRadius: 6,\n fontWeight: \"600\",\n lineHeight: \"20px\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n \"& div:first-child\": {\n background: \"#2557A7\",\n color: \"#FFF\",\n fontSize: 20,\n marginRight: 10,\n padding: \"9px 24px\",\n \"&:hover\": {\n background: \"#3d6fbf\"\n }\n },\n \"& div:last-child\": {\n color: \"#606060\",\n background: \"#F3F3F3\",\n padding: \"9px 12px\",\n \"&:hover\": {\n background: \"#e6e3e3\"\n }\n }\n },\n previewContent: {\n marginTop: 30,\n \"& p, li\": {\n fontSize: 18,\n color: \"#939393\",\n marginTop: 0\n },\n \"& strong\": {\n fontWeight: \"600\",\n color: \"#666666\",\n fontSize: 20\n },\n \"& ul\": {\n listStyle: \"disc\",\n paddingLeft: 20\n },\n \"& li:marker\": {\n color: \"#939393\"\n }\n },\n applicationSettings: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: 25,\n \"& span\": {\n color: theme.palette.primary.main,\n fontWeight: \"600\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n }\n },\n dialog: {\n padding: \"40px 60px\",\n alignItems: \"center\",\n textAlign: \"center\",\n \"& > h4\": {\n fontSize: 26,\n color: theme.palette.primary.main,\n marginBottom: 14\n },\n \"& > span\": {\n fontWeight: \"600\",\n color: \"#666666\",\n fontSize: 16,\n lineHeight: \"20px\"\n },\n \"& button:focus\": {\n outline: 0\n }\n },\n dialogButtonContainer: {\n display: \"flex\",\n marginTop: 40,\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: \"row\",\n \"& > button\": {\n margin: \"0 10px\",\n minWidth: 150\n }\n },\n successDialog: {\n padding: \"60px 60px\",\n alignItems: \"center\",\n textAlign: \"center\",\n \"& svg\": {\n width: 24,\n height: 25,\n \"& path\": {\n fill: \"white\",\n width: \"100%\",\n height: \"100%\"\n }\n },\n \"& > h4\": {\n marginTop: 0,\n fontSize: 45,\n color: \"#666666\",\n marginBottom: 4,\n fontWeight: \"600\"\n },\n \"& > span\": {\n fontWeight: \"500\",\n color: \"#666666\",\n fontSize: 24,\n display: \"block\",\n marginBottom: 20\n }\n },\n failDialog: {\n padding: \"60px 60px\",\n alignItems: \"center\",\n textAlign: \"center\",\n \"& svg\": {\n width: 90,\n height: 90,\n \"& path\": {\n fill: \"#E60278\",\n width: \"100%\",\n height: \"100%\"\n }\n },\n \"& > h4\": {\n marginTop: 10,\n fontSize: 31,\n color: theme.palette.primary.main,\n marginBottom: 4,\n fontWeight: \"600\"\n },\n \"& > span\": {\n fontWeight: \"500\",\n color: \"#666666\",\n fontSize: 18,\n display: \"block\",\n marginBottom: 20\n }\n },\n successCheck: {\n position: \"relative\",\n \"& svg\": {\n width: 64,\n height: 64,\n \"& path\": {\n fill: \"#E60278\",\n width: \"100%\",\n height: \"100%\"\n }\n },\n \"&:after\": {\n content: '\"\"',\n display: \"block\",\n position: \"absolute\",\n height: \"100%\",\n width: \"100%\",\n top: 0,\n left: 0,\n border: \"10px solid #E60278\",\n borderRadius: \"100%\",\n boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.3)\"\n }\n },\n autoComplete: {\n marginTop: 10,\n \"& .MuiInputBase-root\": {\n padding: \"0 6px !important\",\n \"& input::placeholder\": {\n fontSize: 14,\n color: \"#CCCCCC\",\n opacity: 1\n }\n }\n },\n autoCompletePopper: {\n \"& fieldset\": {\n padding: \"10px 18px\",\n borderRadius: 6,\n border: \"1px solid #DDDDDD\"\n },\n \"& svg\": {\n fill: \"#DDD\",\n marginRight: 10\n }\n },\n error: {\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"row\",\n color: theme.palette.error.main,\n left: \"25px\",\n position: \"relative\",\n width: 0,\n \"& span\": {\n position: \"absolute\",\n whiteSpace: \"nowrap\",\n left: 30,\n fontSize: 13,\n fontWeight: \"400\"\n },\n \"& svg\": {\n \"&:hover\": {\n cursor: \"auto\"\n }\n }\n },\n errorOutline: {\n \"& $error\": {\n left: 120\n },\n \"& fieldset\": {\n borderLeft: `1px solid ${theme.palette.error.main}`,\n borderTop: `1px solid ${theme.palette.error.main}`,\n borderBottom: `1px solid ${theme.palette.error.main}`\n },\n \"& button\": {\n borderTop: `1px solid ${theme.palette.error.main}`,\n borderBottom: `1px solid ${theme.palette.error.main}`,\n \"&:last-child\": {\n borderRight: `1px solid ${theme.palette.error.main}`\n }\n }\n },\n successDialogContainer: {\n marginTop: \"20px\",\n \"& button\": {\n padding: \"9px 13px\"\n }\n },\n successDialogText: {\n display: \"flex\",\n alignItems: \"center\",\n height: \"3rem\",\n fontWeight: \"600\",\n color: \"#666666\",\n \"& span\": {\n paddingRight: \"0.5rem\"\n }\n },\n errorMessage: {\n \"& svg\": {\n margin: \"auto 0\",\n fontSize: \"15px\",\n marginRight: \"0.5rem\"\n }\n },\n reviewQuestionText: {\n textDecoration: \"underline\",\n marginTop: \"0.5rem\",\n cursor: \"pointer\"\n },\n seekYoutubeUrl: {\n color: \"red\",\n marginLeft: \"1.75rem\"\n },\n optionHint: {\n marginTop: \"1rem\",\n border: \"1px solid #ddd\",\n padding: \"1.5em 1em\",\n boxShadow: \"#ccc 0 0 9px 1px\",\n maxWidth: \"400px\",\n fontSize: \"0.9rem\"\n },\n secondaryRadioGroup: {\n marginLeft: \"1rem\"\n },\n secondaryRadio: {\n \"& span\": {\n fontSize: \"0.9rem\"\n }\n },\n buttonSecondary: {\n borderRadius: 6,\n padding: \"14px 30px\",\n color: \"#FFF !important\",\n textDecoration: \"none !important\",\n fontWeight: \"600\",\n fontSize: 14,\n background: theme.palette.secondary.main,\n \"&:hover\": {\n background: theme.palette.secondary.dark\n }\n },\n buttonSecondaryLight: {\n borderRadius: 6,\n padding: \"14px 30px\",\n background: theme.palette.secondary.light,\n color: theme.palette.secondary.main,\n \"&:hover\": {\n background: theme.palette.secondary.main,\n color: \"#FFF\"\n }\n },\n subheading: {\n fontSize: \"19.4px\",\n marginTop: \"0px\"\n },\n closeModalContainer: {\n display: \"flex\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n alignItems: \"center\"\n }\n}));\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { withScoutTheme } from \"../ThemeContext/ThemeContext\";\nimport AdEditor from \"./AdEditor\";\nfunction SeekAd({\n jobAdId,\n jobId,\n apiKey,\n linkOutEnabled,\n privacyOverLimit,\n seek_billing_reference,\n seek_billing_reference_flag,\n job_url_prop\n}) {\n return (\n // <div>Seek Ad: Job ID: {jobId}. Ad ID: {jobAdId} </div>\n /* @__PURE__ */ React.createElement(\n AdEditor,\n {\n jobAdId,\n apiKey,\n jobId,\n linkOutEnabled,\n privacyOverLimit,\n seek_billing_reference,\n seek_billing_reference_flag,\n job_url_prop\n }\n )\n );\n}\nexport default withScoutTheme(SeekAd);\nSeekAd.propTypes = {\n jobAdId: PropTypes.number.isRequired,\n jobId: PropTypes.number.isRequired,\n apiKey: PropTypes.string.isRequired,\n linkOutEnabled: PropTypes.bool.isRequired,\n privacyOverLimit: PropTypes.bool,\n seek_billing_reference: PropTypes.bool,\n seek_billing_reference_flag: PropTypes.bool,\n job_url_prop: PropTypes.string\n};\n","import SeekAd from \"./SeekAd\";\nexport default SeekAd;\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport queryString from \"query-string\";\nconst BASE_URL = \"/api/application_categories/category_assignments\";\nclass Api {\n constructor() {\n __publicField(this, \"handleResponse\", (response) => {\n if (response.ok) return response.json();\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n });\n __publicField(this, \"get\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}?${queryString.stringify(params, { arrayFormat: \"bracket\" })}`, {\n headers: this.getHeaders(headers)\n }).then((r) => this.handleResponse(r)));\n __publicField(this, \"post\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers),\n method: \"POST\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r)));\n __publicField(this, \"put\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers),\n method: \"PUT\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r)));\n __publicField(this, \"delete\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers),\n method: \"DELETE\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r)));\n __publicField(this, \"getCategories\", (entityId) => this.get(`/${entityId}`));\n __publicField(this, \"updateCategories\", (entityId, params) => this.put(`/${entityId}`, params));\n __publicField(this, \"createDefaultCategories\", (entityId) => this.post(`/${entityId}/create_defaults`));\n __publicField(this, \"removeCategories\", (entityId) => this.delete(`/${entityId}`));\n }\n getHeaders(headers) {\n return Object.assign({}, {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\",\n \"X-api-authenticate\": localStorage.getItem(\"userKey\")\n }, headers);\n }\n}\nexport default new Api();\n","import React from \"react\";\nimport { ArrowLeft, ArrowRight } from \"@material-ui/icons\";\nexport default function CategoryDeck({ categoryList, category, onMoveStatus }) {\n return /* @__PURE__ */ React.createElement(\"div\", { className: \"card\" }, /* @__PURE__ */ React.createElement(\"div\", { className: \"card-body\" }, /* @__PURE__ */ React.createElement(\"h2\", { className: \"card-title mt-0\" }, category), categoryList.map((item, idx) => /* @__PURE__ */ React.createElement(\"div\", { className: \"d-flex flex-row justify-content-between align-items-center\", key: idx }, category !== \"New\" ? /* @__PURE__ */ React.createElement(ArrowLeft, { onClick: () => onMoveStatus(item, category, \"left\") }) : null, /* @__PURE__ */ React.createElement(\"div\", { className: \"my-2\" }, item.name), category !== \"Unsuccessful\" ? /* @__PURE__ */ React.createElement(ArrowRight, { onClick: () => onMoveStatus(item, category, \"right\") }) : null))));\n}\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useEffect, useState } from \"react\";\nimport { Button, CircularProgress } from \"@material-ui/core\";\nimport { withScoutTheme } from \"../ThemeContext/ThemeContext\";\nimport Api from \"./API\";\nimport useStyles from \"./useStyles\";\nimport ScoutSelect from \"../scout/select\";\nfunction StatusCategories({ entityId, apiKey }) {\n const classes = useStyles();\n const [categories, setCategories] = useState([]);\n const [statuses, setStatuses] = useState([]);\n const [defaults, setDefaults] = useState({});\n const [loading, setLoading] = useState(false);\n const [saving, setSaving] = useState(false);\n const [saved, setSaved] = useState(false);\n const [dirty, setDirty] = useState(false);\n const [differentFromDefaults, setDifferentFromDefaults] = useState(false);\n const [hasParentSettings, setHasParentSettings] = useState(false);\n const [error, setError] = useState();\n const fetchCategories = () => __async(this, null, function* () {\n try {\n setError(void 0);\n const data = yield Api.getCategories(entityId);\n return data;\n } catch (err) {\n setError(err.message);\n return;\n }\n });\n const initialiseCategories = () => __async(this, null, function* () {\n setLoading(true);\n const data = yield fetchCategories();\n setCategories(data.categories);\n setStatuses(data.statuses);\n setDefaults(data.defaults);\n setHasParentSettings(data.has_parent_settings);\n setDifferentFromDefaults(defaultsDiff(data.categories, data.defaults));\n setLoading(false);\n });\n useEffect(() => {\n localStorage.setItem(\"userKey\", apiKey);\n initialiseCategories();\n }, []);\n const updateCategories = (cats) => __async(this, null, function* () {\n setDirty(false);\n setSaving(true);\n setSaved(false);\n const params = {\n category_assignment: { categories: cats }\n };\n try {\n setError(void 0);\n yield Api.updateCategories(entityId, params);\n setSaved(true);\n setCategories(cats);\n setDifferentFromDefaults(defaultsDiff(cats, defaults));\n } catch (err) {\n setError(err.message);\n }\n setSaving(false);\n setTimeout(() => {\n setSaved(false);\n }, 3e3);\n });\n const createDefaultCategories = () => __async(this, null, function* () {\n try {\n const { categories: categories2 } = yield Api.createDefaultCategories(entityId);\n setCategories(categories2);\n setDifferentFromDefaults(false);\n } catch (err) {\n setError(err.message);\n }\n });\n const removeCategories = () => __async(this, null, function* () {\n try {\n setError(void 0);\n const { categories: categories2 } = yield Api.removeCategories(entityId);\n setCategories([]);\n setDifferentFromDefaults(false);\n } catch (err) {\n setError(err.message);\n }\n });\n const resetCategories = () => __async(this, null, function* () {\n const newCategories = categories.map((category) => {\n return __spreadProps(__spreadValues({}, category), { status_id: defaults[category.name] });\n });\n yield updateCategories(newCategories);\n });\n const saveCategories = () => updateCategories(categories);\n const handleStatusChanged = (category, id) => {\n if (toS(category.status_id) === toS(id)) {\n return;\n }\n category.status_id = id;\n setDirty(true);\n };\n const toS = (obj) => (obj || \"\") + \"\";\n const categoryColumn = (category) => {\n return /* @__PURE__ */ React.createElement(\"div\", { className: \"category-column\", key: category.id }, /* @__PURE__ */ React.createElement(\"div\", { className: \"category-column-header\" }, category.name), /* @__PURE__ */ React.createElement(\n ScoutSelect,\n {\n name: \"category_status\",\n value: toS(category.status_id),\n data: statusOptions,\n onChange: (id) => handleStatusChanged(category, id)\n }\n ));\n };\n const defaultCategoryColumn = (categoryName, statusId) => {\n const status = statuses.find(({ id }) => id == statusId);\n return /* @__PURE__ */ React.createElement(\"div\", { className: \"category-column\", key: categoryName }, /* @__PURE__ */ React.createElement(\"div\", { className: \"category-column-header\" }, categoryName), /* @__PURE__ */ React.createElement(\"div\", null, status ? status.name : \"New\"));\n };\n const defaultsDiff = (collection, defaultsData) => collection.some((category) => toS(category.status_id) !== toS(defaultsData[category.name]));\n const statusOptions = statuses.map((status) => ({ label: status.name, value: toS(status.id) }));\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: \"modal fade\",\n id: \"statusCategoriesModal\",\n tabIndex: \"-1\",\n \"aria-labelledby\": \"statusCategoriesModalLabel\",\n \"aria-hidden\": \"true\"\n },\n /* @__PURE__ */ React.createElement(\"div\", { className: \"modal-dialog modal-xl\" }, /* @__PURE__ */ React.createElement(\"div\", { className: \"modal-content\" }, /* @__PURE__ */ React.createElement(\"div\", { className: \"modal-header\" }, /* @__PURE__ */ React.createElement(\"h2\", { className: \"mt-0\" }, \"Status Categories for Hiring Manager App\"), /* @__PURE__ */ React.createElement(\"button\", { type: \"button\", className: \"close\", \"data-dismiss\": \"modal\", \"aria-label\": \"Close\" }, /* @__PURE__ */ React.createElement(\"span\", { \"aria-hidden\": \"true\" }, \"\\xD7\"))), /* @__PURE__ */ React.createElement(\"div\", { className: \"modal-body\" }, loading ? /* @__PURE__ */ React.createElement(\"div\", { className: \"d-flex justify-content-center\" }, /* @__PURE__ */ React.createElement(CircularProgress, null)) : /* @__PURE__ */ React.createElement(\"div\", { className: \"categories-board\" }, categories.length > 0 && categories.map((category) => categoryColumn(category)), categories.length == 0 && Object.keys(defaults).map(\n (categoryName) => defaultCategoryColumn(categoryName, defaults[categoryName])\n ))), !loading && /* @__PURE__ */ React.createElement(\"div\", { className: `modal-footer ${classes.footer}` }, error && /* @__PURE__ */ React.createElement(\"div\", { className: \"alert alert-danger\" }, error), saved && /* @__PURE__ */ React.createElement(\"div\", { className: \"alert alert-success\" }, \"Saved\"), categories.length == 0 && /* @__PURE__ */ React.createElement(Button, { variant: \"text\", onClick: createDefaultCategories }, \"Use custom setting\"), hasParentSettings && categories.length > 0 && /* @__PURE__ */ React.createElement(Button, { variant: \"text\", onClick: removeCategories }, \"Use parent setting\"), categories.length > 0 && /* @__PURE__ */ React.createElement(\n Button,\n {\n variant: \"contained\",\n color: \"primary\",\n disabled: !dirty,\n onClick: saveCategories,\n startIcon: saving ? /* @__PURE__ */ React.createElement(CircularProgress, { size: 12, color: \"inherit\" }) : null\n },\n \"Save\"\n ), differentFromDefaults && /* @__PURE__ */ React.createElement(Button, { variant: \"outlined\", color: \"secondary\", onClick: resetCategories }, \"Reset to default\"))))\n ));\n}\nexport default withScoutTheme(StatusCategories);\n","import StatusCategories from \"./StatusCategories\";\nexport default StatusCategories;\n","import { makeStyles } from \"@material-ui/core/styles\";\nconst DARK_BLUE = \"#004E70\";\nexport default makeStyles(() => ({\n root: {\n position: \"relative\"\n },\n footer: {\n button: {\n marginLeft: 12\n }\n }\n}));\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useEffect, useState } from \"react\";\nimport { Dialog, Snackbar } from \"@material-ui/core\";\nimport useStyles from \"./useStyles\";\nimport { withScoutTheme } from \"../ThemeContext/ThemeContext\";\nimport PropTypes from \"prop-types\";\nimport ReactLoading from \"react-loading\";\nimport axios from \"axios\";\nimport queryString from \"query-string\";\nimport Messenger from \"./components/Messenger\";\nimport SelectRecipients from \"./components/SelectRecipients\";\nfunction TextUsModal({ applicationId, job, open }) {\n const [loading, setLoading] = useState(true);\n const [applications, setApplications] = useState(null);\n const [selectedApplications, setSelectedApplications] = useState([]);\n const [isGroupMessage, setIsGroupMessage] = useState(false);\n const [isSelectModalOpen, setIsSelectModalOpen] = useState(false);\n const [statuses, setStatuses] = useState([]);\n const [largeModal, setLargeModal] = useState(true);\n const [isOpen, setIsOpen] = useState(open);\n const [snack, setSnack] = useState(null);\n const classes = useStyles();\n const token = document.querySelector('meta[name=\"csrf-token\"]').content;\n const config = {\n credentials: \"same-origin\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\",\n \"X-CSRF-Token\": token\n }\n };\n const openModal = () => setIsOpen(true);\n const closeModal = () => setIsOpen(false);\n useEffect(() => {\n const toggleTextusModal = (e) => {\n if (!e.target.classList.contains(\"toggle-textus-btn\")) return;\n e.preventDefault();\n setIsGroupMessage(e.target.dataset.isSelectModalOpen === \"true\");\n openModal();\n };\n document.addEventListener(\"click\", toggleTextusModal);\n return () => document.removeEventListener(\"click\", toggleTextusModal);\n }, [isOpen]);\n useEffect(() => {\n function getData() {\n return __async(this, null, function* () {\n setLargeModal(true);\n setLoading(true);\n try {\n const { data } = yield axios.get(`/admin/jobs/${job.id}/applications/`, __spreadProps(__spreadValues({}, config), {\n params: { application_ids: applicationId },\n paramsSerializer: (params) => queryString.stringify(params, { arrayFormat: \"bracket\" })\n }));\n setApplications(data.applications);\n if (isGroupMessage) {\n setIsSelectModalOpen(true);\n } else {\n setIsSelectModalOpen(false);\n setSelectedApplications(data.applications);\n }\n setStatuses([\n {\n id: null,\n state: \"new\",\n name: \"New\",\n colour: \"\"\n },\n ...data.statuses\n ]);\n } catch (e) {\n setSnack(\"Could not fetch applicant data\");\n } finally {\n setLoading(false);\n }\n });\n }\n getData();\n }, [isGroupMessage, isOpen]);\n if (loading) return /* @__PURE__ */ React.createElement(ReactLoading, { type: \"spin\", color: \"#004E70\", width: 45, className: classes.loading });\n return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\n Dialog,\n {\n disableEnforceFocus: true,\n fullWidth: true,\n open: isOpen,\n onClose: closeModal,\n classes: { paper: `${classes.modalRoot} ${largeModal ? classes.modalLarge : \"\"}` }\n },\n isSelectModalOpen ? /* @__PURE__ */ React.createElement(\n SelectRecipients,\n {\n statuses,\n applications,\n setSelectedApplications,\n setIsSelectModalOpen\n }\n ) : /* @__PURE__ */ React.createElement(\n Messenger,\n {\n job,\n statuses,\n applications,\n selectedApplications,\n setSelectedApplications,\n setLargeModal,\n closeModal,\n setSnack,\n isGroupMessage,\n setIsGroupMessage,\n token,\n config\n }\n )\n ), /* @__PURE__ */ React.createElement(\n Snackbar,\n {\n open: snack,\n onClose: () => setSnack(null),\n message: snack\n }\n ));\n}\nTextUsModal.propTypes = {\n applicationId: PropTypes.number,\n job: PropTypes.object.isRequired,\n isSelectModalOpen: PropTypes.bool\n};\nexport default withScoutTheme(TextUsModal);\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { useEffect, useState } from \"react\";\nimport useStyles from \"./useStyles\";\nimport { withScoutTheme } from \"../../../ThemeContext/ThemeContext\";\nimport PropTypes from \"prop-types\";\nimport axios from \"axios\";\nimport ReactLoading from \"react-loading\";\nimport queryString from \"query-string\";\nimport CandidateListItem from \"./components/CandidateListItem\";\nimport ChatWindow from \"./components/ChatWindow\";\nimport ChatBox from \"./components/ChatBox\";\nimport CandidateFilter from \"./components/CandidateFilter\";\nimport CandidateDetails from \"./components/CandidateDetails\";\nimport moment from \"moment\";\nfunction Messenger({ job, setLargeModal, statuses, selectedApplications, setSelectedApplications, isGroupMessage, config, applications }) {\n const [conversationsLoading, setConversationsLoading] = useState(true);\n const [userOptionsLoading, setUserOptionsLoading] = useState(true);\n const [sending, setSending] = useState(false);\n const [conversations, setConversations] = useState([]);\n const [userOptions, setUserOptions] = useState(null);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const [selectedStatuses, setSelectedStatuses] = useState([]);\n const [showSidebar, setShowSidebar] = useState(true);\n const [selectedConversation, setSelectedConversation] = useState([]);\n const [body, setBody] = useState(\"\");\n const [signature, setSignature] = useState(\"\");\n const [scheduleDate, setScheduleDate] = useState(null);\n const [scheduleTime, setScheduleTime] = useState(moment().add(\"1 h\").format(\"hh:mm\"));\n const [isPm, setIsPm] = useState(false);\n const [groupMessage, setGroupMessage] = useState(isGroupMessage);\n const classes = useStyles();\n useEffect(() => {\n function initData() {\n return __async(this, null, function* () {\n const conversations2 = yield fetchConversations(selectedApplications);\n setConversations(conversations2);\n fetchUserOptions();\n });\n }\n initData();\n }, [selectedApplications]);\n useEffect(() => {\n if (conversations.length === 1 || selectedConversation.length > 1) {\n setLargeModal(false);\n setShowSidebar(false);\n } else {\n setLargeModal(true);\n setShowSidebar(true);\n }\n }, [conversations, selectedConversation]);\n useEffect(() => {\n setBody(\"\");\n setSignature(\"\");\n }, [selectedConversation]);\n function fetchUserOptions() {\n return __async(this, null, function* () {\n setUserOptionsLoading(true);\n try {\n const { data } = yield axios.get(\"/admin/integrations/textus/user_options\");\n setUserOptions(data);\n } catch (e) {\n console.log(e);\n } finally {\n setUserOptionsLoading(false);\n }\n });\n }\n function fetchConversations(applications2) {\n return __async(this, null, function* () {\n setConversationsLoading(true);\n try {\n const { data: conversationsData } = yield axios.get(\"/admin/integrations/textus/conversations\", __spreadProps(__spreadValues({}, config), {\n params: __spreadValues({\n job_id: job.id\n }, applications2.length === 1 && { candidate_id: applications2[0].candidate_id }),\n paramsSerializer: (params) => queryString.stringify(params, { arrayFormat: \"bracket\" })\n }));\n const conversations2 = applications2.map((app) => {\n const matchingConversation = conversationsData && conversationsData.find((convo) => convo && convo.candidate_id === app.candidate_id);\n return {\n id: app.id,\n candidate_id: app.candidate_id,\n candidate_name: app.name,\n candidate_phone: app.phone,\n candidate_status: app.status,\n candidate_tags: app.tags,\n messages: matchingConversation ? matchingConversation.messages : []\n };\n });\n groupMessage ? setSelectedConversation(conversations2) : setSelectedConversation([conversations2[0]]);\n return conversations2;\n } catch (e) {\n console.log(e);\n } finally {\n setConversationsLoading(false);\n }\n });\n }\n function handleTimeValueForPost(value) {\n const time = value.replace(/-/g, \":\");\n const [hour, minute] = time.split(\":\");\n if (isPm) {\n return parseInt(hour) === 12 ? `00:${minute}:00` : `${parseInt(hour) + 12}:${minute}:00`;\n } else {\n return `${hour}:${minute}:00`;\n }\n }\n function handleSend() {\n return __async(this, null, function* () {\n setSending(true);\n try {\n if (groupMessage) {\n const { data } = yield axios.post(\"/admin/integrations/textus/campaigns\", {\n job_id: job.id,\n candidate_ids: selectedApplications.map((app) => app.candidate_id),\n campaign_title: `${job.reference} - ${job.title} (${moment().format(\"LLLL\")})`,\n body,\n schedule_time: scheduleDate ? moment(`${scheduleDate} ${handleTimeValueForPost(scheduleTime)}`).format() : null\n }, config);\n const newConversations = conversations.map((convo) => __spreadProps(__spreadValues({}, convo), {\n messages: [data.messages[0], ...convo.messages].filter((msg) => msg)\n }));\n const existingConversations = yield fetchConversations(applications.filter((app) => !selectedApplications.map((selected) => selected.candidate_id).includes(app.candidate_id)));\n const combinedConversations = [...newConversations, ...existingConversations];\n setGroupMessage(false);\n setConversations(combinedConversations);\n setSelectedConversation([combinedConversations[0]]);\n } else {\n const { data } = yield axios.post(\"/admin/integrations/textus/messages\", {\n job_id: job.id,\n candidate_id: selectedConversation[0].candidate_id,\n body,\n signature,\n schedule_time: scheduleDate ? moment(`${scheduleDate} ${handleTimeValueForPost(scheduleTime)}`).format() : null\n }, config);\n const newConversation = __spreadProps(__spreadValues({}, selectedConversation[0]), {\n messages: [data.messages[0], ...selectedConversation[0].messages]\n });\n setSelectedConversation([newConversation]);\n setConversations([newConversation, ...conversations.filter((convo) => convo.candidate_id !== selectedConversation[0].candidate_id)]);\n }\n } catch (e) {\n console.log(e);\n } finally {\n setSending(false);\n }\n });\n }\n if (userOptionsLoading || conversationsLoading) return /* @__PURE__ */ React.createElement(ReactLoading, { type: \"spin\", color: \"#004E70\", width: 45, className: classes.loading });\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, showSidebar && /* @__PURE__ */ React.createElement(\"div\", { className: classes.modalLeft }, /* @__PURE__ */ React.createElement(\n CandidateFilter,\n {\n statuses,\n selectedStatuses,\n setSelectedStatuses,\n searchTerm,\n setSearchTerm,\n conversations\n }\n ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.candidateList }, conversations.filter((convo) => selectedStatuses.length > 0 ? selectedStatuses.map((status) => status.id).includes(convo.candidate_status) : convo.candidate_name.toLowerCase().includes(searchTerm.toLowerCase())).sort((a, b) => !a.messages[0] - !b.messages[0] || a.messages[0] && b.messages[0] && new Date(b.messages[0].sent_time) - new Date(a.messages[0].sent_time)).map(\n (convo) => /* @__PURE__ */ React.createElement(\n CandidateListItem,\n {\n key: convo.id,\n conversation: convo,\n statuses,\n selectedConversation,\n setSelectedConversation\n }\n )\n ))), /* @__PURE__ */ React.createElement(\"div\", { className: classes.modalRight, style: { flexBasis: showSidebar ? \"64%\" : \"100%\" } }, /* @__PURE__ */ React.createElement(\n CandidateDetails,\n {\n conversation: selectedConversation\n }\n ), /* @__PURE__ */ React.createElement(\n ChatWindow,\n {\n body,\n conversation: selectedConversation,\n signature\n }\n ), /* @__PURE__ */ React.createElement(\n ChatBox,\n {\n body,\n setBody,\n signature,\n setSignature,\n conversation: selectedConversation,\n userOptions,\n handleSend,\n sending,\n scheduleDate,\n setScheduleDate,\n scheduleTime,\n setScheduleTime,\n isPm,\n setIsPm,\n job\n }\n )));\n}\nMessenger.propTypes = {\n job: PropTypes.object.isRequired,\n setLargeModal: PropTypes.func.isRequired,\n statuses: PropTypes.array.isRequired,\n selectedApplications: PropTypes.array.isRequired,\n setSelectedApplications: PropTypes.func.isRequired,\n applications: PropTypes.array.isRequired,\n config: PropTypes.object.isRequired,\n closeModal: PropTypes.func.isRequired,\n setSnack: PropTypes.func.isRequired\n};\nexport default withScoutTheme(Messenger);\n","import React from \"react\";\nimport useStyles from \"./useStyles\";\nimport PropTypes from \"prop-types\";\nimport GroupRoundedIcon from \"@material-ui/icons/GroupRounded\";\nfunction CandidateDetails({ conversation }) {\n const classes = useStyles();\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, conversation.length > 1 ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"h4\", null, `${conversation[0].candidate_name}, ${conversation[1].candidate_name}`), conversation.length - 2 > 0 && /* @__PURE__ */ React.createElement(\"div\", { className: classes.remainingApplicants }, /* @__PURE__ */ React.createElement(GroupRoundedIcon, { color: \"primary\", fontSize: \"small\" }), \"+\", conversation.length - 2)) : /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"h4\", null, conversation[0].candidate_name), /* @__PURE__ */ React.createElement(\"span\", null, conversation[0].candidate_phone)));\n}\nCandidateDetails.propTypes = {\n conversation: PropTypes.array.isRequired\n};\nexport default CandidateDetails;\n","import CandidateDetails from \"./CandidateDetails\";\nexport default CandidateDetails;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n root: {\n display: \"flex\",\n flexDirection: \"row\",\n flexBasis: \"10%\",\n padding: \"24px 50px\",\n borderBottom: \"1px solid #F3F3F3\",\n alignItems: \"center\",\n \"& h4\": {\n marginTop: 0,\n color: \"#004E70\",\n fontSize: 24,\n marginRight: 16,\n fontWeight: \"600\",\n textTransform: \"capitalize\"\n },\n \"& span\": {\n color: \"#393939\",\n fontSize: 16\n }\n },\n remainingApplicants: {\n background: \"#F3F6F7\",\n padding: \"10px 14px\",\n display: \"flex\",\n borderRadius: \"65px\",\n alignItems: \"center\",\n marginLeft: 10,\n fontSize: 14,\n fontWeight: \"900\",\n color: theme.palette.primary.main,\n pointerEvents: \"none\",\n \"& svg\": {\n marginRight: 6\n }\n }\n}));\n","import React, { useState, useRef } from \"react\";\nimport useStyles from \"./useStyles\";\nimport sharedStyles from \"../ChatBox/useStyles\";\nimport PropTypes from \"prop-types\";\nimport {\n TextField,\n IconButton,\n InputAdornment,\n ClickAwayListener,\n Popper,\n Chip\n} from \"@material-ui/core\";\nimport { Autocomplete } from \"@material-ui/lab\";\nimport FilterListIcon from \"@material-ui/icons/FilterList\";\nimport SearchIcon from \"@material-ui/icons/Search\";\nfunction CandidateFilter({ conversations, statuses, selectedStatuses, setSelectedStatuses, searchTerm, setSearchTerm }) {\n const [isOpen, setIsOpen] = useState(false);\n const anchor = useRef(null);\n const classes = useStyles();\n const sharedClasses = sharedStyles();\n const unselectedStatuses = statuses.filter((status) => conversations.map((app) => app.candidate_status).includes(status.id)).filter((status) => !selectedStatuses.map((selected) => selected.id).includes(status.id));\n return /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.root} ${selectedStatuses.length > 0 ? classes.reducePadding : \"\"}` }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.searchContainer }, /* @__PURE__ */ React.createElement(\n TextField,\n {\n classes: { root: classes.search },\n variant: \"outlined\",\n placeholder: \"Search\",\n value: searchTerm,\n onChange: (e) => setSearchTerm(e.target.value),\n InputProps: {\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, /* @__PURE__ */ React.createElement(SearchIcon, null))\n }\n }\n ), /* @__PURE__ */ React.createElement(ClickAwayListener, { onClickAway: () => setIsOpen(false) }, /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(IconButton, { ref: anchor, onClick: () => setIsOpen(!isOpen), className: `${classes.filterIcon} ${isOpen ? classes.filterIconActive : \"\"}` }, /* @__PURE__ */ React.createElement(FilterListIcon, null)), /* @__PURE__ */ React.createElement(\n Popper,\n {\n className: `${sharedClasses.popper} ${classes.popperStatuses}`,\n anchorEl: anchor.current,\n open: isOpen,\n placement: \"bottom-end\",\n popperOptions: { positionFixed: true }\n },\n unselectedStatuses.length > 0 ? unselectedStatuses.map(\n (status) => /* @__PURE__ */ React.createElement(\n \"div\",\n {\n key: status.id,\n className: sharedClasses.popperItem,\n onClick: () => {\n setSelectedStatuses([...selectedStatuses, status]);\n setIsOpen(false);\n }\n },\n status.name\n )\n ) : /* @__PURE__ */ React.createElement(\"div\", { className: classes.chipNoItems }, \"No statuses to display\")\n )))), selectedStatuses.length > 0 && /* @__PURE__ */ React.createElement(\"div\", { className: classes.chipContainer }, selectedStatuses.map(\n (status) => /* @__PURE__ */ React.createElement(\n Chip,\n {\n key: status.id,\n className: classes.chipItem,\n label: status.name,\n onDelete: () => setSelectedStatuses(selectedStatuses.filter((selected) => selected.id !== status.id)),\n variant: \"outlined\"\n }\n )\n )));\n}\nCandidateFilter.propTypes = {\n conversations: PropTypes.array.isRequired,\n statuses: PropTypes.arrayOf(\n PropTypes.shape({\n colour: PropTypes.string,\n id: PropTypes.number,\n name: PropTypes.string,\n position: PropTypes.number,\n state: PropTypes.string\n })\n ).isRequired,\n selectedStatuses: PropTypes.array.isRequired,\n setSelectedStatuses: PropTypes.func.isRequired,\n searchTerm: PropTypes.string,\n setSearchTerm: PropTypes.func.isRequired\n};\nexport default CandidateFilter;\n","import CandidateFilter from \"./CandidateFilter\";\nexport default CandidateFilter;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n root: {\n padding: \"30px 40px\",\n borderBottom: \"1px solid #F3F3F3\"\n },\n reducePadding: {\n paddingBottom: 10\n },\n searchContainer: {\n display: \"flex\"\n },\n search: {\n flexGrow: 1,\n marginRight: 12,\n background: \"#FAFAFA\",\n border: \"1px solid #EAEEF0\",\n borderRadius: 6,\n justifyContent: \"center\",\n \"& svg\": {\n fill: \"#939393\"\n },\n \"& fieldset\": {\n border: 0\n },\n \"& input\": {\n padding: \"0 8px !important\"\n }\n },\n filterIcon: {\n color: \"#939393\",\n padding: 5,\n background: \"#FAFAFA\",\n border: \"1px solid #EAEEF0\",\n borderRadius: 6,\n \"&:focus\": {\n outline: 0\n },\n \"& svg\": {\n fill: \"#939393\"\n }\n },\n filterIconActive: {\n background: \"#ececec\"\n },\n popperStatuses: {\n maxHeight: 400,\n maxWidth: 250,\n minWidth: 250\n },\n chipContainer: {\n paddingTop: 10\n },\n chipItem: {\n margin: \"2px 4px\"\n },\n chipNoItems: {\n padding: \"10px 0\",\n fontSize: 15,\n color: \"#999\",\n textAlign: \"center\"\n }\n}));\n","import React from \"react\";\nimport useStyles from \"./useStyles\";\nimport PropTypes from \"prop-types\";\nimport moment from \"moment\";\nfunction CandidateListItem({ conversation, selectedConversation, setSelectedConversation }) {\n const classes = useStyles();\n return /* @__PURE__ */ React.createElement(\n \"div\",\n {\n className: `${classes.root} ${selectedConversation[0].id === conversation.id ? \"selected\" : \"\"}`,\n onClick: () => setSelectedConversation([conversation])\n },\n /* @__PURE__ */ React.createElement(\"div\", { className: classes.details }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.name }, /* @__PURE__ */ React.createElement(\"h4\", null, conversation.candidate_name)), /* @__PURE__ */ React.createElement(\"div\", { className: classes.time }, conversation.messages.length > 0 && conversation.messages[0].sent_time && moment(conversation.messages[0].sent_time).fromNow())),\n /* @__PURE__ */ React.createElement(\"p\", { className: classes.excerpt }, conversation.messages.length > 0 ? conversation.messages[0].body : \"No messages\")\n );\n}\nCandidateListItem.propTypes = {\n conversation: PropTypes.object.isRequired,\n selectedConversation: PropTypes.array.isRequired,\n setSelectedConversation: PropTypes.func.isRequired\n};\nexport default CandidateListItem;\n","import CandidateListItem from \"./CandidateListItem\";\nexport default CandidateListItem;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n root: {\n padding: \"30px 40px\",\n borderBottom: \"1px solid #F3F3F3\",\n \"&.selected\": {\n background: \"#F3F6F7\"\n },\n \"&:hover\": {\n cursor: \"pointer\",\n background: \"#F3F6F7\",\n \"& p\": {\n color: \"#123848\"\n }\n }\n },\n details: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\"\n },\n name: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n flexGrow: 1,\n \"& h4\": {\n marginTop: 0,\n fontSize: 18,\n color: theme.palette.primary.main,\n fontWeight: \"600\",\n lineHeight: \"20px\",\n textTransform: \"capitalize\"\n }\n },\n status: {\n borderRadius: \"100%\",\n background: theme.palette.error.main,\n //TODO Update with appropriate status colors\n marginLeft: \"auto\",\n height: 8,\n width: 8\n },\n time: {\n color: \"#393939\",\n fontSize: 14,\n whiteSpace: \"nowrap\",\n marginLeft: 6,\n textTransform: \"capitalize\"\n },\n excerpt: {\n fontSize: 12,\n color: \"#393939\",\n marginTop: 10,\n lineHeight: \"18px\"\n }\n}));\n","import React, { useState, useRef, useEffect } from \"react\";\nimport useStyles from \"./useStyles\";\nimport PropTypes from \"prop-types\";\nimport {\n Button,\n IconButton,\n Popper,\n TextareaAutosize,\n CircularProgress,\n ClickAwayListener,\n ButtonGroup\n} from \"@material-ui/core\";\nimport {\n TemplatePicker,\n TagPicker,\n SignatureToggle\n} from \"./components\";\nimport DayPickerInput from \"react-day-picker/DayPickerInput\";\nimport ArrowDropDownIcon from \"@material-ui/icons/ArrowDropDown\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport TimeField from \"react-simple-timefield\";\nimport { formatDate } from \"react-day-picker/moment\";\nfunction ChatBox({\n conversation,\n userOptions,\n body,\n setBody,\n signature,\n setSignature,\n handleSend,\n sending,\n scheduleDate,\n setScheduleDate,\n scheduleTime,\n setScheduleTime,\n isPm,\n setIsPm,\n job\n}) {\n const [isSchedulerOpen, setIsSchedulerOpen] = useState(false);\n const timeInputEl = useRef(null);\n const anchor = useRef(null);\n const textArea = useRef(null);\n const classes = useStyles();\n function insertTag(tag) {\n const index = textArea.current.selectionStart;\n setBody(body.slice(0, index) + tag + body.substring(index));\n }\n function handleTimeChange(event, value) {\n const time = value.replace(/-/g, \":\");\n const [hour, minute] = time.split(\":\");\n hour >= 12 ? setScheduleTime(`12:${minute}:00`) : setScheduleTime(`${hour}:${minute}:00`);\n }\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, /* @__PURE__ */ React.createElement(\n TextareaAutosize,\n {\n ref: textArea,\n className: classes.textArea,\n minRows: 2,\n maxRows: 6,\n placeholder: `Reply to ${conversation.length > 1 ? `${conversation.length} applicants` : conversation[0].candidate_name}`,\n value: body,\n onChange: (e) => setBody(e.target.value)\n }\n ), signature && /* @__PURE__ */ React.createElement(\"div\", { className: classes.signature }, signature), /* @__PURE__ */ React.createElement(\"div\", { className: classes.actions }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.actionButtons }, /* @__PURE__ */ React.createElement(\n TagPicker,\n {\n insertTag,\n job\n }\n ), /* @__PURE__ */ React.createElement(\n TemplatePicker,\n {\n setBody,\n userOptions\n }\n ), userOptions && userOptions.signature && /* @__PURE__ */ React.createElement(\n SignatureToggle,\n {\n signature,\n setSignature,\n userOptions\n }\n )), /* @__PURE__ */ React.createElement(\"div\", { className: classes.characterCount }, body.length + signature.length, \"/420 characters\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.send }, /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n variant: \"contained\",\n classes: { root: classes.sendButton },\n onClick: handleSend\n },\n sending ? /* @__PURE__ */ React.createElement(CircularProgress, { thickness: 4.5, size: 28, classes: { root: classes.spinner } }) : scheduleDate ? \"Schedule\" : \"Send\"\n ), /* @__PURE__ */ React.createElement(ClickAwayListener, { onClickAway: () => setIsSchedulerOpen(false) }, /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n IconButton,\n {\n classes: { root: `${classes.schedulerButton} ${isSchedulerOpen ? classes.schedulerButtonActive : \"\"}` },\n ref: anchor,\n onClick: () => setIsSchedulerOpen(!isSchedulerOpen)\n },\n /* @__PURE__ */ React.createElement(ArrowDropDownIcon, { fontSize: \"small\" })\n ), /* @__PURE__ */ React.createElement(\n Popper,\n {\n className: `${classes.popper} ${classes.popperScheduler}`,\n anchorEl: anchor.current,\n open: isSchedulerOpen,\n placement: \"top-end\",\n popperOptions: { positionFixed: true }\n },\n /* @__PURE__ */ React.createElement(\"h4\", null, \"Schedule message to be sent\"),\n /* @__PURE__ */ React.createElement(\"div\", { className: classes.schedulerOptions }, /* @__PURE__ */ React.createElement(\n DayPickerInput,\n {\n value: scheduleDate,\n onDayChange: (day) => setScheduleDate(formatDate(day, \"LL\")),\n classNames: {\n container: classes.calendarContainer\n },\n format: \"LL\",\n placeholder: \"Select a date\"\n }\n ), /* @__PURE__ */ React.createElement(\"div\", { className: classes.startingTimeInputWrapper }, /* @__PURE__ */ React.createElement(\n TimeField,\n {\n ref: timeInputEl,\n value: scheduleTime,\n onChange: handleTimeChange,\n className: classes.startTimeInput\n }\n ), /* @__PURE__ */ React.createElement(ButtonGroup, { className: classes.timeBntGroupWrapper }, /* @__PURE__ */ React.createElement(\n Button,\n {\n className: !isPm && classes.isAMActive,\n onClick: () => setIsPm(false)\n },\n \"AM\"\n ), /* @__PURE__ */ React.createElement(\n Button,\n {\n className: isPm && classes.isPMActive,\n onClick: () => setIsPm(true)\n },\n \"PM\"\n )), scheduleDate && /* @__PURE__ */ React.createElement(\n IconButton,\n {\n onClick: () => {\n setScheduleDate(\"\");\n setScheduleTime(\"00:00\");\n }\n },\n /* @__PURE__ */ React.createElement(HighlightOffIcon, { color: \"error\" })\n )))\n ))))));\n}\nChatBox.propTypes = {\n conversation: PropTypes.array.isRequired,\n userOptions: PropTypes.object.isRequired,\n body: PropTypes.string,\n setBody: PropTypes.func.isRequired,\n signature: PropTypes.string,\n setSignature: PropTypes.func.isRequired,\n handleSend: PropTypes.func.isRequired,\n sending: PropTypes.bool.isRequired,\n scheduleDate: PropTypes.string.isRequired,\n setScheduleDate: PropTypes.func.isRequired,\n scheduleTime: PropTypes.string.isRequired,\n setScheduleTime: PropTypes.func.isRequired,\n isPm: PropTypes.bool.isRequired,\n setIsPm: PropTypes.func.isRequired,\n job: PropTypes.object.isRequired\n};\nexport default ChatBox;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport useStyles from \"../useStyles\";\nimport { IconButton } from \"@material-ui/core\";\nimport GestureIcon from \"@material-ui/icons/Gesture\";\nfunction SignatureToggle({ signature, setSignature, userOptions }) {\n const classes = useStyles();\n function handleSignature() {\n signature ? setSignature(\"\") : setSignature(userOptions.signature);\n }\n return /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n IconButton,\n {\n classes: { root: classes.actionButton },\n onClick: handleSignature\n },\n /* @__PURE__ */ React.createElement(GestureIcon, { fontSize: \"small\", color: signature ? \"primary\" : \"disabled\" })\n ));\n}\nSignatureToggle.propTypes = {\n signature: PropTypes.string,\n setSignature: PropTypes.func.isRequired,\n userOptions: PropTypes.object.isRequired\n};\nexport default SignatureToggle;\n","import React, { useState, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport useStyles from \"../useStyles\";\nimport {\n Popper,\n ClickAwayListener,\n IconButton\n} from \"@material-ui/core\";\nimport MoreOutlinedIcon from \"@material-ui/icons/MoreOutlined\";\nfunction TagPicker({ insertTag, job }) {\n const [isOpen, setIsOpen] = useState(false);\n const anchor = useRef(null);\n const classes = useStyles();\n function handleClick(tag) {\n insertTag(tag);\n setIsOpen(false);\n }\n return /* @__PURE__ */ React.createElement(ClickAwayListener, { onClickAway: () => setIsOpen(false) }, /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n IconButton,\n {\n classes: { root: classes.actionButton },\n ref: anchor,\n onClick: () => setIsOpen(!isOpen)\n },\n /* @__PURE__ */ React.createElement(MoreOutlinedIcon, { fontSize: \"small\", color: \"primary\" })\n ), /* @__PURE__ */ React.createElement(\n Popper,\n {\n className: classes.popper,\n anchorEl: anchor.current,\n open: isOpen,\n placement: \"top-start\"\n },\n /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(\"div\", { className: classes.popperItem, onClick: () => handleClick('{{contact.firstName | default: \"there\"}}') }, /* @__PURE__ */ React.createElement(\"span\", null, \"First Name\")), /* @__PURE__ */ React.createElement(\"div\", { className: classes.popperItem, onClick: () => handleClick('{{contact.lastName | default: \"there\"}}') }, /* @__PURE__ */ React.createElement(\"span\", null, \"Last Name\")), /* @__PURE__ */ React.createElement(\"div\", { className: classes.popperItem, onClick: () => handleClick(job.title) }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job Name\")), /* @__PURE__ */ React.createElement(\"div\", { className: classes.popperItem, onClick: () => handleClick(job.address_state || job.location) }, /* @__PURE__ */ React.createElement(\"span\", null, \"Job Location\")))\n )));\n}\nTagPicker.propTypes = {\n insertTag: PropTypes.func.isRequired,\n job: PropTypes.object.isRequired\n};\nexport default TagPicker;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport useStyles from \"../useStyles\";\nimport inputStyles from \"../../CandidateFilter/useStyles\";\nimport {\n Popper,\n ClickAwayListener,\n IconButton,\n TextField,\n InputAdornment\n} from \"@material-ui/core\";\nimport BookmarksOutlinedIcon from \"@material-ui/icons/BookmarksOutlined\";\nimport SearchOutlinedIcon from \"@material-ui/icons/SearchOutlined\";\nfunction TemplatePicker({ setBody, userOptions }) {\n const [isOpen, setIsOpen] = useState(false);\n const [searchTerm, setSearchTerm] = useState(\"\");\n const anchor = useRef(null);\n const classes = useStyles();\n function handleClick(template) {\n setBody(template.body);\n setIsOpen(false);\n }\n return /* @__PURE__ */ React.createElement(ClickAwayListener, { onClickAway: () => setIsOpen(false) }, /* @__PURE__ */ React.createElement(\"div\", null, /* @__PURE__ */ React.createElement(\n IconButton,\n {\n classes: { root: classes.actionButton },\n ref: anchor,\n onClick: () => setIsOpen(!isOpen)\n },\n /* @__PURE__ */ React.createElement(BookmarksOutlinedIcon, { fontSize: \"small\", color: \"primary\" })\n ), /* @__PURE__ */ React.createElement(\n Popper,\n {\n className: `${classes.popper} ${classes.popperTemplate}`,\n anchorEl: anchor.current,\n open: isOpen,\n placement: \"top-start\",\n popperOptions: { positionFixed: true }\n },\n /* @__PURE__ */ React.createElement(\n TextField,\n {\n className: classes.textField,\n type: \"string\",\n placeholder: \"Search templates\",\n value: searchTerm,\n onChange: (e) => setSearchTerm(e.target.value.toLowerCase()),\n variant: \"outlined\",\n InputProps: {\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, /* @__PURE__ */ React.createElement(SearchOutlinedIcon, null))\n }\n }\n ),\n userOptions && userOptions.templates ? userOptions.templates.filter((template) => template.title.toLowerCase().includes(searchTerm)).map(\n (template) => /* @__PURE__ */ React.createElement(\"div\", { key: template.id, className: classes.popperItemTemplate, onClick: () => handleClick(template) }, /* @__PURE__ */ React.createElement(\"h4\", null, template.title), /* @__PURE__ */ React.createElement(\"span\", null, template.body))\n ) : /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.popperItemTemplate} ${classes.noHover}` }, /* @__PURE__ */ React.createElement(\"h4\", null, \"No templates\"))\n )));\n}\nTemplatePicker.propTypes = {\n setBody: PropTypes.func.isRequired,\n userOptions: PropTypes.object.isRequired\n};\nexport default TemplatePicker;\n","import ChatBox from \"./ChatBox\";\nexport default ChatBox;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n root: {\n flexBasis: \"15%\",\n padding: \"20px 50px\",\n borderTop: \"1px solid #F3F3F3\",\n fontSize: 15,\n lineHeight: \"20px\",\n \"& button:focus\": {\n outline: 0\n }\n },\n textArea: {\n resize: \"none\",\n border: 0,\n borderRadius: 0,\n width: \"100%\",\n \"&:focus-visible\": {\n outline: 0\n },\n \"&::placeholder\": {\n color: \"#B4B4B4\"\n }\n },\n signature: {\n whiteSpace: \"pre-line\"\n },\n actions: {\n marginTop: 10,\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"flex-end\"\n },\n characterCount: {\n marginLeft: \"auto\",\n color: \"#B4B4B4\",\n fontSize: 14,\n marginRight: 20\n },\n popper: {\n boxShadow: \"0px 2px 14px rgba(48, 90, 111, 0.16)\",\n padding: \"8px 0\",\n background: \"#FFF\",\n borderRadius: 6,\n zIndex: 1e5,\n overflow: \"scroll\",\n \"& > div:last-child\": {\n borderBottom: 0\n }\n },\n popperScheduler: {\n padding: 26,\n overflow: \"visible\",\n \"& h4\": {\n marginTop: 0,\n marginBottom: 16,\n color: theme.palette.primary.main,\n fontWeight: \"600\",\n fontSize: 20\n }\n },\n popperTemplate: {\n padding: 0,\n minWidth: 340,\n maxWidth: 340,\n minHeight: 500,\n maxHeight: 500\n },\n popperItem: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n padding: \"6px 24px\",\n \"& svg\": {\n marginRight: 12\n },\n \"& span\": {\n fontSize: 15,\n userSelect: \"none\"\n },\n \"&:hover\": {\n background: \"#F3F6F7\",\n cursor: \"pointer\"\n }\n },\n popperItemTemplate: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"25px 30px\",\n borderBottom: \"1px solid #F3F3F3\",\n \"& h4\": {\n marginTop: 0,\n fontSize: 16,\n color: theme.palette.primary.main,\n fontWeight: \"600\",\n marginBottom: 6\n },\n \"& span\": {\n fontSize: 12,\n color: \"#393939\",\n lineHeight: \"16px\"\n },\n \"&:hover\": {\n background: \"#F3F6F7\",\n cursor: \"pointer\"\n }\n },\n noHover: {\n \"&:hover\": {\n background: \"none\",\n cursor: \"default\"\n }\n },\n textField: {\n width: \"100%\",\n padding: 20,\n paddingBottom: 6,\n \"& .MuiInputBase-root\": {\n background: \"#FAFAFA\",\n \"&:hover fieldset\": {\n border: \"1px solid #D3DCE0\"\n }\n },\n \"& svg\": {\n fill: \"#939393\"\n },\n \"& input\": {\n padding: 14,\n paddingLeft: 2\n },\n \"& fieldset, .Mui-focused fieldset\": {\n border: \"1px solid #EAEEF0\"\n }\n },\n actionButton: {\n \"&:focus\": {\n outline: 0\n }\n },\n actionButtons: {\n display: \"flex\",\n flexDirection: \"row\"\n },\n send: {\n minWidth: 120,\n display: \"flex\"\n },\n spinner: {\n color: \"#FFF\"\n },\n sendButton: {\n minHeight: 40,\n maxHeight: 40,\n flexGrow: 1,\n borderRadius: 6,\n color: \"#FFF\",\n fontWeight: \"600\",\n fontSize: 16,\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n marginRight: 1,\n background: theme.palette.success.main,\n \"&:hover\": {\n background: theme.palette.success.dark\n }\n },\n schedulerButton: {\n minHeight: 40,\n borderRadius: 6,\n color: \"#FFF\",\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n background: theme.palette.success.main,\n maxHeight: 37,\n \"&:hover\": {\n background: theme.palette.success.dark\n }\n },\n schedulerButtonActive: {\n background: theme.palette.success.dark\n },\n schedulerOptions: {\n display: \"flex\",\n alignItems: \"center\",\n \"& fieldset\": {\n border: \"1px solid #DDDDDD !important\"\n },\n \"& > div\": {\n marginRight: 20,\n \"&:last-child\": {\n marginRight: 0\n }\n }\n },\n select: {\n padding: \"10px 18px\",\n borderRadius: 6,\n border: \"1px solid #DDD\",\n width: \"100%\",\n minHeight: 46,\n maxHeight: 46,\n \"&:focus\": {\n background: \"#FFF\"\n }\n },\n calendarContainer: {\n position: \"relative\",\n \"& input\": {\n padding: \"10px 18px\",\n borderRadius: 6,\n border: \"1px solid #DDD\",\n width: \"100%\",\n minHeight: 46,\n maxHeight: 46,\n \"&:focus\": {\n background: \"#FFF\",\n outline: 0,\n borderColor: theme.palette.primary.main\n }\n },\n \"& .DayPicker\": {\n background: \"#FFF\",\n borderRadius: 6,\n boxShadow: \"0px 0px 10px 1px rgba(0,0,0,0.1)\",\n position: \"absolute\",\n bottom: 46,\n zIndex: 100\n },\n \"& .DayPicker-wrapper\": {\n padding: \"20px 10px\",\n borderRadius: 6\n },\n \"& .DayPicker-Caption\": {\n height: \"2rem\",\n \"& div\": {\n fontWeight: \"600\",\n fontSize: 18,\n color: theme.palette.primary.main\n }\n },\n \"& .DayPicker-NavBar\": {\n top: \"1.3rem\",\n \"& span\": {\n height: \"0.9rem\",\n width: \"0.9rem\"\n }\n },\n \"& .DayPicker-Weekdays abbr\": {\n textDecoration: \"none\"\n },\n \"& .DayPicker-Day\": {\n border: 0,\n padding: \"7px 12px\",\n fontSize: 12\n },\n \"& .DayPicker-Day--today\": {\n color: theme.palette.primary.main,\n fontWeight: \"600\"\n },\n \"& .DayPicker-Day--selected:not(.DayPicker-Day--disabled):not(.DayPicker-Day--outside)\": {\n backgroundColor: theme.palette.secondary.main,\n borderRadius: \"100%\"\n }\n },\n startingTimeInputWrapper: {\n marginTop: 0,\n display: \"flex\",\n margin: \"auto\",\n \"& .MuiButton-label\": {\n margin: \"0 10px\"\n }\n },\n startTimeInput: {\n width: \"100% !important\",\n border: \"1px solid #DDDDDD !important\",\n padding: \"7.5px 15px\",\n borderRadius: \"6px\",\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0,\n marginRight: 0,\n height: 46,\n maxWidth: \"5rem\",\n \"&:focus-visible\": {\n outline: 0\n },\n \"& .MuiInput-underline:before\": {\n display: \"none\"\n },\n \"& input\": {\n fontSize: \"0.85rem\"\n },\n \"& label\": {\n display: \"none\"\n },\n \"& button\": {\n paddingRight: \"0\",\n paddingLeft: \"0\"\n },\n \"& .MuiButton-label\": {\n margin: \"0 10px\"\n }\n },\n isAMActive: {\n backgroundColor: `${theme.palette.primary.main} !important`,\n color: \"#FFF !important\"\n },\n isPMActive: {\n backgroundColor: `${theme.palette.primary.main} !important`,\n color: \"#FFF !important\"\n },\n timeBntGroupWrapper: {\n height: 46,\n \"& button\": {\n padding: \"0\",\n minWidth: \"2.5rem\",\n borderColor: \"#DDDDDD\",\n \"&:focus\": {\n outline: 0\n },\n \"&:first-child\": {\n borderBottomLeftRadius: 0,\n borderTopLeftRadius: 0,\n borderLeft: 0\n }\n }\n }\n}));\n","import React, { useEffect, useRef } from \"react\";\nimport useStyles from \"./useStyles\";\nimport PropTypes from \"prop-types\";\nimport moment from \"moment\";\nimport ChatItem from \"./components/ChatItem\";\nimport SmsRoundedIcon from \"@material-ui/icons/SmsRounded\";\nfunction ChatWindow({ conversation, body, signature }) {\n const root = useRef(null);\n useEffect(() => {\n root.current.scrollTop = root.current.scrollHeight + 20;\n }, [conversation, body, signature]);\n const classes = useStyles();\n return /* @__PURE__ */ React.createElement(\"div\", { ref: root, className: classes.root }, conversation.length > 1 ? /* @__PURE__ */ React.createElement(\"div\", { className: classes.noMessages }, /* @__PURE__ */ React.createElement(SmsRoundedIcon, null), /* @__PURE__ */ React.createElement(\"span\", null, \"Send a group message\")) : conversation[0].messages.length <= 0 ? /* @__PURE__ */ React.createElement(\"div\", { className: classes.noMessages }, /* @__PURE__ */ React.createElement(SmsRoundedIcon, null), /* @__PURE__ */ React.createElement(\"span\", null, \"This conversation is empty\")) : /* @__PURE__ */ React.createElement(\"div\", { className: classes.chatContainer }, conversation[0].messages.map(\n (message, i) => message && conversation[0].messages[i + 1] && moment.duration(moment(message.sent_time).diff(moment(conversation[0].messages[i + 1].sent_time))).asHours() > 1 ? /* @__PURE__ */ React.createElement(ChatItem, { key: message.id, message }) : /* @__PURE__ */ React.createElement(\"div\", { key: message.id, style: { display: \"flex\", flexDirection: \"column\" } }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.timestamp }, message.sent_time && moment(message.sent_time).format(\"h:mma\")), /* @__PURE__ */ React.createElement(ChatItem, { message }))\n )));\n}\nChatWindow.propTypes = {\n conversation: PropTypes.array.isRequired,\n body: PropTypes.string,\n signature: PropTypes.string\n};\nexport default ChatWindow;\n","import React, { useState, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport useStyles from \"../useStyles\";\nimport {\n Popper\n} from \"@material-ui/core\";\nimport moment from \"moment\";\nimport ScheduleIcon from \"@material-ui/icons/Schedule\";\nimport ErrorOutlineIcon from \"@material-ui/icons/ErrorOutline\";\nfunction ChatItem({ message }) {\n const [isOpen, setIsOpen] = useState(false);\n const anchor = useRef(null);\n const classes = useStyles();\n return /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.chatItemContainer} ${message.status === \"received\" ? classes.alignRight : \"\"}` }, /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.chatItem} ${message.status === \"received\" ? classes.fromCandidate : \"\"}` }, message.body), /* @__PURE__ */ React.createElement(\"div\", { ref: anchor, className: classes.status, onMouseEnter: () => setIsOpen(true), onMouseLeave: () => setIsOpen(false) }, message.status === \"scheduled\" && /* @__PURE__ */ React.createElement(ScheduleIcon, { fontSize: \"small\", color: \"disabled\" }), message.status === \"bounced\" && /* @__PURE__ */ React.createElement(ErrorOutlineIcon, { fontSize: \"small\", color: \"error\" })), /* @__PURE__ */ React.createElement(\n Popper,\n {\n className: classes.popper,\n anchorEl: anchor.current,\n open: isOpen,\n placement: \"top-center\"\n },\n message.status === \"scheduled\" ? /* @__PURE__ */ React.createElement(\"div\", null, `Scheduled for ${moment(message.scheduled_time).format(\"lll\")}`) : /* @__PURE__ */ React.createElement(\"div\", null, `Message bounced`)\n ));\n}\nChatItem.propTypes = {\n message: PropTypes.object.isRequired\n};\nexport default ChatItem;\n","import ChatWindow from \"./ChatWindow\";\nexport default ChatWindow;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n root: {\n flexBasis: \"75%\",\n padding: \"0 40px\",\n overflowY: \"scroll\"\n },\n chatContainer: {\n display: \"flex\",\n flexDirection: \"column-reverse\",\n \"& > div:first-child\": {\n marginBottom: 20\n }\n },\n chatItemContainer: {\n marginLeft: \"auto\",\n marginRight: 0,\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"row-reverse\"\n },\n alignRight: {\n marginLeft: 0,\n marginRight: \"auto\",\n flexDirection: \"row\"\n },\n chatItem: {\n borderRadius: 6,\n maxWidth: 460,\n color: \"#FFF\",\n fontSize: 14,\n background: theme.palette.primary.main,\n padding: \"15px 20px\",\n lineHeight: \"18px\",\n margin: \"3px 0\",\n display: \"table\"\n },\n fromCandidate: {\n background: \"#F3F6F7\",\n color: theme.palette.primary.main\n },\n timestamp: {\n fontSize: 14,\n color: \"#939393\",\n marginTop: 20,\n marginBottom: 10,\n textAlign: \"center\"\n },\n status: {\n padding: \"0 15px\"\n },\n popper: {\n boxShadow: \"0px 2px 14px rgba(48, 90, 111, 0.16)\",\n padding: \"10px 20px\",\n background: \"#FFF\",\n borderRadius: 6,\n zIndex: 1e5,\n fontSize: 12\n },\n noMessages: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\",\n flexDirection: \"column\",\n userSelect: \"none\",\n \"& svg\": {\n height: 160,\n width: 160,\n fill: \"#F7F7F7\"\n },\n \"& > span\": {\n color: \"#E8E8E8\",\n fontSize: 24,\n fontWeight: \"600\"\n }\n }\n}));\n","import Messenger from \"./Messenger\";\nexport default Messenger;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n root: {\n display: \"flex\",\n flexDirection: \"row\",\n height: \"100%\",\n width: \"100%\"\n },\n modalLeft: {\n display: \"flex\",\n flexDirection: \"column\",\n flexBasis: \"36%\",\n borderRight: \"1px solid #F3F3F3\"\n },\n modalRight: {\n display: \"flex\",\n flexDirection: \"column\"\n },\n candidateList: {\n display: \"flex\",\n flexDirection: \"column\",\n flexGrow: 1,\n overflowY: \"scroll\"\n },\n loading: {\n margin: \"auto\"\n }\n}));\n","var __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport React, { useState, useEffect } from \"react\";\nimport {\n TextField,\n InputAdornment,\n IconButton,\n Select,\n MenuItem,\n Chip,\n Button,\n Tooltip\n} from \"@material-ui/core\";\nimport Autocomplete from \"@material-ui/lab/Autocomplete\";\nimport useStyles from \"./useStyles\";\nimport { withScoutTheme } from \"../../../ThemeContext/ThemeContext\";\nimport PropTypes from \"prop-types\";\nimport HighlightOffIcon from \"@material-ui/icons/HighlightOff\";\nimport SearchOutlinedIcon from \"@material-ui/icons/SearchOutlined\";\nimport ChevronRightRoundedIcon from \"@material-ui/icons/ChevronRightRounded\";\nfunction SelectRecipients({ statuses, applications, setSelectedApplications, setIsSelectModalOpen }) {\n const [selectedUsers, setSelectedUsers] = useState([]);\n const [selectedStatuses, setSelectedStatuses] = useState([]);\n const [unselectedStatuses, setUnselectedStatuses] = useState([]);\n const classes = useStyles();\n useEffect(() => {\n setUnselectedStatuses(\n statuses.filter((status) => applications.map((app) => app.status).includes(status.id)).filter((status) => !selectedStatuses.map((selected) => selected.id).includes(status.id))\n );\n }, [selectedStatuses]);\n useEffect(() => {\n setSelectedStatuses(selectedStatuses.filter((status) => selectedUsers.map((app) => app.status).includes(status.id)));\n }, [selectedUsers]);\n function handleStatusRemove(id) {\n setSelectedStatuses(selectedStatuses.filter((selected) => selected.id !== id));\n setSelectedUsers(selectedUsers.filter((app) => app.status !== id));\n }\n function handleStatusAdd(e) {\n const newApplicants = applications.filter((app) => app.status === e.target.value.id).filter((app) => !selectedUsers.map((selected) => selected.id).includes(app.id));\n setSelectedStatuses([...selectedStatuses, e.target.value]);\n setSelectedUsers([...selectedUsers, ...newApplicants]);\n }\n function handleClick() {\n setSelectedApplications(selectedUsers);\n setIsSelectModalOpen(false);\n }\n return /* @__PURE__ */ React.createElement(\"div\", { className: classes.root }, /* @__PURE__ */ React.createElement(\"h4\", null, \"Select Recipients\"), /* @__PURE__ */ React.createElement(\"div\", { className: classes.searchContainer }, /* @__PURE__ */ React.createElement(\n Autocomplete,\n {\n classes: {\n root: classes.autocompleteField,\n inputRoot: classes.autoCompleteInput,\n endAdornment: classes.endAdornment\n },\n multiple: true,\n disableClearable: true,\n options: applications,\n getOptionLabel: (option) => option.name,\n value: selectedUsers,\n filterSelectedOptions: true,\n onChange: (e, newValue) => {\n setSelectedUsers(newValue);\n },\n variant: \"outlined\",\n renderTags: () => null,\n renderInput: (params) => /* @__PURE__ */ React.createElement(\n TextField,\n __spreadProps(__spreadValues({}, params), {\n classes: { root: classes.search },\n placeholder: \"Search Users\",\n InputLabelProps: {\n classes: { root: classes.search }\n },\n InputProps: __spreadProps(__spreadValues({}, params.InputProps), {\n disableUnderline: true,\n startAdornment: /* @__PURE__ */ React.createElement(InputAdornment, { position: \"start\" }, /* @__PURE__ */ React.createElement(SearchOutlinedIcon, null))\n })\n })\n )\n }\n ), /* @__PURE__ */ React.createElement(\n Select,\n {\n className: classes.inputBase,\n classes: { root: classes.select },\n displayEmpty: true,\n renderValue: () => \"Filter candidates\",\n variant: \"outlined\",\n value: \"\",\n onChange: handleStatusAdd\n },\n unselectedStatuses.map(\n (status) => /* @__PURE__ */ React.createElement(MenuItem, { key: status.id, value: status }, status.name)\n )\n )), selectedStatuses.length > 0 && /* @__PURE__ */ React.createElement(\"div\", { className: classes.chipContainer }, selectedStatuses.map(\n (status) => /* @__PURE__ */ React.createElement(\n Chip,\n {\n key: status.id,\n className: classes.chipItem,\n label: status.name,\n value: status,\n onDelete: () => handleStatusRemove(status.id),\n variant: \"outlined\"\n }\n )\n )), /* @__PURE__ */ React.createElement(\"div\", { className: classes.table }, /* @__PURE__ */ React.createElement(\"div\", { className: classes.row }, /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.tableHeader} ${classes.tableLg}` }, \"Name\"), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.tableHeader} ${classes.tableMd}` }, \"Phone\"), /* @__PURE__ */ React.createElement(\"div\", { className: `${classes.tableHeader} ${classes.tableLg}` }, \"Status\"), /* @__PURE__ */ React.createElement(\"div\", null)), selectedUsers.length <= 0 ? /* @__PURE__ */ React.createElement(\"div\", { className: classes.row }, /* @__PURE__ */ React.createElement(\"span\", { className: classes.noApplicants }, \"No applicants selected\")) : selectedUsers.map(\n (app) => /* @__PURE__ */ React.createElement(\n \"div\",\n {\n key: app.id,\n className: classes.row\n },\n /* @__PURE__ */ React.createElement(\"div\", { className: classes.tableLg }, app.name),\n /* @__PURE__ */ React.createElement(\"div\", { className: classes.tableMd }, app.phone),\n /* @__PURE__ */ React.createElement(\"div\", { className: classes.tableLg }, statuses.find((status) => status.id === app.status) ? statuses.find((status) => status.id === app.status).name : \"None\"),\n /* @__PURE__ */ React.createElement(IconButton, { onClick: () => setSelectedUsers(selectedUsers.filter((selected) => selected.id !== app.id)) }, /* @__PURE__ */ React.createElement(HighlightOffIcon, { color: \"error\" }))\n )\n )), /* @__PURE__ */ React.createElement(\"div\", { className: classes.buttonContainer }, selectedUsers.length <= 1 ? /* @__PURE__ */ React.createElement(Tooltip, { title: \"Please select 2 or more applicants\" }, /* @__PURE__ */ React.createElement(\"span\", null, /* @__PURE__ */ React.createElement(\n Button,\n {\n disabled: true,\n disableElevation: true,\n variant: \"contained\",\n color: \"secondary\",\n onClick: handleClick,\n endIcon: /* @__PURE__ */ React.createElement(ChevronRightRoundedIcon, null)\n },\n \"Next\"\n ))) : /* @__PURE__ */ React.createElement(\n Button,\n {\n disableElevation: true,\n variant: \"contained\",\n color: \"secondary\",\n onClick: handleClick,\n endIcon: /* @__PURE__ */ React.createElement(ChevronRightRoundedIcon, null)\n },\n \"Next\"\n )));\n}\nSelectRecipients.propTypes = {\n statuses: PropTypes.array.isRequired,\n applications: PropTypes.array.isRequired,\n setSelectedApplications: PropTypes.func.isRequired,\n setIsSelectModalOpen: PropTypes.func.isRequired\n};\nexport default withScoutTheme(SelectRecipients);\n","import SelectRecipients from \"./SelectRecipients\";\nexport default SelectRecipients;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n width: \"100%\",\n padding: \"50px 60px\",\n \"& h4\": {\n marginTop: 0,\n color: \"#004E70\",\n fontSize: 24,\n fontWeight: \"600\",\n marginBottom: 20\n }\n },\n autocompleteField: {\n flexBasis: \"60%\",\n marginRight: 20,\n \"& .MuiInput-underline-36:after\": {\n border: 0\n }\n },\n autoCompleteInput: {\n paddingLeft: 15\n },\n endAdornment: {\n marginRight: 10\n },\n searchContainer: {\n display: \"flex\",\n flexDirection: \"row\"\n },\n search: {\n flexGrow: 1,\n marginRight: 12,\n background: \"#FAFAFA\",\n border: \"1px solid #EAEEF0\",\n borderRadius: 6,\n justifyContent: \"center\",\n \"& svg\": {\n fill: \"#939393\"\n },\n \"& fieldset\": {\n border: 0\n },\n \"& input\": {\n padding: \"14px 8px !important\"\n }\n },\n table: {\n marginTop: 20,\n width: \"100%\",\n height: \"100%\",\n overflow: \"scroll\",\n display: \"flex\",\n flexDirection: \"column\"\n },\n row: {\n margin: 0,\n display: \"flex\",\n \"& div\": {\n display: \"flex\",\n alignItems: \"center\"\n },\n \"& button\": {\n display: \"block\",\n marginLeft: \"auto\",\n opacity: 0,\n transition: \"opacity 0.24s ease-in-out\",\n padding: 7,\n \"&:focus\": {\n outline: 0\n }\n },\n \"&:hover button\": {\n opacity: 1\n }\n },\n noApplicants: {\n color: \"#999\",\n display: \"block\",\n marginTop: 7\n },\n tableHeader: {\n fontSize: 16,\n fontWeight: \"600\",\n paddingBottom: 10,\n paddingTop: 15,\n color: theme.palette.primary.main\n },\n tableLg: {\n width: \"35%\",\n minWidth: \"35%\",\n maxWidth: \"35%\",\n userSelect: \"none\"\n },\n tableMd: {\n width: \"20%\",\n minWidth: \"20%\",\n maxWidth: \"20%\",\n userSelect: \"none\"\n },\n chipContainer: {\n paddingTop: 10\n },\n chipItem: {\n margin: \"4px 8px 4px 0\",\n color: \"#666\",\n \"& span\": {\n color: \"#666\",\n padding: \"0 16px\",\n fontSize: 12\n }\n },\n chipNoItems: {\n padding: \"10px 0\",\n fontSize: 15,\n color: \"#999\",\n textAlign: \"center\"\n },\n inputBase: {\n flexBasis: \"25%\",\n \"& fieldset\": {\n border: \"1px solid #DDDDDD !important\"\n }\n },\n select: {\n height: \"100%\",\n padding: 0,\n display: \"flex\",\n alignItems: \"center\",\n color: \"#333333\",\n paddingLeft: 20,\n \"&:focus\": {\n background: \"#FFF\"\n }\n },\n buttonContainer: {\n paddingTop: 20,\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"& button\": {\n padding: \"12px 26px\",\n color: \"#FFF\"\n }\n }\n}));\n","import TextUsModal from \"./TextUsModal\";\nexport default TextUsModal;\n","import { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n modalRoot: {\n display: \"flex\",\n flexDirection: \"row\",\n overflow: \"hidden\",\n position: \"relative\",\n maxHeight: 630,\n minHeight: 630,\n height: 630,\n width: 720,\n transition: \"width 0.3s cubic-bezier(.65,.37,.25,1)\",\n maxWidth: \"none\"\n },\n modalLarge: {\n width: 960\n }\n}));\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport React, { Component } from \"react\";\nfunction paginatedDataSource(DataSourcedComponent, options) {\n class PaginatedDataSource extends Component {\n constructor(props) {\n super(props);\n this.state = {\n loading: true,\n filters: options.default_filter || {},\n sort_key: options.sort_key || \"\",\n sort_state: options.sort_state || {},\n pagination: null,\n page: this.parseBrowserHash().page\n };\n this.fetchCSV = this.fetchCSV.bind(this);\n this.fetchData = this.fetchData.bind(this);\n this.handlePagination = this.handlePagination.bind(this);\n this.buildSortableHeader = this.buildSortableHeader.bind(this);\n this.handleSort = this.handleSort.bind(this);\n this.csvSubmit = this.csvSubmit.bind(this);\n this.filterSubmit = this.filterSubmit.bind(this);\n this.getFilters = this.getFilters.bind(this);\n this.filterCallback = this.filterCallback.bind(this);\n }\n parseBrowserHash() {\n return window.location.hash.split(\"&\").map(function(e) {\n return e.replace(\"#\", \"\").split(\"=\");\n }).reduce(function(p, c) {\n p[c[0]] = c[1];\n return p;\n }, {});\n }\n componentDidMount() {\n this.fetchData();\n }\n handleSort(event) {\n const sort_key = $(event.currentTarget).data(\"field\");\n const { sort_state } = this.state;\n sort_state[sort_key] = sort_state[sort_key] === \"desc\" ? \"asc\" : \"desc\";\n this.setState({ sort_key, sort_state }, () => {\n this.fetchData();\n });\n }\n filterCallback(value_object) {\n const { filters } = this.state;\n Object.assign(filters, value_object);\n this.setState({ filters });\n }\n handlePagination(id) {\n this.setState({ page: id }, () => {\n this.fetchData();\n });\n }\n csvSubmit() {\n return __async(this, null, function* () {\n this.setState({ loading: true });\n yield this.fetchCSV();\n this.setState({ loading: false });\n });\n }\n filterSubmit() {\n this.handlePagination(1);\n }\n getFilters() {\n const { filters } = this.state;\n var filter_map = {};\n Object.keys(filters).forEach(function(key) {\n filters[key].path_func(filter_map, filters[key].value);\n });\n return filter_map;\n }\n buildSortableHeader(title, key) {\n const { sort_state } = this.state;\n var type = sort_state[key];\n return /* @__PURE__ */ React.createElement(\"div\", null, title, \" \", /* @__PURE__ */ React.createElement(\"span\", { className: type ? `sort-#${type}` : \"\" }));\n }\n fetchCSV() {\n return __async(this, null, function* () {\n var that = this;\n const { page, sort_key, sort_state, filters } = this.state;\n const { archived, parseResponse } = this.props;\n let param_filters;\n if (Object.keys(filters).length == 0) {\n param_filters = { empty: \"\" };\n } else {\n param_filters = filters;\n }\n let params = jQuery.param({\n page,\n sort: sort_key,\n sort_order: sort_state[sort_key],\n filter: param_filters,\n archived\n });\n window.open(`/admin/api/v1/${options.data_name}.csv?${params}`, \"_blank\");\n });\n }\n fetchData() {\n var that = this;\n const { page, sort_key, sort_state, filters } = this.state;\n const { archived, parseResponse } = this.props;\n this.setState({ loading: true });\n let param_filters;\n if (Object.keys(filters).length == 0) {\n param_filters = { empty: \"\" };\n } else {\n param_filters = filters;\n }\n let params = jQuery.param({\n page,\n sort: sort_key,\n sort_order: sort_state[sort_key],\n filter: param_filters,\n archived\n });\n fetch(`/admin/api/v1/${options.data_name}.json?${params}`, {\n credentials: \"same-origin\"\n }).then((response) => {\n return response.json();\n }).then((data) => {\n that.setState({ loading: false });\n parseResponse(data);\n }).catch((error) => {\n that.setState({ loading: false });\n parseResponse({});\n });\n }\n render() {\n const { data, pagination, sort_key, sort_state, loading, filters } = this.state;\n const { response_data } = this.props;\n return /* @__PURE__ */ React.createElement(\n DataSourcedComponent,\n __spreadValues({\n data: response_data[options.data_name] || [],\n pagination: response_data.pagination || {},\n paginationCallback: this.handlePagination,\n loading,\n csvSubmit: this.csvSubmit,\n dataCallback: this.fetchData,\n sortCallback: this.handleSort,\n filters,\n filterCallback: this.filterCallback,\n filterSubmit: this.filterSubmit,\n buildSortableHeader: this.buildSortableHeader,\n sort_field: sort_key,\n sort_order: sort_state[sort_key]\n }, this.props)\n );\n }\n }\n return PaginatedDataSource;\n}\nexport default paginatedDataSource;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FormControlLabel, Checkbox as MaterialCheckbox } from \"@mui/material\";\nexport default function Checkbox({ checked, onCheck, label, disabled }) {\n return label ? /* @__PURE__ */ React.createElement(\n FormControlLabel,\n {\n checked,\n control: /* @__PURE__ */ React.createElement(\n MaterialCheckbox,\n {\n onChange: (evt, checked2) => onCheck(checked2)\n }\n ),\n label,\n disabled\n }\n ) : /* @__PURE__ */ React.createElement(\n MaterialCheckbox,\n {\n checked,\n onChange: (evt, checked2) => onCheck(checked2),\n disabled,\n sx: {\n color: \"#5BC4BF\",\n \"&.Mui-checked\": {\n color: \"#5BC4BF\"\n }\n }\n }\n );\n}\nCheckbox.propTypes = {\n checked: PropTypes.bool,\n onCheck: PropTypes.func.isRequired,\n label: PropTypes.node,\n disabled: PropTypes.bool\n};\n","import Checkbox from \"./Checkbox\";\nexport default Checkbox;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FormControl, InputLabel, Select as MaterialSelect, MenuItem, useTheme, Input } from \"@mui/material\";\nimport { useFormValidator } from \"react-form-context-validation\";\nexport default function Select(props) {\n const theme = useTheme();\n const { value, onChange, options, label, style, multiple, placeholder, getOptionLabel, getOptionValue, disabled, valueField, labelField, required = false } = props;\n const getLabel = getOptionLabel || ((option) => labelField ? `${option[labelField]}` : `${option}`);\n const getValue = getOptionValue || ((option) => valueField ? `${option[valueField]}` : `${option}`);\n const error = useFormValidator(required && !value);\n return /* @__PURE__ */ React.createElement(\n FormControl,\n {\n style,\n disabled,\n required,\n error,\n fullWidth: true\n },\n /* @__PURE__ */ React.createElement(InputLabel, null, label),\n /* @__PURE__ */ React.createElement(\n MaterialSelect,\n {\n value: value || \"\",\n onChange: (evt) => onChange(evt.target.value),\n input: /* @__PURE__ */ React.createElement(\n Input,\n {\n label,\n style: {\n color: value ? theme.palette.text.primary : theme.palette.text.disabled,\n fontFamily: \"Source Sans Pro\"\n }\n }\n ),\n MenuProps: {\n sx: {\n \"& li\": {\n fontFamily: \"Source Sans Pro\"\n }\n }\n },\n multiple,\n displayEmpty: !!placeholder,\n labelId: \"TEST\"\n },\n placeholder && !value && /* @__PURE__ */ React.createElement(MenuItem, { value: \"\", disabled: true }, placeholder),\n options.map((opt, i) => /* @__PURE__ */ React.createElement(\n MenuItem,\n {\n key: i,\n value: getValue(opt)\n },\n getLabel(opt)\n ))\n )\n );\n}\nSelect.propTypes = {\n value: PropTypes.any,\n onChange: PropTypes.func,\n options: PropTypes.array,\n label: PropTypes.string,\n style: PropTypes.object,\n multiple: PropTypes.bool,\n placeholder: PropTypes.string,\n getOptionLabel: PropTypes.func,\n getOptionValue: PropTypes.func,\n disabled: PropTypes.bool,\n valueField: PropTypes.string,\n labelField: PropTypes.string,\n required: PropTypes.bool\n};\n","import Select from \"./Select\";\nexport default Select;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { FormControl, TextField, FormHelperText } from \"@mui/material\";\nimport { useFormValidator } from \"react-form-context-validation\";\nexport default function TextInput(props) {\n const { placeholder, value, onChange, required, tabIndex, label, className, type = \"text\", onBlur, id, disabled, error = false, rows, variant } = props;\n const inputError = useFormValidator(required && !value || error, id);\n return /* @__PURE__ */ React.createElement(FormControl, { fullWidth: true, className }, /* @__PURE__ */ React.createElement(\n TextField,\n {\n label,\n type,\n placeholder,\n value: value != null ? value : \"\",\n onChange: (e) => onChange(e.target.value),\n onBlur,\n required,\n tabIndex,\n disabled,\n error: !!inputError,\n multiline: !!rows,\n rows,\n variant,\n inputProps: {\n sx: {\n fontFamily: \"Source Sans Pro\"\n }\n },\n InputLabelProps: {\n sx: {\n fontFamily: \"Source Sans Pro\"\n }\n }\n }\n ), typeof error === \"string\" && /* @__PURE__ */ React.createElement(FormHelperText, { error: true }, error));\n}\nTextInput.propTypes = {\n id: PropTypes.string,\n value: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n onChange: PropTypes.func,\n placeholder: PropTypes.string,\n required: PropTypes.bool,\n type: PropTypes.oneOf([\"password\", \"text\", \"number\"]),\n tabIndex: PropTypes.number,\n disabled: PropTypes.bool,\n label: PropTypes.string,\n className: PropTypes.string,\n onBlur: PropTypes.func,\n error: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.bool\n ]),\n rows: PropTypes.number,\n variant: PropTypes.oneOf([\"standard\", \"filled\", \"outlined\"])\n};\n","import TextInput from \"./TextInput\";\nexport default TextInput;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nimport React, { Component } from \"react\";\nfunction serviceInterface(ServiceComponent, options) {\n class ServiceInterfaceClient extends Component {\n constructor(props) {\n super(props);\n this.state = {\n success: void 0,\n data: {},\n messages: {\n errors: [],\n notices: [],\n alerts: []\n }\n };\n this.parseResponse = this.parseResponse.bind(this);\n }\n parseResponse(response) {\n const { messages, data, success } = response;\n this.setState({ messages, data, success });\n }\n render() {\n const { messages, data, success } = this.state;\n return /* @__PURE__ */ React.createElement(\n ServiceComponent,\n __spreadValues({\n messages,\n response_data: data || {},\n success,\n parseResponse: this.parseResponse\n }, this.props)\n );\n }\n }\n return ServiceInterfaceClient;\n}\nexport default serviceInterface;\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\nimport queryString from \"query-string\";\nimport \"whatwg-fetch\";\nconst BASE_URL = \"/admin/api/\";\nclass Api {\n constructor() {\n __publicField(this, \"handleResponse\", (response) => {\n if (response.ok) return response.json();\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n });\n __publicField(this, \"get\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}?${queryString.stringify(params, { arrayFormat: \"bracket\" })}`, {\n headers: this.getHeaders(headers)\n }).then((r) => this.handleResponse(r)));\n __publicField(this, \"post\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers),\n method: \"POST\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r)));\n __publicField(this, \"delete\", (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers),\n method: \"DELETE\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r)));\n __publicField(this, \"getDashboard\", () => this.get(\"v1/dashboard\"));\n __publicField(this, \"getDashboardSettings\", () => this.get(\"v1/dashboard/settings\"));\n __publicField(this, \"saveDashboardSettings\", (settings) => this.post(\"v1/dashboard/settings\", { settings }));\n __publicField(this, \"getActivities\", (beforeId) => this.get(\"v1/dashboard/activities_feed\", { before_id: beforeId }));\n }\n //public authToken = '';\n getHeaders(headers) {\n return Object.assign({}, {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\"\n //'Authorization': `Bearer: ${this.authToken}`,\n }, headers);\n }\n}\nexport default new Api();\n","var componentRequireContext = require.context(\"components\", true);\nvar ReactRailsUJS = require(\"react_ujs\");\nReactRailsUJS.useContext(componentRequireContext);\n","\"use strict\";\nexport const DELAYS_IN_SECONDS = [1, 0.2, 0.4];\n","\"use strict\";\nexport const classes = {\n systemMessage: {\n backgroundColor: \"#FFFFFF\",\n color: \"#2D388D\",\n fontWeight: \"400\",\n width: \"fit-content\",\n margin: \"10px 0\",\n maxWidth: \"100%\",\n borderRadius: \"20px\",\n border: \"1.5px solid #2D388D\",\n display: \"flex\",\n alignItems: \"baseline\",\n fontSize: \"18px !important\",\n padding: \"6px 24px !important\",\n \"&& ul li\": {\n fontWeight: \"600 !important\",\n color: \"#2D388D !important\"\n }\n },\n responseMessageContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n marginBottom: \"20px\",\n position: \"relative\"\n },\n responseMessageContent: {\n padding: \"10px\",\n border: \"1px solid #ccc\",\n borderRadius: \"5px\",\n backgroundColor: \"#f9f9f9\"\n },\n closeIcon: {\n padding: 0,\n alignSelf: \"flex-end\"\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { defaultJobDetails } from \"./config\";\nexport const initialAIStudioState = {\n open: false,\n currentStep: 0,\n optionalInputType: \"\",\n welcomeHeader: \"\",\n showCaret: true,\n buttonHovered: false,\n jobDetails: defaultJobDetails,\n generatedTone: \"neutral\",\n sendEmail: false,\n generatedResponse: \"\",\n generationError: false,\n questionType: \"general\",\n generationType: \"description\",\n navbarIsCollapsed: false,\n confirmCancelIsOpen: false,\n notificationData: [],\n notificationModalOpen: false,\n aiStudioFrenchEnabled: false,\n document: void 0\n};\nexport const aiStudioReducer = (state, action) => {\n switch (action.type) {\n case \"CLEAR_ALL_JOB_DETAILS\":\n return __spreadProps(__spreadValues({}, state), {\n jobDetails: defaultJobDetails,\n generatedTone: \"neutral\",\n sendEmail: false\n });\n case \"INIT_NEW_JOB_FLOW\":\n return __spreadProps(__spreadValues({}, state), {\n jobDetails: __spreadProps(__spreadValues({}, defaultJobDetails), {\n position_title: action.payload.title,\n position_location: action.payload.country\n }),\n currentStep: 1,\n generationType: \"description\"\n });\n case \"CLOSE_MODAL\":\n return initialAIStudioState;\n case \"OPEN_MODAL\":\n return __spreadProps(__spreadValues({}, state), { open: true });\n case \"SET_CURRENT_STEP\":\n return __spreadProps(__spreadValues({}, state), { currentStep: action.payload });\n case \"GO_TO_LOADING_STEP\":\n return __spreadProps(__spreadValues({}, state), { currentStep: 3 });\n case \"GO_TO_ERROR_STEP\":\n return __spreadProps(__spreadValues({}, state), { currentStep: 4 });\n case \"GO_TO_HOME_STEP\":\n return __spreadProps(__spreadValues({}, state), { currentStep: 0 });\n case \"SELECT_WRITE_TLP\":\n return __spreadProps(__spreadValues({}, state), { currentStep: 1, generationType: \"description\" });\n case \"SELECT_WRITE_SCREENING_QUESTION\":\n return __spreadProps(__spreadValues({}, state), { currentStep: 5, generationType: \"questions\" });\n case \"SELECT_OPTIONAL_INPUT\":\n return __spreadProps(__spreadValues({}, state), { optionalInputType: action.payload, currentStep: 2 });\n case \"ADD_TO_WELCOME_HEADER\":\n return __spreadProps(__spreadValues({}, state), { welcomeHeader: state.welcomeHeader + action.payload });\n case \"CLEAR_WELCOME_HEADER\":\n return __spreadProps(__spreadValues({}, state), { welcomeHeader: \"\" });\n case \"SET_SHOW_CARET\":\n return __spreadProps(__spreadValues({}, state), { showCaret: action.payload });\n case \"SET_BUTTON_HOVERED\":\n return __spreadProps(__spreadValues({}, state), { buttonHovered: action.payload });\n case \"SET_DOCUMENT\":\n return __spreadProps(__spreadValues({}, state), { document: action.payload });\n case \"SET_JOB_DETAILS\":\n return __spreadProps(__spreadValues({}, state), {\n jobDetails: __spreadProps(__spreadValues({}, state.jobDetails), {\n [action.fieldName]: action.payload\n })\n });\n case \"SET_GENERATED_TONE\":\n return __spreadProps(__spreadValues({}, state), { generatedTone: action.payload });\n case \"SET_SEND_EMAIL\":\n return __spreadProps(__spreadValues({}, state), { sendEmail: action.payload });\n case \"SET_GENERATED_RESPONSE\":\n return __spreadProps(__spreadValues({}, state), { generatedResponse: action.payload });\n case \"SET_GENERATION_ERROR\":\n return __spreadProps(__spreadValues({}, state), { generationError: action.payload });\n case \"SET_QUESTION_TYPE\":\n return __spreadProps(__spreadValues({}, state), { questionType: action.payload });\n case \"SET_NAVBAR_IS_COLLAPSED\":\n return __spreadProps(__spreadValues({}, state), { navbarIsCollapsed: action.payload });\n case \"SET_CONFIRM_CANCEL_IS_OPEN\":\n return __spreadProps(__spreadValues({}, state), { confirmCancelIsOpen: action.payload });\n case \"SET_NOTIFICATIONS\":\n return __spreadProps(__spreadValues({}, state), { notificationData: action.payload });\n case \"SET_RECEIVED_NOTIFICATION\":\n if (!state.notificationModalOpen) {\n return __spreadProps(__spreadValues({}, state), {\n notificationData: [...state.notificationData, action.payload]\n });\n } else {\n const tempNotificationData = [...state.notificationData];\n tempNotificationData.splice(1, 0, action.payload);\n return __spreadProps(__spreadValues({}, state), {\n notificationData: tempNotificationData\n });\n }\n case \"DISMISS_NOTIFICATION\":\n return __spreadProps(__spreadValues({}, state), {\n notificationData: state.notificationData.slice(1),\n notificationModalOpen: false\n });\n case \"VIEW_NOTIFICATION\":\n return __spreadProps(__spreadValues({}, state), { notificationModalOpen: true });\n case \"SET_DISMISSED_NOTIFICATION\":\n if (state.notificationModalOpen) return state;\n return __spreadProps(__spreadValues({}, state), {\n notificationData: state.notificationData.filter(\n (notification) => notification.id !== action.payload\n )\n });\n case \"TOGGLE_FRENCH\":\n return __spreadProps(__spreadValues({}, state), { aiStudioFrenchEnabled: !state.aiStudioFrenchEnabled });\n default:\n return state;\n }\n};\n","\"use strict\";\nimport { closeIcon } from \"../../NewUI/shared/styleClasses\";\nexport const classes = {\n buttonContainer: {\n position: \"fixed\",\n bottom: \"80px\",\n left: \"28px\",\n cursor: \"pointer\",\n \"& svg\": {\n transition: \"transform 0.7s\"\n }\n },\n newNavbarButtonContainer: {\n bottom: \"32px\",\n left: \"38px\"\n },\n collapsedNavbar: {\n left: \"7.5px\",\n transform: \"scale(0.87)\"\n },\n newNavbarCollapsed: {\n left: \"20px\",\n bottom: \"80px\"\n },\n button: {\n textTransform: \"none\",\n backgroundColor: \"#FFFFFF\",\n color: \"#4E4EC7\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"700\",\n padding: \"8px 0px\",\n paddingRight: \"22px\",\n paddingLeft: \"56px\",\n borderRadius: \"22px\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\",\n color: \"#4E4EC7\"\n }\n },\n avatarContainer: {\n width: \"44px\",\n height: \"44px\",\n borderRadius: \"50%\",\n zIndex: 1,\n position: \"absolute\",\n top: \"0px\",\n left: \"-1px\",\n background: \"linear-gradient(225.64deg, #E548FF -23.43%, #084D6D 140.57%, #084D6D 140.58%, #5BC4C0 140.6%)\",\n boxShadow: \"0px 4px 4px rgba(36, 36, 36, 0.18)\"\n },\n hoverAnimation: {\n \"& svg\": {\n transform: \"scale(1.11) translate(2px, -5px) !important\",\n transition: \"transform 0.7s\"\n }\n },\n notificationAnimation: {\n \"& svg\": {\n transform: \"scale(2.5) translate(0px, -14.5px) !important\",\n transition: \"transform 0.7s\"\n }\n },\n notificationPopperContainer: {\n transform: \"translate(40px, -90px)\"\n },\n notificationsBadge: {\n \"& .MuiBadge-badge\": {\n backgroundColor: \"#E37D7A\",\n color: \"#FFF\",\n fontWeight: \"700\",\n width: \"28px\",\n height: \"28px\",\n borderRadius: \"50%\",\n fontSize: \"16px\"\n }\n },\n notificationPopper: {\n position: \"relative\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"24px\",\n width: \"345px\",\n height: \"150px\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n rowGap: \"16px\"\n },\n notificationHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"24px\",\n fontWeight: \"700\",\n lineHeight: \"1.2\",\n color: \"#4E4EC7\",\n width: \"87%\"\n },\n notificationButtons: {\n width: \"87%\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n columnGap: \"8px\"\n },\n notificationViewButton: {\n textTransform: \"none\",\n backgroundColor: \"#7A8EF1\",\n color: \"#FFFFFF\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"700\",\n borderRadius: \"22px\",\n padding: \"2px 20px\",\n \"&:hover\": {\n backgroundColor: \"#7A8EF1CC\",\n color: \"#FFFFFF\"\n }\n },\n notificationCloseButton: {\n textTransform: \"none\",\n backgroundColor: \"#FFFFFF\",\n color: \"#4E4EC7\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"400\",\n borderRadius: \"22px\",\n padding: \"2px 20px\",\n textDecoration: \"underline\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\",\n color: \"#4E4EC7\",\n textDecoration: \"none\"\n }\n },\n borderBox: {\n position: \"absolute\",\n top: \"-8px\",\n bottom: \"-8px\",\n left: \"-8px\",\n right: \"-8px\",\n content: \"''\",\n zIndex: -1,\n borderRadius: \"30px\",\n \"@property --angle\": {\n syntax: \"'<angle>'\",\n initialValue: \"0deg\",\n inherits: \"false\"\n },\n \"@keyframes rotate\": { to: { \"--angle\": \"360deg\" } },\n background: \"conic-gradient(from var(--angle), #A24AD3 0 30%, #594CA2 40% 70%, #A24AD3 100%)\",\n animation: \"3.5s rotate linear infinite\"\n },\n betaPill: {\n position: \"absolute\",\n top: \"-8px\",\n right: \"2px\",\n zIndex: 1,\n backgroundColor: \"#5BC4C0\",\n color: \"#FFFFFF\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"9.5px\",\n fontWeight: \"700\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"16px\",\n width: \"30px\",\n borderRadius: \"8px\"\n },\n modal: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"60px\",\n maxWidth: \"1200px\",\n width: \"100%\",\n height: \"94vh\",\n maxHeight: \"844px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n notificationModalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n width: \"90%\",\n height: \"100%\",\n rowGap: \"36px\",\n marginTop: \"34px\"\n },\n felixContainer: {\n marginTop: \"20px\"\n },\n previewModal: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n maxWidth: \"680px\",\n width: \"100%\",\n height: \"94vh\",\n maxHeight: \"730px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n teaserContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n width: \"500px\",\n rowGap: \"26px\"\n },\n teaserHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"34px\",\n fontWeight: \"700\",\n color: \"#2D388D\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n columnGap: \"12px\",\n position: \"relative\",\n paddingTop: \"12px\"\n },\n teaserPill: {\n height: \"18px\",\n width: \"36px\",\n backgroundColor: \"#5BC4BF\",\n color: \"#FFFFFF\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"10px\",\n fontWeight: \"700\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: \"12px\",\n position: \"absolute\",\n top: \"-4px\",\n right: \"-28px\"\n },\n featureList: {\n display: \"flex\",\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n alignItems: \"flex-start\",\n justifyContent: \"center\",\n rowGap: \"12px\",\n width: \"460px\"\n },\n featureListItem: {\n width: \"210px\",\n display: \"flex\",\n alignItems: \"flex-start\",\n columnGap: \"16px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"400\",\n color: \"#000000\"\n },\n featureListItemIcon: {\n fontSize: \"22px\",\n color: \"#798DF0\"\n },\n teaserText: {\n textAlign: \"center\"\n },\n teaserButton: {\n textTransform: \"none\",\n backgroundColor: \"#7A8EF1\",\n color: \"#FFFFFF\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"20px\",\n fontWeight: \"700\",\n width: \"320px\",\n height: \"44px\",\n borderRadius: \"22px\",\n \"&:hover\": {\n backgroundColor: \"#798DF0\"\n }\n },\n teaserCloseButton: {\n position: \"absolute\",\n bottom: \"20px\",\n right: \"8px\",\n textTransform: \"none\",\n textDecoration: \"underline\",\n height: \"22px\",\n paddingInline: \"18px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n fontWeight: \"600\",\n color: \"#CCCCCC\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"20px\",\n border: \"none\"\n },\n welcomeContainer: {\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n columnGap: \"112px\",\n justifyContent: \"center\",\n alignItems: \"center\",\n overflowY: \"auto\"\n },\n descriptionContainer: {\n paddingTop: \"30px\",\n rowGap: \"42px\",\n width: \"90%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n overflowY: \"auto\"\n },\n generatedContainer: {\n width: \"90%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n paddingTop: \"20px\",\n overflowY: \"auto\"\n },\n headersAndOptionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"474px\"\n },\n header: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"68px\",\n fontWeight: \"700\",\n color: \"#2D388D\",\n marginBottom: \"26px\",\n \"@keyframes caret\": {\n \"50%\": {\n borderColor: \"transparent\"\n }\n },\n \"& span\": {\n lineHeight: \"1\",\n borderRight: \".05em solid\",\n animation: \"caret 0.9s ease-in-out infinite\"\n }\n },\n subHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"26px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n marginLeft: \"4px\"\n },\n optionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"22px\",\n marginTop: \"42px\"\n },\n option: {\n width: \"366px\",\n height: \"46px\",\n textTransform: \"none\",\n backgroundColor: \"#FFFFFF\",\n fontFamily: \"Source Sans Pro\",\n color: \"#2D388D\",\n border: \"2px solid #2D388D\",\n fontSize: \"17px\",\n fontWeight: \"700\",\n borderRadius: \"23px\",\n \"&:hover\": {\n color: \"#AFBCFF\",\n border: \"2px solid #AFBCFF\"\n }\n },\n genericContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n width: \"100%\"\n },\n fieldHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"38px\",\n fontWeight: \"700\",\n color: \"#2D388D\",\n marginBottom: \"36px\"\n },\n fieldSubHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n marginBottom: \"16px\"\n },\n optionalInformationContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n marginBlock: \"20px\"\n },\n pillsContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n gap: \"18px\",\n flexWrap: \"wrap\",\n marginTop: \"8px\"\n },\n pill: {\n textTransform: \"none\",\n height: \"36px\",\n width: \"auto\",\n paddingInline: \"17px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"700\",\n color: \"#AFBCFF\",\n border: \"1px solid #AFBCFF\",\n borderRadius: \"18px\"\n },\n filledPill: {\n textTransform: \"none\",\n height: \"36px\",\n width: \"auto\",\n paddingInline: \"17px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"700\",\n color: \"#AFBCFF\",\n border: \"1px solid #2D388D\",\n backgroundColor: \"#2D388D\",\n borderRadius: \"18px\",\n \"&:hover\": {\n borderColor: \"#AFBCFF\"\n }\n },\n fieldInput: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"regular\",\n borderRadius: \"6px\",\n height: \"42px\",\n width: \"100%\",\n \"& legend\": {\n display: \"none\"\n },\n \"& input\": {\n padding: \"0px 20px 3.5px 20px\",\n color: \"#333333\"\n },\n \"& fieldset\": {\n borderColor: \"#DDDDDD\"\n },\n \"&:hover\": {\n \"& fieldset\": {\n borderColor: \"#DADADA !important\"\n }\n }\n },\n footerContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n width: \"100%\",\n marginTop: \"auto\",\n paddingTop: \"30px\"\n },\n felixMessageContainer: {\n display: \"flex\",\n columnGap: \"26px\",\n alignItems: \"center\"\n },\n felixMessage: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n maxWidth: \"310px\",\n \"& span\": {\n color: \"#AFBCFF\"\n },\n \"@media (max-width: 1024px)\": {\n fontSize: \"14px\",\n width: \"220px\"\n }\n },\n footerButtonsContainer: {\n display: \"flex\",\n columnGap: \"32px\"\n },\n footerContinueButton: {\n textTransform: \"none\",\n height: \"40px\",\n paddingInline: \"18px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"700\",\n color: \"#FFFFFF\",\n backgroundColor: \"#7A8EF1\",\n borderRadius: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#2D388D\"\n },\n \"&:disabled\": {\n backgroundColor: \"#CCCCCC\",\n color: \"#DDDDDD\"\n }\n },\n footerBackButton: {\n textTransform: \"none\",\n textDecoration: \"underline\",\n height: \"40px\",\n paddingInline: \"18px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#CCCCCC\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"20px\",\n border: \"none\"\n },\n descriptionHeader: {\n marginBottom: \"36px\",\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\"\n },\n descriptionHeaderText: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"38px\",\n fontWeight: \"700\",\n color: \"#2D388D\"\n },\n generatedResponseContainer: {\n fontFamily: \"Source Sans Pro\",\n width: \"100%\",\n height: \"500px\",\n overflowY: \"auto\",\n padding: \"18px\",\n paddingTop: \"4px\",\n border: \"1px solid #DDDDDD\",\n borderRadius: \"6px\",\n \"& h2\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: \"#666666\",\n fontSize: \"18px\"\n },\n \"& h3\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: \"#666666\",\n fontSize: \"16px\"\n },\n \"& p\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"normal\"\n },\n \"& ul\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n fontSize: \"14px\",\n listStyleType: \"circle\",\n marginLeft: \"30px\",\n marginTop: \"16px\",\n marginBottom: \"8px\"\n },\n \"& ol\": {\n fontFamily: \"Source Sans Pro\",\n color: \"#666666\",\n fontSize: \"16px\",\n marginLeft: \"30px\",\n marginTop: \"16px\",\n marginBottom: \"8px\",\n listStyle: \"decimal\",\n \"& li\": {\n marginBottom: \"12px\",\n paddingLeft: \"10px\"\n }\n }\n },\n footerRestartButton: {\n textTransform: \"none\",\n height: \"40px\",\n paddingInline: \"18px\",\n minWidth: \"130px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"700\",\n color: \"#FFFFFF\",\n backgroundColor: \"#AFBCFF\",\n borderRadius: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#2D388D\"\n }\n },\n questionsContainer: {\n display: \"flex\",\n width: \"100%\",\n flexDirection: \"column\",\n rowGap: \"30px\",\n overflowY: \"auto\",\n marginBottom: \"34px\"\n },\n question: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n columnGap: \"26px\",\n padding: \"20px\",\n background: \"rgba(122, 142, 241, 0.12)\",\n borderRadius: \"6px\",\n color: \"#2D388D\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\"\n },\n closeIcon,\n checkbox: {\n color: \"#939393 !important\",\n \"& .MuiSvgIcon-root\": {\n fontSize: \"24px\"\n },\n \"&.Mui-checked\": {\n color: \"#939393 !important\"\n }\n },\n formContainer: {\n display: \"flex\",\n alignItems: \"center\",\n columnGap: \"24px\",\n width: \"100%\"\n },\n formLabel: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: 600,\n color: \"#2D388D\",\n paddingTop: \"2px\"\n },\n toggleButton: {\n padding: \"4px 17px !important\",\n fontFamily: \"Source Sans Pro\",\n color: \"#AAAAAA\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n borderRadius: \"12px\",\n backgroundColor: \"#F9F9F9\",\n textTransform: \"none\",\n border: \"none\",\n \"&.Mui-selected\": {\n backgroundColor: \"#7A8EF1 !important\",\n color: \"#FFFFFF !important\"\n },\n \"&:focus\": {\n outline: \"none\"\n },\n \"&:hover\": {\n border: \"none\"\n }\n },\n sideBySideContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n width: \"100%\",\n columnGap: \"44px\"\n }\n};\n","\"use strict\";\nimport { closeIcon } from \"../../NewUI/shared/styleClasses\";\nexport const classes = {\n aiModal: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"60px\",\n maxWidth: \"1200px\",\n width: \"100%\",\n height: \"94vh\",\n maxHeight: \"844px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n closeIcon,\n aiQuestionsContainer: {\n paddingTop: \"30px\",\n width: \"90%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n overflowY: \"auto\"\n },\n genericContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n width: \"100%\"\n },\n fieldHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"38px\",\n fontWeight: \"700\",\n color: \"#2D388D\",\n marginBottom: \"36px\"\n },\n fieldSubHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n marginBottom: \"16px\"\n },\n fieldInput: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"regular\",\n borderRadius: \"6px\",\n height: \"42px\",\n width: \"100%\",\n \"& legend\": {\n display: \"none\"\n },\n \"& input\": {\n padding: \"0px 20px 3.5px 20px\",\n color: \"#333333\"\n },\n \"& fieldset\": {\n borderColor: \"#DDDDDD\"\n },\n \"&:hover\": {\n \"& fieldset\": {\n borderColor: \"#DADADA !important\"\n }\n }\n },\n footerContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n width: \"100%\",\n marginTop: \"auto\"\n },\n felixMessageContainer: {\n display: \"flex\",\n columnGap: \"26px\",\n alignItems: \"center\"\n },\n felixMessage: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n maxWidth: \"340px\",\n \"& span\": {\n color: \"#AFBCFF\"\n }\n },\n footerButtonsContainer: {\n display: \"flex\",\n columnGap: \"32px\"\n },\n footerContinueButton: {\n textTransform: \"none\",\n height: \"40px\",\n paddingInline: \"18px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"700\",\n color: \"#FFFFFF\",\n backgroundColor: \"#7A8EF1\",\n borderRadius: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#2D388D\"\n },\n \"&:disabled\": {\n backgroundColor: \"#CCCCCC\",\n color: \"#DDDDDD\"\n }\n },\n descriptionHeader: {\n marginBottom: \"30px\",\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\"\n },\n descriptionHeaderText: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"38px\",\n fontWeight: \"700\",\n color: \"#2D388D\"\n },\n question: {\n width: \"100%\",\n display: \"flex\",\n columnGap: \"26px\",\n padding: \"20px\",\n background: \"rgba(122, 142, 241, 0.12)\",\n borderRadius: \"6px\",\n color: \"#2D388D\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\"\n },\n footerAddButton: {\n textTransform: \"none\",\n height: \"40px\",\n minWidth: \"97px\",\n paddingInline: \"18px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"700\",\n color: \"#FFFFFF\",\n backgroundColor: \"#7A8EF1\",\n borderRadius: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#2D388D\"\n },\n \"&:disabled\": {\n backgroundColor: \"#CCCCCC\",\n color: \"#DDDDDD\"\n }\n },\n footerBackButton: {\n textTransform: \"none\",\n textDecoration: \"underline\",\n height: \"40px\",\n paddingInline: \"18px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#CCCCCC\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"20px\",\n border: \"none\"\n },\n pill: {\n textTransform: \"none\",\n height: \"36px\",\n width: \"auto\",\n paddingInline: \"17px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"700\",\n color: \"#AFBCFF\",\n border: \"1px solid #AFBCFF\",\n borderRadius: \"18px\"\n },\n checkbox: {\n color: \"#939393 !important\",\n \"& .MuiSvgIcon-root\": {\n fontSize: \"24px\"\n },\n \"&.Mui-checked\": {\n color: \"#939393 !important\"\n }\n },\n questionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n marginBottom: \"24px\",\n rowGap: \"28px\",\n width: \"100%\",\n position: \"relative\",\n overflow: \"auto\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n }\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nexport const fetchSummary = (jobDescription, adType, positionTitle, customDescription, tone, signal) => __async(void 0, null, function* () {\n const res = yield fetch(\"/api/v4/ai_studio\", {\n signal,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n ai_studio: {\n type: \"advertisement\",\n job_description: jobDescription,\n ad_type: adType,\n job_details: { position_title: positionTitle },\n use_custom_description: customDescription,\n tone\n }\n })\n });\n return yield res.json();\n});\nexport const fetchKeyPoints = (jobDescription, positionTitle) => __async(void 0, null, function* () {\n const res = yield fetch(\"/api/v4/ai_studio\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n ai_studio: {\n type: \"keypoints\",\n job_description: jobDescription,\n job_details: { position_title: positionTitle }\n }\n })\n });\n return yield res.json();\n});\nexport const fetchSocial = (jobDescription, positionTitle, customDescription, includeHashtags, tone, length, signal) => __async(void 0, null, function* () {\n const res = yield fetch(\"/api/v4/ai_studio\", {\n signal,\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n ai_studio: {\n type: \"social\",\n job_description: jobDescription,\n job_details: { position_title: positionTitle },\n use_custom_description: customDescription,\n include_hashtags: includeHashtags,\n tone,\n summary_length: length\n }\n })\n });\n return yield res.json();\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nexport const initialSmartShareState = {\n open: false,\n buttonHovered: false,\n currentStep: 0,\n generationTone: \"excited\",\n useCustomDescription: \"description\",\n includeHashtags: false,\n includeKeyPoints: false,\n summaryLength: \"medium\",\n generationJobDescription: \"\",\n generationJobTitle: \"\",\n adType: \"dot points\",\n generatedResponse: \"\",\n generatedKeyPoints: [],\n copied: false,\n confirmCancelIsOpen: false,\n generationType: \"social\",\n generationError: false\n};\nexport const smartShareReducer = (state, action) => {\n switch (action.type) {\n case \"OPEN_MODAL\":\n return __spreadProps(__spreadValues({}, state), { open: true, generationJobTitle: action.payload });\n case \"CLOSE_MODAL\":\n return initialSmartShareState;\n case \"SET_CONFIRM_CANCEL_IS_OPEN\":\n return __spreadProps(__spreadValues({}, state), { confirmCancelIsOpen: action.payload });\n case \"SET_COPIED\":\n return __spreadProps(__spreadValues({}, state), { copied: action.payload });\n case \"SET_CURRENT_STEP\":\n return __spreadProps(__spreadValues({}, state), { currentStep: action.payload });\n case \"SET_GENERATED_RESPONSE\":\n return __spreadProps(__spreadValues({}, state), { generatedResponse: action.payload });\n case \"SET_GENERATED_KEY_POINTS\":\n return __spreadProps(__spreadValues({}, state), { generatedKeyPoints: action.payload });\n case \"SET_GENERATION_ERROR\":\n return __spreadProps(__spreadValues({}, state), { generationError: action.payload });\n case \"SET_BUTTON_HOVERED\":\n return __spreadProps(__spreadValues({}, state), { buttonHovered: action.payload });\n case \"SELECT_SOCIAL\":\n return __spreadProps(__spreadValues({}, state), { generationType: \"social\", generationTone: \"excited\", currentStep: 1 });\n case \"SELECT_JOB_AD\":\n return __spreadProps(__spreadValues({}, state), {\n generationType: \"advertisement\",\n generationTone: \"excited\",\n currentStep: 4\n });\n case \"SET_USE_CUSTOM_DESCRIPTION\":\n return __spreadProps(__spreadValues({}, state), { useCustomDescription: action.payload });\n case \"SET_GENERATION_JOB_DESCRIPTION\":\n return __spreadProps(__spreadValues({}, state), { generationJobDescription: action.payload });\n case \"SET_GENERATION_JOB_TITLE\":\n return __spreadProps(__spreadValues({}, state), { generationJobTitle: action.payload });\n case \"SET_GENERATION_TONE\":\n return __spreadProps(__spreadValues({}, state), { generationTone: action.payload });\n case \"SET_SUMMARY_LENGTH\":\n return __spreadProps(__spreadValues({}, state), { summaryLength: action.payload });\n case \"SET_INCLUDE_HASHTAGS\":\n return __spreadProps(__spreadValues({}, state), { includeHashtags: action.payload });\n case \"SET_INCLUDE_KEY_POINTS\":\n return __spreadProps(__spreadValues({}, state), { includeKeyPoints: action.payload });\n case \"SET_AD_TYPE\":\n return __spreadProps(__spreadValues({}, state), { adType: action.payload });\n default:\n return state;\n }\n};\n","\"use strict\";\nimport { closeIcon } from \"../../NewUI/shared/styleClasses\";\nexport const classes = {\n buttonContainer: {\n position: \"relative\",\n cursor: \"pointer\",\n transform: \"scale(0.77)\"\n },\n button: {\n textTransform: \"none\",\n backgroundColor: \"#F2F2F2\",\n color: \"#4E4EC7\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"700\",\n padding: \"8px 0px\",\n paddingRight: \"20px\",\n paddingLeft: \"54px\",\n borderRadius: \"22px\",\n \"&:hover\": {\n backgroundColor: \"#F2F2F2\",\n color: \"#4E4EC7\"\n }\n },\n avatarContainer: {\n width: \"44px\",\n height: \"44px\",\n borderRadius: \"50%\",\n zIndex: 1,\n position: \"absolute\",\n top: \"0px\",\n left: \"-1px\",\n background: \"linear-gradient(225.64deg, #E548FF -23.43%, #084D6D 140.57%, #084D6D 140.58%, #5BC4C0 140.6%)\",\n boxShadow: \"2px 3px 4px rgba(36, 36, 36, 0.18)\"\n },\n hoverAnimation: {\n \"@keyframes grow\": {\n \"0%\": {\n transform: \"scale(1) translate(2px, -3px)\"\n },\n \"100%\": {\n transform: \"scale(1.11) translate(2px, -5px)\"\n }\n },\n \"& svg\": {\n animation: \"grow 0.7s forwards\"\n }\n },\n unhoverAnimation: {\n \"@keyframes shrink\": {\n \"0%\": {\n transform: \"scale(1.11) translate(2px, -5px)\"\n },\n \"100%\": {\n transform: \"scale(1) translate(2px, -3px)\"\n }\n },\n \"& svg\": {\n animation: \"shrink 0.7s forwards\"\n }\n },\n betaPill: {\n position: \"absolute\",\n top: \"-8px\",\n right: \"2px\",\n zIndex: 1,\n backgroundColor: \"#5BC4C0\",\n color: \"#FFFFFF\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"9.5px\",\n fontWeight: \"700\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"16px\",\n width: \"30px\",\n borderRadius: \"8px\"\n },\n modal: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"60px\",\n maxWidth: \"1200px\",\n width: \"100%\",\n height: \"94vh\",\n maxHeight: \"844px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n rowGap: \"16px\"\n },\n footerContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n width: \"90%\",\n marginTop: \"auto\",\n paddingTop: \"16px\"\n },\n felixMessageContainer: {\n display: \"flex\",\n columnGap: \"26px\",\n alignItems: \"center\"\n },\n felixMessage: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n maxWidth: \"330px\",\n \"& span\": {\n color: \"#AFBCFF\"\n }\n },\n footerButtonsContainer: {\n display: \"flex\",\n columnGap: \"32px\"\n },\n footerContinueButton: {\n textTransform: \"none\",\n height: \"40px\",\n paddingInline: \"18px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"700\",\n color: \"#FFFFFF\",\n backgroundColor: \"#7A8EF1\",\n borderRadius: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#2D388D\"\n },\n \"&:disabled\": {\n backgroundColor: \"#CCCCCC\",\n color: \"#DDDDDD\"\n }\n },\n footerBackButton: {\n textTransform: \"none\",\n textDecoration: \"underline\",\n height: \"40px\",\n paddingInline: \"18px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#CCCCCC\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"20px\",\n border: \"none\"\n },\n closeIcon,\n inputStepContainer: {\n paddingTop: \"30px\",\n width: \"90%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n overflowY: \"auto\"\n },\n genericContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n width: \"100%\"\n },\n sideBySideContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n width: \"100%\",\n columnGap: \"44px\"\n },\n fieldHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"38px\",\n fontWeight: \"700\",\n color: \"#2D388D\",\n marginBottom: \"36px\"\n },\n fieldSubHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n marginBottom: \"16px\"\n },\n fieldInput: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"regular\",\n borderRadius: \"6px\",\n height: \"42px\",\n width: \"100%\",\n \"& legend\": {\n display: \"none\"\n },\n \"& input\": {\n padding: \"0px 20px 3.5px 20px\",\n color: \"#333333\"\n },\n \"& fieldset\": {\n borderColor: \"#DDDDDD\"\n },\n \"&:hover\": {\n \"& fieldset\": {\n borderColor: \"#DADADA !important\"\n }\n }\n },\n checkboxContainer: {\n display: \"flex\",\n alignItems: \"center\",\n marginTop: \"40px\",\n columnGap: \"6px\"\n },\n checkbox: {\n color: \"#939393 !important\",\n \"& .MuiSvgIcon-root\": {\n fontSize: \"24px\"\n },\n \"&.Mui-checked\": {\n color: \"#939393 !important\"\n }\n },\n checkboxLabel: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: 600,\n color: \"#2D388D\",\n paddingTop: \"2px\"\n },\n socialResponseContainer: {\n display: \"flex\",\n width: \"90%\",\n overflowY: \"auto\"\n },\n socialCard: {\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: \"12px\",\n border: \"1px solid #DDDDDD\",\n padding: \"20px\",\n width: \"100%\",\n height: \"fit-content\",\n boxShadow: \"3px 3px 4px #dddddd\"\n },\n socialCardHeader: {\n display: \"flex\",\n flexDirection: \"column\",\n maxWidth: \"864px\",\n paddingRight: \"30px\",\n fontSize: \"15px\"\n },\n socialCardPreview: {\n width: \"400px\",\n padding: \"13px\",\n backgroundColor: \"#f8f8f8\",\n borderRadius: \"12px\",\n marginTop: \"10px\"\n },\n skeleton: {\n borderRadius: \"12px\",\n width: \"400px\",\n height: \"200px\"\n },\n responseHeader: {\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"90%\",\n marginBottom: \"20px\",\n lineHeight: \"1\"\n },\n responseHeaderText: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"38px\",\n fontWeight: \"700\",\n color: \"#2D388D\"\n },\n previewImage: {\n width: \"100%\",\n height: \"200px\",\n backgroundSize: \"cover\",\n borderRadius: \"6px 6px 0px 0px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n noImageIcon: {\n fontSize: 80,\n color: \"#AAAAAA\"\n },\n previewTitle: {\n fontWeight: \"bold\",\n marginTop: \"8px\",\n fontSize: \"14px\"\n },\n previewDescription: {\n fontSize: \"12px\"\n },\n previewLink: {\n fontSize: \"11px\"\n },\n pill: {\n textTransform: \"none\",\n height: \"36px\",\n width: \"auto\",\n paddingInline: \"17px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"700\",\n color: \"#AFBCFF\",\n border: \"1px solid #AFBCFF\",\n borderRadius: \"18px\"\n },\n centeredBiggerMargin: {\n alignItems: \"center\",\n marginBlock: \"40px\"\n },\n welcomePageSelections: {\n display: \"flex\",\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n gap: \"96px\",\n width: \"90%\",\n justifyContent: \"center\",\n marginTop: \"70px\",\n overflowY: \"auto\"\n },\n socialSelection: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"336px\",\n height: \"400px\",\n padding: \"52px 32px 0px 52px\",\n borderRadius: \"10px\",\n border: \"3px solid #AFBCFF\",\n color: \"#AFBCFF\",\n transition: \"all 0.45s ease-in-out\",\n cursor: \"pointer\",\n \"& span\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n color: \"#000000\",\n transition: \"all 0.45s ease-in-out\"\n },\n \"&:hover\": {\n color: \"#FFFFFF\",\n backgroundColor: \"#AFBCFF\",\n \"& span\": {\n color: \"#FFFFFF\"\n }\n }\n },\n advertisementSelection: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"336px\",\n height: \"400px\",\n padding: \"52px 32px 0px 52px\",\n borderRadius: \"10px\",\n border: \"3px solid #5656DB\",\n color: \"#5656DB\",\n transition: \"all 0.45s ease-in-out\",\n cursor: \"pointer\",\n \"& span\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n color: \"#000000\",\n transition: \"all 0.45s ease-in-out\"\n },\n \"&:hover\": {\n color: \"#FFFFFF\",\n backgroundColor: \"#5656DB\",\n \"& span\": {\n color: \"#FFFFFF\"\n }\n }\n },\n welcomePageSelectionHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"24px\",\n fontWeight: \"700\",\n margin: \"40px 0px 16px 0px\"\n },\n generatedResponseContainer: {\n fontFamily: \"Source Sans Pro\",\n width: \"90%\",\n height: \"100%\",\n overflowY: \"auto\",\n padding: \"18px\",\n paddingTop: \"4px\",\n border: \"1px solid #DDDDDD\",\n borderRadius: \"6px\",\n \"& h2\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: \"#666666\",\n fontSize: \"18px\"\n },\n \"& h3\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: \"#666666\",\n fontSize: \"16px\"\n },\n \"& p\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"normal\"\n },\n \"& ul\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n fontSize: \"14px\",\n listStyleType: \"circle\",\n marginLeft: \"30px\",\n marginTop: \"16px\",\n marginBottom: \"8px\"\n },\n \"& ol\": {\n fontFamily: \"Source Sans Pro\",\n color: \"#666666\",\n fontSize: \"16px\",\n marginLeft: \"30px\",\n marginTop: \"16px\",\n marginBottom: \"8px\",\n listStyle: \"decimal\",\n \"& li\": {\n marginBottom: \"12px\",\n paddingLeft: \"10px\"\n }\n }\n },\n characterCounter: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n color: \"#666666\",\n position: \"absolute\",\n top: \"10px\",\n right: \"10px\"\n },\n keyPoint: {\n backgroundColor: \"#E3E8FF\",\n borderRadius: \"6px\",\n padding: \"6px 14px 6px 14px\",\n margin: \"8px 6px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n columnGap: \"12px\",\n fontWeight: \"600\",\n color: \"#2D388D\"\n },\n copyIcon: {\n color: \"#2D388D\",\n \"& svg\": {\n fontSize: \"18px\"\n }\n }\n};\n","\"use strict\";\nexport const defaultInclusions = {\n resume: {\n label: \"Resume\",\n value: true\n },\n answers: {\n label: \"Answers to screening questions\",\n value: true\n },\n suitability_comment: {\n label: \"Suitability comments\",\n value: true\n }\n};\nexport const defaultFormats = [\"Paragraphs\", \"Dot points\", \"Mixed\"];\nexport const emailTones = [\n \"Professional\",\n \"Friendly\",\n \"Informative\",\n \"Encouraging\",\n \"Enthusiastic\",\n \"Respectful\"\n];\n","\"use strict\";\nimport { closeIcon } from \"../../NewUI/shared/styleClasses\";\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nexport const classes = {\n summaryPopper: {\n zIndex: 12\n },\n summaryPopover: {\n position: \"relative\",\n width: \"440px\",\n maxHeight: \"500px\",\n overflow: \"auto\",\n padding: \"32px 36px 24px 46px\",\n filter: \"drop-shadow(0px 2px 14px rgb(48, 90, 111, 0.16))\",\n borderRadius: \"19px\",\n backgroundColor: \"#FFFFFF\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14.5px\",\n transform: \"translateX(14px)\",\n \"& li\": {\n position: \"relative\",\n marginBottom: \"6px\",\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n width: \"8px\",\n height: \"8px\",\n backgroundColor: \"#2D388D\",\n left: \"-18px\",\n top: \"8px\",\n borderRadius: \"50%\"\n }\n },\n \"&::before\": {\n content: '\"\"',\n position: \"absolute\",\n width: \"36px\",\n height: \"36px\",\n transform: \"rotate(45deg)\",\n backgroundColor: \"#FFFFFF\",\n left: \"-17px\",\n top: \"calc(50% - 18px)\",\n clipPath: \"polygon(0 0, 0 100%, 100% 100%, 100% 100%, 0% 0)\"\n }\n },\n expandIcon: {\n fontSize: \"18px\",\n position: \"absolute\",\n top: \"12px\",\n right: \"12px\",\n cursor: \"pointer\",\n color: \"#2D388D\"\n },\n modal: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"60px\",\n maxWidth: \"1200px\",\n width: \"100%\",\n height: \"94vh\",\n maxHeight: \"844px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n aiModalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n width: \"90%\",\n height: \"100%\",\n rowGap: \"40px\",\n marginTop: \"34px\",\n paddingTop: \"2px\"\n },\n closeIcon,\n summaryContainer: {\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n columnGap: \"112px\",\n justifyContent: \"center\",\n alignItems: \"center\",\n overflowY: \"auto\"\n },\n applicantNameHeader: {\n width: \"100%\",\n marginBottom: \"-12px\",\n \"& a\": {\n color: \"#2D388D\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"22px\",\n fontWeight: \"700\"\n }\n },\n header: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"38px\",\n fontWeight: \"700\",\n color: \"#2D388D\",\n width: \"100%\"\n },\n responseHeader: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n width: \"100%\",\n height: \"38px\"\n },\n fieldSubHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n marginBottom: \"16px\"\n },\n aiRow: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\"\n },\n inclusionsContainer: {\n display: \"flex\",\n columnGap: \"28px\",\n width: \"100%\",\n justifyContent: \"flex-start\",\n alignItems: \"center\"\n },\n checkboxGroup: {\n display: \"flex\",\n alignItems: \"center\",\n columnGap: \"6px\"\n },\n inclusionsLabel: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: 600,\n color: \"#2D388D\",\n paddingTop: \"2px\"\n },\n inclusionsCheckbox: {\n color: \"#7A8EF1 !important\",\n \"& .MuiSvgIcon-root\": {\n fontSize: \"24px\"\n },\n \"&.Mui-checked\": {\n color: \"#2D388D !important\"\n }\n },\n applicantsContainer: {\n display: \"flex\",\n columnGap: \"24px\",\n width: \"100%\"\n },\n applicant: {\n position: \"relative\"\n },\n applicantInitials: {\n width: \"45px\",\n height: \"45px\",\n borderRadius: \"50%\",\n backgroundColor: \"#CDD7F2\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"700\",\n color: \"#2D388D\",\n cursor: \"default\"\n },\n applicantName: {\n position: \"absolute\",\n width: \"max-content\",\n top: \"35px\",\n left: \"15px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n fontWeight: \"700\",\n color: \"#666666\",\n backgroundColor: \"#FFFFFF\",\n padding: \"4px 10px\",\n borderRadius: \"6px\",\n boxShadow: \"0px 2px 14px rgba(48, 90, 111, 0.16)\",\n zIndex: 2\n },\n removeApplicant: {\n position: \"absolute\",\n top: \"-3px\",\n right: \"0px\",\n cursor: \"pointer\",\n backgroundColor: \"#798DF0\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"16px\",\n height: \"16px\",\n borderRadius: \"50%\",\n \"& svg\": {\n color: \"#FFFFFF\",\n fontSize: \"12px\"\n },\n zIndex: 2\n },\n pillButton: {\n textTransform: \"none\",\n height: \"36px\",\n minWidth: \"fit-content\",\n paddingInline: \"17px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"700\",\n color: \"#AFBCFF\",\n border: \"1px solid #AFBCFF\",\n borderRadius: \"18px\"\n },\n noSummary: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"600\",\n color: \"#999999\",\n width: \"100%\",\n textAlign: \"center\"\n },\n noSummaryFelix: {\n maxWidth: \"100px\",\n margin: \"0px auto 20px auto\",\n textAlign: \"center\"\n },\n noSummaryGenerate: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n marginTop: \"20px\",\n marginBottom: \"6px\"\n },\n noSavedQuestions: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"20px\",\n fontWeight: \"600\",\n color: \"#999999\",\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n marginTop: \"20px\"\n },\n questionSkeleton: {\n width: \"100%\",\n height: \"200px\",\n borderRadius: \"6px\",\n transformOrigin: \"unset\",\n transform: \"unset\"\n },\n fieldInput: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"regular\",\n borderRadius: \"6px\",\n height: \"42px\",\n width: \"100%\",\n \"& legend\": {\n display: \"none\"\n },\n \"& input\": {\n padding: \"0px 20px 3.5px 20px\",\n color: \"#333333\"\n },\n \"& fieldset\": {\n borderColor: \"#DDDDDD\"\n },\n \"&:hover\": {\n \"& fieldset\": {\n borderColor: \"#DADADA !important\"\n }\n }\n },\n emailQuestionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n width: \"100%\",\n height: \"100%\",\n rowGap: \"40px\",\n paddingTop: \"2px\"\n },\n suitabilityCommentWarning: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"600\",\n color: theme.palette.error.main,\n paddingTop: \"12px\"\n }\n};\n","\"use strict\";\nexport const classes = {\n rootContainer: {\n display: \"flex\",\n flexDirection: \"column\"\n },\n aiHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: \"#727272\",\n marginBottom: \"1.2rem\",\n marginTop: \".7rem\"\n },\n buttonsContainer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n columnGap: \"1.5rem\",\n rowGap: \"1rem\",\n marginTop: \"0.5rem\"\n },\n aiButton: {\n textTransform: \"none\",\n height: \"36px\",\n width: \"auto\",\n paddingInline: \"17px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"700\",\n color: \"#AFBCFF\",\n border: \"1px solid #AFBCFF\",\n borderRadius: \"18px\",\n minWidth: \"268px\"\n },\n aiButtonFilled: {\n textTransform: \"none\",\n height: \"36px\",\n width: \"auto\",\n paddingInline: \"17px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"700\",\n color: \"#AFBCFF\",\n border: \"1px solid #2D388D\",\n backgroundColor: \"#2D388D\",\n borderRadius: \"18px\",\n minWidth: \"268px\",\n \"&:hover\": {\n borderColor: \"#AFBCFF\",\n backgroundColor: \"#2D388D\"\n }\n },\n previewContainer: {\n marginTop: \"1rem\",\n \"& h3\": {\n marginBottom: \"1rem\",\n marginTop: \".3rem\",\n color: \"#727272\",\n fontSize: \"16px\"\n }\n },\n tlpPreview: {\n fontFamily: \"Source Sans Pro\",\n width: \"100%\",\n padding: \"18px\",\n paddingTop: \"4px\",\n border: \"1px solid #DDDDDD\",\n borderRadius: \"6px\",\n \"& h2\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: \"#666666\",\n fontSize: \"18px\"\n },\n \"& h3\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: \"#666666\",\n fontSize: \"16px\"\n },\n \"& p\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"normal\"\n },\n \"& ul\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n fontSize: \"14px\",\n listStyleType: \"circle\",\n marginLeft: \"30px\",\n marginTop: \"16px\",\n marginBottom: \"8px\"\n },\n \"& ol\": {\n fontFamily: \"Source Sans Pro\",\n color: \"#666666\",\n fontSize: \"16px\",\n marginLeft: \"30px\",\n marginTop: \"16px\",\n marginBottom: \"8px\",\n listStyle: \"decimal\",\n \"& li\": {\n marginBottom: \"12px\",\n paddingLeft: \"10px\"\n }\n }\n },\n toggleTlpPreview: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n textDecoration: \"underline\",\n cursor: \"pointer\"\n },\n questionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: \"1rem\",\n marginBottom: \"24px\",\n rowGap: \"28px\",\n width: \"100%\",\n position: \"relative\",\n overflow: \"auto\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n },\n question: {\n width: \"100%\",\n display: \"flex\",\n columnGap: \"26px\",\n padding: \"12px 24px\",\n background: \"rgba(122, 142, 241, 0.12)\",\n borderRadius: \"6px\",\n color: \"#2D388D\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\"\n },\n deleteQuestionButton: {\n textTransform: \"none\",\n height: \"28px\",\n width: \"auto\",\n paddingInline: \"12px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"13px\",\n fontWeight: \"700\",\n color: \"#AFBCFF\",\n border: \"1px solid #AFBCFF\",\n borderRadius: \"18px\",\n marginLeft: \"auto\",\n \"& svg\": {\n fontSize: \"18px !important\",\n color: \"#E37D7A99\"\n }\n }\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nexport const dismissNotification = (historyId, onError) => __async(void 0, null, function* () {\n try {\n yield fetch(`/api/v4/ai_generation_histories/${historyId}/dismiss`, {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" }\n });\n } catch (error) {\n onError ? onError() : console.error(error);\n }\n});\n","\"use strict\";\nimport { LIST_ITEMS_REGEX } from \"../sharedConfig\";\nexport const questionStringToArray = (questionString) => {\n if (questionString.split(\"**\").length > 1) {\n return questionString.replace(LIST_ITEMS_REGEX, \"\").replace(/\\n/g, \"\").split(\"**\").slice(0, -1).map((item, index) => ({\n id: index,\n text: item,\n copied: false,\n selected: false,\n status: \"notSent\"\n }));\n } else {\n return [\n {\n id: 0,\n text: questionString,\n copied: false,\n selected: false,\n status: \"notSent\"\n }\n ];\n }\n};\nexport const formatQuestionArray = (questionArray) => {\n return questionArray.map((item, index) => ({\n id: index,\n text: item,\n copied: false,\n selected: false,\n status: \"notSent\"\n }));\n};\n","\"use strict\";\nexport const classes = {\n errorContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"100%\",\n fontFamily: \"Source Sans Pro\",\n color: \"#2D388D\",\n \"& p\": {\n marginTop: \"5px\"\n }\n },\n felixErrorContainer: {\n width: \"200px\"\n },\n errorMessageContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n marginBlock: \"22px\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n errorButtons: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n columnGap: \"32px\"\n },\n pill: {\n textTransform: \"none\",\n height: \"36px\",\n width: \"auto\",\n paddingInline: \"17px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"700\",\n color: \"#AFBCFF\",\n border: \"1px solid #AFBCFF\",\n borderRadius: \"18px\",\n minWidth: \"160px\"\n },\n descriptionContainer: {\n paddingTop: \"30px\",\n rowGap: \"42px\",\n width: \"90%\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n overflowY: \"auto\"\n },\n loadingContainer: {\n rowGap: \"54px\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n overflowY: \"auto\"\n },\n loadingMessage: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"22px\",\n fontWeight: \"700\",\n color: \"#2D388D\",\n width: \"100%\",\n textAlign: \"center\",\n \"@keyframes pulse\": {\n \"50%\": {\n opacity: 0.58\n }\n },\n animation: \"pulse 1.8s ease-in-out infinite\"\n },\n fieldInput: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"regular\",\n borderRadius: \"6px\",\n height: \"42px\",\n width: \"100%\",\n \"& legend\": {\n display: \"none\"\n },\n \"& input\": {\n padding: \"0px 20px 3.5px 20px\",\n color: \"#333333\"\n },\n \"& fieldset\": {\n borderColor: \"#DDDDDD\"\n },\n \"&:hover\": {\n \"& fieldset\": {\n borderColor: \"#DADADA !important\"\n }\n }\n },\n footerContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n width: \"100%\",\n marginTop: \"auto\"\n },\n felixMessageContainer: {\n display: \"flex\",\n columnGap: \"26px\",\n alignItems: \"center\"\n },\n felixMessage: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n maxWidth: \"310px\",\n \"& span\": {\n color: \"#AFBCFF\"\n }\n },\n footerButtonsContainer: {\n display: \"flex\",\n columnGap: \"32px\"\n },\n footerContinueButton: {\n textTransform: \"none\",\n height: \"40px\",\n paddingInline: \"18px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"700\",\n color: \"#FFFFFF\",\n backgroundColor: \"#7A8EF1\",\n borderRadius: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#2D388D\"\n },\n \"&:disabled\": {\n backgroundColor: \"#CCCCCC\",\n color: \"#DDDDDD\"\n }\n },\n footerBackButton: {\n textTransform: \"none\",\n textDecoration: \"underline\",\n height: \"40px\",\n paddingInline: \"18px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#CCCCCC\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"20px\",\n border: \"none\"\n },\n altFooterSecondaryButton: {\n textTransform: \"none\",\n height: \"40px\",\n paddingInline: \"18px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"700\",\n color: \"#FFFFFF\",\n backgroundColor: \"#AFBCFF\",\n borderRadius: \"20px\",\n border: \"none\",\n \"&:hover\": {\n backgroundColor: \"#7A8EF1\"\n },\n \"&:disabled\": {\n backgroundColor: \"#CCCCCC\",\n color: \"#DDDDDD\"\n }\n },\n copyButton: {\n width: \"115px\",\n textTransform: \"none\",\n height: \"36px\",\n paddingInline: \"17px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"700\",\n color: \"#AFBCFF\",\n border: \"1px solid #AFBCFF\",\n borderRadius: \"18px\"\n },\n questionsContainer: {\n display: \"flex\",\n width: \"100%\",\n flexDirection: \"column\",\n rowGap: \"30px\",\n overflowY: \"auto\"\n },\n question: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n columnGap: \"26px\",\n padding: \"20px\",\n background: \"rgba(122, 142, 241, 0.12)\",\n borderRadius: \"6px\",\n color: \"#2D388D\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\"\n },\n floatingActionButton: {\n position: \"absolute\",\n width: \"30px\",\n height: \"30px\",\n borderRadius: \"50%\",\n backgroundColor: \"#2D388D\",\n boxShadow: \"0px 3px 12px 2px rgba(166, 166, 166, 0.5)\",\n bottom: \"24px\",\n right: \"30px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n transition: \"all 0.3s ease\",\n cursor: \"pointer\",\n \"&:hover\": {\n transform: \"scale(1.1)\"\n },\n \"& svg\": {\n color: \"#FFFFFF\",\n fontSize: \"18px\"\n }\n },\n viewOnlyHTMLParent: {\n position: \"relative\",\n width: \"100%\",\n height: \"50vh\",\n maxHeight: \"500px\"\n },\n emailInputButton: {\n backgroundColor: \"#798DF0\",\n bottom: \"80px\"\n },\n emailInputContainer: {\n position: \"absolute\",\n top: \"0px\",\n bottom: \"0px\",\n left: \"0px\",\n right: \"0px\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n background: \"linear-gradient(#F0F0F086, #D6D6D686)\"\n },\n emailInput: {\n marginBottom: \"22px\",\n padding: \"16px 20px\",\n borderRadius: \"8px\",\n width: \"96%\",\n backgroundColor: \"#FFFFFF\"\n },\n sendEmailButton: {\n position: \"absolute\",\n bottom: \"34px\",\n right: \"36px\",\n textTransform: \"none\",\n height: \"26px\",\n width: \"62px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n color: \"#FFFFFF\",\n backgroundColor: \"#7A8EF1\",\n borderRadius: \"28px\",\n border: \"none\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"700\",\n \"&:hover\": {\n backgroundColor: \"#2D388D\"\n },\n \"&:disabled\": {\n backgroundColor: \"#CCCCCC\",\n color: \"#DDDDDD\"\n }\n },\n labelStyles: {\n color: \"#2D388D\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n fontFamily: \"Source Sans Pro\",\n marginBottom: \"8px\",\n marginLeft: \"3px\"\n },\n inputStyles: {\n border: \"none\"\n },\n helperTextStyles: {\n marginTop: \"12px\",\n marginLeft: \"3px\"\n },\n inputOpen: {\n bottom: \"154px\",\n right: \"3px\"\n },\n viewOnlyHTML: {\n fontFamily: \"Source Sans Pro\",\n width: \"100%\",\n height: \"100%\",\n overflowY: \"auto\",\n padding: \"4px 74px 20px 20px\",\n border: \"1px solid #DDDDDD\",\n borderRadius: \"6px\",\n \"& p\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"normal\"\n },\n \"& ul\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n fontSize: \"15px\",\n listStyleType: \"circle\",\n marginLeft: \"15px\",\n marginTop: \"16px\",\n marginBottom: \"8px\",\n \"& li\": {\n marginBottom: \"6px\"\n }\n }\n },\n toggleDescriptionPreview: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n textDecoration: \"underline\",\n cursor: \"pointer\"\n },\n descriptionPreview: {\n fontFamily: \"Source Sans Pro\",\n width: \"100%\",\n padding: \"18px\",\n paddingTop: \"4px\",\n border: \"1px solid #DDDDDD\",\n borderRadius: \"6px\",\n \"& h2\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: \"#666666\",\n fontSize: \"18px\"\n },\n \"& h3\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: \"#666666\",\n fontSize: \"16px\"\n },\n \"& p\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"normal\"\n },\n \"& ul\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n fontSize: \"14px\",\n listStyleType: \"circle\",\n marginLeft: \"30px\",\n marginTop: \"16px\",\n marginBottom: \"8px\"\n },\n \"& ol\": {\n fontFamily: \"Source Sans Pro\",\n color: \"#666666\",\n fontSize: \"16px\",\n marginLeft: \"30px\",\n marginTop: \"16px\",\n marginBottom: \"8px\",\n listStyle: \"decimal\",\n \"& li\": {\n marginBottom: \"12px\",\n paddingLeft: \"10px\"\n }\n }\n },\n toggleButton: {\n padding: \"4px 17px !important\",\n fontFamily: \"Source Sans Pro\",\n color: \"#AAAAAA\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n borderRadius: \"12px\",\n backgroundColor: \"#F9F9F9\",\n textTransform: \"none\",\n border: \"none\",\n \"&.Mui-selected\": {\n backgroundColor: \"#7A8EF1 !important\",\n color: \"#FFFFFF !important\"\n },\n \"&:focus\": {\n outline: \"none\"\n },\n \"&:hover\": {\n border: \"none\"\n }\n },\n socketsMessage: {\n display: \"flex\",\n alignItems: \"center\",\n columnGap: \"15px\",\n backgroundColor: \"#E3E8FF\",\n borderRadius: \"6px\",\n padding: \"12px 22px 12px 20px\",\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"600\",\n fontSize: \"17px\",\n color: \"#2D388D\",\n opacity: \"0\",\n transition: \"all 0.3s ease\"\n },\n socketsInfoIcon: {\n fontSize: \"20px\",\n marginTop: \"1px\"\n },\n switch: {\n \"& .MuiSwitch-thumb\": {\n color: \"#FFFFFF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n \"& .MuiSwitch-track\": {\n backgroundColor: \"#000 !important\"\n }\n }\n },\n aiSwitchActive: {\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#7A8EF13D !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#2D388D\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n }\n },\n switchLabels: {\n justifyContent: \"start\",\n width: \"120px\",\n \"& .MuiFormControlLabel-label\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n color: \"#000000\"\n },\n \"& .MuiSwitch-track\": {\n backgroundColor: \"rgba(0,0,0,0.38)\",\n opacity: \"1\"\n },\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n },\n \"& .Mui-checked\": {\n color: \"rgb(91, 196, 191, 0.5) !important\"\n }\n },\n labelActive: {\n \"& .MuiFormControlLabel-label\": {\n color: \"#CCCCCC\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\"\n }\n },\n checkboxContainer: {\n color: \"#2D388D\",\n width: \"42px\",\n textAlign: \"center\"\n },\n checkbox: {\n color: \"#939393 !important\",\n \"& .MuiSvgIcon-root\": {\n fontSize: \"24px\"\n },\n \"&.Mui-checked\": {\n color: \"#939393 !important\"\n }\n }\n};\n","\"use strict\";\nimport queryString from \"query-string\";\nclass Api {\n constructor() {\n this.handleResponse = (response) => {\n if (response.ok) return response.json();\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n };\n this.get = (path, params = {}, headers = {}) => fetch(`${path}?${queryString.stringify(params, { arrayFormat: \"bracket\" })}`, {\n headers: this.getHeaders(headers)\n }).then((r) => this.handleResponse(r));\n this.post = (path, params = {}, headers = {}) => fetch(`${path}`, {\n headers: this.getHeaders(headers),\n method: \"POST\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r));\n this.put = (path, params = {}, headers = {}) => fetch(`${path}`, {\n headers: this.getHeaders(headers),\n method: \"PUT\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r));\n this.delete = (path, params = {}, headers = {}) => fetch(`${path}`, {\n headers: this.getHeaders(headers),\n method: \"DELETE\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r));\n this.custom_get = (path, params = {}, headers = {}) => fetch(`${path}${queryString.stringify(params, { arrayFormat: \"bracket\" })}`, {\n headers: this.getHeaders(headers)\n }).then((r) => this.handleResponse(r));\n this.getEventOptions = () => this.custom_get(\"/api/calendar/event_options\");\n this.getJobApplications = (id, apiKey) => this.get(`/api/calendly/jobs/${id}/applications`);\n this.getEmailTemplates = () => this.get(\"/api/calendar/email_templates\");\n this.getCalendlyEmailTemplates = () => this.get(\"/api/calendar/email_templates\", { calendly: 1 });\n this.sendInvitations = (id, body) => this.post(`/api/calendly/jobs/${id}/invitations`, body);\n this.addToEvent = (id, body) => this.post(`/api/calendly/jobs/${id}/invitations/add_to_event`, body);\n }\n getHeaders(headers) {\n return Object.assign({}, {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\",\n \"X-api-authenticate\": localStorage.getItem(\"userKey\")\n }, headers);\n }\n}\nexport default new Api();\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n root: {\n display: \"flex\",\n backgroundColor: \"white\",\n flexDirection: \"column\",\n width: \"100%\",\n padding: \"50px 60px 20px 60px\",\n minHeight: 630,\n maxHeight: 630,\n height: 630,\n \"& h4\": {\n marginTop: 0,\n color: \"#004E70\",\n fontSize: 26,\n fontWeight: 700,\n marginBottom: 30\n }\n },\n buttonContainer: {\n marginTop: \"auto\",\n paddingTop: 30,\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"& button\": {\n padding: \"12px 26px\",\n color: \"#FFF\",\n minHeight: 50,\n \"&:last-child\": {\n marginLeft: 12\n }\n },\n \"&.move-z\": {\n marginBottom: -20,\n paddingBottom: 20,\n zIndex: 2,\n background: \"linear-gradient(rgba(255,255,255,0), rgba(255,255,255,0.5), rgba(255,255,255,1), rgba(255,255,255,1))\"\n }\n },\n buttonIcon: {\n fontSize: \"1.7rem\",\n width: \"0.8rem\"\n },\n recContainer: {\n display: \"flex\"\n },\n recImage: {\n borderRadius: \"100%\",\n width: 45,\n height: 45,\n maxHeight: 45,\n maxWidth: 45,\n background: \"#DDDDDD\",\n color: \"#000\",\n fontSize: 16,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n recDetails: {\n marginLeft: 14,\n display: \"flex\",\n flexDirection: \"column\",\n \"& h4\": {\n fontSize: 15,\n color: \"#000000\",\n fontWeight: 400,\n marginBottom: 4\n },\n \"& a\": {\n fontWeight: \"600\",\n color: theme.palette.primary.main,\n textDecoration: \"none\",\n fontSize: 14,\n lineHeight: \"14px\"\n }\n },\n meetingContainer: {\n marginTop: 30,\n paddingTop: 10,\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-start\",\n overflow: \"scroll\",\n marginLeft: \"-1%\",\n marginRight: \"-1%\"\n },\n container: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"31%\",\n maxWidth: \"31%\",\n borderRadius: 6,\n marginBottom: 30,\n marginLeft: \"1%\",\n marginRight: \"1%\",\n boxShadow: \"0px 0px 6px 0px rgba(0,0,0,0.16)\",\n \"&:hover\": {\n cursor: \"pointer\",\n transform: \"translateY(-2px)\",\n boxShadow: \"0px 0px 6px 2px rgba(0,0,0,0.16)\"\n },\n \"&:active\": {\n transform: \"translateY(-1px)\",\n boxShadow: \"0px 0px 6px 0px rgba(0,0,0,0.14)\"\n }\n },\n content: {\n display: \"flex\",\n flexGrow: 1,\n flexDirection: \"column\",\n padding: \"40px 20px\",\n alignItems: \"flex-start\",\n borderRadius: 6,\n borderTopWidth: 6,\n borderStyle: \"solid\",\n borderTopColor: \"#DDD\"\n },\n name: {\n fontSize: 21,\n color: \"#000\",\n userSelect: \"none\"\n },\n details: {\n color: \"#939393\",\n fontSize: 16,\n marginBottom: 8,\n userSelect: \"none\"\n },\n booking: {\n fontWeight: 600,\n color: `${theme.palette.secondary.main} !important`,\n fontSize: 14,\n userSelect: \"none\"\n },\n footer: {\n borderTop: \"1px solid #DDDDDD\",\n padding: \"10px 26px\",\n display: \"flex\",\n justifyContent: \"space-between\"\n },\n copyButton: {\n fontWeight: 400,\n fontSize: 10,\n padding: \"4px 10px !important\"\n },\n editButton: {\n fontWeight: 400,\n border: `1px solid ${theme.palette.secondary.main}`,\n borderRadius: 20,\n fontSize: 10,\n background: \"#FFF\",\n padding: \"4px 10px !important\"\n },\n shadow: {\n boxShadow: \"rgb(0 0 0 / 55%) -4px -33px 15px -45px inset\"\n },\n loading: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"100%\"\n },\n noEvents: {\n color: \"#999\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1\n }\n}));\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n root: {\n display: \"flex\",\n backgroundColor: \"white\",\n flexDirection: \"column\",\n width: \"100%\",\n padding: \"50px 60px\",\n alignItems: \"center\",\n \"& svg\": {\n fontSize: 68,\n marginBottom: 20\n },\n \"& h4\": {\n fontSize: 32,\n color: \"#666666\",\n paddingBottom: 20,\n width: \"100%\",\n textAlign: \"center\",\n borderBottom: \"1px solid #DDDDDD\",\n marginTop: 0,\n marginBottom: 20\n }\n },\n text: {\n fontSize: 20,\n color: \"#000\",\n marginBottom: 40\n }\n}));\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n autocompleteField: {\n flexBasis: \"60%\",\n marginRight: 20\n },\n autoCompleteInput: {\n paddingLeft: 15\n },\n endAdornment: {\n marginRight: 10\n },\n searchContainer: {\n display: \"flex\",\n flexDirection: \"row\"\n },\n inputBase: {\n flexBasis: \"25%\"\n },\n dialogPaper: {\n transform: \"translateY(59px) !important\"\n },\n chipContainer: {\n paddingTop: 14\n },\n chipItem: {\n margin: \"4px 8px 4px 0\",\n color: \"#666\",\n \"& span\": {\n color: \"#666\",\n padding: \"0 16px\",\n fontSize: 12\n }\n },\n table: {\n marginTop: 20,\n width: \"100%\",\n height: \"100%\",\n overflow: \"scroll\",\n display: \"flex\",\n flexDirection: \"column\"\n },\n row: {\n margin: 0,\n display: \"flex\",\n \"& div\": {\n display: \"flex\",\n alignItems: \"center\"\n },\n \"& button\": {\n display: \"block\",\n marginLeft: \"auto\",\n opacity: 0,\n marginRight: 12,\n transition: \"opacity 0.24s ease-in-out\",\n padding: 7,\n \"&:focus\": {\n outline: 0\n }\n },\n \"&:hover button\": {\n opacity: 1\n }\n },\n noApplicants: {\n color: \"#999\",\n display: \"block\",\n marginTop: 7\n },\n tableHeader: {\n fontSize: 16,\n fontWeight: 600,\n paddingBottom: 10,\n paddingTop: 15,\n color: theme.palette.primary.main\n },\n tableLg: {\n width: \"35%\",\n minWidth: \"35%\",\n maxWidth: \"35%\",\n userSelect: \"none\"\n },\n tableMd: {\n width: \"20%\",\n minWidth: \"20%\",\n maxWidth: \"20%\",\n userSelect: \"none\"\n },\n shadow: {\n boxShadow: \"rgb(0 0 0 / 55%) -4px -33px 15px -45px inset\"\n },\n loading: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"100%\",\n padding: \"8px 0\",\n \"& svg\": {\n color: theme.palette.primary.main\n }\n },\n noData: {\n paddingInline: \"10px\",\n textAlign: \"center\"\n }\n}));\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n recContainer: {\n display: \"flex\"\n },\n recImage: {\n borderRadius: \"100%\",\n width: 45,\n height: 45,\n maxHeight: 45,\n maxWidth: 45,\n background: \"#DDDDDD\",\n color: \"#000\",\n fontSize: 16,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n recDetails: {\n marginLeft: 14,\n display: \"flex\",\n flexDirection: \"column\",\n \"& h4\": {\n fontSize: 15,\n color: \"#000000\",\n fontWeight: 400,\n marginBottom: 4\n },\n \"& a\": {\n fontWeight: \"600\",\n color: theme.palette.primary.main,\n textDecoration: \"none\",\n fontSize: 14,\n lineHeight: \"14px\"\n }\n },\n meetingContainer: {\n marginTop: 30,\n paddingTop: 10,\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"flex-start\",\n overflow: \"scroll\",\n marginLeft: \"-1%\",\n marginRight: \"-1%\"\n },\n container: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"31%\",\n maxWidth: \"31%\",\n borderRadius: 6,\n marginBottom: 30,\n marginLeft: \"1%\",\n marginRight: \"1%\",\n boxShadow: \"0px 0px 6px 0px rgba(0,0,0,0.16)\",\n \"&:hover\": {\n cursor: \"pointer\",\n transform: \"translateY(-2px)\",\n boxShadow: \"0px 0px 6px 2px rgba(0,0,0,0.16)\"\n },\n \"&:active\": {\n transform: \"translateY(-1px)\",\n boxShadow: \"0px 0px 6px 0px rgba(0,0,0,0.14)\"\n }\n },\n content: {\n display: \"flex\",\n flexGrow: 1,\n flexDirection: \"column\",\n padding: \"40px 20px\",\n alignItems: \"flex-start\",\n borderRadius: 6,\n borderTopWidth: 6,\n borderStyle: \"solid\",\n borderTopColor: \"#DDD\"\n },\n name: {\n fontSize: 21,\n color: \"#000\",\n userSelect: \"none\"\n },\n details: {\n color: \"#939393\",\n fontSize: 16,\n marginBottom: 8,\n userSelect: \"none\"\n },\n booking: {\n fontWeight: 600,\n color: `${theme.palette.secondary.main} !important`,\n fontSize: 14,\n userSelect: \"none\"\n },\n footer: {\n borderTop: \"1px solid #DDDDDD\",\n padding: \"10px 26px\",\n display: \"flex\",\n justifyContent: \"space-between\"\n },\n copyButton: {\n fontWeight: 400,\n fontSize: 10,\n padding: \"4px 10px !important\"\n },\n editButton: {\n fontWeight: 400,\n border: `1px solid ${theme.palette.secondary.main}`,\n borderRadius: 20,\n fontSize: 10,\n background: \"#FFF\",\n padding: \"4px 10px !important\"\n },\n shadow: {\n boxShadow: \"rgb(0 0 0 / 55%) -4px -33px 15px -45px inset\"\n },\n loading: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"100%\"\n },\n noEvents: {\n color: \"#999\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flex: 1\n }\n}));\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n container: {\n display: \"flex\",\n width: \"100%\",\n height: \"100%\",\n paddingBottom: 8,\n \"& > div\": {\n width: \"50%\",\n display: \"flex\",\n flexDirection: \"column\",\n \"&:first-child\": {\n borderRight: \"1px solid #EBF1F3\",\n zIndex: 3\n }\n }\n },\n templateContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n overflowY: \"scroll\",\n \"& > div\": {\n fontSize: 16,\n padding: \"16px 60px\",\n \"&:hover\": {\n background: \"#F4F8F9\",\n cursor: \"pointer\",\n userSelect: \"none\"\n }\n }\n },\n noTemplates: {\n color: \"#999\",\n paddingRight: \"60px\",\n \"& span\": {\n color: theme.palette.primary.main,\n fontWeight: 600\n }\n },\n noPreview: {\n margin: \"auto\",\n color: \"#cdcdcd\",\n fontWeight: 600,\n fontSize: \"20px\"\n },\n selected: {\n background: \"#EBF1F3\",\n fontWeight: 600,\n color: theme.palette.primary.main\n },\n templateView: {\n overflowY: \"scroll\",\n padding: \"10px 0px 0px 40px\"\n },\n loading: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"100%\",\n padding: \"8px 0\",\n \"& svg\": {\n color: theme.palette.primary.main\n }\n },\n formLabelWrapper: {\n marginTop: 27,\n marginBottom: 8,\n color: \"#939393\",\n fontSize: \"14\",\n display: \"flex\"\n },\n textEditor: {\n borderRadius: 6,\n border: \"1px solid #DDDDDD\",\n overflowY: \"scroll\"\n },\n textEditorToolbar: {\n position: \"sticky\",\n top: 0,\n display: \"flex\",\n flexDirection: \"row\",\n background: \"#DDDDDD\",\n padding: \"10px 15px 6px\",\n \"& .rdw-inline-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\"\n },\n \"& .rdw-list-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\"\n },\n \"& .rdw-text-align-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\"\n },\n \"& .rdw-link-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n \"& .rdw-link-modal\": {\n display: \"grid\",\n position: \"absolute\",\n background: \"lightgrey\",\n padding: \"10px\",\n marginTop: \"1.75rem\",\n \"& label\": {\n padding: \"10px 0\"\n },\n \"& button\": {\n marginRight: \"1rem\"\n },\n \"& #openLinkInNewWindow\": {\n marginRight: \"0.5rem\"\n }\n }\n },\n \"& .rdw-image-wrapper\": {\n flexDirection: \"row\",\n position: \"relative\",\n \"& .rdw-image-modal\": {\n display: \"grid\",\n position: \"absolute\",\n background: \"lightgrey\",\n padding: \"10px\",\n marginTop: \"1.75rem\",\n minWidth: 200,\n \"& label\": {\n padding: \"10px 0\"\n },\n \"& button\": {\n marginRight: \"1rem\"\n },\n \"& .rdw-image-modal-url-input\": {\n width: \"calc(100% - 20px)\"\n },\n \"& .rdw-image-modal-size\": {\n marginTop: 10,\n marginBottom: 10\n },\n \"& .rdw-image-modal-size-input\": {\n width: 60\n }\n }\n },\n \"& .rdw-option-wrapper\": {\n padding: \"5px 5px 5px 5px\",\n height: \"1.75rem\",\n backgroundColor: \"transparent\",\n cursor: \"pointer\"\n },\n \"& .rdw-option-active \": {\n backgroundColor: \"darkgrey\"\n }\n },\n textEditorBody: {\n height: 300,\n padding: 20,\n \"&:hover\": {\n cursor: \"text\"\n },\n \"& ul\": {\n paddingLeft: 20\n },\n \"& li\": {\n listStyle: \"disc\"\n },\n \"& .rdw-center-aligned-block *\": {\n textAlign: \"center !important\"\n },\n \"& .rdw-left-aligned-block *\": {\n textAlign: \"left !important\"\n },\n \"& .rdw-right-aligned-block *\": {\n textAlign: \"right !important\"\n }\n }\n}));\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n recContainer: {\n display: \"flex\"\n },\n recImage: {\n borderRadius: \"100%\",\n width: 45,\n height: 45,\n maxHeight: 45,\n maxWidth: 45,\n background: \"#DDDDDD\",\n color: \"#000\",\n fontSize: 16,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n recDetails: {\n marginLeft: 14,\n display: \"flex\",\n flexDirection: \"column\",\n \"& h4\": {\n fontSize: 15,\n color: \"#000000\",\n fontWeight: 400,\n marginBottom: 4\n },\n \"& a\": {\n fontWeight: \"600\",\n color: theme.palette.primary.main,\n textDecoration: \"none\",\n fontSize: 14,\n lineHeight: \"14px\"\n }\n },\n overviewContainer: {\n display: \"flex\",\n justifyContent: \"space-around\",\n alignItems: \"baseline\",\n paddingTop: \"10%\"\n },\n overviewItem: {\n display: \"flex\",\n flexDirection: \"column\",\n maxWidth: \"26%\",\n minWidth: \"26%\",\n height: \"100%\",\n \"& svg\": {\n color: theme.palette.primary.main,\n height: 36,\n width: 36,\n marginBottom: 14\n }\n },\n overviewTitle: {\n fontSize: 24,\n marginBottom: 8\n },\n overviewDescription: {\n color: \"#939393\",\n fontSize: 18,\n marginBottom: 10\n },\n overviewLink: {\n color: theme.palette.secondary.main,\n fontWeight: 600,\n marginTop: \"auto\",\n \"&:hover\": {\n cursor: \"pointer\",\n userSelect: \"none\"\n }\n }\n}));\n","\"use strict\";\nimport Modal from \"./Modal\";\nexport default Modal;\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n root: {\n display: \"flex\",\n backgroundColor: \"white\",\n flexDirection: \"column\",\n width: \"100%\",\n padding: \"50px 60px 20px 60px\",\n minHeight: 630,\n maxHeight: 630,\n height: 630,\n \"& h4\": {\n marginTop: 0,\n color: \"#004E70\",\n fontSize: 26,\n fontWeight: 700,\n marginBottom: 30\n }\n },\n buttonContainer: {\n marginTop: \"auto\",\n paddingTop: 30,\n display: \"flex\",\n justifyContent: \"flex-end\",\n \"& button\": {\n padding: \"12px 26px\",\n color: \"#FFF\",\n minHeight: 50,\n marginLeft: 12\n },\n \"&.move-z\": {\n marginBottom: -20,\n paddingBottom: 20,\n zIndex: 2,\n background: \"linear-gradient(rgba(255,255,255,0), rgba(255,255,255,0.5), rgba(255,255,255,1), rgba(255,255,255,1))\"\n }\n },\n progressBar: {\n transition: \"width 0.2s ease-in-out\",\n height: 8,\n backgroundColor: theme.palette.secondary.main\n }\n}));\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n root: {\n backgroundColor: \"#FFF\"\n },\n container: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n padding: \"30px 0\",\n margin: \"30px 0\",\n position: \"relative\",\n fontSize: 16,\n \"&:not(:last-child) > div:after\": {\n content: '\"\"',\n display: \"block\",\n position: \"absolute\",\n width: \"200%\",\n height: 1,\n backgroundColor: \"#DDD\",\n bottom: 0\n },\n \"&:last-child > div\": {\n marginBottom: 5\n }\n },\n detailsTop: {\n display: \"flex\",\n alignItems: \"center\",\n \"& > div\": {\n flexBasis: \"25%\"\n }\n },\n date: {\n display: \"flex\",\n maxWidth: \"30%\"\n },\n dateDot: {\n width: 26,\n height: 26,\n backgroundColor: theme.palette.primary.main,\n borderRadius: \"100%\",\n marginRight: 20\n },\n details: {\n fontSize: 15,\n \"& h4\": {\n marginTop: 0,\n fontSize: 15\n },\n \"& > div\": {\n display: \"flex\",\n \"& span:last-child\": {\n marginLeft: 6,\n fontWeight: 600\n }\n }\n },\n detailsButton: {\n display: \"flex\",\n cursor: \"pointer\",\n userSelect: \"none\"\n },\n detailsBottom: {\n display: \"flex\",\n marginTop: 20,\n \"& > div\": {\n flexBasis: \"25%\",\n \"&:first-child\": {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"0 6% 0 20px\",\n \"& button\": {\n margin: \"6px 15px\"\n }\n },\n \"& > span\": {\n marginTop: 40,\n display: \"block\",\n color: \"#939393\"\n }\n }\n },\n buttonRedLight: {\n padding: \"14px 30px\",\n background: theme.palette.error.light,\n color: theme.palette.error.main,\n \"&:hover\": {\n background: \"#fffafa\"\n }\n },\n divider: {\n height: 1,\n width: \"100%\",\n backgroundColor: \"#E5E7EB\",\n margin: \"20px 0\",\n \"& ~ button\": {\n margin: \"6px 0 !important\"\n }\n },\n buttonOutline: {\n backgroundColor: \"#FFF\",\n border: \"1px solid #E5E7EB\",\n color: \"#666666\",\n \"&:hover\": {\n backgroundColor: \"#fbfbfb\"\n }\n },\n expandDetailItem: {\n paddingBottom: 15,\n \"& div\": {\n color: \"#939393\",\n marginBottom: 4\n }\n }\n}));\n","\"use strict\";\nexport const TYPES = [\"Upcoming\", \"Past\", \"Date Range\"];\nexport const FILTERS = [{\n key: \"status\",\n name: \"Status\",\n default_text: \"Active\"\n}];\n","\"use strict\";\nimport ScheduledEvents from \"./ScheduledEvents\";\nexport default ScheduledEvents;\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core\";\nexport default makeStyles((theme) => ({\n root: {\n backgroundColor: \"#FFF\",\n borderRadius: 8,\n padding: \"70px 80px\",\n paddingBottom: 0,\n height: \"88vh\",\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\"\n },\n header: {\n display: \"flex\",\n justifyContent: \"space-between\",\n \"& h4\": {\n fontSize: 34,\n color: \"#666666\",\n fontWeight: \"700\",\n marginTop: 0\n }\n },\n actions: {\n display: \"flex\",\n fontSize: 16,\n alignItems: \"flex-end\",\n marginTop: 30,\n borderBottom: \"1px solid #EEEEEE\"\n },\n type: {\n color: \"#DDDDDD\",\n position: \"relative\",\n display: \"flex\",\n alignItems: \"center\",\n height: 60,\n columnGap: 40,\n \"& > span\": {\n display: \"flex\",\n alignItems: \"center\",\n cursor: \"pointer\",\n \"&:hover\": {\n userSelect: \"none\"\n }\n }\n },\n datePopover: {\n marginTop: 10,\n padding: 20,\n display: \"flex\",\n alignItems: \"center\",\n flexDirection: \"column\",\n \"& .DayPicker-Weekday abbr\": {\n fontSize: \"0.85rem\",\n color: \"#939393\",\n textDecoration: \"none\"\n },\n \"& .DayPicker-Caption\": {\n color: \"#004665\",\n fontWeight: \"600\",\n marginBottom: 15,\n fontSize: 17\n },\n \"& .DayPicker-Day\": {\n borderRadius: 100,\n padding: 0,\n border: 0,\n width: 40,\n height: 40\n },\n \" & .DayPicker-Month\": {\n display: \"block !important\"\n },\n \"& .DayPicker-Day--event\": {\n backgroundColor: \"#EEFBFB\"\n },\n \"& .DayPicker-Day--highlighted\": {\n backgroundColor: \"#EEFBFB\",\n color: \"#15C7C0\"\n },\n \"& .DayPicker-Day--today\": {\n color: \"black\"\n },\n \"& .DayPicker-Day--selected\": {\n backgroundColor: \"#15C7C0 !important\",\n color: \"white !important\"\n },\n \"& .DayPicker-wrapper\": {\n paddingTop: \"0.5rem\",\n fontSize: \"0.85rem\",\n paddingBottom: \"0\",\n \"& .DayPicker-NavButton\": {\n width: \"1rem\",\n height: \"1rem\"\n },\n \"& .DayPicker-Day--disabled\": {\n backgroundColor: \"white\",\n pointerEvents: \"none\"\n }\n },\n \"& .DayPicker-Day--outside\": {\n opacity: 0\n },\n \"& .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside)\": {\n backgroundColor: `${theme.palette.secondary.light} !important`,\n color: `${theme.palette.secondary.main} !important`\n }\n },\n dateSelect: {\n color: \"#084d6d\",\n borderWidth: 2,\n borderStyle: \"solid\",\n borderColor: \"#E5E7EB\",\n padding: \"6px 16px\",\n fontSize: \"14px\",\n fontWeight: 600,\n marginLeft: \"-12px\",\n borderRadius: 10,\n letterSpacing: \"0.1px\",\n opacity: 0,\n transition: \"opacity 0.25s cubic-bezier(.6,.36,.25,1), transform 0.25s cubic-bezier(.6,.36,.25,1)\",\n transform: \"translateX(-30px)\",\n \"& em\": {\n color: \"#babdc3\"\n },\n \"&.visible\": {\n transform: \"translateX(0px)\",\n opacity: 1\n },\n \"&.active\": {\n borderColor: theme.palette.secondary.main\n },\n \"&:hover\": {\n borderColor: \"#d9dce3\",\n cursor: \"pointer\",\n userSelect: \"none\"\n }\n },\n typeUnderline: {\n position: \"absolute\",\n height: 3,\n borderRadius: 3,\n backgroundColor: theme.palette.secondary.main,\n bottom: -1.5,\n transition: \"left 0.25s cubic-bezier(.6,.36,.25,1), width 0.25s cubic-bezier(.6,.36,.25,1)\"\n },\n activeType: {\n color: theme.palette.primary.main,\n fontWeight: 600\n },\n moreActions: {\n marginLeft: \"auto\",\n marginBottom: 6,\n \"& button\": {\n fontWeight: 400,\n fontSize: 17,\n \"& svg\": {\n marginleft: 4,\n width: \"1.2rem\"\n }\n }\n },\n eventPagination: {\n marginTop: \"auto\",\n alignSelf: \"flex-end\",\n paddingRight: 90,\n paddingBottom: 90,\n position: \"absolute\",\n bottom: 0,\n right: 0,\n zIndex: 10,\n \"& button\": {\n \"&:last-child\": {\n marginLeft: 15\n },\n \"& svg\": {\n width: \"0.8em\",\n height: \"0.8em\"\n }\n }\n },\n eventHeader: {\n fontWeight: 900,\n fontSize: 19,\n margin: \"60px 0 -15px\"\n },\n noEvents: {\n marginTop: 30,\n color: \"#999\",\n fontSize: 20\n },\n eventContainer: {\n overflowX: \"hidden\",\n overflowY: \"scroll\",\n flexBasis: \"100%\"\n },\n filters: {\n marginTop: 20,\n display: \"flex\",\n \"& > div\": {\n marginRight: 40,\n cursor: \"pointer\",\n userSelect: \"none\",\n \"& > span\": {\n color: \"#939393\"\n },\n \"& > div\": {\n color: theme.palette.secondary.main,\n marginTop: 6\n }\n }\n },\n loading: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n height: \"100%\",\n padding: \"8px 0\"\n },\n filterWrapper: {\n \"& .MuiInputBase-root\": {\n height: \"3rem\",\n borderRadius: \"0.3rem\",\n border: \"1px solid grey\"\n },\n \"& .MuiInput-underline:before\": {\n borderBottom: \"none !important\"\n },\n \"& .MuiInput-underline:after\": {\n border: \"none !important\"\n }\n },\n badAPIModalInner: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: \"500px\",\n height: \"400px\",\n backgroundColor: \"white\",\n borderRadius: \"8px\",\n boxShadow: \"0px 0px 16px rgba(0, 0, 0, 0.2)\",\n \"& h1\": {\n fontSize: \"26px\",\n color: \"rgb(102, 102, 102)\",\n marginTop: \"0.5rem\"\n }\n }\n}));\n","\"use strict\";\nimport { theme } from \"../ThemeContext/ThemeObject\";\nexport const classes = {\n subWidget: {\n flex: \"40%\",\n borderRadius: \"3px\",\n height: \"120px\",\n minWidth: \"524px\"\n },\n widgetBlockContainer: {\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n columnGap: \"50px\"\n },\n widgetBlock: {\n border: \"1px solid #E3E3E3\",\n borderRadius: \"3px\",\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n paddingLeft: \"4%\",\n width: \"50%\",\n height: \"100%\"\n },\n widgetBlockText: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"flex-start\",\n rowGap: \"3px\",\n marginLeft: \"25px\"\n },\n blockCount: {\n fontSize: \"24px\",\n color: theme.palette.primary.main,\n fontWeight: \"bold\"\n },\n blockTitle: {\n fontSize: \"16px\",\n fontWeight: \"600\",\n color: \"#333333\"\n },\n widgetBlockIcon: {\n backgroundColor: \"#EDF2F5\",\n padding: \"12px\",\n borderRadius: \"16px\",\n \"& svg\": {\n color: theme.palette.primary.main,\n fontSize: \"28px\"\n }\n }\n};\n","\"use strict\";\nfunction detectOperator(group) {\n if (group.includes(\"AND\")) {\n return \"AND\";\n }\n return \"OR\";\n}\nexport const booleanQueryToEditableArray = (booleanQuery) => {\n const baseOperatorsRegex = /\\b(AND|OR|NOT)\\b/g;\n const parenthesisContentRegex = new RegExp(\"(?<=\\\\().*?(?=\\\\))\", \"g\");\n const matches = [...booleanQuery.match(parenthesisContentRegex) || []];\n if (matches.length === 0) {\n throw new Error(\"No valid groups found in the booleanQuery string\");\n }\n const baseOperators = [];\n baseOperators.push(\"ROOT\");\n const onlyBaseOperators = booleanQuery.replace(parenthesisContentRegex, \"\");\n let match = baseOperatorsRegex.exec(onlyBaseOperators);\n while (match !== null) {\n baseOperators.push(match[0]);\n match = baseOperatorsRegex.exec(onlyBaseOperators);\n }\n return matches.map((match2, index) => {\n const group = match2.trim();\n const operator = detectOperator(group);\n const queryValues = group.split(new RegExp(`\\\\b${operator}\\\\b`, \"g\")).map((value) => value.trim());\n return {\n id: index,\n baseOperator: baseOperators[index].trim(),\n operator,\n queryValues\n };\n });\n};\nexport const editableBooleanArrayToBooleanQuery = (editableBooleanArray) => {\n return editableBooleanArray.map((obj, index) => {\n const queryPart = `(${obj.queryValues.join(` ${obj.operator} `)})`;\n if (index === 0) {\n return queryPart;\n }\n return `${obj.baseOperator} ${queryPart}`;\n }).join(\" \");\n};\n","\"use strict\";\nimport { searchInput } from \"../../NewUI/shared/styleClasses\";\nexport const classes = {\n searchContainer: {\n width: \"100%\",\n position: \"relative\"\n },\n searchInput,\n searchAdornment: {\n padding: \"0px 0px 0px 14px\"\n },\n editBooleanIcon: {\n zIndex: 2,\n cursor: \"pointer\",\n border: \"1px solid rgba(0, 0, 0, 0.26)\",\n borderRadius: \"0px 6px 6px 0px\",\n backgroundColor: \"#FFFFFF\",\n width: \"69px\",\n height: \"59.5px\",\n transform: \"translate(14px, -2.5px)\",\n \"& svg\": {\n fontSize: \"30px\",\n color: \"#084D6D\"\n },\n \"&:hover\": {\n backgroundColor: \"rgb(245 245 245)\",\n borderColor: \"#DADEE0\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n tlpMatch: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: 700,\n color: \"#4E4EC7\",\n backgroundColor: \"#dfdff6\",\n width: \"200px\",\n borderRadius: \"4.8px 0px 0px 4.8px\",\n height: \"57.5px\",\n textTransform: \"none\",\n zIndex: 2,\n transform: \"translate(-13px, -2.5px)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"#e6e6f7\"\n },\n \"&:focus\": {\n outline: \"none\",\n backgroundColor: \"#e6e6f7\"\n }\n },\n searchTooltip: {\n position: \"absolute\",\n top: \"-22px\",\n left: \"8px\",\n backgroundColor: \"#FFFFFF\",\n color: \"#000000\",\n border: \"1px solid #DDDDDD\",\n borderRadius: \"6px\",\n padding: \"4px 10px\",\n fontSize: \"14px\",\n fontFamily: \"Source Sans Pro\"\n },\n booleanEditorContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n rowGap: \"36px\",\n padding: \"0 0 20px 20px\"\n },\n booleanEditorRow: {\n display: \"flex\",\n position: \"relative\",\n border: \"2px solid #DDDDDD\",\n borderRadius: \"6px\",\n padding: \"10px\"\n },\n booleanEditorValuesContainer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n height: \"100%\",\n width: \"100%\",\n gap: \"20px\"\n },\n booleanEditorValue: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: 700,\n color: \"#AFBCFF\",\n backgroundColor: \"#2D388D\",\n height: \"33px\",\n width: \"fit-content\",\n borderRadius: \"28px\",\n display: \"flex\",\n alignItems: \"center\",\n padding: \"0 2px 0 16px\"\n },\n booleanEditorRemoveValueButton: {\n color: \"#AFBCFF\",\n \"& svg\": {\n fontSize: \"16px\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n booleanEditorAddButton: {\n backgroundColor: \"#FFFFFF\",\n color: \"#2D388D\",\n border: \"1px solid #2D388D\",\n borderRadius: \"6px\",\n width: \"50px\",\n height: \"33px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n booleanEditorRemoveRowButtonContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\"\n },\n booleanEditorRemoveRowButton: {\n color: \"#2D388D\"\n },\n booleanEditorOperatorContainer: {\n position: \"absolute\",\n left: \"-12px\",\n top: \"-26px\"\n },\n booleanEditorOperatorGroup: {\n \"& .MuiToggleButton-root.Mui-selected\": {\n backgroundColor: \"#2D388D\",\n color: \"#AFBCFF\",\n \"&:hover\": {\n backgroundColor: \"#2D388D\"\n }\n }\n },\n booleanEditorOperatorButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: 700,\n color: \"#BBBBBB\",\n backgroundColor: \"#FFFFFF\",\n height: \"30px\",\n width: \"45px\",\n display: \"flex\",\n alignItems: \"center\",\n padding: \"0 6px 0 6px\",\n borderRadius: \"6px\",\n \"&:hover\": {\n backgroundColor: \"#EFEFEF\",\n color: \"#AFBCFF\"\n }\n },\n booleanEditorValueInput: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: 700,\n color: \"#2D388D\",\n backgroundColor: \"#FFFFFF\",\n height: \"30px\",\n minWidth: \"40px\",\n display: \"flex\",\n alignItems: \"center\",\n paddingLeft: \"12px\",\n borderRadius: \"28px\",\n border: \"1px solid #2D388D\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../ThemeContext/ThemeObject\";\nexport function getStatusColor(priority) {\n switch (priority) {\n case \"Sent\":\n return [theme.palette.success.main, theme.palette.opaque.green];\n case \"Failed\":\n return [theme.palette.error.main, theme.palette.opaque.red];\n case \"Delivered\":\n return [theme.palette.secondary.medium, theme.palette.opaque.blue];\n case \"Not Yet Delivered\":\n return [theme.palette.secondary.yellow, theme.palette.opaque.yellow];\n case \"Opened\":\n return [theme.palette.secondary.purple, theme.palette.opaque.purple];\n case \"Clicked\":\n return [theme.palette.secondary.pink, theme.palette.opaque.pink];\n case \"Bounced\":\n return [theme.palette.error.main, theme.palette.opaque.red];\n case \"Unsubscribed\":\n return [theme.palette.secondary.darkBlue, theme.palette.opaque.darkBlue];\n default:\n return [theme.palette.success.main, theme.palette.opaque.green];\n }\n}\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { searchTableColumns, actionDrawerModals } from \"./config\";\nimport { initialSearchFilters } from \"./AISearch/SearchFilters\";\nimport {\n addSelected,\n removeSelected,\n addAllPageItems,\n removeAllPageItems\n} from \"../NewUI/Components/GenericTable/tableHelper\";\nimport moment from \"moment\";\nexport const initialEngageState = {\n selectedTab: 0,\n indicatorWidth: 0,\n snackbarState: {\n message: \"\",\n state: \"success\"\n },\n searchQuery: \"\",\n booleanQuery: null,\n searchType: \"none\",\n searchSettings: {\n page: 1,\n limit: 10,\n sort: \"last_applied_on\",\n sort_order: \"desc\"\n },\n searchFilters: {},\n tempSearchFilters: initialSearchFilters,\n searchTable: {\n canScroll: [false, true],\n tableHovered: false,\n density: \"Default\",\n columns: searchTableColumns,\n selectedItemIds: [],\n selectedItems: [],\n actions: {\n selectedItem: null,\n anchorEl: null,\n isOpen: {\n addNote: false,\n viewAttachments: false,\n moreOptions: false,\n email: false,\n candidatePool: false\n }\n },\n modalsOpen: actionDrawerModals.reduce((acc, { id }) => {\n acc[id] = false;\n return __spreadProps(__spreadValues({}, acc), { exportCsv: false, addSearch: false, candidatePool: false });\n }, {})\n },\n dateFieldRange: {\n from: null,\n to: null\n },\n tlpMatchModalState: {\n open: false,\n step: \"select\",\n isEditing: false,\n editableBooleanQuery: \"\",\n selectedTLP: {\n id: -1,\n name: \"\",\n html: \"\"\n },\n jobsList: {\n data: [],\n isLoading: false\n }\n }\n};\nexport const engageReducer = (state, action) => {\n switch (action.type) {\n case \"SET_SELECTED_TAB\":\n return __spreadProps(__spreadValues({}, state), {\n selectedTab: action.payload\n });\n case \"SET_INDICATOR_WIDTH\": {\n if (action.payload === void 0) {\n return state;\n } else {\n return __spreadProps(__spreadValues({}, state), {\n indicatorWidth: action.payload - (state.indicatorWidth ? 32 : 37)\n });\n }\n }\n case \"SET_SNACKBAR\":\n return __spreadProps(__spreadValues({}, state), {\n snackbarState: action.payload\n });\n case \"SET_SEARCH_QUERY\":\n return __spreadProps(__spreadValues({}, state), {\n searchQuery: action.payload\n });\n case \"EDIT_BOOLEAN_QUERY\":\n return __spreadProps(__spreadValues({}, state), {\n tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n isEditing: true,\n open: true,\n editableBooleanQuery: state.booleanQuery,\n step: \"edit\"\n })\n });\n case \"CANCEL_EDIT_BOOLEAN_QUERY\":\n return __spreadProps(__spreadValues({}, state), {\n tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n isEditing: false,\n open: false,\n editableBooleanQuery: \"\"\n })\n });\n case \"SET_EDITABLE_BOOLEAN_QUERY\":\n return __spreadProps(__spreadValues({}, state), {\n tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n editableBooleanQuery: action.payload\n })\n });\n case \"CONFIRM_STRING_MATCH_SEARCH\":\n return __spreadProps(__spreadValues({}, state), {\n booleanQuery: action.payload,\n searchType: \"string_match\"\n });\n case \"CONFIRM_EDIT_BOOLEAN_QUERY\":\n return __spreadProps(__spreadValues({}, state), {\n booleanQuery: action.payload,\n searchType: state.tlpMatchModalState.isEditing ? state.searchType : \"tlp_match\",\n tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n open: false,\n isEditing: false\n })\n });\n case \"CLEAR_SEARCH\":\n return __spreadProps(__spreadValues({}, state), {\n booleanQuery: null,\n searchType: \"none\",\n searchQuery: \"\"\n });\n case \"SET_CAN_SCROLL\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n canScroll: action.payload\n })\n });\n case \"SET_TABLE_HOVERED\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n tableHovered: action.payload\n })\n });\n case \"OPEN_TLP_MATCH_MODAL\":\n return __spreadProps(__spreadValues({}, state), {\n tlpMatchModalState: __spreadProps(__spreadValues({}, initialEngageState.tlpMatchModalState), {\n step: \"select\",\n open: true\n })\n });\n case \"CLOSE_TLP_MATCH_MODAL\":\n return __spreadProps(__spreadValues({}, state), {\n tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n open: false\n })\n });\n case \"SET_TLP_MATCH_MODAL_STEP\":\n return __spreadProps(__spreadValues({}, state), {\n tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n step: action.payload\n })\n });\n case \"SET_JOBS_LIST_LOADING\":\n return __spreadProps(__spreadValues({}, state), {\n tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n jobsList: __spreadProps(__spreadValues({}, state.tlpMatchModalState.jobsList), {\n isLoading: true\n })\n })\n });\n case \"SET_JOBS_LIST\":\n return __spreadProps(__spreadValues({}, state), {\n tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n jobsList: __spreadProps(__spreadValues({}, state.tlpMatchModalState.jobsList), {\n isLoading: false,\n data: action.payload\n })\n })\n });\n case \"SET_SELECTED_TLP\":\n return __spreadProps(__spreadValues({}, state), {\n tlpMatchModalState: __spreadProps(__spreadValues({}, state.tlpMatchModalState), {\n selectedTLP: action.payload\n })\n });\n case \"ADD_SELECTED_ITEM\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadValues(__spreadValues({}, state.searchTable), addSelected(\n state.searchTable.selectedItems,\n state.searchTable.selectedItemIds,\n action.payload\n ))\n });\n case \"REMOVE_SELECTED_ITEM\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadValues(__spreadValues({}, state.searchTable), removeSelected(\n state.searchTable.selectedItems,\n state.searchTable.selectedItemIds,\n action.payload\n ))\n });\n case \"ADD_ALL_PAGE_ITEMS\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadValues(__spreadValues({}, state.searchTable), addAllPageItems(state.searchTable.selectedItems, action.payload))\n });\n case \"REMOVE_ALL_SELECTED_ITEMS\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n selectedItemIds: [],\n selectedItems: []\n })\n });\n case \"REMOVE_ALL_PAGE_ITEMS\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadValues(__spreadValues({}, state.searchTable), removeAllPageItems(state.searchTable.selectedItems, action.payload))\n });\n case \"SELECT_ALL_ITEMS\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n selectedItemIds: action.payload\n })\n });\n case \"SET_COUNTRIES_DATA\":\n return __spreadProps(__spreadValues({}, state), {\n countriesData: action.payload\n });\n case \"SET_DENSITY\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n density: action.payload\n })\n });\n case \"SET_SORT\":\n return __spreadProps(__spreadValues({}, state), {\n searchSettings: __spreadProps(__spreadValues({}, state.searchSettings), {\n sort: action.payload.sortBy,\n sort_order: action.payload.sortOrder\n })\n });\n case \"SET_COLUMNS\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n columns: action.payload\n })\n });\n case \"SET_PAGE\":\n return __spreadProps(__spreadValues({}, state), {\n searchSettings: __spreadProps(__spreadValues({}, state.searchSettings), {\n page: action.payload\n })\n });\n case \"SET_LIMIT\":\n return __spreadProps(__spreadValues({}, state), {\n searchSettings: __spreadProps(__spreadValues({}, state.searchSettings), {\n limit: action.payload\n })\n });\n case \"SET_TEMP_FILTERS\":\n return __spreadProps(__spreadValues({}, state), {\n tempSearchFilters: __spreadValues(__spreadValues({}, state.tempSearchFilters), action.payload)\n });\n case \"SET_DATE_RANGE_TEMP_FILTER\":\n return __spreadProps(__spreadValues({}, state), {\n tempSearchFilters: __spreadProps(__spreadValues({}, state.tempSearchFilters), {\n date1: action.payload.from,\n date2: action.payload.to\n })\n });\n case \"SET_DATE_FIELD_RANGE\":\n return __spreadProps(__spreadValues({}, state), {\n dateFieldRange: action.payload\n });\n case \"SET_FILTERS\": {\n const convertedFilters = Object.entries(state.tempSearchFilters).reduce(\n (acc, [key, value]) => {\n if (Array.isArray(value)) {\n if (value.length > 0) {\n if (key === \"country\" || key === \"state\") {\n acc[key] = value.map((f) => f.name);\n } else {\n acc[key] = value[0].id ? value.map((f) => f.id) : value;\n }\n }\n } else if (value) {\n if (key === \"date1\" || key === \"date2\") {\n acc[key] = moment(value).format(\"YYYY-MM-DD\");\n } else {\n acc[key] = value;\n }\n }\n return acc;\n },\n {}\n );\n return __spreadProps(__spreadValues({}, state), {\n searchFilters: convertedFilters\n });\n }\n case \"RESET_FILTERS\":\n return __spreadProps(__spreadValues({}, state), {\n searchFilters: {},\n tempSearchFilters: initialSearchFilters,\n dateFieldRange: {\n from: null,\n to: null\n }\n });\n case \"SELECT_ACTION_ITEM\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n actions: __spreadProps(__spreadValues({}, state.searchTable.actions), {\n selectedItem: action.payload.item,\n anchorEl: action.payload.anchorEl,\n isOpen: __spreadProps(__spreadValues({}, state.searchTable.actions.isOpen), {\n [action.payload.name]: true\n })\n })\n })\n });\n case \"CLOSE_ACTION_ITEM\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n actions: __spreadProps(__spreadValues({}, state.searchTable.actions), {\n selectedItem: null,\n isOpen: __spreadProps(__spreadValues({}, state.searchTable.actions.isOpen), {\n [action.payload]: false\n })\n })\n })\n });\n case \"SET_ACTION_MODAL_OPEN\":\n return __spreadProps(__spreadValues({}, state), {\n searchTable: __spreadProps(__spreadValues({}, state.searchTable), {\n modalsOpen: __spreadProps(__spreadValues({}, state.searchTable.modalsOpen), {\n [action.payload.name]: action.payload.isOpen\n })\n })\n });\n default:\n return state;\n }\n};\n","\"use strict\";\nimport { theme } from \"../ThemeContext/ThemeObject\";\nexport const classes = {\n pageContainer: {\n fontFamily: theme.typography.fontFamily,\n backgroundColor: \"#FFFFFF\",\n padding: \"40px\"\n },\n pageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n padding: \"0px 16px 26px 16px\",\n \"& h1\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n fontSize: \"38px\",\n color: \"#666666\",\n marginTop: \"0\"\n }\n },\n tabsContainer: {\n borderBottom: 1,\n borderColor: \"#EEEEEE\",\n margin: \"25px 0\"\n },\n tabs: {\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n letterSpacing: \"0\",\n color: \"#939393\",\n textTransform: \"none\",\n minWidth: \"unset\",\n \"&:hover\": {\n color: \"#737373\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n \"& button.Mui-selected\": {\n fontWeight: \"600\",\n color: \"#084D6D\"\n }\n },\n tabIndicator: {\n backgroundColor: \"#5BC4BF\",\n margin: \"0 16px\"\n },\n searchAndFiltersRow: {\n display: \"flex\",\n alignItems: \"flex-end\",\n justifyContent: \"space-between\",\n paddingBottom: \"30px\",\n columnGap: \"17px\"\n },\n tlpMatchButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: 700,\n color: \"#4E4EC7\",\n backgroundColor: \"rgba(78, 78, 199, 0.18)\",\n width: \"146px\",\n borderRadius: \"6px\",\n height: \"60px\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: \"rgba(78, 78, 199, 0.14)\"\n },\n \"&:focus\": {\n outline: \"none\",\n backgroundColor: \"rgba(78, 78, 199, 0.14)\"\n }\n },\n modal: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"60px\",\n maxWidth: \"1100px\",\n width: \"100%\",\n height: \"94vh\",\n maxHeight: \"844px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n modalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"38px\",\n fontWeight: \"700\",\n color: \"#2D388D\",\n width: \"100%\",\n paddingBottom: \"40px\"\n },\n modalFieldSubHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n marginBottom: \"16px\"\n },\n modalRow: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\"\n },\n modalMainContentContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n width: \"100%\",\n height: \"100%\",\n rowGap: \"40px\",\n overflowY: \"auto\"\n },\n autocomplete: {\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"6px\",\n backgroundColor: \"#FFFFFF\",\n color: \"#333333\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"18px\",\n padding: \"0 10px 0 10px !important\",\n height: \"42px\",\n width: \"80%\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n textTransform: \"capitalize\",\n \"&:focus\": {\n borderColor: \"#2D388D\"\n }\n },\n \"& .MuiOutlineInput-root:focus\": {\n backgroundColor: \"#ffffff\",\n borderRadius: \"6px\"\n },\n \"& fieldset\": {\n display: \"none\"\n },\n \"& .MuiAutocomplete-popupIndicator\": {\n color: \"#AAAAAA\",\n marginRight: \"10px\",\n transition: \"all 0.16s ease-in-out\"\n }\n },\n selectJobPlaceholder: {\n height: \"100%\",\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"22px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n \"& span\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"20px\",\n fontWeight: \"700\",\n color: \"#AAAAAA\",\n paddingBottom: \"100px\"\n }\n },\n editBooleanStepHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"26px\",\n fontWeight: \"600\",\n color: \"#2D388D\",\n paddingLeft: \"20px\",\n width: \"100%\"\n },\n filtersContainer: {\n paddingTop: \"4px\",\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n rowGap: \"20px\"\n },\n toggleButton: {\n padding: \"0px 14px !important\",\n fontWeight: \"700\",\n fontFamily: \"Source Sans Pro\",\n color: \"#AAAAAA\",\n fontSize: \"12px\",\n borderRadius: \"12px\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\",\n \"&.Mui-selected\": {\n backgroundColor: `${theme.palette.primary.main} !important`,\n color: `${theme.palette.action.main} !important`\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n bigToggleButton: {\n fontSize: \"18px\",\n borderRadius: \"18px\"\n },\n widgetBlockIcon: {\n backgroundColor: \"#EDF2F5\",\n padding: \"12px\",\n borderRadius: \"16px\",\n \"& svg\": {\n color: theme.palette.primary.main,\n fontSize: \"28px\"\n }\n },\n blockCount: {\n fontSize: \"19px\",\n color: theme.palette.primary.main,\n fontWeight: \"bold\"\n },\n rowWidget: {\n border: \"1px solid #E3E3E3\",\n borderRadius: \"3px\",\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n paddingLeft: \"4%\"\n },\n widgetTextSubTitle: {\n fontSize: \"16px\",\n color: theme.palette.primary.main\n },\n widgetContentGridWrapper: {\n margin: \"auto\",\n padding: \"0 4% 0 8%\"\n },\n statusStatsWrapper: {\n margin: \"0.5rem\",\n padding: \"1.5rem\"\n },\n statusStatsWrapperMetrics: {\n fontSize: \"18px\",\n fontWeight: \"bold\"\n }\n};\n","\"use strict\";\nconst BASE_URL = window.location.origin;\nimport { stringify } from \"query-string\";\nclass Api {\n constructor() {\n // handleResponse = (response) => {\n // if (response.ok) return response.text().then((data) => {\n // resolve(data ? JSON.parse(data) : {})\n // });\n // return response.text().then((error) => {\n // error.code = response.status;\n // throw error;\n // });\n // }\n this.get = (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}?${stringify(params || {})}`, {\n headers: this.getHeaders(headers)\n }).then((response) => {\n return response.text();\n }).then((data) => {\n return data ? JSON.parse(data) : {};\n });\n this.post = (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers),\n method: \"POST\",\n body: JSON.stringify(params)\n }).then((response) => {\n return response.text();\n }).then((data) => {\n return data ? JSON.parse(data) : {};\n });\n this.put = (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers),\n method: \"PUT\",\n body: JSON.stringify(params)\n }).then((response) => {\n return response.text();\n }).then((data) => {\n return data ? JSON.parse(data) : {};\n });\n this.postLogin = (params) => this.post(`/api/v4/login`, params);\n this.sendTwoFactor = () => this.post(`/api/v4/two_factor_auth/send_2fa_code`);\n this.postTwoFactor = (param) => this.get(`/api/v4/two_factor_auth/authorize`, param);\n this.postResetPassword = (params) => this.post(`/api/v4/reset_password`, params);\n this.postSSOLogin = (params) => this.post(`/api/v4/sso`, params);\n this.putUpdatePassword = (token, params) => this.put(`/api/v4/update_password/${token}`, params);\n }\n getHeaders(headers) {\n return Object.assign({}, {\n \"Content-Type\": \"application/json\"\n }, headers);\n }\n}\nexport default new Api();\n","\"use strict\";\nimport { theme } from \"../ThemeContext/ThemeObject\";\nexport const classes = {\n pageContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100vw\",\n height: \"100dvh\",\n overflow: \"hidden\",\n fontFamily: \"Source Sans Pro\"\n },\n loginFormContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"40vw\",\n \"@media screen and (max-width: 1024px)\": {\n width: \"80%\",\n height: \"50%\",\n position: \"absolute\",\n bottom: \"0px\",\n background: \"white\",\n borderRadius: \"25vw 0 25vw 0\",\n zIndex: \"1\",\n \"@media screen and (max-width: 430px)\": {\n width: \"100%\",\n \"@media screen and (max-height: 700px)\": {\n height: \"60%\"\n }\n }\n }\n },\n loginForm: {\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"60%\",\n \"& h1\": {\n fontSize: \"38px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n marginBottom: \"28px\"\n },\n \"@media screen and (max-width: 1024px)\": {\n width: \"50%\",\n height: \"90%\",\n \"& h1\": {\n fontSize: \"48px\"\n },\n \"@media screen and (max-width: 430px)\": {\n height: \"85%\",\n width: \"65%\",\n fontSize: \"14px\",\n \"& h1\": {\n fontSize: \"16px\",\n marginBottom: \"14px\"\n }\n }\n }\n },\n description: {\n display: \"block\",\n marginTop: \"20px\",\n marginBottom: \"20px\",\n \"& > span\": {\n color: \"#999\"\n }\n },\n errorMessage: {\n position: \"relative\",\n fontSize: \"16px\",\n fontWeight: \"600\",\n color: theme.palette.error.main,\n padding: \"10px\",\n transition: \"height 0.4s ease-in-out\",\n \"@media screen and (max-width: 430px)\": {\n fontSize: \"12px\"\n }\n },\n fadeIn: {\n width: \"100%\",\n position: \"absolute\",\n visibility: \"visible\",\n opacity: \"1\",\n transition: \"visibility 0s linear 0s, opacity 500ms\",\n zIndex: \"100\"\n },\n fadeOut: {\n width: \"100%\",\n position: \"absolute\",\n visibility: \"hidden\",\n opacity: \"0\",\n transition: \"visibility 0s linear 300ms, opacity 500ms\"\n },\n errorIcon: {\n color: theme.palette.error.main,\n fontSize: \"14px\"\n },\n inputIcons: {\n color: theme.palette.primary.main,\n marginLeft: \"10px\",\n \"@media screen and (max-width: 430px)\": {\n fontSize: \"20px\",\n marginLeft: \"0\"\n }\n },\n forgotPassword: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n fontSize: \"12px\",\n zIndex: 1e3,\n color: theme.palette.primary.main,\n \"@media screen and (max-width: 430px)\": {\n margin: \"8px 0px\"\n }\n },\n loginButton: {\n display: \"flex\",\n gap: \"10px\",\n fontFamily: \"Source Sans Pro\",\n width: \"100%\",\n height: \"56px\",\n backgroundColor: theme.palette.action.main,\n color: \"#ffffff\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n transition: \"all 250ms ease-in-out\",\n margin: \"20px 0\",\n \"&:hover\": {\n filter: \"brightness(0.9)\",\n backgroundColor: theme.palette.action.main,\n color: \"#ffffff\"\n },\n \"&:disabled\": {\n backgroundColor: \"#EEEEEE\",\n color: \"#BBBBBB\",\n transition: \"all 250ms ease-in-out\"\n },\n \"@media screen and (max-width: 1024px)\": {\n margin: \"0\",\n \"@media screen and (max-width: 430px)\": {\n height: \"40px\"\n }\n }\n },\n singleSignOn: {\n display: \"flex\",\n justifyContent: \"center\",\n width: \"100%\",\n color: theme.palette.action.main,\n marginTop: \"14px\",\n fontSize: \"16px\",\n fontWeight: \"bold\"\n },\n imageAndBlurbContainer: {\n position: \"relative\",\n width: \"60vw\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n backgroundRepeat: \"no-repeat\",\n backgroundSize: \"cover\",\n backgroundPosition: \"center\",\n \"@media screen and (max-width: 1024px)\": {\n width: \"100vw\",\n zIndex: \"-2\"\n }\n },\n blurb: {\n maxWidth: \"65%\",\n fontSize: \"54px\",\n fontWeight: \"bold\",\n color: \"#ffffff\",\n paddingLeft: \"30px\",\n paddingBottom: \"5vh\",\n \"@media screen and (max-width: 1024px)\": {\n visibility: \"hidden\"\n }\n },\n infoPanel: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"absolute\",\n bottom: \"0\",\n left: \"38vw\",\n borderRadius: \"6vw 0 6vw 0\",\n width: \"36vw\",\n height: \"30vh\",\n fontSize: \"3vh\",\n fontWeight: \"500\",\n color: \"#ffffff\",\n \"@media screen and (max-width: 1024px)\": {\n position: \"absolute\",\n bottom: \"auto\",\n top: \"39dvh\",\n left: \"auto\",\n right: \"0\",\n borderRadius: \"10vw 0 10vw 0\",\n width: \"45vw\",\n height: \"15vh\",\n zIndex: \"3\",\n \"@media screen and (max-width: 430px)\": {\n width: \"70vw\",\n borderRadius: \"25vw 0 0 25vw\",\n \"@media screen and (max-height: 700px)\": {\n top: \"30dvh\"\n }\n }\n }\n },\n infoPanelText: {\n maxWidth: \"24vw\",\n \"@media screen and (max-width: 1024px)\": {\n maxWidth: \"30vw\",\n maxHeight: \"12vh\",\n fontSize: \"1.8vh\",\n \"@media screen and (max-width: 430px)\": {\n maxWidth: \"45vw\"\n }\n }\n },\n inputs: {\n margin: \"16px 0px\",\n \"@media screen and (max-width: 430px)\": {\n margin: \"8px 0px\"\n },\n \"& legend\": {\n display: \"none\"\n },\n \"& fieldset\": {\n top: \"-2px\"\n },\n \"& input\": {\n paddingLeft: \"10px\",\n \"@media screen and (max-width: 430px)\": {\n paddingLeft: \"0\"\n }\n }\n },\n inputLabel: {\n left: \"45px\",\n backgroundColor: \"#ffffff\",\n padding: \"0 8px\",\n color: theme.palette.primary.main,\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n \"& .Mui-focused\": {\n color: theme.palette.primary.main\n },\n \"@media screen and (max-width: 430px)\": {\n left: \"25px\",\n fontSize: \"14px\"\n }\n },\n logoContainer: {\n position: \"absolute\",\n top: \"40px\",\n left: \"40px\",\n \"& img\": {\n width: \"100px\",\n \"@media screen and (max-width: 1024px)\": {\n width: \"40%\",\n \"@media screen and (max-width: 430px)\": {\n width: \"20%\"\n }\n }\n }\n },\n link: {\n cursor: \"pointer\",\n \"@media screen and (max-width: 430px)\": {\n fontSize: \"12px\"\n },\n \"& > div\": {\n position: \"absolute\",\n right: \"-26px\"\n }\n },\n alert: {\n position: \"absolute\",\n top: \"-70px\",\n maxWidth: \"300px\",\n borderRadius: \"6px\",\n backgroundColor: \"#FAFAFA\",\n color: theme.palette.primary.main,\n fontFamily: \"Source Sans Pro\",\n \"& svg\": {\n color: theme.palette.action.main\n },\n \"@media screen and (max-width: 1024px)\": {\n top: \"-200px\",\n \"@media screen and (max-width: 430px)\": {\n top: \"-300px\",\n \"@media screen and (max-height: 700px)\": {\n top: \"-200px\"\n }\n }\n }\n },\n helpContainer: {\n position: \"absolute\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n bottom: \"20px\",\n left: \"40px\",\n width: \"max-content\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n cursor: \"pointer\",\n color: theme.palette.primary.main,\n zIndex: \"2\",\n \"@media screen and (max-width: 430px)\": {\n left: \"30px\"\n }\n },\n helpIcon: {\n color: theme.palette.primary.main,\n fontSize: \"20px\",\n marginRight: \"8px\",\n paddingBottom: \"1px\",\n \"@media screen and (max-width: 1024px)\": {\n fontSize: \"40px\",\n \"@media screen and (max-width: 430px)\": {\n fontSize: \"20px\"\n }\n }\n },\n helpText: {\n \"@media screen and (max-width: 1024px)\": {\n visibility: \"hidden\"\n }\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nimport RecruitApiClient from \"../../RecruitApiClient\";\nimport dayjs from \"dayjs\";\nclass Api {\n constructor() {\n this.getApplicationData = (jobId, applicationId, index) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}?i=${index}`, null);\n this.getApplicationStatuses = (jobId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/job_application_statuses`, null);\n this.updateApplicationStatus = (jobId, applicationId, statusId) => RecruitApiClient.put(\n `/api/v4/jobs/${jobId}/applications/${applicationId}/application_status/${statusId}`\n );\n this.updateCandidateLinkedInURL = (candidateId, linkedInURL) => RecruitApiClient.put(`/api/v4/candidates/${candidateId}`, {\n candidate: { linkedin_url: linkedInURL }\n });\n this.getJobsOptions = (jobId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/bulk_move_applications`, null);\n this.moveApplication = (jobId, param) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/bulk_move_applications`, param);\n this.trashApplication = (jobId, applicationId) => RecruitApiClient.delete(`/api/v4/jobs/${jobId}/applications`, {\n application_ids: [applicationId]\n });\n this.updateApplicationNotepad = (jobId, applicationId, note) => RecruitApiClient.put(`/api/v4/jobs/${jobId}/applications/${applicationId}/update_notepad`, {\n suitability_comment: note\n });\n this.sendApplicationSummary = (jobId, applicationId, emails) => RecruitApiClient.post(\n `/api/v4/jobs/${jobId}/applications/${applicationId}/send_individual_summary`,\n { emails }\n );\n this.updateSummary = (jobId, applicationId) => RecruitApiClient.post(\n `/api/v4/jobs/${jobId}/applications/${applicationId}/application_summary`\n );\n this.getHrQuestions = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/hr_answers`);\n this.saveHrQuestion = (jobId, applicationId, questionId, params) => RecruitApiClient.put(\n `/api/v4/jobs/${jobId}/applications/${applicationId}/hr_answers/${questionId}`,\n { hr_answer_set: params }\n );\n this.getRatingSetForApplication = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/rating_set`);\n this.resetRatingForApplication = (jobId, applicationId) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/reset_rating`);\n this.rateResponses = (jobId, applicationId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/rating_sets`, {\n rating_set: params\n });\n this.cloneApplication = (jobId, application_id, param) => {\n return RecruitApiClient.post(\n `/api/v4/jobs/${jobId}/applications/${application_id}/clone_application`,\n param\n );\n };\n this.resendApplication = (jobId, applicationId) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/resend_application`);\n this.deleteApplication = (jobId, applicationId) => RecruitApiClient.delete(`/api/v4/jobs/${jobId}/applications/${applicationId}`);\n this.getSearchIndex = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/search_index`, null);\n this.updateSearchIndex = (jobId, applicationId) => RecruitApiClient.put(`/api/v4/jobs/${jobId}/applications/${applicationId}/search_index`, {});\n this.deleteSearchIndex = (jobId, applicationId) => RecruitApiClient.delete(`/api/v4/jobs/${jobId}/applications/${applicationId}/search_index`);\n this.updateApplicationRating = (jobId, applicationId, param) => {\n return RecruitApiClient.put(`/api/v4/jobs/${jobId}/applications/${applicationId}`, param);\n };\n this.updateUiPreferences = (param) => {\n return RecruitApiClient.post(`/api/v4/ui_preferences`, { ui_preference: param });\n };\n this.getUiPreferences = () => RecruitApiClient.get(`/api/v4/ui_preferences?source=application`, null);\n this.addRecord = (jobId, applicationId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/permanent_record`, {\n note: params\n });\n this.getEvents = (apiKey, params) => RecruitApiClient.get(\"/api/v4/calendar/events\", params, { \"X-api-authenticate\": apiKey });\n this.getSmsTemplates = () => RecruitApiClient.get(\"/api/v4/sms_templates\", {});\n this.getSmsTemplatePlaceholders = (kind) => RecruitApiClient.get(\"/api/v4/sms_templates/placeholders\", { kind });\n this.saveSmsTemplate = (smsTemplateName, smsMessage) => RecruitApiClient.post(`/api/v4/sms_templates`, {\n sms_template: { title: smsTemplateName, body: smsMessage }\n });\n this.getSubEntityGroupedEmailTemplates = (apiKey, jobId, params) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/email_templates`, params, {\n \"X-api-authenticate\": apiKey\n });\n this.getEmailLetterheadGroupedEmailTemplates = (apiKey, type) => RecruitApiClient.get(\n `/api/v4/calendar/email_templates/grouped_email_templates`,\n { type },\n { \"X-api-authenticate\": apiKey }\n );\n this.getEmailTemplateFromCalendar = (apiKey, templateId) => RecruitApiClient.get(\n `/api/v4/calendar/email_templates/${templateId}`,\n {},\n { \"X-api-authenticate\": apiKey }\n );\n this.getEmailTemplateFromJob = (apiKey, templateId, jobId) => RecruitApiClient.get(\n `/api/v4/jobs/${jobId}/email_templates/${templateId}`,\n {},\n { \"X-api-authenticate\": apiKey }\n );\n this.addToEventSms = (jobId, eventId, applicationIds, content, smsTemplateId) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/bulk_sms/add_to_event`, {\n event_id: eventId,\n applications_ids: applicationIds,\n content,\n sms_template_id: smsTemplateId,\n added: true\n });\n this.sendInviteSms = (jobId, eventTypeId, applicationIds, content, smsTemplateId) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/bulk_sms/invite_to_timeslot`, {\n event_type_id: eventTypeId,\n applications_ids: applicationIds,\n content,\n sms_template_id: smsTemplateId,\n invited: true\n });\n this.sendEmail = (jobId, eventId, emailTemplateId, content, applicationIds) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/email`, {\n email: {\n event_id: eventId,\n email_template_id: emailTemplateId,\n content,\n application_ids: applicationIds\n }\n });\n this.getApplicationActivities = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/activities`, {\n override_limit: true,\n limit: 100\n });\n this.getApprovalTemplates = () => RecruitApiClient.get(`/api/v4/requisition_forms/enabled_for_applications`);\n this.sendExternalEmails = (jobId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/bulk_external_email`, params);\n this.getSmartForms = (params) => RecruitApiClient.get(`/api/v4/smart_forms`, params);\n this.getFormQuestions = (params) => RecruitApiClient.get(`/api/v4/fields`, params);\n this.addForm = (jobId, applicationId, formId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/form_responses`, {\n form_id: formId,\n form_response: { answers_attributes: params }\n });\n this.sms = (jobId, applicationId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/sms`, {\n sms: params\n });\n this.sendForm = (jobId, applicationId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/send_form`, {\n send_form: params\n });\n this.sendFormBySMS = (jobId, applicationId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/send_sms_form`, {\n send_sms_form: params\n });\n this.getCareAdvantageEvents = (jobId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/auto_emails/care_advantage_events`);\n this.getApplicationAttachments = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/attachments`, null);\n this.deleteAttachment = (jobId, applicationId, attachmentId) => RecruitApiClient.delete(\n `/api/v4/jobs/${jobId}/applications/${applicationId}/attachments/${attachmentId}`\n );\n this.getRecruiters = (apiKey) => RecruitApiClient.get(\"/api/v4/calendar/users\", {}, { \"X-api-authenticate\": apiKey });\n this.getEventTypes = () => RecruitApiClient.get(\"/api/v4/calendar/event_types\", {});\n this.inviteByEmail = (apiKey, params) => RecruitApiClient.post(`/api/v4/calendar/invitations`, params, { \"X-api-authenticate\": apiKey });\n this.previewAttachment = (jobId, applicationId, attachmentId, index) => RecruitApiClient.get(\n `/api/v4/jobs/${jobId}/applications/${applicationId}/attachments/${attachmentId}`,\n { index }\n );\n this.getVideoTimestamps = (assetId) => RecruitApiClient.get(`/api/v4/video_timestamp`, { asset_id: assetId });\n this.createVideoTimestamp = (assetId, timestampName, timestampValue) => RecruitApiClient.post(`/api/v4/video_timestamp`, {\n asset_id: assetId,\n timestamp: { name: timestampName, value: timestampValue }\n });\n this.updateVideoTimestamp = (assetId, timestampId, timestampName, timestampValue) => RecruitApiClient.put(`/api/v4/video_timestamp/${timestampId}`, {\n asset_id: assetId,\n timestamp: { name: timestampName, value: timestampValue }\n });\n this.deleteVideoTimestamp = (assetId, timestampId) => RecruitApiClient.delete(`/api/v4/video_timestamp/${timestampId}`, { asset_id: assetId });\n this.getApplicationTasks = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/tasks`);\n this.updateApplicationTask = (jobId, applicationId, taskId, params) => RecruitApiClient.put(`/api/v4/jobs/${jobId}/applications/${applicationId}/tasks/${taskId}`, {\n task: params\n });\n this.getWorkflows = (applicationId) => RecruitApiClient.get(`/api/v4/workflows?application_id=${applicationId}`);\n this.getAssignableUsers = () => RecruitApiClient.get(`/api/v4/tasks/assignable_users`);\n this.assignWorkflow = (applicationId, params) => RecruitApiClient.post(`/api/v4/workflows?application_id=${applicationId}`, params);\n this.addTask = (jobId, applicationId, params) => RecruitApiClient.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/tasks`, {\n task: params\n });\n this.deleteTask = (jobId, applicationId, taskId) => RecruitApiClient.delete(`/api/v4/jobs/${jobId}/applications/${applicationId}/tasks/${taskId}`);\n this.getApplicationEvents = (jobId, applicationId) => RecruitApiClient.get(`/api/v4/jobs/${jobId}/applications/${applicationId}/events`);\n this.getFormResponses = (jobId, applicationId) => RecruitApiClient.get(\n `/api/v4/jobs/${jobId}/applications/${applicationId}/form_responses`,\n null\n );\n this.showFormResponse = (jobId, applicationId, formResponseId) => RecruitApiClient.get(\n `/api/v4/jobs/${jobId}/applications/${applicationId}/form_responses/${formResponseId}`\n );\n this.editFormResponse = (jobId, applicationId, formResponseId, params) => RecruitApiClient.put(\n `/api/v4/jobs/${jobId}/applications/${applicationId}/form_responses/${formResponseId}`,\n {\n form_response: { answers_attributes: params }\n }\n );\n this.deleteFormResponse = (jobId, applicationId, formResponseId) => RecruitApiClient.delete(\n `/api/v4/jobs/${jobId}/applications/${applicationId}/form_responses/${formResponseId}`\n );\n this.getVideoInterview = (ApplicationId) => RecruitApiClient.get(`/api/v4/video_interviews/${ApplicationId}`);\n this.deleteVideoInterview = (ApplicationId) => RecruitApiClient.delete(`/api/v4/video_interviews/${ApplicationId}`);\n this.getVideoInterviewBookmarks = (ApplicationId) => RecruitApiClient.get(`/api/v4/video_interviews/${ApplicationId}/bookmarks`);\n this.deleteVideoInterviewBookmark = (ApplicationId, id) => {\n return RecruitApiClient.delete(`/api/v4/video_interviews/${ApplicationId}/bookmarks/${id}`);\n };\n this.createVideoInterviewBookmark = (ApplicationId, name, value) => {\n return RecruitApiClient.post(`/api/v4/video_interviews/${ApplicationId}/bookmarks`, {\n name,\n value\n });\n };\n this.updateVideoInterviewBookmark = (ApplicationId, id, name, value) => {\n return RecruitApiClient.put(`/api/v4/video_interviews/${ApplicationId}/bookmarks/${id}`, {\n name,\n value\n });\n };\n this.exportToOnboard = (jobId, applicationId, startDate) => {\n return RecruitApiClient.post(`/api/v4/jobs/${jobId}/scout_onboard_exports`, {\n start_date: dayjs(startDate).format(\"YYYY-MM-DD\"),\n application_ids: [applicationId]\n });\n };\n this.getRevolveData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/revolve_exports`, { application_id: applicationId });\n this.revolveExport = (applicationId, params) => {\n return RecruitApiClient.post(`/api/v4/integrations/revolve_exports`, {\n application_id: applicationId,\n revolve_record: params\n });\n };\n this.getXrefPackages = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/xref/packages`, { application_id: applicationId });\n this.xRefExport = (applicationId, params) => {\n return RecruitApiClient.post(`/api/v4/integrations/xref`, __spreadValues({\n application_id: applicationId\n }, params));\n };\n this.getIntegrationsData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations`, { application_id: applicationId });\n this.resolveUnusualActivity = (applicationId, params) => {\n return RecruitApiClient.post(`/api/v4/integrations/xref/resolve_unusual_activity`, __spreadValues({\n application_id: applicationId\n }, params));\n };\n this.getCountriesStates = () => RecruitApiClient.get(\"/api/v4/countries\");\n this.getMvsData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/mvs`, { application_id: applicationId });\n this.mvsExport = (applicationId, params) => {\n return RecruitApiClient.post(`/api/v4/integrations/mvs`, __spreadValues({\n application_id: applicationId\n }, params));\n };\n this.getReferooData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/referoo`, { application_id: applicationId });\n this.referooExport = (applicationId, params) => {\n return RecruitApiClient.post(`/api/v4/integrations/referoo`, __spreadValues({\n application_id: applicationId\n }, params));\n };\n this.foundUExport = (applicationId, params) => {\n return RecruitApiClient.post(`/api/v4/integrations/foundu`, __spreadValues({\n application_id: applicationId\n }, params));\n };\n this.getTestGridPackages = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/test_grids/packages`, {\n application_id: applicationId\n });\n this.testGridExport = (applicationId, packageId) => {\n return RecruitApiClient.post(`/api/v4/integrations/test_grids`, {\n application_id: applicationId,\n package_id: packageId\n });\n };\n this.getHronboardData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/hro_exports`, { application_id: applicationId });\n this.hronboardExport = (applicationId, params) => {\n return RecruitApiClient.post(`/api/v4/integrations/hro_exports`, {\n application_id: applicationId,\n hro_record: params\n });\n };\n this.roublerExport = (applicationId, params) => {\n return RecruitApiClient.post(`/api/v4/integrations/roubler_exports`, {\n application_id: applicationId,\n roubler_record: params\n });\n };\n this.getFit2WorkData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/fit2work`, { application_id: applicationId });\n this.fit2WorkExport = (applicationId, params) => {\n return RecruitApiClient.post(`/api/v4/integrations/fit2work`, __spreadValues({\n application_id: applicationId\n }, params));\n };\n this.getSparkHireData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/sparkhire_exports`, {\n application_id: applicationId\n });\n this.sparkHireExport = (applicationId, params) => {\n return RecruitApiClient.post(`/api/v4/integrations/sparkhire_exports`, {\n application_id: applicationId,\n sparkhire_record: params\n });\n };\n this.getAlayaCareData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/alayacare`, { application_id: applicationId });\n this.alayaCareExport = (params) => {\n return RecruitApiClient.post(`/api/v4/integrations/alayacare`, params);\n };\n this.updateFit2WorkStatus = (applicationId, referenceId) => RecruitApiClient.get(`/api/v4/integrations/fit2work/${referenceId}/update_status`, {\n application_id: applicationId\n });\n this.getCognologyData = (applicationId) => RecruitApiClient.get(`/api/v4/integrations/cognology_exports`, {\n application_id: applicationId\n });\n this.cognologyExport = (params) => {\n return RecruitApiClient.post(`/api/v4/integrations/cognology_exports`, {\n cognology_record: params\n });\n };\n this.exportToCognology = (applicationId) => {\n return RecruitApiClient.post(`/api/v4/integrations/cognology_exports/export`, {\n application_id: applicationId\n });\n };\n }\n}\nexport default new Api();\n","\"use strict\";\nconst integrations = (enabled) => ({\n revolve: {\n permissionKey: \"Export To Revolve Onboard\"\n },\n scoutOnboard: {\n permissionKey: \"Export To SCOUT Onboard\"\n },\n xref: {\n permissionKey: \"Xref (Export)\",\n applicationKey: \"xref\"\n },\n mvs: {\n newIntegrationEnabled: enabled,\n permissionKey: \"My Verification Service (MVS)\",\n applicationKey: \"mvs\"\n },\n referoo: {\n permissionKey: \"Referoo\",\n applicationKey: \"referoo\"\n },\n foundU: {\n newIntegrationEnabled: enabled,\n permissionKey: \"foundU\",\n applicationKey: \"foundu\"\n },\n testGrid: {\n permissionKey: \"TestGrid\",\n applicationKey: \"test_grid\"\n },\n hro: {\n newIntegrationEnabled: enabled,\n permissionKey: \"Export To HR Onboard\"\n },\n cognology: {\n newIntegrationEnabled: enabled,\n permissionKey: \"Export To Cognology\",\n applicationKey: \"cognology\"\n },\n roubler: {\n newIntegrationEnabled: enabled,\n permissionKey: \"Roubler Integration\",\n applicationKey: \"roubler\"\n },\n sparkhire: {\n newIntegrationEnabled: enabled,\n permissionKey: \"Export To Sparkhire\",\n applicationKey: \"sparkhire\"\n },\n fit2work: {\n newIntegrationEnabled: enabled,\n permissionKey: \"Fit2Work\",\n applicationKey: \"fit2_work\"\n },\n alayacare: {\n newIntegrationEnabled: enabled,\n permissionKey: \"AlayaCare Integration\",\n applicationKey: \"alayacare\"\n }\n});\nconst isIntegrationAvailable = (integrationName, newIntegrationEnabled, permissions, application) => {\n var _a, _b, _c, _d;\n const integrationConfig = integrations(newIntegrationEnabled)[integrationName];\n if (!integrationConfig) {\n console.warn(`Integration not found: ${integrationName}`);\n return false;\n }\n const hasPermission = integrationConfig.permissionKey ? (_b = (_a = permissions == null ? void 0 : permissions.Integrations) == null ? void 0 : _a[integrationConfig.permissionKey]) != null ? _b : false : true;\n const isEnabled = (_c = integrationConfig.newIntegrationEnabled) != null ? _c : true;\n const hasApplicationKey = integrationConfig.applicationKey ? !!((_d = application == null ? void 0 : application.integrations) == null ? void 0 : _d[integrationConfig.applicationKey]) : true;\n return hasPermission && isEnabled && hasApplicationKey;\n};\nexport { integrations, isIntegrationAvailable };\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../../components/ThemeContext/ThemeObject\";\nimport { styles as sharedClasses } from \"../Modals/styles\";\nexport const styles = __spreadProps(__spreadValues({}, sharedClasses), {\n integrationCard: {\n border: \"1px solid #DDDDDD\",\n borderRadius: \"6px\",\n padding: 2,\n rowGap: 1,\n width: \"150px\",\n justifyContent: \"space-between\",\n alignItems: \"center\"\n },\n integrationCardImageContainer: {\n padding: \"16px 0px\"\n },\n exportButton: {\n border: \"1px solid #DDDDDD\",\n borderRadius: \"6px\",\n padding: \"8px 16px\",\n width: \"fit-content\",\n color: \"#333333\",\n fontWeight: 600,\n cursor: \"pointer\"\n },\n modalDoubleColumn: {\n flexDirection: \"row\",\n columnGap: 3\n },\n alreadyExportedModal: {\n padding: \"48px 32px\",\n width: \"450px\",\n alignItems: \"center\",\n rowGap: 2\n },\n integrationDetails: {\n padding: 3,\n borderRadius: \"6px\",\n border: \"1px solid #E3E3E3\",\n rowGap: 1\n },\n integrationDetailsTable: {\n \"&.responsive\": { tableLayout: \"auto\" },\n \"& .MuiTableCell-root\": {\n fontFamily: \"Source Sans Pro\",\n padding: \"4px 16px 16px 0px\",\n border: \"none\",\n fontWeight: 600\n }\n },\n integrationDetailsTableHeader: {\n color: theme.palette.primary.main,\n textTransform: \"capitalize\",\n background: \"white\"\n },\n verifyActivityButtonsContainer: {\n flexDirection: \"row\",\n borderRadius: \"6px\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"fit-content\"\n },\n verifyActivityButton: {\n padding: \"6px\",\n width: \"100px\",\n alignItems: \"center\",\n cursor: \"pointer\",\n borderRadius: \"6px\"\n },\n cognologySectionTitle: {\n fontWeight: \"bold\",\n color: \"#666666\",\n fontSize: \"18px\"\n },\n cognologyCategoriesContainer: {\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n rowGap: 2,\n columnGap: 2,\n paddingBottom: 1\n },\n cognologyAttachmentContainer: {\n flexDirection: \"row\",\n columnGap: 1,\n width: \"48%\",\n alignItems: \"center\"\n }\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { styles as sharedClasses } from \"../styles\";\nexport const styles = __spreadProps(__spreadValues({}, sharedClasses), {\n modalInfoStyle: {\n color: \"#939393\",\n fontFamily: \"Source Sans Pro\",\n fontStyle: \"italic\",\n fontWeight: 400,\n lineHeight: \"normal\"\n },\n modalStyleOverrides: {\n height: \"auto\",\n maxHeight: \"84vh\",\n width: \"700px\",\n padding: \"40px\"\n },\n modalContainer: {\n width: \"100%\",\n height: \"100%\",\n rowGap: 3,\n overflow: \"auto\"\n },\n errorMessage: {\n marginLeft: 0.5,\n color: \"#E37D7A\",\n fontSize: \"12px\"\n },\n autoCompleteTextfield: {\n \"& .MuiInputBase-root\": { margin: \"unset\", marginTop: 1 },\n \"& .MuiFormHelperText-root\": {\n margin: 0.5,\n fontSize: \"12px\",\n fontFamily: \"inherit\",\n color: theme.palette.error.main\n }\n },\n loaderContainer: {\n flexGrow: 1,\n rowGap: 3,\n fontWeight: \"bold\",\n alignItems: \"center\",\n justifyContent: \"center\",\n color: theme.palette.action.main,\n fontSize: \"18px\"\n },\n wideModal: { width: \"904px\", maxWidth: \"90vw\", minWidth: \"650px\" },\n subWidget: {\n marginTop: \"24px\",\n flex: \"40%\",\n borderRadius: \"3px\",\n height: \"100px\",\n minWidth: \"240px\"\n },\n widgetBlockContainer: {\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n columnGap: \"50px\"\n },\n widgetBlock: {\n border: \"1px solid #E3E3E3\",\n borderRadius: \"3px\",\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n paddingX: \"16px\",\n alignItems: \"center\",\n width: \"50%\",\n height: \"100%\"\n },\n widgetBlockText: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"flex-start\",\n marginLeft: \"12px\"\n },\n widgetBlockHeading: {\n color: theme.palette.primary.main\n },\n widgetBlockBody: {\n fontSize: \"14px\",\n color: \"#333333\"\n },\n widgetBlockIcon: {\n backgroundColor: \"#EDF2F5\",\n padding: \"12px\",\n borderRadius: \"8px\",\n color: theme.palette.primary.main\n }\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nexport const getAnswerAttributes = (question, index, answers, ratings, formResponse) => {\n var _a, _b, _c, _d, _e, _f;\n switch (question.type) {\n case \"RadioButtonField\":\n case \"SelectField\":\n return __spreadValues({\n field_id: question.id,\n field_choice_id: answers[question.id],\n rating_value: ratings[question.id]\n }, formResponse && ((_a = formResponse[index]) == null ? void 0 : _a.id) && { id: (_b = formResponse[index]) == null ? void 0 : _b.id });\n case \"CheckBoxField\":\n return __spreadValues({\n field_id: question.id,\n field_choice_ids: answers[question.id] && Object.entries(answers[question.id]).filter(([_, value]) => value).map(([id]) => id),\n rating_value: ratings[question.id]\n }, formResponse && ((_c = formResponse[index]) == null ? void 0 : _c.id) && { id: (_d = formResponse[index]) == null ? void 0 : _d.id });\n default:\n return __spreadValues({\n field_id: question.id,\n data: answers[question.id],\n rating_value: ratings[question.id]\n }, formResponse && ((_e = formResponse[index]) == null ? void 0 : _e.id) && { id: (_f = formResponse[index]) == null ? void 0 : _f.id });\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nexport const getAnswerValue = (question, questionIndex, formResponse) => {\n var _a;\n switch (question.type) {\n case \"RadioButtonField\":\n case \"SelectField\":\n return formResponse[questionIndex].field_choice_ids.length > 0 ? formResponse[questionIndex].field_choice_ids[0].toString() : {};\n case \"RankField\":\n return formResponse[questionIndex].field_choice_ids ? formResponse[questionIndex].field_choice_ids.reduce(\n (acc, curr, i) => __spreadProps(__spreadValues({}, acc), { [curr]: (i + 1).toString() }),\n {}\n ) : {};\n case \"CheckBoxField\":\n return formResponse[questionIndex].field_choices.reduce(\n (acc, curr) => {\n acc[curr.id] = formResponse[questionIndex].field_choice_ids.includes(curr.id);\n return acc;\n },\n {}\n );\n default:\n return (_a = formResponse[questionIndex]) == null ? void 0 : _a.answer;\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { containsDuplicates } from \"../../ApprovalForms/NewApproval/NewApproval\";\nexport function validateForm(questions, answers, setQuestionErrors, questionsRef) {\n var _a;\n if (!questionsRef.current) return;\n let isValid = true;\n let questionError = void 0;\n questions.forEach((question, index) => {\n let tempErrorMessage = \"\";\n if (question.type === \"CheckBoxField\") {\n const isChecked = answers[question.id] && Object.values(answers[question.id]).some((value) => value === true);\n if (question.required && !isChecked) {\n tempErrorMessage = \"Must select at least one option\";\n if (questionError === void 0) {\n questionError = index;\n }\n isValid = false;\n }\n } else if (question.type === \"RankField\") {\n const duplicates = answers[question.id] && containsDuplicates(Object.values(answers[question.id]));\n if (duplicates) {\n tempErrorMessage = \"Ranked choices must be unique\";\n if (questionError === void 0) {\n questionError = index;\n }\n isValid = false;\n }\n } else if (question.required && !answers[question.id]) {\n tempErrorMessage = question.type !== \"RadioButtonField\" ? \"This field is required\" : \"Must select an option\";\n if (questionError === void 0) {\n questionError = index;\n }\n isValid = false;\n }\n setQuestionErrors((prev) => __spreadProps(__spreadValues({}, prev), {\n [question.id]: tempErrorMessage\n }));\n });\n if (questionError !== void 0 && questionsRef.current && questionsRef.current[questionError]) {\n (_a = questionsRef.current[questionError]) == null ? void 0 : _a.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n }\n return isValid;\n}\n","\"use strict\";\nimport dayjs from \"dayjs\";\nimport { getAttachmentType } from \"../utils/attachment-type\";\nexport var ModalType = /* @__PURE__ */ ((ModalType2) => {\n ModalType2[\"MOVE\"] = \"move\";\n ModalType2[\"CLONE\"] = \"clone\";\n ModalType2[\"TRASH\"] = \"trash\";\n ModalType2[\"RESEND\"] = \"resend\";\n ModalType2[\"DELETE\"] = \"delete\";\n ModalType2[\"ADD_RECORD\"] = \"add record\";\n ModalType2[\"ADD_TO_EVENT\"] = \"add to event\";\n ModalType2[\"SEARCH\"] = \"search\";\n ModalType2[\"CREATE_APPROVAL\"] = \"create approval\";\n ModalType2[\"EMAIL_EXTERNAL\"] = \"email external\";\n ModalType2[\"ADD_FORM\"] = \"add form\";\n ModalType2[\"SEND_SMS\"] = \"send sms\";\n ModalType2[\"SEND_FORM\"] = \"send form\";\n ModalType2[\"SEND_EMAIL\"] = \"send email\";\n ModalType2[\"INVITE_TO_TIMESLOT\"] = \"invite to timeslot\";\n ModalType2[\"ADD_EDIT_TASK\"] = \"add edit task\";\n ModalType2[\"TASK_WORKFLOW\"] = \"task workflow\";\n ModalType2[\"EXPORT_TO_ONBOARD\"] = \"export to onboard\";\n ModalType2[\"ONBOARD_EXPRESS\"] = \"onboard express\";\n ModalType2[\"XREF\"] = \"xref\";\n ModalType2[\"UNUSUAL_ACTIVITY\"] = \"unusual activity\";\n ModalType2[\"COGNOLOGY\"] = \"cognology\";\n ModalType2[\"EDIT_COGNOLOGY\"] = \"edit cognology\";\n ModalType2[\"COGNOLOGY_WAITING_FOR_APPROVAL\"] = \"cognology waiting for approval\";\n ModalType2[\"COGNOLOGY_APPROVED\"] = \"cognology approved\";\n ModalType2[\"MVS\"] = \"mvs\";\n ModalType2[\"REFEROO\"] = \"referoo\";\n ModalType2[\"FOUNDU\"] = \"foundu\";\n ModalType2[\"TESTGRID\"] = \"testgrid\";\n ModalType2[\"HRONBOARD\"] = \"hronboard\";\n ModalType2[\"ROUBLER\"] = \"roubler\";\n ModalType2[\"SPARKHIRE\"] = \"sparkhire\";\n ModalType2[\"FIT2WORK\"] = \"fit2work\";\n ModalType2[\"ALAYACARE\"] = \"alayacare\";\n return ModalType2;\n})(ModalType || {});\nexport const cognologyExportPreference = [\n {\n label: \"Quick\",\n value: \"quick\"\n },\n {\n label: \"Full\",\n value: \"full\"\n }\n];\nexport var SectionName = /* @__PURE__ */ ((SectionName2) => {\n SectionName2[\"CandidateTags\"] = \"Candidate Tags\";\n SectionName2[\"FelixAISummary\"] = \"Felix AI Summary\";\n SectionName2[\"Responses\"] = \"Responses\";\n SectionName2[\"Notepad\"] = \"Notepad\";\n SectionName2[\"Actions\"] = \"Actions\";\n SectionName2[\"ApplicationQuestionnaire\"] = \"Application questionnaire\";\n SectionName2[\"Attachments\"] = \"Attachments\";\n return SectionName2;\n})(SectionName || {});\nexport var AttachmentType = /* @__PURE__ */ ((AttachmentType2) => {\n AttachmentType2[\"Image\"] = \"image\";\n AttachmentType2[\"Video\"] = \"video\";\n AttachmentType2[\"Audio\"] = \"audio\";\n AttachmentType2[\"Text\"] = \"text\";\n AttachmentType2[\"Pdf\"] = \"pdf\";\n AttachmentType2[\"Word\"] = \"word\";\n return AttachmentType2;\n})(AttachmentType || {});\nexport const defaultSections = [\n \"Candidate Tags\",\n \"Felix AI Summary\",\n \"Responses\",\n \"Notepad\",\n \"Actions\",\n \"Attachments\",\n \"Application questionnaire\"\n];\nexport const getApplicationRatingColor = (rating) => {\n if (rating === null) return { color: \"#666666\", background: \"#E5E5E5\" };\n if (rating <= 34) {\n return { color: \"rgba(227,125,122)\", background: \"rgba(227,125,122,0.12)\" };\n } else if (rating <= 49) {\n return { color: \"rgba(229,153,92)\", background: \"rgba(229,153,92,0.12)\" };\n } else if (rating <= 74) {\n return { color: \"rgba(254,213,0)\", background: \"rgba(254,213,0,0.12)\" };\n } else if (rating <= 90) {\n return { color: \"rgba(140,207,149)\", background: \"rgba(140,207,149,0.12)\" };\n } else if (rating <= 100) {\n return { color: \"rgba(62,170,62)\", background: \"rgba(62,170,62,0.12)\" };\n }\n};\nexport const timeStringToSeconds = (time) => {\n const [hour, minute, second] = time.split(\":\").map((t) => parseInt(t));\n return dayjs.duration({ hours: hour, minutes: minute, seconds: second }).asSeconds();\n};\nexport const secondsToTimeString = (seconds) => {\n return dayjs.duration(seconds, \"seconds\").format(\"HH:mm:ss\");\n};\nexport const checkMissingPlaceholders = (placeholders, body) => {\n const missingPlaceholders = placeholders.filter((placeholder) => !body.includes(placeholder));\n return !!missingPlaceholders.length;\n};\nexport const InitialTimeStampState = {\n hasTyped: false,\n timestampError: { nameMessage: \"\", valueMessage: \"\", id: null }\n};\nexport const categorizeAttachments = (attachments) => {\n return attachments.reduce(\n (acc, attachment) => {\n const selectedAttachment = getAttachmentType(attachment);\n if (selectedAttachment === \"video\" /* Video */) {\n acc.videos.push(attachment);\n } else {\n acc.files.push(attachment);\n }\n return acc;\n },\n { files: [], videos: [] }\n );\n};\nexport const VIDEO_INTERVIEW_SOURCE_INDEX = 1;\nexport const VIDEO_INTERVIEW_DISPLAY_NAME = \"Video Interview\";\nexport const LINKEDIN_URL_REGEX = /^(https:\\/\\/)(|www\\.|[a-z]{2}\\.)?linkedin.com\\/in\\/([a-zA-Z0-9-]*)/gm;\nexport const ADD_FORM_PLACEHOLDER = \"{FORM}\";\nexport const INVITE_TO_TIMESLOT_PLACEHOLDER = \"{INTERVIEW_URL}\";\n","\"use strict\";\nexport const MAX_SCALE = 200;\nexport const ZOOM_STEP = 5;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport { useEffect, useState } from \"react\";\nimport { useMutation, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport Api from \"./API\";\nimport { secondsToTimeString, timeStringToSeconds } from \"./config\";\nexport function useGetEmailTemplate({\n apiKey,\n selectedEmailTemplate,\n setBody,\n dispatch,\n setSubject,\n setTemplateAttachments,\n endpoint\n}) {\n useQuery({\n queryKey: [selectedEmailTemplate],\n queryFn: () => __async(this, null, function* () {\n if (!selectedEmailTemplate) return;\n const { res } = yield endpoint || Api.getEmailTemplateFromCalendar(apiKey, Number(selectedEmailTemplate.split(\" -\")[0]));\n return res;\n }),\n onSuccess: (emailTemplate) => {\n setSubject && setSubject(emailTemplate.subject);\n setTemplateAttachments && setTemplateAttachments(emailTemplate.email_attachments);\n setBody(emailTemplate.body);\n },\n onError: (error) => dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: error.errors.join(\", \"), state: \"error\" }\n }),\n enabled: !!selectedEmailTemplate\n });\n}\nexport function useGetEvents({\n apiKey,\n dispatch,\n eventTypeId,\n enabled = true\n}) {\n const { data: events, isLoading: loadingEvents } = useQuery({\n queryKey: [\"events\", eventTypeId],\n queryFn: () => __async(this, null, function* () {\n const { res } = yield Api.getEvents(apiKey, {\n date: /* @__PURE__ */ new Date(),\n override_limit: true,\n event_type_id: eventTypeId\n });\n return res.events;\n }),\n onError: (error) => dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: error.errors.join(\", \"), state: \"error\" }\n }),\n enabled\n });\n return { events, loadingEvents };\n}\nexport function useGetIntegrationsData({\n applicationId,\n dispatch\n}) {\n const {\n data: integrationsData,\n refetch: refetchIntegrationsData,\n isRefetching: refetchingIntegrationsData,\n isLoading: loadingIntegrationsData\n } = useQuery({\n queryKey: [\"integrations\"],\n queryFn: () => __async(this, null, function* () {\n if (applicationId) {\n const { res } = yield Api.getIntegrationsData(applicationId);\n return res;\n }\n }),\n onError: (error) => {\n dispatch({\n type: \"SET_SNACKBAR\",\n payload: {\n message: `There was an error getting integrations data, ${error}`,\n state: \"error\"\n }\n });\n }\n });\n return {\n integrationsData,\n refetchIntegrationsData,\n refetchingIntegrationsData,\n loadingIntegrationsData\n };\n}\nexport function useGetCognologyData({\n applicationId,\n dispatch,\n setRecord,\n setCategories,\n setAttachments,\n enabled = true\n}) {\n const { data: cognologyData, isLoading: loadingCognologyData } = useQuery({\n queryKey: [\"cognology data\"],\n queryFn: () => __async(this, null, function* () {\n if (!applicationId) return;\n const { res } = yield Api.getCognologyData(applicationId);\n return res;\n }),\n onSuccess: (res) => {\n if (res && setRecord && setCategories && setAttachments) {\n res.record.candidate_gender === \"Unspecified\" ? setRecord(__spreadProps(__spreadValues({}, res.record), { candidate_gender: null })) : setRecord(res.record);\n if (res.record.categories) {\n Object.keys(res.record.categories).forEach((key) => {\n var _a;\n let savedCategoryValue = null;\n const savedCategory = (_a = res.record.categories) == null ? void 0 : _a[key];\n if (savedCategory) {\n savedCategoryValue = [\n savedCategory.name || savedCategory.new_value || \"\",\n savedCategory.id || 0\n ];\n }\n setCategories((prev) => __spreadProps(__spreadValues({}, prev), { [key]: savedCategoryValue }));\n });\n } else {\n res.categories.forEach((category) => {\n setCategories((prev) => __spreadProps(__spreadValues({}, prev), { [category.id]: null }));\n });\n }\n res.record.assets ? setAttachments(res.record.assets) : res.application_assets.forEach((asset) => {\n setAttachments((prev) => __spreadProps(__spreadValues({}, prev), { [asset.id]: null }));\n });\n }\n },\n onError: (error) => dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: `There was an error getting cognology data, ${error}`, state: \"error\" }\n }),\n enabled\n });\n return { cognologyData, loadingCognologyData };\n}\nexport function useGetSmsTemplatePlaceholders({\n kind,\n dispatch\n}) {\n const { data: placeholders } = useQuery({\n queryKey: [\"sms placeholders\"],\n queryFn: () => __async(this, null, function* () {\n const { res } = yield Api.getSmsTemplatePlaceholders(kind);\n return res.placeholders;\n }),\n onError: (error) => dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: error.errors.join(\", \"), state: \"error\" }\n }),\n initialData: []\n });\n return { placeholders };\n}\nexport function useGetAssignableUsers({ dispatch }) {\n const { data: assignableUsers, isLoading: loadingAssignableUsers } = useQuery({\n queryKey: [\"assignable users\"],\n queryFn: () => __async(this, null, function* () {\n const { res } = yield Api.getAssignableUsers();\n return res.assignable_users;\n }),\n onError: (error) => dispatch({\n type: \"SET_SNACKBAR\",\n payload: {\n message: `There was an error getting assignable users data, ${error}`,\n state: \"error\"\n }\n })\n });\n return { assignableUsers, loadingAssignableUsers };\n}\nexport function useFormQuestions({\n application,\n selectedFormId,\n dispatch,\n formResponseId\n}) {\n const { data: formQuestions, isLoading: loadingFormQuestions } = useQuery({\n queryKey: [\"formQuestions\", selectedFormId, formResponseId],\n queryFn: () => __async(this, null, function* () {\n if (!application || !selectedFormId) return;\n const { res } = yield Api.getFormQuestions({\n form_id: selectedFormId,\n form_response_id: formResponseId\n });\n return res.fields;\n }),\n onError: (error) => dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: `There was an error getting form questions, ${error}`, state: \"error\" }\n }),\n enabled: !!application && !!selectedFormId && !!formResponseId\n });\n return { formQuestions, loadingFormQuestions };\n}\nexport function useFormResponse({\n FormResponseId,\n dispatch,\n application\n}) {\n return useQuery({\n queryKey: [\"formQuestionAndAnswers\", FormResponseId],\n queryFn: () => __async(this, null, function* () {\n if (!application) return;\n const { res } = yield Api.showFormResponse(\n application.job.id,\n application.id,\n FormResponseId\n );\n return res.question_and_answers;\n }),\n onError: (error) => dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: `There was an error getting form response, ${error}`, state: \"error\" }\n }),\n enabled: !!application\n });\n}\nexport function useTimestampData({\n selectedAttachment,\n dispatch,\n listRef,\n application,\n newTimestamp,\n setNewTimestamp\n}) {\n var _a;\n const queryClient = useQueryClient();\n const [timestampAdded, setTimestampAdded] = useState(false);\n const isVideoInterview = \"watch_interview_link\" in selectedAttachment;\n const fetchTimestampsAPI = () => {\n if ((selectedAttachment == null ? void 0 : selectedAttachment.id) && application && !isVideoInterview) {\n return Api.getVideoTimestamps(selectedAttachment.id);\n }\n if (isVideoInterview && application) {\n return Api.getVideoInterviewBookmarks(application.id);\n }\n };\n const { data: timestampData, isLoading: loadingTimestampData } = useQuery({\n queryKey: [\"timestamp_data\", selectedAttachment],\n queryFn: () => __async(this, null, function* () {\n if (fetchTimestampsAPI) {\n const response = yield fetchTimestampsAPI();\n if (response) {\n const { res } = response;\n if (isVideoInterview && \"bookmarks\" in res) {\n res.bookmarks = res.bookmarks.map((bookmark) => __spreadProps(__spreadValues({}, bookmark), {\n value: secondsToTimeString(bookmark.value)\n }));\n }\n return res;\n }\n }\n }),\n onSettled: () => {\n var _a2;\n if (timestampAdded) {\n (_a2 = listRef.current) == null ? void 0 : _a2.scrollTo(0, listRef.current.scrollHeight);\n setTimestampAdded(false);\n }\n },\n onError: (error) => dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: `There was an error getting timestamp data, ${error}`, state: \"error\" }\n }),\n enabled: !isVideoInterview && ((_a = selectedAttachment == null ? void 0 : selectedAttachment.attached_content_type) == null ? void 0 : _a.includes(\"video\")) || isVideoInterview\n });\n const updateTimestampApi = () => {\n if (!selectedAttachment || !timestampData || !newTimestamp.id || !application) return;\n if (isVideoInterview) {\n return Api.updateVideoInterviewBookmark(\n application.id,\n newTimestamp.id,\n newTimestamp.name,\n timeStringToSeconds(newTimestamp.value)\n );\n } else {\n return Api.updateVideoTimestamp(\n selectedAttachment.id,\n newTimestamp.id,\n newTimestamp.name,\n newTimestamp.value\n );\n }\n };\n const { mutate: updateTimestamp, isLoading: updatingTimestamp } = useMutation({\n mutationFn: () => __async(this, null, function* () {\n const { res } = yield updateTimestampApi();\n return res;\n }),\n onSuccess: () => __async(this, null, function* () {\n dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: \"Timestamp updated successfully\", state: \"success\" }\n });\n setNewTimestamp({ id: null, name: \"\", value: \"\" });\n yield queryClient.invalidateQueries([\"timestamp_data\", selectedAttachment]);\n }),\n onError: (error) => {\n dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: `Error updating task: ${error}`, state: \"error\" }\n });\n }\n });\n const createTimestampApi = () => {\n if (!selectedAttachment || !timestampData || !application) return;\n if (isVideoInterview) {\n return Api.createVideoInterviewBookmark(\n application.id,\n newTimestamp.name,\n timeStringToSeconds(newTimestamp.value)\n );\n } else {\n return Api.createVideoTimestamp(\n selectedAttachment.id,\n newTimestamp.name,\n newTimestamp.value\n );\n }\n };\n const { mutate: addTimestamp } = useMutation({\n mutationFn: () => __async(this, null, function* () {\n const { res } = yield createTimestampApi();\n return res;\n }),\n onSuccess: () => __async(this, null, function* () {\n dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: \"Timestamp added successfully\", state: \"success\" }\n });\n setNewTimestamp(__spreadProps(__spreadValues({}, newTimestamp), { name: \"\", value: \"\" }));\n dispatch({ type: \"RESET_TIMESTAMP_STATE\" });\n yield queryClient.invalidateQueries([\"timestamp_data\", selectedAttachment]);\n setTimestampAdded(true);\n }),\n onError: (error) => {\n dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: `Error adding timestamp: ${error}`, state: \"error\" }\n });\n }\n });\n const deleteTimestampApi = (id) => {\n if (!selectedAttachment || !timestampData || !application) return;\n if (isVideoInterview) {\n return Api.deleteVideoInterviewBookmark(application == null ? void 0 : application.id, id);\n } else {\n return Api.deleteVideoTimestamp(selectedAttachment.id, id);\n }\n };\n const { mutate: deleteTimestamp } = useMutation({\n mutationFn: (id) => __async(this, null, function* () {\n deleteTimestampApi(id);\n }),\n onSuccess: () => __async(this, null, function* () {\n dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: \"Timestamp deleted successfully\", state: \"success\" }\n });\n yield queryClient.invalidateQueries([\"timestamp_data\", selectedAttachment]);\n }),\n onError: (error) => {\n dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: `Error deleting timestamp: ${error}`, state: \"error\" }\n });\n }\n });\n return {\n timestampData,\n loadingTimestampData,\n updateTimestamp,\n updatingTimestamp,\n addTimestamp,\n deleteTimestamp\n };\n}\nexport function useCurrentTime(videoRef, setCurrentTime) {\n useEffect(() => {\n const videoElement = videoRef.current;\n const getCurrentTime = () => {\n if (videoRef.current) {\n setCurrentTime(secondsToTimeString(videoRef.current.currentTime));\n }\n };\n if (videoElement) {\n videoElement.addEventListener(\"timeupdate\", getCurrentTime);\n videoElement.addEventListener(\"pause\", getCurrentTime);\n }\n return () => {\n if (videoElement) {\n videoElement.removeEventListener(\"timeupdate\", getCurrentTime);\n videoElement.removeEventListener(\"pause\", getCurrentTime);\n }\n };\n }, [videoRef]);\n}\nexport const useNotepadUpdater = ({\n application,\n dispatch\n}) => {\n const queryClient = useQueryClient();\n const { isLoading, mutate } = useMutation({\n mutationFn: (note) => __async(void 0, null, function* () {\n if (application) {\n const { res } = yield Api.updateApplicationNotepad(\n application.job.id,\n application.id,\n note\n );\n return res;\n }\n }),\n onSuccess: () => {\n dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message: \"Notepad updated successfully\", state: \"success\" }\n });\n dispatch({\n type: \"SET_OVERVIEW_TAB\",\n payload: { hasUnsavedChanges: false }\n });\n queryClient.invalidateQueries([\"application\"], { exact: true });\n },\n onError: (error) => {\n dispatch({\n type: \"SET_SNACKBAR\",\n payload: {\n message: `There was an error in updating application notepad, ${error.error}`,\n state: \"error\"\n }\n });\n }\n });\n return {\n isLoading,\n mutate\n };\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { defaultSections, InitialTimeStampState } from \"./config\";\nexport const InitialApplicationState = {\n apiKey: \"\",\n snackbar: {\n message: \"\",\n state: \"success\"\n },\n modalsOpen: null,\n actions: {\n anchorEl: null\n },\n sortableSections: defaultSections,\n emailPlaceholders: \"\",\n editedTask: null,\n selectedAttachmentAction: {\n preview: null,\n delete: null\n },\n selectedFormResponseAction: {\n edit: null,\n delete: null\n },\n timeStampState: InitialTimeStampState,\n isAdminUser: false,\n userTimeZone: \"\",\n focused: false,\n userEmail: \"\",\n overviewTab: { note: \"\", hasUnsavedChanges: false },\n referenceId: null,\n selectedReferee: null\n};\nexport const ApplicationReducer = (state, action) => {\n switch (action.type) {\n case \"SET_USER_DATA\":\n return __spreadProps(__spreadValues({}, state), {\n apiKey: action.payload.apiKey,\n isAdminUser: action.payload.isAdminUser,\n userTimeZone: action.payload.userTimeZone,\n userEmail: action.payload.userEmail\n });\n case \"SET_SNACKBAR\":\n return __spreadProps(__spreadValues({}, state), { snackbar: action.payload });\n case \"SET_MODALS_OPEN\":\n return __spreadProps(__spreadValues({}, state), { modalsOpen: action.payload });\n case \"SET_ACTIONS\":\n return __spreadProps(__spreadValues({}, state), { actions: action.payload });\n case \"SET_SORTABLE_SECTIONS\":\n return __spreadProps(__spreadValues({}, state), { sortableSections: action.payload });\n case \"SET_EMAIL_PLACEHOLDERS\":\n return __spreadProps(__spreadValues({}, state), { emailPlaceholders: action.payload });\n case \"SET_EDITED_TASK\":\n return __spreadProps(__spreadValues({}, state), { editedTask: action.payload });\n case \"SET_SELECTED_ATTACHMENT_ACTION\":\n return __spreadProps(__spreadValues({}, state), { selectedAttachmentAction: action.payload });\n case \"SET_SELECTED_FORM_RESPONSE_ACTION\":\n return __spreadProps(__spreadValues({}, state), { selectedFormResponseAction: action.payload });\n case \"SET_TIMESTAMP_STATE\":\n return __spreadProps(__spreadValues({}, state), {\n timeStampState: __spreadProps(__spreadValues({}, state.timeStampState), { [action.payload.name]: action.payload.value })\n });\n case \"RESET_TIMESTAMP_STATE\":\n return __spreadProps(__spreadValues({}, state), { timeStampState: InitialTimeStampState });\n case \"SET_FOCUSED\":\n return __spreadProps(__spreadValues({}, state), { focused: action.payload });\n case \"SET_OVERVIEW_TAB\":\n return __spreadProps(__spreadValues({}, state), {\n overviewTab: __spreadValues(__spreadValues({}, state.overviewTab), action.payload)\n });\n case \"SET_UNUSUAL_ACTIVITY_DATA\":\n return __spreadProps(__spreadValues({}, state), {\n referenceId: action.payload.referenceId,\n selectedReferee: action.payload.selectedReferee\n });\n default:\n return state;\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nimport { actionsMenuPaperCommonStyles } from \"../shared/commonStyles\";\nexport const styles = {\n applicationStatusDropdownStyle: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n borderRadius: \"6px\",\n color: \"#333333\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"12px\",\n marginTop: 1,\n padding: \"6px 10px\",\n height: \"38px\"\n },\n applicationStatusPopoverStyle: {\n \"& .MuiPaper-root\": {\n minWidth: \"150px\",\n maxHeight: \"200px\",\n overflow: \"auto\",\n borderRadius: \"6px\",\n marginTop: 1\n }\n },\n actionsMenu: {\n \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n rowGap: \"11px\",\n minWidth: \"153px\",\n marginTop: \"6px\"\n })\n },\n actionsItem: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#939393\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.palette.primary.main\n }\n },\n linkedInURLInput: {\n \".MuiInputBase-input\": {\n height: \"10px\",\n margin: \"unset\",\n padding: \"4px 6px\",\n fontSize: \"11px\",\n minWidth: \"150px\",\n borderRadius: \"4px\",\n \"&::placeholder\": {\n fontStyle: \"italic\"\n }\n }\n },\n timeStampInput: {\n \".MuiInputBase-input\": {\n height: \"16px\",\n padding: \"4px 6px\",\n fontSize: \"11px\",\n minWidth: \"50px\",\n borderRadius: \"4px\",\n \"&::placeholder\": {\n fontStyle: \"italic\"\n }\n }\n },\n timeStampItem: {\n cursor: \"pointer\",\n color: theme.palette.primary.dark,\n fontFamily: \"Source Sans Pro\",\n fontWeight: 600,\n height: \"16px\",\n margin: \"unset\",\n padding: \"4px 6px\",\n fontSize: \"14px\",\n minWidth: \"50px\"\n },\n linkedInURLLink: {\n cursor: \"pointer\",\n maxWidth: \"200px\",\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n color: \"#084D6D\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n \"&:hover\": { textDecoration: \"underline\" }\n },\n modalTitle: {\n fontWeight: \"bold\",\n color: \"#084D6D\",\n fontSize: \"25px\"\n },\n clickableGreyIcon: {\n cursor: \"pointer\",\n color: \"#666666\"\n },\n scoutNavyIcon: {\n color: \"#084D6D\",\n fontSize: \"20px\"\n },\n smallGreyIcon: {\n cursor: \"pointer\",\n color: \"#666666\",\n fontSize: \"16px\"\n },\n applicationHeaderItems: {\n flexDirection: \"row\",\n columnGap: 1,\n alignItems: \"center\",\n fontSize: \"14px\",\n color: \"#333333\"\n },\n applicationHeaderActionsContainer: {\n flexDirection: \"row\",\n columnGap: 2,\n justifyContent: \"end\",\n flexGrow: 1\n },\n surroundingApplications: {\n flexDirection: \"row\",\n alignItems: \"center\",\n borderRadius: \"8px\",\n columnGap: 1,\n color: \"#939393\"\n },\n surroundingApplicationsButton: {\n border: \"1px solid #E3E3E3\",\n borderRadius: \"6px\",\n padding: \"2px 6px\",\n cursor: \"pointer\"\n },\n additionalInfoContainer: {\n padding: \"24px 0px\",\n borderRadius: \"6px\",\n border: \"1px solid #E3E3E3\",\n flexDirection: \"row\",\n columnGap: 2,\n justifyContent: \"space-around\"\n },\n AISummaryContainer: {\n padding: 3,\n borderRadius: \"6px\",\n border: \"1px solid #E3E3E3\",\n rowGap: 1\n },\n AISummaryHeader: {\n svg: { width: \"40px\", height: \"40px\" },\n flexDirection: \"row\",\n columnGap: 1,\n alignItems: \"center\"\n },\n AISummaryMessage: {\n fontWeight: 600,\n color: \"#2D388D\",\n span: { color: \"#AFBCFF\" }\n },\n AISummaryButton: {\n background: \"#7A8EF1\",\n color: \"white\",\n padding: \"6px 24px\",\n borderRadius: \"16px\",\n fontWeight: \"bold\",\n cursor: \"pointer\"\n },\n generateSummaryButton: {\n flexDirection: \"row\",\n color: \"#AFBCFF\",\n padding: \"6px 16px\",\n borderRadius: \"16px\",\n fontWeight: \"bold\",\n cursor: \"pointer\",\n border: \"2px solid #AFBCFF\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n minWidth: \"170px\"\n },\n summaryLastUpdated: {\n flexDirection: \"row\",\n columnGap: \"4px\",\n alignItems: \"center\",\n color: \"#939393\",\n fontStyle: \"italic\",\n fontSize: \"12px\"\n },\n ratingCell: {\n textAlign: \"center\",\n padding: \"4px 12px\",\n borderRadius: \"4px\",\n width: \"60px\",\n fontWeight: \"400\"\n },\n ratingInfoContainer: {\n padding: \"6px 16px\",\n margin: 1,\n border: \"1px solid #5BC4C0\",\n borderRadius: \"10px\"\n },\n ratingInfoClickable: {\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n svg: { color: \"#5BC4C0\" },\n cursor: \"pointer\"\n },\n ratingButton: {\n border: \"1px solid #E3E3E3\",\n borderRadius: \"3px\",\n padding: \"6px 10px\",\n color: \"#939393\",\n cursor: \"pointer\",\n fontWeight: 600,\n fontSize: \"14px\"\n },\n ratingColor: {\n 1: {\n color: \"#E37D7A\",\n background: \"#FCEFEF\",\n borderColor: \"#FCEFEF\"\n },\n 2: {\n color: \"#E58F66\",\n background: \"rgba(229, 143, 102, 0.12)\",\n borderColor: \"rgba(229, 143, 102, 0.12)\"\n },\n 3: {\n color: \"#E6A052\",\n background: \"#FCF4EA\",\n borderColor: \"#FCF4EA\"\n },\n 4: {\n color: \"#9BB974\",\n background: \"rgba(155, 185, 116, 0.12)\",\n borderColor: \"rgba(155, 185, 116, 0.12)\"\n },\n 5: {\n color: \"#8CCF95\",\n background: \"#EFFDF3\",\n borderColor: \"#EFFDF3\"\n }\n },\n questionnaireContainer: {\n padding: 3,\n borderRadius: \"6px\",\n border: \"1px solid #E3E3E3\",\n rowGap: 2\n },\n attachmentsContainer: {\n padding: 3,\n borderRadius: \"6px\",\n border: \"1px solid #E3E3E3\",\n rowGap: 2\n },\n ratingCard: {\n flexDirection: \"row\",\n fontSize: \"14px\",\n borderRadius: \"3px\",\n minWidth: \"170px\",\n width: \"22%\",\n padding: \"8px 16px\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n svg: { fontSize: \"14px\" }\n },\n editRating: {\n \".MuiInputBase-input\": {\n height: \"8px\",\n borderRadius: \"3px\",\n padding: 0.5,\n fontSize: \"12px\",\n fontWeight: \"bold\",\n margin: \"unset\"\n },\n \"& input::placeholder\": {\n fontSize: \"10px\"\n }\n },\n editableRatings: {\n \".MuiFormControl-root\": { width: \"45px\" },\n \".MuiStack-root\": { marginTop: \"unset\" }\n },\n sortableSectionsButton: {\n border: \"1px solid #EAEEF0\",\n borderRadius: \"6px\",\n padding: \"6px 14px\",\n height: \"min-content\",\n cursor: \"pointer\",\n \"& svg\": {\n fontSize: \"30px\",\n color: \"#084D6D\"\n }\n },\n sortableSectionsHeader: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginBottom: 1\n },\n timeslotAvailabilityButton: {\n padding: \"6px 24px\",\n borderRadius: \"6px\",\n alignItems: \"center\",\n fontWeight: \"bold\",\n width: \"min-content\"\n },\n preview: {\n color: \"#666666\",\n fontSize: \"medium\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n fileIconContainer: {\n display: \"flex\",\n alignItems: \"center\"\n },\n fileIcon: {\n cursor: \"pointer\",\n width: \"50px\",\n height: \"50px\",\n borderRadius: \"3px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: \"20px\",\n backgroundColor: \"#084D6D10\",\n \"& svg\": {\n color: theme.palette.primary.main,\n margin: \"0px 2px 2px 0px\"\n }\n },\n fileName: {\n color: theme.palette.primary.main,\n fontSize: \"15px\",\n fontWeight: \"bold\",\n cursor: \"pointer\"\n },\n fileDate: {\n color: \"#999999\"\n },\n fileAttachedBy: {\n color: \"#333333\",\n fontSize: \"15px\"\n },\n noAttachments: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n margin: \"24px 0px\"\n },\n tableWrapper: {\n tableLayout: \"auto !important\",\n border: \"none\",\n \"td, th, tr, thead\": {\n fontFamily: \"Source Sans Pro, sans-serif\",\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\",\n padding: \"12px 0px\",\n cursor: \"inherit\"\n },\n th: {\n color: theme.palette.primary.main,\n fontWeight: \"bold\",\n paddingBottom: \"16px\",\n \"& .Mui-active\": {\n color: theme.palette.primary.main\n }\n }\n },\n tableActionIcon: {\n \"&:focus\": {\n outline: \"none\"\n }\n },\n timeslotsContainer: {\n flexDirection: \"row\",\n width: \"100%\",\n maxHeight: \"290px\",\n columnGap: 2,\n rowGap: 2,\n flexFlow: \"wrap\",\n overflow: \"auto\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n },\n timeslot: {\n border: `1px solid #DDDDDD`,\n borderRadius: \"6px\",\n padding: \"8px 16px\",\n fontWeight: \"bold\",\n width: \"125px\"\n },\n timeslotSubject: {\n fontSize: \"12px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\"\n },\n noTimeslotMessage: {\n padding: 9,\n fontSize: \"20px\",\n fontWeight: \"bold\",\n color: theme.palette.common.grey\n },\n emptyStateContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n margin: \"100px 0px\"\n },\n emptyStateText: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\"\n },\n applicationPageStickyHeader: {\n position: \"sticky\",\n top: \"0px\",\n zIndex: 10,\n background: \"white\",\n rowGap: 3,\n paddingBottom: 3\n },\n emptyStateIcon: { fontSize: \"5rem\", color: \"#EAEAEA\" },\n emptyStateMessage: { color: \"#DDDDDD\", fontWeight: \"bold\" },\n smartFormsAnswersPreviewContainer: {\n \"& > div > div:first-of-type\": {\n color: theme.palette.primary.dark,\n fontWeight: \"bold\"\n },\n \"& > div > div:not(:first-of-type)\": {\n color: \"#333333\"\n },\n \"& > div\": {\n paddingLeft: 0\n }\n },\n smartFormsTableContainer: {\n tableLayout: \"auto !important\",\n border: \"none\",\n th: {\n color: theme.palette.primary.main,\n fontWeight: \"bold\",\n paddingBottom: \"16px\",\n \"& .Mui-active\": {\n color: theme.palette.primary.main\n }\n },\n \"td, th, tr, thead\": {\n fontFamily: \"Source Sans Pro, sans-serif\",\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\",\n padding: \"24px\"\n },\n \"& thead > tr\": { borderBottom: \"1px solid #E5E5E5\" },\n \"& tbody > tr:nth-of-type(2n)\": {\n borderBottom: \"1px solid #E5E5E5\"\n }\n },\n ratingInput: { flexDirection: \"row\", alignItems: \"center\", columnGap: 0.5 },\n questionsAndRatingsContainer: {\n overflow: \"auto\",\n rowGap: 2,\n flexGrow: 1\n },\n betaButtonTooltipContainer: {\n width: \"430px\",\n height: \"400px\",\n color: \"#333333\",\n fontFamily: \"Source Sans Pro\",\n rowGap: 2,\n padding: 2\n },\n candidateLink: {\n color: \"#084D6D\",\n fontSize: \"20px\",\n fontWeight: \"bold\",\n width: \"fit-content\"\n }\n};\n","\"use strict\";\nimport RecruitApiClient from \"../../RecruitApiClient\";\nconst BASE_URL = \"/api/v4\";\nclass Api {\n constructor() {\n this.getEntityApprovers = () => RecruitApiClient.get(`${BASE_URL}/requisition_managers/entity_default_approvers`);\n this.getApprovalManagers = (params) => RecruitApiClient.get(`${BASE_URL}/requisition_managers`, params);\n this.createApprovalManager = (params) => RecruitApiClient.post(`${BASE_URL}/requisition_managers`, params);\n this.deleteApprovalManager = (approvalManagerId) => RecruitApiClient.delete(`${BASE_URL}/requisition_managers/${approvalManagerId}`);\n this.deleteApprovalManagers = (params) => RecruitApiClient.delete(`${BASE_URL}/requisition_managers/bulk_destroy`, params);\n this.updateApprovalManager = (params, approvalManagerId) => RecruitApiClient.put(`${BASE_URL}/requisition_managers/${approvalManagerId}`, params);\n this.getEmailTemplates = () => RecruitApiClient.get(`${BASE_URL}/requisition_forms/email_templates`);\n this.getEnabledApprovalTemplates = () => RecruitApiClient.get(`${BASE_URL}/requisition_forms/enabled_for_applications`);\n this.createApprovalTemplate = (params) => RecruitApiClient.post(`${BASE_URL}/requisition_forms`, params);\n this.updateApprovalTemplate = (approvalTemplateId, params) => RecruitApiClient.put(`${BASE_URL}/requisition_forms/${approvalTemplateId}`, params);\n this.cloneApprovalTemplate = (approvalTemplateId, params) => RecruitApiClient.post(`${BASE_URL}/requisition_forms/${approvalTemplateId}/clone`, params);\n this.getApprovalTemplate = (approvalTemplateId) => RecruitApiClient.get(`${BASE_URL}/requisition_forms/${approvalTemplateId}`);\n this.getApprovalTemplates = (params) => RecruitApiClient.get(`${BASE_URL}/requisition_forms`, params);\n this.getApprovalForms = (params) => RecruitApiClient.get(`${BASE_URL}/requisitions`, params);\n this.getApprovalForm = (approvalFormId) => RecruitApiClient.get(`${BASE_URL}/requisitions/${approvalFormId}`);\n this.putApprovalForm = (approvalFormId, params) => RecruitApiClient.put(`${BASE_URL}/requisitions/${approvalFormId}`, params);\n this.postResendEmail = (approvalFormId, params) => RecruitApiClient.post(`${BASE_URL}/requisitions/${approvalFormId}/resend_email`, params);\n this.cloneApprovalForm = (approvalFormId) => RecruitApiClient.post(`${BASE_URL}/requisitions/${approvalFormId}/clone`);\n this.generateBulkPdf = (approvalFormId) => RecruitApiClient.post(`${BASE_URL}/requisitions/${approvalFormId}/bulk_pdf`);\n this.getTargetEntities = () => RecruitApiClient.get(`${BASE_URL}/target_entities`);\n this.moveApprovalTemplate = (approvalTemplateId, entityId) => RecruitApiClient.post(\n `${BASE_URL}/requisition_forms/${approvalTemplateId}/move?requisition_form[entity_id]=${entityId}`\n );\n this.getCreators = () => RecruitApiClient.get(`${BASE_URL}/requisition_forms/creators`);\n this.getApprovalPublicLinks = (params) => RecruitApiClient.get(`${BASE_URL}/requisition_public_links`, params);\n this.createApprovalPublicLink = (params) => RecruitApiClient.post(`${BASE_URL}/requisition_public_links`, params);\n this.updateApprovalPublicLink = (publicLinkId, params) => RecruitApiClient.put(`${BASE_URL}/requisition_public_links/${publicLinkId}`, params);\n this.deleteApprovalPublicLinks = (params) => RecruitApiClient.delete(`${BASE_URL}/requisition_public_links/bulk_destroy`, params);\n this.newField = (approvalTemplateId, params) => RecruitApiClient.post(`${BASE_URL}/fields?requisition_form_id=${approvalTemplateId}`, params);\n this.addSystemField = (approvalTemplateId, systemFieldId) => RecruitApiClient.post(\n `${BASE_URL}/system_fields?requisition_form_id=${approvalTemplateId}&system_field_id=${systemFieldId}`\n );\n this.getQuestions = (params) => RecruitApiClient.get(`${BASE_URL}/fields`, params);\n this.deleteQuestion = (id, approvalTemplateId) => RecruitApiClient.delete(`${BASE_URL}/fields/${id}?requisition_form_id=${approvalTemplateId}`);\n this.cloneQuestion = (id, approvalTemplateId) => RecruitApiClient.post(\n `${BASE_URL}/fields/${id}/clone?requisition_form_id=${approvalTemplateId}`\n );\n this.putQuestion = (id, approvalTemplateId, params) => RecruitApiClient.put(\n `${BASE_URL}/fields/${id}?requisition_form_id=${approvalTemplateId}`,\n params\n );\n this.postArchiveApprovalForms = (params) => RecruitApiClient.post(`${BASE_URL}/requisitions/bulk_archive`, params);\n this.postUnarchiveApprovalForms = (params) => RecruitApiClient.post(`${BASE_URL}/requisitions/bulk_unarchive`, params);\n this.deleteTrashApprovalForms = (params) => RecruitApiClient.delete(`${BASE_URL}/requisitions/bulk_destroy`, params);\n this.postArchiveApprovalTemplates = (params) => RecruitApiClient.post(`${BASE_URL}/requisition_forms/bulk_archive`, params);\n this.postUnarchiveApprovalTemplates = (params) => RecruitApiClient.post(`${BASE_URL}/requisition_forms/bulk_unarchive`, params);\n this.deleteTrashApprovalTemplates = (params) => RecruitApiClient.delete(`${BASE_URL}/requisition_forms/bulk_destroy`, params);\n this.getAssignableUsers = () => RecruitApiClient.get(`${BASE_URL}/assignable_users`);\n this.getCSVData = (questionId, positionId) => RecruitApiClient.get(`${BASE_URL}/system_fields/${questionId}/remote`, {\n position_id: positionId,\n new_position: false\n });\n this.getJobs = () => RecruitApiClient.get(`${BASE_URL}/jobs/jobs_for_requisitions`);\n this.getApplications = (jobId) => RecruitApiClient.get(`${BASE_URL}/jobs/${jobId}/applications_for_requisition`);\n this.getFilters = (url, params) => RecruitApiClient.get(`${BASE_URL}/requisitions/${url}`, params);\n }\n}\nexport default new Api();\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const styles = {\n noticeContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n padding: \"9px 16px\",\n border: `1px solid ${theme.palette.error.main}`,\n borderRadius: \"8px\",\n color: theme.palette.error.main,\n fontSize: \"16px\",\n margin: \"16px\",\n rowGap: \"1px\"\n },\n noticeIcon: {\n color: theme.palette.error.main,\n marginTop: \"4px\",\n fontSize: \"16px\"\n },\n toggleButtonsContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n marginTop: \"20px\",\n width: \"100%\",\n marginBottom: \"40px\",\n padding: \"0px 16px\"\n },\n toggleButton: {\n \"&.MuiToggleButtonGroup-grouped\": {\n borderRadius: \"0px !important\"\n },\n width: \"180px\",\n padding: \"4px 17px !important\",\n fontFamily: \"Source Sans Pro\",\n color: \"#666666\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n borderRadius: \"12px\",\n backgroundColor: \"#E5E5E5\",\n textTransform: \"none\",\n \"&:focus\": {\n outline: \"none\"\n }\n },\n label: {\n color: \"#333333 !important\",\n fontSize: \"16px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n marginBottom: \"6px\",\n overflowWrap: \"anywhere\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const styles = {\n actionsModal: {\n display: \"flex\",\n width: \"818px\",\n borderRadius: \"6px\",\n fontFamily: \"Source Sans Pro\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n modalTabsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"30px 0\",\n minWidth: \"255px\"\n },\n modalFormContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n flexWrap: \"wrap\",\n flexGrow: 1,\n alignItems: \"center\",\n justifyContent: \"space-between\",\n padding: \"20px\"\n },\n closeIconContainer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n width: \"100%\"\n },\n modalActions: {\n display: \"flex\",\n width: \"100%\",\n padding: \"8px 16px\",\n justifyContent: \"flex-end\",\n \"& a\": {\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n closeIcon: {\n cursor: \"pointer\",\n color: \"#DDDDDD\"\n },\n modalHeader: {\n fontSize: \"25px\",\n fontWeight: \"bold\",\n padding: \"20px 40px\",\n color: theme.palette.primary.main\n },\n tabTitle: {\n fontSize: \"18px\",\n padding: \"15px 40px\",\n flexDirection: \"row\"\n },\n hoverTabTitle: {\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n tabContent: {\n flexGrow: 1,\n width: \"100%\",\n paddingBottom: 2,\n height: \"400px\",\n overflow: \"auto\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n },\n tabContentTitle: {\n fontWeight: \"bold\",\n fontSize: \"22px\",\n color: \"#666666\",\n padding: 2,\n paddingTop: 1\n },\n tabContentBody: {\n fontSize: \"14px\",\n color: \"#939393\",\n padding: \"8px 16px\",\n borderRadius: \"4px\"\n },\n tabContentError: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\"\n },\n emailItemList: {\n display: \"flex\",\n marginTop: 3,\n justifyContent: \"space-between\",\n alignItems: \"center\"\n },\n modalSaveButton: {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFF\",\n background: \"rgb(91,196,191)\",\n borderRadius: \"6px\",\n padding: \"8px 14px\",\n boxShadow: \"none\",\n \":focus\": {\n outline: \"none\"\n },\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n selectButton: {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n padding: \"8px 14px\",\n boxShadow: \"none\",\n \":focus\": {\n outline: \"none\"\n },\n \"&:hover\": {\n backgroundColor: \"#5BC4BF\"\n }\n },\n iconGrey: {\n color: \"#666666\",\n fontSize: \"28px\"\n },\n questionListItem: {\n display: \"flex\",\n fontSize: \"14px\",\n color: \"#939393\",\n padding: \"8px 16px\",\n borderRadius: \"4px\",\n justifyContent: \"space-between\",\n \"& button\": {\n display: \"none\"\n },\n \"&:hover\": {\n backgroundColor: \"rgba(8,77,109,0.07)\",\n color: \"#000000\",\n \"& button\": {\n display: \"inline-block\"\n }\n }\n },\n questionListItemSelected: {\n display: \"flex\",\n fontSize: \"14px\",\n color: \"#939393\",\n padding: \"8px 16px\",\n borderRadius: \"4px\",\n justifyContent: \"space-between\",\n backgroundColor: \"rgba(8,77,109,0.07)\"\n }\n};\n","\"use strict\";\nexport const defaultFilters = {\n created_by: []\n};\nexport const dropdownSetting = {\n name: true,\n updated_at: true,\n created_by: true,\n note: false\n};\nexport const dropdownOptions = [\n {\n name: \"updated_at\",\n label: \"Updated At\"\n },\n {\n name: \"created_by\",\n label: \"Created By\"\n },\n {\n name: \"note\",\n label: \"Note\"\n }\n];\nexport const approvalTemplateHeaders = [\n {\n name: \"name\",\n label: \"Title\",\n sortable: true\n },\n {\n name: \"updated_at\",\n label: \"Updated At\",\n sortable: true\n },\n {\n name: \"created_by\",\n label: \"Created By\",\n sortable: true\n },\n {\n name: \"note\",\n label: \"Note\",\n sortable: false\n }\n];\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionsModalReducedPaddingCommonStyles } from \"../../shared/commonStyles\";\nimport { closeIcon } from \"../../shared/styleClasses\";\nexport const classes = {\n modalActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"auto\",\n marginBottom: \"30px\",\n width: \"100%\",\n columnGap: \"16px\",\n \"& a\": {\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n buttonRedLight: {\n color: \"#E37D7A\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"8px 18px\",\n fontWeight: \"bold\",\n fontSize: \"14px\",\n textDecoration: \"underline\",\n backgroundColor: \"#ffffff\",\n \"&:hover\": {\n color: \"#d74742\",\n backgroundColor: \"#ffffff\"\n }\n },\n revertloadButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 18px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n closeIcon,\n actionsModal: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"60px\",\n maxWidth: \"800px\",\n width: \"90%\",\n height: \"95%\",\n maxHeight: \"328px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n actionsModalReducedPadding: actionsModalReducedPaddingCommonStyles,\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n overflowY: \"scroll\",\n overflowX: \"hidden\",\n margin: \"46px 0px\"\n },\n modalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"30px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"column\"\n },\n modalEditButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 18px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n iconGrey: {\n color: \"#666666\",\n fontSize: \"28px\"\n },\n tabs: {\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n letterSpacing: \"0\",\n color: \"#939393\",\n textTransform: \"none\",\n minWidth: \"unset\",\n \"&:hover\": {\n color: \"#737373\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n \"& button.Mui-selected\": {\n fontWeight: \"600\",\n color: \"#084D6D\"\n }\n },\n tabsContainer: {\n borderBottom: 1,\n borderColor: \"#EEEEEE\",\n marginBottom: \"25px\"\n },\n tabIndicator: {\n backgroundColor: \"#5BC4BF\",\n margin: \"0 16px\"\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"30px\",\n width: \"100%\"\n },\n jobPageContainer: {\n backgroundColor: \"#FFFFFF\",\n padding: \"40px\"\n },\n jobPageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n marginBottom: \"26px\",\n padding: \"0px 16px\",\n \"& h1\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n fontSize: \"38px\",\n color: \"#666666\",\n marginTop: \"0\"\n }\n },\n backToJobButton: {\n marginBottom: \"20px\",\n fontSize: \"16px\",\n color: \"#eee\",\n opacity: \"0.8\",\n display: \"flex\",\n alignItems: \"center\",\n \"& div\": {\n fontWeight: \"600\",\n color: \"#666666\",\n \":hover\": {\n color: \"#545454\",\n cursor: \"pointer\"\n }\n }\n },\n draftButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"rgb(91,196,191)\",\n background: \"rgb(91,196,191,0.12)\",\n height: \"41px\",\n margin: \"8px 0\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 14px\",\n \"&:hover\": {\n backgroundColor: \"#5BC4BF\",\n color: \"#FFFFFF\",\n boxShadow: \"none\"\n }\n },\n cancelButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"70px\",\n textTransform: \"none\",\n textDecoration: \"underline\",\n color: theme.palette.error.main,\n backgroundColor: \"#FFFFFF\",\n height: \"41px\",\n margin: \"8px 0\",\n marginRight: \"auto\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\",\n textDecoration: \"none\",\n boxShadow: \"none\"\n }\n },\n footerButtons: {\n display: \"flex\",\n flexDirection: \"row\",\n padding: \"1em\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\"\n },\n sectionHeader: {\n fontSize: \"18px\",\n fontWeight: \"bold\",\n color: \"#666666\",\n padding: \"8px 4px\"\n },\n sectionSubtitle: {\n color: \"#838383\",\n fontFamily: \"Source Sans Pro\",\n paddingInline: \"4px\"\n },\n approversContainer: {\n display: \"flex\",\n marginTop: 3,\n alignItems: \"center\",\n padding: \"8px 0\"\n },\n fileContainer: {\n display: \"flex\",\n alignItems: \"center\",\n padding: \"5px 0\"\n },\n fileIconContainer: {\n display: \"flex\",\n alignItems: \"center\"\n },\n fileIcon: {\n width: \"50px\",\n height: \"50px\",\n borderRadius: \"3px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: \"20px\",\n backgroundColor: \"#084D6D10\",\n \"& svg\": {\n color: theme.palette.primary.main\n }\n },\n fileName: {\n color: theme.palette.primary.main,\n fontSize: \"15px\",\n fontWeight: \"bold\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n maxWidth: \"350px\"\n },\n fileSize: {\n color: \"#999999\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { closeIcon } from \"../../shared/styleClasses\";\nexport const classes = {\n modalActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"auto\",\n marginBottom: \"30px\",\n width: \"100%\",\n columnGap: \"16px\",\n \"& a\": {\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n buttonRedLight: {\n color: \"#E37D7A\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"8px 18px\",\n fontWeight: \"bold\",\n fontSize: \"14px\",\n textDecoration: \"underline\",\n backgroundColor: \"#ffffff\",\n \"&:hover\": {\n color: \"#d74742\",\n backgroundColor: \"#ffffff\"\n }\n },\n closeIcon,\n actionsModal: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"40px 60px\",\n maxWidth: \"800px\",\n width: \"90%\",\n height: \"95%\",\n maxHeight: \"400px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n modalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"30px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"column\"\n },\n modalEditButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 18px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n iconGrey: {\n color: \"#666666\",\n fontSize: \"28px\"\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"30px\",\n width: \"100%\"\n },\n autocompleteListboxStyle: {\n fontFamily: \"Source Sans Pro\",\n color: \"#333333\",\n maxHeight: \"200px\"\n },\n checkboxLabel: {\n color: \"#939393\",\n paddingLeft: \"4px\"\n },\n checkbox: {\n color: \"#DDDDDD\",\n \"&.Mui-checked\": {\n color: \"#5BC4BF\"\n }\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionsModalReducedPaddingCommonStyles } from \"../../shared/commonStyles\";\nimport {\n actionButton,\n actionModalFormLine,\n closeIcon,\n modalCreateButton\n} from \"../../shared/styleClasses\";\nexport const classes = {\n questionsPageContainer: {\n paddingTop: \"6px\",\n width: \"100%\"\n },\n pageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n padding: \"0px 16px\",\n \"& h2\": {\n fontWeight: \"bold\",\n fontSize: \"20px\",\n lineHeight: \"1.2em\",\n color: \"#666666\",\n marginTop: \"0\",\n \"@media (max-width: 1450px)\": {\n fontSize: \"20px\"\n },\n \"@media (max-width: 1260px)\": {\n fontSize: \"14px\"\n }\n }\n },\n modalWrapper: {\n height: \"100%\",\n position: \"relative\",\n display: \"contents\"\n },\n questionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"30px\",\n padding: 2,\n minWidth: \"700px\",\n position: \"relative\"\n },\n questionsHeader: {\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#084D6D\"\n },\n noQuestionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\"\n },\n noQuestionsText: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\",\n textAlign: \"center\"\n },\n actionsContianer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"space-between\",\n gap: \"22px\",\n margin: \"30px 0 30px 0\",\n padding: \"0px 16px\"\n },\n actionButton,\n settingButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: theme.palette.action.main,\n backgroundColor: \"#5BC4BF1F\",\n padding: \"10px 24px\",\n borderRadius: \"6px\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: theme.palette.action.main,\n color: theme.palette.common.white\n }\n },\n actionsModalReducedPadding: __spreadProps(__spreadValues({}, actionsModalReducedPaddingCommonStyles), {\n paddingBottom: 0\n }),\n closeIcon,\n actionModalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n marginLeft: \"15px\"\n },\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n overflow: \"auto\",\n margin: \"24px 0 0 0\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"20px\",\n width: \"100%\"\n },\n actionModalFormLine,\n modalFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\",\n marginTop: \"auto\",\n marginBottom: \"40px\"\n },\n modalFooterSmallerSection: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\",\n marginBottom: \"40px\"\n },\n modalCancelButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"100px\",\n textTransform: \"none\",\n textDecoration: \"underline\",\n color: theme.palette.error.main,\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\",\n textDecoration: \"none\",\n boxShadow: \"none\"\n }\n },\n modalCreateButton,\n formError: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n position: \"absolute\",\n top: \"-24px\",\n left: \"4px\"\n },\n inlineError: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n left: \"4px\"\n },\n checkboxContainer: {\n display: \"flex\",\n marginLeft: \"19px\"\n },\n switchLabels: {\n justifyContent: \"start\",\n width: \"120px\",\n \"& .MuiFormControlLabel-label\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n color: \"#000000\"\n },\n \"& .MuiSwitch-track\": {\n backgroundColor: \"rgba(0,0,0,0.38)\",\n opacity: \"1\"\n },\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n },\n \"& .Mui-checked\": {\n color: \"rgb(91, 196, 191, 0.5) !important\"\n }\n },\n switch: {\n \"& .MuiSwitch-thumb\": {\n color: \"#FFFFFF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n \"& .MuiSwitch-track\": {\n backgroundColor: \"#000 !important\"\n }\n }\n },\n switchActive: {\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#5BC4BF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n }\n },\n labelActive: {\n \"& .MuiFormControlLabel-label\": {\n color: \"#CCCCCC\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\"\n }\n },\n addChoiceContainer: {\n padding: \"20px 15px\"\n },\n addChoiceHead: {\n display: \"flex\",\n alignItems: \"baseline\"\n },\n addChoiceLabel: {\n color: \"#838383\",\n paddingLeft: \"4px\"\n },\n modalAddChoiceButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#5BC4BF\",\n backgroundColor: \"#5BC4BF12\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n marginTop: \"10px\",\n marginLeft: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a412\",\n boxShadow: \"none\"\n }\n },\n choice: {\n marginTop: \"15px\",\n display: \"flex\",\n alignItems: \"center\"\n },\n availabilityContainer: {\n padding: \"20px 15px\"\n },\n config: {\n marginTop: \"15px\",\n display: \"flex\",\n flexDirection: \"column\"\n },\n questionsWrapper: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: 2,\n background: \"#F3F3F3\",\n borderRadius: \"6px\"\n },\n questionInput: {\n \"& span\": {\n fontSize: \"14px !Important\"\n }\n },\n questionsTitle: {\n color: theme.palette.primary.main,\n fontSize: \"13px\",\n fontWeight: \"bold\",\n paddingBottom: \"5px\",\n width: \"70px\",\n padding: \"0 6px\"\n },\n iconGreen: {\n color: theme.palette.success.main,\n fontSize: \"1.25rem\",\n margin: \"auto\",\n display: \"flex\"\n },\n iconRed: {\n color: theme.palette.error.main,\n fontSize: \"1.25rem\",\n margin: \"auto\",\n display: \"flex\"\n },\n weightValue: {\n fontSize: \"13px\",\n textAlign: \"center\"\n },\n noticeContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"left\",\n padding: \"9px 16px\",\n border: `1px solid ${theme.palette.action.main}`,\n borderRadius: \"8px\",\n color: \"#939393\",\n fontSize: \"16px\",\n margin: \"16px\",\n rowGap: \"1px\"\n },\n noticeIcon: {\n color: theme.palette.error.main,\n marginTop: \"4px\",\n fontSize: \"16px\"\n },\n dragHandle: {\n color: \"#939393\",\n fontSize: 30,\n padding: \"6px\",\n marginRight: \"10px\",\n \"&:hover\": {\n borderRadius: \"8px\",\n backgroundColor: \"#DDDDDD\"\n },\n outline: \"none\"\n },\n sortableItemSwitchContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"0 6px\",\n marginBlock: \"auto\",\n minWidth: \"120px\"\n },\n availabilityTableHeader: {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: \"#084D6D\",\n textTransform: \"capitalize\",\n border: \"unset\",\n padding: \"0px 8px\",\n background: \"inherit\"\n },\n availabilityTableBody: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n border: \"unset\",\n padding: \"2px 8px\"\n },\n tableTextfield: {\n minWidth: \"80px\",\n \"& .MuiInputBase-input\": {\n height: \"18px\",\n margin: \"unset\"\n }\n },\n tableTimeTextfield: {\n \"& .MuiInputBase-input\": {\n fontSize: \"12px\",\n height: \"18px\",\n margin: \"unset\"\n }\n },\n tableDivider: {\n padding: \"4px 0px\",\n border: \"unset\"\n },\n infoIcon: {\n color: theme.palette.action.main,\n marginTop: \"4px\",\n fontSize: \"16px\"\n },\n toggleButtonsContainer: {\n marginTop: \"40px\",\n marginBottom: \"40px\",\n padding: \"0px 16px\"\n }\n};\n","\"use strict\";\nexport const approvalTemplateFormOptions = [\n {\n id: \"hide_position_title\",\n name: \"Hide Position Title\",\n tip: \"Ticking this box will hide the Job 'Position Title' field when viewing or editing an Approval Form which has been created from this template.\"\n },\n {\n id: \"hide_approval_administrator\",\n name: \"Hide approval administrator\",\n tip: \"The Approval administrator receives a notification email when all approvers have approved or declined the approval form. You will not be able to select an Approval Administrator if \\u2018Hide Approval Administrator\\u2019 is ticked. \"\n },\n {\n id: \"hide_assigned_user\",\n name: \"Hide assigned user\",\n tip: \"The Assigned user will be shown within an Assigned user column on the approvals homepage. This column will not display if 'hide assigned user' is selected\"\n },\n {\n id: \"enable_approval_template_for_applications\",\n name: \"Enable Approval Template for Applications\"\n },\n {\n id: \"hide_email_template\",\n name: \"Hide email template selection from approval form\"\n }\n];\nexport const optionsBooleanValues = (options) => {\n if (!options) return;\n return {\n hide_position_title: Number(options.hide_position_title) === 1 ? true : false,\n hide_approval_administrator: Number(options.hide_approval_administrator) === 1 ? true : false,\n hide_assigned_user: Number(options.hide_assigned_user) === 1 ? true : false,\n enable_approval_template_for_applications: Number(options.enable_approval_template_for_applications) === 1 ? true : false,\n hide_email_template: Number(options.hide_email_template) === 1 ? true : false,\n enable_declaration_of_conflict_of_interest: Number(options.enable_declaration_of_conflict_of_interest) === 1 ? true : false\n };\n};\nexport const optionsNumericValues = (options) => {\n return {\n hide_position_title: (options == null ? void 0 : options.hide_position_title) ? 1 : 0,\n hide_approval_administrator: (options == null ? void 0 : options.hide_approval_administrator) ? 1 : 0,\n hide_assigned_user: (options == null ? void 0 : options.hide_assigned_user) ? 1 : 0,\n enable_approval_template_for_applications: (options == null ? void 0 : options.enable_approval_template_for_applications) ? 1 : 0,\n hide_email_template: (options == null ? void 0 : options.hide_email_template) ? 1 : 0,\n enable_declaration_of_conflict_of_interest: (options == null ? void 0 : options.enable_declaration_of_conflict_of_interest) ? 1 : 0\n };\n};\nexport const defaultFilters = {\n state: [],\n entity_ids: [],\n assigned_user_ids: [],\n requested_by_users: []\n};\nexport const dropdownOptions = [\n {\n name: \"created_at\",\n label: \"Created At\"\n },\n {\n name: \"updated_at\",\n label: \"Updated At\"\n },\n {\n name: \"requested_by\",\n label: \"Requested By\"\n },\n {\n name: \"state\",\n label: \"State\"\n },\n {\n name: \"entity\",\n label: \"Entity\"\n },\n {\n name: \"form_template\",\n label: \"Form Template\"\n },\n {\n name: \"assigned_user\",\n label: \"Assigned User\"\n },\n {\n name: \"note\",\n label: \"Notes\"\n }\n];\nexport const defaultFilterOptions = {\n state: [\n {\n value: \"pending\",\n name: \"Pending\"\n },\n {\n value: \"approved\",\n name: \"Approved\"\n },\n {\n value: \"draft\",\n name: \"Draft\"\n },\n {\n value: \"declined\",\n name: \"Declined\"\n }\n ]\n};\nexport const sortableColumnsDefaults = [\n {\n id: \"id\",\n label: \"ID\",\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: \"position_title\",\n label: \"Title\",\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: \"created_at\",\n label: \"Created At\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: \"updated_at\",\n label: \"Updated At\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: \"requested_by\",\n label: \"Requested By\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: \"state\",\n label: \"State\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: \"entity\",\n label: \"Entity\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: \"form_template\",\n label: \"Form Template\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: \"assigned_user\",\n label: \"Assigned User\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: \"note\",\n label: \"Notes\",\n sortable: false,\n canToggle: true,\n enabled: false\n }\n];\nexport const settingTabs = [\n \"Approval template title\",\n \"Default approvers\",\n \"Advanced\",\n \"Approval form title\"\n];\nexport const approvalManagersTableHeaders = [\n {\n name: \"name\",\n label: \"Name\",\n sortable: true\n },\n {\n name: \"email\",\n label: \"Email\",\n sortable: true\n }\n];\nexport const approvalPublicLinkHeaders = [\n {\n name: \"name\",\n label: \"Name\",\n sortable: true\n },\n {\n name: \"public_link\",\n label: \"Public Links\",\n sortable: false\n },\n {\n name: \"approval_template_name\",\n label: \"Approval Template Name\",\n sortable: true\n },\n {\n name: \"created_by\",\n label: \"Created By\",\n sortable: true\n }\n];\n","\"use strict\";\nexport function isPermittedOption(id, userPermissions) {\n var _a, _b;\n switch (id) {\n case \"assigned_user\":\n return !!((_a = userPermissions == null ? void 0 : userPermissions[\"Approval Forms\"]) == null ? void 0 : _a[\"Assign User To Requisition\"]);\n case \"note\":\n return !!((_b = userPermissions == null ? void 0 : userPermissions[\"Approval Forms\"]) == null ? void 0 : _b[\"Manage Approval Form Notes\"]);\n default:\n return true;\n }\n}\n","\"use strict\";\nimport ApprovalForms from \"./ApprovalForms\";\nexport default ApprovalForms;\n","\"use strict\";\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nimport { filterPopoverHeaderCommonStyles } from \"../shared/commonStyles\";\nimport {\n searchInput,\n actionsMenu,\n sortableSwitchLabels,\n closeIcon,\n switchLabels,\n clearButton,\n applyButton\n} from \"../shared/styleClasses\";\nexport const styles = {\n tabs: {\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n letterSpacing: \"0\",\n color: \"#939393\",\n textTransform: \"none\",\n minWidth: \"unset\",\n \"&:hover\": {\n color: \"#737373\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n \"& button.Mui-selected\": {\n fontWeight: \"600\",\n color: \"#084D6D\"\n }\n },\n tabIndicator: {\n backgroundColor: \"#5BC4BF\",\n margin: \"0 16px\"\n },\n filtersRow: {\n display: \"flex\",\n alignItems: \"flex-end\",\n justifyContent: \"space-between\",\n marginBottom: \"30px\",\n columnGap: \"17px\"\n },\n jobPageContainer: {\n backgroundColor: \"#FFFFFF\",\n padding: \"40px\"\n },\n tabsContainer: {\n borderBottom: 1,\n borderColor: \"#EEEEEE\",\n margin: \"25px 0\"\n },\n searchInput,\n jobPageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n marginBottom: \"26px\",\n padding: \"0px 16px\",\n \"& h1\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n fontSize: \"38px\",\n color: \"#666666\",\n marginTop: \"0\"\n }\n },\n multiposterContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"40px\"\n },\n iconButton: {\n border: \"1px solid #EAEEF0\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n width: \"69px\",\n height: \"60px\",\n \"& svg\": {\n fontSize: \"30px\",\n color: \"#084D6D\",\n transform: \"translateY(1px)\"\n }\n },\n iconButtonOpen: {\n backgroundColor: \"rgba(8,77,109,0.121)\"\n },\n popover: {\n zIndex: 12,\n background: \"inherit\"\n },\n filterPopoverContent: {\n width: \"272px\",\n height: \"auto\",\n overflowY: \"visible\",\n boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\",\n marginTop: 2,\n msOverflowStyle: \"none\",\n scrollbarWidth: \"none\",\n position: \"relative\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n },\n scrollableFilters: {\n height: \"fit-content\",\n padding: \"26px\",\n paddingTop: \"0px\"\n },\n filterPopoverHeader: filterPopoverHeaderCommonStyles,\n clearButton,\n applyButton,\n filterOptionContainer: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#084D6D\",\n marginBottom: \"12px\"\n },\n popoverContent: {\n width: \"272px\",\n padding: \"22px 0px 22px 24px\",\n boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\",\n marginTop: 2\n },\n switchLabels,\n labelActive: {\n \"& .MuiFormControlLabel-label\": {\n color: \"#CCCCCC\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\"\n }\n },\n switch: {\n \"& .MuiSwitch-thumb\": {\n color: \"#FFFFFF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n \"& .MuiSwitch-track\": {\n backgroundColor: \"#000 !important\"\n }\n }\n },\n switchActive: {\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#5BC4BF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n }\n },\n iconButtonSelected: {\n backgroundColor: \"rgba(8,77,109,0.121)\"\n },\n modalActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"auto\",\n marginBottom: \"30px\",\n width: \"100%\",\n columnGap: \"16px\",\n \"& a\": {\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n buttonRedLight: {\n color: \"#E37D7A\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"8px 18px\",\n fontWeight: \"bold\",\n fontSize: \"14px\",\n textDecoration: \"underline\",\n backgroundColor: \"#ffffff\",\n \"&:hover\": {\n color: \"#d74742\",\n backgroundColor: \"#ffffff\"\n }\n },\n normalButton: {\n color: \"#000000\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"8px 18px\",\n fontSize: \"14px\",\n textDecoration: \"underline\",\n backgroundColor: \"#ffffff\",\n \"&:hover\": {\n backgroundColor: \"#ffffff\"\n }\n },\n revertloadButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 18px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n closeIcon,\n actionsModal: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"20px 60px\",\n maxWidth: \"800px\",\n width: \"90%\",\n maxHeight: \"700px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n overflow: \"auto\"\n },\n modalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main\n },\n approversHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n color: \"#666666\"\n },\n modalEditButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"rgb(91,196,191)\",\n background: \"rgb(91,196,191,0.12)\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 14px\",\n \"&:hover\": {\n backgroundColor: \"#5BC4BF\",\n color: \"#FFFFFF\",\n boxShadow: \"none\"\n }\n },\n iconGrey: {\n color: \"#666666\",\n fontSize: \"28px\"\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: 2,\n width: \"100%\"\n },\n backButton: {\n marginLeft: 1,\n fontSize: \"16px\",\n color: \"#eee\",\n opacity: \"0.8\",\n display: \"flex\",\n alignItems: \"center\",\n \"& div\": {\n fontWeight: \"600\",\n color: \"#666666\",\n \":hover\": {\n color: \"#545454\",\n cursor: \"pointer\"\n }\n }\n },\n modalSaveButton: {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"rgb(91,196,191)\",\n background: \"rgb(91,196,191,0.12)\",\n borderRadius: \"6px\",\n padding: \"8px 14px\",\n \"&:hover\": {\n backgroundColor: \"#5BC4BF\",\n color: \"#FFFFFF\",\n boxShadow: \"none\"\n }\n },\n approverItemList: {\n display: \"flex\",\n marginTop: 3,\n justifyContent: \"space-between\",\n alignItems: \"center\",\n columnGap: 2\n },\n tableSettingsHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n paddingBottom: 1,\n paddingLeft: \"4px\"\n },\n statusContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n columnGap: \"20px\",\n padding: \"8px 16px\"\n },\n backToApprovalFormsButton: {\n marginBottom: \"20px\",\n fontSize: \"16px\",\n color: \"#eee\",\n opacity: \"0.8\",\n display: \"flex\",\n alignItems: \"center\",\n \"& div\": {\n fontWeight: \"600\",\n color: \"#666666\",\n \":hover\": {\n color: \"#545454\",\n cursor: \"pointer\"\n }\n }\n },\n approvalFormSubtitle: {\n color: \"#939393\",\n paddingLeft: 2,\n paddingBottom: 2,\n fontSize: \"16px\"\n },\n approved: {\n color: \"#8CCF95\",\n backgroundColor: \"RGBA(140, 207, 149, 0.12)\"\n },\n draft: {\n color: \"#FFFFFF\",\n backgroundColor: \"#CCCCCC\"\n },\n pending: {\n color: \"#E6A052\",\n backgroundColor: \"RGBA(230, 160, 82, 0.12)\"\n },\n declined: {\n color: \"#D6827D\",\n backgroundColor: \"RGBA(214, 130, 125, 0.12)\"\n },\n approverTableStateButton: {\n alignItems: \"center\",\n fontWeight: \"bold\",\n fontFamily: \"Source Sans Pro\",\n width: \"105px\",\n padding: \"2px 12px\",\n borderRadius: \"6px\",\n textTransform: \"uppercase\"\n },\n questionLabel: {\n color: \"#939393\",\n fontSize: \"14px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n paddingBottom: 1,\n overflowWrap: \"anywhere\"\n },\n sectionHeader: {\n fontSize: \"18px\",\n fontWeight: \"bold\",\n color: \"#666666\",\n padding: \"8px 0px\"\n },\n approversTableHeader: {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: \"#084D6D\",\n border: \"unset\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"capitalize\",\n padding: 1\n },\n approversTableCell: {\n border: \"unset\",\n padding: 1\n },\n coiColumn: {\n height: `50px`,\n margin: \"0 auto\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\"\n },\n link: {\n marginTop: \"5px\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n cursor: \"pointer\",\n color: theme.palette.primary.main\n },\n actionGroup: {\n display: \"flex\",\n alignItems: \"center\"\n },\n availabilityTableBody: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n border: \"unset\",\n padding: 1\n },\n availabilityTableHeader: {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: \"#084D6D\",\n textTransform: \"capitalize\",\n border: \"unset\",\n backgroundColor: \"inherit\",\n padding: \"2px 8px\"\n },\n fileIcon: {\n width: \"50px\",\n height: \"50px\",\n borderRadius: \"3px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: \"20px\",\n backgroundColor: \"#084D6D10\",\n \"& svg\": {\n color: theme.palette.primary.main,\n margin: \"0px 2px 2px 0px\"\n }\n },\n fileName: {\n color: theme.palette.primary.main,\n fontSize: \"16px\",\n fontWeight: \"bold\"\n },\n automationContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n marginBottom: \"40px\",\n h2: {\n fontSize: \"20px\",\n fontWeight: \"bold\",\n color: \"#666666\",\n marginBottom: \"24px\"\n }\n },\n toggleButtonsContainer: {\n marginTop: \"20px\",\n marginBottom: \"40px\"\n },\n actionsMenu,\n applicationIcon: {\n fontSize: \"24px\",\n \"& svg\": { color: theme.palette.primary.main }\n },\n approvalFormIconsContainer: {\n flexGrow: 1,\n flexDirection: \"row\",\n justifyContent: \"end\",\n columnGap: 1,\n marginTop: 1\n },\n mandatoryLabel: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n marginLeft: 1\n },\n sortableField: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"204px\"\n },\n sortableSwitchLabels\n};\n","\"use strict\";\nimport RecruitApiClient from \"../../RecruitApiClient\";\nclass Api {\n constructor() {\n this.getCandidateData = (candidateId) => RecruitApiClient.get(`/api/v4/candidates/${candidateId}`, null);\n this.updateCandidateTags = (candidateId, tags) => RecruitApiClient.post(`/api/v4/candidates/${candidateId}/update_tags`, { tags });\n this.getCandidateApplications = (candidateId, params) => RecruitApiClient.get(`/api/v4/candidates/${candidateId}/applications`, params);\n this.getCandidateTasks = (candidateId) => RecruitApiClient.get(`/api/v4/candidates/${candidateId}/tasks`);\n this.getAssignableUsers = () => RecruitApiClient.get(`/api/v4/tasks/assignable_users`);\n this.createCandidateTask = (candidateId, params) => RecruitApiClient.post(`/api/v4/candidates/${candidateId}/tasks`, params);\n this.deleteCandidateTask = (candidateId, taskId) => RecruitApiClient.delete(`/api/v4/candidates/${candidateId}/tasks/${taskId}`);\n this.updateCandidateTask = (candidateId, taskId, params) => RecruitApiClient.put(`/api/v4/candidates/${candidateId}/tasks/${taskId}`, params);\n this.getWorkflows = (candidateId) => RecruitApiClient.get(`/api/v4/workflows?candidate_id=${candidateId}`);\n this.assignWorkflow = (candidateId, params) => RecruitApiClient.post(`/api/v4/workflows?candidate_id=${candidateId}`, params);\n this.getCandidateActivities = (candidateId) => RecruitApiClient.get(`/api/v4/candidates/${candidateId}/activities`);\n this.addCandidateNote = (candidateId, params) => RecruitApiClient.post(`/api/v4/candidates/${candidateId}/add_note`, { note: params });\n this.mergeCandidates = (candidateId) => RecruitApiClient.post(`/api/v4/candidates/${candidateId}/merge`);\n this.getUserPermissions = () => RecruitApiClient.get(`/api/v4/user_permissions`);\n this.updateCandidateNotepad = (candidateId, body) => RecruitApiClient.put(`/api/v4/candidates/${candidateId}/update_notepad`, { body });\n }\n}\nexport default new Api();\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { candidateApplicationsTableColumn } from \"./config\";\nexport const InitialCandidateState = {\n snackbar: {\n message: \"\",\n state: \"success\"\n },\n candidateApplicationsTableState: {\n canScroll: [false, true],\n tableHovered: false,\n density: \"Default\",\n columns: candidateApplicationsTableColumn,\n selectedItemIds: [],\n selectedItems: [],\n actions: {\n selectedItem: null,\n anchorEl: null,\n isOpen: {\n delete: false,\n edit: false\n }\n },\n modalsOpen: { edit: false }\n },\n candidateApplicationsTableSettings: {\n page: 1,\n limit: 10,\n sort: \"created_at\",\n sort_order: \"desc\"\n },\n candidateTaskModalIsOpen: false,\n editedTask: null,\n taskWorkflowModalIsOpen: false,\n openEditModal: false,\n openDeleteModal: false,\n focused: false\n};\nexport const CandidateReducer = (state, action) => {\n switch (action.type) {\n case \"SET_SNACKBAR\":\n return __spreadProps(__spreadValues({}, state), { snackbar: action.payload });\n case \"SET_CAN_SCROLL\":\n return __spreadProps(__spreadValues({}, state), {\n candidateApplicationsTableState: __spreadProps(__spreadValues({}, state.candidateApplicationsTableState), {\n canScroll: action.payload\n })\n });\n case \"SET_TABLE_HOVERED\":\n return __spreadProps(__spreadValues({}, state), {\n candidateApplicationsTableState: __spreadProps(__spreadValues({}, state.candidateApplicationsTableState), {\n tableHovered: action.payload\n })\n });\n case \"SET_SORT\":\n return __spreadProps(__spreadValues({}, state), {\n candidateApplicationsTableSettings: __spreadProps(__spreadValues({}, state.candidateApplicationsTableSettings), {\n sort: action.payload.sortBy,\n sort_order: action.payload.sortOrder\n })\n });\n case \"SET_PAGE\":\n return __spreadProps(__spreadValues({}, state), {\n candidateApplicationsTableSettings: __spreadProps(__spreadValues({}, state.candidateApplicationsTableSettings), {\n page: action.payload\n })\n });\n case \"SET_LIMIT\":\n return __spreadProps(__spreadValues({}, state), {\n candidateApplicationsTableSettings: __spreadProps(__spreadValues({}, state.candidateApplicationsTableSettings), {\n limit: action.payload\n })\n });\n case \"OPEN_TASK_MODAL\":\n return __spreadProps(__spreadValues({}, state), { candidateTaskModalIsOpen: action.payload });\n case \"SET_EDITED_TASK\":\n return __spreadProps(__spreadValues({}, state), { editedTask: action.payload });\n case \"OPEN_TASK_WORKFLOW_MODAL\":\n return __spreadProps(__spreadValues({}, state), { taskWorkflowModalIsOpen: action.payload });\n case \"OPEN_EDIT_MODAL\":\n return __spreadProps(__spreadValues({}, state), { openEditModal: action.payload });\n case \"OPEN_DELETE_MODAL\":\n return __spreadProps(__spreadValues({}, state), { openDeleteModal: action.payload });\n case \"SET_FOCUSED\":\n return __spreadProps(__spreadValues({}, state), { focused: action.payload });\n default:\n return state;\n }\n};\n","\"use strict\";\nexport const styles = {\n candidateHeaderContainer: {\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n paddingBottom: 2\n },\n candidateNameHeader: {\n fontSize: \"35px\",\n fontWeight: \"bold\",\n color: \"#666666\"\n },\n candidateActionIconsContainer: {\n flexDirection: \"row\",\n color: \"#666666\",\n columnGap: 3,\n \"& svg\": {\n cursor: \"pointer\"\n }\n },\n candidateTabs: {\n \"& .MuiTabs-flexContainer\": { columnGap: 2 },\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: 500,\n fontSize: \"16px\",\n textTransform: \"capitalize\",\n color: \"#939393\",\n minWidth: \"unset\",\n padding: \"12px 8px\",\n \"&:focus\": { outline: \"none\" }\n },\n \"& button.Mui-selected\": { color: \"#084D6D\", fontWeight: 600 }\n },\n candidateTabIndicator: {\n backgroundColor: \"#5BC4C0\",\n marginLeft: \"0.5em\"\n },\n candidateProfileDetails: {\n flexDirection: \"row\",\n columnGap: 2,\n alignItems: \"center\"\n },\n candidateProfileAddress: {\n flexDirection: \"row\",\n columnGap: 2,\n alignItems: \"start\",\n width: \"75%\"\n },\n candidateApplicationsTableLink: {\n \"& a\": {\n color: \"#000000\"\n }\n },\n candidateApplicationsTableStatusContainer: {\n border: \"1px solid #E3E3E3\",\n borderRadius: \"6px\",\n flexDirection: \"row\",\n columnGap: 1,\n padding: 1,\n alignItems: \"center\"\n },\n High: {\n background: \"rgba(227, 125, 122, 0.12)\",\n color: \"#E37D7A\"\n },\n Normal: {\n background: \"rgba(230, 160, 82, 0.12)\",\n color: \"#E6A052\"\n },\n Low: {\n background: \"rgba(140, 207, 149, 0.12)\",\n color: \"#8CCF95\"\n },\n candidateTaskChip: {\n padding: \"0px 8px\",\n fontWeight: 600,\n fontSize: \"12px\",\n height: \"25px\",\n maxWidth: \"220px\"\n },\n modalContainer: {\n maxHeight: \"unset\",\n width: \"800px\",\n padding: \"40px\",\n height: \"auto\"\n },\n modalContent: {\n width: \"100%\",\n height: \"100%\",\n rowGap: 3,\n overflow: \"auto\"\n },\n modalTitle: {\n fontWeight: \"bold\",\n color: \"#084D6D\",\n fontSize: \"25px\"\n },\n modalCandidateName: {\n color: \"#666666\",\n fontWeight: \"bold\"\n },\n prioritySelectStyling: {\n width: \"250px\",\n \"& .MuiInputBase-input\": {\n margin: \"unset\",\n marginTop: \"1px\",\n padding: \"7px 16px\"\n }\n },\n listboxProps: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#333333\",\n maxHeight: \"200px\"\n },\n autoCompleteTextfield: {\n \"& .MuiFormHelperText-root.Mui-error\": {\n color: \"#E37D7A\",\n margin: \"0px 3px\",\n fontFamily: \"inherit\"\n }\n },\n showNoteContainer: {\n padding: 3,\n borderRadius: \"6px\",\n boxShadow: \"0px 0px 30px -18px #0000004D inset\",\n rowGap: 1,\n maxHeight: \"480px\"\n },\n htmlEditor: {\n \"& .tox-editor-header, .tox-statusbar\": { display: \"none !important\" },\n \"& .tox-tinymce\": { border: \"unset\" },\n \"& .mce-content-body\": { fontFamily: \"Source Sans Pro\" }\n },\n candidateSectionContainer: {\n padding: 3,\n border: \"1px solid #E3E3E3\",\n borderRadius: \"6px\"\n },\n candidateSectionHeader: { fontSize: \"16px\", fontWeight: 600, color: \"#333333\" },\n candidateApplicationsRating: {\n fontWeight: 600,\n borderRadius: \"3px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"25px\"\n },\n candidateNameContainer: {\n flexDirection: \"row\",\n fontSize: \"20px\",\n fontWeight: \"bold\",\n color: \"#084D6D\",\n columnGap: 1\n },\n linkedInButton: {\n padding: \"3px\",\n minWidth: \"unset\",\n border: \"1px solid #E3E3E3\",\n borderRadius: \"6px\",\n \"&:focus\": {\n outline: \"none\"\n },\n \"&:hover\": {\n outline: \"none\",\n borderColor: \"#E3E3E3\",\n background: \"transparent\"\n }\n },\n timestamp: {\n minWidth: \"60px\",\n alignItems: \"end\",\n color: \"#939393\",\n fontWeight: 600\n },\n emailStatus: {\n fontWeight: \"bold\",\n borderRadius: \"6px\",\n textTransform: \"uppercase\",\n width: \"min-content\",\n padding: \"4px 20px\",\n margin: \"8px 0px\"\n },\n listStyle: {\n maxHeight: \"144px\",\n overflow: \"auto\"\n }\n};\n","\"use strict\";\nimport RecruitApiClient from \"../../RecruitApiClient\";\nclass Api {\n constructor() {\n this.getCandidates = (params) => RecruitApiClient.get(`/api/v4/candidates`, params);\n this.getPreferences = () => RecruitApiClient.get(`/api/v4/ui_preferences?source=candidates`);\n this.getDensityPreferences = () => RecruitApiClient.get(`/api/v4/ui_preferences?source=universal`);\n this.postUserPreferences = (params) => RecruitApiClient.post(`/api/v4/ui_preferences`, {\n ui_preference: {\n row_count: params.limit,\n sorting: {\n sortBy: params.sort,\n sortOrder: params.sortOrder\n },\n source: `candidates`\n }\n });\n this.deleteCandidate = (candidateId) => RecruitApiClient.delete(`/api/v4/candidates/${candidateId}`);\n this.updateCandidate = (candidateId, params) => RecruitApiClient.put(`/api/v4/candidates/${candidateId}`, { candidate: params });\n this.getCountriesStates = () => RecruitApiClient.get(\"/api/system/v1/countries_states.json\");\n this.getUserPermissions = () => RecruitApiClient.get(`/api/v4/user_permissions`);\n }\n}\nexport default new Api();\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { candidatesTableColumn } from \"./config\";\nexport const InitialCandidatesState = {\n snackbar: {\n message: \"\",\n state: \"success\"\n },\n candidatesTableState: {\n canScroll: [false, true],\n tableHovered: false,\n density: \"Default\",\n columns: candidatesTableColumn,\n selectedItemIds: [],\n selectedItems: [],\n actions: {\n selectedItem: null,\n anchorEl: null,\n isOpen: {\n delete: false,\n edit: false\n }\n },\n modalsOpen: { edit: false }\n },\n candidatesTableSettings: {\n page: Number(sessionStorage.getItem(`candidatesTablePage`)) || 1,\n limit: 10,\n sort: \"firstname\",\n sort_order: \"asc\"\n },\n searchQuery: \"\"\n};\nexport const CandidatesReducer = (state, action) => {\n switch (action.type) {\n case \"SET_SNACKBAR\":\n return __spreadProps(__spreadValues({}, state), { snackbar: action.payload });\n case \"SET_SEARCH_QUERY\":\n return __spreadProps(__spreadValues({}, state), {\n candidatesTableSettings: __spreadProps(__spreadValues({}, state.candidatesTableSettings), { page: 1 }),\n searchQuery: action.payload\n });\n case \"SET_DENSITY\":\n return __spreadProps(__spreadValues({}, state), {\n candidatesTableState: __spreadProps(__spreadValues({}, state.candidatesTableState), {\n density: action.payload\n })\n });\n case \"SET_CAN_SCROLL\":\n return __spreadProps(__spreadValues({}, state), {\n candidatesTableState: __spreadProps(__spreadValues({}, state.candidatesTableState), {\n canScroll: action.payload\n })\n });\n case \"SET_TABLE_HOVERED\":\n return __spreadProps(__spreadValues({}, state), {\n candidatesTableState: __spreadProps(__spreadValues({}, state.candidatesTableState), {\n tableHovered: action.payload\n })\n });\n case \"SET_SORT\":\n return __spreadProps(__spreadValues({}, state), {\n candidatesTableSettings: __spreadProps(__spreadValues({}, state.candidatesTableSettings), {\n sort: action.payload.sortBy,\n sort_order: action.payload.sortOrder\n })\n });\n case \"SET_PAGE\":\n return __spreadProps(__spreadValues({}, state), {\n candidatesTableSettings: __spreadProps(__spreadValues({}, state.candidatesTableSettings), {\n page: action.payload\n })\n });\n case \"SET_LIMIT\":\n return __spreadProps(__spreadValues({}, state), {\n candidatesTableSettings: __spreadProps(__spreadValues({}, state.candidatesTableSettings), {\n limit: action.payload\n })\n });\n case \"SELECT_ACTION_ITEM\":\n return __spreadProps(__spreadValues({}, state), {\n candidatesTableState: __spreadProps(__spreadValues({}, state.candidatesTableState), {\n actions: __spreadProps(__spreadValues({}, state.candidatesTableState.actions), {\n selectedItem: action.payload.item,\n anchorEl: action.payload.anchorEl,\n isOpen: __spreadProps(__spreadValues({}, state.candidatesTableState.actions.isOpen), {\n [action.payload.name]: true\n })\n })\n })\n });\n case \"CLOSE_ACTION_ITEM\":\n return __spreadProps(__spreadValues({}, state), {\n candidatesTableState: __spreadProps(__spreadValues({}, state.candidatesTableState), {\n actions: __spreadProps(__spreadValues({}, state.candidatesTableState.actions), {\n selectedItem: null,\n isOpen: __spreadProps(__spreadValues({}, state.candidatesTableState.actions.isOpen), {\n [action.payload]: false\n }),\n anchorEl: null\n })\n })\n });\n default:\n return state;\n }\n};\n","\"use strict\";\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nexport const styles = {\n candidatesPageContainer: {\n backgroundColor: theme.palette.common.white,\n padding: \"40px\",\n rowGap: 4\n },\n candidatesPageHeader: {\n fontWeight: \"bold\",\n fontSize: \"38px\",\n color: \"#666666\"\n },\n editCandidateModalDetailsHeader: {\n fontWeight: \"bold\",\n color: \"#666666\",\n fontSize: \"18px\"\n },\n editCandidateModalContent: {\n rowGap: 4,\n overflow: \"auto\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n },\n editCandidateModalDetailsRows: {\n flexDirection: \"row\",\n columnGap: 4\n },\n editCandidateListboxStyle: {\n fontFamily: \"Source Sans Pro\",\n color: \"#333333\",\n maxHeight: \"200px\"\n },\n editCandidateAutocompleteTextfield: {\n input: { \"&::placeholder\": { opacity: 1, color: \"#838383\" } },\n \"& .MuiFormHelperText-root.Mui-error\": {\n color: \"#E37D7A\",\n margin: \"0px 3px\",\n fontFamily: \"inherit\"\n }\n },\n streetTypesAutocomplete: {\n width: \"100%\",\n paddingTop: 3,\n \".MuiInputBase-root\": {\n margin: \"3px 0px\",\n \"& .MuiAutocomplete-input\": {\n padding: \"6px 4px 6px 11px\"\n }\n }\n }\n};\n","\"use strict\";\nimport dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\nimport timezone from \"dayjs/plugin/timezone\";\ndayjs.extend(utc);\ndayjs.extend(timezone);\nconst browserTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\nexport const startOfDay = (date, userTimezone) => {\n return dayjs.utc(date).startOf(\"day\").tz(userTimezone || browserTimezone);\n};\nexport const endOfDay = (date, userTimezone) => {\n return dayjs.utc(date).endOf(\"day\").tz(userTimezone || browserTimezone);\n};\n","\"use strict\";\nexport const styles = {\n label: {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n fontSize: \"13px\",\n color: \"#666666\",\n width: \"fit-content\",\n height: \"24px\"\n },\n chipContainer: {\n width: \"min-content\",\n zIndex: 0,\n position: \"relative\"\n },\n tagContent: {\n backgroundColor: \"rgba(0, 0, 0, 0.08)\",\n width: \"40px\",\n display: \"flex\",\n position: \"relative\",\n alignItems: \"center\",\n marginLeft: \"-10px\",\n borderRadius: \"16px\",\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n height: \"24px\"\n },\n styledChip: {\n position: \"absolute\",\n width: \"30%\",\n backgroundColor: \"rgb(255, 255, 255)\",\n left: -3,\n height: \"100%\",\n borderBottomRightRadius: \"16px\",\n borderTopRightRadius: \"16px\"\n },\n styledChipLabel: {\n marginLeft: \"15px\",\n textTransform: \"none\",\n display: \"flex\",\n alignItems: \"center\"\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { alpha } from \"@mui/material/styles\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionModalFormLine, checkboxLabel, closeIcon } from \"../../shared/styleClasses\";\nimport { modalConfirmationButtonCommonStyles } from \"../../shared/commonStyles\";\nexport const sharedClasses = {\n formAutocomplete: {\n \"& .MuiAutocomplete-root\": {\n \"& .MuiOutlinedInput-root\": {\n padding: \"0px\"\n }\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"6px\",\n position: \"relative\",\n backgroundColor: \"#FFFFFF\",\n color: \"#333333\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"16px\",\n padding: \"0px\",\n margin: \"3px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n transition: \"all 0.16s ease-in-out\",\n \"& .MuiAutocomplete-input\": {\n padding: \"7.5px 4px 7.5px 11px\"\n }\n },\n \"& fieldset\": {\n display: \"none\"\n },\n \"& label\": {\n color: \"#838383 !important\",\n fontSize: \"21px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n paddingLeft: \"4px\",\n left: \"-13px\",\n top: \"-15px\",\n \"& .MuiFormLabel-asterisk\": {\n color: theme.palette.error.main\n }\n },\n \"& .MuiAutocomplete-popupIndicator\": {\n transition: \"all 0.25s ease-in-out\",\n color: \"#AAAAAA\"\n },\n \"& .MuiInputBase-root\": {\n \"&.Mui-disabled\": { backgroundColor: \"rgba(217, 217, 217, 0.23)\" }\n }\n },\n formAutocompleteDisabled: {\n \"& .MuiAutocomplete-root\": {\n \"& .MuiOutlinedInput-root\": {\n padding: \"0px\"\n }\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"6px\",\n position: \"relative\",\n backgroundColor: \"#FFFFFF\",\n color: \"#EEEEEE\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"16px\",\n padding: \"0px\",\n margin: \"3px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n transition: \"all 0.16s ease-in-out\",\n \"& .MuiAutocomplete-input\": {\n padding: \"7.5px 4px 7.5px 11px\"\n }\n },\n \"& fieldset\": {\n display: \"none\"\n },\n \"& label\": {\n color: \"#CCCCCC !important\",\n fontSize: \"21px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n paddingLeft: \"4px\",\n left: \"-13px\",\n top: \"-15px\",\n \"& .MuiFormLabel-asterisk\": {\n color: theme.palette.error.light\n }\n },\n \"& .MuiAutocomplete-popupIndicator\": {\n transition: \"all 0.25s ease-in-out\",\n color: \"#EEEEEE\"\n }\n },\n inputLabel: {\n color: \"#838383 !important\",\n fontSize: \"21px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n paddingLeft: \"4px\",\n \"& span\": {\n color: theme.palette.error.main,\n marginLeft: \"2px\"\n }\n },\n errorBox: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"12px\",\n marginLeft: 0.5\n },\n fixedErrorBox: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n marginLeft: \"4px\"\n },\n errorBoxCheckbox: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\"\n },\n groupLabel: {\n color: \"#838383 !important\",\n fontSize: \"16px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n paddingLeft: \"4px\",\n marginBottom: \"12px\"\n },\n datePicker: {\n fontFamily: \"Source Sans Pro\",\n color: \"#666666\",\n width: \"119px\",\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"#DDDDDD !important\"\n },\n \"& input\": {\n padding: \"0px 4px 4px 10px\",\n fontFamily: \"Source Sans Pro\"\n },\n \"& fieldset\": {\n \"& legend\": {\n display: \"none\"\n }\n },\n \"& button\": {\n padding: \"0px\",\n transform: \"translate(-2px, -1.5px)\",\n \"&:hover\": {\n background: \"transparent\",\n \"& svg\": {\n color: \"#888888\"\n }\n }\n },\n \"& .MuiInputAdornment-root\": {\n marginLeft: \"0px\"\n },\n \"& svg\": {\n color: \"#AAAAAA\"\n }\n },\n calendar: {\n zIndex: 19e3,\n paddingTop: 1,\n \"& .PrivatePickersFadeTransitionGroup-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .MuiTypography-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .Mui-selected\": {\n backgroundColor: `${theme.palette.action.main} !important`\n },\n \"& .PrivatePickersSlideTransition-root\": {\n minHeight: \"242px !important\"\n },\n \"& .MuiMultiSectionDigitalClock-root\": {\n ul: {\n li: {\n fontFamily: \"Source Sans Pro\"\n },\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n },\n \"&::after\": {\n display: \"none\"\n }\n }\n },\n \"& .MuiDialogActions-root\": {\n display: \"none !important\"\n }\n },\n calendarHeader: {\n \"& .MuiPickersFadeTransitionGroup-root\": {\n display: \"flex\",\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\"\n }\n },\n rankFieldOption: {\n fontFamily: \"Source Sans Pro\",\n color: \"#000000\",\n display: \"flex\",\n alignItems: \"center\",\n columnGap: \"10px\",\n marginLeft: \"12px\",\n marginBottom: \"6px\",\n marginTop: \"6px\"\n },\n rankFieldSelect: {\n \"& .MuiInputBase-input\": {\n fontSize: \"14px\"\n },\n \"& .MuiSvgIcon-root\": {\n marginRight: 0\n },\n width: \"90%\",\n marginRight: \"20px\"\n },\n snackbar: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"670px\",\n height: \"84px\",\n borderRadius: \"6px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"17px\",\n fontWeight: \"bold\",\n paddingInline: \"34px\"\n },\n snackbarMessageIconContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n columnGap: \"22px\"\n },\n snackbarMessage: {\n textAlign: \"center\",\n maxWidth: \"474px\"\n },\n snackbarSuccess: {\n backgroundColor: \"#EFFDF3\",\n color: \"#8CCF95\"\n },\n snackbarWarning: {\n backgroundColor: \"#FCF4EA\",\n color: \"#E6A052\"\n },\n snackbarError: {\n backgroundColor: \"#FCEFEF\",\n color: theme.palette.error.main\n },\n snackbarButton: {\n fontFamily: \"Source Sans Pro\",\n color: \"#666666\",\n fontSize: \"12px\",\n textDecoration: \"underline\",\n padding: \"2px\"\n },\n textAndTagsWrapper: {\n display: \"flex\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n minHeight: \"46px\",\n columnGap: \"8px\",\n rowGap: \"8px\",\n borderRadius: \"6px\",\n position: \"relative\",\n backgroundColor: \"#FFFFFF\",\n color: \"#333333\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"16px\",\n padding: \"8px\",\n margin: \"3px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n transition: \"all 0.16s ease-in-out\",\n cursor: \"text\"\n },\n focusedStyles: {\n borderColor: theme.palette.primary.main,\n boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`\n },\n textInput: {\n backgroundColor: \"transparent\",\n color: \"inherit\",\n border: \"0\",\n outline: \"0\",\n marginLeft: \"0\"\n },\n tag: {\n color: \"#000000\",\n backgroundColor: \"#f1f1f1\",\n borderRadius: \"6px\",\n padding: \"2px 8px\",\n paddingLeft: \"13px\",\n fontSize: \"14px\"\n },\n tagIconButton: {\n padding: \"2px\",\n marginLeft: \"5px\",\n marginBottom: \"2px\"\n },\n tagIcon: {\n fontSize: \"12px\",\n color: \"#000000\"\n },\n tagSelected: {\n boxShadow: `${alpha(theme.palette.action.main, 0.5)} 0 0 0 2px`\n },\n multiTagLabel: {\n fontSize: \"15.5px\",\n color: \"#838383\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n marginBottom: \"6px\",\n marginLeft: \"3px\",\n span: { color: theme.palette.error.main, marginLeft: \"2px\" }\n },\n multiTagHelperText: {\n marginLeft: \"4px\",\n marginBottom: \"4px\",\n fontStyle: \"italic\"\n },\n toggleButton: {\n padding: \"4px 17px !important\",\n fontFamily: \"Source Sans Pro\",\n color: \"#AAAAAA\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n borderRadius: \"12px\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\",\n \"&.Mui-selected\": {\n backgroundColor: `${theme.palette.primary.main} !important`,\n color: `${theme.palette.action.main} !important`\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n timePicker: {\n marginTop: \"28px\",\n \"& .time-picker\": {\n width: \"117px\",\n height: \"40px\",\n border: \"1px solid #DDDDDD\",\n color: \"#666666\",\n borderRadius: \"6px\",\n padding: \"8px\",\n fontSize: \"16px\",\n fontFamily: \"Source Sans Pro\"\n },\n '& input[type=\"time\"]::-webkit-calendar-picker-indicator': {\n filter: \"invert(74%) sepia(0%) saturate(0%) hue-rotate(239deg) brightness(92%) contrast(89%)\",\n transform: \"scale(1.37)\",\n cursor: \"pointer\",\n \"&:hover\": {\n filter: \"invert(38%) sepia(34%) saturate(5%) hue-rotate(314deg) brightness(95%) contrast(90%)\"\n }\n },\n '& input[type=\"time\"]::-webkit-datetime-edit-text': {\n color: \"#666666\"\n },\n '& input[type=\"time\"]::-webkit-datetime-edit-hour-field': {\n color: \"#666666\"\n },\n '& input[type=\"time\"]::-webkit-datetime-edit-minute-field': {\n color: \"#666666\"\n },\n '& input[type=\"time\"]::-webkit-datetime-edit-ampm-field': {\n color: \"#666666\"\n }\n },\n dateSelect: {\n color: \"#084d6d\",\n border: \"1px solid #E5E7EB\",\n padding: \"6px 16px\",\n marginTop: \"auto\",\n fontSize: \"14px\",\n fontWeight: \"600\",\n display: \"inline-flex\",\n height: \"fit-content\",\n borderRadius: \"6px\",\n letterSpacing: \"0.1px\",\n \"& em\": {\n color: \"#babdc3\"\n },\n \"&.active\": {\n borderColor: theme.palette.secondary.main\n },\n \"&:hover\": {\n borderColor: \"#d9dce3\",\n cursor: \"pointer\",\n userSelect: \"none\"\n }\n },\n autoCompleteListStyles: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#333333\",\n maxHeight: \"200px\"\n },\n autoCompleteTextfield: {\n \"& .MuiInputBase-root\": { margin: \"unset\", marginTop: 1 },\n \"& .MuiFormHelperText-root\": {\n margin: 0.5,\n fontSize: \"12px\",\n fontFamily: \"inherit\",\n color: theme.palette.error.main\n }\n },\n autocomplete: {\n width: \"205px\",\n margin: \"24px 25px 0 0\",\n \"& .MuiAutocomplete-root\": {\n \"& .MuiOutlinedInput-root\": {\n padding: \"0px\"\n }\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"6px\",\n position: \"relative\",\n backgroundColor: \"#FFFFFF\",\n color: \"#333333\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"16px\",\n padding: \"0px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n transition: \"all 0.16s ease-in-out\",\n \"& .MuiAutocomplete-input\": {\n padding: \"6px 4px 6px 11px\"\n }\n },\n \"& fieldset\": {\n display: \"none\"\n },\n \"& label\": {\n color: \"#838383 !important\",\n fontSize: \"21px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n paddingLeft: \"4px\",\n lineHeight: \"inherit\",\n \"& .MuiFormLabel-asterisk\": {\n color: theme.palette.error.main\n }\n },\n \"& .MuiAutocomplete-popupIndicator\": {\n transition: \"all 0.25s ease-in-out\",\n color: \"#AAAAAA\"\n }\n },\n iconButton: {\n border: \"1px solid #DDDDDD\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n width: \"40px\",\n height: \"37px\",\n \"& svg\": {\n fontSize: \"20px\",\n color: \"#084D6D\",\n transform: \"translateY(1px)\"\n }\n },\n tableHeaderRow: {\n \"& td, th\": {\n color: theme.palette.primary.main,\n fontWeight: \"bold\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n backgroundColor: \"white\",\n \"& span\": {\n color: theme.palette.primary.main,\n \"&:hover\": {\n color: \"#0c74a4\"\n }\n }\n },\n \"& .Mui-selected\": {\n backgroundColor: \"#F2F2F2\"\n },\n \"& .Mui-active\": {\n color: theme.palette.primary.main\n },\n \"& .MuiTableSortLabel-icon\": {\n color: \"darkgrey !important\"\n }\n },\n noContentWrapper: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\"\n },\n genericButton: __spreadProps(__spreadValues({}, modalConfirmationButtonCommonStyles), {\n padding: \"8px 21px !important\",\n \"&:focus\": {\n outline: \"none\"\n }\n }),\n modalFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\",\n marginTop: \"auto\"\n },\n sectionHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n width: \"100%\"\n },\n sectionContent: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n margin: \"46px 0px\",\n padding: \"0 60px\"\n },\n modalBody: {\n display: \"flex\",\n flexDirection: \"row\",\n maxWidth: \"1000px\",\n width: \"100%\",\n minHeight: \"550px\",\n maxHeight: \"1200px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n closeIcon,\n sectionSubHeader: {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"600\",\n fontSize: \"18px\"\n },\n pageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n marginBottom: \"26px\",\n \"& h1\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n fontSize: \"38px\",\n color: \"#666666\",\n marginTop: \"0\"\n }\n },\n genericButtonSecondary: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n backgroundColor: \"#EBF8F7\",\n color: theme.palette.action.main,\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 14px\",\n \"& svg\": {\n color: \"#5BC4BF\"\n },\n \"&:hover\": {\n backgroundColor: \"#5BC4BF\",\n color: \"#FFFFFF\",\n \"& svg\": {\n color: \"#FFFFFF\",\n path: { fill: \"white\" }\n }\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n infoIcon: {\n color: theme.palette.action.main,\n marginTop: \"4px\",\n fontSize: \"16px\"\n },\n materialTimePicker: {\n // TODO migrating existing html tags of type 'time-picker' to material component\n \"& .MuiOutlinedInput-notchedOutline\": {\n legend: { display: \"none\" },\n borderColor: \"#DDDDDD\",\n borderRadius: \"6px\"\n },\n \"& .MuiOutlinedInput-root\": {\n width: \"100%\",\n height: \"35px\",\n color: \"#666666\",\n fontSize: \"16px\",\n fontFamily: \"Source Sans Pro\",\n paddingBottom: \"6px\",\n \"&:hover .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"#DDDDDD\"\n }\n },\n \"& .MuiInputAdornment-root\": {\n \"& button\": {\n \"&:hover\": {\n backgroundColor: \"transparent\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n }\n }\n },\n ratingSlider: {\n fontFamily: \"Source Sans Pro\",\n color: theme.palette.action.main,\n height: \"2px\",\n \"& .MuiSlider-rail\": {\n backgroundColor: \"#E0E0E0\"\n },\n \"& .MuiSlider-track\": {\n backgroundColor: theme.palette.action.main\n },\n \"& .MuiSlider-thumb\": {\n backgroundColor: theme.palette.action.main,\n width: \"8px\",\n height: \"8px\",\n \"&:hover\": {\n boxShadow: \"0px 0px 0px 5px\" + theme.palette.action.main + \"16\"\n }\n },\n \"& .MuiSlider-thumb.Mui-active\": {\n boxShadow: \"0px 0px 0px 7px\" + theme.palette.action.main + \"16\"\n },\n \"& .MuiSlider-valueLabel\": {\n fontSize: \"11px\",\n backgroundColor: \"transparent\",\n color: theme.palette.primary.main,\n top: \"36px\",\n \"&::after\": {\n display: \"none\"\n }\n }\n },\n datePickerCalendar: {\n \"& .DayPicker-NavBar\": {\n left: \"unset\",\n right: \"unset\",\n padding: \"0px\",\n width: \"233px\"\n },\n \"& .DayPicker-Weekday\": {\n padding: \"0px\",\n width: \"32px\"\n },\n \"& .DayPicker-Weekday abbr\": {\n color: \"#939393\",\n textDecoration: \"none\",\n textTransform: \"uppercase\",\n fontSize: \"10px\"\n },\n \"& .DayPicker-Caption\": {\n color: \"#004665\",\n fontSize: \"12px\",\n fontWeight: \"bold\"\n },\n \"& .DayPicker-Month\": {\n margin: \"0px\"\n },\n \"& .DayPicker-Day\": {\n border: \"none\",\n fontSize: \"10px\",\n padding: \"0px\",\n height: \"32px\",\n borderRadius: \"0\"\n },\n \"& .DayPicker-Day--outside\": {\n backgroundColor: \"#FFFFFF !important\",\n \"&::after\": {\n display: \"none\"\n }\n },\n \"& .DayPicker-Day--selected:not(.DayPicker-Day--start):not(.DayPicker-Day--end):not(.DayPicker-Day--outside)\": {\n background: \"rgba(91, 196, 191, 0.27)\",\n color: \"#000000\"\n },\n \"& .DayPicker-Day--start:not(.DayPicker-Day--outside)\": {\n borderTopLeftRadius: \"50%\",\n borderBottomLeftRadius: \"50%\",\n background: \"rgba(91, 196, 191, 0.27) !important\",\n position: \"relative\",\n \"&::after\": {\n content: '\"\"',\n background: \"rgba(91, 196, 191)\",\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"100%\",\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n zIndex: \"-1\"\n }\n },\n \"& .DayPicker-Day--end:not(.DayPicker-Day--outside)\": {\n borderTopRightRadius: \"50%\",\n borderBottomRightRadius: \"50%\",\n background: \"rgba(91, 196, 191, 0.27) !important\",\n position: \"relative\",\n \"&::after\": {\n content: '\"\"',\n background: \"rgba(91, 196, 191)\",\n width: \"32px\",\n height: \"32px\",\n borderRadius: \"100%\",\n position: \"absolute\",\n top: \"0\",\n left: \"0\",\n zIndex: \"-1\"\n }\n },\n \"& .DayPicker-Day--today\": {\n fontWeight: \"bold\",\n color: \"black\"\n },\n \"& .DayPicker-wrapper\": {\n zIndex: \"0\",\n padding: \"9px 0px\",\n \"& .DayPicker-NavButton\": {\n width: \"10px\",\n height: \"10px\"\n },\n \"& .DayPicker-Day--disabled\": {\n backgroundColor: \"white\",\n pointerEvents: \"none\"\n }\n }\n },\n onlyStartDate: {\n \"& .DayPicker-Day--start\": {\n borderRadius: \"100% !important\"\n }\n },\n mainModalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n marginTop: \"40px\",\n marginBottom: \"26px\",\n overflowY: \"auto\",\n overflowX: \"hidden\"\n },\n actionModalFormLine,\n formCheckbox: {\n color: \"#ddd !important\",\n \"& .MuiSvgIcon-root\": {\n fontSize: \"20px\"\n },\n \"&.Mui-checked\": {\n color: \"#15C7C0 !important\"\n }\n },\n checkboxLabel,\n modalSection: {\n marginLeft: \"15px\",\n marginTop: \"15px\"\n },\n formLabel: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n color: \"#838383\",\n marginBottom: \"5px\"\n },\n placeholderText: {\n fontFamily: \"Source Sans Pro\",\n color: \"#838383\",\n fontSize: \"11px\",\n margin: \"6px 0px 20px 1px\"\n },\n emailAttachmentIcon: {\n width: \"50px\",\n height: \"50px\",\n borderRadius: \"3px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: \"20px\",\n backgroundColor: \"#084D6D10\",\n \"& svg\": {\n color: theme.palette.primary.main\n }\n },\n emailAttachmentName: {\n color: theme.palette.primary.main,\n fontSize: \"15px\",\n fontWeight: \"bold\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n maxWidth: \"196px\"\n },\n fileSize: {\n color: \"#999999\"\n },\n emailAttachmentContainer: {\n display: \"flex\",\n alignItems: \"center\",\n columnGap: \"10px\",\n width: \"fit-content\"\n },\n emailAttachmentsList: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"20px\"\n },\n noticeContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n padding: \"9px 16px\",\n border: `1px solid ${theme.palette.action.main}`,\n borderRadius: \"8px\",\n color: \"#939393\",\n fontSize: \"16px\",\n margin: \"16px 0\",\n rowGap: \"1px\"\n },\n noticeIcon: {\n color: theme.palette.action.main,\n margin: \"0 9px 3px 0\",\n fontSize: \"16px\"\n },\n createButtonAction: {\n position: \"relative\",\n cursor: \"pointer\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n \"& svg\": {\n color: \"#666666\",\n fontSize: \"40px\",\n padding: \"4px\",\n borderRadius: \"2rem\"\n }\n },\n createButtonDiv: {\n color: \"#666666\",\n fontSize: \"16px\",\n fontWeight: \"700\",\n padding: \"6px 29px 6px 23px\",\n backgroundColor: \"#F2F2F2\",\n borderBottomRightRadius: \"10px 10px\",\n borderTopRightRadius: \"10px 10px\"\n },\n addIcon: {\n position: \"absolute\",\n left: \"-20px\",\n backgroundColor: \"#E5E5E5\"\n },\n dropdownIcon: {\n transition: \"all .2s ease\",\n position: \"absolute\",\n right: \"-3px\"\n },\n genericRedButton: {\n borderRadius: \"6px\",\n fontFamily: \"Source Sans Pro\",\n padding: \"6px 16px\",\n textTransform: \"none\",\n fontSize: \"14px\",\n boxShadow: \"none\",\n fontWeight: \"bold\",\n background: \"#FCEFEF\",\n color: theme.palette.error.main,\n \"&:hover\": {\n background: theme.palette.error.main,\n color: \"white\",\n boxShadow: \"none\"\n },\n \"&.Mui-disabled\": {\n color: \"#FFFFFF\",\n background: \"#DDDDDD\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n pickersDay: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n \"&:focus\": { outline: \"none\", background: \"inherit\" }\n },\n multipleDatesPickerLabel: {\n paddingBottom: \"13px\",\n fontFamily: \"inherit\",\n color: \"#838383\",\n lineHeight: \"18px\",\n paddingLeft: \"3px\",\n display: \"flex\",\n columnGap: \"2px\"\n },\n multipleDatesPickerInput: {\n \"& legend\": { display: \"none\" },\n height: \"35px\",\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderRadius: \"6px\",\n borderColor: \"#DDDDDD\"\n },\n paddingBottom: \"7px\",\n fontFamily: \"Source Sans Pro\"\n },\n multipleDatesPickerExtraDates: {\n paddingRight: 1,\n fontSize: \"18px\",\n color: \"#5BC4C0\",\n fontWeight: \"bold\"\n },\n multipleDatesPickerStaticDatePicker: {\n padding: 1,\n \"& .MuiPickersLayout-contentWrapper\": { gridColumn: 1, gridRow: 1 },\n \"& .MuiPickersDay-root\": {\n margin: \"unset\"\n },\n \"& .MuiDayCalendar-weekDayLabel\": {\n margin: \"unset\"\n },\n \"& .MuiDateCalendar-root\": {\n width: \"300px\"\n }\n },\n navigateBackButton: {\n marginBottom: \"20px\",\n fontSize: \"16px\",\n color: \"#eee\",\n opacity: \"0.8\",\n display: \"flex\",\n alignItems: \"center\",\n \"& div\": {\n fontWeight: \"600\",\n color: \"#666666\",\n \":hover\": {\n color: \"#545454\",\n cursor: \"pointer\"\n }\n }\n },\n errorText: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"12px\",\n width: \"100%\",\n margin: \"unset !important\"\n },\n toggleButtonsContainer: {\n marginTop: \"60px\",\n marginBottom: \"40px\",\n padding: \"0px 16px\"\n },\n applicationBetaButton: {\n padding: \"4px 12px\",\n borderRadius: \"30px\",\n backgroundColor: \"rgba(247, 161, 255, 0.2)\",\n color: \"#F7A1FF\",\n fontWeight: \"bold\",\n boxShadow: \"0px 4px 4px rgba(0, 0, 0, 0.25)\",\n fontSize: \"12px\"\n },\n errorMessage: {\n fontFamily: \"inherit\",\n color: theme.palette.error.main,\n margin: \"4px\"\n },\n saveButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: theme.palette.common.white,\n backgroundColor: theme.palette.secondary.main,\n width: \"91px\",\n height: \"41px\",\n margin: \"8px 0\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 14px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n emptyStateText: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#949494\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n marginTop: \"8px\"\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { modalConfirmationButtonCommonStyles } from \"../../shared/commonStyles\";\nimport { closeIcon } from \"../../shared/styleClasses\";\nexport const classes = {\n modal: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"60px\",\n maxWidth: \"1100px\",\n width: \"100%\",\n height: \"94vh\",\n maxHeight: \"844px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n closeIcon,\n modalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"38px\",\n fontWeight: \"700\",\n color: \"#2D388D\",\n width: \"100%\",\n height: \"40px\"\n },\n modalFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\",\n paddingTop: \"10px\"\n },\n modalButtonBase: __spreadProps(__spreadValues({}, modalConfirmationButtonCommonStyles), {\n padding: \"8px 20px\",\n \"&:focus\": {\n outline: \"none\"\n }\n }),\n modalSecondaryButton: {\n textDecoration: \"underline\",\n color: theme.palette.error.main,\n backgroundColor: \"#FFFFFF\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\",\n textDecoration: \"none\",\n boxShadow: \"none\"\n }\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { filterPopoverHeaderCommonStyles } from \"../../../shared/commonStyles\";\nimport { applyButton, clearButton, sortableSwitchLabels, switchLabels } from \"../../../shared/styleClasses\";\nexport const classes = {\n iconButtonSelected: {\n backgroundColor: \"rgba(8,77,109,0.121)\"\n },\n iconButton: {\n border: \"1px solid #EAEEF0\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n width: \"69px\",\n height: \"60px\",\n \"& svg\": {\n fontSize: \"30px\",\n color: \"#084D6D\",\n transform: \"translateY(1px)\"\n }\n },\n iconButtonOpen: {\n backgroundColor: \"rgba(8,77,109,0.121)\"\n },\n sortableField: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"204px\"\n },\n sortableSwitchLabels,\n labelActive: {\n \"& .MuiFormControlLabel-label\": {\n color: \"#CCCCCC\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\"\n }\n },\n switchActive: {\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#5BC4BF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n }\n },\n switch: {\n \"& .MuiSwitch-thumb\": {\n color: \"#FFFFFF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n \"& .MuiSwitch-track\": {\n backgroundColor: \"#000 !important\"\n }\n }\n },\n switchLabels,\n popover: {\n zIndex: 12\n },\n popoverContent: {\n width: \"272px\",\n padding: \"22px 0px 22px 24px\",\n boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\",\n marginTop: 2,\n background: \"white\",\n borderRadius: \"4px\"\n },\n tableSettingsHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n paddingBottom: 1,\n paddingLeft: \"4px\"\n },\n filterPopoverContent: {\n background: \"white\",\n width: \"272px\",\n maxHeight: \"500px\",\n overflowY: \"scroll\",\n boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\",\n msOverflowStyle: \"none\",\n scrollbarWidth: \"none\",\n marginTop: 2,\n position: \"relative\",\n borderRadius: \"4px\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n },\n filterPopoverHeader: __spreadProps(__spreadValues({}, filterPopoverHeaderCommonStyles), {\n top: \"0px\"\n }),\n scrollableFilters: {\n height: \"fit-content\",\n padding: \"26px\",\n paddingTop: \"0px\"\n },\n clearButton,\n applyButton\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n actionsMenuPaperCommonStyles,\n actionsMenuSpanCommonStyles,\n leftArrowStyles,\n rightArrowStyles\n} from \"../../shared/commonStyles\";\nimport {\n notesEditSaveButton,\n notesCancelButton,\n fileName,\n editNotePopover,\n rowSelect,\n pagination,\n actionButton,\n paginationContainer,\n selectedTooltip,\n rowSelectContainer\n} from \"../../shared/styleClasses\";\nexport const classes = {\n tableAndArrowsContainer: {\n position: \"relative\"\n },\n tableWrapper: {\n tableLayout: \"auto !important\",\n minWidth: \"750px\",\n border: \"none\",\n \"td, th, tr, thead\": {\n fontFamily: \"Source Sans Pro, sans-serif\",\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\"\n },\n th: {\n color: theme.palette.primary.main,\n fontWeight: \"bold\",\n paddingBottom: \"16px\",\n \"& .Mui-active\": {\n color: theme.palette.primary.main\n }\n },\n tr: {\n fontSize: \"16px\",\n borderBottom: \"1px solid #DDDDDD\"\n }\n },\n checkbox: {\n color: \"#aaa !important\",\n \"& .MuiSvgIcon-root\": {\n fontSize: \"20px\"\n },\n \"&.Mui-checked\": {\n color: \"#15C7C0 !important\"\n }\n },\n sortable: {\n \"&:hover\": {\n color: \"#0C74A4\"\n },\n \"& .MuiTableSortLabel-icon\": {\n color: \"darkgrey !important\"\n },\n \"& svg\": {\n fontSize: \"1.1rem\"\n }\n },\n notSortable: {\n \"& .MuiTableSortLabel-icon\": {\n display: \"none\"\n }\n },\n sticky: {\n position: \"sticky\",\n left: \"0px\",\n background: \"white\",\n zIndex: 2\n },\n stickyRight: {\n position: \"sticky\",\n right: \"0px\",\n background: \"white\"\n },\n paginationParent: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginTop: \"20px\",\n width: \"100%\"\n },\n rowSelectContainer,\n paginationContainer,\n pagination,\n rowSelect,\n paginationMenuItems: {\n \"& li\": {\n fontFamily: \"Source Sans Pro\"\n }\n },\n actionsColumnHeader: {\n zIndex: 4,\n minWidth: \"86px\",\n position: \"sticky\",\n right: \"0px\",\n background: \"white\",\n \"&::after\": {\n content: '\"\"',\n background: \"#aaaaaa\",\n width: \"2px\",\n height: \"100%\",\n filter: \"blur(2px)\",\n position: \"absolute\",\n top: \"0\",\n left: \"-2px\",\n opacity: \"0%\",\n transition: \"opacity 0.17s linear\"\n },\n \"&::before\": {\n content: '\"\"',\n top: \"0\",\n left: \"0\",\n width: \"6px\",\n height: \"100%\",\n position: \"absolute\",\n background: \"#ffffff\",\n zIndex: \"2\"\n }\n },\n scrollShadowVisible: {\n \"&&::after\": {\n opacity: \"20%\"\n }\n },\n actionsCell: {\n minWidth: \"86px\",\n width: \"50px\",\n \"& svg\": {\n color: \"#666666\",\n fontSize: \"18px\",\n cursor: \"pointer\"\n }\n },\n idTableCell: {\n \"& a\": {\n color: \"rgba(0, 0, 0, 0.87)\",\n \"&:hover\": {\n textDecoration: \"none\",\n color: \"rgba(0, 0, 0, 0.87)\"\n }\n },\n minWidth: \"80px\",\n left: \"58px\"\n },\n itemTitleTableCell: {\n minWidth: \"200px\",\n left: \"138px\",\n \"& a\": {\n color: \"#666666\",\n fontWeight: \"bold\",\n \"&:hover\": {\n textDecoration: \"none\"\n }\n },\n \"&::after\": {\n content: '\"\"',\n background: \"#aaaaaa\",\n width: \"2px\",\n height: \"100%\",\n filter: \"blur(2px)\",\n position: \"absolute\",\n top: \"0\",\n right: \"-2px\",\n opacity: \"0%\",\n transition: \"opacity 0.17s linear\"\n },\n \"&::before\": {\n content: '\"\"',\n top: \"0\",\n right: \"0\",\n width: \"6px\",\n height: \"100%\",\n position: \"absolute\",\n background: \"#ffffff\",\n zIndex: \"2\"\n }\n },\n actionsTableCell: {\n minWidth: \"86px\",\n width: \"50px\",\n \"& svg\": {\n color: \"#666666\",\n fontSize: \"18px\",\n cursor: \"pointer\"\n },\n \"&::after\": {\n content: '\"\"',\n background: \"#aaaaaa\",\n width: \"2px\",\n height: \"100%\",\n filter: \"blur(2px)\",\n position: \"absolute\",\n top: \"0\",\n left: \"-2px\",\n opacity: \"0%\",\n transition: \"opacity 0.17s linear\"\n },\n \"&::before\": {\n content: '\"\"',\n top: \"0\",\n left: \"0\",\n width: \"6px\",\n height: \"100%\",\n position: \"absolute\",\n background: \"#ffffff\",\n zIndex: \"2\"\n }\n },\n actionItems: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n arrowsContainer: {\n height: 0,\n overflow: \"visible\",\n position: \"sticky\",\n top: \"200px\",\n zIndex: \"10\",\n transform: \"translateY(100px)\"\n },\n leftArrow: __spreadProps(__spreadValues({}, leftArrowStyles), {\n position: \"absolute\",\n zIndex: \"11\",\n bottom: \"auto\"\n }),\n rightArrow: __spreadProps(__spreadValues({}, rightArrowStyles), {\n position: \"absolute\",\n zIndex: \"11\",\n bottom: \"auto\"\n }),\n showArrows: {\n display: \"flex\",\n animation: \"$fadeIn linear 0.17s\"\n },\n \"@keyframes fadeIn\": {\n \"0%\": { opacity: 0 },\n \"100%\": { opacity: 0.9 }\n },\n noResultsContainer: {\n width: \"100%\",\n height: \"400px\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n rowGap: \"42px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"20px\",\n fontWeight: \"bold\",\n padding: \"32px 0px\"\n },\n noteContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"4px\",\n overflow: \"hidden\",\n maxHeight: \"86px\",\n textOverflow: \"ellipsis\"\n },\n noteSubject: {\n fontWeight: \"bold\"\n },\n noteUser: {\n padding: \"4px 0px 10px 0px\"\n },\n notesExpanded: {\n maxHeight: \"unset\"\n },\n notesExpandContract: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n color: theme.palette.primary.main,\n cursor: \"pointer\"\n },\n attachmentItem: {\n display: \"flex\",\n alignItems: \"center\",\n columnGap: \"10px\",\n padding: \"14px\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"#F5F5F5\"\n }\n },\n fileIcon: {\n color: theme.palette.primary.main\n },\n fileName,\n notesTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n color: theme.palette.primary.main,\n fontWeight: \"bold\",\n marginBottom: \"12px\",\n width: \"100%\"\n },\n editNotePopover,\n noteBox: {\n padding: \"10px 12px\",\n width: \"100%\",\n overflowWrap: \"break-word\"\n },\n noteInput: {\n marginBottom: \"4px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n \"& input\": {\n padding: \"9.5px 14px\"\n }\n },\n notesButtonContainer: {\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n columnGap: \"10px\"\n },\n notesEditSaveButton,\n notesCancelButton,\n actionsContianer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"22px\",\n paddingBottom: \"16px\"\n },\n actionButton,\n fadeIn: {\n visibility: \"visible\",\n opacity: \"1\",\n transform: \"translateX(0px)\",\n transition: \"visibility 0s linear 0s, opacity 300ms, transform 300ms\"\n },\n fadeOut: {\n visibility: \"hidden\",\n opacity: \"0\",\n transform: \"translateX(20px)\",\n transition: \"visibility 0s linear 300ms, opacity 300ms, transform 300ms\"\n },\n selectedTooltip,\n selectedTooltipText: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"20px\",\n fontWeight: \"600\",\n color: \"#666666\"\n },\n selectedAllTooltipText: {\n color: \"#084D6D\",\n fontWeight: \"700\",\n textDecoration: \"underline\",\n borderRadius: \"10px\",\n padding: \"4px 12px\",\n \"&:hover\": {\n background: \"rgba(171, 205, 239, 0.3)\"\n }\n },\n selectAllWithActionsTooltip: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n width: \"100%\",\n paddingInline: \"20px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"24px\",\n fontWeight: \"bold\",\n color: \"#666666\"\n },\n selectAllWithActionsTooltipButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"600\",\n color: \"#666666\",\n backgroundColor: \"#9393931F\",\n padding: \"10px 24px\",\n borderRadius: \"6px\",\n border: \"none\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: \"#93939335\",\n border: \"none\"\n }\n },\n actionsMenu: {\n \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n width: \"170px\",\n marginTop: \"6px\"\n }),\n \"& span\": actionsMenuSpanCommonStyles\n },\n centerCellContent: {\n display: \"flex\",\n justifyContent: \"center\"\n }\n};\n","\"use strict\";\nexport const handleSelectOne = (event, item, allItemIds, dispatch) => {\n if (event.target.checked) {\n dispatch({ type: \"ADD_SELECTED_ITEM\", payload: item });\n } else {\n dispatch({\n type: \"REMOVE_SELECTED_ITEM\",\n payload: item.id\n });\n }\n};\nexport const handleSelectAllOnPage = (event, allItems, dispatch) => {\n if (event.target.checked) {\n dispatch({ type: \"ADD_ALL_PAGE_ITEMS\", payload: allItems });\n } else {\n dispatch({ type: \"REMOVE_ALL_PAGE_ITEMS\", payload: allItems.map((i) => i.id) });\n }\n};\nexport const handleScroll = (tableRef, dispatch) => {\n if (!tableRef.current) return;\n if (tableRef.current.scrollLeft < 10) {\n dispatch({ type: \"SET_CAN_SCROLL\", payload: [false, true] });\n } else if (tableRef.current.scrollLeft > tableRef.current.scrollWidth - tableRef.current.clientWidth - 10) {\n dispatch({ type: \"SET_CAN_SCROLL\", payload: [true, false] });\n } else {\n dispatch({ type: \"SET_CAN_SCROLL\", payload: [true, true] });\n }\n};\nexport const handleScrollLeft = (tableRef) => {\n if (!tableRef.current) return;\n tableRef.current.scrollLeft > 360 ? tableRef.current.scrollLeft -= 300 : tableRef.current.scrollLeft = 0;\n};\nexport const handleScrollRight = (tableRef) => {\n if (!tableRef.current) return;\n tableRef.current.scrollWidth - tableRef.current.clientWidth > 360 ? tableRef.current.scrollLeft += 300 : tableRef.current.scrollLeft = tableRef.current.scrollWidth - tableRef.current.clientWidth;\n};\nexport const isScrollable = (element) => {\n return element && element.scrollWidth > element.clientWidth + 20;\n};\nexport const handleScrollableEnter = (tableRef, dispatch) => {\n if (tableRef.current && isScrollable(tableRef.current))\n dispatch({ type: \"SET_TABLE_HOVERED\", payload: true });\n};\nexport const handleScrollableExit = (dispatch) => {\n dispatch({ type: \"SET_TABLE_HOVERED\", payload: false });\n};\nexport const tablePadding = (density) => {\n if (density === \"Default\") {\n return \"22px\";\n } else if (density === \"Compact\") {\n return \"15px\";\n } else {\n return \"8px\";\n }\n};\nexport const removeSelected = (selectedItems, selectedItemIds, itemId) => {\n const newSelectedItemIds = selectedItemIds.filter((id) => id !== itemId);\n const newSelectedItems = selectedItems.filter((item) => item.id !== itemId);\n return {\n selectedItemIds: newSelectedItemIds,\n selectedItems: newSelectedItems\n };\n};\nexport const addSelected = (selectedItems, selectedItemIds, item) => {\n const newSelectedItemIds = [...selectedItemIds, item.id];\n const newSelectedItems = [...selectedItems, item];\n return {\n selectedItemIds: newSelectedItemIds,\n selectedItems: newSelectedItems\n };\n};\nexport const addAllPageItems = (selectedItems, itemsOnPage) => {\n const newSelectedItems = Array.from(/* @__PURE__ */ new Set([...selectedItems, ...itemsOnPage]));\n const newSelectedItemIds = newSelectedItems.map((item) => item.id);\n return {\n selectedItemIds: newSelectedItemIds,\n selectedItems: newSelectedItems\n };\n};\nexport const removeAllPageItems = (selectedItems, itemsOnPage) => {\n const newSelectedItems = selectedItems.filter((item) => !itemsOnPage.includes(item.id));\n const newSelectedItemIds = newSelectedItems.map((item) => item.id);\n return {\n selectedItemIds: newSelectedItemIds,\n selectedItems: newSelectedItems\n };\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport { fetchPreferences } from \"../../helpers/uiPreferencesHelpers\";\nexport const getPreferences = (userPreferenceSource, dispatch) => __async(void 0, null, function* () {\n var _a, _b, _c, _d, _e;\n const { res: globalRes } = yield fetchPreferences(\"universal\");\n const { ui_preferences: [globalPreferences] = [] } = globalRes;\n const { res: localRes } = yield fetchPreferences(userPreferenceSource);\n const { ui_preferences: [localPreferences] = [] } = localRes;\n ((_a = globalPreferences == null ? void 0 : globalPreferences.columns) == null ? void 0 : _a.density) && dispatch({ type: \"SET_DENSITY\", payload: (_b = globalPreferences == null ? void 0 : globalPreferences.columns) == null ? void 0 : _b.density });\n (localPreferences == null ? void 0 : localPreferences.sortable_columns) && dispatch({ type: \"SET_COLUMNS\", payload: localPreferences == null ? void 0 : localPreferences.sortable_columns });\n (localPreferences == null ? void 0 : localPreferences.row_count) && dispatch({ type: \"SET_LIMIT\", payload: localPreferences == null ? void 0 : localPreferences.row_count });\n ((_c = localPreferences == null ? void 0 : localPreferences.sorting) == null ? void 0 : _c.sortBy) && dispatch({\n type: \"SET_SORT\",\n payload: {\n sortBy: (_d = localPreferences == null ? void 0 : localPreferences.sorting) == null ? void 0 : _d.sortBy,\n sortOrder: ((_e = localPreferences == null ? void 0 : localPreferences.sorting) == null ? void 0 : _e.sortOrder) || \"desc\"\n }\n });\n return null;\n});\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { closeIcon } from \"../../shared/styleClasses\";\nexport const classes = {\n // Generic dialog\n dialog: {\n padding: \"40px 60px\",\n alignItems: \"center\",\n textAlign: \"center\",\n \"& > h4\": {\n fontSize: \"26px\",\n color: theme.palette.primary.main,\n marginBottom: \"14px\"\n },\n \"& > span\": {\n fontWeight: \"600\",\n color: \"#666666\",\n fontSize: \"16px\",\n lineHeight: \"20px\"\n },\n \"& button:focus\": {\n outline: \"0\"\n }\n },\n dialogButtonContainer: {\n display: \"flex\",\n marginTop: \"40px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: \"row\",\n \"& > button\": {\n margin: \"0 10px\",\n minWidth: \"150px\"\n }\n },\n dialogHeader: {\n color: \"#727272\",\n fontSize: \"26px\",\n fontWeight: \"800\",\n marginBottom: \"1.5rem\"\n },\n confirmationButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n whiteSpace: \"nowrap\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 14px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n tickWrapper: {\n background: \"#5BC4BF\",\n borderRadius: \"5rem\",\n height: \"3.75rem\",\n width: \"3.75rem\",\n display: \"flex\",\n boxShadow: \"2px 2px 5px #DDDDDD\",\n marginBottom: \"1.5rem\"\n },\n crossWrapper: {\n background: theme.palette.error.main,\n borderRadius: \"5rem\",\n height: \"3.75rem\",\n width: \"3.75rem\",\n display: \"flex\",\n boxShadow: \"2px 2px 5px #DDDDDD\",\n marginBottom: \"1.5rem\"\n },\n tickGreen: {\n color: \"#FFFFFF\",\n fontSize: \"2.5rem\",\n display: \"flex\",\n margin: \"auto\"\n },\n crossRed: {\n color: \"#FFFFFF\",\n fontSize: \"2.5rem\",\n display: \"flex\",\n margin: \"auto\"\n },\n buttonSecondaryLight: {\n borderRadius: \"6px\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n whiteSpace: \"nowrap\",\n padding: \"14px 30px\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n background: theme.palette.secondary.light,\n color: theme.palette.secondary.main,\n \"&:hover\": {\n background: theme.palette.secondary.main,\n color: \"#FFF\"\n }\n },\n buttonRed: {\n borderRadius: \"6px\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"14px 30px\",\n color: \"#FFF\",\n fontWeight: \"bold\",\n whiteSpace: \"nowrap\",\n fontSize: \"15px\",\n background: theme.palette.error.main,\n \"&:hover\": {\n background: theme.palette.error.dark,\n color: \"#FFF\"\n }\n },\n // File Preview Modal\n imagePreview: {\n objectFit: \"contain\",\n transition: \"opacity 0.3s linear\"\n },\n imagePreviewContainer: {\n display: \"inline-block\",\n overflow: \"auto\"\n },\n previewLoader: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginTop: \"250px\",\n rowGap: \"18px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n color: theme.palette.action.main\n },\n absoluteLoader: {\n position: \"absolute\",\n top: \"0px\"\n },\n downloadButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"120px\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n noPreview: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: \"#999999\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n height: \"100%\"\n },\n pdfPage: {\n border: \"1px solid #ccc\",\n boxShadow: \"4px 5px 3px 0px #CCCCCC\",\n marginBottom: \"14px\"\n },\n mediaContentContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\",\n width: \"100%\"\n },\n attachmentPreviewModal: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"60px\",\n width: \"900px\",\n height: \"84vh\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n attachmentPreviewTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"30px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"column\"\n },\n attachmentPreviewContent: {\n display: \"flex\",\n justifyContent: \"center\",\n height: \"100%\",\n width: \"100%\",\n overflow: \"auto\",\n marginTop: \"36px\"\n },\n attachmentPreviewActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"30px\",\n width: \"100%\",\n columnGap: \"16px\",\n \"& a\": {\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n closeIcon,\n fileLinkContainer: {\n display: \"flex\",\n alignItems: \"center\",\n columnGap: \"15px\",\n \"& a\": {\n color: \"#333333\",\n fontSize: \"15px\",\n \"&:hover\": {\n color: \"#000000\",\n textDecoration: \"none\"\n }\n }\n },\n copyButton: {\n fontSize: \"10px\",\n fontWeight: \"bold\",\n backgroundColor: \"#5BC4BF1F\",\n color: theme.palette.action.main,\n borderRadius: \"6px\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: theme.palette.action.main,\n color: \"#FFFFFF\"\n }\n },\n docPreviewNavigation: {\n display: \"flex\",\n justifyContent: \"space-between\",\n width: \"100%\",\n marginBottom: \"16px\"\n },\n docPreviewContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n overflowY: \"auto\"\n },\n downloadModalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n width: \"100%\",\n rowGap: \"20px\",\n justifyContent: \"center\",\n color: theme.palette.primary.main\n },\n downloadModalDescription: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"17px\",\n color: \"#939393\",\n width: \"100%\"\n },\n primaryButtonAlternateColor: {\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n secondaryButtonAlternateColor: {\n backgroundColor: \"#5BC4BF1F\",\n \"&:hover\": {\n backgroundColor: \"#5BC4BF35\",\n border: \"none\"\n }\n },\n zoomSlider: {\n color: theme.palette.secondary.main,\n \"& .MuiSlider-thumb\": {\n backgroundColor: theme.palette.secondary.main,\n width: \"16px\",\n height: \"16px\"\n },\n \"& .MuiSlider-rail\": {\n color: theme.palette.secondary.main,\n height: \"8px\"\n },\n \"& .MuiSlider-track \": {\n height: \"8px\"\n }\n },\n zoomSliderContainer: {\n alignSelf: \"flex-end\",\n marginTop: theme.spacing(1.5),\n alignItems: \"center\"\n },\n zoomIcons: {\n minWidth: \"auto\",\n padding: 0\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../../../ThemeContext/ThemeObject\";\nimport { modalCreateButton } from \"../../../../shared/styleClasses\";\nexport const classes = {\n adPageContainer: {\n fontFamily: theme.typography.fontFamily,\n backgroundColor: \"#FFFFFF\",\n padding: \"40px\"\n },\n adPageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n padding: \"0px 16px\",\n \"& h1\": {\n fontWeight: \"bold\",\n fontSize: \"38px\",\n lineHeight: \"1.2em\",\n color: \"#666666\",\n marginTop: \"0\",\n \"@media (max-width: 1450px)\": {\n fontSize: \"34px\"\n },\n \"@media (max-width: 1260px)\": {\n fontSize: \"28px\"\n }\n }\n },\n tabsContainer: {\n borderBottom: 1,\n borderColor: \"#EEEEEE\",\n margin: \"40px 0px 20px 0px\"\n },\n tabs: {\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n letterSpacing: \"0\",\n color: \"#939393\",\n textTransform: \"none\",\n minWidth: \"unset\",\n \"&:hover\": {\n color: \"#737373\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n \"& button.Mui-selected\": {\n fontWeight: \"600\",\n color: \"#084D6D\"\n }\n },\n tabIndicator: {\n backgroundColor: \"#5BC4BF\",\n margin: \"0 16px\"\n },\n backToJobAdButton: {\n marginBottom: \"20px\",\n fontSize: \"16px\",\n color: \"#eee\",\n opacity: \"0.8\",\n display: \"flex\",\n alignItems: \"center\",\n \"& div\": {\n fontWeight: \"600\",\n color: \"#666666\",\n \":hover\": {\n color: \"#545454\",\n cursor: \"pointer\"\n }\n }\n },\n tabContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"80%\",\n overflowY: \"auto\",\n margin: \"20px 0px 40px 0\",\n padding: \"0px 16px\"\n },\n headerContent: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n color: \"#666666\",\n lineHeight: \"2rem\"\n },\n checkbox: {\n color: \"#DDDDDD\",\n \"&.Mui-checked\": {\n color: theme.palette.action.main\n },\n \"& .MuiSvgIcon-root\": {\n fontSize: \"22px\"\n }\n },\n label: {\n marginBottom: \"20px\",\n \"& .MuiTypography-root\": {\n color: \"#939393\",\n fontSize: \"16px\",\n fontFamily: \"Source Sans Pro, sans-serif\"\n }\n },\n detailsTitle: {\n margin: \"20px 0px 10px 0px\",\n color: \"#939393\",\n fontSize: \"16px\",\n fontFamily: \"Source Sans Pro, sans-serif\"\n },\n details: {\n color: \"#000000\",\n fontSize: \"16px\",\n fontFamily: \"Source Sans Pro, sans-serif\"\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"column\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n margin: \"40px 0px\",\n width: \"100%\",\n alignItems: \"flex-start\"\n },\n datePicker: {\n margin: \"33px 0 0 2px\",\n fontFamily: \"Source Sans Pro\",\n width: \"190px\",\n color: \"#666666\",\n borderRadius: \"6px\",\n \"& input\": {\n padding: \"5px 10px 7px 10px\",\n fontFamily: \"Source Sans Pro\"\n },\n \"& fieldset\": {\n borderColor: \"#DDDDDD\",\n \"& legend\": {\n display: \"none\"\n }\n },\n \"& button\": {\n padding: \"0px\",\n transform: \"translate(-2px, -1.5px)\",\n \"&:hover\": {\n background: \"transparent\",\n \"& svg\": {\n color: \"#888888\"\n }\n }\n },\n \"& .MuiInputAdornment-root\": {\n marginLeft: \"0px\"\n },\n \"& svg\": {\n color: \"#AAAAAA\"\n }\n },\n formAutocomplete: {\n \"& .MuiAutocomplete-root\": {\n \"& .MuiOutlinedInput-root\": {\n padding: \"0px\"\n }\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"6px\",\n position: \"relative\",\n backgroundColor: \"#FFFFFF\",\n color: \"#333333\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"16px\",\n padding: \"0px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n transition: \"all 0.16s ease-in-out\",\n \"& .MuiAutocomplete-input\": {\n padding: \"6px 4px 6px 11px\"\n }\n },\n \"& fieldset\": {\n display: \"none\"\n },\n \"& label\": {\n color: \"#838383 !important\",\n fontSize: \"21px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n paddingLeft: \"4px\",\n left: \"-13px\",\n top: \"-15px\",\n \"& .MuiFormLabel-asterisk\": {\n color: theme.palette.error.main\n }\n },\n \"& .MuiAutocomplete-popupIndicator\": {\n transition: \"all 0.25s ease-in-out\",\n color: \"#AAAAAA\"\n }\n },\n modalFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\",\n margin: \"40px 0px\"\n },\n modalCancelButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"100px\",\n textTransform: \"none\",\n textDecoration: \"underline\",\n color: theme.palette.error.main,\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\",\n textDecoration: \"none\",\n boxShadow: \"none\"\n }\n },\n modalCreateButton,\n actionsContianer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"22px\",\n margin: \"10px 0px 30px 0px\"\n },\n editButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"600\",\n color: \"#666666\",\n backgroundColor: \"#9393931F\",\n padding: \"10px 24px\",\n borderRadius: \"6px\",\n border: \"none\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: \"#93939335\",\n border: \"none\"\n }\n },\n approveButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"600\",\n color: \"#8CCF95\",\n backgroundColor: \"#8CCF951F\",\n padding: \"10px 24px\",\n borderRadius: \"6px\",\n border: \"none\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: \"#8CCF9535\",\n border: \"none\"\n }\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nexport const classes = {\n dialogConfirmButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n padding: \"10px 30px\",\n fontWeight: \"bold\",\n color: \"#ffffff\",\n background: theme.palette.action.main,\n \"&:hover\": {\n background: \"#4da8a4\"\n }\n },\n dialogContainer: {\n width: 700,\n maxWidth: \"100%\",\n padding: \"40px\"\n },\n dropdown: {\n width: \"100%\",\n marginBottom: \"32px\"\n },\n dropdownText: {\n fontSize: \"14px !important\"\n },\n dialogTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"25px\",\n fontWeight: 700,\n marginBottom: \"32px\",\n color: theme.palette.primary.main\n },\n label: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n color: theme.palette.common.grey,\n \"& span\": {\n color: theme.palette.error.main\n }\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n actionsMenuPaperCommonStyles,\n actionsMenuSpanCommonStyles,\n leftArrowStyles,\n rightArrowStyles\n} from \"../../shared/commonStyles\";\nimport {\n scrollShadowLeft,\n scrollShadowRight,\n filterMenu,\n rowSelect,\n pagination,\n paginationContainer,\n rowSelectContainerAlt\n} from \"../../shared/styleClasses\";\nexport const classes = {\n container: {\n width: \"100%\"\n },\n banner: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n columnGap: \"22px\",\n alignItems: \"center\",\n marginBottom: \"20px\"\n },\n toggleButtonGroup: {\n borderRadius: \"8px\",\n margin: \"10px 0px 20px 0px\",\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n padding: \"6px 16px\",\n borderRadius: \"0\",\n textTransform: \"capitalize\",\n borderRight: \"1px solid #f3f3f3\",\n \"&:first-of-type\": {\n borderTopLeftRadius: \"6px\",\n borderBottomLeftRadius: \"6px\"\n },\n \"&:last-child\": {\n borderTopRightRadius: \"6px\",\n borderBottomRightRadius: \"6px\",\n borderRight: \"0\"\n }\n }\n },\n containerOuter: {\n background: \"#FFF\",\n borderRadius: \"8px\",\n display: \"flex\",\n justifyContent: \"center\",\n \"& button:focus\": {\n outline: \"0\"\n }\n },\n buttonPrimary: {\n borderRadius: \"6px\",\n padding: \"14px 30px\",\n textTransform: \"capitalize\",\n color: \"#FFF\",\n fontWeight: \"600\",\n fontSize: \"14px\",\n background: theme.palette.primary.main,\n \"&:hover\": {\n background: theme.palette.primary.dark\n }\n },\n buttonSecondary: {\n borderRadius: \"6px\",\n padding: \"14px 30px\",\n textTransform: \"capitalize\",\n color: \"#FFF\",\n fontWeight: \"600\",\n fontSize: \"14px\",\n background: theme.palette.secondary.main,\n \"&:hover\": {\n background: theme.palette.primary.dark\n }\n },\n newAdButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n lineHeight: \"1.3\",\n color: theme.palette.action.main,\n backgroundColor: \"#5BC4BF1F\",\n height: \"47px\",\n width: \"120px\",\n borderRadius: \"6px\",\n border: \"none\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: \"#5BC4BF35\",\n border: \"none\"\n }\n },\n buttonGrey: {\n padding: \"14px 30px\",\n background: \"#FFF\",\n color: \"#DDDDDD\",\n \"&:hover\": {\n background: theme.palette.secondary.main,\n color: \"#FFF\"\n }\n },\n buttonActive: {\n color: theme.palette.secondary.main\n },\n tableContainer: {\n overflowX: \"auto\",\n scrollBehavior: \"smooth\"\n },\n table: {\n display: \"table\",\n borderCollapse: \"collapse\",\n borderSpacing: \"0\",\n width: \"100%\",\n background: \"#FFF\",\n borderRadius: \"8px\"\n },\n rowHeader: {\n \"& span\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"700\",\n color: theme.palette.primary.main,\n marginTop: \"24px\",\n marginBottom: \"20px\"\n }\n },\n row: {\n display: \"table-row-group\",\n width: \"100%\",\n borderBottom: \"1px solid #f3f3f3\",\n \"& > *\": {\n padding: \"24px\",\n paddingRight: \"0px\",\n display: \"table-cell\",\n fontSize: \"14px\",\n \"&:first-of-type\": {\n paddingLeft: \"18px\"\n },\n \"&:last-child\": {\n paddingRight: \"18px\"\n }\n }\n },\n actionsContainer: {\n display: \"flex\",\n whiteSpace: \"nowrap\",\n textAlign: \"right\",\n \"& .Mui-disabled\": {\n opacity: \"0.5\"\n }\n },\n actionButtonContainer: {\n marginRight: \"14px\"\n },\n actionButton: {\n width: \"100px\",\n maxHeight: \"44px\",\n lineHeight: \"1.05rem\",\n whiteSpace: \"break-spaces\"\n },\n title: {\n color: \"#666666\",\n fontWeight: \"600\"\n },\n center: {\n textAlign: \"center\"\n },\n iconGreen: {\n color: theme.palette.success.main\n },\n iconRed: {\n color: theme.palette.error.main\n },\n iconGrey: {\n color: \"#666666\"\n },\n icon: {\n width: \"40px\",\n height: \"40px\"\n },\n columnRefrence: {\n padding: \"3px 12px\",\n height: \"2.75rem\",\n lineHeight: \"17px\"\n },\n columnButtonPadding: {\n padding: \"3px 12px\"\n },\n dialog: {\n padding: \"40px 60px\",\n alignItems: \"center\",\n textAlign: \"center\",\n \"& > h4\": {\n fontSize: \"26px\",\n color: theme.palette.primary.main,\n marginBottom: \"14px\"\n },\n \"& > span\": {\n fontWeight: \"600\",\n color: \"#666666\",\n fontSize: \"16px\",\n lineHeight: \"20px\"\n },\n \"& button:focus\": {\n outline: \"0\"\n }\n },\n dialogButtonContainer: {\n display: \"flex\",\n marginTop: \"40px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexDirection: \"row\",\n \"& > button\": {\n margin: \"0 10px\",\n minWidth: \"150px\"\n }\n },\n buttonSecondaryLight: {\n borderRadius: \"6px\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"14px 30px\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n background: theme.palette.secondary.light,\n color: theme.palette.secondary.main,\n \"&:hover\": {\n background: theme.palette.secondary.main,\n color: \"#FFF\"\n }\n },\n buttonRed: {\n borderRadius: \"6px\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"14px 30px\",\n color: \"#FFF\",\n fontWeight: \"bold\",\n fontSize: \"15px\",\n background: theme.palette.error.main,\n \"&:hover\": {\n background: theme.palette.error.dark,\n color: \"#FFF\"\n }\n },\n buttonRedLight: {\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n background: theme.palette.error.light,\n color: theme.palette.error.main,\n \"&:hover\": {\n background: theme.palette.error.main,\n color: \"#FFF\"\n }\n },\n buttonExpiry: {\n width: \"122px\",\n maxWidth: \"unset !important\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n background: theme.palette.error.light,\n color: theme.palette.error.main,\n \"&:hover\": {\n background: theme.palette.error.main,\n color: \"#FFF\"\n }\n },\n buttonGreenLight: {\n padding: \"14px 30px\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n background: theme.palette.success.light,\n color: theme.palette.success.main,\n \"&:hover\": {\n background: theme.palette.success.main,\n color: \"#FFF\"\n }\n },\n disableIcon: {\n pointerEvents: \"none\",\n opacity: \"0.5\"\n },\n sponsorText: {\n textDecoration: \"underline\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n paginationParent: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginTop: \"20px\"\n },\n rowSelectContainer: rowSelectContainerAlt,\n paginationContainer,\n pagination,\n rowSelect,\n paginationMenuItems: {\n \"& li\": {\n fontFamily: \"Source Sans Pro\"\n }\n },\n downIcon: {\n marginLeft: \"8px\",\n fontSize: \"18px\",\n color: \"inherit\"\n },\n actionsMenu: {\n \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n rowGap: \"11px\",\n minWidth: \"155px\",\n marginTop: \"6px\"\n }),\n \"& span\": __spreadProps(__spreadValues({}, actionsMenuSpanCommonStyles), {\n color: \"#939393\"\n })\n },\n buttonDateConfirm: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n padding: \"10px 30px\",\n fontWeight: \"bold\",\n textTransform: \"capitalize\",\n color: \"#ffffff\",\n background: theme.palette.action.main,\n \"&:hover\": {\n background: \"#4da8a4\"\n }\n },\n datePicker: {\n fontFamily: \"Source Sans Pro\",\n color: \"#000000\",\n width: \"119px\",\n marginTop: \"6px\",\n \"& input\": {\n fontSize: \"14px\",\n padding: \"0px 6px 6px 10px\",\n fontFamily: \"Source Sans Pro\"\n },\n \"& fieldset\": {\n \"& legend\": {\n display: \"none\"\n }\n },\n \"& button\": {\n padding: \"0px\",\n transform: \"translate(7px, -2px)\",\n \"&:hover\": {\n background: \"transparent\",\n \"& svg\": {\n color: theme.palette.primary.main\n }\n }\n },\n \"& svg\": {\n fontSize: \"17px\",\n color: \"#666666\"\n }\n },\n calendar: {\n \"& .PrivatePickersFadeTransitionGroup-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .MuiTypography-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .Mui-selected\": {\n backgroundColor: `${theme.palette.action.main} !important`\n },\n \"& .PrivatePickersSlideTransition-root\": {\n minHeight: \"242px !important\"\n }\n },\n expiryMessage: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"19px\",\n maxWidth: \"350px\",\n paddingBottom: \"20px\"\n },\n expiryDateMessage: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"19px\",\n maxWidth: \"350px\",\n paddingTop: \"10px\",\n paddingBottom: \"10px\"\n },\n expiryPostPickerMessage: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"19px\",\n maxWidth: \"350px\",\n paddingTop: \"10px\",\n paddingBottom: \"20px\",\n \"& span\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main\n }\n },\n expiryChangePreview: {\n display: \"flex\",\n alignItems: \"center\",\n margin: \"6px 66px\"\n },\n expiryDateContainer: {\n width: \"140px\",\n backgroundColor: \"#F8F8F8\",\n border: \"1px solid #DDDDDD\",\n padding: \"16px 22px\",\n borderRadius: \"6px\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n justifyContent: \"center\"\n },\n expiryTitle: {\n fontSize: \"13px\",\n color: \"#939393\",\n lineHeight: \"1.4\"\n },\n expiryDate: {\n fontSize: \"15px\",\n fontWeight: \"bold\",\n color: \"#000000\",\n lineHeight: \"1.4\"\n },\n filterMenu,\n filterButton: {\n fontFamily: \"Source Sans Pro\",\n height: \"47px\",\n textTransform: \"capitalize\",\n fontSize: \"15px\",\n fontWeight: \"600\",\n color: theme.palette.primary.main,\n backgroundColor: \"#FFFFFF\",\n border: \"1px solid #EAEEF0\",\n borderRadius: \"6px\",\n padding: \"8px 16px\"\n },\n arrowsContainer: {\n height: 0,\n overflow: \"visible\",\n position: \"sticky\",\n top: \"200px\",\n zIndex: \"999\",\n transform: \"translateY(100px)\"\n },\n leftArrow: __spreadProps(__spreadValues({}, leftArrowStyles), {\n position: \"sticky\",\n zIndex: \"9999\"\n }),\n rightArrow: __spreadProps(__spreadValues({}, rightArrowStyles), {\n position: \"sticky\",\n zIndex: \"9999\"\n }),\n showArrows: {\n display: \"flex\",\n animation: \"$fadeIn linear 0.17s\"\n },\n \"@keyframes fadeIn\": {\n \"0%\": { opacity: 0 },\n \"100%\": { opacity: 0.9 }\n },\n sticky: {\n position: \"sticky\",\n left: \"0px\",\n background: \"white\",\n zIndex: 1\n },\n stickyRight: {\n position: \"sticky\",\n right: \"0px\",\n background: \"white\"\n },\n scrollShadowLeft,\n scrollShadowRight,\n scrollShadowVisible: {\n \"&&::after\": {\n opacity: \"20%\"\n }\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../../components/ThemeContext/ThemeObject\";\nexport const styles = {\n tableWrapper: {\n tableLayout: \"auto !important\",\n minWidth: \"1000px\",\n border: \"none\",\n \"td, th, tr, thead\": {\n fontFamily: \"Source Sans Pro, sans-serif\",\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\"\n },\n th: {\n color: theme.palette.primary.main,\n fontWeight: \"bold\",\n paddingBottom: \"16px\",\n \"& .Mui-active\": {\n color: theme.palette.primary.main\n }\n },\n tr: {\n fontSize: \"16px\"\n }\n },\n skeletonContainer: {\n padding: \"10px 0px\"\n },\n noRecords: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\"\n },\n tableCellData: {\n width: \"20%\",\n minWidth: \"10rem\"\n }\n};\n","\"use strict\";\nexport const HtmlEditorFonts = [\n `@font-face {\n font-family: 'Nexa';\n src: url(\"/fonts/nexa/Nexa.ttf\");\n font-weight: 400;\n font-weight: normal;\n font-style: normal;\n }`,\n `@font-face {\n font-family: 'Nexa';\n src: url(\"/fonts/nexa/Nexa Bold.ttf\");\n font-weight: 700;\n font-style: bold;\n }`\n];\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nconst callAPI = (url, body, method) => __async(void 0, null, function* () {\n try {\n const response = yield fetch(url, __spreadValues({\n method: method || \"GET\",\n headers: {\n \"Content-Type\": \"application/json\"\n }\n }, body && { body: JSON.stringify(body) }));\n const data = yield response.json();\n if (!response.ok) {\n throw new Error((data == null ? void 0 : data.message) || data.error || \"Something went wrong, please try again\");\n }\n return data;\n } catch (error) {\n console.log(error);\n }\n});\nexport default callAPI;\nexport const callPaginatedAPI = (url, body, method) => __async(void 0, null, function* () {\n try {\n const response = yield fetch(url, __spreadValues({\n method: method || \"GET\",\n headers: {\n \"Content-Type\": \"application/json\"\n }\n }, body && { body: JSON.stringify(body) }));\n const data = {\n data: yield response.json(),\n totalItems: Number(response.headers.get(\"X-Total-Count\")),\n totalPages: Number(response.headers.get(\"X-Total-Pages\"))\n };\n if (!response.ok) {\n throw new Error((data == null ? void 0 : data.message) || data.error || \"Something went wrong, please try again\");\n }\n return data;\n } catch (error) {\n console.log(error);\n }\n});\n","\"use strict\";\nimport { translate } from \"./convertToLocalEnglish/internals/translate\";\nexport const convertToLocalEnglish = (input) => {\n const locale = navigator.language;\n if (locale === \"en-US\") {\n return translate(input, { american: true });\n } else {\n return translate(input);\n }\n};\n","import { AmericanSpellings, BritishSpellings } from \"./\";\ndescribe(\"AmericanSpellings\", () => {\n it(\"should be defined\", () => {\n expect(AmericanSpellings).toBeDefined();\n expect(typeof AmericanSpellings).toStrictEqual(\"object\");\n });\n it(\"should be a string to string map\", () => {\n for (const [key, value] of Object.entries(AmericanSpellings)) {\n expect(typeof key).toStrictEqual(\"string\");\n expect(typeof value).toStrictEqual(\"string\");\n expect(value).not.toStrictEqual(key);\n expect(key).toMatch(/^[a-z]+-?$/);\n expect(value).toMatch(/^[a-z]+-?$/);\n }\n });\n});\ndescribe(\"BritishSpellings\", () => {\n it(\"should be defined\", () => {\n expect(BritishSpellings).toBeDefined();\n expect(typeof BritishSpellings).toStrictEqual(\"object\");\n });\n it(\"should be a string to string map\", () => {\n for (const [key, value] of Object.entries(BritishSpellings)) {\n expect(typeof key).toStrictEqual(\"string\");\n expect(typeof value).toStrictEqual(\"string\");\n expect(value).not.toStrictEqual(key);\n expect(key).toMatch(/^[a-z]+-?$/);\n expect(value).toMatch(/^[a-z]+-?$/);\n }\n });\n});\n","\"use strict\";\n/**\n * Modified From: https://github.com/kpdecker/jsdiff\n * @license BSD\n * Copyright (c) 2009-2015, Kevin Decker <kpdecker@gmail.com>\n */\nexport function diff(o, n) {\n const oldString = o;\n const newString = n;\n const newLen = newString.length;\n const oldLen = oldString.length;\n let editLength = 1;\n const maxEditLength = newLen + oldLen;\n const bestPath = [{ newPos: -1, components: [] }];\n const oldPos = extractCommon(bestPath[0], newString, oldString, 0);\n if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {\n return [{ newValue: newString, oldValue: oldString, added: false, removed: false }];\n }\n while (editLength <= maxEditLength) {\n for (let diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {\n let basePath;\n const addPath = bestPath[diagonalPath - 1];\n const removePath = bestPath[diagonalPath + 1];\n let oldPos2 = (removePath ? removePath.newPos : 0) - diagonalPath;\n if (addPath) {\n bestPath[diagonalPath - 1] = void 0;\n }\n const canAdd = addPath && addPath.newPos + 1 < newLen;\n const canRemove = removePath && 0 <= oldPos2 && oldPos2 < oldLen;\n if (!canAdd && !canRemove) {\n bestPath[diagonalPath] = void 0;\n continue;\n }\n if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {\n basePath = { newPos: removePath.newPos, components: removePath.components.slice(0) };\n pushComponent(basePath.components, false, true);\n } else {\n basePath = addPath;\n basePath.newPos++;\n pushComponent(basePath.components, true, false);\n }\n oldPos2 = extractCommon(basePath, newString, oldString, diagonalPath);\n if (basePath.newPos + 1 >= newLen && oldPos2 + 1 >= oldLen) {\n return buildValues(basePath.components, newString, oldString);\n } else {\n bestPath[diagonalPath] = basePath;\n }\n }\n editLength++;\n }\n return [];\n}\nfunction pushComponent(components, added, removed) {\n const last = components[components.length - 1];\n const newCount = added ? 1 : 0;\n const oldCount = removed ? 1 : 0;\n if (last && last.added === added && last.removed === removed) {\n components[components.length - 1] = {\n newCount: last.newCount + newCount,\n oldCount: last.oldCount + oldCount,\n added,\n removed\n };\n } else if (last && last.added && removed) {\n components[components.length - 1] = {\n newCount: last.newCount + newCount,\n oldCount: last.oldCount + oldCount,\n added: true,\n removed: true\n };\n } else {\n components.push({\n newCount,\n oldCount,\n added,\n removed\n });\n }\n}\nfunction extractCommon(basePath, newString, oldString, diagonalPath) {\n const newLen = newString.length;\n const oldLen = oldString.length;\n let newPos = basePath.newPos;\n let oldPos = newPos - diagonalPath;\n let commonCount = 0;\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && equals(newString.charAt(newPos + 1), oldString.charAt(oldPos + 1))) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n if (commonCount) {\n basePath.components.push({\n newCount: commonCount,\n oldCount: commonCount,\n removed: false,\n added: false\n });\n }\n basePath.newPos = newPos;\n return oldPos;\n}\nfunction equals(left, right) {\n return left === right || left.toLowerCase() === right.toLowerCase();\n}\nfunction buildValues(components, newString, oldString) {\n const changes = [];\n let last = void 0;\n let newPos = 0;\n let oldPos = 0;\n for (const component of components) {\n const change = {\n newValue: newString.substring(newPos, newPos + component.newCount),\n oldValue: oldString.substring(oldPos, oldPos + component.oldCount),\n added: component.added,\n removed: component.removed\n };\n changes.push(change);\n if (last) {\n if (last.oldValue.length) {\n const lastEnd = last.oldValue.charAt(last.oldValue.length - 1);\n while (change.oldValue.length && equals(lastEnd, change.oldValue[0])) {\n last.oldValue += change.oldValue.charAt(0);\n change.oldValue = change.oldValue.substring(1);\n }\n }\n if (last.newValue.length) {\n const lastEnd = last.newValue.charAt(last.newValue.length - 1);\n while (change.newValue.length && equals(lastEnd, change.newValue[0])) {\n last.newValue += change.newValue.charAt(0);\n change.newValue = change.newValue.substring(1);\n }\n }\n }\n newPos += component.newCount;\n oldPos += component.oldCount;\n last = change;\n }\n return changes;\n}\n","import { everyLowerCase, everyUpperCase } from \"./case\";\ndescribe(\"everyLowerCase\", () => {\n it(\"should be defined\", () => {\n expect(everyLowerCase).toBeDefined();\n });\n it(\"should return true when all letters are not A-Z\", () => {\n expect(everyLowerCase(\"abcd\")).toStrictEqual(true);\n let text = \"-\";\n for (let code = \"a\".charCodeAt(0); code <= \"z\".charCodeAt(0); code++) {\n text += String.fromCharCode(code);\n expect(everyLowerCase(text)).toStrictEqual(true);\n }\n });\n it(\"should return false when any letters are A-Z\", () => {\n expect(everyLowerCase(\"Abcd\")).toStrictEqual(false);\n let text = \"-\";\n for (let code = \"A\".charCodeAt(0); code <= \"Z\".charCodeAt(0); code++) {\n text += String.fromCharCode(code);\n expect(everyLowerCase(text)).toStrictEqual(false);\n }\n });\n});\ndescribe(\"everyUpperCase\", () => {\n it(\"should be defined\", () => {\n expect(everyUpperCase).toBeDefined();\n });\n it(\"should return true when all letters are not a-z\", () => {\n expect(everyUpperCase(\"ABCD\")).toStrictEqual(true);\n let text = \"-\";\n for (let code = \"A\".charCodeAt(0); code <= \"Z\".charCodeAt(0); code++) {\n text += String.fromCharCode(code);\n expect(everyUpperCase(text)).toStrictEqual(true);\n }\n });\n it(\"should return false when any letters are a-z\", () => {\n expect(everyUpperCase(\"aBCD\")).toStrictEqual(false);\n let text = \"-\";\n for (let code = \"a\".charCodeAt(0); code <= \"z\".charCodeAt(0); code++) {\n text += String.fromCharCode(code);\n expect(everyUpperCase(text)).toStrictEqual(false);\n }\n });\n});\n","\"use strict\";\nexport function everyLowerCase(text) {\n const length = text.length;\n for (let index = 0; index < length; index++) {\n const code = text.charCodeAt(index);\n if (code >= 65 && code <= 90) return false;\n }\n return true;\n}\nexport function everyUpperCase(text) {\n const length = text.length;\n for (let index = 0; index < length; index++) {\n const code = text.charCodeAt(index);\n if (code >= 97 && code <= 122) return false;\n }\n return true;\n}\n","import { translate } from \"../\";\ndescribe(\"translate\", () => {\n it(\"should be defined\", () => {\n expect(translate).toBeDefined();\n });\n it(\"should translate text spellings from American to British\", () => {\n expect(translate(\"my favorite color is gray\")).toBe(\"my favourite colour is grey\");\n expect(translate(\"My favorite color is gray.\")).toBe(\"My favourite colour is grey.\");\n expect(translate(\"My Favorite COLOR is Gray\")).toBe(\"My Favourite COLOUR is Grey\");\n expect(translate(\"My Favourite COLOUR is Grey\")).toBe(\"My Favourite COLOUR is Grey\");\n });\n it(\"should translate text spellings from American to British (words with hyphen)\", () => {\n expect(translate(\"estr-abc\")).toBe(\"oestr-abc\");\n expect(translate(\"Estr-Abc\")).toBe(\"Oestr-Abc\");\n expect(translate(\"Leuk-Abc\")).toBe(\"LeucAbc\");\n });\n it(\"should translate text spellings from American to British (arbitrary hyphen)\", () => {\n expect(translate(\"phony pizzazz\")).toBe(\"phoney pzazz\");\n expect(translate(\"phony-pizzazz\")).toBe(\"phoney-pzazz\");\n expect(translate(\"Phony-pizzazz\")).toBe(\"Phoney-pzazz\");\n expect(translate(\"--phony-pizzazz-\")).toBe(\"--phoney-pzazz-\");\n });\n it(\"should translate text spellings from British to American\", () => {\n expect(translate(\"my favourite colour is grey\", { american: true })).toBe(\"my favorite color is gray\");\n expect(translate(\"My favourite colour is grey.\", { american: true })).toBe(\"My favorite color is gray.\");\n expect(translate(\"My Favourite COLOUR is Grey\", { american: true })).toBe(\"My Favorite COLOR is Gray\");\n expect(translate(\"My Favorite COLOR is Gray\", { american: true })).toBe(\"My Favorite COLOR is Gray\");\n });\n it(\"should translate text spellings from British to American (words with hyphen)\", () => {\n expect(translate(\"oestr-abc\", { american: true })).toBe(\"estr-abc\");\n expect(translate(\"Oestr-Abc\", { american: true })).toBe(\"Estr-Abc\");\n expect(translate(\"Leuc Abc\", { american: true })).toBe(\"Leuk- Abc\");\n });\n it(\"should translate text spellings from British to American (arbitrary hyphen)\", () => {\n expect(translate(\"phoney pzazz\", { american: true })).toBe(\"phony pizzazz\");\n expect(translate(\"phoney-pzazz\", { american: true })).toBe(\"phony-pizzazz\");\n expect(translate(\"Phoney-pzazz\", { american: true })).toBe(\"Phony-pizzazz\");\n expect(translate(\"--phoney-pzazz-\", { american: true })).toBe(\"--phony-pizzazz-\");\n });\n});\n","\"use strict\";\nimport { translateWord } from \"./translateWord\";\nexport function translate(original, options) {\n return original.replace(/[a-z]+-?/gi, (word) => translateWord(word, options));\n}\n","import { translateCase } from \"./translateCase\";\ndescribe(\"translateCase\", () => {\n it(\"should be defined\", () => {\n expect(translateCase).toBeDefined();\n });\n it(\"should return exact target when source has no CAPS\", () => {\n expect(translateCase(\"color\", \"colour\")).toBe(\"colour\");\n expect(translateCase(\"color\", \"CoLouR\")).toBe(\"CoLouR\");\n expect(translateCase(\"ice-cream\", \"ice-scream\")).toBe(\"ice-scream\");\n });\n it(\"should return upper case target when source has all CAPS\", () => {\n expect(translateCase(\"COLOR\", \"colour\")).toBe(\"COLOUR\");\n expect(translateCase(\"COLOR\", \"CoLouR\")).toBe(\"COLOUR\");\n expect(translateCase(\"ICE-CREAM\", \"ice-scream\")).toBe(\"ICE-SCREAM\");\n });\n it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (single place single letter)\", () => {\n expect(translateCase(\"color\", \"colour\")).toBe(\"colour\");\n expect(translateCase(\"Color\", \"colour\")).toBe(\"Colour\");\n expect(translateCase(\"CoLor\", \"colour\")).toBe(\"CoLour\");\n expect(translateCase(\"CoLOR\", \"colour\")).toBe(\"CoLOUR\");\n expect(translateCase(\"CoLOr\", \"colour\")).toBe(\"CoLOUr\");\n expect(translateCase(\"colour\", \"color\")).toBe(\"color\");\n expect(translateCase(\"Colour\", \"color\")).toBe(\"Color\");\n expect(translateCase(\"CoLour\", \"color\")).toBe(\"CoLor\");\n expect(translateCase(\"CoLOUR\", \"color\")).toBe(\"CoLOR\");\n expect(translateCase(\"CoLOUr\", \"color\")).toBe(\"CoLOr\");\n expect(translateCase(\"chiLi\", \"chilli\")).toBe(\"chiLLi\");\n expect(translateCase(\"chiLLi\", \"chili\")).toBe(\"chiLi\");\n });\n it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (start single letter)\", () => {\n expect(translateCase(\"estr-\", \"oestr-\")).toBe(\"oestr-\");\n expect(translateCase(\"EstR-\", \"oestr-\")).toBe(\"OEstR-\");\n expect(translateCase(\"Estr-\", \"oestr-\")).toBe(\"Oestr-\");\n });\n it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (multiple places single letters)\", () => {\n expect(translateCase(\"TRI-coloriZation\", \"trio-colourisation\")).toBe(\"TRIO-colouriSation\");\n expect(translateCase(\"TRIO-colouriSation\", \"tri-colorization\")).toBe(\"TRI-coloriZation\");\n });\n it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (suffix)\", () => {\n expect(translateCase(\"snowplow\", \"snowplough\")).toBe(\"snowplough\");\n expect(translateCase(\"SNOWPLOW\", \"snowplough\")).toBe(\"SNOWPLOUGH\");\n expect(translateCase(\"Snowplow\", \"snowplough\")).toBe(\"Snowplough\");\n expect(translateCase(\"snowPloW\", \"snowplough\")).toBe(\"snowPloUGH\");\n expect(translateCase(\"snowplough\", \"snowplow\")).toBe(\"snowplow\");\n expect(translateCase(\"SNOWPLOUGH\", \"snowplow\")).toBe(\"SNOWPLOW\");\n expect(translateCase(\"Snowplough\", \"snowplow\")).toBe(\"Snowplow\");\n expect(translateCase(\"snowPloUGH\", \"snowplow\")).toBe(\"snowPloW\");\n expect(translateCase(\"pummeled\", \"pummelling\")).toBe(\"pummelling\");\n expect(translateCase(\"PUMMELED\", \"pummelling\")).toBe(\"PUMMELLING\");\n expect(translateCase(\"pummeLed\", \"pummelling\")).toBe(\"pummeLLing\");\n expect(translateCase(\"pummelEd\", \"pummelling\")).toBe(\"pummellIng\");\n expect(translateCase(\"pummellEd\", \"pummellling\")).toBe(\"pummelllIng\");\n expect(translateCase(\"pummelling\", \"pummeled\")).toBe(\"pummeled\");\n expect(translateCase(\"PUMMELLING\", \"pummeled\")).toBe(\"PUMMELED\");\n expect(translateCase(\"pummeLLing\", \"pummeled\")).toBe(\"pummeLed\");\n expect(translateCase(\"pummellIng\", \"pummeled\")).toBe(\"pummelEd\");\n expect(translateCase(\"pummelllIng\", \"pummelled\")).toBe(\"pummellEd\");\n });\n it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (suffix with -s)\", () => {\n expect(translateCase(\"prologs\", \"prologues\")).toBe(\"prologues\");\n expect(translateCase(\"PROLOgs\", \"prologues\")).toBe(\"PROLOgues\");\n expect(translateCase(\"proloGs\", \"prologues\")).toBe(\"proloGUEs\");\n expect(translateCase(\"proloGS\", \"prologues\")).toBe(\"proloGUES\");\n expect(translateCase(\"prologues\", \"prologs\")).toBe(\"prologs\");\n expect(translateCase(\"PROLOgues\", \"prologs\")).toBe(\"PROLOgs\");\n expect(translateCase(\"proloGUEs\", \"prologs\")).toBe(\"proloGs\");\n expect(translateCase(\"proloGUES\", \"prologs\")).toBe(\"proloGS\");\n });\n it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (multiple places multiple letters)\", () => {\n expect(translateCase(\"tranquilizers\", \"tranquillisers\")).toBe(\"tranquillisers\");\n expect(translateCase(\"tranquiLizers\", \"tranquillisers\")).toBe(\"tranquiLLisers\");\n expect(translateCase(\"tranquiLiZers\", \"tranquillisers\")).toBe(\"tranquiLLiSers\");\n expect(translateCase(\"tranquiliZERS\", \"tranquillisers\")).toBe(\"tranquilliSERS\");\n expect(translateCase(\"tranquillisers\", \"tranquilizers\")).toBe(\"tranquilizers\");\n expect(translateCase(\"tranquiLLisers\", \"tranquilizers\")).toBe(\"tranquiLizers\");\n expect(translateCase(\"tranquiLLiSers\", \"tranquilizers\")).toBe(\"tranquiLiZers\");\n expect(translateCase(\"tranquilliSERS\", \"tranquilizers\")).toBe(\"tranquiliZERS\");\n expect(translateCase(\"tranquiLlisers\", \"tranquilizers\")).toBe(\"tranquiLizers\");\n expect(translateCase(\"tranquilLisers\", \"tranquilizers\")).toBe(\"tranquilizers\");\n expect(translateCase(\"outmaneuvers\", \"outmanoeuvres\")).toBe(\"outmanoeuvres\");\n expect(translateCase(\"outmaneuvErs\", \"outmanoeuvres\")).toBe(\"outmanoeuvrEs\");\n expect(translateCase(\"outmaneuveRs\", \"outmanoeuvres\")).toBe(\"outmanoeuvres\");\n expect(translateCase(\"outmaneuVERS\", \"outmanoeuvres\")).toBe(\"outmanoeuVRES\");\n expect(translateCase(\"outmanoeuvres\", \"outmaneuvers\")).toBe(\"outmaneuvers\");\n expect(translateCase(\"outmanoeuvrEs\", \"outmaneuvers\")).toBe(\"outmaneuvers\");\n expect(translateCase(\"outmanoeuvRes\", \"outmaneuvers\")).toBe(\"outmaneuveRs\");\n expect(translateCase(\"outmanoeuVRES\", \"outmaneuvers\")).toBe(\"outmaneuVERS\");\n });\n it(\"should return recreate arbitrary CAPS sequence when target is similar to the source (others)\", () => {\n expect(translateCase(\"Ice-CreaM\", \"ice-screamme\")).toBe(\"Ice-sCreaMME\");\n expect(translateCase(\"TRI-coloriZation\", \"trio-colourisation\")).toBe(\"TRIO-colouriSation\");\n expect(translateCase(\"TRIO-colouriSation\", \"tri-colorization\")).toBe(\"TRI-coloriZation\");\n expect(translateCase(\"leTter\", \"lemmer\")).toBe(\"leMmer\");\n expect(translateCase(\"leTTer\", \"lemmer\")).toBe(\"leMMer\");\n expect(translateCase(\"leTTer\", \"lemer\")).toBe(\"leMer\");\n expect(translateCase(\"leMmer\", \"letter\")).toBe(\"leTter\");\n expect(translateCase(\"leMMer\", \"letter\")).toBe(\"leTTer\");\n expect(translateCase(\"leMer\", \"letter\")).toBe(\"leTTer\");\n });\n it(\"should return recreate arbitrary CAPS sequence when source is not similar to the source but have the same length\", () => {\n expect(translateCase(\"\", \"\")).toBe(\"\");\n expect(translateCase(\"a\", \"x\")).toBe(\"x\");\n expect(translateCase(\"A\", \"x\")).toBe(\"X\");\n expect(translateCase(\"Ab\", \"xy\")).toBe(\"Xy\");\n expect(translateCase(\"aB\", \"xy\")).toBe(\"xY\");\n expect(translateCase(\"ABC\", \"xyz\")).toBe(\"XYZ\");\n expect(translateCase(\"aBC\", \"xyz\")).toBe(\"xYZ\");\n expect(translateCase(\"AbC\", \"xyz\")).toBe(\"XyZ\");\n expect(translateCase(\"ABc\", \"xyz\")).toBe(\"XYz\");\n expect(translateCase(\"abC\", \"xyz\")).toBe(\"xyZ\");\n expect(translateCase(\"Abc\", \"xyz\")).toBe(\"Xyz\");\n });\n});\n","\"use strict\";\nimport { diff } from \"../diff\";\nimport { everyLowerCase, everyUpperCase } from \"./case\";\nexport function translateCase(source, target) {\n if (everyLowerCase(source)) {\n return target;\n }\n if (everyUpperCase(source)) {\n return target.toUpperCase();\n }\n if (everyUpperCase(source.substring(0, 1))) {\n if (everyLowerCase(source.substring(1))) {\n return target.substring(0, 1).toUpperCase() + target.substring(1);\n }\n target = target.substring(0, 1).toUpperCase() + target.substring(1);\n }\n const changes = diff(source, target);\n let result = \"\";\n let isUpperCase = false;\n for (const { added, removed, oldValue, newValue } of changes) {\n if (removed && added || !removed && !added) {\n for (let charIndex = 0; charIndex < newValue.length; charIndex++) {\n const oldChar = oldValue.charAt(charIndex);\n const newChar = newValue.charAt(charIndex);\n isUpperCase = everyUpperCase(oldChar) && (!everyLowerCase(oldChar) || isUpperCase);\n result += isUpperCase ? newChar.toUpperCase() : newChar;\n }\n } else if (added) {\n for (let charIndex = 0; charIndex < newValue.length; charIndex++) {\n const newChar = newValue.charAt(charIndex);\n result += isUpperCase ? newChar.toUpperCase() : newChar;\n }\n }\n }\n return result;\n}\n","import { translateWord } from \"../\";\ndescribe(\"translateWord\", () => {\n it(\"should be defined\", () => {\n expect(translateWord).toBeDefined();\n });\n it(\"should translate word spellings\", () => {\n expect(translateWord(\"color\")).toBe(\"colour\");\n expect(translateWord(\"snowplow\")).toBe(\"snowplough\");\n expect(translateWord(\"pummeled\")).toBe(\"pummelling\");\n expect(translateWord(\"prologs\")).toBe(\"prologues\");\n expect(translateWord(\"estr-\")).toBe(\"oestr-\");\n });\n it(\"should keep empty string\", () => {\n expect(translateWord(\"\")).toBe(\"\");\n });\n it(\"should keep the same word when no translate available\", () => {\n expect(translateWord(\"cat\")).toBe(\"cat\");\n expect(translateWord(\"Internet\")).toBe(\"Internet\");\n expect(translateWord(\"ice-\")).toBe(\"ice-\");\n });\n it(\"should translate word spellings and keep case\", () => {\n expect(translateWord(\"Color\")).toBe(\"Colour\");\n expect(translateWord(\"SnowPlow\")).toBe(\"SnowPlough\");\n expect(translateWord(\"pummeLED\")).toBe(\"pummeLLING\");\n expect(translateWord(\"proLOGS\")).toBe(\"proLOGUES\");\n });\n});\n","\"use strict\";\nimport {\n AmericanSpellings,\n BritishSpellings\n} from \"../data\";\nimport { translateCase } from \"./translateCase\";\nfunction map(word, options) {\n if (options == null ? void 0 : options.american) {\n return BritishSpellings[word];\n } else {\n return AmericanSpellings[word];\n }\n}\nexport function translateWord(word, options) {\n let key = word.toLowerCase();\n let translated = map(key, options);\n if (key === \"\") return word;\n if (translated != null && typeof translated === \"string\") {\n return translateCase(word, translated);\n }\n if (key.endsWith(\"-\")) {\n key = key.substring(0, key.length - 1);\n translated = map(key, options);\n if (translated != null) {\n return translateCase(word, translated) + \"-\";\n }\n }\n return word;\n}\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nexport const copyToClipboard = (content) => __async(void 0, null, function* () {\n if (window.isSecureContext && navigator.clipboard) {\n try {\n yield navigator.clipboard.writeText(content);\n } catch (error) {\n console.error(\"Failed to copy!\", error);\n }\n } else {\n console.error(\"Not using HTTPS/localhost or Clipboard API not available.\");\n }\n});\nexport const copyRichHTML = (HTML) => __async(void 0, null, function* () {\n const PLAINBLOB = new Blob([HTML], { type: \"text/plain\" });\n const HTMLBLOB = new Blob([HTML], { type: \"text/html\" });\n try {\n yield navigator.clipboard.write([\n new ClipboardItem({ [\"text/plain\"]: PLAINBLOB, [\"text/html\"]: HTMLBLOB })\n ]);\n console.log(\"copied\");\n } catch (error) {\n console.error(\"Failed to copy!\", error);\n }\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nexport const parseCountryData = (data) => {\n return data.map((country) => __spreadProps(__spreadValues({}, country), {\n label: country.name.toLowerCase().split(\" \").map((word) => {\n if (word !== \"and\" && word !== \"of\") {\n return word.charAt(0) === \"(\" ? word[0] + word[1].toUpperCase() + word.slice(2) : word[0].toUpperCase() + word.slice(1);\n } else {\n return word;\n }\n }).join(\" \"),\n states: country.states.map((state) => __spreadProps(__spreadValues({}, state), {\n label: state.name\n }))\n })).sort((a, b) => {\n return a.name.localeCompare(b.name);\n });\n};\n","\"use strict\";\nexport const emailIsValid = (email) => {\n const simpleEmailRex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return simpleEmailRex.test(String(email).toLowerCase());\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport { serialize } from \"object-to-formdata\";\nexport const handleAPIRequest = (_0) => __async(void 0, [_0], function* ({\n url,\n method,\n body,\n onSuccess,\n onFailure,\n onFinally,\n setLoaderState,\n setSnackbarState,\n successMessage,\n failureMessage,\n isFormData = false\n}) {\n setLoaderState && setLoaderState(true);\n try {\n const response = yield fetch(url, __spreadValues(__spreadValues({\n method\n }, !isFormData && {\n headers: {\n \"Content-Type\": \"application/json\"\n }\n }), body && (isFormData ? { body: serialize(body) } : { body: JSON.stringify(body) })));\n const data = yield response.json();\n if (response.ok) {\n onSuccess && onSuccess(data);\n if (setSnackbarState && (successMessage !== void 0 ? successMessage.show : true)) {\n setSnackbarState({\n message: (successMessage == null ? void 0 : successMessage.message) || data.message || \"Success\",\n state: \"success\"\n });\n }\n } else {\n throw data;\n }\n } catch (error) {\n if (setSnackbarState && (failureMessage !== void 0 ? failureMessage.show : true)) {\n setSnackbarState({\n message: (failureMessage == null ? void 0 : failureMessage.message) || error.message || error.errors || \"Something went wrong, please try again\",\n state: \"error\"\n });\n }\n onFailure && onFailure(error);\n } finally {\n setLoaderState && setLoaderState(false);\n onFinally && onFinally();\n }\n});\n","\"use strict\";\nexport const handleRichCopy = (ref, setCopied) => {\n var _a, _b, _c;\n if (!ref) return;\n setCopied(true);\n setTimeout(() => setCopied(false), 3e3);\n (_a = window == null ? void 0 : window.getSelection()) == null ? void 0 : _a.removeAllRanges();\n const range = document.createRange();\n range.selectNode(ref);\n (_b = window == null ? void 0 : window.getSelection()) == null ? void 0 : _b.addRange(range);\n document.execCommand(\"copy\");\n (_c = window == null ? void 0 : window.getSelection()) == null ? void 0 : _c.removeAllRanges();\n};\n","\"use strict\";\nvar __pow = Math.pow;\nexport function humanFileSize(bytes, si = true, dp = 1) {\n const thresh = si ? 1e3 : 1024;\n if (Math.abs(bytes) < thresh) {\n return bytes + \" B\";\n }\n const units = si ? [\"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"] : [\"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"];\n let u = -1;\n const r = __pow(10, dp);\n do {\n bytes /= thresh;\n ++u;\n } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1);\n return bytes.toFixed(dp) + \" \" + units[u];\n}\n","\"use strict\";\nexport const immutableRemove = (array, index) => {\n const immutableCopy = [...array];\n immutableCopy.splice(index, 1);\n return immutableCopy;\n};\n","\"use strict\";\nconst DAY_TO_SECOND = 60 * 60 * 24;\nconst HOUR_TO_SECOND = 60 * 60;\nconst secondsToTimeString = (seconds, unit, singular) => {\n const amount = seconds / unit;\n return `${amount} ${singular}${amount > 1 ? \"s\" : \"\"}`;\n};\nexport const secondsToString = (seconds) => {\n if (seconds % DAY_TO_SECOND === 0) {\n return secondsToTimeString(seconds, DAY_TO_SECOND, \"day\");\n }\n if (seconds % HOUR_TO_SECOND === 0) {\n return secondsToTimeString(seconds, HOUR_TO_SECOND, \"hour\");\n }\n return \"None\";\n};\n","\"use strict\";\nexport const stringToSeconds = (delay) => {\n const [number, unit] = delay.split(\" \");\n if (unit === \"hour\" || unit === \"hours\") {\n return Number(number) * 60 * 60;\n } else if (unit === \"day\" || unit === \"days\") {\n return Number(number) * 60 * 60 * 24;\n } else {\n return 0;\n }\n};\n","\"use strict\";\nimport { makeStyles } from \"@material-ui/core/styles\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const classes = {\n dragArea: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n rowGap: \"18px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n color: \"#939393\",\n backgroundColor: \"#F3F3F3\",\n outline: \"3px solid #FFFFFF\",\n height: \"340px\",\n width: \"100%\",\n borderRadius: \"8px\",\n marginBottom: \"30px\",\n transition: \"all 0.3s ease-in-out\"\n },\n dragAreaOver: {\n backgroundColor: \"#ECECEC\",\n outline: \"3px solid #084D6D\"\n },\n selectFilesButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"120px\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n selectFilesGoogleButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"220px\",\n textTransform: \"none\",\n color: \"#5BC4C0\",\n backgroundColor: \"#5BC4C01F\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#5BC4BF35\",\n boxShadow: \"none\"\n }\n },\n buttonGroup: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-evenly\",\n width: \"500px\"\n },\n dragAreaSingle: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-around\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"12px\",\n fontWeight: \"600\",\n color: \"#939393\",\n backgroundColor: \"#F3F3F3\",\n outline: \"2px solid #FFFFFF\",\n height: \"90px\",\n width: \"320px\",\n borderRadius: \"8px\",\n padding: \"8px\",\n transition: \"all 0.3s ease-in-out\"\n },\n dragAreaOverSingle: {\n backgroundColor: \"#ECECEC\",\n outline: \"2px solid #084D6D\"\n },\n dragAreaWithGoogleDrive: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n rowGap: \"12px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n color: \"#939393\",\n backgroundColor: \"#F3F3F3\",\n outline: \"3px solid #FFFFFF\",\n height: \"150px\",\n width: \"100%\",\n borderRadius: \"8px\",\n transition: \"all 0.3s ease-in-out\"\n },\n selectFilesButtonSingle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n fontWeight: \"600\",\n width: \"90px\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n fileIconContainer: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"90%\"\n },\n fileIcon: {\n width: \"50px\",\n height: \"50px\",\n borderRadius: \"3px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: \"20px\",\n backgroundColor: \"#084D6D10\",\n \"& svg\": {\n color: theme.palette.primary.main\n }\n },\n fileName: {\n color: theme.palette.primary.main,\n fontSize: \"15px\",\n fontWeight: \"bold\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n maxWidth: \"196px\"\n },\n fileSize: {\n color: \"#999999\"\n },\n formDateWrapper: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\"\n },\n formDatePickerStyles: {\n width: \"284px\",\n height: \"32px\",\n borderRadius: \"6px\",\n margin: \"3px\",\n \"& button\": {\n transform: \"translate(-4px, -1.5px)\",\n outline: \"none\"\n }\n },\n inputLabel: {\n color: \"#666666 !important\",\n fontSize: \"16px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n overflowWrap: \"anywhere\",\n marginBottom: \"8px\",\n \"& span\": {\n marginLeft: \"2px\"\n }\n },\n questionLabel: {\n color: \"#000 !important\",\n fontSize: \"14px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n overflowWrap: \"anywhere\"\n },\n questionInputLabel: {\n color: \"#838383 !important\",\n fontSize: \"13px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n \"& span\": {\n color: theme.palette.error.main,\n marginLeft: \"2px\"\n }\n },\n questionDateWrapper: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"relative\",\n \"& div\": {\n paddingBottom: \"8px\"\n }\n },\n questionsRankInput: {\n \"& div\": {\n marginLeft: \"0\"\n }\n },\n lookUpButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"rgb(91,196,191)\",\n background: \"rgb(91,196,191,0.12)\",\n height: \"41px\",\n marginLeft: \"16px\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 14px\",\n \"&:hover\": {\n backgroundColor: \"#5BC4BF\",\n color: \"#FFFFFF\",\n boxShadow: \"none\"\n }\n }\n};\nexport const useStyles = makeStyles({\n textEditor: {\n borderRadius: 6,\n border: \"1px solid #DDDDDD\",\n overflow: \"hidden\"\n },\n textEditorToolbar: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n background: \"#DDDDDD\",\n padding: \"2px\",\n \"& .rdw-inline-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\"\n },\n \"& .rdw-list-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\"\n },\n \"& .rdw-text-align-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\"\n },\n \"& .rdw-link-modal-btn, .rdw-image-modal-btn\": {\n border: \"1px solid #CCCCCC\",\n borderRadius: \"6px\",\n background: \"none\",\n outline: \"none\",\n padding: \"3px 7px\"\n },\n \"& .rdw-link-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n \"& .rdw-link-modal\": {\n display: \"grid\",\n position: \"absolute\",\n padding: \"10px 15px\",\n marginTop: \"1.75rem\",\n background: \"#DDDDDD\",\n borderRadius: \"6px\",\n boxShadow: \"2px 2px 5px #DDDDDD\",\n width: \"220px\",\n \"& label\": {\n padding: \"10px 0\"\n },\n \"& button\": {\n marginRight: \"1rem\"\n },\n \"& #openLinkInNewWindow\": {\n marginRight: \"0.5rem\"\n }\n }\n },\n \"& .rdw-image-wrapper\": {\n display: \"flex\",\n flexDirection: \"row\",\n position: \"relative\",\n \"& .rdw-image-modal\": {\n background: \"#DDDDDD\",\n padding: \"10px 15px\",\n borderRadius: \"6px\",\n boxShadow: \"2px 2px 5px #DDDDDD\",\n display: \"grid\",\n position: \"absolute\",\n marginTop: \"1.75rem\",\n width: \"220px\",\n \"& label\": {\n padding: \"10px 0\"\n },\n \"& button\": {\n marginRight: \"1rem\"\n },\n \"& .rdw-image-modal-url-input\": {\n width: \"calc(100% - 20px)\"\n },\n \"& .rdw-image-modal-size\": {\n marginTop: 10,\n marginBottom: 10\n },\n \"& .rdw-image-modal-size-input\": {\n width: 60\n }\n }\n },\n \"& .rdw-colorpicker-modal-header\": {\n display: \"none\"\n },\n \"& .rdw-colorpicker-wrapper\": {\n position: \"relative\"\n },\n \"& .rdw-colorpicker-modal-options\": {\n display: \"flex\",\n flexWrap: \"wrap\"\n },\n \"& .rdw-colorpicker-modal\": {\n position: \"absolute\",\n background: \"#DDDDDD\",\n padding: \"5px\",\n borderRadius: \"0px 0px 6px 6px\",\n maxHeight: \"206px\",\n width: \"138px\",\n overflowY: \"auto\",\n boxShadow: \"2px 2px 5px #DDDDDD\"\n },\n \"& .rdw-colorpicker-option\": {\n \"& span\": {\n width: \"100%\",\n height: \"100%\",\n borderRadius: \"6px\"\n }\n },\n \"& .rdw-option-wrapper\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"28px\",\n height: \"28px\",\n margin: \"2px\",\n borderRadius: \"4px\",\n backgroundColor: \"transparent\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"#CCCCCC\"\n }\n },\n \"& .rdw-option-active \": {\n backgroundColor: \"darkgrey\"\n },\n \"& .rdw-history-wrapper\": {\n display: \"flex\"\n },\n \"& .rdw-block-wrapper, .rdw-fontsize-wrapper, .rdw-fontfamily-wrapper\": {\n padding: \"4px\",\n margin: \"0px 2px\",\n cursor: \"pointer\"\n },\n \"& .rdw-block-dropdown, .rdw-fontsize-dropdown, .rdw-fontfamily-wrapper\": {\n position: \"relative\",\n \"& ul\": {\n position: \"absolute\",\n background: \"#DDDDDD\",\n padding: \"5px 0px\",\n borderRadius: \"6px\",\n maxHeight: \"200px\",\n overflowY: \"auto\",\n boxShadow: \"2px 2px 5px #DDDDDD\",\n \"& li\": {\n padding: \"3px 14px\",\n cursor: \"pointer\",\n whiteSpace: \"nowrap\",\n \"&:hover\": {\n backgroundColor: \"#CCCCCC\"\n }\n }\n }\n },\n \"& .rdw-dropdownoption-active\": {\n backgroundColor: \"lightgrey\",\n \"&:hover\": {\n backgroundColor: \"lightgrey\"\n }\n }\n },\n textEditorBody: {\n all: \"revert\",\n \"& h1, h2, h3, h4, h5, h6\": {\n all: \"revert\"\n },\n minHeight: 250,\n padding: 10,\n \"&:hover\": {\n cursor: \"text\"\n },\n \"& ul\": {\n paddingLeft: 20,\n listStyle: \"disc\"\n },\n \"& ol\": {\n paddingLeft: 20,\n listStyle: \"auto\"\n },\n \"& .rdw-center-aligned-block *\": {\n textAlign: \"center !important\"\n },\n \"& .rdw-left-aligned-block *\": {\n textAlign: \"left !important\"\n },\n \"& .rdw-right-aligned-block *\": {\n textAlign: \"right !important\"\n },\n \"& .rdw-image-alignment-options-popup\": {\n display: \"none !important\"\n }\n }\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport queryString from \"query-string\";\nconst BASE_URL = window.location.origin;\nclass Api {\n constructor() {\n this.headers = {\n \"Content-Type\": \"application/json\"\n };\n this.handleResponse = (response) => {\n if (response.ok) return response.json();\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n };\n this.handlePaginatedResponse = (response) => __async(this, null, function* () {\n if (response.ok) {\n return {\n data: yield response.json(),\n totalItems: Number(response.headers.get(\"X-Total-Count\")),\n totalPages: Number(response.headers.get(\"X-Total-Pages\")),\n nextPage: Number(response.headers.get(\"X-Next-Page\"))\n };\n }\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n });\n this.getPaginated = (path, params = {}) => fetch(\n `${BASE_URL}${path}?${queryString.stringify(params, {\n skipEmptyString: true,\n skipNull: true,\n arrayFormat: \"bracket\",\n encode: false\n })}`,\n {\n headers: this.headers\n }\n ).then((r) => this.handlePaginatedResponse(r));\n this.get = (path, params = {}) => fetch(\n `${BASE_URL}${path}?${queryString.stringify(params, {\n arrayFormat: \"bracket\",\n encode: false\n })}`,\n {\n headers: this.headers\n }\n ).then((r) => this.handleResponse(r));\n this.post = (path, params = {}) => fetch(`${BASE_URL}${path}`, {\n headers: this.headers,\n method: \"POST\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r));\n this.put = (path, params = {}) => fetch(`${BASE_URL}${path}`, {\n headers: this.headers,\n method: \"PUT\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r));\n this.delete = (path, params = {}) => fetch(`${BASE_URL}${path}`, {\n headers: this.headers,\n method: \"DELETE\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r));\n this.getKpiItems = () => this.get(`/api/v4/dashboard`, {});\n this.getTasks = (params) => this.getPaginated(`/api/v4/tasks`, __spreadProps(__spreadValues({}, params), { limit: 10 }));\n this.getEvents = (params) => this.getPaginated(\"/api/v4/dashboard/events\", __spreadProps(__spreadValues({}, params), { limit: 10 }));\n this.completeTask = (id, completed) => this.put(`/api/v4/tasks/${id}`, { task: { completed: completed ? 1 : 0 } });\n this.getActivityFeed = (params) => __async(this, null, function* () {\n if (params.page === null) {\n return this.get(`/api/v4/dashboard/activities_feed`, __spreadValues({}, params));\n } else {\n yield new Promise((resolve) => setTimeout(resolve, 2500));\n return this.get(`/api/v4/dashboard/activities_feed`, __spreadValues({}, params));\n }\n });\n this.getRecentlyViewed = () => this.get(`/api/v4/dashboard/recent_page_views`, {});\n this.getUserPermissions = () => this.get(`/api/v4/user_permissions`, {});\n this.getUserEntities = () => this.get(`/api/v4/user_entities`, {});\n }\n}\nexport default new Api();\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nexport const styles = {\n section: {\n flexBasis: \"40%\",\n flexGrow: 1,\n height: \"420px\",\n overflow: \"hidden\",\n display: \"flex\",\n flexDirection: \"column\"\n },\n sectionTitle: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\"\n },\n button: {\n fontSize: \"12px\",\n fontWeight: \"bold\",\n backgroundColor: \"#5BC4BF1F\",\n color: theme.palette.action.main,\n borderRadius: \"6px\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: theme.palette.action.main,\n color: \"#FFFFFF\"\n }\n },\n tabContainer: {\n display: \"flex\",\n gap: \"20px\",\n borderBottom: \"1px solid #DDDDDD\"\n },\n tab: {\n color: \"#939393\",\n fontSize: \"18px\",\n paddingBottom: \"10px\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n tabSelected: {\n color: theme.palette.primary.main,\n fontWeight: \"600\"\n },\n line: {\n height: \"2px\",\n backgroundColor: theme.palette.secondary.main,\n position: \"absolute\",\n bottom: 0,\n borderRadius: \"1px\",\n transition: \"left 0.25s cubic-bezier(.6,.36,.25,1), width 0.25s cubic-bezier(.6,.36,.25,1)\"\n },\n taskContainer: {\n padding: \"20px 0\",\n overflowY: \"scroll\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"26px\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n },\n \"& .MuiSkeleton-root\": {\n transformOrigin: \"0px 0px !important\"\n },\n \"& .spinner\": {\n margin: \"auto\"\n }\n },\n emptyStateText: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n marginTop: \"8px\"\n }\n};\n","\"use strict\";\nexport const styles = {\n section: {\n flexBasis: \"40%\",\n flexGrow: 1,\n maxHeight: \"420px\",\n overflow: \"hidden\",\n display: \"flex\",\n flexDirection: \"column\"\n },\n taskContainer: {\n paddingBottom: \"20px\",\n overflowY: \"scroll\",\n height: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"26px\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n },\n \"& .MuiSkeleton-root\": {\n transformOrigin: \"0px 0px !important\"\n },\n \"& .spinner\": {\n margin: \"auto\"\n }\n },\n headerContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n paddingRight: \"30px\"\n },\n emptyStateText: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n marginTop: \"8px\"\n }\n};\n","\"use strict\";\nimport Dashboard from \"./Dashboard\";\nexport default Dashboard;\n","\"use strict\";\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nconst dashboardStyles = {\n section: {\n border: \"1px solid #E3E3E3\",\n boxSizing: \"border-box\",\n borderRadius: \"6px\",\n width: \"100%\"\n },\n kpiSection: {\n flexBasis: \"20%\",\n flexGrow: 1,\n userSelect: \"none\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n height: \"180px\",\n maxHeight: \"180px\",\n padding: \"30px\"\n },\n sectionTitle: {\n color: \"#333\",\n fontWeight: \"500\",\n fontSize: \"22px\",\n padding: \"30px\"\n },\n titleContainer: {\n display: \"flex\",\n flexDirection: \"row\"\n },\n noticeContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n padding: \"9px 16px\",\n border: `1px solid ${theme.palette.action.main}`,\n borderRadius: \"8px\",\n color: \"#666666\",\n fontSize: \"16px\",\n margin: \"26px 0px\",\n rowGap: \"1px\"\n },\n infoIcon: {\n color: theme.palette.action.main,\n marginTop: \"4px\",\n fontSize: \"16px\"\n }\n};\nexport default dashboardStyles;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionsModalReducedPaddingCommonStyles } from \"../../shared/commonStyles\";\nimport { actionModalFormLine, closeIcon, modalSendButton } from \"../../shared/styleClasses\";\nexport const classes = {\n tabContent: {\n display: \"flex\",\n flexDirection: \"column\",\n margin: \"20px 0px 40px 0\"\n },\n headerContent: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"20px\",\n fontWeight: \"bold\",\n color: \"#727272\",\n marginBottom: \"1rem\",\n lineHeight: \"2rem\"\n },\n bodyContainer: {\n padding: \"8px 0\"\n },\n modalFormLine: {\n width: \"100%\",\n display: \"grid\"\n },\n hintText: {\n fontFamily: \"Source Sans Pro\",\n color: \"#939393\",\n fontSize: \"12px\",\n margin: \"6px 0px\"\n },\n testGridContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n h2: {\n fontSize: \"20px\",\n fontWeight: \"bold\",\n color: \"#666666\",\n marginBottom: \"24px\"\n }\n },\n titleAndButtonContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\"\n },\n newButton: {\n fontFamily: \"Source Sans Pro\",\n textTransform: \"none\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n borderRadius: \"6px\",\n padding: \"8px 16px\",\n color: theme.palette.action.main,\n backgroundColor: `${theme.palette.action.main}1F`,\n \"&:hover\": {\n backgroundColor: `${theme.palette.action.main}2F`\n }\n },\n tableContainer: {\n maxWidth: \"100%\",\n overflowX: \"scroll\"\n },\n table: {\n \"& th\": {\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n whiteSpace: \"nowrap\",\n fontFamily: \"Source Sans Pro\",\n padding: \"12px 0px 38px 0px\"\n },\n \"& td\": {\n border: \"none\",\n fontFamily: \"Source Sans Pro\"\n },\n \"& thead th\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n textTransform: \"none\"\n },\n \"& tbody tr\": {\n borderTop: \"1px solid #DDDDDD\"\n },\n \"& tbody tr td\": {\n padding: \"25px 0px\"\n }\n },\n tableActions: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"center\",\n columnGap: \"8px\"\n },\n tableDeleteButton: {\n \"& svg\": {\n color: theme.palette.error.main\n }\n },\n tableEditButton: {\n \"& svg\": {\n color: \"#666666\"\n }\n },\n percentageSlider: {\n fontFamily: \"Source Sans Pro\",\n color: theme.palette.action.main,\n height: \"3.5px\",\n maxWidth: \"267px\",\n marginInline: \"13px\",\n \"& .MuiSlider-rail\": {\n backgroundColor: \"#E0E0E0\"\n },\n \"& .MuiSlider-track\": {\n backgroundColor: theme.palette.action.main\n },\n \"& .MuiSlider-thumb\": {\n backgroundColor: theme.palette.action.main,\n width: \"14px\",\n height: \"14px\",\n \"&:hover\": {\n boxShadow: \"0px 0px 0px 7px\" + theme.palette.action.main + \"16\"\n }\n },\n \"& .MuiSlider-thumb.Mui-active\": {\n boxShadow: \"0px 0px 0px 9px\" + theme.palette.action.main + \"16\"\n },\n \"& .MuiSlider-valueLabel\": {\n fontSize: \"13px\",\n fontWeight: \"500\",\n backgroundColor: \"transparent\",\n color: theme.palette.primary.main,\n top: \"44px\",\n \"&::after\": {\n display: \"none\"\n }\n }\n },\n actionsModalReducedPadding: __spreadProps(__spreadValues({}, actionsModalReducedPaddingCommonStyles), {\n maxWidth: \"900px\"\n }),\n actionModalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n marginLeft: \"8px\"\n },\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n margin: \"46px 0px\"\n },\n actionModalFormLine,\n sliderLine: {\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n paddingBottom: \"60px\",\n paddingTop: \"5px\",\n margin: \"0px 12px 0px 12px\",\n width: \"100%\"\n },\n modalFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\"\n },\n modalCancelButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"100px\",\n textTransform: \"none\",\n textDecoration: \"underline\",\n color: theme.palette.error.main,\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\",\n textDecoration: \"none\",\n boxShadow: \"none\"\n }\n },\n modalSendButton,\n closeIcon,\n inputLabel: {\n color: \"#838383 !important\",\n fontSize: \"16px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n paddingLeft: \"4px\",\n \"& span\": {\n color: theme.palette.error.main,\n marginLeft: \"2px\"\n }\n },\n formError: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n position: \"absolute\",\n bottom: \"-24px\",\n left: \"4px\"\n },\n noTests: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"380px\",\n rowGap: \"36px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n color: \"#939393\"\n },\n modalCreateRequisitionButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#5BC4BF\",\n backgroundColor: \"#5BC4BF12\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n marginTop: \"22px\",\n marginLeft: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a412\",\n boxShadow: \"none\"\n }\n },\n updateRequisitionButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"13px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#5BC4BF\",\n backgroundColor: \"#5BC4BF12\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n margin: \"22px 0px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a412\",\n boxShadow: \"none\"\n }\n },\n requisitionWrapper: {\n marginTop: \"20px\",\n padding: \"12px 18px\",\n background: \"#F3F3F3\",\n borderRadius: \"6px\"\n },\n requisitionInput: {\n \"& span\": {\n fontSize: \"14px !Important\"\n }\n },\n requisitionTitle: {\n color: theme.palette.primary.main,\n fontSize: \"13px\",\n fontWeight: \"bold\",\n paddingBottom: \"5px\",\n width: \"70px\",\n padding: \"0px\"\n },\n formAutocomplete: {\n \"& .MuiAutocomplete-root\": {\n \"& .MuiOutlinedInput-root\": {\n padding: \"0px\"\n }\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"6px\",\n position: \"relative\",\n backgroundColor: \"#FFFFFF\",\n color: \"#333333\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"16px\",\n padding: \"0px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n transition: \"all 0.16s ease-in-out\",\n \"& .MuiAutocomplete-input\": {\n padding: \"6px 4px 6px 11px\"\n }\n },\n \"& fieldset\": {\n display: \"none\"\n },\n \"& label\": {\n color: \"#838383 !important\",\n fontSize: \"21px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n paddingLeft: \"4px\",\n left: \"-13px\",\n top: \"-15px\",\n \"& .MuiFormLabel-asterisk\": {\n color: theme.palette.error.main\n }\n },\n \"& .MuiAutocomplete-popupIndicator\": {\n transition: \"all 0.25s ease-in-out\",\n color: \"#AAAAAA\"\n }\n },\n editInfoText: {\n color: \"#939393\",\n fontSize: \"16px\",\n padding: \"16px 0\"\n },\n question: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: \"12px 24px\",\n background: \"rgba(122, 142, 241, 0.12)\",\n borderRadius: \"6px\",\n color: \"#2D388D\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\"\n },\n questionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n marginBottom: \"24px\",\n rowGap: \"28px\",\n width: \"100%\",\n position: \"relative\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n },\n switchContainer: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"200px\"\n },\n questionSkeleton: {\n width: \"100%\",\n height: \"180px\",\n borderRadius: \"6px\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionsModalReducedPaddingCommonStyles } from \"../../shared/commonStyles\";\nimport { actionModalFormLine, closeIcon, modalSendButton } from \"../../shared/styleClasses\";\nexport const classes = {\n toggleButtonsContainer: {\n marginTop: \"20px\",\n marginBottom: \"40px\"\n },\n automationContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n marginBottom: \"40px\",\n h2: {\n fontSize: \"20px\",\n fontWeight: \"bold\",\n color: \"#666666\",\n marginBottom: \"24px\"\n }\n },\n autoStatusesContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n maxWidth: \"1028px\",\n padding: \"30px 40px\",\n backgroundColor: \"#F3F3F367\",\n borderRadius: \"8px\"\n },\n autoStatusesSubContainer: {\n position: \"relative\",\n display: \"flex\",\n flexDirection: \"column\",\n maxWidth: \"880px\",\n rowGap: \"24px\",\n marginLeft: \"24px\",\n paddingBlock: \"38px\",\n borderBottom: \"1px solid #DDDDDD\",\n h4: {\n fontSize: \"22px\",\n fontWeight: \"bold\",\n color: \"#666666\"\n }\n },\n switchContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"0 6px\",\n marginBlock: \"auto\",\n minWidth: \"100px\"\n },\n switch: {\n \"& .MuiSwitch-thumb\": {\n color: \"#FFFFFF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n \"& .MuiSwitch-track\": {\n backgroundColor: \"#000 !important\"\n }\n }\n },\n switchActive: {\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#5BC4BF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n }\n },\n statusFormLine: {\n display: \"flex\",\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n alignItems: \"center\",\n columnGap: \"24px\",\n rowGap: \"10px\"\n },\n addNewFieldButton: {\n fontFamily: \"Source Sans Pro\",\n textTransform: \"none\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n borderRadius: \"8px\",\n backgroundColor: \"#EEEEEE\",\n padding: \"8px 12px\",\n color: \"#999999\",\n \"&:hover\": {\n backgroundColor: \"#DDDDDD\",\n color: \"#666666\"\n }\n },\n noStatusesAddButton: {\n fontFamily: \"Source Sans Pro\",\n textTransform: \"none\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n borderRadius: \"8px\",\n backgroundColor: \"#EEEEEE\",\n padding: \"8px 14px\",\n color: \"#999999\",\n \"&:hover\": {\n backgroundColor: \"#DDDDDD\",\n color: \"#666666\"\n }\n },\n removeButton: {\n transform: \"translateX(-22px)\",\n marginTop: \"24px\",\n \"&:hover\": {\n \"& svg\": {\n color: theme.palette.error.main\n }\n },\n \"& svg\": {\n color: \"#666666\"\n }\n },\n deleteButton: {\n position: \"absolute\",\n top: \"20px\",\n right: \"0px\",\n \"& svg\": {\n color: theme.palette.error.main\n }\n },\n clearButton: {\n transform: \"translate(-22px, 12px)\",\n \"& svg\": {\n color: theme.palette.error.main\n }\n },\n addNewStatusButton: {\n position: \"absolute\",\n bottom: \"-19.5px\",\n left: \"47%\",\n color: \"#DDDDDD\",\n \"& svg\": {\n color: \"#CCCCCC\",\n zIndex: 1\n },\n \"&:before\": {\n content: '\"\"',\n position: \"absolute\",\n top: \"25%\",\n left: \"25%\",\n width: \"20px\",\n height: \"20px\",\n borderRadius: \"50%\",\n backgroundColor: \"white\",\n zIndex: \"0\"\n }\n },\n ratingSlider: {\n fontFamily: \"Source Sans Pro\",\n color: theme.palette.action.main,\n height: \"3.5px\",\n width: \"80%\",\n \"& .MuiSlider-rail\": {\n backgroundColor: \"#E0E0E0\"\n },\n \"& .MuiSlider-track\": {\n backgroundColor: theme.palette.action.main\n },\n \"& .MuiSlider-thumb\": {\n backgroundColor: theme.palette.action.main,\n width: \"14px\",\n height: \"14px\",\n \"&:hover\": {\n boxShadow: \"0px 0px 0px 7px\" + theme.palette.action.main + \"16\"\n }\n },\n \"& .MuiSlider-thumb.Mui-active\": {\n boxShadow: \"0px 0px 0px 9px\" + theme.palette.action.main + \"16\"\n },\n \"& .MuiSlider-valueLabel\": {\n fontSize: \"11px\",\n fontWeight: \"500\",\n backgroundColor: \"transparent\",\n color: theme.palette.primary.main,\n top: \"40px\",\n \"&::after\": {\n display: \"none\"\n }\n }\n },\n titleAndButtonContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\"\n },\n newButton: {\n fontFamily: \"Source Sans Pro\",\n textTransform: \"none\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n borderRadius: \"6px\",\n padding: \"8px 16px\",\n color: theme.palette.action.main,\n backgroundColor: `${theme.palette.action.main}1F`,\n \"&:hover\": {\n backgroundColor: `${theme.palette.action.main}2F`\n }\n },\n tableContainer: {\n maxWidth: \"100%\",\n overflow: \"auto\"\n },\n table: {\n \"& th\": {\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n whiteSpace: \"nowrap\",\n fontFamily: \"Source Sans Pro\",\n padding: \"12px 0px 38px 0px\"\n },\n \"& td\": {\n border: \"none\",\n fontFamily: \"Source Sans Pro\"\n },\n \"& thead th\": {\n minWidth: \"170px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n textTransform: \"none\",\n paddingRight: \"8px\"\n },\n \"& tbody tr\": {\n borderTop: \"1px solid #DDDDDD\"\n },\n \"& tbody tr td\": {\n padding: \"25px 8px 25px 0px\"\n }\n },\n tableActions: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"right\",\n columnGap: \"8px\"\n },\n tableActionsReply: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n marginRight: \"25px\",\n columnGap: \"8px\"\n },\n tableDeleteButton: {\n \"& svg\": {\n color: theme.palette.error.main\n }\n },\n tableEditButton: {\n \"& svg\": {\n color: \"#666666\"\n }\n },\n actionsModalReducedPadding: actionsModalReducedPaddingCommonStyles,\n actionModalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n marginLeft: \"8px\"\n },\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n margin: \"46px 0px\"\n },\n actionModalFormLine,\n modalFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\"\n },\n modalCancelButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"100px\",\n textTransform: \"none\",\n textDecoration: \"underline\",\n color: theme.palette.error.main,\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\",\n textDecoration: \"none\",\n boxShadow: \"none\"\n }\n },\n modalSendButton,\n closeIcon,\n emailPreview: {\n padding: \"30px 60px 50px 60px\"\n },\n previewSkeleton: {\n borderRadius: \"8px\",\n margin: \"16px\"\n },\n formError: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n position: \"absolute\",\n bottom: \"-24px\",\n left: \"4px\"\n },\n noAutoForwarders: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"300px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n color: \"#939393\"\n },\n noQuestionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\"\n },\n noQuestionsText: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\",\n textAlign: \"center\"\n },\n noticeContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n padding: \"9px 16px\",\n border: `1px solid ${theme.palette.action.main}`,\n borderRadius: \"8px\",\n color: \"#939393\",\n fontSize: \"16px\",\n margin: \"16px 0\",\n rowGap: \"1px\"\n },\n noticeIcon: {\n color: theme.palette.action.main,\n margin: \"0 9px 3px 0\",\n fontSize: \"16px\"\n },\n htmlContent: {\n background: \"#E0E0E01F\",\n borderRadius: \"0.5rem\",\n color: \"#939393\",\n margin: \"0px 16px 20px 16px\",\n userSelect: \"none\",\n \"& p\": {\n marginTop: \"0\"\n }\n },\n previewHeader: {\n display: \"flex\",\n borderRadius: \"6px 0 0 0\",\n color: \"#666666\",\n background: \"#DDDDDD\",\n padding: \"5px 10px\",\n width: \"120px\",\n textAlign: \"center\",\n fontWeight: \"700\",\n justifyContent: \"space-evenly\"\n },\n placeholderText: {\n fontFamily: \"Source Sans Pro\",\n color: \"#838383\",\n fontSize: \"11px\",\n margin: \"6px 0px 20px 4px\"\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionsModalReducedPaddingCommonStyles } from \"../../shared/commonStyles\";\nimport {\n actionButton,\n actionModalFormLine,\n closeIcon,\n modalCreateButton\n} from \"../../shared/styleClasses\";\nexport const classes = {\n questionsPageContainer: {\n paddingTop: \"6px\",\n overflowY: \"auto\",\n width: \"100%\"\n },\n pageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n padding: \"0px 16px\",\n \"& h2\": {\n fontWeight: \"bold\",\n fontSize: \"20px\",\n lineHeight: \"1.2em\",\n color: \"#666666\",\n marginTop: \"0\",\n \"@media (max-width: 1450px)\": {\n fontSize: \"20px\"\n },\n \"@media (max-width: 1260px)\": {\n fontSize: \"14px\"\n }\n }\n },\n modalWrapper: {\n height: \"100%\",\n position: \"relative\",\n display: \"contents\"\n },\n questionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"40px\",\n padding: \"24px 16px\",\n minWidth: \"700px\"\n },\n noQuestionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\"\n },\n noQuestionsText: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\",\n textAlign: \"center\"\n },\n actionsContianer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"22px\",\n margin: \"30px 0 30px 0\",\n padding: \"0px 16px\"\n },\n actionButton,\n actionsModalReducedPadding: __spreadProps(__spreadValues({}, actionsModalReducedPaddingCommonStyles), {\n paddingBottom: 0\n }),\n closeIcon,\n actionModalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n marginLeft: \"15px\"\n },\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n margin: \"24px 0 0 0\"\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"20px\",\n width: \"100%\"\n },\n actionModalFormLine,\n modalFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\",\n marginTop: \"auto\",\n marginBottom: \"40px\"\n },\n modalFooterSmallerSection: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n marginBottom: \"40px\",\n columnGap: \"20px\"\n },\n modalCancelButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"100px\",\n textTransform: \"none\",\n textDecoration: \"underline\",\n color: theme.palette.error.main,\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\",\n textDecoration: \"none\",\n boxShadow: \"none\"\n }\n },\n modalCreateButton,\n formError: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n position: \"absolute\",\n top: \"-24px\",\n left: \"4px\"\n },\n inlineError: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n left: \"4px\"\n },\n checkboxContainer: {\n display: \"flex\",\n marginLeft: \"19px\"\n },\n switchLabels: {\n justifyContent: \"start\",\n width: \"120px\",\n \"& .MuiFormControlLabel-label\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n color: \"#000000\"\n },\n \"& .MuiSwitch-track\": {\n backgroundColor: \"rgba(0,0,0,0.38)\",\n opacity: \"1\"\n },\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n },\n \"& .Mui-checked\": {\n color: \"rgb(91, 196, 191, 0.5) !important\"\n }\n },\n switch: {\n \"& .MuiSwitch-thumb\": {\n color: \"#FFFFFF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n \"& .MuiSwitch-track\": {\n backgroundColor: \"#000 !important\"\n }\n }\n },\n switchActive: {\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#5BC4BF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n }\n },\n labelActive: {\n \"& .MuiFormControlLabel-label\": {\n color: \"#CCCCCC\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\"\n }\n },\n addChoiceContainer: {\n padding: \"20px 15px\"\n },\n addChoiceHead: {\n display: \"flex\",\n alignItems: \"baseline\"\n },\n addChoiceLabel: {\n color: \"#838383\",\n paddingLeft: \"4px\"\n },\n modalAddChoiceButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#5BC4BF\",\n backgroundColor: \"#5BC4BF12\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n marginTop: \"10px\",\n marginLeft: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a412\",\n boxShadow: \"none\"\n }\n },\n choice: {\n marginTop: \"15px\"\n },\n availabilityContainer: {\n padding: \"20px 15px\"\n },\n config: {\n marginTop: \"15px\",\n display: \"flex\",\n flexDirection: \"column\"\n },\n questionsWrapper: {\n display: \"flex\",\n padding: \"12px 18px 0 18px\",\n background: \"#F3F3F3\",\n borderRadius: \"6px\"\n },\n questionInput: {\n \"& span\": {\n fontSize: \"14px !Important\"\n }\n },\n titleContainer: {\n display: \"flex\",\n columnGap: \"18px\",\n paddingRight: \"101px\",\n textAlign: \"center\"\n },\n questionsTitle: {\n color: theme.palette.primary.main,\n fontSize: \"13px\",\n fontWeight: \"bold\",\n paddingBottom: \"5px\",\n width: \"70px\",\n padding: \"0px\"\n },\n iconGreen: {\n color: theme.palette.success.main,\n fontSize: \"1.25rem\",\n margin: \"auto\",\n display: \"flex\"\n },\n iconRed: {\n color: theme.palette.error.main,\n fontSize: \"1.25rem\",\n margin: \"auto\",\n display: \"flex\"\n },\n weightValue: {\n fontSize: \"13px\",\n textAlign: \"center\"\n },\n noticeContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n padding: \"9px 16px\",\n border: `1px solid ${theme.palette.action.main}`,\n borderRadius: \"8px\",\n color: \"#939393\",\n fontSize: \"16px\",\n margin: \"16px\",\n rowGap: \"1px\"\n },\n noticeHeader: {\n fontWeight: \"bold\"\n },\n noticeIcon: {\n color: theme.palette.action.main,\n margin: \"0 9px 3px 0\",\n fontSize: \"16px\"\n },\n noticeBody: {\n marginLeft: \"26px\"\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { actionsModalReducedPaddingCommonStyles } from \"../../shared/commonStyles\";\nimport {\n actionButton,\n actionModalFormLine,\n closeIcon,\n modalCreateButton\n} from \"../../shared/styleClasses\";\nexport const classes = {\n questionsPageContainer: {\n paddingTop: \"6px\",\n overflowY: \"visible\",\n width: \"100%\"\n },\n pageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n padding: \"0px 16px\",\n \"& h2\": {\n fontWeight: \"bold\",\n fontSize: \"20px\",\n lineHeight: \"1.2em\",\n color: \"#666666\",\n marginTop: \"0\",\n \"@media (max-width: 1450px)\": {\n fontSize: \"20px\"\n },\n \"@media (max-width: 1260px)\": {\n fontSize: \"14px\"\n }\n }\n },\n modalWrapper: {\n height: \"100%\",\n position: \"relative\",\n display: \"contents\"\n },\n questionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n marginBottom: \"24px\",\n rowGap: \"28px\",\n width: \"100%\",\n position: \"relative\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n },\n questionsHeader: {\n display: \"flex\",\n paddingRight: \"18px\",\n textAlign: \"center\",\n position: \"sticky\",\n top: \"0px\",\n height: \"auto\",\n zIndex: 2,\n backgroundColor: \"#fff\",\n padding: \"20px\"\n },\n noQuestionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\"\n },\n noQuestionsText: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\",\n textAlign: \"center\"\n },\n actionsContianer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"22px\",\n margin: \"30px 0 48px 0\",\n padding: \"0px 16px\"\n },\n actionButton,\n actionsModalReducedPadding: __spreadProps(__spreadValues({}, actionsModalReducedPaddingCommonStyles), {\n paddingBottom: 0\n }),\n closeIcon,\n actionModalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n marginLeft: \"15px\"\n },\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n margin: \"24px 0 0 0\"\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"20px\",\n width: \"100%\"\n },\n actionModalFormLine,\n modalFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\",\n marginTop: \"auto\",\n marginBottom: \"40px\"\n },\n modalFooterSmallerSection: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\",\n marginBottom: \"40px\"\n },\n modalCancelButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"100px\",\n textTransform: \"none\",\n textDecoration: \"underline\",\n color: theme.palette.error.main,\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\",\n textDecoration: \"none\",\n boxShadow: \"none\"\n }\n },\n modalCreateButton,\n formError: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n position: \"absolute\",\n top: \"-24px\",\n left: \"4px\"\n },\n inlineError: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n left: \"4px\"\n },\n checkboxContainer: {\n display: \"flex\",\n marginLeft: \"19px\",\n flexWrap: \"wrap\"\n },\n switchLabels: {\n justifyContent: \"start\",\n width: \"min-content\",\n \"& .MuiFormControlLabel-label\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n color: theme.palette.common.black,\n width: \"max-content\"\n },\n \"& .MuiSwitch-track\": {\n backgroundColor: \"rgba(0,0,0,0.38)\",\n opacity: \"1\"\n },\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n },\n \"& .Mui-checked\": {\n color: \"rgb(91, 196, 191, 0.5) !important\"\n }\n },\n switch: {\n \"& .MuiSwitch-thumb\": {\n color: \"#FFFFFF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n \"& .MuiSwitch-track\": {\n backgroundColor: \"#000 !important\"\n }\n }\n },\n switchActive: {\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#5BC4BF\"\n },\n \"& .Mui-disabled\": {\n color: \"#BBBBBB !important\",\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#DDDDDD !important\",\n opacity: \"1 !important\"\n },\n \"& .MuiSwitch-thumb\": {\n color: \"#BBBBBB !important\"\n },\n \"& .MuiSwitch-track\": {\n color: \"#BBBBBB !important\",\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n },\n \"& :hover\": {\n backgroundColor: \"#BBBBBB !important\"\n }\n }\n },\n labelActive: {\n \"& .MuiFormControlLabel-label\": {\n color: \"#CCCCCC\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n width: \"max-content\"\n }\n },\n addChoiceContainer: {\n padding: \"20px 15px\"\n },\n addChoiceHead: {\n display: \"flex\",\n alignItems: \"baseline\"\n },\n addChoiceLabel: {\n color: \"#838383\",\n paddingLeft: \"4px\"\n },\n modalAddChoiceButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#5BC4BF\",\n backgroundColor: \"#5BC4BF12\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n marginTop: \"10px\",\n marginLeft: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a412\",\n boxShadow: \"none\"\n }\n },\n choice: {\n marginTop: \"15px\",\n display: \"flex\",\n alignItems: \"center\"\n },\n availabilityContainer: {\n padding: \"20px 15px\"\n },\n config: {\n marginTop: \"15px\",\n display: \"flex\",\n flexDirection: \"column\"\n },\n questionsWrapper: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: 2,\n background: \"#F3F3F3\",\n borderRadius: \"6px\",\n minWidth: \"fit-content\"\n },\n questionInput: {\n \"& span\": {\n fontSize: \"14px !Important\"\n }\n },\n questionsTitle: {\n color: theme.palette.primary.main,\n fontSize: \"13px\",\n fontWeight: \"bold\",\n paddingBottom: \"5px\",\n width: \"70px\",\n padding: \"0 6px\"\n },\n iconGreen: {\n color: theme.palette.success.main,\n fontSize: \"1.25rem\",\n margin: \"auto\",\n display: \"flex\"\n },\n iconRed: {\n color: theme.palette.error.main,\n fontSize: \"1.25rem\",\n margin: \"auto\",\n display: \"flex\"\n },\n weightValue: {\n fontSize: \"13px\",\n textAlign: \"center\"\n },\n noticeContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"center\",\n padding: \"9px 16px\",\n border: `1px solid ${theme.palette.action.main}`,\n borderRadius: \"8px\",\n color: \"#666666\",\n fontSize: \"16px\",\n margin: \"16px\",\n rowGap: \"1px\"\n },\n noticeIcon: {\n color: theme.palette.error.main,\n marginTop: \"4px\",\n fontSize: \"16px\"\n },\n infoIcon: {\n color: theme.palette.action.main,\n marginTop: \"4px\",\n fontSize: \"16px\"\n },\n dragHandle: {\n color: \"#939393\",\n fontSize: 30,\n padding: \"6px\",\n marginRight: \"10px\",\n \"&:hover\": {\n borderRadius: \"8px\",\n backgroundColor: \"#DDDDDD\"\n },\n outline: \"none\"\n },\n sortableItemSwitchContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n padding: \"0 6px\",\n marginBlock: \"auto\",\n minWidth: \"100px\"\n },\n switchLabel: {\n marginTop: theme.spacing(0.5),\n fontSize: theme.spacing(1.5)\n },\n toggleButtonsContainer: {\n marginTop: \"40px\",\n marginBottom: \"40px\",\n padding: \"0px 16px\"\n },\n aiSwitch: {\n width: \"unset\",\n \"& .MuiSwitch-thumb\": {\n backgroundColor: \"#2D388D !important\"\n },\n \"& .MuiSwitch-track\": {\n backgroundColor: \"rgba(0,0,0,0.38)\",\n opacity: \"1\"\n },\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"#92ADF4 !important\",\n opacity: \"1 !important\"\n }\n },\n actionButtonsContainer: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n alignItems: \"center\",\n marginRight: \"-8px\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nimport { copyButton, link } from \"../shared/styleClasses\";\nexport const classes = {\n jobPageContainer: {\n fontFamily: theme.typography.fontFamily,\n backgroundColor: \"#FFFFFF\",\n padding: \"40px\"\n },\n editTabsContainer: {\n flexGrow: 1,\n display: \"flex\",\n borderColor: \"none\"\n },\n editTabIndicator: {\n backgroundColor: \"#084D6D\",\n left: \"0\",\n width: \"3px\",\n borderRadius: \"0 2rem 2rem 0\"\n },\n editTabs: {\n maxWidth: \"230px\",\n minWidth: \"210px\",\n borderRadius: \"8px 0 0 8px\",\n height: \"fit-content\",\n paddingBottom: \"1rem\",\n backgroundColor: \"#f6f6f6\",\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n letterSpacing: \"0\",\n minHeight: \"45px\",\n maxHeight: \"45px\",\n textAlign: \"left\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n color: \"black\",\n textTransform: \"none\",\n minWidth: \"unset\",\n \"&:hover\": {\n fontWeight: \"600\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n \"& svg\": {\n height: \"1.5rem\",\n marginRight: \"16px !important\",\n color: \"#084D6D\"\n },\n \"& button.Mui-selected\": {\n fontWeight: \"600\",\n backgroundColor: \"#eee\",\n color: \"black\"\n }\n },\n tabsSubheader: {\n margin: \"25px 0 10px 0\",\n paddingLeft: \"14px\",\n fontWeight: \"700\",\n fontSize: \"12px\",\n height: \"12px\"\n },\n tabs: {\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n letterSpacing: \"0\",\n color: \"#939393\",\n textTransform: \"none\",\n minWidth: \"unset\",\n \"&:hover\": {\n color: \"#737373\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n \"& button.Mui-selected\": {\n fontWeight: \"600\",\n color: \"#084D6D\"\n }\n },\n tabsContainer: {\n borderBottom: 1,\n borderColor: \"#EEEEEE\",\n margin: \"35px 0 25px 0\"\n },\n tabIndicator: {\n backgroundColor: \"#5BC4BF\",\n margin: \"0 16px\"\n },\n backToJobButton: {\n marginBottom: \"20px\",\n fontSize: \"16px\",\n color: \"#eee\",\n opacity: \"0.8\",\n display: \"flex\",\n alignItems: \"center\",\n \"& div\": {\n fontWeight: \"600\",\n color: \"#666666\",\n \":hover\": {\n color: \"#545454\",\n cursor: \"pointer\"\n }\n }\n },\n iconGrey: {\n color: \"#737373\",\n fontSize: \"28px\"\n },\n editJobPageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n padding: \"0px 16px\",\n \"& h1\": {\n fontWeight: \"bold\",\n fontSize: \"38px\",\n lineHeight: \"1.2em\",\n color: \"#666666\",\n marginTop: \"0\",\n \"@media (max-width: 1450px)\": {\n fontSize: \"34px\"\n },\n \"@media (max-width: 1260px)\": {\n fontSize: \"28px\"\n }\n }\n },\n linkContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n columnGap: \"20px\",\n padding: \"6px 16px\",\n width: \"100%\",\n \"& a:hover\": {\n textDecoration: \"none\"\n }\n },\n link,\n copyButton,\n tabFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n padding: \"1em\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\"\n },\n toggleIcon: {\n margin: \"25px 0 10px 0\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n tabContent: {\n display: \"flex\",\n flexDirection: \"column\",\n margin: \"20px 0px 40px 0\"\n },\n headerContent: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"20px\",\n fontWeight: \"bold\",\n color: \"#727272\",\n marginBottom: \"1rem\",\n lineHeight: \"2rem\"\n },\n headerRow: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n marginTop: \"28px\"\n },\n bodyContainer: {\n padding: \"8px 0\",\n display: \"grid\"\n },\n hintText: {\n fontFamily: \"Source Sans Pro\",\n color: \"#939393\",\n fontSize: \"12px\",\n margin: \"6px 0px\"\n },\n warnText: {\n fontFamily: \"Source Sans Pro\",\n color: \"#E37D7A\",\n fontSize: \"14px\",\n margin: \"6px 0px\"\n },\n text: {\n fontFamily: \"Source Sans Pro\",\n color: \"#939393\",\n fontSize: \"16px\",\n margin: \"20px 0px\"\n },\n checkbox: {\n color: \"#DDDDDD\",\n \"&.Mui-checked\": {\n color: theme.palette.action.main\n },\n \"& .MuiSvgIcon-root\": {\n fontSize: \"22px\"\n }\n },\n label: {\n \"& .MuiTypography-root\": {\n color: \"#939393\",\n fontSize: \"16px\",\n fontFamily: \"Source Sans Pro, sans-serif\"\n }\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"20px\",\n width: \"100%\",\n \"& div\": {\n width: \"100%\"\n }\n },\n selectGroup: {\n display: \"flex\",\n justifyContent: \"flex-start\",\n flexWrap: \"wrap\",\n columnGap: \"10px\"\n },\n addSourceButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#5BC4BF\",\n backgroundColor: \"#5BC4BF12\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n marginTop: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a412\",\n boxShadow: \"none\"\n },\n width: \"100px\"\n },\n applicationsContainer: {\n paddingTop: \"6px\"\n },\n accordionRoot: {\n boxShadow: \"none\",\n margin: \"25px 0px\",\n \"&::before\": {\n display: \"none\"\n },\n \"&:first-of-type\": {\n marginTop: \"0px !important\"\n },\n \"&.Mui-expanded\": {\n marginTop: \"14px 0px 0px 0px\"\n }\n },\n accordionSummary: {\n width: \"fit-content\",\n padding: \"0\"\n },\n datePicker: {\n fontFamily: \"Source Sans Pro\",\n width: \"190px\",\n color: \"#666666\",\n borderRadius: \"6px\",\n \"& input\": {\n padding: \"5px 10px 7px 10px\",\n fontFamily: \"Source Sans Pro\"\n },\n \"& fieldset\": {\n borderColor: \"#DDDDDD\",\n \"& legend\": {\n display: \"none\"\n }\n },\n \"& button\": {\n padding: \"0px\",\n transform: \"translate(-2px, -1.5px)\",\n \"&:hover\": {\n background: \"transparent\",\n \"& svg\": {\n color: \"#888888\"\n }\n }\n },\n \"& .MuiInputAdornment-root\": {\n marginLeft: \"0px\"\n },\n \"& svg\": {\n color: \"#AAAAAA\"\n }\n },\n errorBox: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n position: \"absolute\",\n bottom: \"-30px\",\n height: \"2rem\",\n left: \"4px\"\n },\n generalModalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n marginBottom: \"26px\",\n width: \"100%\",\n alignItems: \"center\"\n },\n fullWidthFieldContainer: {\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n marginBottom: \"26px\"\n },\n fullWidthField: {\n width: \"100%\",\n marginBottom: \"26px\"\n },\n formAutocomplete: {\n \"& .MuiAutocomplete-root\": {\n \"& .MuiOutlinedInput-root\": {\n padding: \"0px\"\n }\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"6px\",\n position: \"relative\",\n backgroundColor: \"#FFFFFF\",\n color: \"#333333\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"16px\",\n padding: \"0px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n transition: \"all 0.16s ease-in-out\",\n \"& .MuiAutocomplete-input\": {\n padding: \"6px 4px 6px 11px\"\n }\n },\n \"& fieldset\": {\n display: \"none\"\n },\n \"& label\": {\n color: \"#838383 !important\",\n fontSize: \"21px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n paddingLeft: \"4px\",\n left: \"-13px\",\n top: \"-15px\",\n \"& .MuiFormLabel-asterisk\": {\n color: theme.palette.error.main\n }\n },\n \"& .MuiAutocomplete-popupIndicator\": {\n transition: \"all 0.25s ease-in-out\",\n color: \"#AAAAAA\"\n }\n },\n classificationLabel: {\n \"& span\": {\n color: \"#838383\",\n fontSize: \"16px !important\",\n fontFamily: \"Source Sans Pro,sans-serif\",\n marginLeft: \"0\"\n }\n },\n lastSaved: {\n fontStyle: \"italic\",\n fontSize: \"12px\",\n color: \"#666666\",\n opacity: \"0.8\",\n flexDirection: \"row\",\n alignItems: \"center\"\n },\n backAndLastSaveContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: \"20px\",\n alignItems: \"center\"\n },\n loadingWrapper: {\n position: \"relative\",\n display: \"grid\",\n placeItems: \"center\",\n animation: \"0.5s shine linear infinite\",\n transition: \"background-color 2s ease-out\"\n },\n loadingContent: {\n background: \"linear-gradient(90deg, transparent, rgba(0, 0, 0, 0.04), transparent)\",\n animation: \"2s shine linear infinite\",\n transition: \"background-color 2s ease-out\",\n \"& canvas\": {\n opacity: \"0.35\"\n }\n },\n graphWrapper: {\n padding: \"0 1rem 1.5rem 0\"\n },\n noDataContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n margin: \"80px 0px\"\n },\n noDataText: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\",\n textAlign: \"center\"\n },\n generateButton: {\n width: \"91px\",\n height: \"41px\",\n margin: \"16px 0 0 0\"\n },\n buttonContainer: {\n position: \"relative\",\n cursor: \"pointer\"\n },\n button: {\n textTransform: \"none\",\n backgroundColor: \"#F2F2F2\",\n color: \"#4E4EC7\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"700\",\n padding: \"8px 0px\",\n paddingRight: \"20px\",\n paddingLeft: \"54px\",\n borderRadius: \"22px\",\n \"&:hover\": {\n backgroundColor: \"#F2F2F2\",\n color: \"#4E4EC7\"\n }\n },\n avatarContainer: {\n width: \"44px\",\n height: \"44px\",\n borderRadius: \"50%\",\n zIndex: 1,\n position: \"absolute\",\n top: \"0px\",\n left: \"-1px\",\n background: \"linear-gradient(225.64deg, #E548FF -23.43%, #084D6D 140.57%, #084D6D 140.58%, #5BC4C0 140.6%)\",\n boxShadow: \"2px 3px 4px rgba(36, 36, 36, 0.18)\"\n },\n hoverAnimation: {\n \"@keyframes grow\": {\n \"0%\": {\n transform: \"scale(1) translate(2px, -3px)\"\n },\n \"100%\": {\n transform: \"scale(1.11) translate(2px, -5px)\"\n }\n },\n \"& svg\": {\n animation: \"grow 0.7s forwards\"\n }\n },\n unhoverAnimation: {\n \"@keyframes shrink\": {\n \"0%\": {\n transform: \"scale(1.11) translate(2px, -5px)\"\n },\n \"100%\": {\n transform: \"scale(1) translate(2px, -3px)\"\n }\n },\n \"& svg\": {\n animation: \"shrink 0.7s forwards\"\n }\n },\n betaPill: {\n position: \"absolute\",\n top: \"-8px\",\n right: \"2px\",\n zIndex: 1,\n backgroundColor: \"#5BC4C0\",\n color: \"#FFFFFF\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"9.5px\",\n fontWeight: \"700\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"16px\",\n width: \"30px\",\n borderRadius: \"8px\"\n }\n};\n","\"use strict\";\nexport const TabGroup = {\n JOB_INFORMATION: 0,\n CANDIDATE_SETTINGS: 1,\n AUTOMATION: 2,\n ADVANCED: 3\n};\nconst JOB_INFORMATION_TAB_GROUP_SIZE = 5;\nconst CANDIDATE_SETTINGS_TAB_GROUP_SIZE = 1;\nconst AUTOMATION_TAB_GROUP_SIZE = 6;\nconst ADVANCED_TAB_GROUP_SIZE = 7;\nlet offset = 1;\nconst JOB_INFORMATION_OFFSET = offset;\noffset += JOB_INFORMATION_TAB_GROUP_SIZE + 1;\nconst CANDIDATE_SETTINGS_OFFSET = offset;\noffset += CANDIDATE_SETTINGS_TAB_GROUP_SIZE + 1;\nconst AUTOMATION_OFFSET = offset;\noffset += AUTOMATION_TAB_GROUP_SIZE + 1;\nconst ADVANCED_OFFSET = offset;\nexport function convertToNormalTabIndex(tabIndex, group) {\n switch (group) {\n case TabGroup.JOB_INFORMATION:\n return JOB_INFORMATION_OFFSET - 1 + tabIndex;\n case TabGroup.CANDIDATE_SETTINGS:\n return CANDIDATE_SETTINGS_OFFSET - 2 + tabIndex;\n case TabGroup.AUTOMATION:\n return AUTOMATION_OFFSET - 3 + tabIndex;\n case TabGroup.ADVANCED:\n return ADVANCED_OFFSET - 4 + tabIndex;\n }\n return tabIndex;\n}\nexport function convertToPanelIndex(tabIndex, group) {\n switch (group) {\n case TabGroup.JOB_INFORMATION:\n return JOB_INFORMATION_OFFSET + tabIndex;\n case TabGroup.CANDIDATE_SETTINGS:\n return CANDIDATE_SETTINGS_OFFSET + tabIndex;\n case TabGroup.AUTOMATION:\n return AUTOMATION_OFFSET + tabIndex;\n case TabGroup.ADVANCED:\n return ADVANCED_OFFSET + tabIndex;\n }\n return tabIndex;\n}\n;\nexport function convertToGroupAndTabIndex(panelIndex) {\n if (panelIndex < CANDIDATE_SETTINGS_OFFSET) {\n return createTabIndex(TabGroup.JOB_INFORMATION, panelIndex - JOB_INFORMATION_OFFSET);\n }\n if (panelIndex < AUTOMATION_OFFSET) {\n return createTabIndex(TabGroup.CANDIDATE_SETTINGS, panelIndex - CANDIDATE_SETTINGS_OFFSET);\n }\n if (panelIndex < ADVANCED_OFFSET) {\n return createTabIndex(TabGroup.AUTOMATION, panelIndex - AUTOMATION_OFFSET);\n }\n return createTabIndex(TabGroup.ADVANCED, panelIndex - ADVANCED_OFFSET);\n}\nfunction createTabIndex(group, index) {\n return { index, group };\n}\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport queryString, { stringify } from \"query-string\";\nconst BASE_URL = window.location.origin;\nclass Api {\n constructor() {\n this.handleResponse = (response) => {\n if (response.ok) return response.json();\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n };\n this.handlePaginatedResponse = (response) => __async(this, null, function* () {\n if (response.ok) {\n return {\n data: yield response.json(),\n totalItems: Number(response.headers.get(\"X-Total-Count\")),\n totalPages: Number(response.headers.get(\"X-Total-Pages\"))\n };\n }\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n });\n this.getPaginated = (path, params = {}, headers) => fetch(\n `${BASE_URL}${path}?${queryString.stringify(params, {\n skipEmptyString: true,\n skipNull: true,\n arrayFormat: \"bracket\",\n encode: false\n })}`,\n {\n headers: headers ? this.getHeaders(headers) : {}\n }\n ).then((r) => this.handlePaginatedResponse(r));\n this.get = (path, params = {}, headers) => fetch(\n `${BASE_URL}${path}?${queryString.stringify(params, {\n arrayFormat: \"bracket\",\n encode: false\n })}`,\n {\n headers: this.getHeaders(headers)\n }\n ).then((r) => this.handleResponse(r));\n this.post = (path, params = {}, headers = {}) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers),\n method: \"POST\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r));\n this.put = (path, params = {}, headers) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers != null ? headers : {}),\n method: \"PUT\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r));\n this.delete = (path, params = {}, headers) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers),\n method: \"DELETE\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r));\n this.getJob = (jobId, apiKey) => this.get(`/api/v4/jobs/${jobId}`, {}, apiKey);\n this.getJobs = (page) => this.getPaginated(`/api/v4/tasks/jobs`, { page });\n this.getApplicationsForTask = (jobId, page) => this.getPaginated(`/api/v4/tasks/jobs/${jobId}/applications`, { page });\n this.getActiveSeekAd = (jobId, apiKey) => this.get(`/api/v4/seek/jobs/${jobId}/job_ads`, {}, apiKey);\n this.getJobCounts = (jobId, apiKey) => this.get(`/api/v4/jobs/${jobId}/counters`, {}, apiKey);\n this.putChangedState = (link, apiKey) => this.put(link, {}, apiKey);\n this.putChangedStatus = (link, apiKey) => this.put(link, {}, apiKey);\n this.getUserPermissions = (apiKey) => this.get(`/api/v4/user_permissions`, {}, apiKey);\n this.getGraphData = (url, apiKey, props) => this.get(url, props, apiKey);\n this.getJobAttachments = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/job_attachments`, params, apiKey);\n this.deleteJobAttachment = (apiKey, jobId, attachmentId) => this.delete(`/api/v4/jobs/${jobId}/job_attachments/${attachmentId}`, {}, apiKey);\n this.getNotes = (apiKey, jobId) => this.get(`/api/v4/jobs/${jobId}/job_notes`, {}, apiKey);\n this.getTask = (apiKey) => this.get(`/api/v4/tasks/assignable_users`, {}, apiKey);\n this.getMoveJobs = (apiKey, jobId) => this.get(`/api/v4/jobs/${jobId}/target_entities`, {}, apiKey);\n this.moveJob = (apiKey, jobId, entityId) => this.post(`/api/v4/jobs/${jobId}/move?entity_id=${entityId}`, {}, apiKey);\n this.newNote = (apiKey, jobId, params) => this.post(`/api/v4/jobs/${jobId}/job_notes`, params, apiKey);\n this.newTask = (apiKey, params, query) => this.post(`/api/v4/tasks?${query && stringify(query)}`, params, apiKey);\n this.putNote = (apiKey, jobId, noteId, params) => this.put(`/api/v4/jobs/${jobId}/job_notes/${noteId}`, params, apiKey);\n this.deleteNote = (apiKey, jobId, noteId) => this.delete(`/api/v4/jobs/${jobId}/job_notes/${noteId}`, {}, apiKey);\n this.getEmailStatuses = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/job_email_statuses`, params, apiKey);\n this.cancelEmailBatch = (jobId, emailStatusId) => this.post(`/api/v4/jobs/${jobId}/job_email_statuses/${emailStatusId}/cancel`);\n this.getApplications = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/applications`, params, apiKey);\n this.getAllApplications = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/applications`, params, apiKey);\n this.deleteApplications = (url, apiKey, params) => this.delete(url, params, apiKey);\n this.getApplicationStatuses = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/job_application_statuses`, params, apiKey);\n this.getFilterableStatuses = (apiKey, jobId, params) => this.getPaginated(\n `/api/v4/jobs/${jobId}/job_application_statuses/filterable_statuses`,\n params,\n apiKey\n );\n this.getFilterableCountries = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/applications/countries`, params, apiKey);\n this.getFilterableSuburbs = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/applications/suburbs`, params, apiKey);\n this.getWorkflows = (apiKey, params, jobId) => this.getPaginated(`/api/v4/workflows?job_id=${jobId}`, params, apiKey);\n this.assignWorkflow = (apiKey, params, jobId) => this.post(`/api/v4/workflows?job_id=${jobId}`, params, apiKey);\n this.getRevision = (apiKey, jobId, params) => this.getPaginated(`/api/v4/jobs/${jobId}/job_revisions`, params, apiKey);\n this.getRatingSets = (apiKey, jobId) => this.getPaginated(`/api/v4/jobs/${jobId}/rating_sets`, {}, apiKey);\n this.getRaters = (apiKey, jobId) => this.getPaginated(`/api/v4/jobs/${jobId}/rating_sets/raters`, {}, apiKey);\n this.deleteRatingSet = (apiKey, jobId, setId) => this.delete(`/api/v4/jobs/${jobId}/rating_sets/${setId}`, {}, apiKey);\n this.deleteRaterSet = (apiKey, jobId, userId) => this.delete(`/api/v4/jobs/${jobId}/rating_sets/bulk_destroy?user_id=${userId}`, {}, apiKey);\n this.revertRevision = (apiKey, jobId, id) => this.post(`/api/v4/jobs/${jobId}/job_revisions/${id}/revert`, {}, apiKey);\n this.putUnarchiveJob = (apiKey, params) => this.put(`/api/v4/jobs/unarchive`, params, apiKey);\n this.putApplicationStatus = (apiKey, jobId, applicationId, statusId) => this.put(\n `/api/v4/jobs/${jobId}/applications/${applicationId}/application_status/${statusId}`,\n {},\n apiKey\n );\n this.newField = (apiKey, jobId, params) => this.post(`/api/v4/fields?job_id=${jobId}`, params, apiKey);\n this.addSystemField = (apiKey, jobId, systemFieldId) => this.post(`/api/v4/system_fields?job_id=${jobId}&system_field_id=${systemFieldId}`, {}, apiKey);\n this.deleteQuestion = (apiKey, id, jobId) => this.delete(`/api/v4/fields/${id}?job_id=${jobId}`, {}, apiKey);\n this.cloneQuestion = (apiKey, id, jobId) => this.post(`/api/v4/fields/${id}/clone?job_id=${jobId}`, {}, apiKey);\n this.putQuestion = (apiKey, id, jobId, params) => this.put(`/api/v4/fields/${id}?job_id=${jobId}`, params, apiKey);\n this.newHRField = (apiKey, jobId, applicationQuestionTemplateId, params) => this.post(\n `/api/v4/fields?application_question_template_id=${applicationQuestionTemplateId}`,\n params,\n apiKey\n );\n this.putHRQuestion = (apiKey, id, jobId, applicationQuestionTemplateId, params) => this.put(\n `/api/v4/fields/${id}?application_question_template_id=${applicationQuestionTemplateId}`,\n params,\n apiKey\n );\n this.addHRQuestionSystemField = (apiKey, jobId, systemFieldId, applicationQuestionTemplateId) => this.post(\n `/api/v4/system_fields?system_field_id=${systemFieldId}&application_question_template_id=${applicationQuestionTemplateId}`,\n {},\n apiKey\n );\n this.deleteHRQuestion = (apiKey, id, jobId, applicationQuestionTemplateId) => this.delete(\n `/api/v4/fields/${id}?application_question_template_id=${applicationQuestionTemplateId}`,\n {},\n apiKey\n );\n this.referenceValidation = (apiKey, params) => this.get(`/api/v4/jobs/validating_reference`, params, apiKey);\n this.getJobTimezones = (apiKey) => this.get(`/api/v4/timezones`, {}, apiKey);\n this.getJobBrand = (apiKey, jobId) => this.get(`/api/v4/jobs/${jobId}/brands`, {}, apiKey);\n this.getJobAutoRaters = (apiKey, jobId) => this.get(`/api/v4/jobs/${jobId}/auto_raters`, {}, apiKey);\n this.getJobPanelChairs = (apiKey, jobId) => this.get(`/api/v4/panel_chairs?job_id=${jobId}`, {}, apiKey);\n this.getJobrequisitions = (apiKey, params) => this.get(`/api/v4/requisitions`, params, apiKey);\n this.getJobClassifications = (apiKey) => this.get(`/api/v4/job_classifications`, {}, apiKey);\n this.getJobAssignableUsers = (apiKey, jobId) => this.get(`/api/v4/assignable_users?job_id=${jobId}`, {}, apiKey);\n this.getSalesPeople = (apiKey) => this.get(`/api/v4/sales_people`, {}, apiKey);\n this.getRMteamMembers = (apiKey) => this.get(`/api/v4/rm_team_members`, {}, apiKey);\n this.getJobLocales = (apiKey) => this.get(`/api/v4/locales`, {}, apiKey);\n this.updateJob = (apiKey, jobId, params) => this.put(`/api/v4/jobs/${jobId}`, params, apiKey);\n this.getEvents = (date, apiKey, typeId) => this.get(\n \"/api/v4/calendar/events\",\n { date, event_type_id: typeId || void 0, override_limit: true },\n apiKey\n );\n this.getSmsTemplates = (apiKey) => this.get(\"/api/v4/sms_templates\", {}, apiKey);\n this.saveSmsTemplate = (apiKey, smsTemplateName, smsMessage) => this.post(\n `/api/v4/sms_templates`,\n {\n sms_template: {\n title: smsTemplateName,\n body: smsMessage\n }\n },\n apiKey\n );\n this.getEmailTemplates = (apiKey) => this.get(`/api/v4/calendar/email_templates/grouped_email_templates`, {}, apiKey);\n this.getEmailTemplate = (apiKey, templateId) => this.get(`/api/v4/calendar/email_templates/${templateId}`, {}, apiKey);\n this.getRecruiters = (apiKey) => this.get(`/api/v4/calendar/users`, {}, apiKey);\n this.getPlaceholders = (apiKey, type) => this.get(`/api/v4/calendar/email_templates/placeholders`, { type: type || \"\" }, apiKey);\n this.sendSms = (apiKey, jobId, eventId, applicationIds, content) => this.post(\n `/api/v4/jobs/${jobId}/applications/bulk_sms`,\n {\n event_id: eventId,\n applications_ids: applicationIds,\n content,\n added: true\n },\n apiKey\n );\n this.addToEventSms = (jobId, eventId, applicationIds, content, smsTemplateId) => this.post(`/api/v4/jobs/${jobId}/applications/bulk_sms/add_to_event`, {\n event_id: eventId,\n applications_ids: applicationIds,\n sms_template_id: smsTemplateId,\n content,\n added: true\n });\n this.sendInviteSms = (jobId, eventTypeId, applicationIds, content, smsTemplateId) => this.post(`/api/v4/jobs/${jobId}/applications/bulk_sms/invite_to_timeslot`, {\n event_type_id: eventTypeId,\n applications_ids: applicationIds,\n content,\n sms_template_id: smsTemplateId,\n invited: true\n });\n this.sendEmail = (apiKey, jobId, eventId, emailTemplateId, content, applicationIds) => this.post(\n `/api/v4/jobs/${jobId}/applications/email`,\n {\n email: {\n event_id: eventId,\n email_template_id: emailTemplateId,\n content,\n application_ids: applicationIds\n }\n },\n apiKey\n );\n this.updateNote = (jobId, applicationId, params) => this.put(`/api/v4/jobs/${jobId}/applications/${applicationId}/update_notepad`, params);\n this.updateNotes = (jobId, applicationId, params) => this.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/notes`, params);\n this.addRecord = (jobId, applicationId, params) => this.post(`/api/v4/jobs/${jobId}/applications/${applicationId}/permanent_record`, {\n note: params\n });\n }\n getHeaders(headers) {\n return Object.assign(\n {},\n {\n \"Content-Type\": \"application/json\"\n },\n headers\n );\n }\n}\nexport default new Api();\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { alpha } from \"@mui/material/styles\";\nimport { closeIcon } from \"../../../shared/styleClasses\";\nexport const classes = {\n buttonRedLight: {\n color: \"#E37D7A\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"8px 18px\",\n fontWeight: \"bold\",\n fontSize: \"15px\",\n textDecoration: \"underline\",\n backgroundColor: \"#ffffff\",\n \"&:hover\": {\n color: \"#d74742\",\n backgroundColor: \"#ffffff\"\n }\n },\n revertloadButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 18px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"60px\",\n maxWidth: \"800px\",\n width: \"90%\",\n height: \"95%\",\n maxHeight: \"800px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n modalTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"30px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"column\"\n },\n calendar: {\n \"& .PrivatePickersFadeTransitionGroup-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .MuiTypography-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .Mui-selected\": {\n backgroundColor: `${theme.palette.action.main} !important`\n },\n \"& .PrivatePickersSlideTransition-root\": {\n minHeight: \"242px !important\"\n }\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"20px\",\n width: \"100%\"\n },\n datePicker: {\n margin: \"33px 0 0 4px\",\n fontFamily: \"Source Sans Pro\",\n width: \"290px\",\n color: \"#666666\",\n \"& input\": {\n padding: \"4px 10px 5px 10px\",\n fontFamily: \"Source Sans Pro\"\n },\n \"& fieldset\": {\n \"& legend\": {\n display: \"none\"\n }\n },\n \"& button\": {\n padding: \"0px\",\n transform: \"translate(-2px, -1.5px)\",\n \"&:hover\": {\n background: \"transparent\",\n \"& svg\": {\n color: \"#888888\"\n }\n }\n },\n \"& .MuiInputAdornment-root\": {\n marginLeft: \"0px\"\n },\n \"& svg\": {\n color: \"#AAAAAA\"\n }\n },\n noteTextInput: {\n \"label + &\": {\n marginTop: \"24px\"\n },\n \"& .MuiInputBase-input\": {\n borderRadius: \"6px\",\n position: \"relative\",\n backgroundColor: \"#FFFFFF\",\n color: \"#333333\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"16px\",\n padding: \"6px 10px\",\n margin: \"3px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n transition: \"all 0.16s ease-in-out\",\n \"&:focus\": {\n boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n borderColor: theme.palette.primary.main\n }\n }\n },\n modalActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"auto\",\n width: \"100%\",\n columnGap: \"16px\",\n \"& a\": {\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n closeIcon\n};\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { closeIcon, filterMenu } from \"../../../shared/styleClasses\";\nexport const classes = {\n revertloadButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 18px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"60px\",\n maxWidth: \"800px\",\n width: \"90%\",\n height: \"95%\",\n maxHeight: \"650px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n modalTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"30px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"column\"\n },\n modalActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"auto\",\n width: \"100%\",\n columnGap: \"16px\",\n \"& a\": {\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n closeIcon,\n tableContainer: {\n marginTop: \"20px\",\n maxHeight: \"60%\",\n overflow: \"scroll\"\n },\n table: {\n \"& th\": {\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n whiteSpace: \"nowrap\"\n },\n \"& td\": {\n border: \"none\",\n whiteSpace: \"nowrap\"\n },\n \"& thead th\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"600\",\n color: theme.palette.primary.main,\n textTransform: \"none\"\n }\n },\n sticky: {\n position: \"sticky\",\n left: \"0px\",\n background: \"white\"\n },\n stickyRight: {\n position: \"sticky\",\n right: \"0px\",\n background: \"white\"\n },\n clickable: {\n textDecoration: \"underline\",\n cursor: \"pointer\"\n },\n noCandidateContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\",\n fontSize: \"20px\",\n fontWeight: \"bold\",\n color: \"#999999\",\n textAlign: \"center\",\n lineHeight: \"28px\"\n },\n loadingContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\"\n },\n filterContainer: {\n width: \"100%\",\n marginTop: \"36px\"\n },\n filterMenu,\n filterButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"600\",\n textTransform: \"none\",\n color: theme.palette.primary.main,\n backgroundColor: \"#FFFFFF\",\n border: \"1px solid #EAEEF0\",\n borderRadius: \"6px\",\n padding: \"8px 18px\",\n marginLeft: \"12px\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { closeIcon } from \"../../../shared/styleClasses\";\nexport const classes = {\n buttonRedLight: {\n color: \"#E37D7A\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"8px 18px\",\n fontWeight: \"bold\",\n fontSize: \"15px\",\n textDecoration: \"underline\",\n backgroundColor: \"#ffffff\",\n \"&:hover\": {\n color: \"#d74742\",\n backgroundColor: \"#ffffff\"\n }\n },\n revertloadButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 18px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n subTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: \"20px\"\n },\n noEntitys: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\"\n },\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"60px\",\n maxWidth: \"800px\",\n width: \"90%\",\n height: \"95%\",\n maxHeight: \"500px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n modalTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"30px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"column\"\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"20px\",\n width: \"100%\"\n },\n modalActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"auto\",\n width: \"100%\",\n columnGap: \"16px\",\n \"& a\": {\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n closeIcon\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { alpha } from \"@mui/material/styles\";\nimport { closeIcon, deleteApplicant } from \"../../../shared/styleClasses\";\nimport { actionButtonStyles } from \"../../../shared/commonStyles\";\nexport const classes = {\n buttonRedLight: {\n color: \"#d74742\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"10px\",\n fontWeight: \"bold\",\n fontSize: \"15px\",\n textDecoration: \"underline\",\n backgroundColor: \"#ffffff\",\n \"&:hover\": {\n color: \"#d74742\",\n backgroundColor: \"#ffffff\"\n }\n },\n buttonGreen: {\n color: \"#5BC4BF\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"10px\",\n fontWeight: \"bold\",\n fontSize: \"15px\",\n textDecoration: \"underline\",\n backgroundColor: \"#ffffff\",\n \"&:hover\": {\n color: \"#5BC4BF\",\n textDecoration: \"underline\",\n backgroundColor: \"#ffffff\"\n }\n },\n buttonRed: {\n color: \"#E37D7A\",\n backgroundColor: \"#ffffff\",\n \"& span\": {\n margin: \"0px\"\n },\n \"&:hover\": {\n color: \"#d74742\",\n backgroundColor: \"#ffffff\"\n }\n },\n revertloadButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#E37D7A\",\n backgroundColor: \"#ffffff\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n color: \"#ffffff\",\n backgroundColor: \"#E37D7A\",\n boxShadow: \"none\"\n }\n },\n createNewWorkflowButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n margin: \"auto\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 10px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n buttonSecondaryLight: {\n borderRadius: \"6px\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"14px 30px\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n background: theme.palette.secondary.light,\n color: theme.palette.secondary.main,\n \"&:hover\": {\n background: theme.palette.secondary.main,\n color: \"#FFF\"\n }\n },\n actionButton: __spreadProps(__spreadValues({}, actionButtonStyles), {\n marginBottom: \"20px\"\n }),\n deleteApplicant,\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"60px\",\n maxWidth: \"800px\",\n width: \"90%\",\n height: \"100%\",\n maxHeight: \"650px\",\n background: \"#FFFFFF\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n modalTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"30px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"column\"\n },\n tableHeader: {\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n \"& div\": {\n paddingRight: \"0.5rem\",\n fontWeight: \"700\"\n }\n },\n tableRow: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n \"& div\": {\n padding: \"0.75rem 0.5rem 0 0\"\n }\n },\n calendar: {\n \"& .PrivatePickersFadeTransitionGroup-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .MuiTypography-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .Mui-selected\": {\n backgroundColor: `${theme.palette.action.main} !important`\n },\n \"& .PrivatePickersSlideTransition-root\": {\n minHeight: \"242px !important\"\n }\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"20px\",\n width: \"100%\"\n },\n datePicker: {\n margin: \"33px 0 0 4px\",\n fontFamily: \"Source Sans Pro\",\n width: \"290px\",\n color: \"#666666\",\n \"& input\": {\n padding: \"4px 10px 5px 10px\",\n fontFamily: \"Source Sans Pro\"\n },\n \"& fieldset\": {\n \"& legend\": {\n display: \"none\"\n }\n },\n \"& button\": {\n padding: \"0px\",\n transform: \"translate(-2px, -1.5px)\",\n \"&:hover\": {\n background: \"transparent\",\n \"& svg\": {\n color: \"#888888\"\n }\n }\n },\n \"& .MuiInputAdornment-root\": {\n marginLeft: \"0px\"\n },\n \"& svg\": {\n color: \"#AAAAAA\"\n }\n },\n noteTextInput: {\n \"label + &\": {\n marginTop: \"24px\"\n },\n \"& .MuiInputBase-input\": {\n borderRadius: \"6px\",\n position: \"relative\",\n backgroundColor: \"#FFFFFF\",\n color: \"#333333\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"16px\",\n padding: \"6px 10px\",\n margin: \"3px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n transition: \"all 0.16s ease-in-out\",\n \"&:focus\": {\n boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n borderColor: theme.palette.primary.main\n }\n }\n },\n noWorkflows: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n height: \"80%\",\n alignItems: \"end\"\n },\n modalActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"auto\",\n width: \"100%\",\n columnGap: \"16px\",\n \"& a\": {\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n closeIcon\n};\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { closeIcon } from \"../../../shared/styleClasses\";\nexport const classes = {\n buttonRedLight: {\n color: \"#E37D7A\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"8px 18px\",\n fontWeight: \"bold\",\n fontSize: \"15px\",\n textDecoration: \"underline\",\n backgroundColor: \"#ffffff\",\n \"&:hover\": {\n color: \"#d74742\",\n backgroundColor: \"#ffffff\"\n }\n },\n revertloadButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 18px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n noRevisions: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\"\n },\n revisionsModalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"60px\",\n maxWidth: \"800px\",\n width: \"90%\",\n height: \"95%\",\n maxHeight: \"700px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n revisionsTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"30px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"column\"\n },\n revisionsSubTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: \"35px\"\n },\n revisionsContent: {\n fontSize: \"12px\"\n },\n revisionsVersionsIcon: {\n padding: \"0rem 0.5rem\",\n background: \"#8CCAF7\",\n height: \"1.65rem\",\n borderRadius: \"1rem\",\n color: \"#ffffff\",\n \"& svg\": {\n height: \"0.75rem\",\n width: \"0.75rem\"\n }\n },\n sliderInput: {\n color: \"#5BC4BF\",\n \"& span\": {\n fontSize: \"12px\"\n }\n },\n revisionsActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"auto\",\n width: \"100%\",\n columnGap: \"16px\",\n \"& a\": {\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n closeIcon,\n revisionsVersionsContent: {\n display: \"flex\",\n alignItems: \"center\",\n padding: \"0 0.5rem\"\n },\n revisionsVersionsContentDescription: {\n alignItems: \"center\",\n padding: \"0 0.5rem\"\n },\n htmlContent: {\n boxShadow: \"inset 0px 0px 10px rgba(0, 0, 0, 0.09)\",\n borderRadius: \"0.5rem\",\n color: \"#939393\",\n \"& p\": {\n marginTop: \"0\"\n }\n },\n optionsText: {\n fontWeight: \"700\",\n margin: \"0 3px\"\n },\n revisionsVersionsContentBlue: {\n color: \"#084D6D\",\n cursor: \"pointer\",\n textDecoration: \"underline\"\n },\n headerContent: {\n boxShadow: \"inset 0px 0px 10px rgba(0, 0, 0, 0.09)\",\n borderRadius: \"6px 0 0 0\",\n background: \"rgba(221, 221, 221, 0.24)\",\n padding: \"5px 10px\",\n width: \"85px\",\n textAlign: \"center\",\n fontWeight: \"700\"\n },\n changesTableContent: {\n display: \"flex\",\n fontSize: \"14.5px\",\n color: \"#666666\",\n marginBottom: \"13px\"\n },\n attachmentContent: {\n padding: \"1rem 1rem 1rem 1rem\",\n position: \"relative\"\n },\n noAttachments: {\n width: \"100%\",\n textAlign: \"center\",\n position: \"absolute\",\n top: \"-12px\",\n fontWeight: \"bold\"\n },\n codeChangesOnly: {\n position: \"absolute\",\n top: \"10px\",\n left: \"calc(50% - 85px)\",\n color: \"#999999\",\n fontWeight: \"bold\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { alpha } from \"@mui/material/styles\";\nimport { closeIcon } from \"../../../shared/styleClasses\";\nexport const classes = {\n buttonRedLight: {\n color: \"#E37D7A\",\n fontFamily: \"Source Sans Pro\",\n textTransform: \"capitalize\",\n padding: \"8px 18px\",\n fontWeight: \"bold\",\n fontSize: \"15px\",\n textDecoration: \"underline\",\n backgroundColor: \"#ffffff\",\n \"&:hover\": {\n color: \"#d74742\",\n backgroundColor: \"#ffffff\"\n }\n },\n revertloadButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"15px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 18px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n createNewWorkflowButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n margin: \"auto\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 10px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"60px\",\n maxWidth: \"800px\",\n width: \"90%\",\n height: \"100%\",\n maxHeight: \"575px\",\n background: \"#FFFFFF\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n modalTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"30px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"column\"\n },\n calendar: {\n \"& .PrivatePickersFadeTransitionGroup-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .MuiTypography-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .Mui-selected\": {\n backgroundColor: `${theme.palette.action.main} !important`\n },\n \"& .PrivatePickersSlideTransition-root\": {\n minHeight: \"242px !important\"\n }\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"20px\",\n width: \"100%\"\n },\n datePicker: {\n margin: \"33px 0 0 4px\",\n fontFamily: \"Source Sans Pro\",\n width: \"290px\",\n color: \"#666666\",\n \"& input\": {\n padding: \"4px 10px 5px 10px\",\n fontFamily: \"Source Sans Pro\"\n },\n \"& fieldset\": {\n \"& legend\": {\n display: \"none\"\n }\n },\n \"& button\": {\n padding: \"0px\",\n transform: \"translate(-2px, -1.5px)\",\n \"&:hover\": {\n background: \"transparent\",\n \"& svg\": {\n color: \"#888888\"\n }\n }\n },\n \"& .MuiInputAdornment-root\": {\n marginLeft: \"0px\"\n },\n \"& svg\": {\n color: \"#AAAAAA\"\n }\n },\n noteTextInput: {\n \"label + &\": {\n marginTop: \"24px\"\n },\n \"& .MuiInputBase-input\": {\n borderRadius: \"6px\",\n position: \"relative\",\n backgroundColor: \"#FFFFFF\",\n color: \"#333333\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"16px\",\n padding: \"6px 10px\",\n margin: \"3px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n transition: \"all 0.16s ease-in-out\",\n \"&:focus\": {\n boxShadow: `${alpha(theme.palette.primary.main, 0.25)} 0 0 0 2px`,\n borderColor: theme.palette.primary.main\n }\n }\n },\n noWorkflows: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\"\n },\n modalActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"auto\",\n width: \"100%\",\n columnGap: \"16px\",\n \"& a\": {\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n closeIcon\n};\n","\"use strict\";\nimport { SortableColumnId } from \"../types\";\nexport const initialModalsOpen = {\n resend: false,\n email: false,\n sms: false,\n changeStatus: false,\n addToEvent: false,\n inviteToTimeslot: false,\n externalEmail: false,\n exportToPdf: false,\n move: false,\n exportToOnboard: false,\n exportToFoundu: false,\n ceridianDayforce: false,\n aiInsights: false,\n delete: false,\n newApplication: false\n};\nexport const defaultFilters = {\n status: [],\n country: [],\n suburb: [],\n rating: [0, 100],\n excludeApplicantsWithoutRating: false\n};\nexport const applicantDetailsDefault = {\n firstName: { error: \"\", required: true, value: \"\" },\n lastName: { error: \"\", required: true, value: \"\" },\n email: { error: \"\", required: true, value: \"\" },\n phone: { error: \"\", required: true, value: \"\" },\n phone2: { error: \"\", required: false, value: \"\" },\n addressFirstLine: { error: \"\", required: true, value: \"\" },\n addressSecondLine: { error: \"\", required: false, value: \"\" },\n suburb: { error: \"\", required: true, value: \"\" },\n postcode: { error: \"\", required: true, value: \"\" },\n country: { error: \"\", required: true, value: null },\n region: { error: \"\", required: true, value: null },\n employeeId: { error: \"\", required: false, value: \"\" },\n gender: { error: \"\", required: false, value: { id: \"\", label: \"\" } }\n};\nexport const sortableColumnsDefaults = [\n {\n id: SortableColumnId.ID,\n label: \"ID\",\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: SortableColumnId.CANDIDATE,\n label: \"Candidate\",\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: SortableColumnId.GENDER,\n label: \"Gender\",\n sortable: true,\n canToggle: true,\n enabled: false\n },\n {\n id: SortableColumnId.SUBURB,\n label: \"Suburb\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: SortableColumnId.STATE,\n label: \"State\",\n sortable: true,\n canToggle: true,\n enabled: false\n },\n {\n id: SortableColumnId.COUNTRY,\n label: \"Country\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: SortableColumnId.DATE,\n label: \"Date\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: SortableColumnId.RATING,\n label: \"Rating\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: SortableColumnId.STATUS,\n label: \"Status\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: SortableColumnId.NOTES,\n label: \"Notes\",\n sortable: false,\n canToggle: true,\n enabled: false\n },\n {\n id: SortableColumnId.PERMANENT_RECORD,\n label: \"Permanent Record\",\n sortable: false,\n canToggle: true,\n enabled: false\n },\n {\n id: SortableColumnId.NOTE_PAD,\n label: \"Notepad\",\n sortable: false,\n canToggle: true,\n enabled: false\n },\n {\n id: SortableColumnId.PHONE,\n label: \"Phone\",\n sortable: false,\n canToggle: true,\n enabled: false\n },\n {\n id: SortableColumnId.CANDIDATE_TAGS,\n label: \"Candidate Tags\",\n sortable: false,\n canToggle: true,\n enabled: true\n }\n];\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n statusClampCommonStyles,\n statusClampDropdownStyles,\n statusClampHoverStyles,\n candidateSearchCommonStyles,\n actionsModalReducedPaddingCommonStyles,\n filterPopoverHeaderCommonStyles,\n actionsMenuPaperCommonStyles,\n actionsMenuSpanCommonStyles,\n rightArrowStyles,\n leftArrowStyles,\n baseButtonStyles,\n selectedApplicantsTableStyles,\n selectedApplicantsTableRowStyles,\n modalConfirmationButtonCommonStyles\n} from \"../../shared/commonStyles\";\nimport {\n statusClamp,\n notesEditSaveButton,\n notesCancelButton,\n scrollShadowLeft,\n scrollShadowRight,\n searchInput,\n chip,\n chipPacket,\n chipSelected,\n fileName,\n editNotePopover,\n newApplicationButton,\n sortableSwitchLabels,\n filterSwitchLabels,\n rowSelect,\n pagination,\n csvExportModal,\n csvExportHeader,\n csvExportSubheader,\n closeIcon,\n switchLabels,\n clearButton,\n modalSendButton,\n deleteApplicant,\n link,\n copyButton,\n actionModalFormLine,\n csvExportButton,\n applyButton,\n actionButton,\n filterPopoverContent,\n paginationContainer,\n selectedApplicantsTableHeader,\n checkboxLabel,\n selectedTooltip,\n rowSelectContainer,\n checkboxContainer\n} from \"../../shared/styleClasses\";\nexport const classes = {\n applicationsContainer: {\n paddingTop: \"6px\"\n },\n text: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"14px\"\n },\n tableWrapper: {\n tableLayout: \"auto !important\",\n minWidth: \"750px\",\n border: \"none\",\n \"td, th, tr, thead\": {\n fontFamily: \"Source Sans Pro, sans-serif\",\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\"\n },\n th: {\n color: theme.palette.primary.main,\n fontWeight: \"bold\",\n paddingBottom: \"16px\",\n \"& .Mui-active\": {\n color: theme.palette.primary.main\n }\n },\n tr: {\n fontSize: \"16px\",\n borderBottom: \"1px solid #DDDDDD\"\n }\n },\n checkbox: {\n color: \"#aaa !important\",\n \"& .MuiSvgIcon-root\": {\n fontSize: \"20px\"\n },\n \"&.Mui-checked\": {\n color: \"#15C7C0 !important\"\n }\n },\n sortable: {\n \"&:hover\": {\n color: \"#0C74A4\"\n },\n \"& .MuiTableSortLabel-icon\": {\n color: \"darkgrey !important\"\n }\n },\n candidateCell: {\n display: \"flex\",\n marginLeft: 1,\n alignItems: \"center\",\n \"& a\": {\n color: \"#666666\",\n fontWeight: \"bold\",\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n sticky: {\n position: \"sticky\",\n left: \"0px\",\n background: \"white\",\n zIndex: 1\n },\n stickyRight: {\n position: \"sticky\",\n right: \"0px\",\n background: \"white\"\n },\n paginationParent: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginTop: \"20px\"\n },\n rowSelectContainer,\n paginationContainer,\n pagination,\n rowSelect,\n paginationMenuItems: {\n \"& li\": {\n fontFamily: \"Source Sans Pro\"\n }\n },\n noApplications: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\"\n },\n skeletonContainer: {\n borderBottom: \"1px solid #DDDDDD\",\n padding: \"10px 0px\"\n },\n selectedTooltip,\n fadeIn: {\n visibility: \"visible\",\n opacity: \"1\",\n transform: \"translateX(0px)\",\n transition: \"visibility 0s linear 0s, opacity 300ms, transform 300ms\"\n },\n fadeOut: {\n visibility: \"hidden\",\n opacity: \"0\",\n transform: \"translateX(20px)\",\n transition: \"visibility 0s linear 300ms, opacity 300ms, transform 300ms\"\n },\n actionsMenu: {\n \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n width: \"135px\",\n marginTop: \"6px\"\n }),\n \"& span\": actionsMenuSpanCommonStyles\n },\n selectedTooltipText: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"20px\",\n fontWeight: \"600\",\n color: \"#666666\"\n },\n selectedTooltipButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#D6827D\",\n backgroundColor: \"rgba(214, 130, 125, 0.22)\",\n boxShadow: \"none\",\n width: \"100px\",\n height: \"40px\",\n borderRadius: \"6px\",\n \"&:hover\": {\n backgroundColor: \"rgba(214, 130, 125, 0.33)\",\n boxShadow: \"none\"\n }\n },\n selectedTooltipButtonsContainer: {\n display: \"flex\",\n columnGap: \"18px\",\n marginLeft: \"8px\"\n },\n selectedAllTooltipText: {\n color: \"#084D6D\",\n fontWeight: \"700\",\n textDecoration: \"underline\",\n borderRadius: \"10px\",\n padding: \"4px 12px\",\n \"&:hover\": {\n background: \"rgba(171, 205, 239, 0.3)\"\n }\n },\n actionsContianer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"22px\",\n marginBottom: \"50px\"\n },\n actionButton,\n actionButtonAI: __spreadProps(__spreadValues({}, baseButtonStyles), {\n color: \"#2D388D\",\n backgroundColor: \"#AFBCFF30\",\n padding: \"10px 24px\",\n border: \"none\",\n \"&:hover\": {\n backgroundColor: \"#AFBCFF55\",\n border: \"none\"\n }\n }),\n deleteApplicant,\n filtersRow: {\n display: \"flex\",\n alignItems: \"flex-end\",\n justifyContent: \"space-between\",\n marginBottom: \"30px\",\n columnGap: \"17px\"\n },\n iconButton: {\n border: \"1px solid #EAEEF0\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n width: \"69px\",\n height: \"60px\",\n \"& svg\": {\n fontSize: \"30px\",\n color: \"#084D6D\"\n }\n },\n iconButtonOpen: {\n backgroundColor: \"rgba(8,77,109,0.121)\"\n },\n popover: {\n marginTop: \"15px\"\n },\n popoverContent: {\n width: \"272px\",\n padding: \"22px 0px 22px 24px\",\n boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\"\n },\n sortableField: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"204px\"\n },\n sortableSwitchLabels,\n switchLabels,\n switch: {\n \"& .MuiSwitch-thumb\": {\n color: \"#FFFFFF\"\n },\n \"& :hover\": {\n backgroundColor: \"rgba(91, 196, 191, 0.17)\"\n }\n },\n switchActive: {\n \"& .MuiSwitch-thumb\": {\n color: \"#5BC4BF\"\n }\n },\n filterSwitch: {\n transform: \"translateX(10px)\",\n \"& .MuiSwitch-thumb\": {\n color: \"#FFFFFF\"\n },\n \"& :hover\": {\n backgroundColor: \"rgba(91, 196, 191, 0.17)\"\n }\n },\n filterSwitchActive: {\n transform: \"translateX(10px)\",\n \"& .MuiSwitch-thumb\": {\n color: \"#5BC4BF\"\n }\n },\n filterSwitchLabels,\n labelActive: {\n \"& .MuiFormControlLabel-label\": {\n color: \"#CCCCCC\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\"\n }\n },\n searchInput,\n newApplicationButton,\n attachmentsHeader: {\n minWidth: \"86px\"\n },\n attachmentsCell: {\n minWidth: \"86px\",\n width: \"50px\",\n \"& svg\": {\n color: \"#666666\",\n fontSize: \"18px\",\n cursor: \"pointer\"\n }\n },\n actionItems: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n attachmentItem: {\n display: \"flex\",\n alignItems: \"center\",\n columnGap: \"10px\",\n padding: \"14px\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"#F5F5F5\"\n }\n },\n fileIcon: {\n color: theme.palette.primary.main\n },\n fileName,\n filterPopoverContent,\n scrollableFilters: {\n height: \"fit-content\",\n padding: \"26px\",\n paddingTop: \"0px\"\n },\n filterPopoverHeader: __spreadProps(__spreadValues({}, filterPopoverHeaderCommonStyles), {\n top: \"0px\"\n }),\n clearButton,\n applyButton,\n filterOptionContainer: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#084D6D\",\n marginBottom: \"12px\"\n },\n checkboxContainer,\n csvExportModal,\n csvExportHeader,\n csvExportSubheader,\n csvExportCheckboxContainer: {\n display: \"flex\",\n width: \"100%\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"16px\",\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: \"#084d6d\"\n },\n closeIcon,\n chipPacket,\n chipSelected,\n chip,\n csvExportButton,\n // Application modal\n actionsModal: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"60px\",\n maxWidth: \"900px\",\n width: \"100%\",\n height: \"84vh\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n modalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main\n },\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100%\",\n overflowY: \"auto\",\n overflowX: \"hidden\",\n margin: \"46px 0px\"\n },\n modalFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\"\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"26px\",\n width: \"100%\"\n },\n modalConfirmationButton: __spreadProps(__spreadValues({}, modalConfirmationButtonCommonStyles), {\n padding: \"8px 14px\",\n minWidth: \"176px\",\n minHeight: \"40.5px\"\n }),\n modalCancelButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"100px\",\n textTransform: \"none\",\n textDecoration: \"underline\",\n color: theme.palette.error.main,\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\",\n textDecoration: \"none\",\n boxShadow: \"none\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n fullWidthFieldContainer: {\n maxWidth: \"630px\",\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n marginBottom: \"26px\",\n rowGap: \"26px\"\n },\n fullWidthField: {\n width: \"100%\"\n },\n uploadSection: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n \"& h3\": {\n color: \"#939393\",\n fontSize: \"19px\",\n fontWeight: \"Bold\",\n marginBottom: \"14px\"\n }\n },\n uploadSectionContent: {\n display: \"flex\",\n flexWrap: \"wrap\",\n columnGap: \"62px\",\n rowGap: \"34px\",\n marginBlock: \"18px\"\n },\n uploadContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n margin: \"2px\",\n rowGap: \"8px\",\n fontSize: \"17px\",\n fontWeight: \"600\",\n color: \"#AAAAAA\",\n position: \"relative\"\n },\n uploadLabel: {\n \"& span\": {\n color: theme.palette.error.main,\n marginLeft: \"4px\"\n }\n },\n uploadError: {\n color: theme.palette.error.main,\n fontSize: \"13px\",\n position: \"absolute\",\n bottom: \"-26px\"\n },\n candidateIcon: {\n fontSize: \"21px\",\n margin: \"0px 9px 1.5px 0px\"\n },\n state: {\n fontSize: \"13px\",\n fontWeight: \"bold\",\n borderRadius: \"6px\",\n textTransform: \"uppercase\",\n padding: \"8px 24px\",\n width: \"auto\",\n height: \"35px\"\n },\n approved: {\n fontSize: \"13px\",\n fontWeight: \"bold\",\n borderRadius: \"6px\",\n textTransform: \"uppercase\",\n padding: \"8px 24px\",\n width: \"auto\",\n height: \"35px\",\n color: \"#8CCF95\",\n backgroundColor: \"RGBA(140, 207, 149, 0.12)\"\n },\n pending: {\n fontSize: \"13px\",\n fontWeight: \"bold\",\n borderRadius: \"6px\",\n textTransform: \"uppercase\",\n padding: \"8px 24px\",\n width: \"auto\",\n height: \"35px\",\n color: \"#E6A052\",\n backgroundColor: \"RGBA(230, 160, 82, 0.12)\"\n },\n draft: {\n fontSize: \"13px\",\n fontWeight: \"bold\",\n borderRadius: \"6px\",\n textTransform: \"uppercase\",\n padding: \"8px 24px\",\n width: \"auto\",\n height: \"35px\",\n color: \"#FFFFFF\",\n backgroundColor: \"#CCCCCC\"\n },\n declined: {\n fontSize: \"13px\",\n fontWeight: \"bold\",\n borderRadius: \"6px\",\n textTransform: \"uppercase\",\n padding: \"8px 24px\",\n width: \"auto\",\n height: \"35px\",\n color: \"#D6827D\",\n backgroundColor: \"RGBA(214, 130, 125, 0.12)\"\n },\n statusClamp,\n statusColour: {\n position: \"absolute\",\n height: \"6px\",\n width: \"6px\",\n borderRadius: \"50%\",\n top: \"calc(50% - 3px)\",\n left: \"10px\"\n },\n noDropdown: {\n border: \"1px solid #FFFFFF\",\n \"& .status-dropdown-full\": {\n border: \"1px solid #FFFFFF\"\n },\n \"&::after\": {\n display: \"none\"\n }\n },\n noStatuses: {\n width: \"100%\",\n paddingLeft: \"18px\",\n display: \"flex\"\n },\n statusDropdown: {\n border: \"1px solid #CCCCCC\",\n borderRadius: \"6px\",\n cursor: \"pointer\",\n \"&::after\": {\n display: \"block\"\n }\n },\n statusDropdownItem: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"13px\",\n padding: \"6px 12px\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"#F1F1F1\"\n }\n },\n statusDropdownItems: {\n \"& .MuiPaper-root\": {\n width: \"200px\",\n maxHeight: \"250px\",\n overflowY: \"auto\",\n borderRadius: \"6px\",\n marginTop: \"6px\"\n }\n },\n statusLoader: {\n color: theme.palette.primary.main,\n position: \"absolute\",\n zIndex: \"4\",\n top: \"calc(50% - 9px)\",\n left: \"calc(50% - 9px)\"\n },\n applicationStatus: {\n \"& span\": {\n cursor: \"pointer\"\n }\n },\n formCheckbox: {\n color: \"#ddd !important\",\n \"& .MuiSvgIcon-root\": {\n fontSize: \"20px\"\n },\n \"&.Mui-checked\": {\n color: \"#15C7C0 !important\"\n }\n },\n checkboxLabel,\n actionModalFormLine,\n actionModalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n marginLeft: \"8px\"\n },\n actionsModalReducedPadding: actionsModalReducedPaddingCommonStyles,\n modalCandidatesHeader: {\n color: \"#939393\",\n fontSize: \"19px\",\n fontWeight: \"Bold\",\n marginBottom: 3\n },\n modalSendButton,\n selectedApplicantsTable: __spreadProps(__spreadValues({}, selectedApplicantsTableStyles), {\n minWidth: \"700px\",\n \"td, th, tr, thead\": __spreadProps(__spreadValues({}, selectedApplicantsTableRowStyles), {\n padding: \"5px 8px 10px 0px\"\n })\n }),\n selectedApplicantsTableHeader,\n statusClampSelected: __spreadProps(__spreadValues({}, statusClampCommonStyles), {\n width: \"140px\",\n padding: \"6px 20px 5px 24px\",\n \"& .status-dropdown-full\": __spreadProps(__spreadValues({}, statusClampDropdownStyles), {\n width: \"140px\",\n padding: \"6px 20px 5px 24px\"\n }),\n \"&:hover\": statusClampHoverStyles\n }),\n statusDropdownSelected: {\n border: \"1px solid #CCCCCC\",\n borderRadius: \"6px\",\n \"&::after\": {\n display: \"block\"\n }\n },\n candidateSearch: __spreadProps(__spreadValues({}, candidateSearchCommonStyles), {\n \"& fieldset\": {\n borderColor: \"#939393\",\n backgroundColor: \"#AAAAAA09\"\n },\n \"&:hover\": {\n \"& fieldset\": {\n borderColor: \"#6DB5B1 !important\"\n }\n }\n }),\n sourceContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n marginBottom: \"30px\",\n \"& h3\": {\n color: \"#939393\",\n fontSize: \"19px\",\n fontWeight: \"Bold\",\n marginBlock: \"30px\",\n marginLeft: \"2px\"\n }\n },\n saveSMSTemplateContainer: {\n position: \"relative\",\n display: \"flex\",\n alignItems: \"baseline\",\n columnGap: \"40px\",\n marginLeft: \"15px\",\n marginBottom: \"20px\"\n },\n saveSMSTemplateButton: __spreadProps(__spreadValues({}, modalConfirmationButtonCommonStyles), {\n padding: \"0px 19px\",\n height: \"37.5px\",\n width: \"132px\"\n }),\n saveSMSTemplateError: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n position: \"absolute\",\n bottom: \"-24px\",\n left: \"4px\"\n },\n modalSection: {\n marginLeft: \"15px\",\n marginTop: \"15px\"\n },\n formLabel: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n color: \"#838383\",\n marginBottom: \"5px\"\n },\n placeholderText: {\n fontFamily: \"Source Sans Pro\",\n color: \"#838383\",\n fontSize: \"11px\",\n margin: \"6px 0px 20px 1px\"\n },\n fileIconContainer: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"90%\"\n },\n formError: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n position: \"absolute\",\n bottom: \"-24px\",\n left: \"4px\"\n },\n formGroup: {\n position: \"relative\",\n marginTop: \"36px\",\n marginBottom: \"20px\",\n display: \"flex\",\n flexDirection: \"column\",\n marginLeft: \"15px\"\n },\n formSwitchLabels: {\n justifyContent: \"space-between\",\n width: \"200px\",\n marginLeft: \"3px\",\n \"& .MuiFormControlLabel-label\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n color: \"#939393\"\n },\n \"& .MuiSwitch-track\": {\n backgroundColor: \"rgba(0,0,0,0.38)\",\n opacity: \"1\"\n },\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n }\n },\n timeslotsContainer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n justifyContent: \"space-between\"\n },\n calendar: {\n \".MuiPickersCalendarHeader-root\": {\n display: \"flex\",\n alignItems: \"center\",\n justifyItems: \"center\",\n position: \"relative\",\n paddingInline: \"initial\"\n },\n \"& .Mui-selected\": {\n backgroundColor: `${theme.palette.action.main} !important`\n },\n \"& .MuiTypography-root\": {\n fontFamily: \"Source Sans Pro\",\n color: \"#939393\",\n fontSize: \"13px\",\n marginInline: \"5px\"\n },\n \".MuiPickersCalendarHeader-root:first-child\": {\n order: 0\n },\n \".MuiPickersArrowSwitcher-root\": {\n display: \"inline-flex\",\n \"& .MuiIconButton-root\": {\n color: \"#bfbfc0\",\n \"& svg\": {\n width: \"1.15em\",\n height: \"1.15em\"\n }\n }\n },\n \".MuiPickersCalendarHeader-label\": {\n textAlign: \"center\"\n },\n \".MuiPickersArrowSwitcher-spacer\": {\n width: \"220px\"\n },\n \"& .MuiPickersArrowSwitcher-root\": {\n width: \"100%\",\n \"& .MuiPickersArrowSwitcher-spacer\": {\n width: \"100%\"\n },\n \"& .MuiIconButton-root\": {\n color: \"#bfbfc0\",\n \"& svg\": {\n width: \"1.15em\",\n height: \"1.15em\"\n }\n }\n },\n \"& .MuiPickersDay-root\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14.5px\",\n marginInline: \"5px\"\n },\n \".MuiPickersArrowSwitcher-button\": {\n paddingRight: \"7px\"\n }\n },\n dailyTimeslots: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"410px\"\n },\n dailyTimeslotsHeader: {\n fontSize: \"18px\",\n color: \"#939393\",\n marginBottom: \"26px\",\n marginTop: \"17px\"\n },\n dailyTimeslotsContainer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"20px\"\n },\n addToEventTimeslotsContainer: {\n width: \"100%\",\n rowGap: \"12px\",\n height: \"275px\",\n overflow: \"auto\",\n position: \"relative\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n },\n addToEventTimeslot: {\n borderRadius: \"6px\",\n padding: \"8px 16px\",\n fontWeight: \"bold\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\"\n },\n addToEventSecondStepContainer: {\n flexGrow: 1,\n padding: \"0px 8px\",\n overflow: \"auto\"\n },\n addToEventEmailPlaceholder: {\n fontSize: \"11px\",\n color: \"#838383\",\n lineBreak: \"anywhere\"\n },\n addToEventListboxProps: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#333333\",\n maxHeight: \"200px\"\n },\n addToEventCharacterCount: {\n paddingRight: 1,\n flexDirection: \"row-reverse\",\n color: \"#838383\",\n minWidth: \"70px\"\n },\n timeslot: {\n position: \"relative\",\n border: \"1px solid #eaeef0\",\n borderRadius: \"4px\",\n width: \"115px\",\n height: \"46px\",\n padding: \"7px 11px\"\n },\n expandedTimeslot: {\n position: \"absolute\",\n border: \"1px solid #eaeef0\",\n borderRadius: \"4px\",\n backgroundColor: \"#fff\",\n width: \"115px\",\n height: \"fit-content\",\n padding: \"7px 11px\",\n zIndex: \"2\",\n top: \"-1px\",\n left: \"-1px\"\n },\n timeslotTime: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n color: \"#666666\",\n fontWeight: \"bold\",\n lineHeight: \"1.2\"\n },\n timeslotType: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"11px\",\n color: \"#666666\",\n fontWeight: \"bold\",\n lineHeight: \"1.2\"\n },\n ellipsis: {\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\"\n },\n timeslotNote: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"9px\",\n color: \"#939393\",\n paddingTop: \"4px\",\n lineHeight: \"1.2\"\n },\n noTimeslots: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n color: \"#939393\",\n fontWeight: \"bold\",\n width: \"100%\",\n height: \"210px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n characterCount: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"13px\",\n color: \"#999999\",\n fontWeight: \"600\",\n position: \"absolute\",\n bottom: \"-22px\",\n right: \"58px\"\n },\n centerColumn: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\"\n },\n exportErrors: {\n rowGap: \"18px\",\n \"& h4\": {\n color: theme.palette.primary.main,\n marginTop: \"0px\",\n fontSize: \"24px\"\n },\n \"& p\": {\n marginTop: \"0px\"\n }\n },\n linkContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n columnGap: \"20px\",\n width: \"100%\",\n \"& a:hover\": {\n textDecoration: \"none\"\n }\n },\n link,\n copyButton,\n noLinkStyling: {\n \"& a\": {\n color: \"rgba(0, 0, 0, 0.87)\",\n \"&:hover\": {\n textDecoration: \"none\",\n color: \"rgba(0, 0, 0, 0.87)\"\n }\n }\n },\n filterButton: {\n border: \"1px solid #DDDDDD\",\n borderRadius: 1,\n width: \"fit-content\",\n padding: \"8px 12px\"\n },\n noteContainer: {\n \"& .MuiTextField-root\": { width: \"27ch\" },\n width: \"fit-content\"\n },\n notesContainer: {\n flexDirection: \"column\",\n rowGap: \"4px\",\n paddingLeft: \"16px\",\n maxHeight: \"100px\",\n overflowY: \"auto\",\n textOverflow: \"ellipsis\"\n },\n noteTitle: {\n fontWeight: \"bold\"\n },\n noteUser: {\n margin: \"10px 0\"\n },\n notesExpanded: {\n maxHeight: \"unset\"\n },\n notesExpandContract: {\n position: \"absolute\",\n bottom: \"8px\",\n right: \"8px\",\n color: theme.palette.primary.main,\n cursor: \"pointer\"\n },\n noteEditButtonContainer: {\n marginTop: theme.spacing(2),\n gap: theme.spacing(2),\n display: \"flex\",\n justifyContent: \"center\",\n width: \"fit-content\"\n },\n scrollShadowLeft,\n scrollShadowRight,\n scrollShadowVisible: {\n \"&&::after\": {\n opacity: \"20%\"\n }\n },\n notesTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n color: theme.palette.primary.main,\n fontWeight: \"bold\",\n marginBottom: \"12px\",\n width: \"100%\"\n },\n editNotePopover,\n noteInput: {\n marginBottom: \"4px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n \"& input\": {\n padding: \"9.5px 14px\"\n }\n },\n notesButtonContainer: {\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n columnGap: \"10px\"\n },\n notesEditSaveButton,\n notesCancelButton,\n arrowsContainer: {\n height: 0,\n overflow: \"visible\",\n position: \"sticky\",\n top: \"200px\",\n zIndex: \"10\",\n transform: \"translateY(100px)\"\n },\n leftArrow: __spreadProps(__spreadValues({}, leftArrowStyles), {\n position: \"sticky\",\n zIndex: \"11\"\n }),\n rightArrow: __spreadProps(__spreadValues({}, rightArrowStyles), {\n position: \"sticky\",\n zIndex: \"11\"\n }),\n showArrows: {\n display: \"flex\",\n animation: \"$fadeIn linear 0.17s\"\n },\n \"@keyframes fadeIn\": {\n \"0%\": { opacity: 0 },\n \"100%\": { opacity: 0.9 }\n },\n rating: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n borderRadius: \"3px\",\n width: \"58px\",\n height: \"24px\"\n },\n tableSettingsHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n paddingBottom: 1,\n paddingLeft: \"4px\"\n },\n aiQuestionsButton: {\n marginLeft: \"8px\",\n padding: \"4px\",\n background: \"linear-gradient(225.64deg, #E548FF -23.43%, #084D6D 140.57%, #084D6D 140.58%, #5BC4C0 140.6%)\",\n transition: \"all 250ms linear\",\n \"&:hover\": {\n filter: \"brightness(1.16)\"\n },\n \"& svg\": {\n fontSize: \"11px !important\",\n color: \"#FFFFFF !important\"\n }\n },\n titleLink: {\n \"& a\": {\n color: \"#666666\",\n fontWeight: \"bold\",\n \"&:hover\": {\n textDecoration: \"none\"\n }\n },\n paddingLeft: 2\n },\n enabledDropdown: {\n \"& .MuiPaper-root\": {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"11px\",\n padding: \"14px 20px\",\n marginTop: \"6px\",\n borderRadius: \"6px\",\n backgroundColor: \"#FFFFFF\"\n },\n cursor: \"pointer\"\n },\n availabilityColumnCell: {\n padding: 1,\n borderRadius: \"6px\",\n alignItems: \"center\",\n fontWeight: \"bold\",\n width: \"70%\"\n },\n notesContainer: {\n width: \"300px\",\n minHeight: \"150px\",\n padding: \"17px 17px 14px 17px\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n pagination,\n paginationContainer,\n rowSelect,\n rowSelectContainer\n} from \"../../shared/styleClasses\";\nexport const classes = {\n tableWrapper: {\n tableLayout: \"auto !important\",\n minWidth: \"1000px\",\n border: \"none\",\n \"td, th, tr, thead\": {\n fontFamily: \"Source Sans Pro, sans-serif\",\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\",\n padding: \"12px\"\n },\n th: {\n color: theme.palette.primary.main,\n fontSize: \"16px\",\n fontWeight: \"bold\",\n paddingBottom: \"16px\"\n }\n },\n fileIconContainer: {\n display: \"flex\",\n alignItems: \"center\",\n cursor: \"pointer\"\n },\n fileIcon: {\n width: \"50px\",\n height: \"50px\",\n borderRadius: \"3px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n marginRight: \"20px\",\n backgroundColor: \"#084D6D10\",\n \"& svg\": {\n color: theme.palette.primary.main,\n margin: \"0px 2px 2px 0px\"\n }\n },\n fileName: {\n color: theme.palette.primary.main,\n fontSize: \"15px\",\n fontWeight: \"bold\"\n },\n fileDate: {\n color: \"#999999\"\n },\n fileLinkContainer: {\n display: \"flex\",\n alignItems: \"center\",\n columnGap: \"15px\",\n \"& a\": {\n color: \"#333333\",\n fontSize: \"15px\",\n \"&:hover\": {\n color: \"#000000\",\n textDecoration: \"none\"\n }\n }\n },\n fileAttachedBy: {\n color: \"#000000\",\n fontSize: \"15px\"\n },\n copyButton: {\n fontSize: \"10px\",\n fontWeight: \"bold\",\n backgroundColor: \"#5BC4BF1F\",\n color: theme.palette.action.main,\n borderRadius: \"6px\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: theme.palette.action.main,\n color: \"#FFFFFF\"\n }\n },\n noAttachments: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\"\n },\n paginationParent: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginTop: \"20px\"\n },\n rowSelectContainer,\n paginationContainer,\n pagination,\n rowSelect,\n paginationMenuItems: {\n \"& li\": {\n fontFamily: \"Source Sans Pro\"\n }\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const classes = {\n pageContainer: {\n padding: \"30px 30px\"\n },\n pageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n \"& h2\": {\n fontWeight: \"bold\",\n fontSize: \"18px\",\n lineHeight: \"1.2em\",\n color: \"#666666\",\n marginTop: \"0\",\n \"@media (max-width: 1450px)\": {\n fontSize: \"20px\"\n },\n \"@media (max-width: 1260px)\": {\n fontSize: \"14px\"\n }\n }\n },\n attachmentsTitle: {\n color: theme.palette.primary.main,\n fontSize: \"13px\",\n fontWeight: \"bold\",\n paddingBottom: \"5px\",\n width: \"70px\",\n padding: \"0 6px\"\n },\n actionsContianer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"22px\",\n padding: \"10px 0\"\n },\n actionButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"600\",\n color: \"#666666\",\n backgroundColor: \"#FFFFFF\",\n padding: \"5px 23px\",\n borderRadius: \"20px\",\n border: \"1px solid #DDDDDD\",\n textTransform: \"none\"\n },\n checkedPill: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"600\",\n color: \"#5BC4BF\",\n backgroundColor: \"#FFFFFF\",\n padding: \"5px 23px\",\n borderRadius: \"20px\",\n border: \"1px solid #5BC4BF\",\n textTransform: \"none\"\n },\n addAttachmentButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#5BC4BF\",\n backgroundColor: \"#5BC4BF12\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n marginLeft: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a412\",\n boxShadow: \"none\"\n }\n },\n tableWrapper: {\n tableLayout: \"auto !important\",\n minWidth: \"400px\",\n border: \"none\",\n overflowY: \"clip\",\n \"td, th, tr, thead\": {\n fontFamily: \"Source Sans Pro, sans-serif\",\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\",\n padding: \"26px 10px\"\n },\n th: {\n border: \"none\",\n color: theme.palette.primary.main,\n fontWeight: \"bold\",\n paddingBottom: \"16px\",\n \"& .Mui-active\": {\n color: theme.palette.primary.main\n }\n },\n tr: {\n fontSize: \"16px\",\n borderBottom: \"1px solid #DDDDDD\"\n }\n },\n questionsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"40px\",\n padding: \"24px 16px\"\n },\n checkbox: {\n color: \"#DDDDDD\",\n marginLeft: \"10px\",\n \"&.Mui-checked\": {\n color: theme.palette.action.main\n },\n \"& .MuiSvgIcon-root\": {\n fontSize: \"22px\"\n }\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nexport const classes = {\n widget: {\n border: \"1px solid #E3E3E3\",\n borderRadius: \"3px\",\n flex: \"40%\",\n minWidth: \"600px\"\n },\n subcontainer: {\n flex: \"40%\",\n minWidth: \"600px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n columnGap: \"50px\",\n rowGap: \"50px\"\n },\n subWidget: {\n marginTop: \"24px\",\n flex: \"40%\",\n borderRadius: \"3px\",\n height: \"100px\",\n minWidth: \"240px\"\n },\n widgetIcon: {\n backgroundColor: \"#EDF2F5\",\n padding: \"12px\",\n borderRadius: \"16px\",\n \"& svg\": {\n color: theme.palette.primary.main,\n fontSize: \"32px\"\n }\n },\n widgetText: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"flex-start\",\n rowGap: \"6px\",\n marginLeft: \"30px\"\n },\n widgetTextTitle: {\n fontSize: \"12px\",\n color: theme.palette.primary.main\n },\n widgetTextContent: {\n fontSize: \"16px\",\n fontWeight: \"600\",\n color: \"#333333\"\n },\n widgetBlockContainer: {\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n columnGap: \"50px\"\n },\n widgetBlock: {\n border: \"1px solid #E3E3E3\",\n borderRadius: \"3px\",\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"50%\",\n height: \"100%\"\n },\n widgetBlockText: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"flex-start\",\n marginLeft: \"12px\"\n },\n blockCount: {\n fontSize: \"24px\",\n color: theme.palette.primary.main,\n fontWeight: \"bold\"\n },\n blockTitle: {\n fontSize: \"10px\",\n fontWeight: \"regular\",\n color: \"#939393\"\n },\n widgetBlockIcon: {\n backgroundColor: \"#EDF2F5\",\n padding: \"0px\",\n borderRadius: \"16px\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n closeIcon,\n pagination,\n paginationContainer,\n rowSelect,\n rowSelectContainer\n} from \"../../shared/styleClasses\";\nexport const classes = {\n tableWrapper: {\n tableLayout: \"auto !important\",\n marginTop: \"40px\",\n minWidth: \"1000px\",\n border: \"none\",\n \"td, th, tr, thead\": {\n maxWidth: \"240px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\",\n padding: \"24px 12px 12px 12px\"\n },\n th: {\n color: theme.palette.primary.main,\n fontSize: \"14px\",\n fontWeight: \"bold\",\n padding: \"0px 12px 36px 12px\"\n }\n },\n candidateTableWrapper: {\n marginLeft: \"28px\",\n tableLayout: \"auto !important\",\n maxWidth: \"80%\",\n border: \"none\",\n \"td, th, tr, thead\": {\n fontFamily: \"Source Sans Pro, sans-serif\",\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\",\n padding: \"12px 0px 12px 0px\"\n },\n th: {\n color: theme.palette.primary.main,\n padding: \"24px 0px 0px 0px\",\n fontSize: \"12px\"\n }\n },\n status: {\n textTransform: \"uppercase !important\",\n display: \"flex\",\n justifyContent: \"start\",\n alignItems: \"center !important\"\n },\n details: {\n color: \"#000000\",\n disableRipple: \"true\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n widgetContainer: {\n display: \"flex\",\n width: \"100%\",\n flexWrap: \"wrap\",\n columnGap: \"50px\",\n rowGap: \"50px\"\n },\n preview: {\n color: \"#666666\",\n fontSize: \"medium\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n attachmentPreviewModal: {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"60px\",\n width: \"900px\",\n height: \"775px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n attachmentPreviewTitle: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"30px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n display: \"flex\",\n flexDirection: \"column\"\n },\n attachmentPreviewContent: {\n borderTop: \"1px solid #E3E3E3\",\n borderBottom: \"1px solid #E3E3E3\",\n display: \"flex\",\n justifyContent: \"start\",\n height: \"540px\",\n width: \"100%\",\n overflowY: \"auto\",\n marginTop: \"36px\"\n },\n attachmentPreviewActions: {\n display: \"flex\",\n justifyContent: \"flex-end\",\n marginTop: \"30px\",\n width: \"100%\",\n columnGap: \"16px\",\n \"& a\": {\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n closeIcon,\n downloadButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"120px\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n noPreview: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: \"#999999\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\",\n height: \"100%\"\n },\n table: {\n display: \"table\",\n borderCollapse: \"collapse\",\n borderSpacing: \"0\",\n width: \"100%\",\n background: \"#FFF\",\n borderRadius: \"8px\"\n },\n rowHeader: {\n \"& span\": {\n fontSize: \"16px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main\n }\n },\n row: {\n display: \"table-row-group\",\n width: \"100%\",\n borderBottom: \"1px solid #f3f3f3\",\n \"& > *\": {\n padding: \"24px\",\n paddingRight: \"0px\",\n display: \"table-cell\",\n fontSize: \"14px\",\n \"&:first-of-type\": {\n paddingLeft: \"44px\"\n },\n \"&:last-child\": {\n paddingRight: \"44px\"\n },\n \"& button\": {\n maxWidth: \"100px\",\n maxHeight: \"44px\",\n lineHeight: \"1.05rem\"\n }\n }\n },\n title: {\n color: \"#666666\",\n fontWeight: \"bold\"\n },\n center: {\n textAlign: \"center\"\n },\n state: {\n fontSize: \"13px\",\n fontWeight: \"bold\",\n backgroundColor: \"#8CCF951F\",\n color: \"#8CCF95\",\n borderRadius: \"6px\",\n textTransform: \"uppercase\",\n padding: \"8px 32px 8px 32px\",\n width: \"auto\",\n height: \"35px\"\n },\n noEmailStatusContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\"\n },\n noEmailStatusesText: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\"\n },\n emailStatusesSkeleton: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"10px\",\n width: \"100%\"\n },\n paginationParent: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginTop: \"20px\"\n },\n rowSelectContainer,\n paginationContainer,\n pagination,\n rowSelect,\n paginationMenuItems: {\n \"& li\": {\n fontFamily: \"Source Sans Pro\"\n }\n },\n cancelEmailButton: {\n fontSize: \"13px\",\n fontWeight: \"bold\",\n backgroundColor: \"#E6A0521F\",\n color: \"#E6A052\",\n borderRadius: \"6px\",\n textTransform: \"uppercase\",\n padding: \"8px 16px\",\n minWidth: \"100px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n \"&:hover\": {\n backgroundColor: \"#E6A052\",\n color: \"#FFFFFF\"\n }\n },\n unscheduledEmailDetails: {\n fontSize: \"13px\",\n fontWeight: \"bold\",\n backgroundColor: \"#CCCCCC\",\n color: \"#FFFFFF\",\n borderRadius: \"6px\",\n textTransform: \"uppercase\",\n padding: \"8px 32px 8px 32px\",\n width: \"auto\",\n height: \"35px\"\n },\n unsheduledDetailsPopover: {\n position: \"absolute\",\n top: \"100%\",\n left: 0,\n padding: \"15px\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"5px\",\n whiteSpace: \"normal\",\n zIndex: 1,\n boxShadow: \"0px 2px 14px rgba(48, 90, 111, 0.16)\",\n width: \"200px\",\n alignItems: \"flex-start\"\n },\n unsheduledDetailsLabel: {\n fontWeight: \"bold\"\n },\n unsheduledDetailsInfo: {\n marginLeft: \"8px\",\n marginBottom: \"8px\"\n },\n chipContainer: {\n width: \"100%\",\n height: \"60px\",\n display: \"flex\",\n marginTop: \"20px\"\n },\n chipItem: {\n width: \"fit-content\",\n height: \"40px\",\n border: \"1.5px solid #084d89\",\n borderRadius: \"32px\",\n fontSize: \"12px\",\n color: \"#084d89\",\n fontWeight: \"bold\",\n margin: \"0px 10px\",\n textTransform: \"uppercase\",\n backgroundColor: \"#edf2f5\"\n },\n filterLabel: {\n color: \"#084d89\",\n borderRadius: \"5px\",\n margin: \"0px 10px\",\n fontSize: \"12px\",\n textTransform: \"uppercase\",\n width: \"150px\",\n height: \"40px\",\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontWeight: \"bold\",\n backgroundColor: \"#edf2f5\",\n border: \"none\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const classes = {\n widget: {\n display: \"flex\",\n position: \"relative\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: \"1px solid #E3E3E3\",\n borderRadius: \"3px\",\n flex: \"40%\",\n height: \"420px\",\n minWidth: \"600px\",\n padding: \"30px\",\n paddingBottom: \"20px\"\n },\n titleAndDateContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n zIndex: 1,\n marginBottom: \"20px\"\n },\n title: {\n fontSize: \"18px\",\n fontWeight: \"600\",\n color: \"#333333\",\n marginBottom: \"4px\"\n },\n loading: {\n zIndex: \"0\",\n display: \"flex\",\n position: \"absolute\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n background: \"transparent\",\n width: \"100%\",\n top: \"0\",\n transition: \"all 300ms ease-in-out\",\n opacity: \"0\"\n },\n chart: {\n zIndex: \"0\",\n width: \"100%\",\n height: \"100%\"\n },\n noDataContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"100%\",\n height: \"100%\"\n },\n noData: {\n color: \"#AAAAAA\",\n fontSize: \"18px\",\n fontWeight: \"600\"\n },\n noDataIcon: {\n color: \"#AAAAAA\",\n fontSize: \"48px\",\n marginBottom: \"10px\"\n },\n date: {\n width: \"270px\",\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n \"& span\": {\n color: \"#AAAAAA\",\n marginBottom: \"4px\"\n }\n },\n datePicker: {\n fontFamily: \"Source Sans Pro\",\n color: \"#666666\",\n width: \"119px\",\n \"& input\": {\n padding: \"0px 4px 4px 10px\",\n fontFamily: \"Source Sans Pro\"\n },\n \"& fieldset\": {\n \"& legend\": {\n display: \"none\"\n }\n },\n \"& button\": {\n padding: \"0px\",\n transform: \"translate(-2px, -1.5px)\",\n \"&:hover\": {\n background: \"transparent\",\n \"& svg\": {\n color: \"#888888\"\n }\n }\n },\n \"& .MuiInputAdornment-root\": {\n marginLeft: \"0px\"\n },\n \"& svg\": {\n color: \"#AAAAAA\"\n }\n },\n calendar: {\n \"& .PrivatePickersFadeTransitionGroup-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .MuiTypography-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .Mui-selected\": {\n backgroundColor: `${theme.palette.action.main} !important`\n },\n \"& .PrivatePickersSlideTransition-root\": {\n minHeight: \"242px !important\"\n }\n },\n error: {\n color: \"#FF0000\",\n fontSize: \"14px\",\n position: \"absolute\",\n top: \"3px\",\n right: \"29px\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport { notesEditSaveButton, notesCancelButton } from \"../../shared/styleClasses\";\nexport const classes = {\n noteEdit: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-between\",\n overflow: \"hidden\",\n transition: \"all 0.3s ease-in-out\",\n width: \"50%\"\n },\n noteEditFooter: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n columnGap: \"10px\",\n padding: \"8px 1px\",\n minHeight: \"50.5px\"\n },\n notesContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"10px\",\n marginTop: \"32px\"\n },\n note: {\n display: \"flex\",\n justifyContent: \"space-between\",\n margin: \"4px 0\"\n },\n noteContent: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"4px\",\n marginRight: \"14%\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#939393\"\n },\n noteText: {\n color: \"#828282\",\n fontSize: \"16px\"\n },\n noteActions: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n columnGap: \"16px\"\n },\n notesEditSaveButton,\n notesCancelButton,\n newNoteContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n width: \"100%\"\n },\n notesNewButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"120px\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n },\n noNotesText: {\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\"\n },\n notesSkeleton: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"10px\",\n width: \"100%\"\n },\n emojiError: {\n color: theme.palette.error.main,\n transition: \"opacity 0.3s linear\",\n position: \"absolute\",\n top: \"8px\",\n right: \"0px\",\n fontSize: \"14px\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const classes = {\n widget: {\n border: \"1px solid #E3E3E3\",\n borderRadius: \"3px\",\n flex: \"40%\",\n minWidth: \"600px\"\n },\n subcontainer: {\n flex: \"40%\",\n minWidth: \"600px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n columnGap: \"50px\",\n rowGap: \"50px\"\n },\n subWidget: {\n flex: \"40%\",\n borderRadius: \"3px\",\n height: \"120px\",\n minWidth: \"524px\"\n },\n creationExpiryContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n height: \"100%\",\n paddingLeft: \"4%\"\n },\n widgetIcon: {\n backgroundColor: \"#EDF2F5\",\n padding: \"12px\",\n borderRadius: \"16px\",\n \"& svg\": {\n color: theme.palette.primary.main,\n fontSize: \"32px\"\n }\n },\n widgetText: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"flex-start\",\n rowGap: \"6px\",\n marginLeft: \"30px\"\n },\n widgetTextTitle: {\n fontSize: \"16px\",\n color: theme.palette.primary.main\n },\n widgetTextContent: {\n fontSize: \"16px\",\n fontWeight: \"600\",\n color: \"#333333\"\n },\n widgetBlockContainer: {\n display: \"flex\",\n height: \"100%\",\n width: \"100%\",\n columnGap: \"50px\"\n },\n widgetBlock: {\n border: \"1px solid #E3E3E3\",\n borderRadius: \"3px\",\n position: \"relative\",\n display: \"flex\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n paddingLeft: \"4%\",\n width: \"50%\",\n height: \"100%\"\n },\n widgetBlockText: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"flex-start\",\n rowGap: \"3px\",\n marginLeft: \"25px\"\n },\n blockCount: {\n fontSize: \"24px\",\n color: theme.palette.primary.main,\n fontWeight: \"bold\"\n },\n blockTitle: {\n fontSize: \"16px\",\n fontWeight: \"600\",\n color: \"#333333\"\n },\n widgetBlockIcon: {\n backgroundColor: \"#EDF2F5\",\n padding: \"12px\",\n borderRadius: \"16px\",\n \"& svg\": {\n color: theme.palette.primary.main,\n fontSize: \"28px\"\n }\n },\n infoContainer: {\n flex: \"40%\",\n minWidth: \"600px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n columnGap: \"20px\",\n minHeight: \"120px\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"16px\"\n },\n widgetBlockNew: {\n position: \"absolute\",\n top: \"20px\",\n right: \"24px\",\n color: \"#8CCF95\",\n fontWeight: \"bold\",\n fontSize: \"18px\"\n },\n jobInfoContainer: {\n display: \"flex\",\n justifyContent: \"space-around\",\n alignItems: \"flex-start\",\n flex: \"40%\",\n borderRadius: \"3px\",\n minWidth: \"500px\",\n maxHeight: \"90px\",\n overflow: \"hidden\"\n },\n infoText: {\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n rowGap: \"6px\",\n marginLeft: \"20px\",\n maxWidth: \"160px\",\n width: \"100%\"\n },\n infoTextTitle: {\n fontSize: \"16px\",\n color: theme.palette.primary.main\n },\n infoTextContent: {\n fontSize: \"16px\",\n fontWeight: \"600\",\n color: \"#333333\"\n },\n infoWidget: {\n display: \"flex\",\n border: \"1px solid #E3E3E3\",\n borderRadius: \"3px\",\n flex: \"40%\",\n minWidth: \"600px\"\n },\n tag: {\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#939393\",\n backgroundColor: \"#F8F8F8\",\n borderRadius: \"18px\",\n height: \"23px\",\n maxWidth: \"140px\",\n display: \"inline-block\",\n padding: \"2px 12px\",\n marginRight: \"6px\",\n marginBottom: \"4px\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n \"&:hover\": {\n maxWidth: \"unset\"\n }\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nimport { red, grey } from \"@mui/material/colors\";\nimport { actionsMenuPaperCommonStyles, actionsMenuSpanCommonStyles } from \"../shared/commonStyles\";\nimport { copyButton, link } from \"../shared/styleClasses\";\nexport const classes = {\n jobPageContainer: {\n fontFamily: theme.typography.fontFamily,\n backgroundColor: \"#FFFFFF\",\n padding: \"40px\"\n },\n jobArchivedContainer: {\n display: \"flex\",\n padding: \"0px 16px\",\n marginBottom: 1\n },\n jobArchiveAlert: {\n color: red[300],\n backgroundColor: red[50],\n padding: \"0 16px\",\n fontWeight: \"bold\",\n borderRadius: \"6px\"\n },\n jobUnarchiveButton: {\n color: grey[700],\n fontWeight: \"bold\",\n textDecoration: \"underline\",\n marginLeft: 1\n },\n jobPageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n padding: \"0px 16px\",\n \"& h1\": {\n fontWeight: \"bold\",\n fontSize: \"38px\",\n lineHeight: \"1.2em\",\n color: \"#666666\",\n marginTop: \"0\",\n \"@media (max-width: 1450px)\": {\n fontSize: \"34px\"\n },\n \"@media (max-width: 1260px)\": {\n fontSize: \"28px\"\n }\n }\n },\n actionButtons: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n columnGap: \"10px\",\n marginLeft: \"20px\"\n },\n actionsMenu: {\n \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n rowGap: \"11px\",\n minWidth: \"153px\",\n marginTop: \"6px\"\n }),\n \"& span\": __spreadProps(__spreadValues({}, actionsMenuSpanCommonStyles), {\n color: \"#939393\"\n })\n },\n iconGrey: {\n color: \"#666666\",\n fontSize: \"28px\"\n },\n linkContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n columnGap: \"20px\",\n padding: \"6px 16px\",\n width: \"100%\",\n \"& a:hover\": {\n textDecoration: \"none\"\n }\n },\n link,\n copyButton,\n stateStatusContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n alignItems: \"center\",\n columnGap: \"20px\",\n padding: \"8px 16px\"\n },\n stateDropdown: {\n fontSize: \"13px\",\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n width: \"140px\",\n height: \"35px\",\n borderRadius: \"6px\",\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n Published: {\n color: \"#8CCF95\",\n backgroundColor: \"RGBA(140, 207, 149, 0.12)\"\n },\n Draft: {\n color: \"#E6A052\",\n backgroundColor: \"RGBA(230, 160, 82, 0.12)\"\n },\n Unpublished: {\n color: \"#D6827D\",\n backgroundColor: \"RGBA(214, 130, 125, 0.12)\"\n },\n Saved: {\n color: \"#FFFFFF\",\n backgroundColor: \"#CCCCCC\"\n },\n Closed: {\n color: \"#FFFFFF\",\n backgroundColor: \"#CCCCCC\"\n },\n stateOptions: {\n \"& .MuiPaper-root\": {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"11px\",\n minWidth: \"140px\",\n padding: \"14px 0px 14px 20px\",\n marginTop: \"6px\",\n borderRadius: \"6px\"\n },\n \"& span\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"13px\",\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n color: \"#939393\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.palette.primary.main\n }\n }\n },\n downIcon: {\n marginLeft: \"8px\",\n fontSize: \"18px\",\n color: \"inherit\"\n },\n statusDropdown: {\n position: \"relative\",\n fontSize: \"13px\",\n backgroundColor: \"#FFFFFF\",\n border: \"1px solid #E5E5E5\",\n padding: \"8px 20px 8px 12px\",\n width: \"140px\",\n height: \"35px\",\n borderRadius: \"6px\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n \"&:hover\": {\n border: \"1px solid #D5D5D5\",\n textOverflow: \"unset\",\n overflow: \"unset\",\n width: \"auto\",\n minWidth: \"140px\"\n }\n },\n statusDownIcon: {\n position: \"absolute\",\n right: \"3px\",\n fontSize: \"18px\",\n color: \"#E5E5E5\"\n },\n statusDropdownItem: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"13px\",\n padding: \"6px 12px\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"#F1F1F1\"\n }\n },\n statusDropdownItems: {\n \"& .MuiPaper-root\": {\n width: \"200px\",\n maxHeight: \"250px\",\n overflowY: \"auto\",\n borderRadius: \"6px\",\n marginTop: \"6px\"\n }\n },\n statusLoader: {\n position: \"absolute\",\n left: \"calc(50% - 9px)\"\n },\n tabsContainer: {\n borderBottom: 1,\n borderColor: \"#EEEEEE\",\n margin: \"40px 0px\"\n },\n tabs: {\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n letterSpacing: \"0\",\n color: \"#939393\",\n textTransform: \"none\",\n minWidth: \"unset\",\n \"&:hover\": {\n color: \"#737373\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n \"& button.Mui-selected\": {\n fontWeight: \"600\",\n color: \"#084D6D\"\n }\n },\n tabIndicator: {\n backgroundColor: \"#5BC4BF\",\n margin: \"0 16px\"\n },\n tabContent: {\n padding: \"0px 16px\"\n },\n applicationsTabButton: {\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n fontWeight: \"bold\",\n fontSize: \"12px\",\n backgroundColor: \"#EDF2F5\",\n borderRadius: \"18px\",\n padding: \"0px 10px\",\n minWidth: \"48px\",\n height: \"24px\"\n },\n widgetContainer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n columnGap: \"50px\",\n rowGap: \"50px\"\n },\n iframeContainer: {\n position: \"relative\",\n width: \"100%\",\n height: \"600px\",\n border: \"1px solid #E3E3E3\",\n borderRadius: \"3px\",\n marginTop: \"50px\"\n },\n multiposterContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"40px\",\n padding: \"24px 16px\",\n marginTop: \"22px\"\n },\n toggleContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n position: \"absolute\"\n },\n toggleButtonGroup: {\n borderRadius: \"11px\",\n \"& .MuiToggleButton-root.Mui-selected\": {\n backgroundColor: \"#F3F3F3\",\n \"&:hover\": {\n backgroundColor: \"#F3F3F3\"\n }\n }\n },\n toggleButton: {\n padding: \"none !important\",\n borderRadius: \"11px\",\n width: \"125px\",\n height: \"47px\",\n borderColor: \"#F3F3F3\"\n },\n logoSize: {\n width: \"90px !important\",\n height: \"40px !important\"\n },\n skeleton: {\n width: \"100%\",\n height: \"140px\",\n borderRadius: \"6px\"\n }\n};\n","\"use strict\";\nexport var NoteState = /* @__PURE__ */ ((NoteState2) => {\n NoteState2[\"PERMANENT_RECORD\"] = \"permanent_record\";\n NoteState2[\"NOTEPAD\"] = \"note_pad\";\n return NoteState2;\n})(NoteState || {});\nexport var SortableColumnId = /* @__PURE__ */ ((SortableColumnId2) => {\n SortableColumnId2[\"CANDIDATE\"] = \"candidate\";\n SortableColumnId2[\"CANDIDATE_TAGS\"] = \"candidate_tags\";\n SortableColumnId2[\"COUNTRY\"] = \"country\";\n SortableColumnId2[\"DATE\"] = \"date\";\n SortableColumnId2[\"GENDER\"] = \"gender\";\n SortableColumnId2[\"ID\"] = \"id\";\n SortableColumnId2[\"NOTE\"] = \"note\";\n SortableColumnId2[\"NOTES\"] = \"notes\";\n SortableColumnId2[\"PERMANENT_RECORD\"] = \"permanent_record\";\n SortableColumnId2[\"NOTE_PAD\"] = \"note_pad\";\n SortableColumnId2[\"PHONE\"] = \"phone\";\n SortableColumnId2[\"RATING\"] = \"rating\";\n SortableColumnId2[\"STATE\"] = \"state\";\n SortableColumnId2[\"STATUS\"] = \"status\";\n SortableColumnId2[\"SUBURB\"] = \"suburb\";\n return SortableColumnId2;\n})(SortableColumnId || {});\n","\"use strict\";\nimport RecruitApiClient from \"../../RecruitApiClient\";\nconst BASE_URL = \"/api/v4\";\nclass Api {\n constructor() {\n this.getJobs = (params) => RecruitApiClient.get(`${BASE_URL}/jobs`, params);\n this.getJob = (jobId) => RecruitApiClient.get(`${BASE_URL}/jobs/${jobId}`);\n this.getFilters = (url, params) => RecruitApiClient.get(`${BASE_URL}/jobs/${url}`, params);\n this.getUISettings = (params) => RecruitApiClient.get(`${BASE_URL}/ui_preferences`, params, {\n cache: \"no-cache\"\n });\n this.postJobNote = (jobId, params) => RecruitApiClient.post(`${BASE_URL}/jobs/${jobId}/job_notes`, params);\n this.postUISettings = (params) => RecruitApiClient.post(`${BASE_URL}/ui_preferences`, params);\n this.putChangedState = (link) => RecruitApiClient.put(link);\n this.putChangedStatus = (jobId, statusID) => RecruitApiClient.put(`${BASE_URL}/jobs/${jobId}/status/${statusID}`);\n this.putPinJob = (jobId) => RecruitApiClient.put(`${BASE_URL}/jobs/${jobId}/pin`);\n this.putUnpinJob = (jobId) => RecruitApiClient.put(`${BASE_URL}/jobs/${jobId}/unpin`);\n this.putArchiveJobs = (params) => RecruitApiClient.put(`${BASE_URL}/jobs/archive`, params);\n this.putUnrchiveJobs = (params) => RecruitApiClient.put(`${BASE_URL}/jobs/unarchive`, params);\n this.getCSVExport = (params) => RecruitApiClient.get(`${BASE_URL}/jobs/export`, params);\n this.referenceValidation = (params) => RecruitApiClient.get(`${BASE_URL}/jobs/validating_reference`, params);\n this.referencePrefix = (params) => RecruitApiClient.get(`${BASE_URL}/jobs/auto_job_reference_setting`, params);\n this.importResources = (jobId, params, queryParams) => RecruitApiClient.post(`${BASE_URL}/jobs/${jobId}/import_resources${queryParams}`, params);\n this.cloneJobsOptions = (params) => RecruitApiClient.get(`${BASE_URL}/jobs/jobs_for_clone`, params);\n this.createJob = (params) => RecruitApiClient.post(`${BASE_URL}/jobs/`, params);\n this.getEntities = () => RecruitApiClient.get(`/api/v4/entities`);\n }\n}\nexport default new Api();\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport {\n checkboxContainerStyles,\n filterPopoverHeaderCommonStyles\n} from \"../../shared/commonStyles\";\nimport {\n applyButton,\n clearButton,\n filterPopoverContent,\n sortableSwitchLabels,\n switchLabels\n} from \"../../shared/styleClasses\";\nexport const classes = {\n iconButton: {\n border: \"1px solid #EAEEF0\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n width: \"69px\",\n height: \"60px\",\n \"& svg\": {\n fontSize: \"30px\",\n color: \"#084D6D\"\n }\n },\n iconButtonOpen: {\n backgroundColor: \"rgba(8,77,109,0.121)\"\n },\n popover: {\n marginTop: \"15px\"\n },\n popoverContent: {\n width: \"272px\",\n padding: \"22px 0px 22px 24px\",\n boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\"\n },\n switchLabels,\n switch: {\n \"& .MuiSwitch-thumb\": {\n color: \"#FFFFFF\"\n },\n \"& :hover\": {\n backgroundColor: \"rgba(91, 196, 191, 0.17)\"\n }\n },\n switchActive: {\n \"& .MuiSwitch-thumb\": {\n color: \"#5BC4BF\"\n }\n },\n labelActive: {\n \"& .MuiFormControlLabel-label\": {\n color: \"#CCCCCC\"\n }\n },\n filterPopoverContent,\n scrollableFilters: {\n height: \"fit-content\",\n padding: \"26px\",\n paddingTop: \"0px\"\n },\n filterPopoverHeader: __spreadProps(__spreadValues({}, filterPopoverHeaderCommonStyles), {\n top: \"0px\"\n }),\n accordionRoot: {\n boxShadow: \"none\",\n margin: \"14px 0px\",\n \"&::before\": {\n display: \"none\"\n },\n \"&:first-of-type\": {\n marginTop: \"0px !important\"\n },\n \"&.Mui-expanded\": {\n marginTop: \"14px 0px 0px 0px\"\n }\n },\n accordionSummary: {\n minHeight: \"0px !important\",\n display: \"inline-flex\",\n padding: \"0px !important\",\n \"& .MuiAccordionSummary-content\": {\n margin: \"0px !important\",\n paddingRight: \"25px\"\n },\n \"& .MuiAccordionSummary-expandIconWrapper\": {\n color: \"#084D6D\",\n transform: \"rotate(-90deg)\",\n \"&.Mui-expanded\": {\n transform: \"rotate(0deg)\"\n },\n \"& svg\": {\n fontSize: \"20px\"\n }\n }\n },\n summaryTypography: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#084D6D\"\n },\n accordionDetails: {\n padding: \"6px 0px\"\n },\n checkboxLabels: {\n justifyContent: \"space-between\",\n width: \"174px\",\n height: \"25px\",\n \"& .MuiFormControlLabel-label\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n color: \"#939393\"\n },\n \"& .MuiCheckbox-colorPrimary\": {\n color: \"#DDDDDD\",\n \"&.Mui-checked\": {\n color: \"#5BC4C0\"\n }\n },\n \"& svg\": {\n fontSize: \"17px\"\n }\n },\n uncheckedLabel: {\n \"& .MuiFormControlLabel-label\": {\n color: \"#CCCCCC\",\n fontWeight: \"600\"\n }\n },\n clearButton,\n applyButton,\n multiSelectContainer: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#084D6D\",\n marginBottom: \"10px\"\n },\n checkboxContainer: checkboxContainerStyles,\n dateDisplay: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#939393\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n marginTop: \"2px\"\n },\n dateDisplayBox: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n fontSize: \"12px\",\n borderRadius: \"4px\",\n border: \"2px solid #DDDDDD\",\n width: \"88px\",\n height: \"36px\"\n },\n dateInput: {\n \"& .MuiOutlinedInput-root\": {\n width: \"88px\",\n height: \"31px\",\n padding: \"0px\",\n transform: \"translateY(2px)\",\n \"&:hover\": {\n \"& fieldset\": {\n borderColor: \"#BBBBBB\"\n }\n }\n },\n \"& fieldset\": {\n border: \"2px solid #DDDDDD\",\n borderColor: \"#DDDDDD\",\n borderRadius: \"4px\",\n \"& legend\": {\n display: \"none\"\n }\n },\n \"& input\": {\n fontSize: \"12px\",\n color: \"#939393\",\n padding: \"0px\",\n paddingLeft: \"12px\",\n paddingBottom: \"4px\"\n },\n \"& button\": {\n display: \"none\"\n }\n },\n invalidDate: {\n \"& .MuiOutlinedInput-root\": {\n \"&:hover\": {\n \"& fieldset\": {\n borderColor: \"#E60B0B !important\"\n }\n },\n \"& fieldset\": {\n borderColor: \"#E60B0B\"\n }\n }\n },\n tableSettingsHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n paddingBottom: \"8px\",\n paddingLeft: \"4px\"\n },\n sortableField: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"204px\"\n },\n sortableSwitchLabels\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nconst lineHeight = 1.43;\nconst linesToShow = 3;\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n statusClampCommonStyles,\n statusClampAfterStyles,\n statusClampDropdownStyles,\n statusClampDropdownAfterStyles,\n actionsMenuPaperCommonStyles,\n actionsMenuSpanCommonStyles,\n rightArrowStyles,\n leftArrowStyles,\n selectedTooltipCommonStyles\n} from \"../../shared/commonStyles\";\nimport {\n notesEditSaveButton,\n notesCancelButton,\n editNotePopover,\n rowSelect,\n pagination,\n paginationContainer,\n rowSelectContainerAlt\n} from \"../../shared/styleClasses\";\nexport const classes = {\n category: {\n marginBottom: theme.spacing(2),\n marginTop: 0\n },\n tableWrapper: {\n tableLayout: \"auto !important\",\n \"& tbody\": {\n \"& td, th \": {\n borderWidth: \"1px 0px 0px 0px\",\n backgroundColor: \"white\"\n },\n \"& tr:last-child td, th\": {\n borderBottom: \"none\"\n }\n },\n \"& .Mui-selected\": {\n backgroundColor: \"#F2F2F2\"\n },\n \"& tr\": {\n \"& td, th\": {\n borderWidth: \"0px\",\n textTransform: \"none\"\n }\n },\n \"& svg\": {\n fontSize: \"1.1rem\"\n }\n },\n manageMetrics: {\n position: \"absolute\",\n top: 0,\n right: 0\n },\n tableHeaderRow: {\n \"& td, th\": {\n color: theme.palette.primary.main,\n fontWeight: \"bold\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n border: \"none\",\n backgroundColor: \"white\",\n textTransform: \"none\",\n \"& span\": {\n color: theme.palette.primary.main,\n \"&:hover\": {\n color: \"#0c74a4\"\n }\n },\n \"& .Mui-active\": {\n color: theme.palette.primary.main\n }\n },\n \"& .Mui-selected\": {\n backgroundColor: \"#F2F2F2\"\n },\n \"& .MuiTableSortLabel-icon\": {\n color: \"darkgrey !important\"\n }\n },\n tableContainer: {\n display: \"relative\",\n scrollBehavior: \"smooth\"\n },\n tableBody: {\n \"& tr, td\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\"\n }\n },\n leftArrow: __spreadProps(__spreadValues({}, leftArrowStyles), {\n position: \"fixed\",\n zIndex: \"999\"\n }),\n rightArrow: __spreadProps(__spreadValues({}, rightArrowStyles), {\n position: \"fixed\",\n zIndex: \"999\"\n }),\n showArrows: {\n display: \"flex\",\n animation: \"$fadeIn linear 0.17s\"\n },\n \"@keyframes fadeIn\": {\n \"0%\": { opacity: 0 },\n \"100%\": { opacity: 0.9 }\n },\n iconRed: {\n color: theme.palette.error.main\n },\n iconGreen: {\n color: theme.palette.success.main\n },\n iconBlue: {\n color: theme.palette.primary.main\n },\n iconGray: {\n color: \"#666666\"\n },\n stateColumn: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"13px\",\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n width: \"113px\",\n height: \"35px\",\n borderRadius: \"6px\",\n display: \"inline-flex\",\n justifyContent: \"center\",\n alignItems: \"center\"\n },\n noteColumn: {\n display: \"-webkit-box\",\n height: `${lineHeight}*${linesToShow}`,\n margin: \"0 auto\",\n lineHeight,\n lineClamp: linesToShow,\n boxOrient: \"vertical\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\"\n },\n link: {\n marginTop: \"5px\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n cursor: \"pointer\",\n color: theme.palette.primary.main\n },\n published: {\n color: \"#8CCF95\",\n backgroundColor: \"RGBA(140, 207, 149, 0.12)\"\n },\n draft: {\n color: \"#E6A052\",\n backgroundColor: \"RGBA(230, 160, 82, 0.12)\"\n },\n unpublished: {\n color: \"#D6827D\",\n backgroundColor: \"RGBA(214, 130, 125, 0.12)\"\n },\n saved: {\n color: \"#FFFFFF\",\n backgroundColor: \"#CCCCCC\"\n },\n closed: {\n color: \"#FFFFFF\",\n backgroundColor: \"#CCCCCC\"\n },\n stateDropdown: {\n \"& .MuiPaper-root\": {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"11px\",\n minWidth: \"145px\",\n padding: \"14px 0px 14px 20px\",\n marginTop: \"6px\",\n borderRadius: \"6px\"\n },\n \"& span\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"13px\",\n fontWeight: \"bold\",\n textTransform: \"uppercase\",\n color: \"#939393\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.palette.primary.main\n }\n }\n },\n stateLoader: {\n color: theme.palette.primary.main\n },\n stateErrorTooltip: {\n \"& .MuiTooltip-tooltip\": {\n textAlign: \"center\"\n }\n },\n statusClamp: __spreadProps(__spreadValues({}, statusClampCommonStyles), {\n width: \"126px\",\n padding: \"6px 20px 5px 12px\",\n \"&::after\": statusClampAfterStyles,\n \"& .status-dropdown-full\": __spreadProps(__spreadValues({}, statusClampDropdownStyles), {\n width: \"126px\",\n padding: \"6px 20px 5px 12px\",\n \"&::after\": statusClampDropdownAfterStyles\n }),\n \"&:hover\": {\n overflow: \"visible\",\n lineClamp: \"unset\",\n \"& .status-dropdown-full\": {\n visibility: \"visible\"\n }\n }\n }),\n noDropdown: {\n border: \"1px solid #FFFFFF\",\n \"& .status-dropdown-full\": {\n border: \"1px solid #FFFFFF\"\n },\n \"&::after\": {\n display: \"none\"\n }\n },\n noStatuses: {\n width: \"100%\",\n paddingLeft: \"18px\",\n display: \"flex\"\n },\n statusDropdown: {\n border: \"1px solid #CCCCCC\",\n borderRadius: \"6px\",\n cursor: \"pointer\"\n },\n statusDropdownItem: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"13px\",\n padding: \"6px 12px\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"#F1F1F1\"\n }\n },\n statusDropdownItems: {\n \"& .MuiPaper-root\": {\n width: \"200px\",\n maxHeight: \"250px\",\n overflowY: \"auto\",\n borderRadius: \"6px\",\n marginTop: \"6px\"\n }\n },\n statusLoader: {\n color: theme.palette.primary.main,\n position: \"absolute\",\n zIndex: \"4\",\n top: \"calc(50% - 9px)\",\n left: \"calc(50% - 9px)\"\n },\n rowSelectContainer: rowSelectContainerAlt,\n paginationContainer,\n pagination,\n rowSelect,\n paginationMenuItems: {\n \"& li\": {\n fontFamily: \"Source Sans Pro\"\n }\n },\n titleCell: {\n position: \"sticky\",\n left: \"206px\",\n width: \"200px\",\n background: \"white !important\",\n paddingRight: \"8px !important\",\n zIndex: \"3\",\n \"& a\": {\n fontWeight: \"bold\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n color: \"#666666\",\n wordBreak: \"break-word !important\"\n },\n \"& a:hover\": {\n textDecoration: \"none\"\n },\n \"&::after\": {\n content: '\"\"',\n background: \"#aaaaaa\",\n width: \"2px\",\n height: \"100%\",\n filter: \"blur(2px)\",\n position: \"absolute\",\n top: \"0\",\n right: \"-2px\",\n opacity: \"0%\",\n transition: \"opacity 0.17s linear\"\n },\n \"&::before\": {\n content: '\"\"',\n top: \"0\",\n right: \"0\",\n width: \"6px\",\n height: \"100%\",\n position: \"absolute\",\n background: \"#ffffff\",\n zIndex: \"2\"\n }\n },\n titleHeaderCell: {\n \"&::after\": {\n content: '\"\"',\n background: \"#aaaaaa\",\n width: \"2px\",\n height: \"100%\",\n filter: \"blur(2px)\",\n position: \"absolute\",\n top: \"0\",\n right: \"-2px\",\n opacity: \"0%\",\n transition: \"opacity 0.17s linear\"\n },\n \"&::before\": {\n content: '\"\"',\n top: \"0\",\n right: \"0\",\n width: \"6px\",\n height: \"100%\",\n position: \"absolute\",\n background: \"#ffffff\",\n zIndex: \"2\"\n }\n },\n actionsCell: {\n position: \"sticky\",\n right: 0,\n width: \"70px !important\",\n background: \"white\",\n zIndex: \"3\",\n \"&::after\": {\n content: '\"\"',\n background: \"#aaaaaa\",\n width: \"2px\",\n height: \"100%\",\n filter: \"blur(2px)\",\n position: \"absolute\",\n top: \"0\",\n left: \"-2px\",\n opacity: \"0%\",\n transition: \"opacity 0.17s linear\"\n },\n \"&::before\": {\n content: '\"\"',\n top: \"0\",\n left: \"0\",\n width: \"6px\",\n height: \"100%\",\n position: \"absolute\",\n background: \"#ffffff\",\n zIndex: \"2\"\n }\n },\n actionsHeaderCell: {\n position: \"sticky\",\n right: 0,\n width: \"70px !important\",\n background: \"white\",\n zIndex: \"1\",\n \"&::after\": {\n content: '\"\"',\n background: \"#aaaaaa\",\n width: \"2px\",\n height: \"100%\",\n filter: \"blur(2px)\",\n position: \"absolute\",\n top: \"0\",\n left: \"-2px\",\n opacity: \"0%\",\n transition: \"opacity 0.17s linear\"\n },\n \"&::before\": {\n content: '\"\"',\n top: \"0\",\n left: \"0\",\n width: \"6px\",\n height: \"100%\",\n position: \"absolute\",\n background: \"#ffffff\",\n zIndex: \"2\"\n }\n },\n cellAnimate: {\n \"&&::after\": {\n opacity: \"20%\"\n }\n },\n selectedTooltip: __spreadProps(__spreadValues({}, selectedTooltipCommonStyles), {\n justifyContent: \"space-between\",\n padding: \"20px 50px\",\n width: \"665px\",\n left: \"calc(50% - 300px)\"\n }),\n selectedTooltipText: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"24px\",\n fontWeight: \"bold\",\n color: \"#666666\"\n },\n selectedTooltipButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"17px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#D6827D\",\n backgroundColor: \"rgba(214, 130, 125, 0.22)\",\n boxShadow: \"none\",\n width: \"129px\",\n height: \"50px\",\n borderRadius: \"6px\",\n \"&:hover\": {\n backgroundColor: \"rgba(214, 130, 125, 0.33)\",\n boxShadow: \"none\"\n }\n },\n selectedTooltipButtonsContainer: {\n display: \"flex\",\n columnGap: \"18px\"\n },\n fadeIn: {\n visibility: \"visible\",\n opacity: \"1\",\n transform: \"translateX(0px)\",\n transition: \"visibility 0s linear 0s, opacity 300ms, transform 300ms\"\n },\n fadeOut: {\n visibility: \"hidden\",\n opacity: \"0\",\n transform: \"translateX(20px)\",\n transition: \"visibility 0s linear 300ms, opacity 300ms, transform 300ms\"\n },\n actionsMenu: {\n \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n width: \"135px\",\n marginTop: \"6px\"\n }),\n \"& span\": actionsMenuSpanCommonStyles\n },\n editNotePopover,\n noteInput: {\n marginBottom: \"4px\"\n },\n notesButtonContainer: {\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n columnGap: \"10px\"\n },\n notesEditSaveButton,\n notesCancelButton,\n infoIcon: {\n color: \"#084d6d\",\n marginBottom: \"3.5px\",\n marginRight: \"5px\"\n },\n snackbar: {\n backgroundColor: \"#5BC4BF\",\n color: \"#FFFFFF\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n maxWidth: \"440px\",\n textAlign: \"center\"\n },\n pinJobsButton: {\n width: \"100px\",\n height: \"26px\",\n borderRadius: \"6px\",\n backgroundColor: \"rgba(230, 160, 82, 0.2)\",\n color: \"rgba(230, 160, 82)\",\n textTransform: \"none\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"10px\",\n fontWeight: \"700\",\n position: \"absolute\",\n zIndex: 99,\n top: \"28px\",\n right: \"0px\",\n \"&:hover\": {\n backgroundColor: \"rgba(230, 160, 82, 0.3)\"\n }\n },\n pinJobsNotActive: {\n backgroundColor: \"#EEEEEE\",\n color: \"#AAAAAA\",\n \"&:hover\": {\n backgroundColor: \"rgba(230, 160, 82, 0.2)\",\n color: \"rgba(230, 160, 82)\"\n }\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nimport { theme } from \"../../../../ThemeContext/ThemeObject\";\nimport { sharedClasses } from \"../../../Components/CustomUIElements/sharedClasses\";\nimport {\n pagination,\n paginationContainer,\n rowSelect,\n rowSelectContainer\n} from \"../../../shared/styleClasses\";\nexport const classes = {\n tableWrapper: {\n tableLayout: \"auto !important\",\n // minWidth: '1000px',\n border: \"none\",\n \"td, th, tr, thead\": {\n fontFamily: \"Source Sans Pro, sans-serif\",\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\",\n padding: \"12px 0px 12px 4px\"\n },\n th: {\n color: theme.palette.primary.main,\n fontSize: \"14px\",\n fontWeight: \"bold\",\n paddingBottom: \"5px\"\n }\n },\n fileIconContainer: {\n display: \"flex\",\n alignItems: \"center\"\n },\n fileIcon: {\n minWidth: \"50px\",\n minHeight: \"50px\",\n borderRadius: \"3px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"#084D6D10\",\n \"& svg\": {\n color: theme.palette.primary.main,\n margin: \"0px 2px 2px 0px\"\n }\n },\n fileDate: {\n color: theme.palette.primary.main,\n fontSize: \"14px\",\n fontWeight: \"bold\"\n },\n fileName: {\n color: \"#999999\"\n },\n fileLinkContainer: {\n display: \"flex\",\n alignItems: \"center\",\n columnGap: \"14px\",\n \"& a\": {\n color: \"#333333\",\n fontSize: \"14px\",\n \"&:hover\": {\n color: \"#000000\",\n textDecoration: \"none\"\n }\n }\n },\n fileAttachedBy: {\n color: \"#000000\",\n fontSize: \"14px\"\n },\n copyButton: {\n fontSize: \"10px\",\n fontWeight: \"bold\",\n backgroundColor: \"#5BC4BF1F\",\n color: theme.palette.action.main,\n borderRadius: \"6px\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: theme.palette.action.main,\n color: \"#FFFFFF\"\n }\n },\n noAttachments: __spreadValues({}, sharedClasses.noContentWrapper),\n paginationParent: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginTop: \"20px\"\n },\n rowSelectContainer,\n paginationContainer,\n pagination,\n rowSelect,\n paginationMenuItems: {\n \"& li\": {\n fontFamily: \"Source Sans Pro\"\n }\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n candidateSearchCommonStyles,\n actionsModalReducedPaddingCommonStyles,\n filterPopoverHeaderCommonStyles,\n selectedApplicantsTableStyles,\n selectedApplicantsTableRowStyles,\n modalConfirmationButtonCommonStyles,\n selectedTooltipCommonStyles\n} from \"../../shared/commonStyles\";\nimport {\n statusClamp,\n searchInput,\n chip,\n chipPacket,\n chipSelected,\n fileName,\n newApplicationButton,\n filterSwitchLabels,\n rowSelect,\n pagination,\n csvExportModal,\n csvExportHeader,\n csvExportSubheader,\n closeIcon,\n switchLabels,\n clearButton,\n modalSendButton,\n deleteApplicant,\n csvExportButton,\n applyButton,\n actionButton,\n filterPopoverContent,\n paginationContainer,\n selectedApplicantsTableHeader,\n rowSelectContainer,\n checkboxContainer\n} from \"../../shared/styleClasses\";\nexport const classes = {\n applicationsContainer: {\n paddingTop: \"6px\"\n },\n checkbox: {\n color: \"#aaa !important\",\n \"& .MuiSvgIcon-root\": {\n fontSize: \"20px\"\n },\n \"&.Mui-checked\": {\n color: \"#15C7C0 !important\"\n }\n },\n sortable: {\n \"&:hover\": {\n color: \"#0C74A4\"\n },\n \"& .MuiTableSortLabel-icon\": {\n color: \"darkgrey !important\"\n }\n },\n candidateCell: {\n display: \"flex\",\n alignItems: \"center\",\n \"& a\": {\n color: \"#666666\",\n fontWeight: \"bold\",\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n paginationParent: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n marginTop: \"20px\"\n },\n rowSelectContainer,\n paginationContainer,\n pagination,\n rowSelect,\n paginationMenuItems: {\n \"& li\": {\n fontFamily: \"Source Sans Pro\"\n }\n },\n reviewSubheaders: {\n color: \"#838383\",\n fontSize: \"15px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n paddingLeft: \"4px\"\n },\n reviewBoxes: {\n backgroundColor: \"#f8f6f6\",\n borderRadius: \"6px\",\n border: \"1px solid #DDDDDD\",\n display: \"block\",\n minHeight: \"8.5rem\",\n width: \"10.5rem\",\n padding: \"1.5rem\"\n },\n reviewContent: {\n padding: \"0 0 30px 4px\"\n },\n noApplications: {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"center\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n color: \"#DDDDDD\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n margin: \"32px 0px\"\n },\n skeletonContainer: {\n borderBottom: \"1px solid #DDDDDD\",\n padding: \"10px 0px\"\n },\n selectedTooltip: __spreadProps(__spreadValues({}, selectedTooltipCommonStyles), {\n justifyContent: \"center\",\n width: \"250px\",\n height: \"62px\",\n left: \"calc(50% - 105px)\"\n }),\n fadeIn: {\n visibility: \"visible\",\n opacity: \"1\",\n transform: \"translateX(0px)\",\n transition: \"visibility 0s linear 0s, opacity 300ms, transform 300ms\"\n },\n fadeOut: {\n visibility: \"hidden\",\n opacity: \"0\",\n transform: \"translateX(20px)\",\n transition: \"visibility 0s linear 300ms, opacity 300ms, transform 300ms\"\n },\n selectedTooltipText: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"24px\",\n fontWeight: \"bold\",\n color: \"#666666\"\n },\n actionsContianer: {\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"22px\",\n marginBottom: \"50px\"\n },\n actionButton,\n deleteApplicant,\n filtersRow: {\n display: \"flex\",\n alignItems: \"flex-end\",\n justifyContent: \"space-between\",\n marginBottom: \"30px\",\n columnGap: \"17px\"\n },\n iconButton: {\n border: \"1px solid #EAEEF0\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n width: \"69px\",\n height: \"60px\",\n \"& svg\": {\n fontSize: \"30px\",\n color: \"#084D6D\"\n }\n },\n iconButtonOpen: {\n backgroundColor: \"rgba(8,77,109,0.121)\"\n },\n popover: {\n marginTop: \"15px\"\n },\n popoverContent: {\n width: \"272px\",\n padding: \"22px 0px 22px 24px\",\n boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\"\n },\n switchLabels,\n switch: {\n \"& .MuiSwitch-thumb\": {\n color: \"#FFFFFF\"\n },\n \"& :hover\": {\n backgroundColor: \"rgba(91, 196, 191, 0.17)\"\n }\n },\n switchActive: {\n \"& .MuiSwitch-thumb\": {\n color: \"#5BC4BF\"\n }\n },\n filterSwitch: {\n transform: \"translateX(10px)\",\n \"& .MuiSwitch-thumb\": {\n color: \"#FFFFFF\"\n },\n \"& :hover\": {\n backgroundColor: \"rgba(91, 196, 191, 0.17)\"\n }\n },\n filterSwitchActive: {\n transform: \"translateX(10px)\",\n \"& .MuiSwitch-thumb\": {\n color: \"#5BC4BF\"\n }\n },\n filterSwitchLabels,\n labelActive: {\n \"& .MuiFormControlLabel-label\": {\n color: \"#CCCCCC\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\"\n }\n },\n searchInput,\n newApplicationButton,\n attachmentsHeader: {\n width: \"50px\"\n },\n attachmentsCell: {\n width: \"50px\",\n \"& svg\": {\n color: theme.palette.primary.main,\n fontSize: \"18px\",\n cursor: \"pointer\"\n }\n },\n attachmentItem: {\n display: \"flex\",\n alignItems: \"center\",\n columnGap: \"10px\",\n padding: \"14px\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"#F5F5F5\"\n }\n },\n fileIcon: {\n color: theme.palette.primary.main\n },\n fileName,\n filterPopoverContent,\n scrollableFilters: {\n height: \"fit-content\",\n padding: \"26px\",\n paddingTop: \"0px\"\n },\n filterPopoverHeader: __spreadProps(__spreadValues({}, filterPopoverHeaderCommonStyles), {\n top: \"0px\"\n }),\n clearButton,\n applyButton,\n filterOptionContainer: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#084D6D\",\n marginBottom: \"12px\"\n },\n checkboxContainer,\n ratingSlider: {\n fontFamily: \"Source Sans Pro\",\n color: theme.palette.action.main,\n height: \"2px\",\n \"& .MuiSlider-rail\": {\n backgroundColor: \"#E0E0E0\"\n },\n \"& .MuiSlider-track\": {\n backgroundColor: theme.palette.action.main\n },\n \"& .MuiSlider-thumb\": {\n backgroundColor: theme.palette.action.main,\n width: \"8px\",\n height: \"8px\",\n \"&:hover\": {\n boxShadow: \"0px 0px 0px 5px\" + theme.palette.action.main + \"16\"\n }\n },\n \"& .MuiSlider-thumb.Mui-active\": {\n boxShadow: \"0px 0px 0px 7px\" + theme.palette.action.main + \"16\"\n },\n \"& .MuiSlider-valueLabel\": {\n fontSize: \"11px\",\n backgroundColor: \"transparent\",\n color: theme.palette.primary.main,\n top: \"36px\",\n \"&::after\": {\n display: \"none\"\n }\n }\n },\n csvExportModal,\n csvExportHeader,\n csvExportSubheader,\n closeIcon,\n chipPacket,\n chipSelected,\n chip,\n csvExportButton,\n actionsModal: {\n display: \"flex\",\n flexDirection: \"row\",\n padding: \"0 60px\",\n maxWidth: \"1000px\",\n width: \"100%\",\n height: \"84vh\",\n maxHeight: \"1200px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\"\n },\n modalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n lineHeight: \"32px\"\n },\n calendar: {\n zIndex: \"19001\",\n \"& .PrivatePickersFadeTransitionGroup-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .MuiTypography-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n \"& .Mui-selected\": {\n backgroundColor: `${theme.palette.action.main} !important`\n },\n \"& .PrivatePickersSlideTransition-root\": {\n minHeight: \"242px !important\"\n }\n },\n formAutocomplete: {\n \"& .MuiAutocomplete-root\": {\n \"& .MuiOutlinedInput-root\": {\n padding: \"0px\"\n }\n },\n \"& .MuiOutlinedInput-root\": {\n borderRadius: \"6px\",\n position: \"relative\",\n backgroundColor: \"#FFFFFF\",\n color: \"#333333\",\n border: \"1px solid #DDDDDD\",\n fontSize: \"16px\",\n padding: \"0px\",\n margin: \"3px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n transition: \"all 0.16s ease-in-out\",\n \"& .MuiAutocomplete-input\": {\n padding: \"6px 4px 6px 11px\"\n }\n },\n \"& fieldset\": {\n display: \"none\"\n },\n \"& label\": {\n color: \"#838383 !important\",\n fontSize: \"21px\",\n fontFamily: \"Source Sans Pro, sans-serif\",\n paddingLeft: \"4px\",\n left: \"-13px\",\n top: \"-15px\",\n \"& .MuiFormLabel-asterisk\": {\n color: theme.palette.error.main\n }\n },\n \"& .MuiAutocomplete-popupIndicator\": {\n transition: \"all 0.25s ease-in-out\",\n color: \"#AAAAAA\"\n }\n },\n datePicker: {\n fontFamily: \"Source Sans Pro\",\n width: \"250px\",\n color: \"#666666\",\n borderRadius: \"6px\",\n \"& input\": {\n padding: \"5px 10px 7px 10px\",\n fontFamily: \"Source Sans Pro\"\n },\n \"& fieldset\": {\n borderColor: \"#DDDDDD\",\n \"& legend\": {\n display: \"none\"\n }\n },\n \"& button\": {\n padding: \"0px\",\n transform: \"translate(-2px, -1.5px)\",\n \"&:hover\": {\n background: \"transparent\",\n \"& svg\": {\n color: \"#888888\"\n }\n }\n },\n \"& .MuiInputAdornment-root\": {\n marginLeft: \"0px\"\n },\n \"& svg\": {\n color: \"#AAAAAA\"\n }\n },\n editStep: {\n position: \"fixed\",\n fontSize: \"13px\",\n paddingLeft: \"1px\",\n cursor: \"pointer\"\n },\n modalHeaderContent: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: \"#727272\",\n marginBottom: \"1.75rem\",\n lineHeight: \"2rem\"\n },\n stepNumberGreen: {\n width: \"2rem\",\n height: \"2rem\",\n borderRadius: \"1rem\",\n backgroundColor: \"#5BC4BF\",\n color: \"#FFFFFF\",\n textAlign: \"center\",\n alignItems: \"center\",\n fontWeight: \"700\",\n display: \"grid\"\n },\n stepNumberGrey: {\n width: \"2rem\",\n height: \"2rem\",\n borderRadius: \"1rem\",\n backgroundColor: \"#DDDDDD\",\n color: \"#727272\",\n textAlign: \"center\",\n alignItems: \"center\",\n fontWeight: \"700\",\n display: \"grid\"\n },\n verticleLine: {\n width: \"1px\",\n backgroundColor: \"#DDDDDD\",\n marginLeft: \"0.97rem\",\n height: \"100%\"\n },\n verticleLineWhite: {\n width: \"1px\",\n backgroundColor: \"#FFFFFF\",\n marginLeft: \"0.97rem\",\n height: \"100%\"\n },\n modalContent: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"80%\",\n overflowY: \"auto\",\n margin: \"46px 0px\"\n },\n modalContentStep3: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"91%\",\n overflowY: \"auto\",\n marginBottom: \"25px\"\n },\n errorBox: {\n color: theme.palette.error.main,\n fontFamily: \"Source Sans Pro, sans-serif\",\n fontSize: \"13px\",\n position: \"absolute\",\n bottom: \"-30px\",\n height: \"2rem\",\n left: \"4px\"\n },\n modalFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n width: \"100%\",\n justifyContent: \"flex-end\",\n columnGap: \"20px\"\n },\n modalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"26px\",\n width: \"100%\"\n },\n modalConfirmationButton: __spreadProps(__spreadValues({}, modalConfirmationButtonCommonStyles), {\n padding: \"8px 14px\"\n }),\n modalEditButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"rgb(91,196,191)\",\n background: \"rgb(91,196,191,0.12)\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"8px 14px\",\n \"&:hover\": {\n backgroundColor: \"#5BC4BF\",\n color: \"#FFFFFF\",\n boxShadow: \"none\"\n }\n },\n modalCancelButton: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n width: \"100px\",\n textTransform: \"none\",\n textDecoration: \"underline\",\n color: theme.palette.error.main,\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n padding: \"5px 0px\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\",\n textDecoration: \"none\",\n boxShadow: \"none\"\n }\n },\n fullWidthFieldContainer: {\n maxWidth: \"630px\",\n width: \"100%\",\n display: \"flex\",\n flexDirection: \"column\",\n marginBottom: \"26px\"\n },\n fullWidthField: {\n width: \"100%\",\n marginBottom: \"26px\"\n },\n uploadSection: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"100%\",\n \"& h3\": {\n color: \"#939393\",\n fontSize: \"19px\",\n fontWeight: \"Bold\",\n marginBottom: \"14px\"\n }\n },\n uploadContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n margin: \"2px\",\n marginBottom: \"24px\",\n rowGap: \"8px\",\n fontSize: \"17px\",\n fontWeight: \"600\",\n color: \"#AAAAAA\"\n },\n statusClamp,\n statusColour: {\n position: \"absolute\",\n height: \"6px\",\n width: \"6px\",\n borderRadius: \"50%\",\n top: \"calc(50% - 3px)\",\n left: \"10px\"\n },\n noDropdown: {\n border: \"1px solid #FFFFFF\",\n \"& .status-dropdown-full\": {\n border: \"1px solid #FFFFFF\"\n },\n \"&::after\": {\n display: \"none\"\n }\n },\n noStatuses: {\n width: \"100%\",\n paddingLeft: \"18px\",\n display: \"flex\"\n },\n statusDropdown: {\n border: \"1px solid #CCCCCC\",\n borderRadius: \"6px\",\n cursor: \"pointer\",\n \"&::after\": {\n display: \"block\"\n }\n },\n statusDropdownItem: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"13px\",\n padding: \"6px 12px\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"#F1F1F1\"\n }\n },\n statusDropdownItems: {\n \"& .MuiPaper-root\": {\n width: \"200px\",\n maxHeight: \"250px\",\n overflowY: \"auto\",\n borderRadius: \"6px\",\n marginTop: \"6px\"\n }\n },\n statusLoader: {\n color: theme.palette.primary.main,\n position: \"absolute\",\n zIndex: \"4\",\n top: \"calc(50% - 9px)\",\n left: \"calc(50% - 9px)\"\n },\n applicationStatus: {\n \"& span\": {\n cursor: \"pointer\"\n }\n },\n formCheckbox: {\n color: \"#ddd !important\",\n \"& .MuiSvgIcon-root\": {\n fontSize: \"20px\"\n },\n \"&.Mui-checked\": {\n color: \"#15C7C0 !important\"\n }\n },\n actionModalFormLine: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"26px\",\n width: \"100%\",\n marginLeft: \"12px\"\n },\n actionModalHeader: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"28px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n marginLeft: \"12px\"\n },\n actionsModalReducedPadding: __spreadProps(__spreadValues({}, actionsModalReducedPaddingCommonStyles), {\n maxWidth: \"950px\"\n }),\n modalSendButton,\n selectedApplicantsTable: __spreadProps(__spreadValues({}, selectedApplicantsTableStyles), {\n minWidth: \"650px\",\n \"td, th, tr, thead\": __spreadProps(__spreadValues({}, selectedApplicantsTableRowStyles), {\n padding: \"5px 8px 5px 0\"\n })\n }),\n selectedApplicantsTableHeader,\n candidateSearch: __spreadProps(__spreadValues({}, candidateSearchCommonStyles), {\n \"& fieldset\": {\n borderColor: \"#6DB5B1\",\n backgroundColor: \"#AAAAAA09\"\n },\n \"&:hover\": {\n \"& fieldset\": {\n borderColor: \"#DADEE0 !important\"\n }\n }\n }),\n iconGrey: {\n color: \"#666666\",\n fontSize: \"28px\"\n },\n questionsTitle: {\n color: theme.palette.primary.main,\n fontSize: \"13px\",\n fontWeight: \"bold\",\n paddingBottom: \"5px\"\n },\n weightValue: {\n fontSize: \"13px\",\n textAlign: \"center\"\n },\n iconGreen: {\n color: theme.palette.success.main,\n fontSize: \"1.25rem\",\n margin: \"auto\",\n display: \"flex\"\n },\n iconGreenResources: {\n color: theme.palette.success.main,\n fontSize: \"1.25rem\",\n marginLeft: \"0.5rem\",\n display: \"flex\"\n },\n iconRed: {\n color: theme.palette.error.main,\n fontSize: \"1.25rem\",\n margin: \"auto\",\n display: \"flex\"\n },\n questionsWrapper: {\n display: \"flex\",\n padding: \"12px 18px 0 18px\",\n background: \"#F3F3F3\",\n marginBottom: \"1.75rem\",\n borderRadius: \"6px\"\n },\n questionInput: {\n \"& span\": {\n fontSize: \"14px !Important\"\n }\n },\n previewContainer: {\n marginTop: \"1rem\",\n \"& h3\": {\n marginBottom: \"1rem\",\n marginTop: \".3rem\",\n color: \"#727272\",\n fontSize: \"16px\"\n }\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport moment from \"moment\";\nimport { SortableColumnId } from \"../Job/types\";\nimport { convertToGroupAndTabIndex, convertToPanelIndex, TabGroup } from \"../EditJob/tabIndexUtils\";\nexport const jobsConfig = {\n sortableColumnsDefaults: [\n {\n id: \"reference\",\n label: \"Reference\",\n sortable: false,\n canToggle: false,\n enabled: true\n },\n {\n id: \"title\",\n label: \"Title\",\n sortable: true,\n canToggle: false,\n enabled: true\n },\n {\n id: \"published_at\",\n label: \"Published\",\n sortable: true,\n canToggle: true,\n enabled: false\n },\n {\n id: \"created_at\",\n label: \"Created\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: \"expires_at\",\n label: \"Expiry\",\n sortable: true,\n canToggle: true,\n enabled: false\n },\n {\n id: \"applications_count\",\n label: \"Applications\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: \"state\",\n label: \"State\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: \"status\",\n label: \"Status\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: \"entity\",\n label: \"Entity\",\n sortable: true,\n canToggle: true,\n enabled: true\n },\n {\n id: \"location\",\n label: \"Location\",\n sortable: false,\n canToggle: true,\n enabled: false\n },\n {\n id: \"assigned_user\",\n label: \"Assigned User\",\n sortable: false,\n canToggle: true,\n enabled: false\n },\n {\n id: \"recruitment_ad_user\",\n label: \"RM User\",\n sortable: false,\n canToggle: true,\n enabled: false\n },\n {\n id: SortableColumnId.NOTES,\n label: \"Notes\",\n sortable: false,\n canToggle: true,\n enabled: false\n }\n ],\n headers: [\n {\n name: \"reference\",\n label: \"Reference\"\n },\n {\n name: \"title\",\n label: \"Title\"\n },\n {\n name: \"published_at\",\n label: \"Published\"\n },\n {\n name: \"created_at\",\n label: \"Created\"\n },\n {\n name: \"expires_at\",\n label: \"Expiry\"\n },\n {\n name: \"applications_count\",\n label: \"Applications\"\n },\n {\n name: \"state\",\n label: \"State\"\n },\n {\n name: \"status\",\n label: \"Status\"\n },\n {\n name: \"entity\",\n label: \"Entity\"\n },\n {\n name: \"location\",\n label: \"Location\"\n },\n {\n name: \"assigned_user\",\n label: \"Assigned User\"\n },\n {\n name: \"recruitment_ad_user\",\n label: \"RM User\"\n },\n {\n name: \"notes\",\n label: \"Notes\"\n }\n ],\n archivedHeaders: [\n {\n name: \"reference\",\n label: \"Reference\"\n },\n {\n name: \"title\",\n label: \"Title\"\n },\n {\n name: \"published_at\",\n label: \"Published\"\n },\n {\n name: \"created_at\",\n label: \"Created\"\n },\n {\n name: \"expires_at\",\n label: \"Expiry\"\n },\n {\n name: \"applications_count\",\n label: \"Applications\"\n },\n {\n name: \"state\",\n label: \"State\"\n },\n {\n name: \"entity\",\n label: \"Entity\"\n },\n {\n name: \"location\",\n label: \"Location\"\n },\n {\n name: \"assigned_user\",\n label: \"Assigned User\"\n },\n {\n name: \"recruitment_ad_user\",\n label: \"RM User\"\n }\n ],\n dropdownOptions: [\n {\n name: \"published_at\",\n label: \"Published\"\n },\n {\n name: \"created_at\",\n label: \"Created\"\n },\n {\n name: \"expires_at\",\n label: \"Expiry\"\n },\n {\n name: \"applications_count\",\n label: \"Applications\"\n },\n {\n name: \"state\",\n label: \"State\"\n },\n {\n name: \"status\",\n label: \"Status\"\n },\n {\n name: \"entity\",\n label: \"Entity\"\n },\n {\n name: \"location\",\n label: \"Location\"\n },\n {\n name: \"assigned_user\",\n label: \"Assigned User\"\n },\n {\n name: \"recruitment_ad_user\",\n label: \"RM User\"\n },\n {\n name: \"notes\",\n label: \"Notes\"\n }\n ],\n archivedDropdownOptions: [\n {\n name: \"published_at\",\n label: \"Published\"\n },\n {\n name: \"created_at\",\n label: \"Created\"\n },\n {\n name: \"expires_at\",\n label: \"Expiry\"\n },\n {\n name: \"applications_count\",\n label: \"Applications\"\n },\n {\n name: \"state\",\n label: \"State\"\n },\n {\n name: \"entity\",\n label: \"Entity\"\n },\n {\n name: \"location\",\n label: \"Location\"\n },\n {\n name: \"assigned_user\",\n label: \"Assigned User\"\n },\n {\n name: \"recruitment_ad_user\",\n label: \"RM User\"\n }\n ],\n fieldDropdownSetting: {\n published_at: true,\n created_at: false,\n expires_at: true,\n applications_count: true,\n state: true,\n status: false,\n location: true,\n entity: true,\n assigned_user: false,\n recruitment_ad_user: false,\n notes: false\n },\n defaultFilterOptions: {\n state: [\n {\n value: \"published\",\n name: \"Published\"\n },\n {\n value: \"unpublished\",\n name: \"Unpublished\"\n },\n {\n value: \"draft\",\n name: \"Draft\"\n },\n {\n value: \"saved\",\n name: \"Saved\"\n },\n {\n value: \"closed\",\n name: \"Closed\"\n }\n ],\n entity: [\n {\n id: 1,\n name: \"No Entities Found\"\n }\n ],\n status: [\n {\n name: \"No Statuses Found\"\n }\n ],\n location: [\n {\n name: \"No Locations Found\"\n }\n ],\n assigned_user: [\n {\n id: 1,\n name: \"No Assigned Users Found\"\n }\n ],\n recruitment_ad_user: [\n {\n id: 0,\n name: \"No RM Users Found\"\n }\n ]\n },\n currentStateOptions: {\n state: [\n {\n value: \"published\",\n name: \"Published\"\n },\n {\n value: \"unpublished\",\n name: \"Unpublished\"\n },\n {\n value: \"draft\",\n name: \"Draft\"\n },\n {\n value: \"saved\",\n name: \"Saved\"\n },\n {\n value: \"closed\",\n name: \"Closed\"\n }\n ]\n },\n archivedStateOptions: {\n state: [\n {\n value: \"saved\",\n name: \"Saved\"\n },\n {\n value: \"closed\",\n name: \"Closed\"\n }\n ]\n }\n};\nexport const applicantDetailsDefault = {\n firstName: { error: \"\", required: true, value: \"\" },\n lastName: { error: \"\", required: true, value: \"\" },\n email: { error: \"\", required: true, value: \"\" },\n phone: { error: \"\", required: true, value: \"\" },\n addressFirstLine: { error: \"\", required: true, value: \"\" },\n addressSecondLine: { error: \"\", required: false, value: \"\" },\n country: { error: \"\", required: true, value: \"\" },\n region: { error: \"\", required: true, value: \"\" },\n employeeId: { error: \"\", required: false, value: \"\" }\n};\nexport const createJobDefault = {\n reference: { error: \"\", required: true, value: \"\" },\n title: { error: \"\", required: true, value: \"\" },\n expires_at: { error: \"\", required: true, value: null },\n location: { error: \"\", required: true, value: \"\" }\n};\nexport const editGeneralJobDefault = (job) => {\n var _a, _b;\n return {\n reference: { error: \"\", required: true, value: job.reference },\n title: { error: \"\", required: true, value: job.title },\n expires_at: { error: \"\", required: true, value: job.expires_at },\n time: { error: \"\", required: true, value: job.expires_at },\n location: { error: \"\", required: true, value: job.location },\n employment_status: { error: \"\", required: false, value: job.employment_status },\n salary_info: { error: \"\", required: false, value: job.salary_info },\n number_of_vacancies: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.number_of_vacancies) ? job.number_of_vacancies : null\n },\n from_email: { error: \"\", required: false, value: (job == null ? void 0 : job.from_email) ? job.from_email : \"\" },\n external_approval_id: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.external_approval_id) ? job.external_approval_id : \"\"\n },\n requisitions: { error: \"\", required: false, value: (job == null ? void 0 : job.requisitions) ? job.requisitions : [] },\n time_zone: { error: \"\", required: false, value: (job == null ? void 0 : job.time_zone) ? job.time_zone : null },\n brand: { error: \"\", required: false, value: (job == null ? void 0 : job.brand) ? job.brand : null },\n locale: { error: \"\", required: false, value: (job == null ? void 0 : job.locale) ? localDefaults(job) : [] },\n country_id: { error: \"\", required: false, value: (job == null ? void 0 : job.country_id) ? job == null ? void 0 : job.country_id : null },\n options: (job == null ? void 0 : job.options) ? additionalOptionsDefaults(job) : null,\n classification_list: ((_a = job == null ? void 0 : job.classifications) == null ? void 0 : _a.length) > 0 ? job.classifications : [],\n classification_ids: ((_b = job == null ? void 0 : job.classifications) == null ? void 0 : _b.length) > 0 ? setClassificationIds(job) : [],\n classifications: { error: \"\", required: false, value: null },\n sub_classifications: { error: \"\", required: false, value: null },\n auto_rater: { error: \"\", required: false, value: (job == null ? void 0 : job.auto_rater) ? job.auto_rater : null },\n assigned_user: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.assigned_user) ? job.assigned_user : null\n },\n smart_form_recipients: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.smart_form_recipients) ? job.smart_form_recipients : []\n },\n pinned_users: { error: \"\", required: false, value: (job == null ? void 0 : job.pinned_users) ? job.pinned_users : [] },\n recipients: { error: \"\", required: false, value: (job == null ? void 0 : job.recipients) ? job.recipients : [] },\n salesperson: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.salesperson) ? `${job.salesperson.id} - ${job.salesperson.firstname} ${job.salesperson.lastname}` : null\n },\n rm_team_member: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.rm_team_member) ? `${job.rm_team_member.id} - ${job.rm_team_member.firstname} ${job.rm_team_member.lastname}` : null\n },\n external: job.external,\n internal: job.internal,\n privacy_acknowledgement: job.privacy_acknowledgement,\n entity_privacy_acknowledgement: job.entity_privacy_acknowledgement,\n entity_privacy_acknowledgement_link: job.entity_privacy_acknowledgement_link,\n linkedin_listing_opt_in: job.linkedin_listing_opt_in,\n address_state: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.address_state) ? job == null ? void 0 : job.address_state : \"\"\n },\n postcode: { error: \"\", required: false, value: (job == null ? void 0 : job.postcode) ? job == null ? void 0 : job.postcode : \"\" },\n tag_list: { error: \"\", required: false, value: (job == null ? void 0 : job.tag_list) ? job == null ? void 0 : job.tag_list : \"\" }\n };\n};\nexport const editPanelWorkflowDefault = (job) => {\n return {\n panel_chairs: { error: \"\", required: false, value: (job == null ? void 0 : job.panel_chairs) ? job.panel_chairs : [] },\n panel_members: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.panel_members) ? job.panel_members : []\n },\n panel_observers: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.panel_observers) ? job.panel_observers : []\n }\n };\n};\nexport const editGoogleScriptDefault = (job) => {\n return {\n google_conversion_script: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.google_conversion_script) ? job.google_conversion_script : \"\"\n }\n };\n};\nexport const editRevolveDefault = (job) => {\n return {\n revolve_position_title: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.revolve_position_title) ? job.revolve_position_title : \"\"\n }\n };\n};\nexport const editRequisitionInfoDefault = (job) => {\n return {\n requisition_info: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.requisition_info) ? job.requisition_info : \"\"\n }\n };\n};\nexport const editDescriptionDefault = (job) => {\n return {\n summary: { error: \"\", required: false, value: (job == null ? void 0 : job.summary) ? job.summary : \"\" },\n description: { error: \"\", required: false, value: (job == null ? void 0 : job.description) ? job.description : \"\" }\n };\n};\nexport const editTemplateDefault = (job) => {\n return {\n template_enabled: job == null ? void 0 : job.template_enabled,\n template: { error: \"\", required: false, value: (job == null ? void 0 : job.template) ? job.template : \"\" }\n };\n};\nexport const editSourcesDefault = (job) => {\n return {\n sources: { error: \"\", required: false, value: (job == null ? void 0 : job.sources) ? job.sources : [] }\n };\n};\nexport const editAttachmentsDefault = (job) => {\n return {\n candidate_attachments: {\n error: \"\",\n required: false,\n value: (job == null ? void 0 : job.candidate_attachments) ? job.candidate_attachments : []\n }\n };\n};\nexport const newJobsConfig = {\n resource_field_choices: [\n {\n id: \"resources[description]\",\n name: \"Description\",\n position: 0\n },\n {\n id: \"resources[questions]\",\n name: \"Questions\",\n position: 1\n },\n {\n id: \"resources[attachments]\",\n name: \"Attachments\",\n position: 2\n },\n {\n id: \"resources[sources]\",\n name: \"Sources\",\n position: 3\n },\n {\n id: \"resources[auto_actions]\",\n name: \"Auto-Actions\",\n position: 4\n },\n {\n id: \"resources[options]\",\n name: \"Options\",\n position: 5\n },\n {\n id: \"resources[visibility]\",\n name: \"Visibility\",\n position: 6\n }\n ]\n};\nexport const resourceDefault = {\n \"resources[description]\": true,\n \"resources[questions]\": true,\n \"resources[attachments]\": true,\n \"resources[sources]\": true,\n \"resources[auto_actions]\": true,\n \"resources[options]\": true,\n \"resources[visibility]\": true\n};\nexport const additionalOptionsDefaults = (job) => {\n return __spreadProps(__spreadValues({}, job.options), {\n indeed_apply: job.options.indeed_apply === \"1\",\n indeed_salary: job.options.indeed_salary === \"1\",\n sponsor_on_indeed: job.options.sponsor_on_indeed === \"1\",\n blind_rating: job.options.blind_rating === \"1\",\n hide_rating_activity: job.options.hide_rating_activity === \"1\",\n auto_ratings: job.options.auto_ratings === \"1\",\n title_field: job.options.title_field === \"1\",\n gender_field: job.options.gender_field === \"1\",\n employee_id_field: job.options.employee_id_field === \"1\",\n linkedin_field: job.options.linkedin_field === \"1\",\n linkedin_listing_opt_in: job.linkedin_listing_opt_in,\n job_expiry_email_reminder: job.options.job_expiry_email_reminder === \"1\"\n });\n};\nexport const changeURL = (newValue, search, urlParams) => {\n if (search) {\n const tabIndex = convertToGroupAndTabIndex(newValue);\n switch (tabIndex.group) {\n case TabGroup.JOB_INFORMATION:\n switch (tabIndex.index) {\n case 0:\n return \"\";\n case 1:\n return \"?description\";\n case 2:\n return \"?template\";\n case 3:\n return \"?questions\";\n case 4:\n return \"?sources\";\n }\n break;\n case TabGroup.CANDIDATE_SETTINGS:\n switch (tabIndex.index) {\n case 0:\n return \"?attachments\";\n }\n break;\n case TabGroup.AUTOMATION:\n switch (tabIndex.index) {\n case 0:\n return \"?auto-statuses\";\n case 1:\n return \"?status-transitions\";\n case 2:\n return \"?auto-forward\";\n case 3:\n return \"?auto-email-reply\";\n case 4:\n return \"?auto-sms-reply\";\n case 5:\n return \"?auto-sms-forward\";\n }\n break;\n case TabGroup.ADVANCED:\n switch (tabIndex.index) {\n case 0:\n return \"?requisition-info\";\n case 1:\n return \"?configure-application-hr-questions\";\n case 2:\n return \"?automated-testgrid\";\n case 3:\n return \"?revolve\";\n case 4:\n return \"?google-conversion-script\";\n case 5:\n return \"?panel-workflow\";\n case 6:\n return \"?ai-studio\";\n }\n default:\n return \"\";\n }\n } else {\n switch (urlParams) {\n case \"?description\":\n return convertToPanelIndex(1, TabGroup.JOB_INFORMATION);\n case \"?template\":\n return convertToPanelIndex(2, TabGroup.JOB_INFORMATION);\n case \"?questions\":\n return convertToPanelIndex(3, TabGroup.JOB_INFORMATION);\n case \"?sources\":\n return convertToPanelIndex(4, TabGroup.JOB_INFORMATION);\n case \"?attachments\":\n return convertToPanelIndex(0, TabGroup.CANDIDATE_SETTINGS);\n case \"?auto-statuses\":\n return convertToPanelIndex(0, TabGroup.AUTOMATION);\n case \"?status-transitions\":\n return convertToPanelIndex(1, TabGroup.AUTOMATION);\n case \"?auto-forward\":\n return convertToPanelIndex(2, TabGroup.AUTOMATION);\n case \"?auto-email-reply\":\n return convertToPanelIndex(3, TabGroup.AUTOMATION);\n case \"?auto-sms-reply\":\n return convertToPanelIndex(4, TabGroup.AUTOMATION);\n case \"?auto-sms-forward\":\n return convertToPanelIndex(5, TabGroup.AUTOMATION);\n case \"?requisition-info\":\n return convertToPanelIndex(0, TabGroup.ADVANCED);\n case \"?configure-application-hr-questions\":\n return convertToPanelIndex(1, TabGroup.ADVANCED);\n case \"?automated-testgrid\":\n return convertToPanelIndex(2, TabGroup.ADVANCED);\n case \"?revolve\":\n return convertToPanelIndex(3, TabGroup.ADVANCED);\n case \"?google-conversion-script\":\n return convertToPanelIndex(4, TabGroup.ADVANCED);\n case \"?panel-workflow\":\n return convertToPanelIndex(5, TabGroup.ADVANCED);\n case \"?ai-studio\":\n return convertToPanelIndex(6, TabGroup.ADVANCED);\n default:\n return 1;\n }\n }\n};\nexport const editJobObject = (candidateAttachments, generalTabJobData, descriptionTabJobData, templateTabJobData, revolveTabJobData, googleScriptTabJobData, panelWorkflowTabJobData, sourceListIds) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z, __, _$, _aa, _ba, _ca, _da, _ea, _fa, _ga, _ha, _ia, _ja, _ka, _la, _ma, _na, _oa, _pa, _qa, _ra, _sa, _ta, _ua, _va, _wa, _xa, _ya, _za, _Aa, _Ba, _Ca, _Da;\n const attachmentObject = {};\n candidateAttachments == null ? void 0 : candidateAttachments.map((attachment) => {\n attachmentObject[attachment.id] = {\n name: attachment.label,\n mandatory: attachment.required ? \"1\" : \"0\"\n };\n });\n const expiryDate = (_a = generalTabJobData == null ? void 0 : generalTabJobData.expires_at) == null ? void 0 : _a.value;\n const newDateUTC = moment(expiryDate).utc().format(\"YYYY-MM-DD\");\n const newTimeUTC = moment(expiryDate).utc().format(\"HH:mm\");\n const updatedExpiryDate = `${newDateUTC}T${newTimeUTC}:00Z`;\n return {\n reference: (_b = generalTabJobData == null ? void 0 : generalTabJobData.reference) == null ? void 0 : _b.value,\n title: (_c = generalTabJobData == null ? void 0 : generalTabJobData.title) == null ? void 0 : _c.value,\n expires_at: updatedExpiryDate,\n location: (_d = generalTabJobData == null ? void 0 : generalTabJobData.location) == null ? void 0 : _d.value,\n external_requisition_id: ((_e = generalTabJobData == null ? void 0 : generalTabJobData.external_approval_id) == null ? void 0 : _e.value) ? generalTabJobData.external_approval_id.value : null,\n salesperson_id: ((_f = generalTabJobData == null ? void 0 : generalTabJobData.salesperson) == null ? void 0 : _f.value) ? generalTabJobData.salesperson.value.split(\" -\")[0] : null,\n // \"recruitment_ad_user_id\": 42,\n assigned_user_id: ((_g = generalTabJobData == null ? void 0 : generalTabJobData.assigned_user) == null ? void 0 : _g.value) ? generalTabJobData.assigned_user.value.id : null,\n pinned_users_ids: ((_h = generalTabJobData == null ? void 0 : generalTabJobData.pinned_users) == null ? void 0 : _h.value) ? ((_j = (_i = generalTabJobData == null ? void 0 : generalTabJobData.pinned_users) == null ? void 0 : _i.value) == null ? void 0 : _j.length) > 0 ? (_l = (_k = generalTabJobData == null ? void 0 : generalTabJobData.pinned_users) == null ? void 0 : _k.value) == null ? void 0 : _l.map((x) => x.id) : [] : [],\n recipient_ids: ((_m = generalTabJobData == null ? void 0 : generalTabJobData.recipients) == null ? void 0 : _m.value) ? ((_o = (_n = generalTabJobData == null ? void 0 : generalTabJobData.recipients) == null ? void 0 : _n.value) == null ? void 0 : _o.length) > 0 ? (_q = (_p = generalTabJobData == null ? void 0 : generalTabJobData.recipients) == null ? void 0 : _p.value) == null ? void 0 : _q.map((x) => x.id) : [] : [],\n time_zone: (_r = generalTabJobData == null ? void 0 : generalTabJobData.time_zone) == null ? void 0 : _r.value,\n locale: ((_t = (_s = generalTabJobData == null ? void 0 : generalTabJobData.locale) == null ? void 0 : _s.value) == null ? void 0 : _t.label) ? (_u = generalTabJobData.locale.value) == null ? void 0 : _u.value : (_v = generalTabJobData == null ? void 0 : generalTabJobData.locale) == null ? void 0 : _v.value,\n country_id: ((_w = generalTabJobData == null ? void 0 : generalTabJobData.country_id) == null ? void 0 : _w.value) ? (_y = (_x = generalTabJobData == null ? void 0 : generalTabJobData.country_id) == null ? void 0 : _x.value) == null ? void 0 : _y.id : (_z = generalTabJobData == null ? void 0 : generalTabJobData.country_id) == null ? void 0 : _z.value,\n from_email: (_A = generalTabJobData == null ? void 0 : generalTabJobData.from_email) == null ? void 0 : _A.value,\n employment_status: (_B = generalTabJobData == null ? void 0 : generalTabJobData.employment_status) == null ? void 0 : _B.value,\n number_of_vacancies: (_C = generalTabJobData == null ? void 0 : generalTabJobData.number_of_vacancies) == null ? void 0 : _C.value,\n postcode: (_D = generalTabJobData == null ? void 0 : generalTabJobData.postcode) == null ? void 0 : _D.value,\n address_state: (_E = generalTabJobData == null ? void 0 : generalTabJobData.address_state) == null ? void 0 : _E.value,\n brand_id: ((_F = generalTabJobData == null ? void 0 : generalTabJobData.brand) == null ? void 0 : _F.value) ? generalTabJobData.brand.value.id : null,\n tag_list: (_G = generalTabJobData == null ? void 0 : generalTabJobData.tag_list) == null ? void 0 : _G.value,\n auto_rater_id: (_I = (_H = generalTabJobData == null ? void 0 : generalTabJobData.auto_rater) == null ? void 0 : _H.value) == null ? void 0 : _I.id,\n salary_info: (_J = generalTabJobData == null ? void 0 : generalTabJobData.salary_info) == null ? void 0 : _J.value,\n requisition_ids: ((_K = generalTabJobData == null ? void 0 : generalTabJobData.requisitions) == null ? void 0 : _K.value) ? ((_M = (_L = generalTabJobData == null ? void 0 : generalTabJobData.requisitions) == null ? void 0 : _L.value) == null ? void 0 : _M.length) > 0 ? (_O = (_N = generalTabJobData == null ? void 0 : generalTabJobData.requisitions) == null ? void 0 : _N.value) == null ? void 0 : _O.map((x) => x.id) : [] : [],\n smart_form_recipients_ids: ((_P = generalTabJobData == null ? void 0 : generalTabJobData.smart_form_recipients) == null ? void 0 : _P.value) ? ((_R = (_Q = generalTabJobData == null ? void 0 : generalTabJobData.smart_form_recipients) == null ? void 0 : _Q.value) == null ? void 0 : _R.length) > 0 ? (_T = (_S = generalTabJobData == null ? void 0 : generalTabJobData.smart_form_recipients) == null ? void 0 : _S.value) == null ? void 0 : _T.map((x) => x.id) : [] : [],\n options: {\n indeed_apply: ((_U = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _U.indeed_apply) ? \"1\" : \"0\",\n indeed_salary: ((_V = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _V.indeed_salary) ? \"1\" : \"0\",\n sponsor_on_indeed: ((_W = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _W.sponsor_on_indeed) ? \"1\" : \"0\",\n blind_rating: ((_X = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _X.blind_rating) ? \"1\" : \"0\",\n hide_rating_activity: ((_Y = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _Y.hide_rating_activity) ? \"1\" : \"0\",\n auto_ratings: ((_Z = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _Z.auto_ratings) ? \"1\" : \"0\",\n title_field: ((__ = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : __.title_field) ? \"1\" : \"0\",\n gender_field: ((_$ = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _$.gender_field) ? \"1\" : \"0\",\n employee_id_field: ((_aa = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _aa.employee_id_field) ? \"1\" : \"0\",\n linkedin_field: ((_ba = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _ba.linkedin_field) ? \"1\" : \"0\",\n privacy_acknowledgement: (generalTabJobData == null ? void 0 : generalTabJobData.privacy_acknowledgement) ? \"1\" : \"0\",\n attachments: attachmentObject || {},\n job_expiry_email_reminder: ((_ca = generalTabJobData == null ? void 0 : generalTabJobData.options) == null ? void 0 : _ca.job_expiry_email_reminder) ? \"1\" : \"0\"\n },\n external: (generalTabJobData == null ? void 0 : generalTabJobData.external) ? \"1\" : \"0\",\n linkedin_listing_opt_in: (generalTabJobData == null ? void 0 : generalTabJobData.linkedin_listing_opt_in) ? \"1\" : \"0\",\n internal: (generalTabJobData == null ? void 0 : generalTabJobData.internal) ? \"1\" : \"0\",\n recruitment_ad_user_id: ((_da = generalTabJobData == null ? void 0 : generalTabJobData.rm_team_member) == null ? void 0 : _da.value) ? (_ea = generalTabJobData == null ? void 0 : generalTabJobData.rm_team_member) == null ? void 0 : _ea.value.split(\" -\")[0] : null,\n summary: (_fa = descriptionTabJobData == null ? void 0 : descriptionTabJobData.summary) == null ? void 0 : _fa.value,\n description: (_ga = descriptionTabJobData == null ? void 0 : descriptionTabJobData.description) == null ? void 0 : _ga.value,\n template_enabled: templateTabJobData == null ? void 0 : templateTabJobData.template_enabled,\n template: (_ha = templateTabJobData == null ? void 0 : templateTabJobData.template) == null ? void 0 : _ha.value,\n classification_ids: (generalTabJobData == null ? void 0 : generalTabJobData.classification_ids) ? generalTabJobData == null ? void 0 : generalTabJobData.classification_ids : [],\n application_recipient_ids: ((_ia = generalTabJobData == null ? void 0 : generalTabJobData.application_recipient) == null ? void 0 : _ia.value) ? ((_ka = (_ja = generalTabJobData == null ? void 0 : generalTabJobData.application_recipient) == null ? void 0 : _ja.value) == null ? void 0 : _ka.length) > 0 ? (_ma = (_la = generalTabJobData == null ? void 0 : generalTabJobData.application_recipient) == null ? void 0 : _la.value) == null ? void 0 : _ma.map((x) => x.id) : [] : [],\n revolve_position_title: (_na = revolveTabJobData == null ? void 0 : revolveTabJobData.revolve_position_title) == null ? void 0 : _na.value,\n google_conversion_script: (_oa = googleScriptTabJobData == null ? void 0 : googleScriptTabJobData.google_conversion_script) == null ? void 0 : _oa.value,\n panel_chair_ids: ((_pa = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_chairs) == null ? void 0 : _pa.value) ? ((_ra = (_qa = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_chairs) == null ? void 0 : _qa.value) == null ? void 0 : _ra.length) > 0 ? (_ta = (_sa = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_chairs) == null ? void 0 : _sa.value) == null ? void 0 : _ta.map((x) => x.id) : [] : [],\n panel_member_ids: ((_ua = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_members) == null ? void 0 : _ua.value) ? ((_wa = (_va = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_members) == null ? void 0 : _va.value) == null ? void 0 : _wa.length) > 0 ? (_ya = (_xa = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_members) == null ? void 0 : _xa.value) == null ? void 0 : _ya.map((x) => x.id) : [] : [],\n panel_observer_ids: ((_za = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_observers) == null ? void 0 : _za.value) ? ((_Ba = (_Aa = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_observers) == null ? void 0 : _Aa.value) == null ? void 0 : _Ba.length) > 0 ? (_Da = (_Ca = panelWorkflowTabJobData == null ? void 0 : panelWorkflowTabJobData.panel_observers) == null ? void 0 : _Ca.value) == null ? void 0 : _Da.map((x) => x.id) : [] : [],\n source_ids: sourceListIds ? sourceListIds : []\n };\n};\nexport const editJobsConfig = (userPermissions, jobFeedActive) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;\n const additionalOptions = [\n {\n id: \"blind_rating\",\n name: \"Blind ratings\"\n }\n ];\n jobFeedActive && additionalOptions.unshift({\n id: \"sponsor_on_indeed\",\n name: \"Sponsor on Indeed (Must have city and state filled)\"\n });\n ((_a = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _a[\"Indeed Apply Option\"]) && additionalOptions.unshift({\n id: \"indeed_apply\",\n name: \"Use Indeed Apply\"\n });\n ((_b = userPermissions == null ? void 0 : userPermissions[\"Integrations\"]) == null ? void 0 : _b[\"Indeed Integration\"]) && additionalOptions.unshift({\n id: \"indeed_salary\",\n name: \"Send salary to Indeed\"\n });\n ((_c = userPermissions == null ? void 0 : userPermissions[\"Integrations\"]) == null ? void 0 : _c[\"LinkedIn\"]) && additionalOptions.push({\n id: \"linkedin_listing_opt_in\",\n name: \"Post to Linkedin\"\n });\n ((_d = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _d[\"Linkedin\"]) && additionalOptions.push({\n id: \"linkedin_field\",\n name: \"Show Linkedin\"\n });\n ((_e = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _e[\"Candidate Title\"]) && additionalOptions.push({\n id: \"title_field\",\n name: \"Show title field\"\n });\n ((_f = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _f[\"Candidate Employee ID\"]) && additionalOptions.push({\n id: \"employee_id_field\",\n name: \"Show employee ID field\"\n });\n ((_g = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _g[\"Candidate Gender\"]) && additionalOptions.push({\n id: \"gender_field\",\n name: \"Show gender field\"\n });\n ((_h = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _h[\"Auto Rating\"]) && additionalOptions.push({\n id: \"auto_ratings\",\n name: \"Auto ratings\"\n });\n ((_i = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _i[\"Hide Rating Activity\"]) && additionalOptions.push({\n id: \"hide_rating_activity\",\n name: \"Hide ratings activities\"\n });\n ((_j = userPermissions == null ? void 0 : userPermissions[\"Job Options\"]) == null ? void 0 : _j[\"Send Job Expiry Reminder Email\"]) && additionalOptions.push({\n id: \"job_expiry_email_reminder\",\n name: \"Send Job Expiry Reminder Email\"\n });\n return additionalOptions;\n};\nconst localDefaults = (job) => {\n var _a, _b;\n const data = [\n {\n value: \"en-au\",\n label: \"English/Australia\"\n },\n {\n value: \"en-ca\",\n label: \"English/Canada\"\n },\n {\n value: \"en-nz\",\n label: \"English/New Zealand\"\n },\n {\n value: \"en-sg\",\n label: \"English/Singapore\"\n },\n {\n value: \"en-uk\",\n label: \"English/United Kingdom\"\n },\n {\n value: \"en-us\",\n label: \"English/United States\"\n },\n {\n value: \"en-za\",\n label: \"English/South Africa\"\n },\n {\n value: \"fr-ca\",\n label: \"French/Canada\"\n }\n ];\n const i = data == null ? void 0 : data.findIndex((x) => (job == null ? void 0 : job.locale) === (x == null ? void 0 : x.value));\n if (i >= 0) return { label: (_a = data[i]) == null ? void 0 : _a.label, value: (_b = data[i]) == null ? void 0 : _b.value };\n else return null;\n};\nconst setClassificationIds = (job) => {\n var _a;\n return (_a = job == null ? void 0 : job.classifications) == null ? void 0 : _a.filter((child) => child == null ? void 0 : child.parent).map((sub) => sub == null ? void 0 : sub.id);\n};\nexport const emojiRegex = /(\\u00a9|\\u00ae|[\\u2000-\\u3300]|\\ud83c[\\ud000-\\udfff]|\\ud83d[\\ud000-\\udfff]|\\ud83e[\\ud000-\\udfff])/gi;\n","\"use strict\";\nimport { searchInput } from \"../shared/styleClasses\";\nexport const styles = {\n tabs: {\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n letterSpacing: \"0\",\n color: \"#939393\",\n textTransform: \"none\",\n minWidth: \"unset\",\n \"&:hover\": {\n color: \"#737373\"\n },\n \"&:focus\": {\n outline: \"none\"\n }\n },\n \"& button.Mui-selected\": {\n fontWeight: \"600\",\n color: \"#084D6D\"\n }\n },\n tabIndicator: {\n backgroundColor: \"#5BC4BF\",\n margin: \"0 16px\"\n },\n filtersRow: {\n display: \"flex\",\n alignItems: \"flex-end\",\n justifyContent: \"space-between\",\n marginBottom: \"30px\",\n columnGap: \"17px\"\n },\n jobPageContainer: {\n backgroundColor: \"#FFFFFF\",\n padding: \"40px\"\n },\n tabsContainer: {\n borderBottom: 1,\n borderColor: \"#EEEEEE\",\n marginBottom: \"46px\"\n },\n searchInput,\n jobPageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n marginBottom: \"26px\",\n padding: \"0px 16px\",\n \"& h1\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n fontSize: \"38px\",\n color: \"#666666\",\n marginTop: \"0\"\n }\n },\n multiposterContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"40px\"\n },\n iconButton: {\n border: \"1px solid #EAEEF0\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n width: \"69px\",\n height: \"60px\",\n \"& svg\": {\n fontSize: \"30px\",\n color: \"#084D6D\",\n transform: \"translateY(1px)\"\n }\n },\n iconButtonSelected: {\n backgroundColor: \"rgba(8,77,109,0.121)\"\n },\n toggleButtonGroup: {\n borderRadius: \"11px\",\n \"& .MuiToggleButton-root.Mui-selected\": {\n backgroundColor: \"#F3F3F3\",\n \"&:hover\": {\n backgroundColor: \"#F3F3F3\"\n }\n }\n },\n toggleButton: {\n padding: \"none !important\",\n borderRadius: \"11px\",\n width: \"125px\",\n height: \"47px\",\n borderColor: \"#F3F3F3\"\n },\n logoSize: {\n width: \"90px !important\",\n height: \"40px !important\"\n },\n toggleContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n position: \"absolute\"\n }\n};\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const classes = {\n headerContainer: {\n display: \"flex\",\n columnGap: \"36px\",\n alignItems: \"center\",\n height: \"91px\",\n width: \"fill-available\",\n zIndex: 1100,\n backgroundColor: \"#fff\",\n paddingLeft: \"48px\",\n position: \"relative\"\n },\n searchInput: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"20px\",\n fontWeight: \"regular\",\n height: \"54px\",\n paddingRight: \"20px\",\n \"& legend\": {\n display: \"none\"\n },\n \"& input\": {\n padding: \"0px 16px 0px 32px\",\n color: \"#000000\"\n },\n \"& fieldset\": {\n borderColor: \"#FFFFFF !important\"\n },\n \"&:hover\": {\n \"& fieldset\": {\n borderColor: \"#FFFFFF !important\"\n }\n }\n },\n searchDialog: {\n \"& .MuiDialog-container\": {\n alignItems: \"flex-start\"\n },\n \"& .MuiDialog-paper\": {\n top: \"60px\",\n borderRadius: \"32px\",\n width: \"600px\",\n boxShadow: \"unset\"\n }\n },\n switchEntityDialog: {\n \"& .MuiDialog-container\": {\n alignItems: \"flex-start\"\n },\n \"& .MuiDialog-paper\": {\n top: \"60px\",\n width: \"600px\",\n boxShadow: \"unset\",\n padding: \"10px 20px 30px 20px\"\n },\n \"& .MuiMenuItem-root\": {\n display: \"flex\"\n }\n },\n switchEntityButton: {\n width: \"auto\",\n color: \"#FFFFFF\",\n backgroundColor: \"#084D6D\",\n marginTop: \"20px\",\n \"&:hover\": {\n backgroundColor: \"#5BC4C0\"\n }\n },\n searchIcon: {\n fontSize: \"26px\",\n color: \"#666666\",\n cursor: \"pointer\"\n },\n clearSearch: {\n cursor: \"pointer\",\n fontSize: \"22px\",\n color: \"#939393\"\n },\n profileDropdownContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n columnGap: \"6px\"\n },\n profileAvatar: {\n minWidth: \"50px\",\n minHeight: \"50px\",\n borderRadius: \"50%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"#F5F5F5\",\n color: theme.palette.primary.main,\n fontSize: \"20px\",\n fontWeight: \"700\",\n textTransform: \"uppercase\"\n },\n avatarSmall: {\n minWidth: \"45px\",\n minHeight: \"45px\"\n },\n profileDropdownIcon: {\n color: theme.palette.primary.main,\n fontSize: \"22px\"\n },\n showButtonContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n columnGap: \"12px\",\n color: \"#666666\",\n fontWeight: \"600\",\n marginLeft: \"auto\"\n },\n hideButtonContainer: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"fixed\",\n zIndex: 1250,\n right: \"56px\",\n cursor: \"pointer\",\n color: \"#666666\",\n fontWeight: \"600\",\n marginLeft: \"auto\",\n transition: \"left 0.2s ease-in-out\"\n },\n profileDropdownMenuContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"256px\",\n padding: \"18px\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: \"6px\",\n boxShadow: \"0px 2px 14px 0px rgba(48, 90, 111, 0.16)\",\n marginTop: \"10px\",\n rowGap: \"18px\"\n },\n profileInformation: {\n display: \"flex\",\n alignItems: \"flex-start\",\n columnGap: \"12px\"\n },\n roleInformationWrapper: {\n display: \"flex\",\n alignItems: \"center\",\n fontSize: \"12px\"\n },\n roleInformation: {\n marginRight: \"6px\",\n maxWidth: \"120px\",\n color: \"#AAAAAA\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n textWrap: \"nowrap\"\n },\n profileNameAndEntityContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"8px\",\n \"& a\": {\n textDecoration: \"none\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n color: \"#AAAAAA\"\n }\n },\n profileName: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"600\",\n color: theme.palette.primary.main\n },\n profileDropdownMenuItemsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"8px\",\n \"& a\": {\n textDecoration: \"none\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n color: theme.palette.primary.main,\n fontWeight: \"600\",\n \"&:hover\": {\n textDecoration: \"none\"\n }\n }\n },\n profileDropdownMenuItem: {\n display: \"flex\",\n alignItems: \"center\",\n columnGap: \"24px\",\n cursor: \"pointer\",\n color: theme.palette.primary.main,\n padding: \"6px 8px\",\n borderRadius: \"6px\",\n \"&:hover\": {\n backgroundColor: \"#F5F5F5\"\n }\n },\n masqueradeAvatar: {\n backgroundColor: \"#D6DEE2\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"#C4D0D7\"\n }\n },\n breadcrumbContainer: {\n display: \"flex\",\n alignItems: \"center\",\n width: \"100%\",\n height: \"36px\",\n backgroundColor: \"#FFFFFF\",\n color: \"#939393\",\n overflowX: \"auto\"\n },\n homeIcon: {\n cursor: \"pointer\",\n color: \"#939393\",\n \"&:hover\": {\n color: theme.palette.primary.main\n }\n },\n breadcrumbs: {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"17px\",\n fontWeight: \"400\",\n color: \"#939393\",\n \"& a\": {\n color: \"#939393\"\n }\n },\n breadcrumbSeparator: {\n color: \"#939393\",\n fontSize: \"20px\"\n },\n uatBanner: {\n backgroundImage: 'url(\"/images/uat-alert-band.svg\")',\n height: \"20px\",\n backgroundColor: \"red\"\n },\n modalWrapper: {\n \"& .MuiDialogContent-root\": {\n padding: \"0 50px\"\n }\n }\n};\n","\"use strict\";\nexport const navbarWidths = {\n expanded: 220,\n collapsed: 82\n};\nexport const appMenuItems = (isRecruit) => [\n !isRecruit && {\n title: \":Recruit\",\n link: \"/admin/jobs\",\n target: \"_self\"\n },\n {\n title: \":Onboard\",\n link: \"https://scouttalentonboard.com/\",\n target: \"_blank\"\n },\n isRecruit && {\n title: \":Engage\",\n link: \"/admin/engage?engage-search\",\n target: \"_self\"\n },\n {\n title: \"Scout Learning\",\n link: \"https://scouttalenthq.com/talent-acquisition-software/scout-learning\",\n target: \"_blank\"\n },\n {\n title: \"Marketplace\",\n link: \"https://scouttalenthq.com/marketplace\",\n target: \"_blank\"\n }\n];\nexport const defaultMenuItems = (newEngage, isEngage) => isEngage ? [\n {\n title: \"Home\",\n icon: \"home\",\n id: \"engage-home-left-tab\",\n submenu: [\n {\n title: \"Search\",\n id: \"engage-home-left-search\",\n url: \"/admin/search/advanced\",\n active: \"/admin/search/advanced\"\n }\n ]\n },\n {\n title: \"Tools\",\n icon: \"spanner\",\n id: \"engage-spanner-left-tab\",\n submenu: [\n {\n title: \"Saved Searches\",\n url: \"/admin/search/advanced/saved\",\n active: \"/admin/search/advanced/saved\",\n permissions: [\"Advanced Search\"],\n id: \"engage-saved-searches-left-tab\"\n }\n ]\n },\n ...newEngage ? [\n {\n title: \"Engage Beta\",\n icon: \"people_search\",\n id: \"engage-left-tab\",\n submenu: [\n {\n title: \"AI Search\",\n url: \"/admin/engage?engage-search\",\n active: \"/admin/engage\\\\?engage-search\",\n id: \"ai-search-left-tab\"\n },\n {\n title: \"Candidate Pools\",\n url: \"/admin/engage?candidate-pools\",\n active: \"/admin/engage\\\\?candidate-pools\",\n id: \"candidate-pools-left-tab\"\n }\n ]\n }\n ] : []\n] : [\n {\n title: \"Recruitment\",\n id: \"recruitment-tab-sidebar\",\n icon: \"people_search\",\n submenu: [\n {\n title: \"Approval Forms\",\n url: \"/admin/requisitions\",\n active: \"/admin/requisitions\",\n permissions: [\n \"Create / Edit Approval Forms (HR use)\",\n \"Edit Previously Submitted Form\",\n \"Submit Approval Form\"\n ],\n id: \"approval-forms-tab-sidebar\"\n },\n {\n title: \"Jobs\",\n url: \"/admin/jobs\",\n active: \"/admin/(seek_)?jobs\",\n id: \"jobs-tab-sidebar\"\n },\n {\n title: \"Candidates\",\n url: \"/admin/candidates\",\n active: \"/admin/candidates\",\n permissions: [\"View Candidates\"],\n id: \"candidates-tab-sidebar\"\n },\n {\n title: \"Events\",\n url: \"/admin/calendar/events\",\n active: \"/admin/calendar\",\n permissions: [\"Create / Edit Events\"],\n id: \"events-tab-sidebar\"\n },\n {\n title: \"Smart Forms\",\n url: \"/admin/forms\",\n active: \"/admin/forms\",\n permissions: [\"Create / Edit Forms\"],\n id: \"smart-forms-tab-sidebar\"\n },\n {\n title: \"Full Search\",\n url: \"/admin/search/full\",\n active: \"/admin/search/(full|results)\",\n permissions: [\"Full Search\"],\n id: \"full-search-tab-sidebar\"\n }\n ]\n },\n {\n title: \"Admin\",\n icon: \"shield\",\n submenu: [\n {\n title: \"Entities\",\n url: \"/admin/entities\",\n active: \"/admin/entities\",\n permissions: [\"Edit Entities\"],\n id: \"entities-tab-sidebar\"\n },\n {\n title: \"Reports\",\n url: \"/admin/reports\",\n active: \"/admin/reports\",\n permissions: [\n \"Applications by Source & Entity Reports\",\n \"Placements Advanced Report\"\n ],\n id: \"reports-tab-sidebar\"\n },\n {\n title: \"Trash\",\n url: \"/admin/trash\",\n active: \"/admin/trash\",\n permissions: [\"Manage Trashed Jobs / Applications\"],\n id: \"trash-tab-sidebar\"\n }\n ]\n },\n {\n title: \"Tools\",\n icon: \"spanner\",\n submenu: [\n {\n title: \"CSV Data\",\n url: \"/admin/csv-data\",\n active: \"/admin/csv-data\",\n id: \"csv-tab-sidebar\"\n },\n {\n title: \"Internal Tools\",\n url: \"/admin/internal_tools/index\",\n active: \"/admin/internal_tools\",\n id: \"internal-tools-tab-sidebar\"\n },\n {\n title: \"System Fields\",\n url: \"/admin/system_fields\",\n active: \"/admin/system_fields\",\n id: \"system-fields-tab-sidebar\"\n },\n {\n title: \"Integrations\",\n url: \"/admin/integrations\",\n active: \"/admin/integrations\",\n id: \"integrations-tab-sidebar\"\n },\n {\n title: \"Menu\",\n url: \"/admin/service_menu_items\",\n active: \"/admin/.*menu_items\",\n id: \"menu-tab-sidebar\"\n },\n {\n title: \"Unsubscribes\",\n url: \"/admin/unsubscribes\",\n active: \"/admin/unsubscribes\",\n id: \"unsubscribes-tab-sidebar\"\n }\n ]\n }\n];\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nexport const classes = {\n navbarContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100vh\",\n zIndex: 1200,\n color: \"#fff\",\n backgroundColor: theme.palette.primary.main,\n transition: \"width 0.2s ease-in-out\"\n },\n appMenuContainer: {\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n padding: \"24px 24px 24px 26px\",\n background: \"linear-gradient(220deg, #5BC4C0 0%, #084D6D 104%)\",\n \"& span\": {\n fontSize: \"24px\",\n fontWeight: 700,\n fontFamily: \"Source Sans Pro\"\n }\n },\n appMenuContainerCollapsed: {\n padding: \"24px\",\n cursor: \"pointer\"\n },\n navigationItemsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: \"44px\",\n rowGap: \"5px\",\n marginInline: \"10px\",\n overflowY: \"auto\",\n \"& a\": {\n textDecoration: \"none\",\n color: \"#fff\",\n \"&:hover\": {\n color: \"#fff\",\n textDecoration: \"none\"\n }\n },\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n },\n msOverflowStyle: \"none\",\n scrollbarWidth: \"none\"\n },\n expandCollapseButtonContainer: {\n position: \"fixed\",\n zIndex: 1250,\n top: \"80px\",\n transition: \"left 0.2s ease-in-out\"\n },\n expandCollapseButton: {\n display: \"flex !important\",\n justifyContent: \"center !important\",\n alignItems: \"center !important\",\n borderRadius: \"50% !important\",\n padding: \"0px !important\",\n width: \"30px !important\",\n height: \"30px !important\",\n backgroundColor: \"#D6DEE2 !important\",\n color: theme.palette.primary.main,\n \"& svg\": {\n fontSize: \"14px !important\"\n },\n \"&:hover\": {\n backgroundColor: \"#C4D0D6 !important\"\n },\n \"&:focus\": {\n outline: \"none !important\"\n }\n },\n menuItemParent: {\n display: \"flex\",\n position: \"relative\",\n alignItems: \"center\",\n padding: \"12px 16px\",\n borderRadius: \"6px\",\n cursor: \"pointer\",\n \"& span\": {\n fontSize: \"17px\",\n marginLeft: \"14px\"\n },\n \"& svg\": {\n fontSize: \"24px\"\n },\n \"&:hover\": {\n backgroundColor: \"rgba(255, 255, 255, 0.07)\"\n }\n },\n menuItemChildrenContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n marginLeft: \"40px\",\n rowGap: \"2px\",\n marginTop: \"2px\"\n },\n menuItemChild: {\n display: \"flex\",\n fontSize: \"17px\",\n padding: \"12px 16px\",\n borderRadius: \"6px\",\n cursor: \"pointer\",\n \"&:hover\": {\n backgroundColor: \"rgba(255, 255, 255, 0.07)\"\n }\n },\n activeParent: {\n backgroundColor: \"rgba(255, 255, 255, 0.07)\",\n fontWeight: 700\n },\n activeItem: {\n backgroundColor: \"rgba(255, 255, 255, 0.07)\"\n },\n navigationItemsContainerCollapsed: {\n marginInline: \"0px\",\n rowGap: \"0px\"\n },\n menuItemExpandCollapseIcon: {\n position: \"absolute\",\n top: \"11.5px\",\n right: \"10px\",\n \"& svg\": {\n fontSize: \"18px !important\"\n }\n },\n menuItemParentCollapsed: {\n flexDirection: \"column\",\n borderRadius: \"0px\",\n padding: \"12px 0px\",\n \"& span\": {\n marginLeft: \"0px\",\n fontSize: \"13px\"\n }\n },\n collapsedNavigationChildContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"172px\",\n padding: \"22px 0px 22px 20px\",\n rowGap: \"14px\",\n borderRadius: \"0px 6px 6px 0px\",\n backgroundColor: theme.palette.primary.main,\n \"& a\": {\n fontSize: \"15px\",\n color: \"#fff\",\n textDecoration: \"none\",\n \"&:hover\": {\n color: \"#fff\",\n textDecoration: \"none\",\n fontWeight: 700\n }\n }\n },\n appMenuItemsContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n width: \"220px\",\n padding: \"28px 0px 28px 30px\",\n rowGap: \"14px\",\n background: \"linear-gradient(297deg, #5BC4C0 0%, #084D6D 100%)\",\n \"& a\": {\n fontSize: \"17px\",\n color: \"#fff\",\n textDecoration: \"none\",\n fontWeight: 600,\n \"&:hover\": {\n color: \"#fff\",\n textDecoration: \"none\",\n fontWeight: 700\n }\n }\n },\n appMenuItemsContainerCollapsed: {\n borderRadius: \"0px 6px 6px 0px\",\n width: \"170px\",\n background: \"linear-gradient(171deg, #5BC4C0 0%, #084D6D 80%)\"\n }\n};\n","\"use strict\";\nexport const widgetsbarWidths = {\n expanded: 280,\n collapsed: 0\n};\nexport const widgetsContainerPadding = {\n expanded: 1,\n collapsed: 0\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nimport {\n actionsMenuPaperCommonStyles,\n actionsMenuSpanCommonStyles\n} from \"../../shared/commonStyles\";\nexport const classes = {\n widgetsbarContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n height: \"100vh\",\n overflowX: \"hidden\",\n overflowY: \"auto\",\n zIndex: 1200,\n backgroundColor: \"#EAEEF0\",\n transition: \"width 0.2s ease-in-out\",\n marginLeft: \"auto !important\",\n paddingBottom: \"30%\"\n },\n hideButtonContainer: {\n display: \"flex\",\n alignItems: \"center\",\n minHeight: \"91px\",\n marginLeft: \"auto !important\"\n },\n addButton: {\n position: \"absolute\",\n top: 0,\n right: 0,\n margin: \"20px\",\n borderRadius: \"50% !important\",\n zIndex: 1200,\n \"&:focus\": { outline: \"none\" }\n },\n actionsMenu: {\n \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n width: \"170px\",\n marginTop: \"6px\"\n }),\n \"& span\": actionsMenuSpanCommonStyles\n },\n datePicker: {\n position: \"relative\",\n width: \"fit-content\",\n margin: \" auto\",\n \"& .MuiPickersLayout-root\": {\n width: \"260px !important\",\n borderRadius: \"6px !important\",\n boxShadow: \"0px 4px 20px 3px #305A6F14\",\n marginInline: \"auto\"\n },\n \"& .MuiPickersLayout-contentWrapper\": {\n width: \"inherit\"\n },\n \"& .MuiDateCalendar-root\": {\n width: \"260px !important\"\n },\n \"& .MuiPickersFadeTransitionGroup-root\": {\n paddingInline: \"12px\"\n },\n \"& .MuiPickersCalendarHeader-root\": {\n '& div[role=\"presentation\"]': {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n color: \"#666666\",\n fontWeight: \"700\"\n }\n },\n \"& .PrivatePickersFadeTransitionGroup-root\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main\n },\n \"& .MuiTypography-root\": {\n fontFamily: \"Source Sans Pro\",\n color: \"#939393\",\n fontSize: \"14px\"\n },\n \"& .MuiDayCalendar-weekContainer\": {\n justifyContent: \"space-between\",\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n minWidth: \"30px\",\n height: \"30px\",\n borderRadius: \"50%\"\n }\n },\n \"& .Mui-selected\": {\n backgroundColor: `${theme.palette.action.main} !important`\n },\n \"& .PrivatePickersSlideTransition-root\": {\n minHeight: \"250px !important\"\n },\n \"& .MuiPickersCalendarHeader-labelContainer\": {\n maxHeight: \"40px !important\",\n marginRight: \"unset\"\n },\n \"& .MuiPickersArrowSwitcher-root\": {\n marginLeft: \"8px\"\n },\n \"& .PrivatePickersYear-yearButton\": {\n height: \"30px\"\n },\n \"& .MuiPickersCalendarHeader-switchViewButton\": {\n display: \"none\"\n },\n \"& .MuiDayPicker-weekContainer\": {\n margin: \"10px 0 !important\"\n },\n \"& .MuiYearCalendar-root\": {\n width: \"280px !important\"\n }\n },\n recentlyViewedContainer: {\n width: \"100%\",\n padding: \"0 10px 20px 10px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"column\",\n rowGap: \"13px\",\n justifyContent: \"space-between\",\n margin: \"0 10px 40px\",\n backgroundColor: \"#FFFFFF\",\n border: \"1px solid #E3E3E3\",\n boxSizing: \"border-box\",\n borderRadius: \"6px\",\n boxShadow: \"0px 4px 20px 3px #305A6F14\"\n },\n title: {\n fontFamily: \"Source Sans Pro\",\n margin: \"20px 20px 10px 14px\",\n fontSize: \"18px\",\n fontWeight: \"700\",\n color: \"#666666\"\n }\n};\n","\"use strict\";\nimport RecruitApiClient from \"../../RecruitApiClient\";\nclass Api {\n constructor() {\n this.getPreferences = () => RecruitApiClient.get(`/api/v4/ui_preferences?source=smart_forms`, null);\n this.getDensityPreferences = () => RecruitApiClient.get(`/api/v4/ui_preferences?source=universal`, null);\n this.getSmartForms = (params) => RecruitApiClient.get(`/api/v4/smart_forms`, params);\n this.getSmartForm = (formId) => RecruitApiClient.get(`/api/v4/smart_forms/${formId}`, {});\n this.getRequisitionForms = (params) => RecruitApiClient.get(`/api/v4/requisition_forms`, params);\n this.getJobs = (params) => RecruitApiClient.get(`/api/v4/jobs`, params);\n this.deleteSmartForm = (formId) => RecruitApiClient.delete(`/api/v4/smart_forms/${formId}`, {});\n this.postUserPreferences = (params) => RecruitApiClient.post(`/api/v4/ui_preferences`, params);\n this.postSmartForm = (params) => RecruitApiClient.post(`/api/v4/smart_forms`, params);\n this.updateSmartForm = (formId, params) => RecruitApiClient.put(`/api/v4/smart_forms/${formId}`, params);\n this.newField = (formId, params) => RecruitApiClient.post(`/api/v4/fields?form_id=${formId}`, params);\n this.getSystemFields = () => RecruitApiClient.get(`/api/v4/system_fields?form_type=Form`, {});\n this.addSystemField = (formId, systemFieldId) => RecruitApiClient.post(\n `/api/v4/system_fields?form_id=${formId}&system_field_id=${systemFieldId}`,\n {}\n );\n this.importFields = (formId, sourceType, selectedId) => RecruitApiClient.post(`/api/v4/fields/import`, {\n source_type: sourceType,\n source_id: selectedId,\n form_id: formId\n });\n this.getQuestions = (params) => RecruitApiClient.get(`/api/v4/fields`, params);\n this.putQuestion = (id, formId, params) => RecruitApiClient.put(`/api/v4/fields/${id}?form_id=${formId}`, params);\n this.deleteQuestion = (id, formId) => RecruitApiClient.delete(`/api/v4/fields/${id}?form_id=${formId}`, {});\n this.cloneQuestion = (id, formId) => RecruitApiClient.post(`/api/v4/fields/${id}/clone?form_id=${formId}`, {});\n this.getTargetEntities = () => RecruitApiClient.get(`/api/v4/target_entities`, {});\n this.cloneForm = (formId, params) => RecruitApiClient.post(`/api/v4/smart_forms/${formId}/clone`, params);\n this.updateQuestions = (formId, params) => RecruitApiClient.put(`/api/v4/smart_forms/${formId}/update_questions`, params);\n }\n}\nexport default new Api();\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nimport { classes as rootClass } from \"../../ApprovalForms/Questions/styles\";\nexport const classes = __spreadValues({}, rootClass);\n","\"use strict\";\nexport const SmartFormsTableHeaders = [\n {\n name: \"name\",\n label: \"Title\",\n sortable: true\n },\n {\n name: \"enabled\",\n label: \"Enabled\",\n sortable: true\n },\n {\n name: \"updated_at\",\n label: \"Updated At\",\n sortable: true\n },\n {\n name: \"created_at\",\n label: \"Created At\",\n sortable: true\n },\n {\n name: \"created_by\",\n label: \"Created By\",\n sortable: false\n }\n];\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nexport const InitialSmartFormsState = {\n currentPage: Number(sessionStorage.getItem(`smartFormsTablePage`)) || 1,\n rowsPerPage: 10,\n sortBy: \"name\",\n sortOrder: \"asc\",\n search: \"\",\n snackbar: {\n message: \"\",\n state: \"success\"\n },\n isDialogOpen: false,\n deleteSmartForm: 0,\n showSmartFormModal: null,\n enabled: true,\n selectedEntity: 0,\n name: \"\",\n selectedForm: null\n};\nexport const SmartFormsReducer = (state, action) => {\n switch (action.type) {\n case \"SET_CURRENT_PAGE\":\n return __spreadProps(__spreadValues({}, state), { currentPage: action.payload });\n case \"SET_ROWS_PER_PAGE\":\n return __spreadProps(__spreadValues({}, state), { rowsPerPage: action.payload });\n case \"SET_SORT_BY\":\n return __spreadProps(__spreadValues({}, state), { sortBy: action.payload });\n case \"SET_SORT_ORDER\":\n return __spreadProps(__spreadValues({}, state), { sortOrder: action.payload });\n case \"SET_SEARCH\":\n return __spreadProps(__spreadValues({}, state), { search: action.payload });\n case \"SET_SNACKBAR\":\n return __spreadProps(__spreadValues({}, state), { snackbar: action.payload });\n case \"SET_IS_DIALOG_OPEN\":\n return __spreadProps(__spreadValues({}, state), { isDialogOpen: action.payload });\n case \"SET_DELETE_SMART_FORM\":\n return __spreadProps(__spreadValues({}, state), { deleteSmartForm: action.payload });\n case \"SET_MODAL_OPEN\":\n return __spreadProps(__spreadValues({}, state), {\n showSmartFormModal: action.payload\n });\n case \"SET_TOGGLE_ENABLED\":\n return __spreadProps(__spreadValues({}, state), { enabled: !state.enabled });\n case \"SET_SELECTED_ENTITY\":\n return __spreadProps(__spreadValues({}, state), { selectedEntity: action.payload });\n case \"SET_NAME\":\n return __spreadProps(__spreadValues({}, state), { name: action.payload });\n case \"SET_SELECTED_FORM\":\n return __spreadProps(__spreadValues({}, state), { selectedForm: action.payload });\n case \"RESET_SMART_FORM\":\n return __spreadProps(__spreadValues({}, state), {\n name: InitialSmartFormsState.name,\n enabled: InitialSmartFormsState.enabled\n });\n }\n};\nexport const InitialSmartFormFieldsState = {\n snackbar: {\n message: \"\",\n state: \"success\"\n },\n modalsOpen: {\n newField: false,\n addSystemField: false,\n importFields: false,\n smartFormSettings: false\n },\n editingQuestion: null,\n selectedSystemField: null,\n selectedSourceId: null,\n systemFieldError: \"\",\n actionStates: {}\n};\nexport const SmartFormFieldsReducer = (state, action) => {\n switch (action.type) {\n case \"SET_SNACKBAR\":\n return __spreadProps(__spreadValues({}, state), { snackbar: action.payload });\n case \"SET_MODALS_OPEN\":\n return __spreadProps(__spreadValues({}, state), { modalsOpen: action.payload });\n case \"SET_EDITING_QUESTION\":\n return __spreadProps(__spreadValues({}, state), { editingQuestion: action.payload });\n case \"SET_SELECTED_SYSTEM_FIELD\":\n return __spreadProps(__spreadValues({}, state), { selectedSystemField: action.payload });\n case \"SET_SELECTED_SOURCE_ID\":\n return __spreadProps(__spreadValues({}, state), { selectedSourceId: action.payload });\n case \"SET_SYSTEM_FIELD_ERROR\":\n return __spreadProps(__spreadValues({}, state), { systemFieldError: action.payload });\n case \"SET_ACTION_STATES\":\n return __spreadProps(__spreadValues({}, state), { actionStates: action.payload });\n }\n};\n","\"use strict\";\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nimport { searchInput, actionsMenu } from \"../shared/styleClasses\";\nexport const styles = {\n smartFormsPageContainer: {\n backgroundColor: theme.palette.common.white,\n padding: \"40px\"\n },\n smartFormsPageHeader: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n marginBottom: \"26px\",\n padding: \"0px 16px\",\n \"& h1\": {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n fontSize: \"38px\",\n color: \"#666666\",\n marginTop: \"0\"\n }\n },\n tabsContainer: {\n borderBottom: 1,\n borderColor: \"#DDDDDD\",\n margin: \"25px 0\"\n },\n tabs: {\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n letterSpacing: \"0\",\n textTransform: \"none\",\n \"&:focus\": {\n outline: \"none\"\n }\n },\n \"& button.Mui-selected\": {\n fontWeight: \"600\",\n color: theme.palette.primary.main\n }\n },\n tabIndicator: {\n backgroundColor: theme.palette.action.main,\n marginLeft: 2\n },\n searchInput,\n defaultSwitch: {\n \"& .MuiFormControlLabel-label\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: theme.palette.common.black\n },\n \"& .MuiSwitch-track\": {\n backgroundColor: \"rgba(0,0,0,0.38) !important\",\n opacity: \"1 !important\"\n },\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n },\n \"& .Mui-checked\": {\n color: \"rgb(91, 196, 191, 0.5) !important\"\n }\n },\n textField: {\n marginLeft: 0.5,\n marginRight: \"-3px\"\n },\n backToApprovalFormsButton: {\n marginBottom: \"20px\",\n fontSize: \"16px\",\n color: \"#eee\",\n opacity: \"0.8\",\n display: \"flex\",\n alignItems: \"center\",\n \"& div\": {\n fontWeight: \"600\",\n color: \"#666666\",\n \":hover\": {\n color: \"#545454\",\n cursor: \"pointer\"\n }\n }\n },\n iconGrey: {\n color: \"#666666\",\n fontSize: \"28px\"\n },\n actionsMenu\n};\n","\"use strict\";\nexport var ModalType = /* @__PURE__ */ ((ModalType2) => {\n ModalType2[\"CREATE\"] = \"create\";\n ModalType2[\"UPDATE\"] = \"update\";\n ModalType2[\"CLONE\"] = \"clone\";\n ModalType2[\"CLONE_WITHOUT_FORM\"] = \"clone_without_form\";\n return ModalType2;\n})(ModalType || {});\n","\"use strict\";\nexport const FILTERS_KEY = \"filters\";\nexport const NOTES_ERROR_MESSAGE = \"Emojis are not allowed\";\nexport const TIMESTAMP_REGEX = /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9]):([0-5]?[0-9])$/;\nexport const DELAY_OPTIONS = [\n \"None\",\n \"1 hour\",\n \"2 hours\",\n \"4 hours\",\n \"1 day\",\n \"2 days\",\n \"3 days\",\n \"4 days\",\n \"5 days\",\n \"6 days\",\n \"7 days\",\n \"14 days\",\n \"30 days\"\n];\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport Api from \"../Jobs/API\";\nconst EXPIRY_TIME = 3600 * 1e3;\nexport const fetchPreferences = (source) => __async(void 0, null, function* () {\n const expiryCacheKey = `userPreferences:${source}:expiry`;\n const cacheKey = `userPreferences:${source}`;\n const responseExpiryStr = localStorage.getItem(expiryCacheKey);\n const responseExpiry = responseExpiryStr ? Number(responseExpiryStr) : 0;\n if (responseExpiry > Date.now()) {\n const responseFromLocal = localStorage.getItem(cacheKey);\n if (responseFromLocal) {\n return JSON.parse(responseFromLocal);\n }\n }\n const response = yield Api.getUISettings({ source });\n localStorage.setItem(cacheKey, JSON.stringify(response));\n localStorage.setItem(expiryCacheKey, (Date.now() + EXPIRY_TIME).toString());\n return response;\n});\nexport const clearPreferenceCache = (source) => {\n const expiryCacheKey = `userPreferences:${source}:expiry`;\n const cacheKey = `userPreferences:${source}`;\n localStorage.removeItem(expiryCacheKey);\n localStorage.removeItem(cacheKey);\n};\nexport const clearAllPreferenceCache = () => {\n Object.keys(localStorage).forEach((key) => {\n if (key.startsWith(\"userPreferences\")) {\n localStorage.removeItem(key);\n }\n });\n};\nexport const updateUiSettings = (params, onError) => __async(void 0, null, function* () {\n const source = params.source;\n try {\n yield Api.postUISettings({ ui_preference: params });\n if (source) {\n clearPreferenceCache(source);\n }\n } catch (error) {\n console.log(error);\n if (onError && error instanceof Error) {\n onError(error.message);\n }\n }\n});\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport { useState } from \"react\";\nimport Api from \"../Job/API\";\nexport const useApplicationsForTask = () => {\n const [applications, setApplications] = useState([]);\n const fetchApplications = (jobId) => __async(void 0, null, function* () {\n let page = 1;\n let totalPages = 9999;\n let results = [];\n while (page <= totalPages) {\n const response = yield Api.getApplicationsForTask(jobId, page);\n results = [...results, ...response.data.applications];\n if (page === 1) {\n setApplications(results);\n }\n totalPages = response.totalPages;\n page += 1;\n }\n if (page > 1) {\n setApplications(results);\n }\n });\n return { applications, fetchApplications };\n};\n","\"use strict\";\nexport const useDispatch = (dispatch) => {\n const displayError = (message) => dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message, state: \"error\" }\n });\n const displaySuccess = (message) => dispatch({\n type: \"SET_SNACKBAR\",\n payload: { message, state: \"success\" }\n });\n return { displayError, displaySuccess };\n};\n","\"use strict\";\nimport { useRef, useState, useEffect } from \"react\";\nexport const useDragScroll = () => {\n const ref = useRef(null);\n const [isDragging, setIsDragging] = useState(false);\n const startPoint = useRef({ x: 0, y: 0 });\n const scrollRef = useRef({ left: 0, top: 0 });\n useEffect(() => {\n const handleMouseDown = (event) => {\n if (ref.current) {\n setIsDragging(true);\n startPoint.current = { x: event.clientX, y: event.clientY };\n scrollRef.current = { left: ref.current.scrollLeft, top: ref.current.scrollTop };\n ref.current.style.cursor = \"grabbing\";\n ref.current.style.overflow = \"auto\";\n ref.current.style.userSelect = \"none\";\n }\n };\n const handleMouseMove = (event) => {\n if (isDragging && ref.current) {\n const dx = event.clientX - startPoint.current.x;\n const dy = event.clientY - startPoint.current.y;\n ref.current.scrollLeft = scrollRef.current.left - dx;\n ref.current.scrollTop = scrollRef.current.top - dy;\n }\n };\n const handleMouseUp = () => {\n if (ref.current) {\n setIsDragging(false);\n ref.current.style.cursor = \"grab\";\n ref.current.style.removeProperty(\"user-select\");\n }\n };\n const currentRef = ref.current;\n if (currentRef) {\n currentRef.addEventListener(\"mousedown\", handleMouseDown);\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n }\n return () => {\n if (currentRef) {\n currentRef.removeEventListener(\"mousedown\", handleMouseDown);\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n }\n };\n }, [isDragging]);\n return [ref];\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport { useQuery } from \"@tanstack/react-query\";\nimport API from \"../Job/API\";\nexport const useEmailTemplatesOptions = ({\n apiKey,\n onError\n}) => {\n return useQuery({\n queryKey: [\"email templates\"],\n queryFn: () => __async(void 0, null, function* () {\n const { email_templates } = yield API.getEmailTemplates({\n \"X-api-authenticate\": apiKey\n });\n const result = [];\n email_templates.forEach((group) => {\n group[1].forEach((template) => {\n result.push(`${template.id} - ${template.name}@-*@${group[0]}`);\n });\n });\n return result;\n }),\n onError: (error) => onError(error.errors.join(\", \"))\n });\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport { useQuery } from \"@tanstack/react-query\";\nimport Api from \"../../ScoutCalendar/API\";\nexport const useEvents = ({ weekStart, onError }) => {\n const { data, isLoading } = useQuery({\n queryKey: [\"events\", weekStart],\n queryFn: () => __async(void 0, null, function* () {\n const {\n res: { events }\n } = yield Api.getEvents(weekStart);\n return events.map((e) => __spreadProps(__spreadValues({}, e), {\n start: new Date(e.begins_at),\n end: new Date(e.ends_at)\n }));\n }),\n onError: (error) => {\n onError(error);\n }\n });\n return {\n data,\n isLoading\n };\n};\nexport default useEvents;\n","\"use strict\";\nimport { useState } from \"react\";\nimport { arrayMove } from \"@dnd-kit/sortable\";\nexport const useFieldChoiceList = () => {\n const [choiceList, setChoiceList] = useState([\n { id: \"\", _destroy: 0, position: 0, name: \"\" }\n ]);\n const addChoice = () => {\n const newTempId = Date.now();\n setChoiceList([...choiceList, { id: newTempId, _destroy: 0, position: null, name: \"\" }]);\n };\n const removeChoice = (index) => {\n const list = [...choiceList];\n if (list[index].position !== void 0 && list[index].position !== null) {\n list[index]._destroy = 1;\n } else {\n list.splice(index, 1);\n }\n setChoiceList(list);\n };\n const clearChoices = () => {\n setChoiceList([{ id: \"\", _destroy: 0, position: 0, name: \"\" }]);\n };\n const updateChoiceAttr = (value, index, attribute) => {\n const list = [...choiceList];\n list[index][attribute] = value;\n setChoiceList(list);\n };\n const updateChoice = (value, index) => updateChoiceAttr(value, index, \"name\");\n const updateRank = (value, index) => updateChoiceAttr(value, index, \"rank\");\n const updateRankValue = (value, index) => updateChoiceAttr(value, index, \"rank_value\");\n const updateRating = (value, index) => updateChoiceAttr(value, index, \"rating\");\n const switchChoices = (oldId, newId) => {\n if (oldId === newId) {\n return;\n }\n const oldIndex = choiceList.map((c) => c.id).indexOf(oldId);\n const newIndex = choiceList.map((c) => c.id).indexOf(newId);\n setChoiceList(arrayMove(choiceList, oldIndex, newIndex));\n };\n return {\n choiceList,\n setChoiceList,\n addChoice,\n removeChoice,\n clearChoices,\n updateChoice,\n switchChoices,\n updateRank,\n updateRankValue,\n updateRating\n };\n};\n","\"use strict\";\nimport { useState } from \"react\";\nimport { emojiInString } from \"../utils/emoji-checker\";\nconst useInputValidation = (input) => {\n const [inputError, setInputError] = useState(false);\n const validateInput = () => {\n if (emojiInString(input)) {\n setInputError(true);\n setTimeout(() => {\n setInputError(false);\n }, 4e3);\n throw new Error(\"Emojis are not allowed in notes.\");\n }\n return true;\n };\n return { inputError, validateInput };\n};\nexport default useInputValidation;\n","\"use strict\";\nimport { useEffect, useState } from \"react\";\nimport { useDebouncedCallback } from \"use-debounce\";\nexport const useIsOverflow = (ref) => {\n const [hasOverflow, setHasOverflow] = useState(false);\n const debouncedCheckOverflow = useDebouncedCallback(() => {\n if (ref == null ? void 0 : ref.current) {\n const { scrollWidth, clientWidth, scrollHeight, clientHeight } = ref.current;\n const hasOverflow2 = scrollHeight > clientHeight || scrollWidth > clientWidth;\n setHasOverflow(hasOverflow2);\n }\n }, 100);\n useEffect(() => {\n debouncedCheckOverflow();\n window.addEventListener(\"resize\", debouncedCheckOverflow);\n return () => {\n window.removeEventListener(\"resize\", debouncedCheckOverflow);\n };\n }, [debouncedCheckOverflow, ref]);\n return hasOverflow;\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport { useState } from \"react\";\nimport Api from \"../Job/API\";\nexport const useJobsForTask = () => {\n const [jobs, setJobs] = useState([]);\n const fetchJobs = () => __async(void 0, null, function* () {\n let page = 1;\n let totalPages = 9999;\n let results = [];\n while (page <= totalPages) {\n const response = yield Api.getJobs(page);\n results = [...results, ...response.data.jobs];\n if (page === 1) {\n setJobs(results);\n }\n totalPages = response.totalPages;\n page += 1;\n }\n if (page > 1) {\n setJobs(results);\n }\n });\n return { jobs, fetchJobs };\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport { useQuery } from \"@tanstack/react-query\";\nimport API from \"../Job/API\";\nexport const usePlaceholders = ({\n type,\n apiKey,\n onError\n}) => {\n return useQuery({\n queryKey: [\"placeholders\", type],\n queryFn: () => __async(void 0, null, function* () {\n const res = yield API.getPlaceholders({ \"X-api-authenticate\": apiKey }, type);\n return res.placeholders;\n }),\n onError: (error) => onError(error.errors.join(\", \"))\n });\n};\n","\"use strict\";\nexport const useThrottle = (cb, delay = 1e3) => {\n let shouldWait = false;\n let waitingArgs = null;\n const timeoutFunc = () => {\n if (waitingArgs == null) {\n shouldWait = false;\n } else {\n cb(...waitingArgs);\n waitingArgs = null;\n setTimeout(timeoutFunc, delay);\n }\n };\n return (...args) => {\n if (shouldWait) {\n waitingArgs = args;\n return;\n }\n cb(...args);\n shouldWait = true;\n setTimeout(timeoutFunc, delay);\n };\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nexport const baseButtonStyles = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n borderRadius: \"6px\",\n boxShadow: \"none\"\n};\nexport const basePrimaryButtonStyles = __spreadProps(__spreadValues({}, baseButtonStyles), {\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n});\nexport const baseSecondaryButtonStyles = __spreadProps(__spreadValues({}, baseButtonStyles), {\n color: \"#939393\",\n backgroundColor: \"rgba(147, 147, 147, 0.12)\",\n \"&:hover\": {\n backgroundColor: \"rgba(147, 147, 147, 0.24)\",\n boxShadow: \"none\"\n }\n});\nexport const statusClampCommonStyles = {\n display: \"-webkit-box\",\n position: \"relative\",\n WebkitLineClamp: \"2\",\n WebkitBoxOrient: \"vertical\",\n overflow: \"hidden\",\n minHeight: \"35px\",\n maxHeight: \"53px\",\n textAlign: \"left\"\n};\nexport const statusClampAfterStyles = {\n content: '\"\\u25BE\"',\n fontSize: \"13px\",\n color: \"#CCCCCC\",\n position: \"absolute\",\n right: \"6px\",\n lineHeight: \"0\",\n top: \"50%\"\n};\nexport const statusClampDropdownStyles = {\n visibility: \"hidden\",\n minHeight: \"35px\",\n textAlign: \"left\",\n position: \"absolute\",\n top: \"-1px\",\n left: \"-1px\",\n zIndex: \"2\",\n background: \"#ffffff\",\n borderRadius: \"6px\",\n border: \"1px solid #CCCCCC\"\n};\nexport const statusClampDropdownAfterStyles = {\n content: '\"\\u25BE\"',\n fontSize: \"13px\",\n color: \"#CCCCCC\",\n position: \"absolute\",\n right: \"6px\",\n lineHeight: \"0\"\n};\nexport const statusClampHoverStyles = {\n overflow: \"visible\",\n WebkitLineClamp: \"unset\",\n \"& .status-dropdown-full\": {\n visibility: \"visible\"\n }\n};\nexport const scrollShadowAfterStyles = {\n content: '\"\"',\n background: \"#aaaaaa\",\n width: \"2px\",\n height: \"100%\",\n filter: \"blur(2px)\",\n position: \"absolute\",\n top: \"0\",\n opacity: \"0%\",\n transition: \"opacity 0.17s linear\"\n};\nexport const scrollShadowBeforeStyles = {\n content: '\"\"',\n top: \"0\",\n width: \"6px\",\n height: \"100%\",\n position: \"absolute\",\n background: \"#ffffff\",\n zIndex: \"2\"\n};\nexport const candidateSearchCommonStyles = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"regular\",\n color: \"#939393\",\n borderRadius: \"6px\",\n width: \"320px\",\n \"& .MuiOutlinedInput-root\": {\n paddingLeft: \"3px\"\n },\n \"& legend\": {\n display: \"none\"\n },\n \"& svg\": {\n fontSize: \"22px\",\n color: \"#939393\",\n transform: \"translate(-6px, -1px)\"\n },\n \"& input\": {\n padding: \"8px 9px 12px 0px\",\n color: \"#000000\"\n }\n};\nexport const actionsModalReducedPaddingCommonStyles = {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"60px\",\n paddingLeft: \"48px\",\n width: \"100%\",\n maxWidth: \"900px\",\n height: \"84vh\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n \"& h3\": {\n color: \"#939393\",\n fontSize: \"19px\",\n fontWeight: \"Bold\",\n marginBottom: \"30px\"\n }\n};\nexport const filterPopoverHeaderCommonStyles = {\n width: \"100%\",\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: \"14px\",\n backgroundColor: \"white\",\n position: \"sticky\",\n zIndex: 99,\n paddingTop: \"26px\",\n paddingBottom: \"2px\",\n boxShadow: \"0px 6px 10px 7px #ffffff\"\n};\nexport const actionsMenuPaperCommonStyles = {\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: \"10px\",\n padding: \"14px 0px 14px 20px\",\n borderRadius: \"6px\"\n};\nexport const actionsMenuSpanCommonStyles = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#666666\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.palette.primary.main\n }\n};\nexport const switchLabelsCommonStyles = {\n justifyContent: \"space-between\",\n width: \"100%\",\n \"& .MuiFormControlLabel-label\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#084D6D\"\n },\n \"& .MuiSwitch-track\": {\n backgroundColor: \"rgba(0,0,0,0.38)\",\n opacity: \"1\"\n },\n \"& .Mui-checked+.MuiSwitch-track\": {\n backgroundColor: \"rgb(91, 196, 191, 0.17) !important\",\n opacity: \"1 !important\"\n },\n \"& .Mui-checked\": {\n color: \"rgb(91, 196, 191, 0.5) !important\"\n }\n};\nconst _arrowStyles = {\n display: \"none\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"40px\",\n height: \"65px\",\n bottom: \"370px\",\n background: \"#eeeeee\",\n opacity: \"0.9\",\n cursor: \"pointer\"\n};\nexport const rightArrowStyles = __spreadProps(__spreadValues({}, _arrowStyles), {\n borderRadius: \"10px 0px 0px 10px\"\n});\nexport const leftArrowStyles = __spreadProps(__spreadValues({}, _arrowStyles), {\n borderRadius: \"0px 10px 10px 0px\"\n});\nexport const applyButtonStyles = __spreadProps(__spreadValues({}, baseButtonStyles), {\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n padding: \"5px 23px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n});\nexport const actionButtonStyles = __spreadProps(__spreadValues({}, baseButtonStyles), {\n fontWeight: \"600\",\n color: \"#666666\",\n backgroundColor: \"#9393931F\",\n padding: \"10px 24px\",\n border: \"none\",\n \"&:hover\": {\n backgroundColor: \"#93939335\",\n border: \"none\"\n }\n});\nexport const filterPopoverContentStyles = {\n width: \"272px\",\n maxHeight: \"500px\",\n boxShadow: \"0px 2px 14px rgba(48,90,111,0.16)\",\n msOverflowStyle: \"none\",\n scrollbarWidth: \"none\",\n position: \"relative\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n};\nexport const selectedApplicantsTableStyles = {\n tableLayout: \"auto !important\",\n width: \"unset\",\n border: \"none\",\n th: {\n color: theme.palette.primary.main,\n fontWeight: \"bold\",\n \"& .Mui-active\": {\n color: theme.palette.primary.main\n }\n },\n tr: {\n fontSize: \"16px\",\n border: \"none\"\n }\n};\nexport const selectedApplicantsTableRowStyles = {\n fontFamily: \"Source Sans Pro, sans-serif\",\n border: \"none\",\n backgroundColor: \"#FFFFFF\",\n textTransform: \"none\"\n};\nexport const modalConfirmationButtonCommonStyles = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: \"#5BC4BF\",\n borderRadius: \"6px\",\n boxShadow: \"none\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\",\n boxShadow: \"none\"\n }\n};\nexport const selectedTooltipCommonStyles = {\n display: \"flex\",\n alignItems: \"center\",\n visibility: \"hidden\",\n bottom: \"40px\",\n position: \"fixed\",\n zIndex: 99,\n backgroundColor: \"rgba(242,242,242)\",\n borderRadius: \"8px\",\n transform: \"translateX(20px)\"\n};\nexport const rowSelectContainerCommonStyles = {\n display: \"flex\",\n alignItems: \"center\",\n width: \"fit-content\",\n marginTop: \"5px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#666666\",\n \"& span\": {\n marginRight: \"12px\",\n paddingBottom: \"6px\"\n }\n};\nexport const checkboxContainerStyles = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#084D6D\",\n textAlign: \"center\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\"\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { theme } from \"../../ThemeContext/ThemeObject\";\nimport {\n actionButtonStyles,\n actionsMenuPaperCommonStyles,\n actionsMenuSpanCommonStyles,\n applyButtonStyles,\n basePrimaryButtonStyles,\n baseSecondaryButtonStyles,\n checkboxContainerStyles,\n filterPopoverContentStyles,\n modalConfirmationButtonCommonStyles,\n rowSelectContainerCommonStyles,\n scrollShadowAfterStyles,\n scrollShadowBeforeStyles,\n selectedTooltipCommonStyles,\n statusClampAfterStyles,\n statusClampCommonStyles,\n statusClampDropdownAfterStyles,\n statusClampDropdownStyles,\n statusClampHoverStyles,\n switchLabelsCommonStyles\n} from \"./commonStyles\";\nexport const notesEditSaveButton = __spreadProps(__spreadValues({}, basePrimaryButtonStyles), {\n width: \"86px\",\n padding: \"5px 0px\",\n \"& svg\": {\n color: \"#FFFFFF\",\n fontSize: \"16px !important\"\n },\n \"&:disabled\": {\n backgroundColor: \"#EEEEEE\",\n color: \"#BBBBBB\",\n transition: \"all 250ms ease-in-out\"\n }\n});\nexport const notesCancelButton = __spreadProps(__spreadValues({}, baseSecondaryButtonStyles), {\n width: \"86px\",\n padding: \"5px 0px\",\n \"& svg\": {\n color: theme.palette.error.main,\n fontSize: \"16px !important\"\n }\n});\nexport const editNotePopover = {\n \"& .MuiPaper-root\": {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"flex-end\",\n rowGap: \"10px\",\n width: \"300px\",\n minHeight: \"150px\",\n padding: \"17px 17px 14px 17px\"\n }\n};\nexport const statusClamp = __spreadProps(__spreadValues({}, statusClampCommonStyles), {\n width: \"140px\",\n padding: \"6px 20px 5px 24px\",\n \"&::after\": statusClampAfterStyles,\n \"& .status-dropdown-full\": __spreadProps(__spreadValues({}, statusClampDropdownStyles), {\n width: \"140px\",\n padding: \"6px 20px 5px 24px\",\n \"&::after\": statusClampDropdownAfterStyles\n }),\n \"&:hover\": statusClampHoverStyles\n});\nexport const scrollShadowLeft = {\n \"&::after\": __spreadProps(__spreadValues({}, scrollShadowAfterStyles), {\n right: \"-2px\"\n }),\n \"&::before\": __spreadProps(__spreadValues({}, scrollShadowBeforeStyles), {\n right: \"0\"\n })\n};\nexport const scrollShadowRight = {\n \"&::after\": __spreadProps(__spreadValues({}, scrollShadowAfterStyles), {\n left: \"-2px\"\n }),\n \"&::before\": __spreadProps(__spreadValues({}, scrollShadowBeforeStyles), {\n left: \"0\"\n })\n};\nexport const searchInput = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"20px\",\n fontWeight: \"regular\",\n borderRadius: \"6px\",\n minHeight: \"54px\",\n \"& legend\": {\n display: \"none\"\n },\n \"& svg\": {\n fontSize: \"31px\",\n color: \"#084D6D\"\n },\n \"& input\": {\n padding: \"10.5px 11px 15.5px 11px\",\n color: \"#000000\"\n },\n \"& fieldset\": {\n borderColor: \"#EAEEF0\"\n },\n \"&:hover\": {\n \"& fieldset\": {\n borderColor: \"#DADEE0 !important\"\n }\n }\n};\nexport const chip = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n padding: \"20px 12px\",\n borderRadius: \"25px\",\n backgroundColor: \"#FFFFFF\",\n border: \"2px solid #CCCCCC\",\n color: \"#CCCCCC\",\n transition: \"all 0.4s ease-in-out\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\"\n }\n};\nexport const chipPacket = {\n display: \"flex\",\n flexWrap: \"wrap\",\n rowGap: \"20px\",\n columnGap: \"26px\",\n marginTop: \"36px\"\n};\nexport const chipSelected = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"600\",\n padding: \"20px 12px\",\n borderRadius: \"25px\",\n color: theme.palette.primary.main,\n backgroundColor: \"#FFFFFF\",\n border: \"2px solid \" + theme.palette.action.main,\n transition: \"all 0.4s ease-in-out\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF\"\n }\n};\nexport const actionsMenu = {\n \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n width: \"170px\",\n marginTop: \"12px\"\n }),\n \"& span\": actionsMenuSpanCommonStyles\n};\nexport const filterMenu = {\n \"& .MuiPaper-root\": __spreadProps(__spreadValues({}, actionsMenuPaperCommonStyles), {\n rowGap: \"11px\",\n minWidth: \"166px\",\n marginTop: \"6px\"\n }),\n \"& span\": __spreadProps(__spreadValues({}, actionsMenuSpanCommonStyles), {\n color: \"#939393\"\n })\n};\nexport const fileName = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n maxWidth: \"240px\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\"\n};\nexport const connectingLine = {\n \"&:before\": {\n content: '\"\"',\n display: \"block\",\n width: \"1px\",\n background: \"#edf2f5\",\n height: \"100%\",\n position: \"absolute\",\n left: \"15px\",\n top: \"30px\"\n }\n};\nexport const newApplicationButton = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"18px\",\n fontWeight: \"bold\",\n lineHeight: \"1.3\",\n color: theme.palette.action.main,\n backgroundColor: \"#5BC4BF1F\",\n height: \"60px\",\n width: \"260px\",\n borderRadius: \"6px\",\n border: \"none\",\n textTransform: \"none\",\n \"@media screen and (max-width: 1130px)\": {\n fontSize: \"14px\"\n },\n \"&:hover\": {\n backgroundColor: \"#5BC4BF35\",\n border: \"none\"\n }\n};\nexport const sortableSwitchLabels = __spreadProps(__spreadValues({}, switchLabelsCommonStyles), {\n marginLeft: \"4px\"\n});\nexport const filterSwitchLabels = __spreadProps(__spreadValues({}, switchLabelsCommonStyles), {\n marginLeft: \"0px\"\n});\nexport const rowSelect = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n color: \"#666666\",\n fontWeight: \"bold\",\n borderRadius: \"6px !important\",\n \"& legend\": {\n display: \"none\"\n },\n \"& svg\": {\n display: \"none\"\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"#DBDEDF\"\n },\n \"&:hover .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"#CACDCE\"\n },\n \"& .MuiOutlinedInput-input\": {\n padding: \"4px 12px 8px 12px !important\"\n }\n};\nexport const pagination = {\n marginRight: \"24px\",\n \"& button\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#CCCCCC\",\n margin: \"0px -2px\"\n },\n \"& .Mui-selected\": {\n color: \"#666666\",\n backgroundColor: \"#FFFFFF !important\",\n \"&:hover\": {\n backgroundColor: \"#FFFFFF !important\"\n }\n },\n \"& .MuiPaginationItem-previousNext\": {\n color: \"#666666\"\n }\n};\nexport const csvExportModal = {\n display: \"flex\",\n flexDirection: \"column\",\n padding: \"60px\",\n width: \"520px\",\n borderRadius: \"6px\",\n dropShadow: \"0px 2px 14px #305A6F29\",\n position: \"absolute\",\n background: \"#FFFFFF\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n fontFamily: \"Source Sans Pro\",\n color: \"#333333\"\n};\nexport const csvExportHeader = {\n fontSize: \"20px\",\n fontWeight: \"600\"\n};\nexport const csvExportSubheader = {\n color: \"#333333\",\n fontSize: \"14px\"\n};\nexport const closeIcon = {\n position: \"absolute\",\n top: \"20px\",\n right: \"20px\",\n cursor: \"pointer\",\n color: \"#DDDDDD\"\n};\nexport const switchLabels = __spreadProps(__spreadValues({}, switchLabelsCommonStyles), {\n width: \"200px\"\n});\nexport const clearButton = __spreadProps(__spreadValues({}, baseSecondaryButtonStyles), {\n fontSize: \"10px\",\n padding: \"5px 10px\",\n \"& .MuiButton-endIcon svg\": {\n fontSize: \"10px\"\n }\n});\nexport const modalSendButton = __spreadProps(__spreadValues({}, basePrimaryButtonStyles), {\n padding: \"8px 19px\",\n \"&:focus\": {\n outline: \"none\"\n }\n});\nexport const deleteApplicant = {\n color: theme.palette.error.main,\n backgroundColor: \"#D6827D33\",\n \"&:hover\": {\n color: \"#FFFFFF\",\n backgroundColor: theme.palette.error.main,\n border: \"none\"\n }\n};\nexport const link = {\n fontSize: \"19px\",\n cursor: \"pointer\",\n color: \"#939393\",\n transition: \"color 0.2s ease-in-out\",\n \"&:hover\": {\n color: \"#737373\"\n },\n \"@media (max-width: 1450px)\": {\n fontSize: \"16px\"\n },\n \"@media (max-width: 1260px)\": {\n fontSize: \"14px\"\n }\n};\nexport const copyButton = {\n fontSize: \"12px\",\n fontWeight: \"bold\",\n backgroundColor: \"#5BC4BF1F\",\n color: theme.palette.action.main,\n borderRadius: \"6px\",\n textTransform: \"none\",\n \"&:hover\": {\n backgroundColor: theme.palette.action.main,\n color: \"#FFFFFF\"\n }\n};\nexport const actionModalFormLine = {\n position: \"relative\",\n display: \"flex\",\n flexWrap: \"wrap\",\n flexDirection: \"row\",\n columnGap: \"50px\",\n rowGap: \"26px\",\n alignItems: \"center\",\n marginBottom: \"26px\",\n width: \"100%\",\n marginLeft: \"12px\"\n};\nexport const csvExportButton = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"bold\",\n textTransform: \"none\",\n color: \"#FFFFFF\",\n backgroundColor: theme.palette.action.main,\n borderRadius: \"8px\",\n height: \"58px\",\n marginTop: \"42px\",\n \"&:hover\": {\n backgroundColor: \"#4da8a4\"\n }\n};\nexport const rightArrow = {\n display: \"none\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"sticky\",\n width: \"40px\",\n height: \"65px\",\n bottom: \"370px\",\n borderRadius: \"10px 0px 0px 10px\",\n background: \"#eeeeee\",\n zIndex: \"9999\",\n opacity: \"0.9\",\n cursor: \"pointer\"\n};\nexport const applyButton = __spreadProps(__spreadValues({}, applyButtonStyles), {\n fontSize: \"10px\"\n});\nexport const actionButton = __spreadValues({}, actionButtonStyles);\nexport const filterPopoverContent = __spreadProps(__spreadValues({}, filterPopoverContentStyles), {\n overflowY: \"scroll\"\n});\nexport const paginationContainer = {\n display: \"flex\",\n alignItems: \"center\",\n width: \"fit-content\",\n marginTop: \"5px\",\n padding: \"12px\",\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#666666\"\n};\nexport const selectedApplicantsTableHeader = {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n fontWeight: \"600\",\n color: theme.palette.primary.main,\n marginTop: \"24px\",\n marginBottom: \"20px\"\n};\nexport const checkboxLabel = {\n \"& .MuiTypography-root\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"16px\",\n color: \"#939393\"\n },\n \"& span\": {\n color: theme.palette.error.main\n }\n};\nexport const modalCreateButton = __spreadProps(__spreadValues({}, modalConfirmationButtonCommonStyles), {\n padding: \"8px 19px\"\n});\nexport const selectedTooltip = __spreadProps(__spreadValues({}, selectedTooltipCommonStyles), {\n justifyContent: \"space-evenly\",\n padding: \"20px 30px\",\n minWidth: \"665px\",\n left: \"calc(50% - 350px)\"\n});\nexport const rowSelectContainer = __spreadProps(__spreadValues({}, rowSelectContainerCommonStyles), {\n padding: \"12px\"\n});\nexport const rowSelectContainerAlt = __spreadProps(__spreadValues({}, rowSelectContainerCommonStyles), {\n padding: \"8px\"\n});\nexport const checkboxContainer = __spreadProps(__spreadValues({}, checkboxContainerStyles), {\n marginTop: \"24px\"\n});\n","\"use strict\";\nimport { AttachmentType } from \"../Application/config\";\nexport const getAttachmentType = (selectedAttachment) => {\n const contentType = selectedAttachment == null ? void 0 : selectedAttachment.attached_content_type;\n if (!contentType) return;\n const typeMap = {\n image: AttachmentType.Image,\n video: AttachmentType.Video,\n audio: AttachmentType.Audio,\n \"text/plain\": AttachmentType.Text,\n \"application/pdf\": AttachmentType.Pdf,\n \"application/msword\": AttachmentType.Word,\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": AttachmentType.Word\n };\n const typePrefix = contentType.split(\"/\")[0];\n const typeFull = contentType;\n return typeMap[typeFull] || typeMap[typePrefix];\n};\n","\"use strict\";\nexport const getPlatform = () => {\n const userAgent = navigator.userAgent;\n return {\n isAndroid: /android/i.test(userAgent),\n isIOS: /iPad|iPhone|iPod/.test(userAgent),\n isMac: /Macintosh/.test(userAgent),\n isWindows: /Windows/.test(userAgent),\n isMobile: /android/i.test(userAgent) || /iPad|iPhone|iPod/.test(userAgent)\n };\n};\n","\"use strict\";\nimport emojiRegex from \"emoji-regex\";\nexport const emojiInString = (text) => {\n const regex = emojiRegex();\n return text.match(regex);\n};\n","\"use strict\";\nimport dayjs from \"dayjs\";\nimport utc from \"dayjs/plugin/utc\";\nimport timezone from \"dayjs/plugin/timezone\";\nimport advanced from \"dayjs/plugin/advancedFormat\";\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(advanced);\nconst ALLOWED_FORMATS = {\n long: \"Do MMMM YYYY[,] h:mma\",\n short: \"Do MMM YYYY\",\n shortWithDayOfWeek: \"ddd, D MMM YYYY\",\n onlyTime: \"LT\",\n ymd: \"YYYY-MM-DD\"\n};\nconst formatToUserTimeZone = (timeString, format = \"long\") => {\n var _a;\n return dayjs(timeString).tz(userTimeZone).format((_a = ALLOWED_FORMATS[format]) != null ? _a : ALLOWED_FORMATS.short);\n};\nexport const userTimeZone = (() => {\n var _a;\n return ((_a = document.querySelector('meta[name=\"user-timezone\"]')) == null ? void 0 : _a.getAttribute(\"value\")) || dayjs.tz.guess();\n})();\nexport default formatToUserTimeZone;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nexport const getLocalStorageItem = (key, defaultValue = {}) => {\n const localStoreValue = localStorage.getItem(key);\n return localStoreValue ? JSON.parse(localStoreValue) : defaultValue;\n};\nexport const addLocalStorageItem = (key, value) => {\n localStorage.setItem(\n key,\n JSON.stringify(__spreadValues(__spreadValues({}, getLocalStorageItem(key)), value))\n );\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nexport const getUpdatedSortableColumns = (sortableColumns, columnsAndLimitPreferences) => {\n const sortableColumnMap = /* @__PURE__ */ new Map();\n sortableColumns.forEach((column) => {\n sortableColumnMap.set(column.id, column);\n });\n const usedIds = [];\n const updatedColumns = [];\n columnsAndLimitPreferences.sortable_columns.forEach((column) => {\n const matchingColumn = sortableColumnMap.get(column.id);\n if (matchingColumn) {\n updatedColumns.push(__spreadProps(__spreadValues({}, matchingColumn), {\n sortable: column.sortable,\n canToggle: column.canToggle,\n enabled: column.enabled\n }));\n usedIds.push(matchingColumn.id);\n }\n });\n sortableColumns.forEach((column) => {\n if (!usedIds.includes(column.id)) {\n updatedColumns.push(column);\n }\n });\n return { updatedColumns };\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport queryString from \"query-string\";\nconst BASE_URL = window.location.origin;\nclass RecruitApiClient {\n constructor() {\n this.handleResponse = (response) => __async(this, null, function* () {\n if (response.ok) {\n const resHead = {};\n [...response.headers].forEach(\n (header) => resHead[header[0]] = header[1]\n );\n const text = yield response.text();\n const data = text ? JSON.parse(text) : null;\n return { res: data, resHead };\n }\n return response.json().then((error) => {\n error.code = response.status;\n throw error;\n });\n });\n this.get = (path, params = null, headers = null, download) => fetch(\n `${BASE_URL}${path}${params ? `?` : \"\"}${queryString.stringify(params, {\n arrayFormat: \"bracket\",\n encode: false\n })}`,\n {\n headers: this.getHeaders(headers)\n }\n ).then((r) => {\n if (download) return r.blob();\n return this.handleResponse(r);\n });\n this.post = (path, params = {}, headers = null, download) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers),\n method: \"POST\",\n body: JSON.stringify(params)\n }).then((r) => {\n if (download) return r.blob();\n return this.handleResponse(r);\n });\n this.put = (path, params = {}, headers = null) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers),\n method: \"PUT\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r));\n this.delete = (path, params = {}, headers = null) => fetch(`${BASE_URL}${path}`, {\n headers: this.getHeaders(headers),\n method: \"DELETE\",\n body: JSON.stringify(params)\n }).then((r) => this.handleResponse(r));\n }\n getHeaders(headers) {\n return Object.assign(\n {},\n {\n \"Content-Type\": \"application/json\"\n },\n headers\n );\n }\n}\nexport default new RecruitApiClient();\n","\"use strict\";\nimport RecruitApiClient from \"../RecruitApiClient\";\nconst BASE_URL = \"/api/v4\";\nclass Api {\n constructor() {\n this.getEventOptions = () => RecruitApiClient.get(`${BASE_URL}/calendar/event_types`);\n this.getEventRecruiters = () => RecruitApiClient.get(`${BASE_URL}/calendar/users`);\n this.getEvents = (date, typeId) => RecruitApiClient.get(`${BASE_URL}/calendar/events`, {\n date,\n event_type_id: typeId || void 0\n });\n this.deleteEvent = (id) => RecruitApiClient.delete(`${BASE_URL}/calendar/events/${id}`);\n this.createEventsBatches = (params) => RecruitApiClient.post(`${BASE_URL}/calendar/event_batches`, {\n event_batch: params\n });\n this.removeAttendees = (eventId, params) => RecruitApiClient.post(`${BASE_URL}/calendar/events/${eventId}/remove_attendees`, {\n attendee_ids: params\n });\n this.updateEvent = (id, params) => RecruitApiClient.put(`${BASE_URL}/calendar/events/${id}`, params);\n this.updateAttendeeInvitation = (eventId, attendeeId, state) => RecruitApiClient.put(`${BASE_URL}/calendar/events/${eventId}/attendees/${attendeeId}`, {\n attendee: { state }\n });\n this.getEmailTemplates = () => RecruitApiClient.get(`${BASE_URL}/email_templates?group_templates=true`);\n this.getEmailTemplate = (templateId) => RecruitApiClient.get(`${BASE_URL}/email_templates/${templateId}`);\n this.getSmsTemplates = () => RecruitApiClient.get(`${BASE_URL}/sms_templates`);\n this.saveSmsTemplate = (smsTemplateName, smsMessage) => RecruitApiClient.post(`${BASE_URL}/sms_templates`, {\n sms_template: {\n title: smsTemplateName,\n body: smsMessage\n }\n });\n this.smsCandidates = (eventId, applicationIds, content) => RecruitApiClient.post(`calendar/events/${eventId}/sms_candidates`, {\n applications_ids: applicationIds,\n content\n });\n this.getEventApplicationStatuses = (eventId) => RecruitApiClient.get(\n `${BASE_URL}/calendar/events/${eventId}/event_application_statuses`\n );\n this.changeApplicationStatuses = (eventId, statusId, applicationIds) => RecruitApiClient.post(\n `${BASE_URL}/calendar/events/${eventId}/change_status`,\n {\n application_ids: applicationIds,\n change_status: statusId\n }\n );\n this.sendEmailBatchesToCandidates = (eventId, data) => RecruitApiClient.post(`${BASE_URL}/calendar/events/${eventId}/email_candidates`, data);\n }\n /**\n * @deprecated remove later\n */\n // inviteToTimeslot = (eventTypeId, jobId, userId, invitation: {}) =>\n // this.post('invitations', {\n // user_id: userId,\n // event_type_id: eventTypeId,\n // job_id: jobId,\n // invitation\n // });\n // addToEvent = (eventId, jobId, applicationId) =>\n // this.post(`events/${eventId}/attendees`, {\n // job_id: jobId,\n // application_id: applicationId\n // });\n // getJobApplications = (id: number) => this.get(`jobs/${id}/applications`);\n // getRecrutRecruitersById = (id: number) => this.custom_get(`users?event_batch_id=${id}`);\n // getEventBatchesById = (id: string) => this.get(`event_batches/${id}`);\n // getEvent = (id: string) => this.get(`events/${id}`);\n // deleteEventBatch = (id: number) => this.delete(`event_batches/${id}`);\n // updateEventsBatches = (event, id) => this.put(`event_batches/${id}`, event);\n // getApplications = (id: string, body: {}) => this.get(`event_batches/${id}/applications`, body);\n // getStatuses = (id: string) => this.get(`event_batches/${id}/statuses`);\n // getAvailabilities = () => this.get('availabilities');\n // saveAvailabilities = (availabilities) => this.put('availabilities', availabilities);\n // createInvitations = (id: string, invitation: {}) =>\n // this.post(`event_batches/${id}/invitations`, invitation);\n}\nexport default new Api();\n","\"use strict\";\nimport { theme } from \"../../../ThemeContext/ThemeObject\";\nconst MAIN_COLOR = \"#15C7C0\";\nconst ALTERNATE_COLOR = \"rgba(21, 198, 193, 0.07)\";\nconst BAD_COLOR = \"#FF2121\";\nconst ALTERNATE_BAD_COLOR = \"rgba(252, 151, 151, 0.07)\";\nconst TEAL_LIGHT = \"#EDF2F5\";\nexport const classes = {\n contentHeader: {\n color: \"#004665\",\n marginBottom: \"1.25rem\"\n },\n modalContent: {\n display: \"flex\",\n margin: \"auto\",\n \"& .DayPicker-Weekday abbr\": {\n fontSize: \"0.85rem\",\n color: \"#939393\",\n textDecoration: \"none\"\n },\n \"& .DayPicker-Caption\": {\n color: \"#004665\",\n fontWeight: \"600\",\n marginBottom: \"15px\",\n fontSize: \"17px\"\n },\n \"& .DayPicker-Day\": {\n borderRadius: 100,\n padding: \"0\",\n border: \"0\",\n width: \"40px\",\n height: \"40px\"\n },\n \"& .DayPicker-Day--event\": {\n backgroundColor: \"#EEFBFB\"\n },\n \"& .DayPicker-Day--highlighted\": {\n backgroundColor: \"#EEFBFB\",\n color: \"#15C7C0\"\n },\n \"& .DayPicker-Day--today\": {\n color: \"black\"\n },\n \"& .DayPicker-Day--selected\": {\n backgroundColor: \"#15C7C0 !important\",\n color: \"white !important\"\n },\n \"& .DayPicker-wrapper\": {\n paddingTop: \"0.5rem\",\n fontSize: \"0.85rem\",\n paddingBottom: \"0\",\n \"& .DayPicker-NavButton\": {\n width: \"1rem\",\n height: \"1rem\"\n },\n \"& .DayPicker-Day--disabled\": {\n backgroundColor: \"white\",\n pointerEvents: \"none\"\n }\n }\n },\n paper: {\n display: \"inline-grid\",\n padding: \"6px 12px\",\n width: \"100%\",\n boxShadow: \"none\",\n \"& p\": {\n fontSize: \"0.85rem\",\n color: \"#6c757d\"\n },\n \"& .MuiNativeSelect-select:focus\": {\n borderRadius: \"6px\"\n }\n },\n progressHeader: {\n fontSize: \"24px\",\n color: \"#666666\",\n paddingBottom: 4,\n fontWeight: \"bold\"\n },\n contentWrapper: {\n position: \"relative\",\n fontSize: \"0.8rem\",\n padding: \"4px 10px 4px 14px\"\n },\n gridWrapper: {\n flexGrow: 1,\n maxWidth: \"60rem\"\n },\n datePickerHeaderWrapper: {\n display: \"flex\",\n alignItems: \"center\",\n \"& div\": {\n fontSize: \"0.8rem\"\n },\n \"& .MuiFormControlLabel-root\": {\n alignItems: \"baseline\",\n maxWidth: \"initial\",\n minWidth: \"inherit\",\n \"& .MuiFormControlLabel-label\": {\n marginBottom: \"auto\",\n paddingTop: \"9px\"\n }\n }\n },\n datePicker: {\n fontFamily: \"Source Sans Pro\",\n width: \"100%\",\n color: \"#666666\",\n borderRadius: \"6px\",\n paddingRight: \"20px\",\n \"& input\": {\n padding: \"3px 16px 9px 16px\",\n fontFamily: \"Source Sans Pro\"\n },\n \"& fieldset\": {\n borderColor: \"#DDDDDD\",\n \"& legend\": {\n display: \"none\"\n }\n },\n \"& button\": {\n padding: \"0px\",\n transform: \"translate(-2px, -1.5px)\",\n \"&:hover\": {\n background: \"transparent\",\n \"& svg\": {\n color: \"#888888\"\n }\n }\n },\n \"& .MuiInputAdornment-root\": {\n marginLeft: \"0px\"\n },\n \"& svg\": {\n color: \"#AAAAAA\"\n }\n },\n buttonBackSuccess: {\n backgroundColor: ALTERNATE_COLOR,\n color: MAIN_COLOR,\n borderColor: ALTERNATE_COLOR,\n fontSize: 16,\n marginRight: \"1rem\",\n padding: \"14px 22px\",\n fontWeight: \"700\",\n borderRadius: 6,\n userSelect: \"none\",\n \"&:hover\": {\n backgroundColor: ALTERNATE_COLOR,\n borderColor: ALTERNATE_COLOR,\n cursor: \"pointer\"\n },\n \"&:focus\": {\n borderColor: MAIN_COLOR\n }\n },\n buttonBackFail: {\n backgroundColor: ALTERNATE_BAD_COLOR,\n color: BAD_COLOR,\n borderColor: ALTERNATE_BAD_COLOR,\n fontSize: \"0.8rem\",\n marginRight: \"1rem\",\n padding: \"8px 12px\",\n fontWeight: \"700\",\n \"&:hover\": {\n backgroundColor: ALTERNATE_BAD_COLOR,\n borderColor: ALTERNATE_BAD_COLOR\n },\n \"&:focus\": {\n borderColor: BAD_COLOR\n }\n },\n repeatDayPopoverWrapper: {\n \"& .MuiPopover-paper\": {\n boxShadow: \"0px 2px 14px rgba(48, 90, 111, 0.16)\",\n padding: \"20px 24px\",\n maxHeight: 380,\n overflowY: \"scroll\",\n minWidth: 230\n }\n },\n checkBoxGroupWrapper: {\n \"& span\": {\n fontSize: \"0.8rem\"\n },\n \"& .MuiSvgIcon-root\": {\n fontSize: \"1.25rem\"\n },\n minWidth: \"14rem\",\n maxWidth: \"14rem\"\n },\n checkboxLabel: {\n \"& .MuiTypography-root\": {\n fontFamily: \"Source Sans Pro\"\n },\n paddingLeft: \"4px\",\n marginTop: 2\n },\n popoverWrapper: {\n \"& .MuiPopover-paper\": {\n boxShadow: \"none\",\n border: \"#e1e1e1 1.7px solid\",\n padding: \"10px\"\n }\n },\n inputFullWidth: {\n \"& > div\": { width: \"100%\" }\n },\n jobCheckBox: {\n flexDirection: \"row\",\n display: \"flex\",\n alignItems: \"center\",\n \"& > span\": {\n padding: 7\n },\n \"& > p\": {\n marginTop: 0\n }\n },\n availabilitySummary: {\n height: \"9rem\",\n border: \"#e1e1e1 1.7px solid\",\n borderRadius: \"6px\",\n backgroundColor: \"#FAFAFA\",\n padding: \"20px 15px\",\n \"& h1\": {\n color: \"black\",\n marginTop: \"0.15rem\"\n }\n },\n conflictsContentWrapper: {\n \"& contentSubheader\": {\n color: \"#6c757d\",\n fontSize: \"0.8rem\",\n margin: \"0.5rem 0 1.5rem 0\"\n },\n \"& p\": {\n color: \"#6c757d\",\n fontSize: \"0.8rem\",\n marginBottom: \"0.25rem\"\n },\n \"& h2\": {\n marginBottom: \"0rem\",\n marginTop: \"0.2rem\"\n },\n \"& h1\": {\n marginBottom: \"0rem\"\n }\n },\n eventSummaryGrid: {\n padding: \"2px 10px !important\",\n marginTop: \"1rem\",\n \"& .MuiPaper-root\": {\n height: \"2rem\",\n padding: \"0 9px\"\n }\n },\n eventSummaryGridWrapper: {\n margin: \"2px 10px !important\",\n border: `${MAIN_COLOR} 2px solid`,\n borderRadius: \"6px\",\n backgroundColor: \"#FAFAFA\",\n padding: \"1rem\",\n \"& p\": {\n fontSize: \"0.85rem\"\n },\n \"& h2\": {\n color: MAIN_COLOR\n }\n },\n loadingStepsWrapper: {\n width: \"30rem\",\n justifyContent: \"center\",\n margin: \"3rem\"\n },\n autocompleteListboxStyle: {\n fontFamily: \"Source Sans Pro\",\n color: \"#333333\",\n maxHeight: \"200px\"\n },\n errorMessage: {\n fontFamily: \"inherit\",\n color: theme.palette.error.main,\n marginLeft: \"6px\"\n },\n avatar: {\n color: \"#084D6D\",\n fontSize: \"12px\",\n fontWeight: \"bold\",\n width: 30,\n height: 30,\n background: TEAL_LIGHT\n },\n editIcon: { cursor: \"pointer\", color: \"#666666\" },\n autocompleteTextfield: {\n paddingRight: 1,\n \"& .MuiFormHelperText-root\": {\n margin: \"0px 8px\",\n fontSize: \"12px\",\n fontFamily: \"inherit\",\n color: theme.palette.error.main\n }\n },\n multipleDatesIndicator: {\n marginLeft: 2,\n padding: \"0px 8px\",\n backgroundColor: TEAL_LIGHT,\n borderRadius: \"16px\",\n color: \"#084D6D\",\n fontWeight: \"bold\",\n cursor: \"pointer\"\n },\n noCandidatesAssigned: {\n height: \"100%\",\n justifyContent: \"center\",\n color: \"#939393\",\n fontSize: \"14px\"\n }\n};\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { classes as sharedClasses } from \"../styles\";\nexport const classes = __spreadProps(__spreadValues({}, sharedClasses), {\n buttonProgress: {\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n marginTop: -12,\n marginLeft: -12\n },\n editTabsContainer: {\n flexGrow: 1,\n display: \"flex\",\n borderColor: \"none\"\n },\n modalWrapper: {\n \"& .MuiPaper-root\": {\n maxWidth: \"100%\"\n }\n },\n modalHeaderRight: {\n display: \"flex\",\n float: \"right\"\n },\n modalActionButtons: {\n display: \"flex\",\n \"& span\": {\n width: \"1rem\",\n borderRight: \"1px solid #EDEDED\",\n paddingLeft: \"10px\"\n },\n \"& svg\": {\n width: \"1.5rem\",\n height: \"1.5rem\",\n fontSize: \"1.75rem\",\n marginLeft: \"px\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n }\n },\n checkBoxes: {\n color: `#15C7C0 !important`\n },\n checkBoxOff: {\n color: \"#6c757d\"\n }\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nimport { classes as sharedClasses } from \"../styles\";\nexport const classes = __spreadProps(__spreadValues({}, sharedClasses), {\n dialog: {\n \"& .MuiPaper-root\": {\n width: \"725px\"\n }\n },\n modalContainer: {\n padding: 5,\n width: \"725px\"\n },\n tabsContainer: {\n flexDirection: \"row\",\n borderBottom: \"1px solid #EDEDED\",\n marginBottom: \"20px\",\n columnGap: 1\n },\n tab: {\n margin: \"0px 8px\",\n cursor: \"pointer\",\n paddingBottom: 0.5\n },\n selectedTab: {\n borderBottom: \"1px solid #5BC4C0\",\n color: \"#084D6D\",\n fontWeight: \"bold\"\n },\n checkbox: {\n color: \"#DDDDDD\",\n \"&.Mui-checked\": {\n color: \"#5BC4BF\"\n },\n padding: \"unset\"\n },\n candidateList: {\n flexGrow: 1,\n border: \"1px solid #DDDDDD\",\n borderRadius: \"6px\",\n padding: 2,\n fontWeight: 600,\n rowGap: 0.5\n },\n acceptingInviteContainer: {\n boxShadow: \"0px 12px 25px 0px #33333340\",\n padding: \"20px 40px\",\n flexDirection: \"row\",\n justifyContent: \"space-between\",\n alignItems: \"center\"\n },\n acceptingInviteButtonGroup: {\n border: \"2px solid #7CD0CC\",\n borderRadius: \"6px\",\n button: {\n color: \"#7CD0CC\",\n textTransform: \"capitalize\",\n padding: \"8px 24px\",\n fontWeight: \"bold\",\n \"&:focus\": {\n outline: \"none\"\n }\n }\n },\n selectedCandidatesIndicatorContainer: {\n position: \"absolute\",\n width: \"500px\",\n left: \"calc(50% - 250px)\",\n bottom: \"5%\",\n background: \"#F2F2F2\",\n borderRadius: \"6px\",\n padding: \"12px 48px\",\n flexDirection: \"row\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n fontSize: \"18px\",\n fontWeight: 600,\n color: \"#666666\"\n },\n clearSelectionButton: {\n fontSize: \"16px\",\n color: \"#084D6D\",\n fontWeight: \"700\",\n textDecoration: \"underline\",\n borderRadius: \"10px\",\n padding: \"4px 12px\",\n \"&:hover\": {\n background: \"rgba(171, 205, 239, 0.3)\"\n }\n },\n noCandidatesContainer: {\n color: \"#DDDDDD\",\n justifyContent: \"center\",\n alignItems: \"center\",\n flexGrow: 0.5,\n rowGap: 4\n },\n longEventTitle: {\n paddingTop: \"unset\",\n paddingBottom: 3,\n width: \"90%\",\n overflow: \"hidden\",\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\"\n },\n modalDeleteAndCloseContainer: {\n flexDirection: \"row\",\n position: \"absolute\",\n top: \"20px\",\n right: \"20px\",\n columnGap: 2\n },\n candidatesListContainer: {\n rowGap: 2,\n overflow: \"auto\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n }\n },\n actionModalContent: {\n flexGrow: 1,\n rowGap: 3,\n overflow: \"auto\",\n \"&::-webkit-scrollbar\": {\n display: \"none\"\n },\n marginTop: 2\n },\n actionModalTemplateTitle: {\n width: \"290px\",\n \"& .MuiInputBase-input\": { margin: \"unset\", marginTop: 1 }\n },\n link: {\n color: \"unset !important\",\n display: \"flex\",\n flexDirection: \"row\"\n }\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __defProps = Object.defineProperties;\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\nvar __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));\nexport const InitialScoutCalendarState = {\n apiKey: \"\",\n snackbar: {\n message: \"\",\n state: \"success\"\n },\n showCreateEventModal: false,\n showViewEventModal: false,\n createEventObject: {\n step: 1,\n eventType: null,\n maxCandidates: \"1\",\n recruiters: [],\n sessions: \"1\",\n breaks: \"0\",\n duration: \"15\",\n eventName: \"\",\n eventDescription: \"\",\n eventDate: /* @__PURE__ */ new Date(),\n eventId: 0,\n candidates: [],\n dates: [],\n owner: \"\"\n },\n errorsMessage: {\n eventType: \"\",\n duration: \"\",\n maxCandidates: \"\",\n sessions: \"\",\n recruiters: \"\",\n eventName: \"\",\n time: \"\",\n date: \"\",\n dates: \"\"\n },\n createMultipleEvents: false,\n weekStart: /* @__PURE__ */ new Date(),\n permissions: null\n};\nexport const ScoutCalendarReducer = (state, action) => {\n switch (action.type) {\n case \"SET_APIKEY\":\n return __spreadProps(__spreadValues({}, state), { apiKey: action.payload });\n case \"SET_SNACKBAR\":\n return __spreadProps(__spreadValues({}, state), { snackbar: action.payload });\n case \"SET_SHOW_CREATE_EVENT_MODAL\":\n return __spreadProps(__spreadValues({}, state), { showCreateEventModal: action.payload });\n case \"SET_SHOW_VIEW_EVENT_MODAL\":\n return __spreadProps(__spreadValues({}, state), { showViewEventModal: action.payload });\n case \"SET_CREATE_EVENT_OBJECT\":\n return __spreadProps(__spreadValues({}, state), { createEventObject: action.payload });\n case \"SET_ERROR_MESSAGE\":\n return __spreadProps(__spreadValues({}, state), { errorsMessage: action.payload });\n case \"CREATE_MULTIPLE_EVENTS\":\n return __spreadProps(__spreadValues({}, state), { createMultipleEvents: action.payload });\n case \"SET_WEEK_START\":\n return __spreadProps(__spreadValues({}, state), { weekStart: action.payload });\n case \"SET_PERMISSIONS\":\n return __spreadProps(__spreadValues({}, state), { permissions: action.payload });\n case \"RESET_STATE\":\n return __spreadProps(__spreadValues({}, InitialScoutCalendarState), {\n snackbar: state.snackbar,\n weekStart: state.weekStart,\n apiKey: state.apiKey,\n permissions: state.permissions\n });\n }\n};\n","\"use strict\";\nimport { darken } from \"@material-ui/core\";\nimport { theme } from \"../ThemeContext/ThemeObject\";\nexport const classes = {\n itemContainer: {\n padding: \"30px\",\n borderBottom: \"1px solid #EAEEF0\",\n \"& h3\": {\n fontSize: 20,\n lineHeight: \"20px\",\n color: theme.palette.primary.dark,\n fontWeight: 600,\n textTransform: \"capitalize\",\n marginBottom: \"10px\"\n },\n \"& > span\": {\n color: \"#777777\",\n fontSize: 15,\n marginBottom: \"10px\",\n display: \"block\",\n textTransform: \"capitalize\"\n },\n \"&:hover\": {\n background: \"#F3F6F7\",\n cursor: \"pointer\"\n }\n },\n itemDetails: {\n padding: \"4px 0\",\n color: \"#777777\",\n display: \"flex\",\n alignItems: \"center\",\n \"& svg\": {\n marginRight: \"6px\"\n }\n },\n closeIcon: {\n position: \"absolute\",\n top: \"20px\",\n right: \"20px\",\n color: \"#DDDDDD\",\n \"&:hover\": {\n cursor: \"pointer\"\n }\n },\n addNewEventsPopover: {\n padding: 2,\n rowGap: 1,\n \"& div\": {\n fontFamily: \"Source Sans Pro\",\n fontSize: \"14px\",\n fontWeight: \"bold\",\n color: \"#666666\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.palette.primary.main\n }\n }\n },\n calendarArrows: {\n color: \"#BFBFBF\",\n fontSize: \"27px\",\n opacity: \"0.7\",\n \"&:hover\": {\n cursor: \"pointer\",\n opacity: \"0.4\"\n }\n },\n calendarHeader: {\n fontSize: \"22px\",\n fontWeight: \"bold\",\n color: \"#084D6D\",\n cursor: \"pointer\"\n },\n viewAndSettingsButton: {\n minWidth: \"unset\",\n border: \"1px solid #EAEEF0\",\n padding: \"6px 12px\"\n },\n viewAndSettingsContainer: {\n width: \"150px\",\n flexDirection: \"row\",\n justifyContent: \"flex-end\",\n columnGap: 1\n },\n weekPeriodContainer: {\n flexDirection: \"row\",\n justifyContent: \"center\",\n columnGap: 2,\n paddingBottom: 3,\n alignItems: \"center\"\n },\n eventCreatedModalContainer: {\n padding: 3,\n width: \"428px\",\n alignItems: \"center\",\n rowGap: 2,\n \"& .MuiTypography-root\": { fontFamily: \"Source Sans Pro\" }\n },\n eventCreatedModalTitle: {\n fontSize: \"22px\",\n fontWeight: \"bold\",\n color: \"#666666\"\n },\n modalTitle: {\n fontSize: \"25px\",\n color: \"#084D6D\",\n fontWeight: \"bold\",\n paddingBottom: 6,\n paddingTop: 1,\n lineHeight: \"normal\"\n },\n listViewCircleIcon: {\n padding: \"5px\",\n color: \"#084D6D\",\n background: \"#D6DEE2\",\n borderRadius: \"50%\",\n fontSize: \"1.3rem\"\n },\n listViewSectionTitle: {\n color: \"#939393\",\n fontSize: \"16px\",\n paddingBottom: 0.5\n },\n listViewInfoTag: {\n background: \"#F3F3F3\",\n padding: \"4px 12px\",\n borderRadius: \"1rem\",\n flexDirection: \"row\",\n color: \"#666666\",\n columnGap: 0.5,\n fontSize: \"12px\"\n },\n listViewNoCandidatesAssigned: {\n height: \"100%\",\n justifyContent: \"center\",\n color: \"#939393\",\n fontSize: \"14px\"\n },\n eventSessionsContainer: {\n flexDirection: \"row\",\n flexWrap: \"wrap\",\n justifyContent: \"center\",\n columnGap: 2\n },\n listViewEventTime: {\n fontSize: \"16px\",\n fontWeight: \"bold\",\n color: \"#666666\",\n cursor: \"pointer\"\n },\n listViewEventTitle: {\n fontSize: \"20px\",\n fontWeight: \"bold\",\n color: \"#333333\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: darken(\"#333\", 1)\n }\n },\n dateCalendar: {\n \".Mui-selected\": {\n backgroundColor: \"#5BC4C0 !important\"\n },\n height: \"300px\"\n },\n timezoneInfo: {\n flexDirection: \"row\",\n padding: \"8px 16px\",\n color: \"#666666\",\n border: `1px solid ${theme.palette.action.main}`,\n borderRadius: \"6px\",\n marginBottom: 3,\n columnGap: 0.75,\n svg: { color: theme.palette.action.main, fontSize: \"1rem\" }\n }\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport { useState } from \"react\";\nexport const useInitSeekAd = () => {\n const [jsonResponse, setJsonResponse] = useState({});\n const mutate = (jobId, seekAccountId) => __async(void 0, null, function* () {\n const param = seekAccountId ? { seek_account_id: seekAccountId } : {};\n try {\n const response = yield fetch(`/api/v4/seek/jobs/${jobId}/job_ads/init_seek_ad`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify(param)\n });\n const json = yield response.json();\n setJsonResponse(json);\n } catch (exception) {\n console.log(exception);\n }\n });\n const reset = () => {\n setJsonResponse({});\n };\n return { mutate, jsonResponse, reset };\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport { useState, useEffect } from \"react\";\nexport const usePreviewSeekAd = (jobAdId) => {\n const [previewUrl, setPreviewUrl] = useState(\"\");\n useEffect(() => {\n const getPreviewData = () => __async(void 0, null, function* () {\n try {\n const response = yield fetch(`/api/v4/seek/job_ads/${jobAdId}/preview`, {\n method: \"POST\"\n });\n const data = yield response.json();\n setPreviewUrl(data.url);\n } catch (e) {\n console.error(e);\n }\n });\n getPreviewData();\n }, [jobAdId]);\n return { previewUrl };\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport { useState, useEffect } from \"react\";\nexport const useSeekAccounts = ({ jobId }) => {\n const [seekAccounts, setSeekAccounts] = useState([]);\n useEffect(() => {\n const getSeekAccounts = () => __async(void 0, null, function* () {\n try {\n const response = yield fetch(`/api/v4/seek/jobs/${jobId}/accounts`);\n const { accounts } = yield response.json();\n setSeekAccounts(accounts);\n } catch (error) {\n console.log(error);\n }\n });\n getSeekAccounts();\n }, [jobId]);\n return { seekAccounts, setSeekAccounts };\n};\n","\"use strict\";\nimport { useSeekGlobalData } from \"./useSeekGlobalData\";\nexport const useSeekCurrencies = () => {\n const { processedData, setProcessedData } = useSeekGlobalData({\n key: \"currencies\",\n endpoint: \"/api/v4/seek/currencies\"\n });\n return { currencies: processedData, setCurrencies: setProcessedData };\n};\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport { useState, useEffect } from \"react\";\nimport axios from \"axios\";\nexport const useSeekGlobalData = ({ key, endpoint }) => {\n const [processedData, setProcessedData] = useState([]);\n useEffect(() => {\n const getCurrencies = () => __async(void 0, null, function* () {\n const dataStr = localStorage.getItem(key);\n if (dataStr) {\n const dataFromLocalStorage = JSON.parse(dataStr);\n setProcessedData(dataFromLocalStorage);\n return;\n }\n try {\n const { data } = yield axios.get(endpoint);\n const dataFromApi = data.data[key];\n setProcessedData(dataFromApi);\n localStorage.setItem(key, JSON.stringify(dataFromApi));\n } catch (error) {\n console.log(error);\n }\n });\n getCurrencies();\n }, [endpoint, key]);\n return { processedData, setProcessedData };\n};\n","\"use strict\";\nimport { useSeekGlobalData } from \"./useSeekGlobalData\";\nexport const useSeekPayTypes = () => {\n const { processedData, setProcessedData } = useSeekGlobalData({\n key: \"payTypes\",\n endpoint: \"/api/v4/seek/pay_types\"\n });\n return { payTypes: processedData, setPayTypes: setProcessedData };\n};\n","\"use strict\";\nimport { theme } from \"./ThemeContext/ThemeObject\";\nexport const classes = {\n tableHeader: {\n fontFamily: \"Source Sans Pro\",\n fontWeight: \"bold\",\n color: theme.palette.primary.main,\n textTransform: \"capitalize\",\n paddingLeft: 2,\n paddingBottom: 3\n },\n tableStyling: {\n \"& .MuiTableCell-root\": {\n fontFamily: \"Source Sans Pro\",\n borderInline: \"none\",\n borderTop: \"none\"\n },\n \"& .MuiTable-root\": {\n borderCollapse: \"collapse\"\n }\n }\n};\n","\"use strict\";\nimport {\n BLACK,\n DARK_RED,\n GREEN,\n LIGHT_GREEN,\n LIGHT_RED,\n RED,\n SCOUT_BLUE,\n SCOUT_BLUE_DARK,\n SCOUT_SECONDARY_BLUE,\n SCOUT_SECONDARY_LIGHT_BLUE,\n SCOUT_TEAL,\n WHITE,\n LIGHT_BLUE,\n PURPLE,\n PINK,\n MEDIUM_RED,\n DARK_BLUE,\n YELLOW,\n OPAQUE_GREEN,\n OPAQUE_BLUE,\n OPAQUE_PINK,\n OPAQUE_RED,\n OPAQUE_DARK_BLUE,\n OPAQUE_YELLOW,\n OPAQUE_PURPLE,\n GREY,\n DARK_GREY\n} from \"./constants\";\nexport const theme = {\n spacing: (factor) => `${8 * factor}px`,\n palette: {\n primary: {\n main: SCOUT_BLUE,\n dark: SCOUT_BLUE_DARK\n },\n secondary: {\n main: SCOUT_SECONDARY_BLUE,\n light: SCOUT_SECONDARY_LIGHT_BLUE,\n medium: LIGHT_BLUE,\n purple: PURPLE,\n pink: PINK,\n mediumRed: MEDIUM_RED,\n darkBlue: DARK_BLUE,\n yellow: YELLOW\n },\n success: {\n main: GREEN,\n light: LIGHT_GREEN\n },\n opaque: {\n green: OPAQUE_GREEN,\n blue: OPAQUE_BLUE,\n pink: OPAQUE_PINK,\n red: OPAQUE_RED,\n darkBlue: OPAQUE_DARK_BLUE,\n yellow: OPAQUE_YELLOW,\n purple: OPAQUE_PURPLE\n },\n action: {\n main: SCOUT_TEAL,\n light: LIGHT_GREEN\n },\n error: {\n main: RED,\n light: LIGHT_RED,\n dark: DARK_RED\n },\n common: {\n white: WHITE,\n black: BLACK,\n grey: GREY,\n darkGrey: DARK_GREY\n }\n },\n typography: {\n fontFamily: \"Source Sans Pro\"\n },\n props: {\n MuiButton: {\n variant: \"contained\",\n color: \"primary\",\n disableElevation: true\n },\n MuiSelect: {\n variant: \"standard\"\n },\n MuiFormControl: {\n variant: \"standard\"\n }\n },\n overrides: {\n MuiAutocomplete: {\n inputRoot: {\n flexGrow: 1,\n marginRight: 12,\n background: \"#FAFAFA\",\n border: \"1px solid #EAEEF0\",\n borderRadius: 6,\n justifyContent: \"center\",\n \"& svg\": {\n fill: \"#939393\"\n },\n \"& fieldset\": {\n border: 0\n },\n \"& input\": {\n padding: \"14px 8px !important\"\n },\n \"&:hover\": {\n border: \"1px solid #dde2e5 !important\"\n },\n \"&.Mui-disabled\": {\n opacity: 0.7,\n pointerEvents: \"none\",\n color: \"inherit\"\n }\n },\n paper: {\n boxShadow: \"0px 2px 14px 0px rgba(48,90,111,0.16);\"\n }\n },\n MuiSelect: {\n root: {\n height: \"100%\",\n padding: 0,\n display: \"flex\",\n alignItems: \"center\",\n color: \"#333333\",\n paddingLeft: 20,\n \"&:focus\": {\n backgroundColor: \"#FFF !important\"\n }\n },\n selectMenu: {\n height: \"100%\"\n }\n },\n MuiPopover: {\n paper: {\n boxShadow: \"0px 2px 14px 0px rgb(48 90 111 / 16%)\"\n }\n },\n MuiOutlinedInput: {\n input: {\n height: \"2.75rem\",\n padding: \"0px 15px\",\n fontSize: \"0.85rem\"\n },\n root: {\n \"& fieldset\": {\n borderColor: \"#DDD !important\"\n },\n \"&:hover fieldset\": {\n borderColor: \"#bdbdbd !important\"\n },\n \"&.Mui-focused fieldset\": {\n borderColor: `${SCOUT_BLUE} !important`\n },\n \"&.Mui-error fieldset\": {\n borderColor: `${RED} !important`\n },\n \"&.Mui-disabled\": {\n opacity: 0.7,\n pointerEvents: \"none\"\n }\n }\n },\n MuiTextField: {\n root: {\n marginTop: \"0.5rem\"\n }\n },\n MuiAccordionSummary: {\n root: {\n backgroundColor: SCOUT_BLUE,\n color: WHITE,\n maxHeight: 40,\n minHeight: \"auto\",\n \"&$expanded\": {\n minHeight: \"auto\"\n }\n },\n content: {\n \"&$expanded\": {\n margin: \"inherit\"\n }\n },\n expandIcon: {\n color: WHITE\n }\n },\n MuiButton: {\n root: {\n padding: \"10px 20px !important\",\n \"&:focus, &:hover\": {\n outline: \"0 !important\"\n }\n },\n containedSecondary: {\n color: \"#FFF\"\n },\n outlinedSecondary: {\n color: SCOUT_SECONDARY_BLUE,\n backgroundColor: SCOUT_SECONDARY_LIGHT_BLUE,\n outline: 0,\n border: 0,\n \"&:focus, &:hover\": {\n outline: \"0 !important\",\n border: \"0 !important\"\n },\n \"&.Mui-disabled\": {\n border: 0,\n background: \"#f9f9f9\",\n \"& svg\": {\n fill: \"currentColor\"\n }\n },\n \"& svg\": {\n fill: SCOUT_SECONDARY_BLUE\n }\n }\n },\n MuiChip: {\n deletable: {\n \"&:focus\": {\n backgroundColor: \"none\"\n }\n }\n },\n MuiPickersModal: {\n dialogRoot: {\n \"& .MuiDialogActions-root button\": {\n backgroundColor: `${SCOUT_SECONDARY_BLUE} !important`,\n \"&:hover\": {\n backgroundColor: \"rgb(63, 137, 133) !important\"\n }\n }\n }\n },\n MuiPickersToolbar: {\n toolbar: {\n backgroundColor: SCOUT_SECONDARY_LIGHT_BLUE\n }\n },\n MuiPickersTimePickerToolbar: {\n hourMinuteLabel: {\n alignItems: \"center\"\n }\n },\n MuiPickersToolbarText: {\n toolbarTxt: {\n color: `${SCOUT_SECONDARY_BLUE} !important`\n },\n toolbarBtnSelected: {\n fontWeight: \"900\"\n }\n },\n MuiPickersBasePicker: {\n container: {\n \"& button\": {\n paddingTop: \"2px !important\",\n paddingBottom: \"2px !important\"\n }\n }\n },\n MuiPickersClock: {\n clock: {\n backgroundColor: \"#FAFAFA\"\n }\n },\n MuiPickersClockNumber: {\n clockNumber: {\n color: SCOUT_BLUE\n }\n }\n }\n};\n","\"use strict\";\nexport const WHITE = \"#FFFFFF\";\nexport const BLACK = \"#000000\";\nexport const GREY = \"#939393\";\nexport const DARK_GREY = \"#666666\";\nexport const SCOUT_BLUE = \"#084d6d\";\nexport const SCOUT_BLUE_DARK = \"#05354c\";\nexport const SCOUT_TEAL = \"#5BC4BF\";\nexport const SCOUT_SECONDARY_BLUE = \"#5BC4BF\";\nexport const SCOUT_SECONDARY_LIGHT_BLUE = \"#EEFBFB\";\nexport const GREEN = \"#76D18F\";\nexport const LIGHT_GREEN = \"#EEFAF1\";\nexport const RED = \"#E37D7A\";\nexport const LIGHT_RED = \"#FEF7F7\";\nexport const DARK_RED = \"#D32F2F\";\nexport const LIGHT_BLUE = \"#6DBEBF\";\nexport const PURPLE = \"#9268F7\";\nexport const PINK = \"#F7A1FF\";\nexport const MEDIUM_RED = \"#EC6E85\";\nexport const DARK_BLUE = \"#7EA7E4\";\nexport const YELLOW = \"#E6A052\";\nexport const OPAQUE_GREEN = \"#EFFDF3\";\nexport const OPAQUE_BLUE = \"rgba(109, 190, 191, 0.12)\";\nexport const OPAQUE_PINK = \"rgba(247, 161, 255, 0.12)\";\nexport const OPAQUE_RED = \"rgba(252, 239, 239, 1)\";\nexport const OPAQUE_DARK_BLUE = \"rgba(252, 239, 239, 1)\";\nexport const OPAQUE_PURPLE = \"#F2EDFE\";\nexport const OPAQUE_YELLOW = \"#FCF4EA\";\n","\"use strict\";\nvar __async = (__this, __arguments, generator) => {\n return new Promise((resolve, reject) => {\n var fulfilled = (value) => {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n };\n var rejected = (value) => {\n try {\n step(generator.throw(value));\n } catch (e) {\n reject(e);\n }\n };\n var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);\n step((generator = generator.apply(__this, __arguments)).next());\n });\n};\nimport RecruitApiClient from \"../RecruitApiClient\";\nconst PERMISSION_EXPIRY_PERIOD = 10 * 60 * 1e3;\nexport const getPermissions = (apiKey) => __async(void 0, null, function* () {\n try {\n const permissionCache = localStorage.getItem(\"userPermissions\");\n const permissionExpiry = localStorage.getItem(\"userPermissionsExpiry\");\n if (permissionCache && permissionExpiry && parseInt(permissionExpiry) > Date.now()) {\n return JSON.parse(permissionCache);\n }\n localStorage.removeItem(\"userPermissions\");\n const { res } = yield RecruitApiClient.get(`/api/v4/user_permissions`, null);\n localStorage.setItem(\"userPermissions\", JSON.stringify(res));\n localStorage.setItem(\n \"userPermissionsExpiry\",\n (Date.now() + PERMISSION_EXPIRY_PERIOD).toString()\n );\n return res;\n } catch (error) {\n console.error(error);\n }\n});\n","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-ps\": 6947,\n\t\"./ar-ps.js\": 6947,\n\t\"./ar-sa\": 60301,\n\t\"./ar-sa.js\": 60301,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku-kmr\": 6181,\n\t\"./ku-kmr.js\": 6181,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 19467,\n\t\"./mi.js\": 19467,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","AIInterviewModal","jobDescription","isLoading","setIsLoading","useState","lastMessageRef","useRef","response","setResponse","generateChatResponse","useCallback","question","input","reactComponentRoot","fetch","method","headers","body","JSON","stringify","description","then","res","json","result","prevResponse","index","content","ResponseMessage","message","error","console","updateUI","felixContainer","number","button","querySelector","responseMessageContainer","nextElementSibling","style","display","innerHTML","dataInputField","document","getElementById","label","labelText","textContent","replace","LoadingMessage","value","handleButtonClick","event","targetElement","target","fieldContainer","closest","inputField","previousElementSibling","match","useEffect","buttons","getElementsByClassName","Array","from","forEach","addEventListener","removeEventListener","current","scrollIntoView","behavior","blink","BlinkingDot","delay","sx","animation","fontSize","classes","systemMessage","DELAYS_IN_SECONDS","key","closeIcon","onClick","preventDefault","parentElement","AIPrompterCloseIcon","responseMessageContent","dangerouslySetInnerHTML","__html","AIStudioModal","aiStudioEnabled","aiSummariesEnabled","aiStudioFrenchEnabled","showPreview","navbarState","jobFlow","setTlpModalOpen","prefillData","setGeneratedContent","aiStudioState","dispatch","useReducer","aiStudioReducer","initialAIStudioState","typeWriterRef","caretRef","requestController","aiButtonAnchorRef","hideButton","useMemo","URLPATH","URL","window","location","href","pathname","some","regex","test","generateDescription","type","AbortController","data","ai_studio","tone","generatedTone","job_details","jobDetails","send_email_copy","sendEmail","french","serializedData","serialize","signal","formData","length","localEnglishDescription","convertToLocalEnglish","payload","name","log","aborted","generateQuestions","question_type","questionType","number_of_questions","questions","localEnglishQuestions","typeWriter","text","i","charAt","setTimeout","open","currentStep","welcomeMessage","clearTimeout","handleClose","abort","handleCloseAction","navbarElement","navbarObserver","ResizeObserver","entries","contentRect","width","observe","disconnect","title","country","stepSelect","step","generationError","regenerateCallback","generationType","setGenerationError","backToHome","WelcomePage","zIndex","buttonContainer","buttonHovered","notificationData","hoverAnimation","navbarIsCollapsed","collapsedNavbar","notificationAnimation","newNavbarButtonContainer","newNavbarCollapsed","onMouseEnter","onMouseLeave","avatarContainer","ref","FelixButtonSVG","betaPill","anchorEl","onClose","modal","isDialogOpen","confirmCancelIsOpen","setDialogOpen","buttonCallback","callbackLoading","buttonText","url","featuresText","handleButtonAction","previewModal","teaserContainer","FelixStarsSVG","teaserHeader","teaserPill","fontWeight","teaserText","featureList","feature","featureListItem","featureListItemIcon","teaserButton","teaserCloseButton","pillClickHandler","pillsContainer","preferred_skills","filledPill","pill","endIcon","A","convertPreferredSkills","position_responsibilities","position_location","salary","company_name","company_description","company_benefits","emails","setEmails","snackbarState","setSnackbarState","state","handleDismissNotification","_a","dismissNotification","subscribeToChannel","useWebSockets","kind","getInitialNotifications","notifications","formattedNotifications","histories","notification","candidate_name","application_id","job_id","placement","transition","TransitionProps","timeout","notificationPopperContainer","badgeContent","notificationsBadge","notificationPopper","notificationHeader","notificationTitles","notificationButtons","notificationCloseButton","notificationViewButton","borderBox","notificationModalOpen","notificationModalContent","summaryData","isNotification","setSnackbar","questionData","emailData","goBack","jobId","applicationId","displayNotificationContent","editableDescription","handleCopy","copied","handleAddToJobClick","footerContainer","felixMessageContainer","FelixMessageSVG","felixMessage","maxWidth","modalTitle","footerButtonsContainer","minWidth","justifyContent","rowGap","footerRestartButton","footerContinueButton","CopyToClipboard","onCopy","setEditableDescription","generatedResponse","isEditing","setIsEditing","setCopied","playConfetti","setPlayConfetti","confettiTimeout","regenerationFunction","displayResponseContent","position","height","onChange","maxHeight","generatedResponseContainer","floatingActionButton","tinyMCE","majorVersion","prev","generatedContainer","force","duration","particleCount","descriptionHeader","descriptionHeaderText","aiToneTypes","english","frenchToEnglishTonetype","neutre","professionnel","enthousiaste","urgent","persuasif","englishToFrenchTonetypes","neutral","professional","casual","creative","excited","persuasive","backCloseButton","studio","positionTitle","setPositionTitle","fileList","setFileList","descriptionContainer","genericContainer","fieldHeader","onBlur","fieldName","marginBlock","fieldSubHeader","setFile","file","maxSize","performUpload","optionalInformationContainer","pillType","fullWidth","options","formContainer","checkbox","checked","formLabel","handleSecondaryButtonClick","handlePrimaryButtonClick","secondaryButtonText","primaryButtonText","primaryButtonID","felixMessageMaxWidth","disablePrimaryButton","inputValue","setInputValue","optionalInputType","handleDoneClick","handleKeyDown","shiftKey","fieldInput","isMultiLineInput","padding","placeholder","placeholderText","multiline","rows","felixMessageText","position_title","preferredSkills","setPreferredSkills","questionTypes","welcomeContainer","FelixSVG","headersAndOptionsContainer","header","showCaret","borderRight","lineHeight","welcomeHeader","subHeader","optionsContainer","option","switchLabels","labelActive","control","aiSwitchActive","switch","labelPlacement","defaultJobDetails","loadingType","social","advertisement","interview","summary","generateLoadingText","bulk_summary","interview_questions","follow_up_email","toggleButtonOptions","AIStudioForm","setQuestionType","jobInformationSource","setJobInformationSource","collapsed","setCollapsed","aiQuestionsContainer","setValue","AIStudioField","modalsOpen","setModalsOpen","getQuestions","jobTitle","userPermissions","setGeneratedResponse","setCurrentStep","isCreating","setIsCreating","questionsController","use_description","job_description","LIST_ITEMS_REGEX","split","slice","selected","enabled","required","rateable","handleSubmit","requests","newField","field","confidential","field_type","Promise","all","handleAddToNewJob","newQuestions","filter","q","screeningQuestions","aiModal","AIStudioResponse","addButtonText","item","handleSwitchChange","questionsContainer","handleSelectQuestion","flexDirection","marginTop","color","footerBackButton","footerAddButton","disabled","size","smartShareState","handleRichCopy","jobUrl","SocialSVG","viewBox","fill","xmlns","x","y","rx","cx","cy","ry","r","maskUnits","mask","d","filterUnits","colorInterpolationFilters","floodOpacity","in","values","radius","operator","stdDeviation","in2","mode","AdvertisementSVG","generationJobDescription","apiKey","smartShareReducer","initialSmartShareState","generatedResponseRef","getSelection","removeAllRanges","range","createRange","selectNode","addRange","execCommand","generatePost","fetchSocial","useCustomDescription","generationJobTitle","includeHashtags","generationTone","summaryLength","responseText","localEnglishResponse","generateSummary","sendableJobDescription","summaryParams","adType","summaryResponse","keyPointsResponse","includeKeyPoints","fetchSummary","fetchKeyPoints","ksp","marginLeft","unhoverAnimation","disableNextButton","displayFelixMessage","footerWidth","generatedKeyPoints","setGenerationJobDescription","maxCharacters","characterCounter","inputStepContainer","sideBySideContainer","adTypes","checkboxContainer","checkboxLabel","responseHeader","responseHeaderText","headerText","point","keyPoint","copyIcon","socialResponseContainer","socialCard","socialCardHeader","postTones","responseLength","metaData","setMetaData","matches","domain","metadata","socialCardPreview","image","previewImage","backgroundImage","noImageIcon","socialCardPreviewFooter","previewTitle","previewDescription","previewLink","skeleton","welcomePageSelections","advertisementSelection","welcomePageSelectionHeader","socialSelection","felixMessageContext","expanded","handleCloseModal","lastHoveredApplicant","summaryRef","loadingSummary","emailInputOpen","setEmailInputOpen","sendingEmails","setSendingEmails","aiModalContent","viewerRef","onExportClick","onSendEmailClick","handleAPIRequest","onSuccess","setLoaderState","secondaryButtonID","primaryButtonMinWidth","secondaryButtonMinWidth","alternateSecondaryButton","inclusions","setInclusions","inclusionsContainer","inclusion","checkboxGroup","inclusionsCheckbox","inclusionsLabel","selectedFormat","setSelectedFormat","selectedApplicants","handleDeselectApplicant","requestInsights","applicantHovered","setApplicantHovered","inclusionsArray","areAllSuitabilityComments","every","aiRow","defaultFormats","suitabilityCommentWarning","applicantsContainer","applicant","applicantInitials","candidate","firstname","lastname","removeApplicant","applicantName","setStep","defaultInclusions","setSummaryData","unsubscribeFromChannel","socketConnected","UID","Date","now","application_summary","format","information_include","application_ids","ok","status","handleDeselect","applicantId","showSocketMessage","renderStep","currentJobId","convertedSummaryData","pillButton","additional_information","summary_data","array_data","join","initialEmailText","s","emailText","setEmailText","subjectLine","setSubjectLine","isSending","setIsSending","emailQuestionsContainer","email_batch","applications_ids","subject","modalOpen","setModalOpen","emailTone","setEmailTone","setEmailData","generateFollowUpEmail","email_tone","toLowerCase","follow_up_questions","emailTones","requestQuestions","editablePositionTitle","setEditablePositionTitle","selectedTab","setSelectedTab","includes","setQuestions","questionsLoading","setQuestionsLoading","copiedQuestions","setCopiedQuestions","formatQuestionArray","_","questionSkeleton","deleteQuestion","saved_interview_questions","noSavedQuestions","marginBottom","FelixConfused","disableSecondaryButton","questionCopyText","copyToClipboard","selectedApplicantId","setQuestionData","interview_question","convertedQUestions","questionStringToArray","convertedQuestionData","emailModalOpen","setEmailModalOpen","saveSelectedQuestions","sendableQuestions","onFailure","columnGap","applicantNameHeader","rel","handleHoverApplicant","handleUnhoverApplicant","summaryGeneratingIds","setSummaryGeneratingIds","setExpanded","setLoadingSummary","dotPoints","indexOf","request","errors","isGeneratingSummary","summaryPopper","summaryPopover","expandIcon","noSummaryFelix","noSummary","noSummaryGenerate","generatedContent","tlpModalOpen","questionsModalOpen","setQuestionsModalOpen","tlpButtonIsHovered","setTlpButtonIsHovered","questionsButtonIsHovered","setQuestionsButtonIsHovered","deleteConfirmOpen","setDeleteConfirmOpen","rootContainer","aiHeader","buttonsContainer","talentLandingPage","aiButtonFilled","aiButton","previewContainer","QuestionsPreview","handleRemoveQuestion","splice","previewOnly","onSwitchChange","alignItems","deleteQuestionButton","EmailButton","forwardRef","inputOpen","buttonId","props","emailInputButton","displayName","ExportButton","exclusive","toggleButton","numberOfQuestions","arrayOfBooleans","copiedQuestion","setCopiedQuestion","handleCopyQuestion","className","copyButton","Number","collapsedSize","descriptionPreview","toggleDescriptionPreview","loadingHTML","sendEmailButtonId","emailButtonId","exportButtonId","emailTooltipOpen","setEmailTooltipOpen","emailTooltipHidden","setEmailTooltipHidden","viewOnlyHTMLParent","emailInputContainer","emailInput","tags","setTags","validation","emailIsValid","validationMessage","tagType","helperText","styles","inputStyles","labelStylesOverride","labelStyles","helperTextStylesOverride","helperTextStyles","autoFocus","sendEmailButton","transform","viewOnlyHTML","onOpen","primaryEndIcon","altFooterSecondaryButton","clipPath","stroke","strokeMiterlimit","x1","y1","x2","y2","gradientUnits","stopColor","offset","maskType","xmlnsXlink","gradientTransform","xlinkHref","RobotIcon","FelixGPTIcon","strokeWidth","dy","SelectInput","borderRadius","backgroundColor","border","fontFamily","textTransform","borderColor","marginRight","menuItemStyle","renderQuestionStatus","errorContainer","felixErrorContainer","errorMessageContainer","errorButtons","customMessages","loadingTextIndex","setLoadingTextIndex","changeTextIndex","loadingAnimation","loop","autoplay","animationData","rendererSettings","preserveAspectRatio","loadingText","loadingContainer","loadingMessage","socketsMessage","opacity","socketsInfoIcon","withScoutTheme","job","candidateName","calendlyAccount","events","setEvents","selectedEvent","setSelectedEvent","theme","get","user","access_token","collection","active","getData","root","loading","palette","primary","main","recContainer","recImage","user_name","recDetails","scheduling_url","meetingContainer","shadow","uri","noEvents","disableElevation","variant","history","back","startIcon","addToEvent","event_type_url","reload","candidateList","application","isOpen","setIsOpen","nextDisabled","setNextDisabled","jobPositions","setJobPositions","selectedJobPosition","setSelectedJobPosition","candidates","setCandidates","selectedCandidates","setSelectedCandidates","statuses","setStatuses","selectedStatuses","setSelectedStatuses","templates","setTemplates","selectedTemplate","setSelectedTemplate","defaultJob","setDefaultJob","editedSubject","setEditedSubject","editedBody","setEditedBody","ColorButton","textDecoration","handleStep","increment","Math","min","max","sendInvitations","err","localStorage","setItem","closeModal","TOTAL_STEPS","progressBar","statusIsLoading","setStatusIsLoading","initialRender","refreshApplications","applications","getJobApplications","replaceNullStatuses","uniqueStatuses","findIndex","inner","sort","a","b","selectedList","job_positions","getEventOptions","app","searchContainer","autocompleteField","inputRoot","autoCompleteInput","endAdornment","getOptionLabel","reference","filterSelectedOptions","disableClearable","newValue","renderTags","renderInput","params","InputProps","disableUnderline","startAdornment","multiple","noOptionsText","inputBase","displayEmpty","renderValue","MenuProps","paper","dialogPaper","PaperProps","newApplicants","handleStatusAdd","noData","chipContainer","chipItem","onDelete","handleStatusRemove","table","row","tableHeader","tableLg","tableMd","email","noApplicants","memo","setButtonText","handleClick","navigator","clipboard","writeText","handleEdit","container","details","booking","footer","editButton","editorReadyState","setEditorReadyState","handleDraftValue","contentBlock","contentState","ContentState","createFromBlockArray","contentBlocks","editorState","EditorState","createWithContent","email_templates","getCalendlyEmailTemplates","templateContainer","template","handleTemplateChange","noTemplates","templateView","formLabelWrapper","Editor","wrapperClassName","textEditor","toolbarClassName","textEditorToolbar","editorClassName","textEditorBody","onEditorStateChange","convertToRaw","getCurrentContent","blocks","toolbar","inline","inDropdown","noPreview","icon","overviewItem","overviewTitle","overviewDescription","overviewLink","overviewContainer","invalidAPIKey","hasAPIKey","BASE_URL","origin","badAPIModalInner","isNextPage","setIsNextPage","selectedType","setSelectedType","TYPES","pages","setPages","refOffset","setRefOffset","refWidth","setRefWidth","firstTabSwitch","setFirstTabSwitch","savedDateRange","setSavedDateRange","subtract","isDateSelectOpen","setIsDateSelectOpen","enteredTo","setEnteredTo","activeFilter","setActiveFilter","isFilterOpen","setIsFilterOpen","filterStatus","setFilterStatus","setinvalidAPIKey","apiParams","setApiParams","page","headerRefs","filterRefs","dateSelectAnchor","getEvents","inviteeParams","count","eventParams","max_start_time","min_start_time","invitees","invitee","pagination","next_page","onFocus","handleSelectedType","offsetLeft","getBoundingClientRect","handlePageUp","handlePageDown","selectedDays","to","disabledDays","before","modifiers","start","end","isSelectingFirstDay","day","isBeforeFirstDay","DateUtils","isDayBefore","handleDayClick","handleDayMouseEnter","actions","el","activeType","dateSelect","datePopover","anchorOrigin","vertical","horizontal","transformOrigin","numberOfMonths","fromMonth","onDayClick","onDayMouseEnter","typeUnderline","left","moreActions","filters","FILTERS","paddingBottom","filterWrapper","eventContainer","eventHeader","start_time","eventPagination","isExpanded","setIsExpanded","handlEdit","detailsTop","date","dateDot","end_time","invitees_counter","limit","detailsButton","detailsBottom","reschedule_url","focus","buttonRedLight","cancel_url","divider","buttonOutline","expandDetailItem","evt","timezone","created_at","CareersPortalReport","jobsCount","applicationsCount","pageViews","subWidget","widgetBlockContainer","widgetBlock","widgetBlockIcon","widgetBlockText","blockCount","blockTitle","portal","tabIndex","src","social_preview_image_url","social_preview_title","social_preview_description","USER_PREFERENCE_SOURCE","engageState","isFetched","fetchedPreferences","queryKey","queryFn","getPreferences","onError","refetchOnMount","refetchOnWindowFocus","refetchOnReconnect","staleTime","isLoadingCandidates","booleanQuery","searchSettings","searchFilters","callPaginatedAPI","query","searchAndFiltersRow","numberOfFilters","tableState","searchTable","userPreferenceSource","exportCsv","addSearch","drawerOpen","selectedItemIds","actionDrawerModals","items","ai_search","isLoadingItems","paginationState","totalItems","totalPages","headerStyle","TableRows","TableActionList","engageSearchActionsList","tableFilters","tableSearch","selectAllUrl","actionsState","showSearchTooltip","setShowSearchTooltip","tlpMatchText","setTlpMatchText","handleSearch","searchQuery","successMessage","show","boolean_query","searchInput","cursor","searchType","tlpMatchModalState","selectedTLP","onKeyDown","tlpMatch","searchAdornment","editBooleanIcon","searchTooltip","currentTarget","attachment_url","arrow","column","tableHovered","sticky","idTableCell","itemTitleTableCell","scrollShadowVisible","suburb","last_applied_on","jobs_applied_to","titleKeyType","maxItems","maxItemsLink","TagList","notes","attachments","selectedItem","viewAttachments","addNote","itemId","downloadAPICall","zip_file","candidate_ids","success","attachments_in_pdf","enabledColumns","columns","searches","activeColumns","addToPool","isSearch","selectAllBody","override_limit","externalEmail","selectedCandidateIds","apiUrl","downloadAttachments","exportAttachments","emailFallback","exportAsPdf","filterTab","setFilterTab","selectedPools","setSelectedPools","addingCandidates","setAddingCandidates","poolNameLengthError","setPoolNameLengthError","queryClient","allCurrentCandidates","candidate_pools","isLoadingPools","mutate","addCandidatePool","creatingPool","mutationFn","setQueryData","oldData","styleOverrides","subHeaderStyling","sharedClasses","mainModalContent","paddingInline","dropdownOptions","newValues","at","handleMultiSelectValueChange","loadingOptions","creatingOption","common","grey","paddingTop","primaryButtonCallback","candidate_pool_ids","pool","invalidateQueries","primaryButtonDisabled","secondaryButtonCallback","iconButton","iconButtonOpen","editableBooleanArray","setEditableBooleanArray","booleanQueryToEditableArray","modalHeader","modalMainContentContainer","editBooleanStepHeader","editedBooleanQuery","editableBooleanArrayToBooleanQuery","modalState","handleGetBooleanQuery","selectedJob","setSelectedJob","isLoadingTLP","setIsLoadingTLP","getSelectedJobTLP","html","jobsList","modalRow","modalFieldSubHeader","Virtualize","passOptions","handleSelectJob","passedStyles","autocomplete","freeSolo","selectJobPlaceholder","tlp","tlpMatchButton","jobs","editableBooleanQuery","initialSearchFilters","entity_ids","postal_codes","include_status","exclude_status","tag","date1","date2","employment_type","handleFilterChange","countriesData","parseCountryData","entities","filtersContainer","setPostcodes","postalCodes","selectOptions","tempSearchFilters","displayLabel","states","flat","freeInput","subLabel","dateRange","dateRangeTemp","dateFieldRange","selectedEmail","emailAnalytics","spacing","xs","paddingRight","rowWidget","widgetTextSubTitle","delayed_to","paddingLeft","widgetContentGridWrapper","overflowWrap","only_new","include_deleted","register","margin","minHeight","responsive","maintainAspectRatio","statistics","opened_email_statistics","stats","percentages","statusStatsWrapper","delivered","statusStatsWrapperMetrics","secondary","medium","delivered_pcent","opened","purple","opened_pcent","clicks","pink","clicks_pcent","bounced","mediumRed","unsubscribed","darkBlue","unsubscribed_pcent","scales","beginAtZero","ticks","stepSize","plugins","legend","status_statistics","textAlign","application_deleted","getStatusColor","isFetching","applicationsState","applicationsDispatch","headerStyles","titleCellId","allowMultipleSelection","applicationColumns","sortable","canToggle","emailsDispatch","selectedCandidatePoolId","modalTabValue","setModalTabValue","analyticsState","analyticsDispatch","genericTableReducer","initialTableState","sortBy","sortOrder","analyticsLoading","emailTemplates","emailTemplatesLoading","fetchingApplications","skipEmptyString","skipNull","arrayFormat","encode","pageHeader","email_template","toUpperCase","TabIndicatorProps","tabs","tabIndicator","borderBottom","navigateBackButton","emailTemplate","readonlyEditor","styling","email_attachments","templateAttachments","individualCandidatePoolsState","individualCandidatePoolsDispatch","emailsState","candidatePoolsState","containerRef","refetch","newPool","poolActionDrawerModals","candidatePool","selectedPool","candidatePoolActionsList","totalSelected","parentDiv","actionButtonsList","actionButtonId","handleDeletePool","deletingPool","action","deletePool","candidates_count","new_candidates","pool_tags","last_email_date","selectedPoolIds","openedFromTableActions","showTotalSelectedCandidates","candidate_link","candidate_email","added_date","postcode","candidate_phone_number","black","candidatePoolsDispatch","candidate_pool_id","deleteCandidate","assignment_ids","candidate_pool_assignments","tooltipLabel","elementId","actionCall","customEmptyStateMessage","analytics","link","centerCellContent","poolName","setPoolName","updatedCandidatePool","isLoadingUpdatePool","individualCandidatePoolsColumns","FormTextField","actionsColumnHeader","emailsColumns","handleCreatePool","savingPool","candidatePoolsColumns","candidatePoolActionsState","moreOptions","candidatePoolModalState","URL_PARAMS","engageDispatch","engageReducer","initialEngageState","tabIndicatorRef","handleTabChange","tabValue","search","getTabParam","pushState","getTabNumber","useLayoutEffect","selectedRowTitle","clientWidth","client","pageContainer","snackbarInput","initialIsOpen","strokeLinecap","strokeLinejoin","editableBooleanObject","changeBase","hasExclude","booleanEditorOperatorGroup","booleanEditorOperatorButton","addValue","setAddValue","rowIndex","isAddingRow","setIsAddingRow","addValueToRow","newEditableBooleanArray","queryValues","push","changeBaseOperator","baseOperator","changeOperator","booleanEditorContainer","booleanEditorRow","booleanEditorValuesContainer","queryValue","valueIndex","Fragment","booleanEditorValue","booleanEditorRemoveValueButton","removeValue","booleanEditorValueInput","onInput","setAttribute","booleanEditorAddButton","booleanEditorRemoveRowButtonContainer","booleanEditorRemoveRowButton","removeRow","booleanEditorOperatorContainer","LOADING_TEMPLATE_HTML_STRING","isSendingEmails","setIsSendingEmails","excludeApplicants","setExcludeApplicants","skipScoutTalentClients","setSkipScoutTalentClients","templateError","setTemplateError","setDelay","setSubject","setBody","setAttachments","setTemplateAttachments","templateSelectionRef","placeholders","formatOptions","disableEnforceFocus","role","actionModalFormLine","templateId","formAutocomplete","formCheckbox","modalSection","sectionHeader","candidate_pools_ids","email_template_id","exclude_applicants","stringToSeconds","new_email_attachments","rating","excludeApplicantsWithoutRating","isFormData","submissionError","setSubmissionError","emailInputRef","external_view","full_view","smart_forms","include_summary","children","other","hidden","TabProps","tabsContainer","indicatorWidth","urlParams","tabNumber","searchTableColumns","assets","blurb","info","setCode","snack","setSnack","redirectUrl","setRedirectUrl","sendingCode","setSendingCode","setEmail","password","setPassword","newPassword","setNewPassword","newPasswordConfirmation","setNewPasswordConfirmation","setDomain","showPassword","setShowPassword","showNewPassword","setShowNewPassword","showNewPasswordConfirmation","setShowNewPasswordConfirmation","setErrors","randomNumber","setRandomNumber","floor","random","emailFieldSelected","setEmailFieldSelected","passwordFieldSelected","setPasswordFieldSelected","newPasswordFieldSelected","setNewPasswordFieldSelected","newPasswordConfirmationFieldSelected","setNewPasswordConfirmationFieldSelected","domainFieldSelected","setDomainFieldSelected","singleSignOn","setSingleSignOn","resetPassword","setResetPassword","updatePassword","setUpdatePassword","token","setToken","setLoading","messages","submitButton","windowSize","setWindowSize","handleResize","innerWidth","innerHeight","useWindowSize","redirect","URLSearchParams","user_email","pop","handleEmailInput","finaliseLogin","removeItem","handleKeyPress","click","buttonSecondaryText","logoContainer","alt","loginFormContainer","loginForm","intervalToValidateInMinutes","autoComplete","inputs","InputLabelProps","shrink","inputLabel","inputIcons","severity","alert","edge","forgotPassword","sendTwoFactor","resendTwoFactorCode","errorMessage","ceil","fadeIn","fadeOut","loginButton","postSSOLogin","team_name","postResetPassword","notice","putUpdatePassword","postTwoFactor","authenticated","postTwoFactorCode","postLogin","password_disabled","twofa_enabled","clearAllPreferenceCache","imageAndBlurbContainer","infoPanel","infoPanelText","helpContainer","helpIcon","helpText","Child","setHeight","visible","node","offsetHeight","child","clientHeight","isArray","Application","showLinkedInURL","currentUser","newIntegrationEnabled","ApplicationState","ApplicationReducer","InitialApplicationState","setTabValue","showDialog","setShowDialog","pendingHref","setPendingHref","overviewTab","hasUnsavedChanges","cognology","scrollRef","urlIndex","applicationURL","loadingApplication","getApplicationData","ModalType","COGNOLOGY_WAITING_FOR_APPROVAL","getPermissions","api_key","formatUserPermissions","updateApplicationNotepad","updatingApplicationNotepad","useNotepadUpdater","onConfirmHandler","shouldSave","note","isAdminUser","admin","userTimeZone","timeZone","userEmail","suitability_comment","scrollToElement","block","applicationPageStickyHeader","_e","scrollButtons","candidateTabIndicator","candidateTabs","surroundingApplications","surround_application","total_number_in_current_filter","pre_app_id","surroundingApplicationsButton","pre_idx","next_app_id","next_idx","currentUserId","SEND_EMAIL","ADD_TO_EVENT","smsTemplatePermissions","INVITE_TO_TIMESLOT","ADD_FORM","SEND_FORM","EXPORT_TO_ONBOARD","snackbar","alternateColor","onCancelCallback","ApplicationBetaButton","slotProps","tooltip","boxShadow","betaButtonTooltipContainer","FelixSurveySVG","genericButtonSecondary","genericButton","browserTimezone","Intl","DateTimeFormat","resolvedOptions","ApplicationHeader","linkedInURL","setLinkedInURL","editLinkedInURL","setEditLinkedInURL","getQueryData","permissions","trashApplication","trashingApplication","onSettled","resendApplication","resendingApplication","updateLinkedInURL","updatingLinkedInURL","updateCandidateLinkedInURL","linkedin_url","exact","modalDesc","TRASH","callback","RESEND","validateLinkedInURL","LINKEDIN_URL_REGEX","handleLinkedinSubmit","sanitizeLinkedInURL","LinkedInSection","applicationHeaderItems","scoutNavyIcon","linkedInURLInput","clickableGreyIcon","linkedInURLLink","_b","_c","profileName","getLinkedInProfileName","background","existingCandidate","existing_candidate","candidateLink","orientation","flexItem","Applications","smallGreyIcon","phone1","formatAddress","address_details","gender_field","gender_full","time_zone","applicationHeaderActionsContainer","MOVE","CLONE","DELETE","DeleteApplication","recipients","primaryButtonId","SEARCH","ApplicationStatusPopover","setAnchorEl","applicationStatuses","getApplicationStatuses","job_application_statuses","initialData","updateApplicationStatus","updatingApplicationStatus","status_details","ArrowIcons","applicationStatusDropdownStyle","colour","applicationStatusPopoverStyle","Boolean","Export","exportButton","ScoutOnboardLogo","AlayaCare","setCandidate","setState","setTitle","gender","setGender","fieldRefs","firstName","lastName","mobile","alayaCareData","loadingAlayaCareData","getAlayaCareData","savedState","find","abbreviation","savedTitle","titles","savedGender","genders","alayaCareExport","exportingAlayaCare","mobile_phone","street","street1","street_cont","street2","suburb_town","ALAYACARE","modalStyleOverrides","modalContainer","overflow","modalDoubleColumn","innerRef","disablePortal","ListboxProps","autoCompleteListStyles","autoCompleteTextfield","inputErrors","trim","validateEmail","validateInputs","AlreadyExportedModal","alreadyExportedModalOpen","buttonName","revolve","referoo","hro","sparkhire","foundu","alreadyExportedModal","revolve_record_id","autocompleteStyle","Cognology","integrationsData","exportPreference","setExportPreference","startDate","setStartDate","setCountry","record","setRecord","approvalTemplate","setApprovalTemplate","reapproval","setReapproval","categories","setCategories","cognologyData","loadingCognologyData","useGetCognologyData","categoriesPayload","new_value","cognologyExport","exportingCognology","candidate_title","candidate_first_name","candidate_last_name","candidate_phone1","candidate_phone2","candidate_addr_street1","candidate_addr_street2","candidate_addr_suburb","candidate_addr_state","candidate_addr_postcode","candidate_addr_country","iso","requisition_form_id","candidate_gender","start_date","toISOString","candidate_employee_id","manager_id","recruitment_record_url","reapproval_required_for_modifications","approval_url","COGNOLOGY","EDIT_COGNOLOGY","cognology_requisition","requisition","reapprovalRequired","cognology_config","approval_bypassed","cognologySectionTitle","autoHighlight","includeInputInList","requisition_forms","_event","disableRipple","modalCancelButton","CognologyAfterApprovalModal","exportToCognology","genericRedButton","CognologyApprovalDetails","CognologyStep1","dateError","setDateError","countriesStates","getCountriesStates","countries","savedCountry","cognologyExportPreference","toString","directionRow","defaultValue","groupLabel","id_blank","SingleDatePicker","datePicker","isValid","toDate","cognologyCategoriesContainer","category","filterOptions","filtered","newCategories","application_assets","asset","cognologyAttachmentContainer","fileIcon","file_name","document_tags","CognologySummary","div","printable_name","yellow","Fit2Work","accountEmail","setAccountEmail","fit2WorkPackage","setFit2WorkPackage","setTemplate","candidateEmail","package","fit2WorkData","loadingFit2WorkData","getFit2WorkData","account_email","fit2WorkExport","exportingFit2Work","packagePayload","packages","package_ids","template_name","FIT2WORK","FoundU","preferredName","setPreferredName","sendWelcomeEmail","setSendWelcomeEmail","foundUExport","exportingFoundU","first_name","surname","preferred_name","send_welcome_email","FOUNDU","FormNumberField","Hronboard","hroUser","setHroUser","company","setCompany","setLocation","approvalNumber","setApprovalNumber","jobReferenceNumber","setJobReferenceNumber","glCode","setGlCode","phone","HronboardData","loadingHronboardData","getHronboardData","hronboardExport","exportingHronboard","_d","candidate_mobile_no","candidate_phone_no","phone2","hro_user","requisition_id","gl_code","HRONBOARD","hro_users","flexGrow","companies","locations","Mvs","mvsPackage","setMvsPackage","checks","setChecks","getMvsData","mvsExport","loadingMvsExport","package_id","blueprint_ids","c","MVS","packageChecks","checkFound","blueprints","OnboardExpress","workType","setWorkType","entity","setEntity","createdBy","setCreatedBy","revolveData","loadingRevolveData","getRevolveData","revolveExport","loadingRevolveExport","worktype","entity_name","created_by","candidate_addr_street","validateAUPhoneNumber","ONBOARD_EXPRESS","template_names","entity_names","worktypes","validatePhone","Referoo","setJobTitle","numberOfReferences","setNumberOfReferences","setNotes","questionnaire","setQuestionnaire","referooPackage","setReferooPackage","references","getReferooData","candidateCountry","referooExport","loadingReferooExport","last_name","phone_country","questionnairesNum","packagesNum","number_of_references_required","recruiter_email","REFEROO","top","questionnaires","MultilineFormTextField","Roubler","roublerExport","exportingRoubler","ROUBLER","SparkHire","emailMessage","setEmailMessage","scheduledAt","setScheduledAt","setTimezone","setJob","setQuestion","sparkHireData","loadingSparkHireData","getSparkHireData","savedTimezone","timezones","tz","sparkHireExport","exportingSparkHire","job_uuid","interview_questions_set_uuid","email_message","scheduled_time","SPARKHIRE","SingleDateTimePicker","disablePast","isBefore","Testgrid","testgridPackage","setTestgridPackage","setError","loadingPackages","getTestGridPackages","testGridExport","loadingTestGridExport","TESTGRID","UnusualActivity","referenceId","selectedReferee","comments","setComments","selectedButton","setSelectedButton","buttonsColor","resolution","resolveUnusualActivity","resolvingUnusualActivity","referee_id","reference_id","errorsLength","unusual_activities","UNUSUAL_ACTIVITY","verifyActivityButtonsContainer","verifyActivityButton","borderRightWidth","XRef","minReferees","setMinReferees","candidateNote","setCandidateNote","refereeNote","setRefereeNote","xRefPackage","setXRefPackage","referees","getXrefPackages","xRefExport","loadingXRefExport","min_referees","note_to_candidate","note_to_referee","XREF","String","OldIntegrationsLink","Fit2WorkRecord","updateFit2WorkStatus","updatingFit2WorkStatus","integrationDetails","integrationDetailsTable","integrationDetailsTableHeader","fit2_work_records","verticalAlign","package_name","check","report_path","FoundURecord","foundu_record","foundu_id","MvsRecord","mvs_requests","ReferooRecord","referoo_record","referoo_id","candidate_status","referees_status","referee","report_url","referoo_login_url","SparkHireRecord","sparkhire_record","share_link","TestgridRecord","test_grid_requests","score","XrefRecord","xref_records","UpdateStatusIcon","refetchIntegrationsData","refetchingIntegrationsData","useGetIntegrationsData","buttonLoading","outline","IntegrationsTab","setAlreadyExportedModalOpen","loadingIntegrationsData","integrations","cognology_login_url","flexWrap","isIntegrationAvailable","integrationCard","integrationCardImageContainer","component","hro_record_exported","cognology_record_exported","COGNOLOGY_APPROVED","priorities","AddEditTask","editedTask","setNote","setDate","due_at","priority","setPriority","p","assignedUser","setAssignedUser","taskCompleted","setTaskCompleted","completed_at","deleteTaskDialogOpen","setDeleteTaskDialogOpen","tasks","assignableUsers","loadingAssignableUsers","useGetAssignableUsers","addTask","addingTask","user_id","updateTask","updatingTask","updateApplicationTask","newTasks","t","deleteTask","deletingTask","task","ADD_EDIT_TASK","closeIconId","modalContent","modalCandidateName","v","htmlFor","prioritySelectStyling","listboxProps","secondaryButtonId","AddForm","selectedForm","setSelectedForm","ratings","setRatings","answers","setAnswers","questionErrors","setQuestionErrors","exitConfirmation","setExitConfirmation","questionsRef","formQuestions","fetchingFormQuestions","fetchFormQuestions","getFormQuestions","form_id","enabled_only","fields","createQuestionErrorsObject","answersAttributes","getAnswerAttributes","addForm","addingForm","removeQueries","wideModal","validateForm","ExitConfirmationModal","AddToEvent","selectedDay","setSelectedDay","selectedTimeSlot","setSelectedTimeSlot","setNotification","smsMessage","setSmsMessage","smsTemplate","setSmsTemplate","selectedEmailTemplate","setSelectedEmailTemplate","useGetEmailTemplate","displayError","displaySuccess","useDispatch","loadingEvents","useGetEvents","useGetSmsTemplatePlaceholders","sendingEmail","sendSms","sendingSms","addToEventSms","selectedDayEvents","begins_at","eventCandidates","attendees","candidateAlreadyBooked","validateInput","fieldsErrors","sms","actionModalHeader","timeslotAvailabilityButton","calendar","ControlledStaticDatePicker","displayStaticWrapperAs","views","shouldDisableDate","dailyTimeslots","dailyTimeslotsHeader","noTimeslots","addToEventTimeslotsContainer","fullyBooked","max_candidates","addToEventTimeslot","addToEventSecondStepContainer","smsMessageError","modalFooter","CustomSlider","zoomSlider","AttachmentPreviewModal","previewOpen","selectedAttachment","videoRef","isLoadingPreview","setIsLoadingPreview","currentIndex","setCurrentIndex","isVideoInterview","attachmentType","getAttachmentType","isVideoType","AttachmentType","Video","zoom","setZoom","zoomFactor","MAX_SCALE","VIDEO_INTERVIEW_DISPLAY_NAME","attached_file_name","delete","preview","throttledUpdateZoom","useThrottle","delta","prevZoom","zoomChange","round","abs","newZoom","onPinchHandler","useGesture","onPinch","direction","pinchDirection","previewData","previewAttachment","Word","showZoomSlider","Pdf","Image","handleWheelEvent","ctrlKey","passive","attachmentPreviewModal","attachmentPreviewTitle","attachmentPreviewContent","videoInterviewSrc","sources","VIDEO_INTERVIEW_SOURCE_INDEX","video","sharedProps","components","Audio","Text","source","handleDisplayContent","previewLoader","absoluteLoader","zoomSliderContainer","ZOOM_STEP","zoomIcons","ZoomOutSVG","ZoomInSVG","attachmentPreviewActions","downloadButton","paddingY","EmailBodyComponent","errorBox","addToEventEmailPlaceholder","EmailsDropdown","dropdownLabel","endpoint","loadingEmailTemplates","getEmailLetterheadGroupedEmailTemplates","group","errorStyles","WidgetBlock","heading","widgetBlockHeading","widgetBlockBody","RenderFormResponseBlocks","ApplicationId","submitted_by","expandedRows","linkToUser","formattedCreatedAtTime","getApplicationRatingColor","isNaN","parseFloat","FormsDropdown","smartForms","loadingSmartForms","getSmartForms","NotificationOptionSwitch","newTimestamp","setNewTimestamp","currentTime","setCurrentTime","listRef","isTimestampValid","timestamp","errorMessages","nameMessage","valueMessage","TIMESTAMP_REGEX","timeStringToSeconds","timeStampState","timestampError","timestampData","loadingTimestampData","updateTimestamp","updatingTimestamp","addTimestamp","deleteTimestamp","useTimestampData","useCurrentTime","tableRows","bookmarks","timestamps","TimestampTableRow","gap","borderType","TimestampTableForm","hasTyped","isAddingTimestamp","hasError","handleFieldChange","handleFocusBehavior","pause","timeStampInput","draggable","noWrapError","tableActionIcon","isEditingCurrentTimestamp","clearTimestampError","renderItem","fieldValue","seekToTimestamp","time","play","timeStampItem","alignContent","focusable","CreateApproval","movingPage","setMovingPage","approvalTemplates","loadingApprovalTemplates","getApprovalTemplates","enabled_requisition_forms","CREATE_APPROVAL","confirmDelete","setConfirmDelete","deleteApplication","dialogDescription","DeleteAttachment","deleteAttachment","deleteVideoInterview","deleteApi","DeleteFormResponse","formResponseId","deleteFormResponse","edit","selectedFormResponseAction","EditFormResponseModal","selectedFormId","EditingFormResponseId","FormName","formResponse","loadingFormResponse","useFormResponse","FormResponseId","loadingFormQuestions","useFormQuestions","editForm","editingForm","editFormResponse","initialAnswers","reduce","acc","getAnswerValue","initialRatings","loaderContainer","formResponseAnswers","EmailExternal","includeAttachments","setIncludeAttachments","includeSmartForms","setIncludeSmartForms","includeSummary","setIncludeSummary","sendExternalEmails","EMAIL_EXTERNAL","ExportToOnboard","exportToOnboard","exportingToOnboard","showTodayButton","InviteToTimeslot","recruiter","setRecruiter","eventType","setEventType","showTimeslots","setShowTimeslots","missingPlaceholderConfirmation","setMissingPlaceholderConfirmation","eventTypeId","recruiters","loadingRecruiters","getRecruiters","users","eventTypes","loadingEventTypes","getEventTypes","event_types","inviteByEmail","event_type_id","invitation","sendInviteSms","formSwitchLabels","switchActive","timeslotsContainer","timeslot","timeslotSubject","noTimeslotMessage","missingPlaceholders","checkMissingPlaceholders","INVITE_TO_TIMESLOT_PLACEHOLDER","handleEmailSubmission","MissingPlaceholdersConfirmationModal","missingPlaceholderList","overrideFunction","overridingLoading","MissingPlaceHolderDialogDescription","overrideColor","secondaryButtonAlternateColor","primaryButtonAlternateColor","switchOrder","MoveApplicationModal","cloneAttachments","setCloneAttachments","loadingJobs","getJobsOptions","textFieldLabel","handleApplication","handlingApplication","moveApplication","target_job","cloneApplication","to_job_id","cloning_assets","new_application_link","modalInfoStyle","SearchIndex","setIsDialogOpen","searchIndexData","isLoadingSearchIndex","getSearchIndex","updateSearchIndex","updatingSearchIndex","deleteSearchIndex","deletingSearchIndex","tableStyling","sameData","scout_data","search_data","td","SendEmail","selectedCareAdvantageEvent","setSelectedCareAdvantageEvent","emailPlaceholders","hasEventPermission","getEmailTemplateEndpoint","getEmailTemplateFromJob","careAdvantageEvents","getCareAdvantageEvents","event_id","care_advantage_event_id","subEntityGroupingEndpoint","getSubEntityGroupedEmailTemplates","group_templates","has_care_advantage_integration","care_advantage_events","lineBreak","validateFields","SendForm","setStatus","phoneNumbers","setPhoneNumbers","phoneNumberError","setPhoneNumberError","form","sendForm","sendingForm","status_id","sendFormBySMS","phones","sms_template_id","ADD_FORM_PLACEHOLDER","SendSms","setPhone","phoneError","setPhoneError","setSmsMessageError","SEND_SMS","multipleSms","TaskWorkflow","workflow","setWorkflow","workflows","loadingWorkflows","getWorkflows","assignWorkflow","assigningWorkflow","TASK_WORKFLOW","permission","Trash","actionsMenu","actionsItem","RED","DARK_RED","handleSelectItem","AISummary","sendApplicationSummary","updateSummary","updatingSummary","AISummaryContainer","AISummaryHeader","AISummaryMessage","generateSummaryButton","AISummaryButton","summaryLastUpdated","summary_updated_at","AISummaryNoAccess","svg","ActionButton","boldFont","Actions","ADD_RECORD","SendFormSVG","ExternalEmailSVG","Events","Integrations","interview_guide_url","AdditionalInfo","additionalInfoContainer","lodged_by","privacy_acknowledgement","original_job","AudioPreview","mediaContentContainer","controls","onLoadStart","onCanPlayThrough","ImagePreview","useDragScroll","imagePreviewContainer","onLoad","imagePreview","PdfPreview","scaledDimension","numPages","setNumPages","touchAction","onLoadError","onLoadSuccess","onLoadProgress","loaded","total","pdfPage","pageNumber","renderTextLayer","renderAnnotationLayer","GlobalWorkerOptions","workerSrc","version","TextPreview","VideoPreview","load","objectFit","NavigationButton","NavigationButtons","hasPrev","hasNext","docPreviewNavigation","ImagePreviewList","imageData","attachmentName","next","docPreviewContent","combinedData","attachmentsResult","videoInterviewResult","allSettled","getApplicationAttachments","getVideoInterview","attachmentsData","videoInterviewData","categorizeAttachments","videoInterview","files","videos","AttachmentTableRow","publicUrl","attachmentTitle","attachedBy","createdAt","timeZoneString","handleOpenItem","Item","selectedAttachmentAction","fileIconContainer","fileName","fileDate","fileAttachedBy","align","CopyLinkSVG","AttachmentTable","attachmentsList","attachment","public_url","attachment_title","attached_by","attached_url","hasVideo","hasFile","hasVideoInterview","getAttachmentAvailable","AttachmentTableHead","attachmentsContainer","noAttachments","emptyStateText","tableWrapper","watch_interview_link","heightOverride","uploadUrl","onUploadComplete","compact","maxVideoSize","NoAttachmentsSVG","NoFormResponsesSVG","fillRule","clipRule","Questionnaire","hrQuestion","hrAnswer","setHrAnswer","saveHrQuestion","savingHrQuestion","answers_attributes","field_id","question_id","field_choice_id","field_choice_ids","hr_answer","questionnaireContainer","answer","field_choices","formatSavedAnswer","onChangeCallback","QuestionsAndRatings","questionsAndRatingsContainer","questionRef","questionError","rate","Rating","hover","setHover","ratingButton","ratingColor","RatingCard","ratingCard","RatingLabel","PopperProps","Ratings","sortableSections","editRating","setEditRating","interviewRating","setInterviewRating","interview_rating","refRating","setRefRating","ref_check_rating","ratingErrors","setRatingErrors","rateApplication","ratingApplication","updateApplicationRating","updateUiPreferences","sections","sorting","order","sensors","coordinateGetter","RatingValue","displayValue","filteredSortableSections","RatingErrorMessage","overall_rating","qa_rating","editableRatings","ratingInput","sortableSectionsButton","sortableSectionsHeader","defaultSections","collisionDetection","onDragEnd","over","oldIndex","newIndex","newArray","strategy","section","Responses","showRatingInfo","setShowRatingInfo","jobQuestions","setJobQuestions","formatRatings","ratingsObject","m","field_value_id","rateResponses","ratingResponses","resetRatingForApplication","ratings_attributes","loadingRatings","getRatingSetForApplication","showRatings","newSelected","ratings_label","ratingInfoContainer","ratingInfoClickable","answerFound","question_answers","availabilityConfig","availability_config","removePadding","choice","fontStyle","whiteSpace","renderAnswer","emptyStateIcon","emptyStateMessage","sectionComponents","SectionName","CandidateTags","focused","inputId","FelixAISummary","Notepad","updateNote","updatingNote","ApplicationQuestionnaire","Attachments","Section","SectionComponent","SortableSection","attributes","listeners","setNodeRef","setActivatorNodeRef","Translate","OverviewTab","getUiPreferences","ui_preferences","addRecord","addingRecord","getHrQuestions","hr_answers","Jobs","AnswerApplicationHRQuestions","RenderFormResponseActions","setExpandedRows","formattedUpdatedAtTime","updated_at","handleExpandClick","rowId","form_name","ratingCell","FormResponseDetails","questionsAndAnswers","smartFormsAnswersPreviewContainer","formResponses","loadingFormResponses","getFormResponses","form_responses","NoResponses","colSpan","emptyStateContainer","TableHeader","smartFormsTableContainer","unmountOnExit","link_to_user","Task","completeTask","completingTask","assigned_user","candidateTaskChip","TasksTab","fetchingTasks","getApplicationTasks","filteredTasks","Tasks","candidateSectionContainer","TasksAndEventsTab","ScoutCalendarState","eventDispatch","ScoutCalendarReducer","InitialScoutCalendarState","createEventObject","getApplicationEvents","stickyHeader","handleSelectEvent","eventName","eventDescription","maxCandidates","attendeeId","attendee_id","event_type","duration_in_minutes","eventDate","eventId","dates","owner","ends_at","showCreateEventModal","userTimezone","showViewEventModal","newApplicationEnabled","defaultOptions","queries","ApplicationPage","ActionModal","approver","requisitionId","getApprovalFormData","isUpdating","setIsUpdating","approval","setApproval","comment","setComment","updateApprover","putApprovalForm","approvers_attributes","actionsModal","modalActions","modalEditButton","host","AnswersView","questionLabel","year","month","parseAnswers","ans","availabilityTableData","config","shift","totalTime","total_availability_time","ApprovalForm","setIndicatorWidth","approvalFormData","setApprovalFormData","isLoadingPermissions","setIsLoadingPermissions","isCloning","setIsCloning","isGeneratingBulkPdf","setIsGeneratingBulkPdf","setUserPermissions","reorderedAnswers","setReorderedAnswers","emailTemplateQuestions","setEmailTemplateQuestions","getUserPermissions","allRoles","roles","feature_groups","getApprovalForm","orderedAnswers","email_template_fields","TabPanel","jobDefaults","job_field","cur","jobPageContainer","jobPageHeader","approvalFormIconsContainer","iconGrey","cloneApprovalForm","generateBulkPdf","PDFIcon","modalSaveButton","approvalFormSubtitle","statusContainer","backToApprovalFormsButton","requisition_requester","documents","template_config","hide_assigned_user","hide_approval_administrator","approval_administrator","approvers","approvalFormState","applicationIcon","fromApproval","approvalFormId","createApprovalFormQuestionsObject","newObject","inputText","ApprovalFormPage","approvalTemplateData","authenticity_token","hash","approvalFormQuestions","setApprovalFormQuestions","setSelected","setIsValid","actioned","setActioned","questionsData","for_email_template","noticeContainer","noticeIcon","approvalPage","toggleButtonsContainer","coi_response","commit","statusText","saveButton","tableHeaders","TableData","previousApproverActioned","editModalOpen","setEditModalOpen","actionModalOpen","setActionModalOpen","trashAlertOpen","setTrashAlertOpen","selectedApprover","setSelectedApprover","showMore","setShowMore","sentAt","sent_at","line","actionAt","action_at","handleShowMore","copy","flag","approversTableCell","approverTableStateButton","coiColumn","normalButton","resendEmail","approverId","postResendEmail","approver_id","editable","_destroy","ApproversTable","approversTableHeader","DayRow","payrollDay","allowBreak","availabilityTableBody","heading_1","heading_2","from_time","to_time","break_time","total_time","AvailabilityAnswer","days","availabilityTableHeader","allow_break","week_start_day","DocumentViewer","EditApproverModal","approvalManagers","setApprovalManagers","newApprover","setNewApprover","getApprovalManagers","sort_order","requisition_managers","getApprovers","isMandatoryApprover","manager","ApprovalForms","enableEmailTemplateFields","newApprovalOptions","setNewApprovalOptions","isPublicLinkDialogOpen","setIsPublicLinkDialogOpen","isApprovalManagerDialogOpen","setIsApprovalManagerDialogOpen","actionsAnchorEl","setActionsAnchorEl","newApprovalFormModal","setNewApprovalFormModal","newApprovalTemplateModal","setNewApprovalTemplateModal","templateArchived","setTemplateArchived","entityDefaultApprovers","setEntityDefaultApprovers","getEntityDefaultApprovers","getEntityApprovers","entity_default_approvers","getPageParams","tabNo","ariaLabel","archived","ApprovalFormsTab","approvalForms","setApprovalForms","globalSelected","setGlobalSelected","selectAllIsChecked","setSelectAllIsChecked","selectAllIsIndeterminate","setSelectAllIsIndeterminate","setSearch","setFilters","defaultFilters","sortableColumns","setSortableColumns","sortableColumnsDefaults","rowsPerPage","setRowsPerPage","setTotalPages","totalApprovalForms","setTotalApprovalForms","setSortBy","setSortOrder","currentPage","setCurrentPage","density","setDensity","filterableEntities","setFilterableEntities","filterableAssignedUsers","setFilterableAssignedUsers","filterableRequesters","setFilterableRequesters","getFirstApprovalFormsAndPreferences","preferenceData","fetchPreferences","densityData","preference","densityPreference","selectedStates","selectedEntityIds","selectedAssignedUserIds","assigned_user_ids","selectedRequesters","requested_by_users","requester","sessionPage","sessionStorage","getItem","row_count","sortable_columns","getApprovalForms","requisitions","parseInt","resHead","setUserPreferences","newFilters","updateUiSettings","updatedFilters","getFilterableEntities","getFilters","getFilterableAssignedUsers","assigned_users","getFilterableRequesters","filtersRow","entityList","assignedUserList","requesterList","getAllApprovalForms","CHECKBOX_CELL_WIDTH","ID_CELL_WIDTH","CANDIDATE_CELL_WIDTH","tablePadding","ApprovalFormsTable","selectedApprovalForm","setSelectedApprovalForm","selectAllApprovalForms","setSelectAllApprovalForms","isFetchingAllApprovalForms","setIsFetchingAllApprovalForms","setTableHovered","canScroll","setCanScroll","tableRef","actionCellRef","titleCellRef","preventLoop","deleteApprovalForms","setDeleteApprovalForms","firstThreeColumnsWidth","noteAnchorEl","setNoteAnchorEl","handleArchiveApprovalForms","ids","_f","_g","_h","postArchiveApprovalForms","requisition_ids","failure","handleUnarchiveApprovalForms","postUnarchiveApprovalForms","handleTrashApprovalForms","deleteTrashApprovalForms","handleScrollableEnter","element","scrollWidth","scrollShadowLeft","displaySelectAll","renderTableCell","approvalForm","updatedAt","noLinkStyling","requisition_link","requested_by","form_template","arrowsContainer","scrollLeft","leftArrow","showArrows","right","offsetWidth","rightArrow","scrollBehavior","onScroll","indeterminate","newGlobalSelected","currentApp","selectAllGlobalSelected","inputProps","isPermittedOption","columnValue","newSortOrder","handleSortChange","attachmentsHeader","stickyRight","scrollShadowRight","_i","_j","_k","_l","_m","handleSelectOne","attachmentsCell","actionItems","handleOpenNote","noApplications","skeletonContainer","paginationParent","rowSelectContainer","rowSelect","selection","paginationMenuItems","paginationContainer","siblingCount","newPage","selectedTooltip","selectedTooltipText","selectedAllTooltipText","allApprovalForms","handleCloseNote","approvalFormNote","selectedTooltipButtonsContainer","selectedTooltipButton","ApprovalManagers","totalApprovalManagers","setTotalApprovalManagers","getFirstApprovalManagersAndPreferences","getAllApprovalManagers","ApprovalManagersTable","selectAllApprovalManagers","setSelectAllApprovalManagers","deleteApprovalManagers","setDeleteApprovalManagers","editedManager","setEditedManager","isDeleting","setIsDeleting","isFetchingAllApprovalManagers","setIsFetchingAllApprovalManagers","handleDeleteApprovalManager","approvalManagerId","deleteApprovalManager","handleDeleteMultipleManagers","requisition_manager_ids","approvalManager","approvalManagersTableHeaders","handleEditManager","allApprovalManagers","NewApprovalManager","nameError","setNameError","emailError","setEmailError","createApprovalManager","requisition_manager","updateApprovalManager","modalFormLine","DebouncedFormTextField","onDebouncedChange","newEditedManager","Search","tempSearch","setTempSearch","debouncedAPICall","ApprovalPublicLink","loadingData","setLoadingData","loadingApprovers","setLoadingApprovers","setApprovers","approvalAdministrator","setApprovalAdministrator","administratorList","setAdministratorList","requesterAttributes","fetchingCSV","setFetchingCSV","positionTitleError","setPositionTitleError","setName","requesterAttributesErrors","setRequesterAttributesErrors","setRequisitionId","validateQuestions","tempErrorMessage","isChecked","array","Set","destroyed","documents_attributes","attached","requisition_requester_attributes","approvalData","to_email","handleLookUpButton","questionId","positionId","getCSVData","answerExist","original_title","default_approvers","mandatoryBlank","entity_default_approver","hide_position_title","previous","fileContainer","fileSize","lastModified","updatedFileList","handleDeleteAttachment","mandatory","approversContainer","newApprovers","handleEmailChange","removeApprover","draftButton","footerButtons","validateRequesterAttributes","validateApprovalManagers","ApprovalPublicLinks","approvalPublicLinks","setApprovalPublicLinks","totalApprovalPublicLinks","setTotalApprovalPublicLinks","getFirstApprovalPublicLinksAndPreferences","getApprovalPublicLinks","requisition_public_links","alertError","requisitionPublicLink","ApprovalPublicLinksTable","selectedApprovalPublicLink","setSelectedApprovalPublicLink","selectAllApprovalPublicLinks","setSelectAllApprovalPublicLinks","deleteAlertOpen","setDeleteAlertOpen","deleteApprovalPublicLinks","setDeleteApprovalPublicLinks","editingApprovalPublicLink","setEditingApprovalPublicLink","handleDeleteApprovalPublicLinks","requisition_public_link_ids","approvalPublicLink","approvalPublicLinkHeaders","linkContainer","public_link","approval_template_name","handleEditApprovalPublicLink","publicLink","ApprovalTemplate","approvalTemplateId","entityId","setApprovalTemplateData","getApprovalTemplate","backButton","AdvancedTab","setOptions","approvalTemplateEmail","setApprovalTemplateEmail","currVal","updatedApprovalTemplateFormOptions","approvalTemplateFormOptions","tabContent","tabContentTitle","tabContentBody","defaultValues","groupBy","ApprovalTemplateSettings","templateName","setTemplateName","selectedQuestion","setSelectedQuestion","setTabNumber","templateApprovers","setTemplateApprovers","setEmailTemplates","setTempErrorMessage","invalidEmailIndex","setInvalidEmailIndex","isMounted","defaultApprovers","approvalOptions","getEmailTemplates","optionsBooleanValues","approval_form_title_position","invalid","approvalTemplateObj","for_application","optionsNumericValues","handleSubmitAction","handleValidateTitle","cloneApprovalTemplate","requisition_form","redirect_url","fieldsUrl","updateApprovalTemplate","createApprovalTemplate","path","modalTabsContainer","settingTabs","tab","tabTitle","hoverTabTitle","modalFormContainer","closeIconContainer","questionsList","ApproversListAutoComplete","handleMandatoryButton","approverItemList","mandatoryLabel","ApproversListText","invalidEmail","DefaultApproversTab","newInvalidEmailIndex","currentApprover","FormTitleTab","questionListItemSelected","questionListItem","selectButton","TemplateTitleTab","tabContentError","ApprovalTemplates","setApprovalTemplates","creators","setCreators","setActiveColumns","dropdownSetting","totalApprovalTemplates","setTotalApprovalTemplates","getFirstApprovalTemplatesAndPreferences","selectedCreatedBy","getCreators","handleChangeActiveColumns","ApprovalTemplatesTable","deleteApprovalTemplates","setDeleteApprovalTemplates","editingApprovalTemplate","setEditingApprovalTemplate","setAction","handleArchiveOrTrashApprovalTemplates","postArchiveApprovalTemplates","approval_template_ids","deleteTrashApprovalTemplates","handleUnarchiveApprovalTemplates","postUnarchiveApprovalTemplates","handleAction","approvalTemplateHeaders","titleLink","requisition_form_fields_link","approvalTemplateNote","FilterDropdown","dropdownOpen","setDropdownOpen","loadingFilters","setLoadingFilters","tempFilters","setTempFilters","setNumberOfFilters","calculateNumberOfFilters","creatorOptions","creator","popover","filterPopoverContent","scrollableFilters","filterPopoverHeader","clearButton","applyButton","filterOptionContainer","MoveApprovalTemplate","setHasError","assignedMoveOptions","setMoveJobOptions","moveTo","setMoveTo","fetchMoveJobData","getTargetEntities","moveApprovalTemplate","subTitle","noEntitys","revertloadButton","noteBody","setNoteBody","savingNote","setSavingNote","saveNote","prevApprovalTemplates","newApprovalTemplates","approvalTemplateIndex","editNotePopover","notesTitle","noteInput","maxRows","notesButtonContainer","notesCancelButton","notesEditSaveButton","ArchivedFormsAndTemplates","automationContainer","DndFieldDropdown","handleFieldSwitchChange","newSortableColumns","onClickAway","popoverContent","tableSettingsHeader","isSwitched","FieldDropdown","handleChange","entityOptions","assignedUserOptions","requesterOptions","defaultFilterOptions","sortableField","sortableSwitchLabels","template_id","cognologyRecordId","newUI","containsDuplicates","questionObj","NewApproval","entityApprovalAdmin","setLoadingEmailTemplates","setLoadingAssignableUsers","approvalEmailTemplate","setApprovalEmailTemplate","attachedDocuments","setAttachedDocuments","setAssignableUsers","loadingFormData","setLoadingFormData","dataInitialized","setDataInitialized","setJobs","setApplications","setApplication","fetchingJobs","setFetchingJobs","setFetchingApplications","fetchingInitialJobsAndApplications","setFetchingInitialJobsAndApplications","approvalAnsweredIds","setApprovalAnsweredIds","showPositionTitle","validatePositionTitle","cognology_record_id","assigned_user_id","new_ui","handleSaveDraft","draft","handleSubmitApproval","updateApprovalForm","getApprovalTemplateData","fullAdministratorList","emailTemplateQuestionsData","getApplications","formApprovers","formAssignedUser","rankObj","checkBoxObj","convertAnswer","getApproverManagers","getAssignableUsers","assignable_users","getJobs","handleDeleteDocument","newAttachedDocuments","backToJobButton","sectionSubtitle","deleted","approverOptions","renderOption","hide_email_template","enable_approval_template_for_applications","cancelButton","NewApprovalModal","isNavigating","setIsNavigating","fetchApprovalTemplates","NewApprovalModalFromCandidate","templateOptions","setTemplateOptions","fetchEnabledApprovalTemplates","getEnabledApprovalTemplates","NewApprovalPublicLink","publicLinkName","setPublicLinkName","approval_template_id","approvalPublicLinkObj","updateApprovalPublicLink","requisition_public_link","createApprovalPublicLink","prevValue","prevApprovalForms","newApprovalForms","approvalFormIndex","AddSystemField","selectStatusRef","systemFields","setSystemFields","selectedField","setSelectedField","errorField","setErrorField","addSystemField","getSystemFields","system_fields","actionsModalReducedPadding","formError","modalFooterSmallerSection","modalCreateButton","fromTime","setFromTime","toTime","setToTime","calculateTotalTime","breakTime","shiftStart","shiftEnd","add","timeDiff","diff","tableTextfield","dateAdapter","disableOpenPicker","timeString","newData","textField","isDisabled","AvailabilityPreview","weekDuration","week_duration","defaultState","val","calculateTotalShiftsAndHours","newState","totalShifts","totalHours","totalShiftsAndHours","setTotalShiftsAndHours","onRowChange","tableHeaderStyling","tableLayout","tableDivider","errorBoxCheckbox","BooleanFieldSwitch","setFieldValue","isSystemField","labelSx","NewEmailTemplateField","editingQuestion","setLabel","errorLabel","setErrorLabel","errorChoices","setErrorChoices","choiceList","setChoiceList","addChoice","removeChoice","clearChoices","updateChoice","switchChoices","useFieldChoiceList","labelRef","choicesRef","setDefaultValue","newEmailTemplateField","clearData","fieldObject","jsonString","assign","parse","putQuestion","handleChoiceInput","modalWrapper","addChoiceContainer","addChoiceHead","addChoiceLabel","modalAddChoiceButton","onRemoveChoice","inlineError","fieldTypeOptions","fieldTypeValues","Select","Rank","Availability","Checkbox","Textarea","DateOptions","NewField","fieldType","setFieldType","enabledSwitch","setEnabledSwitch","requiredSwitch","setRequiredSwitch","confidentialSwitch","setConfidentialSwitch","rateableSwitch","setRateableSwitch","setWeekDuration","weekStartDay","setWeekStartDay","headingOne","setHeadingOne","headingTwo","setHeadingTwo","setAllowBreak","fieldTypeRef","object","availabilityContainer","SortableChoice","NewSystemFieldSVG","QuestionCardSensor","activators","handler","nativeEvent","isPrimary","dataset","testid","baseVal","interactiveElements","tagName","isInteractiveElement","Questions","allQuestions","setAllQuestions","approvalTemplateSettings","setEditingQuestion","handleDragEnd","updateApprovalFormQuestions","questionIndex","is_approval_form_title","newTemplateData","entity_id","catch","finally","questionsPageContainer","infoIcon","enable_declaration_of_conflict_of_interest","actionsContianer","actionButton","questionsHeader","OptionToggleGroup","settingButton","noQuestionsContainer","noQuestionsText","SortableItem","tempEnabled","setTempEnabled","tempRequired","setTempRequired","tempConfidential","setTempConfidential","tempIsFormTitle","setTempIsFormTitle","isDragging","cloneQuestion","handleUpdateActions","fieldId","indexOfAllquestions","newApprivalFormTitleQuestionId","handleSelectApprovalFormTitle","manual","dialogProps","setDialogProps","dialogId","questionsWrapper","dragHandle","questionInput","sortableItemSwitchContainer","answered","handleCloneQuestion","deletable","toTitleCase","sentence","word","ActivityIcon","activity","verb","actor","system","ActivitiesTab","candidateId","setAddRecord","activities","loadingActivities","getCandidateActivities","getApplicationActivities","addCandidateNote","addingCandidateNote","isSms","previousActivityIsOnDifferentDate","activity_html","email_status","emailStatus","showNoteContainer","indirect_object","overflowY","AddRecord","Candidate","CandidateState","CandidateReducer","InitialCandidateState","openMergeModal","setOpenMergeModal","loadingCandidate","getCandidateData","candidateHeaderContainer","candidateNameHeader","candidateActionIconsContainer","Candidates","duplicated_candidates","openEditModal","editedCandidate","CandidateDispatch","openDeleteModal","candidateApplicationsTableLink","sister_entity_application","application_link","job_link","job_title","entity_link","candidateApplicationsRating","getRatingColor","candidateApplicationsTableStatusContainer","status_colour","CREATE_TEXT","tag_list","updateCandidateTags","candidateSectionHeader","clearIcon","entity_tags","newTags","startsWith","isNew","listStyle","popper","AddEditTaskModal","createCandidateTask","creatingCandidateTask","updateCandidateTask","updatingCandidateTask","deleteCandidateTask","deletingCandidateTask","candidateTaskModalIsOpen","CandidateTask","completeCandidateTask","completingCandidateTask","CandidateTasksTab","EmptyTab","TaskWorkflowModal","taskWorkflowModalIsOpen","CandidateTasks","getCandidateTasks","Entities","MergeCandidates","confirmMerge","setConfirmMerge","mergeCandidates","mergingCandidates","address1","address2","notepad","setNotepad","streetDetails","street_number","street_type","countryDetails","ProfileTab","updateCandidateNotepad","updatingCandidateNotepad","loadingApplications","candidateApplicationsTableSettings","getCandidateApplications","employee_id","candidateNameContainer","linkedInButton","candidateProfileDetails","candidateProfileAddress","candidateApplicationsTableState","candidateApplicationsTableColumn","CandidatePage","CandidatesState","CandidatesReducer","InitialCandidatesState","pref","getDensityPreferences","handleUserPreferenceChange","postUserPreferences","candidatesTableSettings","loadingCandidates","getCandidates","candidatesTableState","candidatesPageContainer","candidatesPageHeader","idLabel","candidatesActionsListItem","CandidatesDispatch","Link","attribute","number_of_applications","DeleteCandidate","successSnackbarPayload","errorSnackbarPayload","linkedin","address","candidateData","candidateAddress","updateCandidate","updatingCandidate","arg","address_attributes","country_id","countryId","state_id","stateId","newCandidates","updatedCandidate","editCandidateModalContent","editCandidateModalDetailsHeader","editCandidateModalDetailsRows","streetTypes","streetTypesAutocomplete","editCandidateListboxStyle","editCandidateAutocompleteTextfield","newErrors","candidatesTableColumn","CandidatesPage","BetaButton","applicationBetaButton","disableDropDown","createButtonAction","createButtonDiv","addIcon","dropdownIcon","LoadingButtonView","loadingCaption","rest","LoadingButton","activeStep","buttonSecondaryLight","steps","isSaving","buttonSecondary","DonutChart","font","family","cutout","borderWidth","labels","external","externalTooltipHandler","layout","bottom","datasets","hoverBackgroundColor","hoverOffset","LineChart","chartAreaBorder","beforeDraw","chart","args","ctx","chartArea","save","strokeStyle","lineWidth","setLineDash","borderDash","lineDashOffset","borderDashOffset","strokeRect","restore","tension","grid","drawBorder","drawTicks","pointRadius","pointHoverRadius","hoverBorderWidth","hoverBorderColor","pointBackgroundColor","pointBorderColor","autocompleteService","placesService","COUNTRY_ABBR","Australia","Canada","requiredRef","activeError","viewJobsAd","city","script","createElement","appendChild","loadScript","getPlacePredictions","trailing","leading","google","maps","places","AutocompleteService","PlacesService","componentRestrictions","AutocompleteSessionToken","types","results","newOptions","terms","reverse","prevAnswers","formControl","forcePopupIcon","autoCompletePopper","placeId","place_id","getDetails","place","PlacesServiceStatus","OK","formattedAddress","addressComponents","removeCountryFromAddress","formatted_address","handlePlaceSelect","onInputChange","newInputValue","autoCompleteRoot","autoCompleteClose","structured_formatting","main_text_matched_substrings","parts","main_text","part","highlight","secondary_text","attachmentHovered","setAttachmentHovered","emailAttachmentsList","templateAttachment","emailAttachmentContainer","emailAttachmentIcon","emailAttachmentName","humanFileSize","attached_file_size","newAttachments","removeAttachment","AutocompleteInput","optionLabel","dateField","matchedValue","onKeyPress","setShowPreview","alignSelf","CircularProgressWithLabel","thickness","circle","CircularStatic","progress","setProgress","timer","setInterval","prevProgress","clearInterval","EmptyState","svgIcon","populateValue","FormCheckboxGroup","checkboxStyle","labelStyle","defaultChecked","tip","FormRadioButtonGroup","radioStyle","onInternalChange","FormRadioButtonWithTextInputGroup","populateRanks","choices","ranks","FormRankField","setRanks","rankFieldOption","rankFieldSelect","newRanks","FormSelectField","FormSelectWithIconField","TextInput","resize","willChange","dataTestId","maxLength","inputRef","textWrap","unit","FormTextFieldBlur","debounceTime","DebouncedFormNumberField","DebouncedFormTextFieldBlur","MultilineDebouncedFormTextField","successDialog","successCheck","successDialogText","advertisement_id","dialogButtonContainer","successDialogContainer","InputWrapper","StyledTag","Listbox","MultiSelect","setOpen","getRootProps","getInputProps","getTagProps","getListboxProps","getOptionProps","groupedOptions","autoSelect","displayOption","MultiSelectWithCreate","hasMaximumCharacter","MultiTagInput","isFocused","setIsFocused","selectedForDelete","setSelectedForDelete","setMessage","handleAddTag","multiTagLabel","textAndTagsWrapper","focusedStyles","tagSelected","tagIconButton","handleRemoveTag","tagIcon","onPaste","clipboardData","uniqueTags","invalidTags","validTags","handlePaste","textInput","caretColor","multiTagHelperText","fixedErrorBox","ServerDay","onDaySelect","outsideCurrentMonth","isSelected","nextDayIsSelected","previousDayIsSelected","pickersDay","ActionBar","onAccept","onCancel","white","MultipleDatesPicker","setSelectedDays","n","isAfter","onActionAccept","multipleDatesPickerLabel","multipleDatesPickerInput","multipleDatesPickerExtraDates","slots","actionBar","multipleDatesPickerStaticDatePicker","py","px","idx","DayItem","removeSelectedDate","mb","typography","SelectField","todayButtonStyling","maxDate","minDate","dateLibInstance","pickerStyles","timeSteps","hours","minutes","openTo","UncontrolledSingleDatePicker","handleDateChange","ControlledTimePicker","minutesInterval","materialTimePicker","calendarHeader","smsTemplateName","setSmsTemplateName","smsTemplateError","setSmsTemplateError","notify","smsTemplates","fetchingSmsTemplates","getSmsTemplates","sms_templates","saveTemplate","savingTemplate","saveSmsTemplate","addToEventListboxProps","addToEventCharacterCount","saveSMSTemplateError","saveSMSTemplateButton","TransitionDown","getSnackbarStyle","snackbarSuccess","snackbarWarning","snackbarError","isVisible","setIsVisible","clearSnack","handleClear","TransitionComponent","ClickAwayListenerProps","mouseEvent","touchEvent","snackbarMessageIconContainer","getSnackbarIcon","snackbarMessage","snackbarButton","StyledTooltip","customHeight","firstElement","isMouseEnter","setIsMounterEnter","elevation","chip","tagContent","styledChip","styledChipLabel","errorDescription","bold","italic","list","renderRow","displayTooltip","setDisplayTooltip","dataSet","inlineStyle","refCallback","hasOwnProperty","enterDelay","noWrap","OuterElementContext","OuterElementType","outerProps","ListboxComponent","itemData","smUp","breakpoints","up","noSsr","itemCount","itemSize","getChildSize","gridRef","resetAfterIndex","useResetCache","Provider","outerElementType","innerElementType","overscanCount","StyledPopper","listbox","boxSizing","hasIdAndRef","disableListWrap","PopperComponent","optionIndex","formattedTemplates","groupName","RenderRow","VirtualizeGrouped","renderGroup","modalButtonBase","modalSecondaryButton","DENSITIES","ColumnSettings","sendLocalUserPreferences","newColumns","ui_preference","clearPreferenceCache","handleDensitySwitchChange","newDensity","Filters","MIN_DATE","dateFieldClass","datefieldsContainerClass","dateRangeInputsRefs","handleDateOrder","activeElement","handleDateFieldChange","datePickerCalendar","onlyStartDate","addDayToRange","first","daysOfWeek","last","modifiersStyles","borderTopLeftRadius","borderBottomLeftRadius","borderTopRightRadius","borderBottomRightRadius","filterSelectGroupStyle","filterSelectSubLabelStyle","sliderContainer","adornmentContainer","StyledInput","inputPostcode","setInputPostcode","inputRadius","setInputRadius","handleRadiusSearch","ratingSlider","valueLabelDisplay","valueLabelFormat","getAriaValueText","parentRef","tableAndArrowsContainer","handleScrollableExit","handleScroll","hasActionItems","numberOfRows","showNoItemsMessage","allItemIds","actionsTableCell","handleSelectAllOnPage","notSortable","skeletonContaineStyle","noResultsContainer","leftPosition","setLeftPosition","handleScrollLeft","handleScrollRight","HEIGHT","MARGIN_BOTTOM","ExpandableLinkedTags","showExpandedItems","setShowExpandedItems","showTooltip","setShowTooltip","handleShowTooltip","displayedItems","displayBadge","Tag","badge","numberOfItems","viewAllItem","showLess","disableFocusListener","disableHoverListener","onAuxClick","textOverflow","BORDER_HEIGHT","userSelect","notesExpanded","setNotesExpanded","hasOverflow","setHasOverflow","scrollHeight","noteContainer","noteSubject","noteUser","noted_by","notesExpandContract","setNoteSubject","setPreviewOpen","setSelectedAttachment","sortedAttachments","applicationLink","isShareable","attachmentItem","isLoadingSelectAll","setIsLoadingSelectAll","selectAllWithActionsTooltip","selectAllWithActionsTooltipButton","defaultSort","modals","selectedItems","addSelected","removeSelected","addAllPageItems","removeAllPageItems","NoEventsSVG","FelixAISVG","NoTasksSVG","FelixAIActiveSVG","AcceptedIcon","DeclinedIcon","moreContent","dialog","tickWrapper","tickGreen","crossWrapper","crossRed","dialogHeader","confirmationButton","buttonRed","setConfirmCancelIsOpen","generatingDownload","setGeneratingDownload","downloadURL","setDownloadURL","emailFallbackMessage","setEmailFallbackMessage","hasFetchedData","setHasFetchedData","handleDownload","downloadModalContent","downloadModalDescription","download","FilePreviewModal","allowDownload","setText","setPreview","getText","getPreveiwImage","getAttribute","onDocumentLoadSuccess","previewable","fileLinkContainer","attached_content_type","overflowX","ad","jobAds","setAds","adsStatus","setDialogLoading","setDialogUrl","setDialogAdID","setDialogTitle","setDialogDescription","setDialogButtonText","setDialogButtonCallback","setSelectedAd","handleSnack","handleArchive","urls","indeed_urls","viewjobs_urls","adBoard","getExpireAdButtonStyle","class","handleExpire","getContinueDraftButtonStyle","buttonGreenLight","getCloneAdButtonStyle","put","newAds","copyJob","expired","renderActiveIcons","renderDraftIcon","renderExpiredIcon","iconRed","buttonStyle","handleButtonStyle","actionsContainer","actionButtonContainer","columnRefrence","columnButtonPadding","showIcons","handleDelete","selectedAd","ADTYPES","filterAnchorEl","setFilterAnchorEl","selectedAdType","handleAdTypeChange","filterMenu","AdTable","dialogUrl","dialogTitle","dialogButtonText","dialogButtonCallback","dialogLoading","dialogOpen","isSnackOpen","setIsSnackOpen","snackMessage","setSnackMessage","bb_job_title","rowHeader","center","bb_job_ref","broadbean_urls","BroadbeanAds","ads","iframeUrl","setIframeUrl","a11yProps","getAds","new_broadbean_url","containerOuter","banner","toggleButtonGroup","substring","handleClone","council_jobs_ad_expiry_date","approved","iconGreen","active_on_seek","active_on_council_jobs","preview_url","edit_url","clone_url","ApproveSVG","CouncilJobsAd","jobAdId","setAd","approving","setApproving","handleApprove","getAd","adPageContainer","adPageHeader","backToJobAdButton","approveButton","headerContent","detailsTitle","ad_details","council_jobs_employer_name","council_jobs_categories_to_sentence","job_type_to_sentence","council_jobs_apply_type","council_jobs_apply_value","council_jobs_posting_options","updated_by","CouncilJobsAds","newAdButton","handleInitialContent","contentArray","getDefaults","defaults","indexs","NewCouncilJobsAd","adDetails","setAdDetails","setIsSaving","council_jobs_contact_email","council_jobs_region","council_jobs_state","council_jobs_job_type","url_str","clone_id","handleSave","send_to_council_jobs","council_jobs_categories","job_ad","region","categories_options","job_type","isExpiryDialogOpen","setExpiryDialogOpen","handleLocalExpiryChange","newExpiryDate","setNewExpiryDate","calendarOpen","setCalendarOpen","expired_at","expiryMessage","expiryDateMessage","advertisement_published_at","disableMaskedInput","published","publishedDate","calculateMinDate","expiryPostPickerMessage","expiryChangePreview","expiryDateContainer","expiryTitle","expiryDate","buttonDateConfirm","seekResponse","ExpiryPopover","immediateExpiryOnClick","dateExpiryOnClick","expiryActionsAnchorEl","setExpiryActionsAnchorEl","filterButton","dialogAdID","IdibuAds","newUrl","setNewUrl","new_ad_url","iframe_url","jobCellRef","tableContainer","expiry","sponsored","sponsorText","IndeedAds","setPage","maxAds","setMaxAds","maxPages","setMaxPages","setSelectedAdType","loadingCreate","setLoadingCreate","errorModalOpen","setErrorModalOpen","getInitialAds","job_ads","currentType","currentRows","createNewJob","isSingleJob","defaultPage","adminUser","expiryDialogOpen","downIcon","buttonExpiry","openExpiryDialog","handleReplay","post","showDeleteOption","listing_location_display","seek_live_url","newDate","adId","createAdDialogOpen","setCreateAdDialogOpen","seekAccounts","selectedSeekAccount","setSelectedSeekAccount","jsonResponse","reset","useInitSeekAd","dialogContainer","dropdown","SeekAds","setAdminUser","setErrorMessage","useSeekAccounts","admin_user","TableSkeleton","skeletonComponent","boxStyle","borderTop","featured","ViewJobsAds","tableHeaderRow","tableCellData","tableBody","noRecords","AttachmentAndGoogleDriveSelector","setGoogleFileList","maxFiles","noClick","noKeyboard","onDragOver","setIsDraggedOver","onDragLeave","onDropRejected","setIsRejected","onDrop","acceptedFiles","parsedFiles","File","uploadFiles","isDraggedOver","isRejected","percentCompleted","setPercentCompleted","isGoogleLoading","setIsGoogleLoading","setClient","developerKey","setDeveloperKey","FormData","append","onUploadProgress","progressEvent","openPicker","authRes","popup","setPopup","uploadFromGoogleDrive","openGoogleDrive","w","h","screen","openPopup","developer_key","client_json","clientId","client_id","viewId","viewMimeTypes","showUploadView","showUploadFolders","supportDrives","multiselect","customScopes","callbackFunction","docsIds","docs","doc","handleOpenPicker","checkUrlInterval","closed","close","dragAreaWithGoogleDrive","dragAreaOver","fillOpacity","buttonGroup","selectFilesButton","selectFilesGoogleButton","AttachmentSelector","fileRejections","validator","maximumSize","dragArea","scale","fileRejection","DebounceInput","DocTypeIcon","doctype","HtmlEditor","editorRef","handleEditorAction","getContent","initialValue","onInit","editor","init","menubar","statusbar","paste_data_images","min_height","max_height","autoresize_bottom_margin","relative_urls","remove_script_host","browser_spellcheck","convert_urls","toolbar1","toolbar2","powerpaste_word_import","powerpaste_html_import","content_style","HtmlEditorFonts","contextmenu","font_size_formats","font_family_formats","QuestionHTML","QuestionFieldGenerator","csvOptions","selectedCSVOption","setSelectedCSVOption","setPositionId","questionHTMLTemplate","formDateWrapper","formDatePickerStyles","lookUpButton","QuestionFieldViewer","questionsRankInput","RequisitionInfoViewer","requisitionInfos","setRequisitionInfos","updateAnswer","updateCheckbox","SingleAttachmentSelector","acceptedFile","isHovered","setIsHovered","dragAreaSingle","dragAreaOverSingle","selectFilesButtonSingle","formatUserPermissionsAsArray","rolesArray","channel","onReceive","setSocketConnected","subscription","consumer","subscriptions","remove","create","connected","received","newCalendarEnabled","newApplicationsRef","hasRecruitmentTeamEnabled","recruitment_team_enabled","flexBasis","Banner","EventCircle","backgroundSize","backgroundPosition","kpiSection","fluctuation","iconColor","isSuccess","getKpiItems","fluctuation_daily","toLocaleString","Loader","recruitment_ad_user","pinned","setOrder","orderBy","setOrderBy","titleContainer","sectionTitle","ml","mr","jobsConfig","fetchUISwitch","filtersApplied","jobStatusFeature","showNewApplicants","hideArrows","isDashboard","TaskItem","handleCompleteTask","isCompleted","getColor","mt","taskable_type","flexShrink","priorityTag","dateTag","checkTag","STATUSES","Tab","tabRef","setTab","tabDimensions","setTabDimensions","fetchNextPage","isFetchingNextPage","hasNextPage","pageParam","getTasks","to_do","getNextPageParam","lastPage","nextPage","completed","childNodes","buttonElement","tabContainer","taskContainer","scrollTop","flex","allItems","flatMap","dateCurrent","isFirst","isLast","calculateAllItems","hasUpcomingEvent","headerContainer","copyEventLinks","darkGrey","MAX_CHARACTERS","AttendeeList","filteredAttendees","attendee","Attendee","numberOfAttendees","tagText","application_url","lineContainer","connectingLine","infoContainer","candidatesContainer","timeContainer","eventSubject","eventLinksHTML","eventDateTimeString","toLocaleDateString","weekday","toLocaleTimeString","hour","minute","eventLink","candidateLinks","copyRichHTML","bodyContainer","editInfoText","QuestionsList","loadingQuestions","setLoadingQuestions","switchContainer","enabled_for_summary","GoogleScript","googleScriptTabJobData","setGoogleScriptTabJobData","setIsEdited","templateRef","google_conversion_script","hintText","PanelWorkflow","chairsOptions","setChairsOptions","panelWorkflowTabJobData","setPanelWorkflowTabJobData","fetchWorkflowData","getJobPanelChairs","panel_chairs","panel_members","panel_observers","RequisitionInfo","requisitionInfoTabJobData","setRequisitionInfoTabJobData","setEditable","requisitionInfoId","setRequisitionInfoId","getRequisitionInfos","requisition_info","createRequisitionInfos","modalCreateRequisitionButton","requisitionWrapper","requisitionInput","updateRequisitionButton","Revolve","revolveTabJobData","setRevolveTabJobData","revolve_position_title","TestGrid","automatedTests","testGridPackages","setAutomatedTests","setApplicationStatuses","setTestGridPackages","testIndex","setTestIndex","getAutomatedTests","test_grid_tests","getTestgridPackages","test_grid_packages","handleOpenModal","removeAutomatedTest","newAutomatedTests","testGridContainer","titleAndButtonContainer","newButton","cols","reply","tgPackage","trigger_status_id","pass_at","pass_status_id","fail_status_id","tableActions","tableEditButton","tableDeleteButton","noTests","TestGridModal","selectedPackage","setSelectedPackage","selectedTriggerStatus","setSelectedTriggerStatus","passAt","setPassAt","selectedPassStatus","setSelectedPassStatus","selectedFailStatus","setSelectedFailStatus","trigger","pass","passStatus","failStatus","refObject","applicaitonStatuses","sliderLine","percentageSlider","modalSendButton","errorRef","newTests","AutoForward","autoForwarders","templatesList","setAutoForwarders","forwardIndex","setForwardIndex","getAutoForwarders","auto_forwarders","getTemplatesAndPlaceholders","removeAutoForwarder","immutableRemove","forwarder","recipient_emails","noAutoForwarders","isLoadingTemplateList","NewAutoForward","tempEmails","setTempEmails","isLoadingTemplate","setIsLoadingTemplate","selectedStatus","setSelectedStatus","handleSelectTemplate","secondsToString","previewSkeleton","htmlContent","previewHeader","emailPreview","scope","auto_forwarder","newAutoForwarders","AutoReply","autoReplies","setAutoReplies","hasCareAdvantageIntegration","setHasCareAdvantageIntegration","setCareAdvantageEvents","replyIndex","setReplyIndex","getAutoReplies","auto_emails","removeAutoReplies","email_template_name","NewAutoReply","emailSetting","setEmailSetting","email_setting","care_advantage_event_name","targetEvent","newReplies","AutoSMSForward","autoForwards","setAutoForwards","getAutoForwards","auto_sms_forwards","removeAutoForwards","forward","NewAutoSMSForward","tempPhones","setTempPhones","smsTemplateOptions","getBodyFromSmsTemplateValue","jsonBody","newForward","AutoSMSReply","setEventTypes","auto_sms_replies","sms_template_name","isLoadingEventTypes","NewAutoSMSReply","selectedEventType","setSelectedEventType","autoReply","AutoStatuses","handleEditTabChange","questionBased","ratingBased","questionBasedAS","setQuestionBasedAS","ratingBasedAS","setRatingBasedAS","hasRadioButtonQuestions","setHasRadioButtonQuestions","getQuestionBasedAS","auto_statuses_question_based","getRatingBasedAS","auto_statuses_rating_based","autoStatuses","setAutoStatuses","NoAutoStatusSVG","xmlnsxlink","QuestionBased","new","addField","deleteField","updateField","hoveredField","setHoveredField","radioQuestions","setRadioQuestions","getRadioButtonQuestions","handleAddNewAutoStatus","auto_status_question_based","auto_status_conditions_attributes","handleNewAutoStatusField","tempAutoStatus","filteredQuestion","f","handleRemoveField","fieldIndex","handleDeleteAutoStatus","autoStatusesCopy","handleChangeStatus","statusId","prevAutoStatuses","handleChangeField","handleEnableStatus","autoStatusesContainer","autoStatus","statusIndex","autoStatusesSubContainer","statusFormLine","addNewFieldButton","deleteButton","addNewStatusButton","noStatusesAddButton","RatingBased","handleRatingChange","prevAutoStatus","rating_range","auto_status_rating_based","min_rating","max_rating","handleStatusChange","handleNewAutoStatus","DebouncedSlider","debouncedOnChange","getAriaLabel","TimeBased","statusTransitions","setStatusTransitions","numberError","setNumberError","getStatusTransitions","status_transitions","statusTransition","status_transition","newStatusTransitions","handleNewStatusTransition","from_status_id","to_status_id","handleDeleteStatusTransition","debouncedNumberInputCallback","newNumberError","CancelButton","DelaySelect","valueWithFallback","DELAY_OPTIONS","DelaySelectWrapper","ImmediateChangesNotice","Description","descriptionTabJobData","setDescriptionTabJobData","aiPrefillData","setSummary","setDescription","setButtonHovered","aiStudioOpen","setAiStudioOpen","warnText","emojiRegex","headerRow","EditJob","aiInterview","aiStudio","aiStudioSummaries","jobFeedActive","canAddIndeedDemographicQ","mainTabValue","setMainTabValue","jobLoading","setJobLoading","editTabValue","setEditTabValue","changeURL","timezoneOptions","setTimezoneOptions","brandOptions","setBrandOptions","requisitionsOptions","setRequisitionsOptions","classificationsOptions","setClassificationsOptions","localOptions","setLocalOptions","autoRaterOptions","setAutoRaterOptions","assignedUsersOptions","setAssignedUsersOptions","salespersonOptions","setSalespersonOptions","jobPanelChairsOptions","setJobPanelChairsOptions","rmTeamOptions","setRmTeamOptions","changeTab","setChangeTab","generalTabJobData","setGeneralTabJobData","templateTabJobData","setTemplateTabJobData","sourcesTabJobData","setSourcesTabJobData","sourceListIds","setSourceListIds","attachmentsTabJobData","setAttachmentsTabJobData","candidateAttachments","setCandidateAttachments","warningModalOpen","setWarningModalOpen","hasActiveSeekAd","setHasActiveSeekAd","isToggled","setIsToggled","lastUpdate","setLastUpdate","isEdited","resolvedIndex","convertToPanelIndex","convertToNormalTabIndex","getJob","setFetchedData","jobResponse","editGeneralJobDefault","editPanelWorkflowDefault","editGoogleScriptDefault","editRevolveDefault","editRequisitionInfoDefault","editDescriptionDefault","editTemplateDefault","editSourcesDefault","candidate_attachments","fetchActiveSeekAds","getActiveSeekAd","paid_role","user_type","onbeforeunload","mutation","updateJob","handleUpdateJob","editObj","editJobObject","lastSaved","lastSavedFormat","pickedtimezone","editJobPageHeader","backAndLastSaveContainer","editTabsContainer","editTabs","editTabIndicator","tabsSubheader","toggleIcon","iconPosition","TabGroup","JOB_INFORMATION","CANDIDATE_SETTINGS","AUTOMATION","ADVANCED","ConfigureApplicationHRQuestions","test_grid_configured","revolve_configured","entity_settings","show_panel_workflow","newJobData","setNewJobsData","applicationQuestionTemplateId","application_question_template","EditJobToggleLeftSVG","EditJobToggleRightSVG","Classifications","selectedClassification","setSelectedClassification","classification_list","classification","classification_ids","prevState","parent","classificationLabel","selectGroup","generalModalFormLine","classifications","sub_classifications","sub_occupation_classifications","addSourceButton","tempArray","addSourceLabel","expandOptionalFields","setExpandOptionalFields","loadingTimezones","isLoadingTimezones","setCountries","expires_at","employment_status","salary_info","number_of_vacancies","from_email","external_approval_id","checkReference","referenceValidation","valid","correct_format","countriesWithlabels","localeCompare","handleGetCountries","fetchOptionalSectionData","brand","autoRater","sales","rmTeam","local","getJobTimezones","getJobBrand","getJobrequisitions","getJobClassifications","getJobAutoRaters","getJobAssignableUsers","getSalesPeople","getRMteamMembers","getJobLocales","brands","auto_raters","sales_people","rm_team_members","locales","handleValidateFields","firstError","isSame","accordionRoot","accordionSummary","entity_email","locale","address_state","fullWidthFieldContainer","editJobsConfig","additionalOptionsDefaults","linkedin_listing_opt_in","auto_ratings","auto_rater","entity_privacy_acknowledgement","entity_privacy_acknowledgement_link","internal","features","smart_form_recipients","show_smart_form_recipients","pin_jobs","pinned_users","salesperson","rm_team_member","HRQuestions","noticeHeader","noticeBody","questionsTitle","canEnable","addHRQuestionSystemField","enableable","setEnableable","putHRQuestion","newHRField","NoQuestionSVG","deleteHRQuestion","autoRating","isDemographicQuestion","setIsDemographicQuestion","felixAISwitch","setFelixAISwitch","baseSwitchStyle","aiSwitch","updateRank","updateRankValue","updateRating","is_demographic_question","felix_ai_interview_prompter","errMsg","showAiToggle","handleSelectRating","handleRankInput","handleSelectRankValue","autoRatingOptions","rank","rank_value","NoQuestionArrowSVG","QuestionList","filteredQuestions","applicationCount","applications_count","aiStudioField","updateJobQuestions","tempRateable","setTempRateable","tempWeight","setTempWeight","weight","tempFelixAI","setTempFelixAI","isQuestionEditable","originalWeight","originalAiInterviewPrompter","switchTypes","aiPrompterToggleText","actionButtonsContainer","SortableItemSwitch","isActive","isEditable","switchLabel","AccountClockIcon","SourceTypes","Sources","sourceOptions","setSourceOptions","selectedCountry","setSelectedCountry","selectedSource","setSelectedSource","getSourceOptions","sourcesData","sortedSourcesData","tempSources","SourcesIconSVG","Template","template_enabled","EditJobPage","SkeletonTable","_row","_cell","j","AddTasks","selectedApplicant","setSelectedApplicant","setAssignedUserOptions","assignTo","setAssignTo","fetchJobs","useJobsForTask","fetchApplications","useApplicationsForTask","fetchCreateFormData","getTask","getPriority","createNewTask","newTask","pt","CeridianDayforce","setEnabled","retryLoading","setRetryLoading","entityUsesCeridian","entity_is_configured","handleRetryUpload","handleFilter","getStatusText","Processing","Pending","failed_file_renaming","upload_confirmed","uploading_failed","filterContainer","export_status","upload_time","exported_successfully","exported_confirmation_time","clickable","noCandidateContainer","MoveJob","getMoveJobs","moveJob","RatingSet","deleteBulk","setDeleteBulk","ratingOptions","setRatingOptions","raterOptions","setRaterOptions","raterName","setRaterName","deleteUserConfirm","setDeleteUserConfirm","fetchRatingData","ratingSets","raters","getRatingSets","getRaters","rating_sets","deleteSet","deleteRatingSet","deleteRaters","deleteRaterSet","buttonGreen","deleteApplicant","tableRow","rater_name","sets","noWorkflows","Revisions","openContent","setOpenContent","versionNumber","setVersionNumber","revisions","setRevisions","disableButton","setDisableButton","createNewVersion","revertRevision","fetchRevision","ticked","getRevision","filteredRevisions","job_revisions","revision","filteredLogs","logs","change_from","change_to","filteredOptions","optionKey","prototype","call","currentRevision","revisionsModalContent","revisionsTitle","revisionsContent","sliderInput","marks","revisionsSubTitle","changesTableContent","revisionsVersionsIcon","revisionsVersionsContent","revisionsVersionsContentBlue","editor_url","optionsText","revisionsVersionsContentDescription","blind_rating","hide_rating_activity","title_field","linkedin_field","indeed_apply","employee_id_field","attachmentContent","codeChangesOnly","renderTableData","noRevisions","revisionsActions","StartWorkFlow","workflowOptions","setWorkflowOptions","usersOptions","setUserOptions","workflowName","setWorkflowName","newWorkflowURL","setNewWorkflowURL","fetchWorkFlowData","createNewWorkflow","createNewWorkflowButton","jobAttachments","jobHasPrivacyAcknowledgement","jobIsLoading","jobOptions","jobSources","newNoteOnApplicationEnabled","SORTABLE_COLUMN_IDS_TO_REMOVE","SortableColumnId","NOTES","NOTE_PAD","PERMANENT_RECORD","filterableStatuses","setFilterableStatuses","filterableCountries","setFilterableCountries","filterableSuburbs","setFilterableSuburbs","selectAllApplications","setSelectAllApplications","totalApplications","setTotalApplications","initialModalsOpen","newApplicationPage","setNewApplicationPage","handleSortTranslate","saveSortableColumns","rowCount","getFirstApplicationsAndPreferences","sortAndFilterData","columnsAndLimitData","sortAndFilterpreferences","columnsAndLimitPreferences","selectedCountries","selectedSuburbs","updatedColumns","getUpdatedSortableColumns","exclude_job_attribute","sort_by","sort_direction","getFilterableStatuses","filterable_statuses","getFilterableCountries","getFilterableSuburbs","suburbs","deselectAll","handleDeselectCandidate","clearAllSelection","showGender","applicationsContainer","handleOpenAIInsights","aiInsights","statusList","countryList","suburbList","newApplication","newApplicationButton","componentsProps","enableSortableColumn","prevSortableColumn","updatedSortableColumns","sortableColumn","getAllApplications","handleTemplatePermissions","inviteToTimeslot","deleteApplications","ApplicationsActionsPanel","ai_studio_summaries_enabled","foundu_enabled","foundu_auth_url","useContext","EntityContext","changeStatus","ExternalEmailIcon","exportToPdf","move","exportToFoundu","actionButtonAI","ApplicationsTable","selectedApplication","setSelectedApplication","isFetchingAllApplications","setIsFetchingAllApplications","attachmentsListOpen","setAttachmentsListOpen","statusAnchorEl","setStatusAnchorEl","statusIsSending","setStatusIsSending","candidateCellRef","statusDropdownRef","applicantAnchorEl","setApplicantAnchorEl","setLastHoveredApplicant","selectedAIApplicant","setSelectedAIApplicant","notesRef","activeNote","setActiveNote","canAddNote","putApplicationStatus","newApplications","selectedNote","isNotePad","NoteState","NOTEPAD","requestAnimationFrame","newApplicationLink","handleHover","candidateCell","candidateIcon","applicationStatus","statusDropdown","statusClamp","anchor","statusLoader","statusColour","noteRef","handleShowAttachmentsList","aiQuestionsButton","allApplications","noteState","handleSelectAttachment","statusDropdownItems","statusDropdownItem","CeridianIcon","ResendIcon","statusOptions","countryOptions","suburbOptions","filterSwitchLabels","filterSwitchActive","filterSwitch","isNotEditable","setIsNotEditable","noteError","setNoteError","prevApplications","applicationIndex","currentApplication","errorText","noteEditButtonContainer","emojiInString","NOTES_ERROR_MESSAGE","usePlaceholders","useEmailTemplatesOptions","getEmailTemplate","bookableCandidates","closeModalCallback","CSVExport","selectedFields","setSelectedFields","individualRating","handleClickChip","previousSelections","csvExportModal","csvExportHeader","csvExportSubheader","chipPacket","chipSelected","csvExportButton","ChangeStatus","noStatusSelected","setNoStatusSelected","tempGlobalSelected","setTempGlobalSelected","confirm","change_status","EmailCandidates","setIsLoadingTemplateList","sendableBody","setSendableBody","setPlaceholders","isLoadingEventList","setIsLoadingEventList","commaSeparatedAppIds","errorData","ExportFoundU","isSubmitting","setIsSubmitting","setSendEmail","failedCount","failed","workato","ExportPDF","failedExports","setFailedExports","centerColumn","exportErrors","failedExport","ExternalEmail","includeSummaries","setIncludeSummaries","selectedRecruiter","setSelectedRecruiter","timeslotHovered","setTimeslotHovered","recruiterRef","eventTypeRef","bodyRef","selectedMonth","setSelectedMonth","getTimeslots","queryString","handleSubmitEmail","sameDay","datelist","onMonthChange","dailyTimeslotsContainer","timeslotTime","timeslotType","ellipsis","expandedTimeslot","timeslotNote","modalCandidatesHeader","MoveApplications","setIsLoadingJobs","jobList","setJobList","noJobSelected","setNoJobSelected","jobListRef","getJobList","createApplicantQuestionsObject","genderOptions","NewApplication","apply_with_mobile","apply_with_phone","regionValue","setRegionValue","countryValue","setCountryValue","applicantDetails","setApplicantDetails","applicantDetailsDefault","applicantQuestions","setApplicantQuestions","uploadErrors","setUploadErrors","sourceValue","setSourceValue","sourceError","setSourceError","privacyAcknowledged","setPrivacyAcknowledged","privacyError","setPrivacyError","sendNotification","setSendNotification","uploadsRef","addressFirstLine","addressSecondLine","employeeId","sourceRef","privacyRef","handleClearForm","detailsError","uploadError","sourceInvalid","duplicates","fullWidthField","formAutocompleteDisabled","uploadSection","uploadSectionContent","upload","uploadContainer","uploadLabel","sourceContainer","modalConfirmationButton","candidate_attributes","applicationData","source_id","send_notification","SMSCandidates","hasTemplatePermissions","templatesLoading","setTemplatesLoading","setSavingTemplate","messageContent","setMessageContent","contentError","setContentError","contentRef","isSMSContentValid","getTemplates","deleteSmsTemplate","smsTemplateId","newTemplates","sms_template","editTemplate","stopPropagation","characterCount","saveSMSTemplateContainer","TempCSVExport","applications_report","with_answers","exact_states","exclude_unrated","defaultErrors","notesError","setNotesError","newNote","closeNoteHandler","notesContainer","SelectedApplicants","searchTerm","setSearchTerm","candidateSearch","selectedApplicantsTableHeader","selectedApplicantsTable","filterCandidates","statusDropdownSelected","statusClampSelected","availabilityColumnCell","onRemoveCandidate","totalAttachments","setTotalAttachments","attachmentId","deleteJobAttachment","fetchAttachments","fetchInitialAttachments","getJobAttachments","job_attachments","CandidateAttachments","isPillTick","setIsPillTick","Resume","newAttachment","setNewAttachment","activeId","setActiveId","handleDragStart","checkPillValue","handleAttachmentInput","onRemoveAttachment","handleAddAttachment","checkedPill","addAttachmentButton","onDragStart","SortableRow","ClicksNoBackgroundSVG","EmailStatus","emailStatuses","setEmailStatuses","totalEmailStatuses","setTotalEmailStatuses","previewId","setPreviewId","isCancelling","setIsCancelling","hoveredScheduleButtons","setHoveredScheduleButtons","unscheduleIndex","setUnscheduleIndex","unscheduleDialogOpen","setUnscheduleDialogOpen","unscheduledDetailsIsHovered","setUnscheduledDetailsIsHovered","selectedEmailStatusId","setSelectedEmailStatusId","fetchInitialEmailStatuses","getEmailStatuses","job_email_statuses","fetchEmailStatuses","cancelEmail","emailStatusId","cancelEmailBatch","handleCancel","newIsCancelling","resetIsCancelling","handleUnscheduleDialogOpen","statusPastTense","handlePreview","canceled_at","unscheduledEmailDetails","newHoveredRows","unsheduledDetailsPopover","unsheduledDetailsLabel","unsheduledDetailsInfo","canceled_by","cancelEmailButton","newHoveredScheduleButton","newHoveredScheduleButtons","handleOpen","disableFocusRipple","filterLabel","widgetContainer","bounced_pcent","candidateTableWrapper","noEmailStatusContainer","noEmailStatusesText","NoEmailStatusSVG","StatusTypeOcpm","BouncedSVG","ClicksSVG","DeliveredSVG","OpenedSVG","Statistics","UnsubscribedSVG","ChartWidget","Chart","ChartIcon","chartTitle","setData","dateFrom","setDateFrom","dateTo","setDateTo","chartAnimation","fetchData","fromDate","getGraphData","end_date","widget","titleAndDateContainer","backdropFilter","noDataContainer","noDataIcon","DatePicker","createContext","Job","jobCounts","setJobCounts","stateAnchorEl","setStateAnchorEl","unarchiveLoading","setUnarchiveLoading","cloneLoading","setCloneLoading","iframeLoading","setIframeLoading","stateIsSending","setStateIsSending","isResending","setIsResending","resourses","setResourses","resourceDefault","isPinning","setIsPinning","pinnedByCurrentUser","setPinnedByCurrentUser","pinned_by_user","jobCountsResponse","getJobCounts","handleStateChange","putChangedState","job_states","job_statuses","putChangedStatus","handleScrollClose","handlePin","putUnpinJob","unpinJob","putPinJob","pinJob","jobArchivedContainer","jobArchiveAlert","jobUnarchiveButton","putUnarchiveJob","job_ids","handleUnarchiveJob","actionButtons","queryParams","stateStatusContainer","stateDropdown","statusDownIcon","applicationsTabButton","open_applications_count","openApplications","publishedAt","published_at","expiresAt","createdByLink","entityLink","brandLink","brand_link","iframeContainer","frameBorder","stateOptions","SingleMultiposter","showSeek","setShowSeek","showIndeed","setShowIndeed","showIdibu","setShowIdibu","showBroadbean","setShowBroadbean","showCouncilJobs","setShowCouncilJobs","showViewJobs","setViewJobs","multiposterSelection","setMultiposterSelection","seek","indeed","idibu","broadbean","council_jobs","view_jobs","multiposterContainer","toggleContainer","logoSize","displayAdType","editMode","editingId","handleNewNote","handleEditNote","handleDeleteNote","newNoteContainer","notesNewButton","noteContent","noteText","noteActions","notesSkeleton","noNotesText","Notes","setEditMode","editedNote","setEditedNote","setEditingId","fetchNotes","getNotes","job_notes","job_note","putNote","deleteNote","noteId","noteEdit","handleNoteInput","noteEditFooter","SadNoteSVG","ApplicationsAndViews","widgetBlockNew","unique_page_views","daily_unique_views","unique_views","CreationExpiry","jobTimeZone","creationExpiryContainer","widgetIcon","DateWidget","utcDate","dayToExpired","getTime","expiryDateColor","widgetText","widgetTextTitle","widgetTextContent","infoWidgetWidth","setInfoWidgetWidth","infoWidgetRef","widgetObserver","infoWidget","jobInfoContainer","infoText","infoTextTitle","infoTextContent","Subcontainer","subcontainer","JobPage","ExportCSV","isError","setIsError","getCSVExport","postDensitySetting","setStatusOptions","publishedRange","setPublishedRange","expiryRange","setExpiryRange","validDate","setValidDate","publishedStart","publishedEnd","expiryStart","expiryEnd","publishedModifiers","expiryModifiers","handleDateInput","isStart","newTemp","updateStatusTempFilter","handleExpandChange","statusSelectOptions","updateStatusSelectOptions","addLocalStorageItem","FILTERS_KEY","multiSelectContainer","summaryTypography","accordionDetails","dateDisplay","inputFormat","dateInput","invalidDate","setFetchUISwitch","debouncedSearch","showPinnedJobs","setShowPinnedJobs","filterKeys","getEntites","getLocations","getAssignedUsers","getRecruitmentAdUsers","recruitment_ad_users","getStatuses","currentStateOptions","group_pinned","fetchUISettings","filtersLength","postUISettings","getLocalStorageItem","archivedStateOptions","iconButtonSelected","showEntitySection","Misc","tableHeadingAlignment","tableHeadingWidth","tableHeadingTransform","EnhancedTableHead","onSelectAllClick","numSelected","onRequestSort","hovered","headCell","property","sortDirection","titleHeaderCell","cellAnimate","actionsHeaderCell","maxJobs","setMaxJobs","firstLoad","setFirstLoad","setHovered","deleteJobs","setDeleteJobs","allColumns","noteRefs","vpHeight","arrowHeight","handleRequestSort","handleSelectAllClick","newSelecteds","scrollToTableTop","scrollTo","reloadJobs","handleUnarchiveJobs","putUnrchiveJobs","labelId","wordBreak","titleCell","stateColumn","noDropdown","noStatuses","noteColumn","note_index","listId","isItemSelected","selectedIndex","concat","actionsCell","iconGray","searchOrFilterApplied","handleTrashJobs","selectedJobId","pinnedJobs","setPinnedJobs","isLoadingPinned","setIsLoadingPinned","tempState","setTempState","stateError","setStateError","tempStatus","setTempStatus","pinResponse","setPinResponse","getPinnedJobs","exclude_pinned","dashboard","with_new_applications","getNewStateAndStatus","handleStateDropdownClose","changeState","handleStatusDropdownClose","newStatus","handleArchiveJobs","putArchiveJobs","cloneJob","cloningJob","tableRowSharedProps","handleStateDropdown","showDropdown","handleStatusDropdown","isPinnedSection","pinnedCount","showPinnedBorder","changeStateTense","CurrentJobsTableHeader","hideSortIcon","CurrentJobsTableRow","stateErrorTooltip","stateLoader","formatDate","postJobNote","prevJobs","newJobs","jobIndex","NewJob","confirmCreatedJobOpen","setConfirmCreatedJobOpen","confirmFailJobOpen","setConfirmFailJobOpen","createType","setCreateType","setJobOptions","jobDefaultOptions","setJobDefaultOptions","prefixReference","setPrefixReference","clonedJob","setClonedJob","copiedJob","setCopiedJob","createJobDefault","editJobUrl","setEditJobUrl","tlpPreviewCollapsed","setTlpPreviewCollapsed","setEntities","selectedEntity","setSelectedEntity","loadingEntities","setLoadingEntities","getEntities","current_entity","importResources","createJob","clonedOptions","prefix","cloneJobsOptions","referencePrefix","auto_job_reference_prefix","verticleLineWhite","stepNumberGreen","editStep","verticleLine","stepNumberGrey","modalHeaderContent","cloneJobInput","newJobsConfig","resource_field_choices","guess","modalContentStep3","reviewSubheaders","reviewContent","reviewBoxes","weightValue","iconGreenResources","jobEntity","StyledBreadcrumbs","breadcrumbsData","isHorizontalOverflow","useIsOverflow","newBreadCrumbData","nameRegex","hrefRegex","breadcrumb","convertBreadcrumbsData","breadcrumbContainer","homeIcon","separator","breadcrumbSeparator","breadcrumbs","underline","userInfo","setChangingEntity","widgetsbarExpanded","menuOpen","setMenuOpen","avatarAnchorEl","profileDropdownContainer","profileAvatar","profileDropdownIcon","loadingLogout","setLoadingLogout","masqueradeIconHovered","setMasqueradeIconHovered","alertState","setAlertState","profileMenuItems","links","sourceURL","logOut","openChangingEntity","showAvatar","unmasqueradeURL","avatarSmall","masqueradeAvatar","profileDropdownMenuContainer","profileInformation","profileNameAndEntityContainer","roleInformationWrapper","roleNames","roleInformation","multiEntitiesAccess","profileDropdownMenuItemsContainer","profileDropdownMenuItem","setSearchQuery","openSearch","setOpenSearch","searchIcon","searchDialog","clearSearch","widgetsbarState","setWidgetsbarState","showButtonContainer","hideButtonContainer","Event","dispatchEvent","userEntities","setUserEntities","setEntityId","getUserEntities","switchEntityDialog","valueField","labelField","switchEntityButton","isUAT","setWidgetsbarExpanded","changingEntity","checkLocalStorage","uatBanner","appMenuAnchorEl","setAppMenuAnchorEl","isRecruit","logo","appMenuContainer","appMenuContainerCollapsed","appMenuItemsContainer","appMenuItemsContainerCollapsed","appMenuItems","setNavbarState","setChildState","handleNavbarStateChange","expandCollapseButtonContainer","navbarWidths","expandCollapseButton","menuItems","activeChild","childState","handleChildPopperState","collapsedNavigationChildContainer","submenu","subItem","expandedParents","activeItem","menuItemChildrenContainer","menuItemChild","IS_ENGAGE_URL","newEngageEnabled","setExpandedParents","setActiveItem","filterMenuItems","filteredMenuItems","defaultMenuItems","discoverActiveItem","RegExp","navigationItemsContainer","navigationItemsContainerCollapsed","menuItemParent","activeParent","menuItemParentCollapsed","onCollapsedClick","tempExpandedParents","handleParentClick","renderIcon","menuItemExpandCollapseIcon","aiStudioSettings","navbarContainer","accordian","accordionButton","activitiesContainer","isExecuted","isInitialLoading","getActivityFeed","lastDate","scrollToBottom","Infinity","onTransitionEnd","isToday","recentlyViewedList","setRecentlyViewedList","getRecentlyViewed","recentlyViewedContainer","view","renderColor","controller","request_url","caption","ENGAGE_URL","calendlyEnabled","selectedDate","setSelectedDate","setMonth","weekStart","createMultipleEvents","eventCreated","setEventCreated","useEvents","handleAddEvent","single","widgetsContainerPadding","widgetsbarContainer","widgetsbarWidths","addButton","instance","WidgetsbarWrapper","EditFormPage","formId","SmartFormFieldsState","loadingSystemFields","selectedSystemField","systemFieldError","sourceTypes","ImportFields","sourceType","setSourceType","importFields","loadingSources","getRequisitionForms","selectedSourceId","CreateEditField","actionStates","fetchedFormData","refetchFormData","updateQuestions","questionsActionStates","smartFormSettings","originalQuestions","smartFormState","refetchForms","modalType","UPDATE","updateActions","ListItem","setManager","setOpenManager","editName","setEditName","editEmail","setEditEmail","createStatus","createError","addManager","editStatus","editError","editManager","SampleList","openManager","managers","deleteStatus","deleteError","deleteManager","SmartFormFields","SmartFormFieldsReducer","InitialSmartFormFieldsState","getSmartForm","smartFormsPageContainer","smartFormsPageHeader","CREATE","actionButtonLabel","showModal","showSmartFormModal","CLONE_WITHOUT_FORM","fetchingEntities","forms","fetchingForms","createUpdateSmartForm","cloneForm","updateSmartForm","postSmartForm","defaultSwitch","SmartFormPreview","SmartFormsState","SmartFormsReducer","InitialSmartFormsState","headerRef","smartForm","loadingSmartForm","SmartFormPreviewPage","SmartForms","loadingForms","totalForms","DeleteTooltip","SmartFormsTable","deleteSmartForm","enabledAnchorEl","setEnabledAnchorEl","deleteForm","handleEnabledDropdown","handleEnabledDropdownClose","SmartFormsTableHeaders","enabledDropdown","SmartFormsPage","elementRef","withFormValidation","exitDialogOpen","setExitDialogOpen","snackbarPayload","recruiterOptions","loadingRecruiterOptions","getEventRecruiters","errorsMessage","sessions","createEventParams","break_length","breaks","user_ids","number_of_sessions","createEvents","creatingEvents","createEventsBatches","emojiError","editEvent","editingEvent","updateEvent","newList","createEventModalTitle","FirstStep","SecondStep","ReviewStep","DateDisplay","datesAnchorEl","setDatesAnchorEl","multipleDatesIndicator","progressHeader","isOptionEqualToValue","autocompleteListboxStyle","autocompleteTextfield","selectedTime","second","hourAndMinute","newDateAndTime","newDates","MAX_VISIBLE_AVATARS","statusIconMap","accepted","declined","getIcon","CustomBadge","overlap","renderAvatar","avatar","curr","GroupedAvatars","setAvatarAnchorEl","hasDescription","descriptionText","memorisedDescriptionText","editIcon","CandidateGroupedAvatars","noCandidatesAssigned","wordWrap","EventCreated","eventCreatedModalContainer","eventCreatedModalTitle","eventSessionsContainer","session","ListView","openConfirmationDialog","setOpenConfirmationDialog","deleteEvent","deletingEvent","useDeleteEvent","nextEventIsOnSameDate","previousEventIsOnDifferentDate","listViewCircleIcon","listViewEventTime","listViewEventTitle","listViewInfoTag","listViewSectionTitle","getAttendees","listViewNoCandidatesAssigned","setDefault","localizer","isMobile","getPlatform","viewDate","setViewDate","showList","setShowList","calendarAnchorEl","setCalendarAnchorEl","calendarView","setCalendarView","withoutModal","handleSelectSlot","slot","startDay","isoWeekday","startOf","getWeekStart","handleCreateEvent","addNewEventsPopover","dateCalendar","viewAndSettingsContainer","viewAndSettingsButton","weekPeriodContainer","calendarArrows","timezoneInfo","scrollToTime","defaultView","WEEK","timeslots","selectable","onSelectSlot","onSelecting","onNavigate","eventLength","sessionLength","formats","dayFormat","dayPropGetter","setFilter","filteredEvents","setFilteredEvents","filterEvents","ModalProps","itemContainer","itemDetails","ActionButtons","openDialog","sendEmails","sendEmailBatchesToCandidates","smsCandidates","loadingStatuses","event_application_statuses","getEventApplicationStatuses","changingStatus","changeApplicationStatuses","actionModalContent","actionModalTemplateTitle","SelectedCandidatesTable","application_rating","confirmAction","setConfirmAction","currentUserIsARecruiter","removeCandidates","removingCandidates","removeAttendees","updatedCandidates","updateInvitation","updatingInvitation","updateAttendeeInvitation","updatedRecruiters","attendeeIndex","updatedEvents","deleteAndRemoveDialogDescription","longEventTitle","modalDeleteAndCloseContainer","candidatesListContainer","applicationUrl","job_reference","noCandidatesContainer","acceptingInviteContainer","acceptingInviteButtonGroup","selectedCandidatesIndicatorContainer","clearSelectionButton","updatedList","ScoutCalendarPage","ThemeContext","baseTheme","overrides","fontWeightBold","Component","propTypes","setResolution","findingDescriptions","ua","findings","renderFindings","minRows","resolution_endpoint","ServiceApi","$","attr","getPage","pack","price_pack","AdminIntegrationsIndex","renderIntegrations","integration","icon2x","icons","icon3x","srcSet","render","this","AdminIntegrationsInfoShow","constructor","super","info_tabs","packs","ctaLabel","cta_label","targetUrl","target_url","showButton","show_button","tabClass","tabSelected","tabPaneClass","currentPack","sending","sent","componentDidMount","unlisten","listen","getInfo","componentWillUnmount","priceList","price","enableButtons","handlePackChange","tabPanes","AdminIntegrationsNew","AdminIntegrationsShow","integration_edit_path","pageResponse","AdminMenu","detailSidebar","showAllIntegrations","bool","removeClass","addClass","mobileExpanded","renderHub","apps","menu","renderServices","services","service","showAll","configured","info_only","toggleIntegrationsList","renderComingSoon","applicationName","brandImageUrl","showServicesAndIntegrations","toggleDetailSidebar","toggleMobileNav","PayingUserIndexTemplate","entityValues","rootEntityValues","stateValues","selectCallback","bind","rolePaidFilterCallback","buildCol","buildControls","elem","paid","buildRow","buildHeaders","sortCallback","buildSortableHeader","stateName","filterCallback","prop","payingUserFilters","root_entities","user_states","multi","paginationCallback","csvSubmit","filterSubmit","payingUserIndex","default_filter","root_entity_id","data_name","sort_key","sort_state","getSubservice","serviceId","AdminServicesIndex","AdminServiceShow","subservices","subservice_items","serviceTitle","subservice","AdminSubserviceShow","btnLabel","btn_label","AdminSubmenu","cname","cvalue","exdays","setTime","expires","toGMTString","cookie","ca","decodeURIComponent","setCookie","getCookie","subMenuId","clickHandler","subitem","stopImmediatePropagation","VideoInterview","videoCurrentTime","videoJS","bookmarkTxt","timeMins","timeSecs","editTxt","editNum","editSecs","editMins","addId","removeIndex","videoId","bookMarks","deletedVideo","secs","videoJsOptions","videoSources","player","videoNode","promises","bookmark","variables","seconds","timeStamp","sortBookmarks","createBookmark","previousAry","calTimeStamp","addBookmark","mins","dropDown","updateBookmark","deleteBookmark","handleUpdateTime","updateColor","deletePermission","onSubmit","handleEditSubmit","handleInput","padTimeWithZeros","exitEdit","handleAddSubmit","showBookmarkTime","deleteVideo","deleteVideoUrl","logActivity","activityUrl","VideoInterviewClass","VideoInterviewAdmin","VideoInterviewClient","VideoWrapperClass","VideoWrapperAdmin","VideoWrapperClient","VideoUpload","updateUrl","showBookmark","showDeleteButton","getVideo","createVideo","savedBookmarks","addMultipleBookmarks","getBookmarks","on","addTextTrack","dispose","showVideo","Upload","uploading","slug","uploadProgress","videoPlayer","responseVideoURL","transcoding","loadingState","validFile","videoState","Id","checkVideoState","handelUpload","totalSize","prepareUploadingVideo","uploadFile","xhr","XMLHttpRequest","onprogress","done","setRequestHeader","send","onloadend","getMetaData","prepareLink","rejectedFiles","errorsList","fileSizeLimit","progressStyles","accept","bookmarkId","bookMarkID","IntegrationSettings","integration_id","auth_string","componentWillMount","MvsRequestTest","onPackageChange","SavedSearchItem","savedSearch","isStaff","itemUrl","emailUrl","saveCallback","ajax","saved_search","defaultLabel","post_code1","post_code2","by_title","ret","encodeDataParams","encodeStatus","encodeTags","renderSearchLink","parameters","renderFilters","dataParams","encodeURIComponent","SavedSearchTable","ScoutTrainingsIndex","courses","loadCourses","accessToken","endPoint","scout_candidate_id","Accept","syncCandidate","ScoutTrainingsPortalButton","PropTypes","func","ScoutTrainingsTable","course","provider","commencemented_at","onChangeFunctionName","formattedData","ScoutAddButton","re","innerText","handleSelect","ScoutAutocomplete","limitation","opt","attrs","includeBlank","urlHeaders","searchString","searchUrl","unshift","optionsFirstLoad","getOptions","handleLimitationChange","moveType","selectedLabel","limitationSelect","isMulti","joinValues","loadOptions","cache","isRequired","NestedAutocomplete","parentValue","childBaseUrl","childUrl","parentName","parentLabel","parentUrl","setParentValue","ScoutSelect","selectingOption","formatEmail","getDerivedStateFromProps","nextProps","optionsForQuery","str","LinkControl","CustomControlColumn","DataColumn","InPlaceInputEditor","editing","toggleEditing","inputCallback","LinkColumn","ScoutFilter","filterFields","localSubmit","out","media","CallbackHeader","DataHeader","ScoutTablePagination","renderControl","renderPageControl","renderActiveLink","renderForwardControl","renderBackwardControl","classNames","total_pages","current_page","output","total_records","float","ScoutIndexRow","zebraClass","ScoutIndexTable","renderPagination","renderLoadingRow","renderNothingFound","renderTableBody","idName","ScoutTags","UNSAFE_componentWillReceiveProps","FilteringOptionsTable","defaultStatuses","defaultTags","canFilterScoutClients","setHidden","componentTags","onDropdownChange","newStatuses","parseDate","parsed","isDate","FORMAT","onRemoveClick","onDayChange","dayPickerInput","inputDay","getInput","getFullYear","updatedTags","onSorting","SearchResultsHeader","SearchResultsHeaderRow","isSortingAsc","context","isSortingDesc","defaultClassName","contextTypes","SearchResultsItem","post_code","SearchResultsPagination","isEmpty","renderPreviousPage","previous_page","renderNextPage","isNothingToRender","renderFirstPage","firstPage","renderLastPage","renderPages","previousPages","nextPages","SearchBox","acceptCharset","SortingContext","SearchResultsTable","loadResults","searchEndpoint","url_with_params","param","$searchName","searchName","savedSearchEndpoint","credentials","isSearchSaved","handleSorting","handlePagination","skill","handleFilterOnSubmit","handleFilterOnChange","renderError","hasResults","renderHeader","renderResultsWithSpinner","renderResults","renderNoResults","isSearchSave","handleSaveSearch","SearchResultsTableWithSpinner","AccordionItem","Accordion","adEditorCancelButton","activityList","setList","finished","setFinished","getActivities","prevId","__this","__arguments","generator","reject","fulfilled","rejected","throw","apply","defaultExpanded","accordianButton","accordianTitle","isToday2","dateContainer","borderBottomColor","salaryTypes","AdEditor","jobAdParams","saving","setSaving","savingDraft","setSavingDraft","isSuccessDialogOpen","setIsSuccessDialogOpen","setActiveStep","isExitModalOpen","setIsExitModalOpen","updateAnswers","setActiveError","companyName","industry","industry_options","listing_classification","subIndustry","sub_industry_options","listing_sub_classification","reportToWork","report_to","language","remoteWork","remote","remote_type_options","hires","number_of_hires","hiring","always_hiring","employmentType","work_type_options","work_type","schedule","schedules_options","schedules","isStartDate","selectedSalaryType","salary_type","rangeTo","salary_max","rangeFrom","salary_min","rangeUnit","payment_frequencies_options","salary_frequency","additionalPay","additional_payment_options","additional_payments","benefits","salary_benefit_options","salary_benefits","submitResume","require_resume","isApplicationDeadline","application_deadline","applicationDeadline","startConversation","applicant_starts_conversation","covidPrecautions","covid_precautions","jobReference","askQualifications","applicant_qualifications","ad_preview","submit","listing_location","requiredRefs","checkErrors","getPlainText","Step1","Step2","Step3","handleNextButton","handleNext","__defProp","defineProperty","__defProps","defineProperties","__getOwnPropDescs","getOwnPropertyDescriptors","__getOwnPropSymbols","getOwnPropertySymbols","__hasOwnProp","__propIsEnum","propertyIsEnumerable","__defNormalProp","obj","enumerable","configurable","writable","__spreadValues","__spreadProps","stepContainer","select","value2","greyBox","greyInput","greyIcon","country_options","IconComponent","languages_options","controlledNumberInput","errorOutline","w200","jobAdPropTypes","handleMultiCheck","asterisk","small","calendarContainer","errorStartDate","overlay","calendarOverlay","requiredHeader","salaryInput","inputAdornment","wrap","salaryDropdown","pay","benefit","large","textBox","setIsMobile","previewType","previewDetails","previewButtons","previewContent","applicationSettings","applicationSettingsInner","subFormControl","borderLeft","actionText","spaceItems","removeIcon","sliderTitle","sliderValue","thumb","stepperRoot","stepItem","stepIconActive","stepIconCompleted","stepIconRoot","stepLabelIconContainer","stepLabelLabel","stepLabelActive","stepLabelCompleted","stepHover","stepNoHover","dark","light","sponsorJobContainer","pointerEvents","sponsorJobSubTitle","hireCounter","smallText","mediumText","budgetInput","budgetInutFocused","estimatedResults","paragraphTitle","paragraph","submitButtonContainer","menuItem","AdList","requestNewAdUrl","getNewAdUrl","buttonPrimary","buttonActive","buttonGrey","buttonPrimaryLight","buttonWhite","disableIcon","budgetTypes","SponsoredJobEditor","sponsoredAd","isAdvanced","setIsAdvanced","costPerClick","setCostPerClick","isEndDate","setIsEndDate","budgetType","setBudgetType","budget2","budget_type","budget","setBudget","budget_amount","hireCount","setHireCount","hires_number","endDate","setEndDate","budgetInputFocused","selectMenu","job_ad_id","indeed_access_token","sponsored_job","__async","expire","archive","borderCollapse","borderSpacing","GenericDialog","KpiCard","indicator","getClasses","TRENDING_ICONS","trendingIcon","down","steady","card","cardImageContainer","cardImage","imageUrl","STATUS_COLOR","good","bad","average","borderLeftColor","backgroundRepeat","kpiIcon","directionStatus","cardInner","kpiCategories","settingsOpen","setSettingsOpen","getDashboard","manageMetrics","cards","cardProps","KpiSettings","kpiSettings","setSettings","getCardList","kpiA","kpiB","settings","getDashboardSettings","fetchSettings","kpi","currentPosition","swapWith","newSettings","moveCard","saveDashboardSettings","buttonProgress","THRESHOLD_DIRECTION_OPTS","KpiSettingsCard","good_direction","bad_direction","onCheck","moveButton","paperCon","tooltipEl","canvas","parentNode","getOrCreateTooltip","lines","tableHead","trow","th","titleText","createTextNode","span","tr","tableRoot","firstChild","positionX","offsetTop","positionY","caretX","caretY","bodyFont","string","eyeCon","titleLines","bodyLines","QontoConnector","alternativeLabel","borderTopWidth","StepperComponent","connector","iconContainer","StepIconProps","editExistingJob","setEditExistingJob","checkoutUrl","setCheckoutUrl","checkNewListingUrl","setCheckNewListingUrl","workLocation","work_location","payType","pay_type","payRangeLow","payRangeHigh","jobPreview","job_preview","externalUrl","external_url","externalId","external_id","checkout_url","check_new_listing_url","newAnswers","errorChecks","referrer","worklocations","paytypes","parseSalary","salaryIntervalLabel","extrabenefits","_a2","_b2","descriptionLabel","linkOutEnabled","privacyOverLimit","seek_billing_reference","seek_billing_reference_flag","job_url_prop","brandingEnabled","setBrandingEnabled","maxBulletPoints","setMaxBulletPoints","failedSeekDialogOpen","setFailedSeekDialogOpen","failedSeekDialogMessage","setfailedSeekDialogMessage","getSeekAdBrandingData","setGetSeekAdBrandingData","activeErrorMessage","setActiveErrorMessage","previewUrl","usePreviewSeekAd","getJobData","link_out","video_embed_code","ad_type","use_suggested_classification","difference","current_step","error_message","Step4","failDialog","PinkRadio","AdProductSelection","debouncedTitle","seekAdProduct","setSeekAdProduct","adProductInfo","setAdProductInfo","loadingSeekAdProduct","setLoadingSeekAdProduct","selectedId","setSelectedId","setSelectedValue","handleChangeAdType","branding","searchBulletPoints","products","information","advertisementProducts","product","exception","getSeekAdProducts","sm","md","seekAdType","seekEmbeddedHTML","sellingPoints","sp","index2","AdSelection","getSeekAdSelectionData","setGetSeekAdSelectionData","loadingSeekAdType","setLoadingSeekAdType","selectedValue","seekAnzHirerAdvertisementCreationProducts","getSeekAdType","enabledIndicator","seekAdTypeDisabled","advertisementTypeCode","ExitConfirmationDialog","saveDraft","ExitExistingDialogContent","closeContainer","ExitNewDialogContent","PayDetails","payTypes","useSeekPayTypes","currencies","useSeekCurrencies","payDetailsContainer","salary_interval","basisCode","intervalCode","setSalaryType","currency","salary_additional_text","SeekBillingReference","billing_reference","workSalaryOptions","WorkTypes","listing_work_type","loadingSeekAdAllCategories","setLoadingSeekAdTypeAllCategories","loadingSeekAdCategories","setLoadingSeekAdCategories","seekAdCategories","setSeekAdCategories","getSeekAdCategoriesData","setGetSeekAdCategoriesData","categoriesIndex","setCategoriesIndex","debouncedAddress","updateCategoryIndex","rawData","jobCategories","getSeekAdCategories","getSugestedSeekAdCategories","jobCategorySuggestions","errorAutocomplete","listing_sub_classification_display","jobCategory","listing_classification_display","seek_account_id","loadingSeekAdBranding","setLoadingSeekAdBranding","seekBrandindInfo","setSeekBrandindInfo","advertisementBrandings","edges","pageInfo","branding_id","standout_bullets","standoutBullets","setStandoutBullet","RenderList","endCursor","seekYoutubeUrl","video_position","imageLength","images","typeCode","reviewQuestionText","posting_questionnaire","secondaryRadioGroup","secondaryRadio","optionHint","include_privacy","TextAreaWithCounter","SCOUT_BLUE","SCOUT_SECONDARY_LIGHT_BLUE","SCOUT_SECONDARY_BLUE","WHITE","exLarge","listStylePosition","checkboxWrapper","subheading","closeModalContainer","SeekAd","__publicField","getHeaders","handleResponse","CategoryDeck","categoryList","onMoveStatus","setDefaults","saved","setSaved","dirty","setDirty","differentFromDefaults","setDifferentFromDefaults","hasParentSettings","setHasParentSettings","fetchCategories","getCategories","initialiseCategories","has_parent_settings","defaultsDiff","updateCategories","cats","category_assignment","toS","categoryColumn","handleStatusChanged","defaultsData","categoryName","defaultCategoryColumn","categories2","createDefaultCategories","removeCategories","TextUsModal","selectedApplications","setSelectedApplications","isGroupMessage","setIsGroupMessage","isSelectModalOpen","setIsSelectModalOpen","largeModal","setLargeModal","toggleTextusModal","classList","contains","paramsSerializer","modalRoot","modalLarge","Messenger","conversationsLoading","setConversationsLoading","userOptionsLoading","setUserOptionsLoading","setSending","conversations","setConversations","userOptions","showSidebar","setShowSidebar","selectedConversation","setSelectedConversation","signature","setSignature","scheduleDate","setScheduleDate","scheduleTime","setScheduleTime","isPm","setIsPm","groupMessage","setGroupMessage","fetchConversations","applications2","conversationsData","candidate_id","conversations2","matchingConversation","convo","candidate_phone","candidate_tags","handleTimeValueForPost","fetchUserOptions","initData","modalLeft","sent_time","conversation","modalRight","handleSend","campaign_title","schedule_time","newConversations","msg","existingConversations","combinedConversations","newConversation","CandidateDetails","remainingApplicants","CandidateFilter","unselectedStatuses","reducePadding","filterIcon","filterIconActive","popperStatuses","popperOptions","positionFixed","popperItem","chipNoItems","CandidateListItem","fromNow","excerpt","ChatBox","isSchedulerOpen","setIsSchedulerOpen","timeInputEl","textArea","TagPicker","insertTag","selectionStart","TemplatePicker","SignatureToggle","sendButton","spinner","schedulerButton","schedulerButtonActive","popperScheduler","schedulerOptions","startingTimeInputWrapper","startTimeInput","timeBntGroupWrapper","isAMActive","isPMActive","popperTemplate","popperItemTemplate","noHover","ChatWindow","noMessages","chatContainer","asHours","ChatItem","chatItemContainer","alignRight","chatItem","fromCandidate","SelectRecipients","selectedUsers","setSelectedUsers","setUnselectedStatuses","DataSourcedComponent","PaginatedDataSource","parseBrowserHash","fetchCSV","handleSort","value_object","filter_map","path_func","parseResponse","param_filters","empty","jQuery","that","response_data","dataCallback","sort_field","checked2","getOptionValue","getLabel","getValue","useFormValidator","inputError","ServiceComponent","ServiceInterfaceClient","notices","alerts","beforeId","before_id","componentRequireContext","tempNotificationData","syntax","inherits","dropShadow","listStyleType","customDescription","use_custom_description","include_hashtags","summary_length","centeredBiggerMargin","resume","summaryContainer","tlpPreview","toggleTlpPreview","historyId","questionString","questionArray","custom_get","calendly","buttonIcon","borderStyle","borderTopColor","default_text","letterSpacing","marginleft","baseOperatorsRegex","parenthesisContentRegex","baseOperators","onlyBaseOperators","exec","match2","detectOperator","queryPart","opaque","green","red","blue","convertedFilters","bigToggleButton","visibility","errorIcon","hr_answer_set","rating_set","getSmsTemplatePlaceholders","getEmailTemplateFromCalendar","applicationIds","added","invited","emailTemplateId","form_response","send_form","send_sms_form","getVideoTimestamps","assetId","asset_id","createVideoTimestamp","timestampName","timestampValue","updateVideoTimestamp","timestampId","deleteVideoTimestamp","taskId","showFormResponse","getVideoInterviewBookmarks","deleteVideoInterviewBookmark","createVideoInterviewBookmark","updateVideoInterviewBookmark","revolve_record","getIntegrationsData","packageId","hro_record","roubler_record","getCognologyData","cognology_record","permissionKey","scoutOnboard","xref","applicationKey","mvs","foundU","testGrid","roubler","fit2work","alayacare","integrationName","integrationConfig","warn","hasPermission","isEnabled","hasApplicationKey","paddingX","rating_value","ModalType2","SectionName2","AttachmentType2","asSeconds","secondsToTimeString","InitialTimeStampState","isRefetching","savedCategoryValue","savedCategory","form_response_id","question_and_answers","timestampAdded","setTimestampAdded","fetchTimestampsAPI","updateTimestampApi","createTimestampApi","deleteTimestampApi","videoElement","getCurrentTime","actionsMenuPaperCommonStyles","flexFlow","publicLinkId","systemFieldId","position_id","new_position","emailItemList","actionsModalReducedPaddingCommonStyles","tableTimeTextfield","msOverflowStyle","scrollbarWidth","filterPopoverHeaderCommonStyles","approversHeader","pending","actionGroup","h2","High","Normal","Low","htmlEditor","startOfDay","endOfDay","endOf","ul","li","timePicker","noContentWrapper","modalConfirmationButtonCommonStyles","sectionContent","modalBody","sectionSubHeader","gridColumn","gridRow","leftArrowStyles","rightArrowStyles","noteBox","actionsMenuSpanCommonStyles","isScrollable","itemsOnPage","newSelectedItems","globalRes","globalPreferences","localRes","localPreferences","dialogConfirmButton","dropdownText","rowSelectContainerAlt","translate","american","describe","it","expect","AmericanSpellings","toBeDefined","toStrictEqual","not","toMatch","BritishSpellings","oldString","newString","newLen","oldLen","editLength","maxEditLength","bestPath","newPos","oldPos","extractCommon","oldValue","removed","diagonalPath","basePath","addPath","removePath","oldPos2","canAdd","canRemove","pushComponent","buildValues","newCount","oldCount","commonCount","equals","changes","change","lastEnd","everyLowerCase","charCodeAt","fromCharCode","everyUpperCase","toBe","original","translateWord","translateCase","isUpperCase","charIndex","oldChar","newChar","translated","endsWith","isSecureContext","HTML","PLAINBLOB","Blob","HTMLBLOB","write","ClipboardItem","_0","onFinally","failureMessage","__pow","pow","bytes","si","dp","thresh","units","u","toFixed","immutableCopy","singular","amount","questionInputLabel","questionDateWrapper","useStyles","handlePaginatedResponse","getPaginated","dashboardStyles","marginInline","requisitionTitle","paddingBlock","h4","removeButton","tableActionsReply","tabFooter","loadingWrapper","placeItems","loadingContent","graphWrapper","noDataText","generateButton","JOB_INFORMATION_OFFSET","JOB_INFORMATION_TAB_GROUP_SIZE","CANDIDATE_SETTINGS_OFFSET","CANDIDATE_SETTINGS_TAB_GROUP_SIZE","AUTOMATION_OFFSET","AUTOMATION_TAB_GROUP_SIZE","ADVANCED_OFFSET","convertToGroupAndTabIndex","panelIndex","createTabIndex","getApplicationsForTask","setId","userId","typeId","getPlaceholders","updateNotes","noteTextInput","actionButtonStyles","resend","ceridianDayforce","ID","CANDIDATE","GENDER","SUBURB","STATE","COUNTRY","DATE","RATING","STATUS","PHONE","CANDIDATE_TAGS","baseButtonStyles","csvExportCheckboxContainer","selectedApplicantsTableStyles","selectedApplicantsTableRowStyles","statusClampCommonStyles","statusClampDropdownStyles","statusClampHoverStyles","candidateSearchCommonStyles","formGroup","justifyItems","noteTitle","attachmentsTitle","emailStatusesSkeleton","Published","Draft","Unpublished","Saved","Closed","NoteState2","SortableColumnId2","getUISettings","statusID","checkboxLabels","uncheckedLabel","checkboxContainerStyles","dateDisplayBox","iconBlue","lineClamp","boxOrient","unpublished","statusClampAfterStyles","statusClampDropdownAfterStyles","selectedTooltipCommonStyles","pinJobsButton","pinJobsNotActive","archivedHeaders","archivedDropdownOptions","fieldDropdownSetting","localDefaults","setClassificationIds","editAttachmentsDefault","indeed_salary","sponsor_on_indeed","job_expiry_email_reminder","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","_ea","_fa","_ga","_ha","_ia","_ja","_ka","_la","_ma","_na","_oa","_pa","_qa","_ra","_sa","_ta","_ua","_va","_wa","_xa","_ya","_za","_Aa","_Ba","_Ca","_Da","attachmentObject","updatedExpiryDate","utc","external_requisition_id","salesperson_id","pinned_users_ids","recipient_ids","brand_id","auto_rater_id","smart_form_recipients_ids","recruitment_ad_user_id","application_recipient_ids","application_recipient","panel_chair_ids","panel_member_ids","panel_observer_ids","source_ids","additionalOptions","sub","newEngage","isEngage","source_type","expiryCacheKey","cacheKey","responseExpiryStr","responseFromLocal","setIsDragging","startPoint","handleMouseDown","clientX","clientY","handleMouseMove","dx","handleMouseUp","removeProperty","currentRef","updateChoiceAttr","newTempId","oldId","newId","setInputError","debouncedCheckOverflow","cb","shouldWait","waitingArgs","timeoutFunc","basePrimaryButtonStyles","baseSecondaryButtonStyles","WebkitLineClamp","WebkitBoxOrient","scrollShadowAfterStyles","scrollShadowBeforeStyles","switchLabelsCommonStyles","_arrowStyles","applyButtonStyles","filterPopoverContentStyles","rowSelectContainerCommonStyles","contentType","typeMap","audio","typePrefix","userAgent","isAndroid","isIOS","isMac","isWindows","ALLOWED_FORMATS","long","short","shortWithDayOfWeek","onlyTime","ymd","localStoreValue","sortableColumnMap","Map","set","usedIds","matchingColumn","blob","event_batch","attendee_ids","MAIN_COLOR","ALTERNATE_COLOR","BAD_COLOR","ALTERNATE_BAD_COLOR","TEAL_LIGHT","contentHeader","contentWrapper","gridWrapper","datePickerHeaderWrapper","buttonBackSuccess","buttonBackFail","repeatDayPopoverWrapper","checkBoxGroupWrapper","popoverWrapper","inputFullWidth","jobCheckBox","availabilitySummary","conflictsContentWrapper","eventSummaryGrid","eventSummaryGridWrapper","loadingStepsWrapper","modalHeaderRight","modalActionButtons","checkBoxes","checkBoxOff","setJsonResponse","seekAccountId","setPreviewUrl","setSeekAccounts","accounts","processedData","setProcessedData","useSeekGlobalData","setCurrencies","dataStr","dataFromLocalStorage","dataFromApi","setPayTypes","borderInline","factor","SCOUT_BLUE_DARK","LIGHT_BLUE","PURPLE","PINK","MEDIUM_RED","DARK_BLUE","YELLOW","GREEN","LIGHT_GREEN","OPAQUE_GREEN","OPAQUE_BLUE","OPAQUE_PINK","OPAQUE_RED","OPAQUE_DARK_BLUE","OPAQUE_YELLOW","OPAQUE_PURPLE","SCOUT_TEAL","LIGHT_RED","BLACK","GREY","DARK_GREY","MuiButton","MuiSelect","MuiFormControl","MuiAutocomplete","MuiPopover","MuiOutlinedInput","MuiTextField","MuiAccordionSummary","containedSecondary","outlinedSecondary","MuiChip","MuiPickersModal","dialogRoot","MuiPickersToolbar","MuiPickersTimePickerToolbar","hourMinuteLabel","MuiPickersToolbarText","toolbarTxt","toolbarBtnSelected","MuiPickersBasePicker","MuiPickersClock","clock","MuiPickersClockNumber","clockNumber","permissionCache","permissionExpiry"],"sourceRoot":""}