{"version":3,"sources":["views/routes/myNotes/components/listNotes/components/NoteCard.module.scss","views/routes/myNotes/components/employeeNoteSidebar/EmployeeNoteSidebar.module.scss","views/routes/squad/components/squadTrends/SquadTrends.module.scss","views/components/primaryFlagDropdown/PrimaryFlagDropdown.module.scss","views/routes/squad/components/squadTrends/components/employeeListPopper/EmployeeListPopperItem.module.scss","views/routes/squad/components/squadTrends/components/flagChart/FlagChart.module.scss","views/components/shell/components/UserProfile.module.scss","views/components/charts/d3BubbleChart/D3BubbleChart.module.scss","views/routes/squad/components/roleChangeTable/RoleChangeTable.module.scss","views/components/shell/Shell.module.scss","views/routes/catchUps/components/myCatchUps/components/MemberRow/MemberRow.module.scss","views/routes/employeeJourney/EmployeeJourney.module.scss","views/routes/squad/components/squadFeed/components/SquadFeedTimelineItem.module.scss","views/routes/squad/Squad.module.scss","views/routes/employeeJourneys/components/employeeJourneysRow/EmployeeJourneysRow.module.scss","views/App.module.scss","views/routes/myNotes/components/listNotes/ListNotes.module.scss","views/routes/admin/Admin.module.scss","views/routes/squad/components/squadFeed/components/SquadFeedTimelineItemContent.module.scss","views/routes/squad/components/noteReview/components/NoteItemContent.module.scss","views/routes/catchUps/CatchUps.module.scss","views/routes/employeeJourney/components/roleChange/RoleChange.module.scss","views/routes/squad/components/talentAnalysisTool/components/employeeRow/EmployeeRow.module.scss","views/components/shell/components/search/Search.module.scss","views/components/EmployeeStatus/EmployeeStatus.module.scss","views/routes/myNotes/MyNotes.module.scss","views/routes/admin/components/manageRoles/ManageRoles.module.scss","views/components/squadNotSelected/SquadNotSelected.module.scss","views/routes/unauthorised/Unauthorised.module.scss","views/routes/catchUps/components/myCatchUps/components/FrequencySelector/FrequencySelector.module.scss","views/routes/catchUps/components/myCatchUps/components/GroupCard/GroupCard.module.scss","views/routes/catchUps/components/squadCatchUps/components/squadCatchUpItem/SquadCatchUpItem.module.scss","views/components/noAccessToApp/NoAccessToApp.module.scss","views/components/EmployeeStatus/StatusIcon/StatusIcon.module.scss","views/components/tagDropdown/TagDropdown.module.scss","views/routes/employeeJourney/components/roleChange/components/noRoleChangeSubmission/NoRoleChangeSubmission.module.scss","views/components/validationIcon/ValidationIcon.module.scss","views/components/markdownTextArea/MarkdownTextArea.module.scss","views/routes/squad/components/squadTrends/components/supportingOpportunitiesByMonth/SupportingOpportunitiesByMonthChart.module.scss","views/routes/catchUps/components/squadCatchUps/components/squadCatchUpItemSkeleton/SquadCatchUpItemSkeleton.module.scss","views/routes/myNotes/components/editNote/EditNote.module.scss","views/components/shell/components/nav/Nav.module.scss","views/components/loadingIndicator/LoadingIndicator.module.scss","views/routes/employeeJourney/components/employeeSidebar/components/longTermLeaveFlagCheckbox/LongTermLeaveFlagCheckbox.module.scss","views/routes/employeeJourney/components/employeeSidebar/components/longTermLeaveFlag/DialogWithDatepicker.module.scss","views/routes/employeeJourney/components/employeeSidebar/components/probation/Probation.module.scss","views/components/sensitiveAttribute/SensitiveAttribute.module.scss","views/components/faceToFaceDiscussionAttribute/FaceToFaceDiscussionAttribute.module.scss","views/components/tag/Tag.module.scss","views/routes/employeeJourney/components/employeeTimeline/components/backToTopButton/BackToTop.module.scss","views/components/roleChangeStatusChip/RoleChangeStatusChip.module.scss","views/routes/admin/components/manageSquads/AssignSquads.module.scss","views/routes/squad/components/noteReview/NoteReview.module.scss","views/routes/squad/components/squadTrends/components/chartHeader/ChartHeader.module.scss","views/components/customSelection/CustomSelection.module.scss","views/routes/squad/components/squadTrends/components/talentCodesByMonth/TalentCodesByMonthChart.module.scss","views/routes/squad/components/talentAnalysisTool/components/talentAnalysisToolTable/TalentAnalysisToolTable.module.scss","views/routes/squad/components/talentAnalysisTool/talentAnalysisTool.module.scss","views/components/employeeDropdown/EmployeeDropdown.module.scss","views/components/archivedChip/ArchivedChip.module.scss","views/components/avatar/Avatar.module.scss","views/components/shell/components/squadSelect/SquadSelect.module.scss","views/routes/employeeJourney/components/employeeSidebar/components/flightRisk/FlightRisk.module.scss","views/routes/employeeJourney/components/employeeSidebar/components/roleChangePathway/RoleChangePathway.module.scss","views/components/tab/Tab.module.scss","views/components/table/TablePaginationActions.module.scss","views/routes/admin/components/manageSquads/components/SquadEmployeeRow/SquadEmployeeRow.module.scss","views/routes/notFound/NotFound.module.scss","views/routes/squad/components/squadTrends/components/roleDistribution/RoleDistributionChart.module.scss","views/components/pageHeader/PageHeader.module.scss","views/routes/employeeJourneys/EmployeeJourneys.module.scss","views/routes/catchUps/components/myCatchUps/components/AddMemberForm/AddMemberForm.module.scss","views/routes/catchUps/components/myCatchUps/MyCatchUps.module.scss","views/routes/catchUps/components/squadCatchUps/SquadCatchUps.module.scss","views/routes/admin/components/manageRoles/components/changeAccess/ChangeAccessDialog.module.scss","views/routes/employeeJourney/components/employeeTimeline/components/noteTimelineItem/NoteTimelineItem.module.scss","views/routes/employeeJourney/components/employeeTimeline/EmployeeTimeline.module.scss","views/routes/squad/components/noteReview/components/NoteItem.module.scss","views/routes/squad/components/roleChangeTable/components/roleChangeSidePanel/RoleChangeSidePanel.module.scss","views/themes.ts","views/components/shell/components/nav/Nav.tsx","hooks/useNavigate.ts","hooks/useStore.ts","hooks/useGraph.ts","views/components/archivedChip/ArchivedChip.tsx","views/components/employeeDropdown/EmployeeDropdown.tsx","hooks/useUser.ts","hooks/usePermissions.ts","views/components/shell/components/search/Search.tsx","assets/purple-logo.svg","views/components/shell/components/logo/Logo.tsx","views/components/avatar/Avatar.tsx","hooks/useEmployeePhoto.ts","views/components/shell/components/UserProfile.tsx","hooks/useSecurity.ts","views/components/shell/components/squadSelect/SquadSelect.tsx","views/components/shell/Shell.tsx","hooks/useEmployeeJourney.ts","views/components/EmployeeSidebarDivider/EmployeeSidebarDivider.tsx","hooks/useFlags.ts","views/components/alertDialog/AlertDialog.tsx","views/routes/employeeJourney/components/employeeSidebar/components/updatedByInfoIcon/UpdatedByInfoIcon.tsx","views/components/primaryFlagDropdown/PrimaryFlagDropdown.tsx","views/components/loadingIndicator/LoadingIndicator.tsx","views/routes/employeeJourney/components/employeeSidebar/components/flightRisk/FlightRisk.tsx","views/routes/employeeJourney/components/employeeSidebar/components/flightRiskFlag/FlightRiskFlag.tsx","views/routes/employeeJourney/components/employeeSidebar/components/longTermLeaveFlagCheckbox/LongTermLeaveFlagCheckbox.tsx","views/routes/employeeJourney/components/employeeSidebar/components/longTermLeaveFlag/LeaveDatepicker.tsx","views/routes/employeeJourney/components/employeeSidebar/components/longTermLeaveFlag/DialogWithDatepicker.tsx","views/routes/employeeJourney/components/employeeSidebar/components/longTermLeaveFlag/LongTermLeaveFlag.tsx","views/routes/employeeJourney/components/employeeSidebar/components/roleChangePathwayTimeframe/TimeframeDropdown.tsx","views/routes/employeeJourney/components/employeeSidebar/components/roleChangePathway/RoleChangePathwayControl.tsx","views/routes/employeeJourney/components/employeeSidebar/components/roleChangePathwayFlag/DialogWithDropdown.tsx","views/routes/employeeJourney/components/employeeSidebar/components/roleChangePathwayFlag/RoleChangePathwayFlag.tsx","views/routes/employeeJourney/components/employeeSidebar/components/SidebarContent/SidebarContent.tsx","views/routes/employeeJourney/components/employeeSidebar/components/probation/Probation.tsx","domain/store/util.ts","domain/store/employeeJourney/EmployeeStatusModel.ts","views/components/EmployeeStatus/StatusIcon/StatusIcon.tsx","views/components/EmployeeStatus/EmployeeStatus.tsx","views/routes/employeeJourney/components/employeeSidebar/components/status/StatusFlag.tsx","views/routes/employeeJourney/components/employeeSidebar/EmployeeSidebar.tsx","views/components/sensitiveAttribute/SensitiveAttribute.tsx","views/components/faceToFaceDiscussionAttribute/FaceToFaceDiscussionAttribute.tsx","views/components/tag/Tag.tsx","views/routes/myNotes/components/listNotes/components/NoteStatusChip.tsx","views/routes/employeeJourney/components/employeeTimeline/components/noteTimelineItem/NoteTimelineItem.tsx","views/components/tagDropdown/TagDropdown.tsx","hooks/useTags.ts","views/routes/employeeJourney/components/employeeTimeline/components/backToTopButton/BackToTopButton.tsx","hooks/useBackToTopButton.ts","views/routes/employeeJourney/components/employeeTimeline/EmployeeTimeline.tsx","views/components/roleChangeStatusChip/RoleChangeStatusChip.tsx","views/routes/employeeJourney/components/roleChange/components/noRoleChangeSubmission/NoRoleChangeSubmission.tsx","hooks/useRoleChange.ts","shared/constants/Positions.ts","domain/store/employeeJourney/RoleChangeModel.ts","views/components/validationIcon/ValidationIcon.tsx","views/routes/employeeJourney/components/roleChange/components/roleChangeCheckbox/RoleChangeCheckbox.tsx","views/routes/employeeJourney/components/roleChange/components/roleChangeCycleRadioGroup/RoleChangeCycleRadioGroup.tsx","views/routes/employeeJourney/components/roleChange/components/roleChangeSkills/components/skillRating/SkillRating.tsx","views/routes/employeeJourney/components/roleChange/components/roleChangeSkills/RoleChangeSkills.tsx","views/components/navigationAlert/NavigationAlert.tsx","views/routes/employeeJourney/components/roleChange/components/roleChangeBusinessCaseAttachment/RoleChangeBusinessCaseAttachment.tsx","views/routes/employeeJourney/components/roleChange/RoleChange.tsx","views/routes/employeeJourney/components/roleChange/RoleChangesList.tsx","views/routes/employeeJourney/EmployeeJourney.tsx","views/components/markdownTextArea/MarkdownTextArea.tsx","views/routes/myNotes/components/editNote/EditNote.tsx","views/components/tab/Tab.tsx","views/routes/myNotes/components/listNotes/components/NoteCard.tsx","views/routes/myNotes/components/listNotes/RecentList.tsx","views/routes/myNotes/components/listNotes/DraftList.tsx","views/routes/myNotes/components/listNotes/ListNotes.tsx","hooks/useQueryParams.ts","views/routes/myNotes/components/employeeNoteSidebar/EmployeeNoteSidebar.tsx","views/routes/myNotes/MyNotes.tsx","hooks/useAdmin.ts","views/routes/admin/components/manageSquads/AssignSquads.tsx","views/components/squadNotSelected/SquadNotSelected.tsx","views/routes/admin/components/manageRoles/components/employeeListRow/EmployeeListRow.tsx","views/routes/admin/components/manageRoles/components/changeAccess/ChangeAccessDialog.tsx","views/components/table/TablePaginationActions.tsx","views/routes/admin/components/manageRoles/ManageRoles.tsx","views/routes/admin/components/manageSquads/components/SquadEmployeeRow/SquadEmployeeRow.tsx","views/routes/admin/components/manageSquads/components/AssignSquadDialog/AssignSquadDialog.tsx","views/routes/admin/Admin.tsx","views/routes/notFound/NotFound.tsx","views/routes/squad/components/squadFeed/components/SquadFeedTimelineItemContent.tsx","views/routes/squad/components/squadFeed/components/SquadFeedTimelineItemAction.tsx","views/routes/squad/components/squadFeed/components/SquadFeedTimelineItem.tsx","views/routes/squad/components/squadFeed/components/SquadFeedTimeline.tsx","views/routes/squad/components/squadFeed/components/SquadFeedTimelineGroups.tsx","views/routes/squad/components/squadFeed/SquadFeed.tsx","views/ViewConstants.ts","views/routes/squad/components/noteReview/components/NoteItemContent.tsx","views/routes/squad/components/noteReview/components/NoteItem.tsx","views/routes/squad/components/noteReview/NoteReview.tsx","views/routes/squad/components/squadTrends/components/chartHeader/ChartHeader.tsx","hooks/useTrends.ts","hooks/useEmployeeListPopper.ts","views/routes/squad/components/squadTrends/components/employeeListPopper/EmployeeListPopperItem.tsx","views/routes/squad/components/squadTrends/components/employeeListPopper/EmployeeList.tsx","views/routes/squad/components/squadTrends/components/employeeListPopper/EmployeeListPopper.tsx","views/routes/squad/components/squadTrends/components/roleDistribution/RoleDistributionChart.tsx","views/components/charts/d3BubbleChart/types.ts","views/components/charts/d3BubbleChart/d3chart.ts","views/routes/squad/components/squadTrends/ColourGenerator.ts","views/components/charts/d3BubbleChart/D3BubbleChartTooltip.tsx","views/components/charts/d3BubbleChart/D3BubbleChart.tsx","views/routes/squad/components/squadTrends/components/talentCodes/TalentCodesChart.tsx","views/routes/squad/components/squadTrends/components/flagChart/FlagItem.tsx","views/routes/squad/components/squadTrends/components/flagChart/FlagChart.tsx","views/components/customSelection/CustomSelection.tsx","views/routes/squad/components/squadTrends/components/supportingOpportunities/SupportingOpportunitiesChart.tsx","views/routes/squad/components/squadTrends/components/customColorCheckBox/CustomColorCheckBox.tsx","views/routes/squad/components/squadTrends/components/talentCodesByMonth/TalentCodesByMonthChart.tsx","views/routes/squad/components/squadTrends/components/supportingOpportunitiesByMonth/SupportingOpportunitiesByMonthChart.tsx","views/routes/squad/components/squadTrends/SquadTrends.tsx","hooks/useTalentAnalysis.ts","views/components/table/SortHelper.ts","views/components/table/SortTableHeader.tsx","views/routes/squad/components/alertCheckbox/AlertCheckbox.tsx","views/routes/squad/components/talentAnalysisTool/components/employeeRow/LongTermLeaveCheckbox.tsx","views/routes/squad/components/talentAnalysisTool/components/employeeRow/RoleChangePathwaySelector.tsx","views/routes/squad/components/talentAnalysisTool/components/employeeRow/TalentCodeSelector.tsx","views/routes/squad/components/talentAnalysisTool/components/employeeRow/EmployeeRow.tsx","hooks/useFlightRiskService.ts","hooks/useLongTermLeaveService.ts","hooks/useRoleChangePathwayService.ts","views/routes/squad/components/talentAnalysisTool/components/talentAnalysisToolTable/TalentAnalysisToolTable.tsx","hooks/usePagingCache.ts","views/routes/squad/components/talentAnalysisTool/components/employeeStatusSelect/EmployeeStatusSelect.tsx","views/routes/squad/components/talentAnalysisTool/components/multiSelect/multiSelect.tsx","views/routes/squad/components/talentAnalysisTool/components/singleSelect/singleSelect.tsx","views/routes/squad/components/talentAnalysisTool/talentAnalysisTool.tsx","views/components/table/TableFilterSelect/TableFilterSelect.tsx","views/routes/squad/components/roleChangeTable/components/employeeWithRoleChangeRow/EmployeeWithRoleChangeRow.tsx","views/routes/squad/components/roleChangeTable/components/roleChangeSidePanel/RoleChangeSidePanel.tsx","views/routes/squad/components/roleChangeTable/RoleChangeTable.tsx","views/routes/squad/Squad.tsx","views/components/pageHeader/PageHeader.tsx","views/routes/employeeJourneys/components/employeeJourneysRow/EmployeeJourneysRow.tsx","views/routes/employeeJourneys/EmployeeJourneys.tsx","views/routes/unauthorised/Unauthorised.tsx","hooks/useCatchUpGroups.ts","views/routes/catchUps/components/myCatchUps/components/AddGroupDialog/AddGroupDialog.tsx","views/routes/catchUps/components/myCatchUps/components/FrequencySelector/FrequencySelector.tsx","views/routes/catchUps/components/myCatchUps/components/AddMemberForm/AddMemberForm.tsx","views/routes/catchUps/components/myCatchUps/components/MemberRow/MemberRow.tsx","views/routes/catchUps/components/myCatchUps/components/RenameGroupDialog/RenameGroupDialog.tsx","views/routes/catchUps/components/myCatchUps/components/GroupCard/GroupCard.tsx","views/routes/catchUps/components/myCatchUps/MyCatchUps.tsx","views/routes/catchUps/components/squadCatchUps/components/squadCatchUpItem/SquadCatchUpItem.tsx","views/routes/catchUps/components/squadCatchUps/components/squadCatchUpItemSkeleton/SquadCatchUpItemSkeleton.tsx","views/routes/catchUps/components/squadCatchUps/SquadCatchUps.tsx","hooks/useSquadCatchUps.ts","views/routes/catchUps/CatchUps.tsx","views/routes/Routes.tsx","views/components/notification/Notifications.tsx","views/components/noAccessToApp/NoAccessToApp.tsx","theme.ts","views/App.tsx","hooks/useAuthentication.tsx","domain/store/TagsModel.ts","domain/store/NoteModel.ts","domain/store/employeeJourney/FlightRiskModel.ts","domain/store/employeeJourney/LongTermLeaveModel.ts","domain/store/employeeJourney/PrimaryFlagModel.ts","domain/store/employeeJourney/RoleChangePathwayModel.ts","domain/store/employeeJourney/EmployeeModel.ts","domain/store/employeeJourney/EmployeeJourneyModel.ts","domain/store/FlagsModel.ts","domain/store/singletons/GraphModel.ts","domain/store/singletons/NotificationModel.ts","domain/store/singletons/SecurityModel.ts","domain/store/trends/MonthlyTrendModel.ts","domain/store/trends/TalentCodeTrendsByMonthModel.ts","domain/store/trends/SupportingOpportunitiesByMonthModel.ts","domain/store/trends/TrendsEmployeesModel.ts","domain/store/trends/SupportingOpportunitiesWithEmployeesModel.ts","domain/store/trends/TrendsModel.ts","domain/store/PermissionsModel.ts","domain/store/ReviewModel.ts","domain/store/UserModel.ts","domain/store/talentAnalysisTool/TalentAnalysisToolModel.ts","domain/store/admin/EmployeeListModel.ts","domain/store/admin/SquadAssignmentEmployeeListModel.ts","domain/store/admin/AdminModel.ts","domain/store/catchUps/CatchUpsModel.ts","domain/store/PagingCacheModel.ts","domain/store/catchUps/SquadCatchUpsModel.ts","domain/store/RootStoreModel.ts","appSettings.ts","auth/AuthenticationTypes.ts","auth/AuthenticationProvider.ts","index.tsx","views/routes/squad/components/squadTrends/components/employeeListPopper/EmployeeListPopper.module.scss","views/routes/employeeJourney/components/employeeSidebar/EmployeeSidebar.module.scss","views/routes/admin/components/manageRoles/components/employeeListRow/EmployeeListRow.module.scss"],"names":["module","exports","color","siteDefault","catskillWhite","vibrantBlue","white","hollywoodCerise","bigStone","lemon","puertoRico","electricLime","treePoppy","tePapaGreen","blueDianne","fiord","athensGray","alabaster","codgray","sunglo","texasRose","pictonBlue","deYork","boulder","mineShaft","veryLightPink","pinkishRed","brownishGrey","sapGreen","aliceBlue","Nav","className","items","currentNav","styles","navContainer","join","map","item","index","isActive","active","undefined","to","link","onClick","e","preventDefault","title","useNavigate","history","useHistory","route","queryParams","push","pathname","search","querystring","stringify","useStore","store","useContext","StoreContext","Error","useGraph","graph","ArchivedChip","Chip","label","variant","size","archivedChip","EmployeeDropdown","props","searchForEmployees","useState","value","setValue","loading","setLoading","inputValue","setInputValue","options","setOptions","inputTextRef","useRef","fetchUsers","useCallback","a","includeFormerEmployees","useEffect","global","window","clearTimeout","timer","setTimeout","users","fetchUsersDebounced","defaultValue","Autocomplete","getOptionLabel","option","displayName","autoComplete","filterSelectedOptions","onInputChange","event","newInputValue","getOptionSelected","idpId","onChange","clearCalled","current","blur","handleChange","onBlur","renderInput","params","TextField","fullWidth","placeholder","textBoxClassName","InputLabelProps","shrink","InputProps","inputRef","endAdornment","Fragment","CircularProgress","renderOption","searchResult","isFormerEmployee","useUser","user","usePermissions","permissions","Search","navigate","canSearchForFormerEmployees","employees","setIncludeFormerEmployees","employee","clearCallback","EMPLOYEE_JOURNEYS_ROUTE_PATH","headerSearch","FormControlLabel","control","Checkbox","classes","root","checkbox","colorSecondary","checked","_","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","d","fill","SvgPurpleLogo","_ref","svgRef","titleId","xmlns","viewBox","ref","id","ForwardRef","Logo","idpIdToColor","input","hash","charCodeAt","c","toString","toUpperCase","substring","Avatar","givenName","familyName","employeeId","searchForEmployeePhoto","photo","setPhoto","isLoading","then","photoUri","catch","finally","useEmployeePhoto","initials","altText","cn","Skeleton","style","width","height","textDecoration","alt","src","backgroundColor","UserProfile","squadName","signOut","security","React","menuAnchorElement","setMenuAnchorElement","squadDisplayName","toLowerCase","Button","avatarButton","Boolean","loggedInUserMenuOpen","currentTarget","aria-controls","aria-haspopup","avatar","Menu","paper","loggedInUserMenu","list","loggedInUserMenuList","anchorEl","getContentAnchorEl","keepMounted","open","onClose","anchorOrigin","vertical","horizontal","transformOrigin","ListItem","disabled","signedInUser","menuAvatar","MenuItem","icon","faSignOutAlt","SquadSelect","observer","canViewAllSquads","selectedSquad","setSquad","getAllSquads","assignedSquads","squads","setSquads","s","Array","from","Set","roundInputBox","v","Shell","children","canViewSquadTab","canViewEmployeeTab","canViewNoteTab","canManageRoles","canViewCatchupGroupTab","setCurrentNav","activeNav","setActiveNav","navs","setNav","topLevelRoute","split","SQUAD_ROUTE_PATH","CREATE_NOTE_ROUTE_PATH","CATCH_UPS_ROUTE_PATH","ADMIN_ROUTE_PATH","listen","location","header","logoContainer","nav","searchContainer","searchInput","main","useEmployeeJourney","employeeJourney","useParams","unloadJourney","loadJourney","state","UNAUTHORISED_ROUTE_PATH","EmployeeSidebarDivider","Box","marginTop","marginBottom","Divider","useFlags","flags","AlertDialog","onDisagreeClick","Dialog","data-testid","isOpen","aria-labelledby","aria-describedby","DialogTitle","DialogContent","DialogContentText","text","content","DialogActions","onAgreeClick","autoFocus","agreeDisabled","agreeButtonText","disagreeButtonText","UpdatedByInfoIcon","Tooltip","updatedByDisplayName","moment","modifiedDateTime","format","InfoOutlined","PrimaryFlagDropdown","journey","flagStore","isSubmitting","setIsSubmitting","showAlertDialog","setShowAlertDialog","flagIdToUpdate","setFlagIdToUpdate","showTalentCodeInfo","setShowTalentCodeInfo","flagModificationInfo","setFlagModificationInfo","flagId","primaryFlag","isLoaded","all","modifiedBy","resetPrimaryFlagUpdateStates","Select","labelId","disableUnderline","IconComponent","propsWithDropdownIcon","dropdownIcon","dropdownIconContainer","faChevronCircleDown","selectInput","flag","name","component","updateByInfo","flagRequest","employeeIdpId","update","response","status","notifications","addError","LoadingIndicator","container","FlightRisk","flightRiskStatusModelValue","onToggle","display","alignItems","loadingIndicator","isFlightRisk","inputProps","Typography","fontWeight","FlightRiskFlag","flightRiskStatusModel","employeeDisplayName","isFlightRiskDialogOpen","setIsFlightRiskDialogOpen","isLoadingFlightRisk","setLoadingFlightRisk","resetFlightRiskDialogStates","toggleFlightRiskStatus","r","LongTermLeaveFlagCheckbox","longTermLeave","canEdit","isOnLongTermLeave","readOnly","noWrap","expectedReturn","LeaveDatepicker","inputContainer","datePicker","type","isUpdating","onDateChange","min","DialogWithDatepicker","currentExpectedReturn","isDisabled","LongTermLeaveFlag","longTermLeaveModel","isDialogOpen","setIsDialogOpen","setIsLoading","setIsDisabled","employeeExpectedReturn","setExpectedReturn","filterNull","newExpectedReturn","setNewExpectedReturn","resetDialogStates","toggleLongTermLeaveStatus","TimeframeDropdown","isUpdatingTimeframe","onSelectChange","values","timeframes","RoleChangePathwayControl","roleChangePathwayModelValue","onSelectChangeOnSidebar","roleChangePathway","hasRoleChangePathway","timeframe","DialogWithDropdown","oldNewTimeframe","oldValue","newValue","filterMoreThanOneYear","numberOfMonths","bold","RoleChangePathwayFlag","roleChangePathwayModel","employeeTimeframe","currentTimeframe","setCurrentTimeframe","filterZero","newTimeframe","setNewNumberOfMonth","toggleRoleChangePathwayStatus","SidebarContent","heading","hasChildren","details","Probation","probation","overrideDisabledStyle","disabledLabel","disabledCheckbox","isInProbation","endDate","flow","generator","origFlow","getEnv","model","origGetEnv","getDefaultAjaxInstance","auth","ky","create","timeout","retry","limit","prefixUrl","origin","hooks","beforeRequest","request","getIsSignedIn","headers","getApiAccessToken","append","LoadingStateModel","types","optional","enumeration","EmployeeStatusModifier","identifier","string","toDictionary","EmployeeStatusLabels","EmployeeStatusModelValue","number","EmployeeStatusModel","maybeNull","actions","self","updateEmployeeStatus","statusData","ajax","post","json","result","StatusIcon","statusContainer","circle","EmployeeStatus","employeeStatus","flexDirection","IconButton","editButton","faEdit","employeeStatusModelValue","ratingContainer","StatusFlag","employeeStatusModel","setStatus","resetStatusDialogStates","FormControl","RadioGroup","aria-label","Radio","statusRequest","parseInt","EmployeeSidebar","employeeSidebar","employeeDetailsContainer","avatarContainer","position","detailsContainer","tenureFormatted","lastRetroFormatted","emailAddress","Link","purpleMeLink","href","process","statusCodeContainer","flightRisk","flagsContainer","talentCodeContainer","SensitiveAttribute","isSensitive","Grid","textAlign","attribute","fontSize","FaceToFaceDiscussionAttribute","isFaceToFaceDiscussion","Tag","materialOverride","tagComponent","NOTE_STATUS_TO_LABEL","published","pending","draft","sensitive","none","NoteStatusChip","note","sensitivity","chipOverride","NoteTimelineItem","editable","deletable","onEdit","onDelete","editDisabled","showAll","setShowAll","date","eventDateMoment","local","allContent","showMoreButtonRequired","reducedContent","parseContent","noteTimelineItemComponent","dateContainer","noteContainer","noteContentContainer","headerContainer","subject","isPeopleLeaderConversation","plChatChip","attributes","actionButtonBar","noteId","deleteButton","faTrash","tagsContainer","tags","tag","reviewRequired","contentContainer","markdownPreview","skipHtml","contentFade","authorContainer","author","showMoreContainer","TagDropdown","tagStore","setValues","multiple","tagId","renderTags","p","chip","isSensitiveChip","chipToDelete","filter","Lock","BackToTopButton","scrollToTop","edge","tabIndex","role","faArrowAltCircleUp","useBackToTopButton","scrollableContainerRef","createRef","showBackToTopButton","setShowBackToTopButton","checkIfBackToTopButtonIsNecessary","isNecessary","scrollTop","scrollHeight","clientHeight","observableEvents","fromEvent","scrollEventSubscription","merge","pipe","throttleTime","asapScheduler","leading","trailing","subscribe","unsubscribe","scrollToTopOfTimeline","scrollTo","top","behavior","Notes","notes","editNoteHandler","deleteNoteHandler","currentYear","noteEntries","entries","notesContainer","monthNotes","monthTitle","monthNotesContainer","canDelete","EmployeeTimeline","loadNotes","selectedDateRange","setDateRange","selectedTags","setSelectedTags","dateRangeValidationError","setDateRangeValidationError","noteIdToDelete","setNoteIdToDelete","groupedNotes","noteDate","fromDate","toDate","isSameOrAfterFromDate","isSameOrAfter","isBeforeToDate","isBefore","clone","add","noteTags","t","noteTagsAreSelected","reduce","acc","cur","resetNoteDeleteStates","employeeTimelineComponent","timelineContainer","filterContainer","calendars","startText","endText","inputFormat","maxDate","startProps","endProps","dateRange","startDate","error","helperText","onError","reason","isSame","addNoteButtonContainer","containedPrimary","backToTopButtonContainer","EDIT_NOTE_ROUTE_PATH","deleteNote","addSuccess","emptyState","faFile","isFiltered","backToTopContainer","RoleChangeStatusChip","NoRoleChangeSubmissions","direction","justify","faExclamationCircle","spacing","useRoleChange","roleChange","Positions","ratings","description","RoleChangeModel","loadingState","getCurrentRoleChange","roleChangeId","get","searchParams","errorLog","getAllRoleChangeSubmissions","getRoleChangeSubmissionsForSquad","upsertRoleChange","revertCurrentRoleChangeToDraft","approveRoleChangeForEmployee","shouldApprove","approverAdditionalComments","approveRoleChange","downloadRoleChangeBusinessCaseAttachment","fileName","blob","loadSkills","capabilityId","roleNames","searchRoleNames","URLSearchParams","roleName","views","getRoleChangeCycle","createdAt","isCurrentMonthInFirstCycle","slice","skipCurrentPromotionCycle","getRatingDescriptionFromValue","find","getStatus","isDraft","isApproved","ValidationIcon","validationIconContainer","faTimesCircle","validationError","faCheckCircle","validationSuccess","RoleChangeCheckbox","selectedValue","dataTestId","formInputItem","reverse","RoleChangeCycleRadioGroup","cycles","roleChangeDate","getCurrentCycles","formItem","row","SkillRating","skill","select","currentRating","handleSkillChange","coreValueId","rating","RoleChangeSkills","setAnchorEl","selectedItem","positionToUpdate","setPositionToUpdate","setIsOpen","isOpenTarget","setIsOpenTarget","roleChangeSkills","withValidation","showValidationErrors","currentRoleSkills","ClickAwayListener","onClickAway","prev","FormGroup","currentRole","coreValues","currentRoleSkillRatings","handleCurrentRoleSkillChange","showValidationError","formError","validationIcon","targetRole","targetRoleTitle","targetRoleSkills","onSelected","dataSource","labelPlacement","targetRoleSkillRatings","handleTargetRoleSkillChange","errorText","RatingDescription","skillsRatingDescription","faQuestionCircle","Paper","ratingDescription","NavigationAlert","when","onCancel","onConfirm","for","RoleChangeBusinessCaseAttachment","fileModified","setFileModified","allowed_types","accept","selectedFiles","selectedFile","includes","Promise","resolve","reject","reader","FileReader","onloadend","base64","contentType","readAsDataURL","attachment","onBusinessCaseFileModified","preFileUploadCheck","files","hidden","htmlFor","attachmentButton","faUpload","attachmentContainer","onDownload","faTimes","RoleChange","setSelectedRoleChange","setRoleChangeHasStarted","roleChangeHasStarted","positions","roleChanges","employeeCurrentRole","positionsArray","confirmationDialogOpen","setConfirmationDialogOpen","setCurrentRoleSkillRatings","initialCurrentRoleSkillRatings","setInitialCurrentRoleSkillRatings","setTargetRoleSkillRatings","initialTargetRoleSkillRatings","setInitialTargetRoleSkillRatings","isSkillsLoaded","setIsSkillsLoaded","lastModifiedBy","setLastModifiedBy","hasCompletedRetros","noPerformanceImprovementPlan","businessCaseAttachmentFileName","businessCaseAttachmentContentType","businessCaseAttachmentFileContent","businessCaseAttachmentContentModified","errors","submitterAdditionalComments","formState","setFormState","initialFormState","setInitialFormState","validationQueue","setValidationQueue","showSkillRatingValidationIcons","setShowSkillRatingValidationIcons","setCurrentRoleSkills","setTargetRoleSkills","handleRoleSkillChange","skills","setter","tempSkills","skillRating","isReadOnly","loadRoleSkills","skillRatings","requireCurrentRoleSkills","Associate","capability","currentRs","x","targetRs","currentRoleRatings","findIndex","y","targetRoleRatings","handleSaveAsDraft","combinedSkillsRatings","concat","saveAsDraft","err","utc","lastModifiedAtUtc","getValidationError","isNotOnProbation","noPerformancePlan","prerequisites","every","businessCaseAttachment","ManagingConsultant","PrincipalConsultant","handleValidateFormItem","newState","getValidationStatus","handleFormStateChange","forEach","isFormStateDirty","some","formContainer","titleContainer","lastModified","file","url","URL","createObjectURL","Blob","document","createElement","setAttribute","body","appendChild","download","click","removeChild","commentsContainer","multiline","buttonsContainer","backButton","faPaperPlane","faSave","combinedSkillRatings","RoleChangesList","newRoleChangeHasBeenStarted","setNewRoleChangeHasBeenStarted","allRoleChanges","setAllRoleChanges","selectedRoleChange","previousRole","handleRoleChangeHasStarted","canEditRoleChange","roleChangeList","roleChangeAction","startIcon","previousRoleChangeContainer","roleDetails","EmployeeJourney","canView","useLocation","canViewRoleChanges","tabItems","employeeTimeline","visible","isInCareerFramework","activeTab","employeeJourneyComponent","AppBar","squadAppBar","Tabs","centered","indicator","Tab","appBarTab","tabBodyContainer","path","MarkdownTextArea","isFocused","setIsFocused","onClickHandler","onFocus","markdownInput","SUBMISSION_TEXT","EditNote","formTitle","mode","showSensitivity","onValidateFormItem","onSubmitNote","onSubmitDraft","onUndoChanges","isOkToSaveAsDraft","getFormItemClass","pristine","editNoteComponent","formSection","onSubmit","max","informationIcon","informationText","sensitiveText","markdownTextContainer","markdownSupportedText","rel","faUndo","rightButtonsContainer","noteStatus","faArrowCircleRight","TabComponent","testId","NoteCard","selected","divider","ContainerProps","card","namespaceURI","button","ListItemAvatar","ListItemText","primary","subjectContainer","subjectTitle","modifiedDate","modifiedDateMoment","createdDateMoment","fromNow","secondaryTypographyProps","secondary","ListItemSecondaryAction","deleteContainer","Delete","RecentList","previous","loadSubmittedNotes","onAgreeClickDeleteNote","resetForm","replace","List","array","selectedNoteId","DraftList","drafts","loadDraftNotes","ListNotes","showDrafts","setActiveTab","noteListComponent","xs","newNoteButtonContainer","tabHeaderContainer","selectedIndex","useQueryParams","parse","EmployeeNoteSidebar","employeeNoteSidebar","RouterLink","FlagText","flagsNoTextTransform","MyNotes","userStore","loadEmployee","setShowDrafts","setisOkToSaveAsDraft","redirect","setRedirect","alertDialog","setAlertDialog","setEmployee","isLoadingEmployee","setIsLoadingEmployee","reset","canBypassReview","setFormStateEmployee","currentEmployeeId","searchForEmployee","foundEmployee","origIds","currentIds","getNoteById","Number","loadEditNote","createNoteRequest","eventDate","saveNote","noteRequest","handleSubmitNote","handleValidation","handleSubmitDraft","handleDraftValidation","trim","diff","newErrorState","onAgreeClickRestoreInitialFormValues","wrap","sm","noteListContainer","noteFormContainer","shouldShowAlert","Hidden","mdDown","employeeProfileContainer","useAdmin","admin","AssignmentState","SquadNotSelected","iconColor","faInfoCircle","EmployeeListRow","canChangeAccess","onAssignEmployee","TableRow","TableCell","nameCell","nameCellRoot","nameLink","forbidden","positionCell","accessLevelDisplayName","noAccessRequested","getAccessLevelValue","level","ChangeAccessDialog","sendChangeAccessLevelInvitation","sendingRoleInvitationState","getLastChangeAccessLevelInvitationForEmployee","squadEmployees","loadSquadEmployees","squadEmployeesState","loadEmployees","squadFilter","setSquadFilter","accessLevel","filteredEmployees","setFilteredEmployees","lastInvitationForRole","setLastInvitationForRole","requestedRole","filterEmployees","handleSubmit","closeDialog","maxWidth","closeButton","employeeDetails","faKey","keyIcon","FormLabel","focused","accessSelection","rightPanel","employeeList","employeeNamesContainer","buttonContainer","disableElevation","buttonIcon","lastInvitationContainer","lastInvitationText","requestedRoleDisplayName","requesterDisplayName","requestDate","resendLink","TablePaginationActions","count","page","rowsPerPage","onChangePage","Math","ceil","ManageRoles","setPage","setRowsPerPage","searchedEmployee","setSearchedEmployee","showAllUnknownRoles","setShowAllUnknownRoles","employeeToAssign","setEmployeeToAssign","changeAccessDialogIsOpen","setChangeAccessDialogIsOpen","pattern","RegExp","givenNameMatches","match","sort","b","localeCompare","familyNameMatches","handleEmployeeAssignment","tableControls","TableContainer","Table","TableHead","TableBody","employeeAccessLevel","k","TablePagination","ActionsComponent","onChangeRowsPerPage","SquadEmployeeRow","assignEmployee","align","AssignSquadDialog","allSquads","saveDialog","initialAssignedSquads","squadSelectionChanged","isEqual","sortBy","selectedSquads","allPossibleSquadsAreDeselected","assignSquads","SquadAssignment","setSelectedSquads","confirmation","setConfirmation","squad","addRemoveSquad","AssignSquads","squadAssignmentEmployees","loadEmployeesEligibleForSquadAssignment","squadAssignmentEmployeesSearch","searchEmployeesEligibleForSquadAssignment","selectedEmployee","setSquadAssignmentEmployees","searchState","searchValue","setSearchValue","setAllSquads","Closed","currentAssignmentState","setCurrentAssignmentState","searchEmployee","debounce","query","isEmpty","allowedAccessSquads","newSquadList","handleClose","getSnapshot","noOptionsText","margin","mt","AssignSquad","AssignRole","Admin","canAssignSquads","appBar","NotFound","notFoundRoot","SquadFeedTimelineItemContent","needsFade","setNeedsFade","rootOpen","readMore","readMoreOpen","readMoreButton","SquadFeedTimelineItemAction","menuEl","setMenuEl","MoreVert","Person","SquadFeedTimelineItem","connected","isFirstOfDate","TimelineItem","TimelineOppositeContent","dateStamp","TimelineSeparator","TimelineDot","TimelineConnector","TimelineContent","Card","mx","CardHeader","plChat","nameContainer","tagContainer","action","CardContent","SquadFeedTimeline","group","startOf","valueOf","n","Timeline","SquadFeedTimelineGroups","groups","SquadFeed","loadSquadNotes","setNotes","hasMore","setHasMore","initialLoadHasCompleted","setInitialLoadHasCompleted","loadNextPage","combinedNotes","totalCount","loadMore","loader","useWindow","Container","NoteItemContent","readMoreBtn","NoteItemHeader","reviewStatus","NoteItem","onNoteApproved","review","selection","setSelection","isValidSelection","noteItem","visibilitySelector","menuItem","menuItemIcon","xlButton","updateNoteSensitivity","endIcon","ChevronRightRounded","sensitiveInfoText","NoteReview","getNote","getNotes","updateReviewState","reviewState","shouldShowOtherNotes","setShouldShowOtherNotes","initialSquad","resetPage","swapView","buttonSwitcher","ChartHeader","subHeader","useTrends","trends","useEmployeeListPopper","offset","setOffset","ignoreNextClose","setIgnoreNextClose","handleClick","EmployeeListPopperItem","getEmployeeId","tableCell","linkToEmployee","EmployeeList","padding","itemsPerRow","emptyCell","tableCellAsPadding","labelDisplayedRows","rowsPerPageOptions","EmployeeListPopper","horizontalOffset","verticalOffset","overflow","rect","getBoundingClientRect","center","left","right","windowLimit","documentElement","clientWidth","calculateOverflow","popperOffset","arrowOffset","employeesFilteredByTimeFrame","roleChangeTimeFrame","Popper","placement","disablePortal","modifiers","preventOverflow","enabled","hide","flip","arrow","marginLeft","block","background","isRoleChangePathway","tab","RoleDistributionChart","trendsEmployees","roleDistributionOrder","orderedRoles","roleCounts","abbreviations","CHART_OPTIONS","responsive","maintainAspectRatio","legend","scales","xAxes","stacked","gridLines","drawBorder","drawOnChartArea","drawTicks","lineWidth","ticks","callback","yAxes","onHover","chartElement","cursor","chartData","labels","datasets","borderColor","borderWidth","data","popper","divRef","selectedElement","setSelectedElement","onElementsClick","element","_model","skeleton","_index","jobTitle","_chart","employeesWithMatchingJobTitle","getSelectedElementEmployees","IdProvider","uniqueBaseId","idStr","uri","ColourSet","d3Format","D3BubbleChartTooltip","arrowRef","setArrowRef","boundariesElement","D3BubbleChart","shouldEmployeeListFlip","chartType","chartRef","selectedBubbleDatum","setSelectedBubbleDatum","hoveredBubbleRef","setHoveredBubbleRef","supportingOpportunitiesWithEmployees","chart","parent","onOverBubble","onOutBubble","baseData","colour","dataHierarchy","hierarchy","sum","packed","pack","descendants","nestedData","nest","svg","attr","bubbleChart","selectAll","bubbleGroups","bubbleGroup","on","datum","nodes","transition","duration","ease","easeQuad","leafUid","uid","bubbleCircle","clipUid","bubbleText","fontSmall","fontLarge","createChart","onclick","remove","d3ChartBase","employeesWithMatchingTalentCode","employeesWithMatchingTag","noData","generateColours","numberOfColours","colourSet","colours","colourGroup","colourGroups","TealGreen","teal","cyan","lightGreen","green","LimeOrange","lime","amber","yellow","orange","RedPurple","deepOrange","red","pink","purple","Blue","deepPurple","indigo","blue","lightBlue","mapColours","TalentCodesChart","talentCodeCounts","setColours","setChartData","talentCode","FlagItem","square","flagItemContainer","FlagChart","flagChartContainer","flightRiskEmployees","employeesOnLongTermLeave","employeesOnRoleChangePathways","employeesOnProbation","CustomSelection","customSelection","InputLabel","customSelectionInput","TIME_RANGES","SupportingOpportunitiesChart","selectedTimeRange","loadSupportingOpportunitiesWithEmployees","selectTimeRange","people","CustomColorCheckBox","CustomCheckBox","withStyles","TalentCodesByMonthChart","talentCodeTrendsByMonth","loadTalentCodeTrendsByMonth","talentCodes","setTalentCodes","talentCodeTrends","counts","dataSet","month","handleOnchange","dataSets","code","startYear","year","years","SupportingOpportunitiesByMonthChart","supportingOpportunitiesByMonth","loadSupportingOpportunitiesByMonth","selectedYear","setSelectedYear","supportingOpportunities","setSupportingOpportunities","supportingOpps","supportingOpportunityCounts","supportingOpportunity","yearSelector","SquadTrends","canViewTrends","chartRow","md","chartContainer","useTalentAnalysis","talentAnalysis","descendingComparator","orderBy","getComparator","order","stableSort","comparator","stabilizedThis","el","SortTableHeader","onRequestSort","l","isSortable","sortDirection","TableSortLabel","property","AlertCheckbox","onAgree","onCheckChangeHandler","dialogTitle","dialogText","LongTermLeaveCheckbox","checkboxContainer","RoleChangePathwaySelector","timeframeToSelect","setTimeframeToSelect","onCloseDialog","getTimeframeOption","newTimeframeOption","timeframeValue","TalentCodeSelector","employeeName","onChanged","getFlag","updateTalentCode","loadingTalentCode","setLoadingTalentCode","currentTalentCode","setCurrentTalentCode","selectedTalentCode","setSelectedTalentCode","talentCodeToSelect","setTalentCodeToSelect","EmployeeRow","statusType","propIsFlightRisk","isOnProbation","propIsOnLongTermLeave","propLongTermLeaveExpectedReturn","longTermLeaveExpectedReturn","propRoleProgressionPathwayTimeframeInMonths","roleChangePathwayTimeframeInMonths","onDataChanged","initFlightRiskValue","setIsFlightRisk","toggleFlightRisk","flagValue","useFlightRiskService","isLeaveDialogOpen","setIsLeaveDialogOpen","expectedLeaveReturn","setExpectedLeaveReturn","initLeaveValue","initExpectedReturn","setIsOnLongTermLeave","updateLongTermLeave","updateDto","useLongTermLeaveService","isLoadingLeaveChange","initTimeframeValue","setHasRoleChangePathway","setTimeframe","updateRoleChangePathway","useRoleChangePathwayService","isLoadingRoleChangePathway","onFlightRiskAgreeClick","onLongTermLeaveAgreeClick","onRoleChangePathwayAgreeClick","justifyContent","tableCells","TalentAnalysisToolTable","pagingCache","setCurrentPageCache","setRowsPerPageCache","setOrder","setOrderBy","updatePage","toolTableContainer","stickyHeader","updateRowsPerPage","EmployeeStatusSelect","checkedIcon","MultiSelect","selectedOptions","limitTags","disableCloseOnSelect","marginRight","getTagProps","SingleSelect","TalentAnalysisTool","canViewTalentAnalysis","isDirty","setIsDirty","selectedPositions","setSelectedPositions","selectedEmployeeStatus","setSelectedEmployeeStatus","selectedTalentCodes","setSelectedTalentCodes","selectedRoleChangePathWay","setSelectedRoleChangePathWay","selectedFlightRisk","setSelectedFlightRisk","selectedProbation","setSelectedProbation","selectedLongTermLeave","setSelectedLongTermLeave","yesNoOptions","yes","requiresReloadEmployees","filterWrapper","so","TableFilterSelect","disallowAny","o","EmployeeWithRoleChangeRow","setSelectedEmployee","department","RoleChangeSidePanel","isLoadingSkills","setIsLoadingSkills","setSkills","approverComment","setApproverComment","confirmationState","setConfirmationState","finalizeRoleChange","Drawer","anchor","section","behaviors","validRoleChangeStatuses","RoleChangeTable","currentRoleChangeCycle","selectedCurrentPosition","setSelectedCurrentPosition","selectedProposedPosition","setSelectedProposedPosition","selectedChangeCycle","setSelectedChangeCycle","selectedChangeStatus","setSelectedChangeStatus","setEmployees","table","nothingFound","colSpan","Squad","canViewNoteReview","getNumberPendingNotes","canViewFeed","Badge","badgeContent","numberOfPendingNotes","squadRoot","PageHeader","EmployeeJourneysRow","Create","EmployeeJourneys","getEmployeesForSquad","selectedPosition","setSelectedPosition","res","gridContainer","Unauthorised","useCatchUpGroups","catchUpGroups","AddGroupDialog","newGroupName","setNewGroupName","onCancelClick","onKeyDown","keyCode","onOkClick","onEnter","FrequencySelector","showSelectOption","isUpdatingFrequency","onFrequencyChange","selectedFrequency","setSelectedFrequency","frequencies","frequency","f","AddMemberForm","isAddingMember","faCheck","MemberRow","member","updateCatchupFrequency","removeMemberFromGroup","setIsUpdatingFrequency","isRemovingMember","setIsRemovingMember","catchupFrequencyInWeeks","isDeleteGroupDialogOpen","setIsDeleteDialogOpen","lastCatchupDateUTC","lastCatchupDateAsLocalString","nextCatchupDateUTC","nextCatchupDateAsLocalString","daysUntilNextCatchup","frequencyId","catchupGroupId","faMinusCircle","RenameGroupDialog","groupName","setGroupName","GroupCard","addMember","deleteGroup","renameGroup","isAddMemberFormOpen","setAddMemberFormOpen","isRenameGroupDialogOpen","setIsRenameDialogOpen","setIsAddingMember","catchupGroupName","isUpdatingGroupName","setIsUpdatingGroupName","mb","faTrashAlt","members","message","pl","faPlusCircle","handleGroupRename","MyCatchUps","loadGroups","createGroup","canViewMyCatchUps","catchUps","isAddGroupDialogOpen","showAddGroupDialog","my","activeElement","SquadCatchUpItem","catchup","personWhoCaughtUpWithEmployee","daysSinceLastCatchup","SquadCatchUpItemSkeleton","SquadCatchUps","squadCatchUps","loadCatchupsForSquad","canViewSquadCatchUps","CatchUps","Routes","exact","Notifications","setNotifications","autorun","notificationsToShow","Notification","notification","closeNotification","severity","Snackbar","autoHideDuration","Alert","elevation","NoAccessToApp","theme","createMuiTheme","palette","createContext","App","authState","provider","initialState","setState","updateState","signIn","useAuthentication","ThemeProvider","LocalizationProvider","dateAdapter","MomentUtils","Provider","TagModel","identifierNumber","boolean","TagsModel","afterAttach","put","NotePersonNameModel","NoteModel","createdDate","modifier","maybe","createNote","FlightRiskStatusModifier","FlightRiskStatusModelValue","FlightRiskStatusModel","LongTermLeaveModifier","LongTermLeaveModelValue","LongTermLeaveModel","PrimaryFlagModifier","PrimaryFlagModelValue","PrimaryFlagModel","updatePrimaryFlag","primaryFlagData","RoleChangePathwayModifier","RoleChangePathwayModelValue","RoleChangePathwayModel","EmployeeFlagsModel","createEmployeeFlags","empFlags","ltl","pfm","rpp","EmployeeLeaveModel","annualLeaveInHours","personalLeaveInHours","pdTakenInHours","EmployeeModel","telstraEmployeeNumber","tenure","leaveDetails","probationEndDate","lastRetroDate","showMinimalDetails","round","toFixed","difference","units","asDays","humanizer","language","yearMonthHumaniser","asMilliseconds","createEmployee","EmployeeJourneyNotesModel","EmployeeJourneyModel","EmployeeIdpId","shouldUpdate","roleDistributionOrderedSet","FlagModel","FlagsModel","LoadEmployeeModel","detach","PhotoModel","GraphModel","photos","Client","initWithMiddleware","authProvider","getGraphAccessToken","scopes","debugLogging","api","version","responseType","ResponseType","BLOB","img","blobUrl","webkitURL","NotificationModel","addNotification","msg","SecurityModel","getSignedInName","account","getAccountId","accountIdentifier","CountModel","CountByMonthModel","MonthlyTrendModel","TalentCodeTrendsByMonthModel","makeTrendsUrl","SupportingOpportunitiesByMonthModel","set","toDateString","trend","TrendsEmployeesItemModel","TrendsEmployeesModel","clear","sortByName","PersonModel","roleType","SupportingOpportunitiesWithEmployeesItemModel","SupportingOpportunitiesWithEmployeesModel","timeRange","timeRage","PermissionLevel","TrendsModel","squadsStatus","origGetRoot","ReviewModel","integer","numberOfNotes","method","SquadsPermissionModel","None","EmployeePermissionModel","canViewLeaveBalances","canViewPurpleMeLink","canViewPurpleMeRetroDate","canViewNoneSquadEmployees","NotesPermissionModel","canViewPreviousSquadNotes","canViewSensitive","canDeleteSubmitted","CatchUpsPermissionModel","PermissionsModel","permission","View","Edit","NotesModelMap","selectedSquadStorageKey","UserModel","draftNotes","submittedNotes","formData","delete","sessionStorage","setItem","sortNotes","aDate","createUser","getItem","getUserSquad","TalentAnalysisEmployeeModel","TalentAnalysisToolModel","EmployeeListModel","squadNames","includeUnknownRoles","makeAdminUrl","requestForIdpId","SquadAssignmentEmployeeListModel","assignSquadsRequest","emp","cast","nameFilter","titleFiltered","AdminModel","GroupMemberModel","nextCatchupDateLocal","now","createCatchupGroupMember","GroupModel","createCatchupGroup","cug","m","CatchUpsModel","cugs","g","groupId","cugm","catchupGroupMemberIdpId","PagingCacheModel","currentPageCache","rowsPerPageCache","SquadCatchUpItemModel","lastCatchupDateLocal","SquadCatchUpsModel","scus","scu","RootStoreModel","afterCreate","CLIENT_ID","AUTHORITY","isDevelopment","NODE_ENV","AuthenticationError","Account","AuthenticationProvider","config","authParams","application","UserAgentApplication","getAccount","getIsSigningIn","getIsLoginError","signInRedirect","logout","canAcquireTokenSilent","acquireTokenSilent","accessToken","accessTokenRequest","loginRedirect","isLoginError","handleRedirectCallback","authErr","getLoginInProgress","urlContainsHash","fontAwesomeConfig","autoAddCss","Chart","platform","disableCSSInjection","createBrowserHistory","reactPlugin","ReactPlugin","appInsights","ApplicationInsights","instrumentationKey","extensions","extensionConfig","loadAppInsights","onunhandledrejection","trackException","exception","properties","stack","severityLevel","SeverityLevel","console","clientId","authority","validateAuthority","redirectUri","postLogoutRedirectUri","getDefaultStore","ReactDOM","render","getElementById"],"mappings":"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","file":"static/js/main.827e9be7.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"card\":\"NoteCard_card__3o9y_\",\"avatarContainer\":\"NoteCard_avatarContainer__1Fpbi\",\"subjectContainer\":\"NoteCard_subjectContainer__ML7ok\",\"subjectTitle\":\"NoteCard_subjectTitle__3-DaR\",\"chipOverride\":\"NoteCard_chipOverride__2s8Rw\",\"modifiedDate\":\"NoteCard_modifiedDate__3Mkwp\",\"deleteContainer\":\"NoteCard_deleteContainer__2Euc6\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"employeeNoteSidebar\":\"EmployeeNoteSidebar_employeeNoteSidebar__2Ywr4\",\"avatarContainer\":\"EmployeeNoteSidebar_avatarContainer__dKh14\",\"avatar\":\"EmployeeNoteSidebar_avatar__4IYGV\",\"employeeDetailsContainer\":\"EmployeeNoteSidebar_employeeDetailsContainer__bHMQi\",\"details\":\"EmployeeNoteSidebar_details__2aPXe\",\"capability\":\"EmployeeNoteSidebar_capability__1oVpF\",\"talentCodeContainer\":\"EmployeeNoteSidebar_talentCodeContainer__198ep\",\"flagsContainer\":\"EmployeeNoteSidebar_flagsContainer__oBWKq\",\"balancesContainer\":\"EmployeeNoteSidebar_balancesContainer__1yDeS\",\"balanceTitle\":\"EmployeeNoteSidebar_balanceTitle__3VkSW\",\"flagsNoTextTransform\":\"EmployeeNoteSidebar_flagsNoTextTransform__1B5Oh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sectionTitle\":\"SquadTrends_sectionTitle__2klNv\",\"chartRow\":\"SquadTrends_chartRow__1He_h\",\"chartContainer\":\"SquadTrends_chartContainer__MsYto\",\"chartPlaceholder\":\"SquadTrends_chartPlaceholder__3NOdv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"selectInput\":\"PrimaryFlagDropdown_selectInput__2A3JC\",\"MuiSelect-select\":\"PrimaryFlagDropdown_MuiSelect-select__2y4Wo\",\"dropdownIconContainer\":\"PrimaryFlagDropdown_dropdownIconContainer__1F0Ai\",\"dropdownIcon\":\"PrimaryFlagDropdown_dropdownIcon__2fsE3\",\"updateByInfo\":\"PrimaryFlagDropdown_updateByInfo__2QdWT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tableCell\":\"EmployeeListPopperItem_tableCell__3JFYU\",\"emptyCell\":\"EmployeeListPopperItem_emptyCell__2jtz0\",\"nameCellRoot\":\"EmployeeListPopperItem_nameCellRoot__2e4c1\",\"linkToEmployee\":\"EmployeeListPopperItem_linkToEmployee__2h4_V\",\"avatarContainer\":\"EmployeeListPopperItem_avatarContainer__1EtTv\",\"avatar\":\"EmployeeListPopperItem_avatar__qYc7b\",\"tableCellAsPadding\":\"EmployeeListPopperItem_tableCellAsPadding__15VOo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"flagChartContainer\":\"FlagChart_flagChartContainer__1kjr-\",\"row\":\"FlagChart_row__3bDr7\",\"square\":\"FlagChart_square__m-Cwi\",\"flagItemContainer\":\"FlagChart_flagItemContainer__3r_Bv\",\"number\":\"FlagChart_number__mMeBi\",\"skeleton\":\"FlagChart_skeleton__NCYqP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"UserProfile_root__3LE9V\",\"avatarButton\":\"UserProfile_avatarButton__2nahA\",\"avatar\":\"UserProfile_avatar__y1AVB\",\"loggedInUserMenuOpen\":\"UserProfile_loggedInUserMenuOpen__GIWAC\",\"loggedInUserMenu\":\"UserProfile_loggedInUserMenu__3r1f3\",\"loggedInUserMenuList\":\"UserProfile_loggedInUserMenuList__3WmmC\",\"signedInUser\":\"UserProfile_signedInUser__1RF96\",\"menuAvatar\":\"UserProfile_menuAvatar__8QHMD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"d3ChartBase\":\"D3BubbleChart_d3ChartBase__2iEcu\",\"bubbleChart\":\"D3BubbleChart_bubbleChart__31Mtr\",\"bubbleGroups\":\"D3BubbleChart_bubbleGroups__RRbrl\",\"bubbleGroup\":\"D3BubbleChart_bubbleGroup__1y5ea\",\"bubbleText\":\"D3BubbleChart_bubbleText__2m51Q\",\"fontLarge\":\"D3BubbleChart_fontLarge__oK9WA\",\"fontSmall\":\"D3BubbleChart_fontSmall__1bNEa\",\"bubbleCircle\":\"D3BubbleChart_bubbleCircle__2fhKy\",\"popper\":\"D3BubbleChart_popper__2jvE-\",\"arrow\":\"D3BubbleChart_arrow__hi7y8\",\"content\":\"D3BubbleChart_content__2L3Du\",\"noData\":\"D3BubbleChart_noData__E2oBt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filterWrapper\":\"RoleChangeTable_filterWrapper__29Az-\",\"table\":\"RoleChangeTable_table__1Z2Wz\",\"toolTableContainer\":\"RoleChangeTable_toolTableContainer__3BLh6\",\"name\":\"RoleChangeTable_name__1iECj\",\"avatarContainer\":\"RoleChangeTable_avatarContainer__2_PEP\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Shell_root__5sVRL\",\"header\":\"Shell_header__150fp\",\"logoContainer\":\"Shell_logoContainer__3lxRM\",\"navContainer\":\"Shell_navContainer__VDY3a\",\"searchContainer\":\"Shell_searchContainer__1Fb9W\",\"searchInput\":\"Shell_searchInput__2625T\",\"main\":\"Shell_main__300k8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatar\":\"MemberRow_avatar__A7orA\",\"linkToEmployee\":\"MemberRow_linkToEmployee__2G2R6\",\"button\":\"MemberRow_button__4CF3p\",\"daysUntilNextCatchup\":\"MemberRow_daysUntilNextCatchup__2ts4M\",\"green\":\"MemberRow_green__1bbyU\",\"orange\":\"MemberRow_orange__34RTV\",\"red\":\"MemberRow_red__1uApA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"employeeJourneyComponent\":\"EmployeeJourney_employeeJourneyComponent__3xVpi\",\"employeeTimeline\":\"EmployeeJourney_employeeTimeline__2Hgz5\",\"squadAppBar\":\"EmployeeJourney_squadAppBar__eJR17\",\"appBarTab\":\"EmployeeJourney_appBarTab__IVKpS\",\"indicator\":\"EmployeeJourney_indicator__1ZvKY\",\"tabBodyContainer\":\"EmployeeJourney_tabBodyContainer__3WwTB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dateStamp\":\"SquadFeedTimelineItem_dateStamp__3055-\",\"avatar\":\"SquadFeedTimelineItem_avatar__1NQ_0\",\"plChat\":\"SquadFeedTimelineItem_plChat__1oK_g\",\"nameContainer\":\"SquadFeedTimelineItem_nameContainer__3JpFw\",\"tagContainer\":\"SquadFeedTimelineItem_tagContainer__2Ye8I\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"indicator\":\"Squad_indicator__3CX7U\",\"squadRoot\":\"Squad_squadRoot__lQLDo\",\"squadAppBar\":\"Squad_squadAppBar__2jG1L\",\"appBarTab\":\"Squad_appBarTab__jxOGB\",\"tabBodyContainer\":\"Squad_tabBodyContainer__2yTQy\",\"backToTopContainer\":\"Squad_backToTopContainer__vy3fL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"EmployeeJourneysRow_root__1IYpl\",\"nameCell\":\"EmployeeJourneysRow_nameCell__1-yae\",\"nameCellRoot\":\"EmployeeJourneysRow_nameCellRoot__1Y4Jz\",\"avatarContainer\":\"EmployeeJourneysRow_avatarContainer__UtkeE\",\"avatar\":\"EmployeeJourneysRow_avatar__a8Ri-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"App_root__1_HbJ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"noteListComponent\":\"ListNotes_noteListComponent__2Nwk2\",\"tabHeaderContainer\":\"ListNotes_tabHeaderContainer__WQ_Mn\",\"tabBodyContainer\":\"ListNotes_tabBodyContainer__2nlpF\",\"newNoteButtonContainer\":\"ListNotes_newNoteButtonContainer__2uYRR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Admin_root__1Viu6\",\"appBar\":\"Admin_appBar___ritG\",\"tabBodyContainer\":\"Admin_tabBodyContainer__Q-ifl\",\"backToTopContainer\":\"Admin_backToTopContainer__1uE5m\",\"indicator\":\"Admin_indicator__19YCf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"SquadFeedTimelineItemContent_root__18QO0\",\"rootOpen\":\"SquadFeedTimelineItemContent_rootOpen__1sABn\",\"readMore\":\"SquadFeedTimelineItemContent_readMore__3pfdn\",\"readMoreOpen\":\"SquadFeedTimelineItemContent_readMoreOpen__lnlRw\",\"readMoreButton\":\"SquadFeedTimelineItemContent_readMoreButton__18ZBz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"NoteItemContent_root__b26TS\",\"rootOpen\":\"NoteItemContent_rootOpen__37TGT\",\"readMore\":\"NoteItemContent_readMore__3wQ8f\",\"readMoreOpen\":\"NoteItemContent_readMoreOpen__2xgho\",\"readMoreBtn\":\"NoteItemContent_readMoreBtn__1HoPo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"CatchUps_root__2GiiV\",\"appBar\":\"CatchUps_appBar__fBoGq\",\"tabBodyContainer\":\"CatchUps_tabBodyContainer__29EYk\",\"backToTopContainer\":\"CatchUps_backToTopContainer__mEH0g\",\"indicator\":\"CatchUps_indicator__2N7mo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"RoleChange_root__jjEyg\",\"titleContainer\":\"RoleChange_titleContainer__2TtST\",\"roleChangeAction\":\"RoleChange_roleChangeAction__14gWy\",\"lastModified\":\"RoleChange_lastModified__17lGJ\",\"formContainer\":\"RoleChange_formContainer__EO2-K\",\"formItem\":\"RoleChange_formItem__1rIk1\",\"editButton\":\"RoleChange_editButton__2VigD\",\"commentsContainer\":\"RoleChange_commentsContainer__1vHiM\",\"attachmentContainer\":\"RoleChange_attachmentContainer__3nRZR\",\"deleteButton\":\"RoleChange_deleteButton__3qPcZ\",\"attachmentProgress\":\"RoleChange_attachmentProgress__28zvU\",\"attachmentButton\":\"RoleChange_attachmentButton__9BA2p\",\"withValidation\":\"RoleChange_withValidation__20yB-\",\"errorText\":\"RoleChange_errorText__1xkJT\",\"formInputItem\":\"RoleChange_formInputItem__2UUSQ\",\"reverse\":\"RoleChange_reverse__3pTym\",\"select\":\"RoleChange_select__dWr-d\",\"checkbox\":\"RoleChange_checkbox__m0Jtt\",\"radioButton\":\"RoleChange_radioButton__2ImFy\",\"buttonsContainer\":\"RoleChange_buttonsContainer__2GWbm\",\"loadingIndicator\":\"RoleChange_loadingIndicator__qEZ3q\",\"backButton\":\"RoleChange_backButton__2xOFs\",\"previousRoleChangeContainer\":\"RoleChange_previousRoleChangeContainer__2su0l\",\"status\":\"RoleChange_status__2eyfI\",\"ratingDescription\":\"RoleChange_ratingDescription__E72mm\",\"roleChangeSkills\":\"RoleChange_roleChangeSkills__3dqwo\",\"currentRole\":\"RoleChange_currentRole__2QZAO\",\"fileName\":\"RoleChange_fileName__Az3YK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"name\":\"EmployeeRow_name__1ajSk\",\"avatarContainer\":\"EmployeeRow_avatarContainer__XLC1e\",\"checkboxContainer\":\"EmployeeRow_checkboxContainer__2vk93\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"headerSearch\":\"Search_headerSearch__Iza3G\",\"includeFormerEmployees\":\"Search_includeFormerEmployees__6YysI\",\"checkbox\":\"Search_checkbox__2zjqd\",\"checked\":\"Search_checked__3vG8G\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"employeeStatus\":\"EmployeeStatus_employeeStatus__DqFqj\",\"editButton\":\"EmployeeStatus_editButton__31nsD\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"MyNotes_container__4ioIc\",\"noteListContainer\":\"MyNotes_noteListContainer__36jgd\",\"noteFormContainer\":\"MyNotes_noteFormContainer__YNU6U\",\"employeeProfileContainer\":\"MyNotes_employeeProfileContainer__s-xug\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"ManageRoles_root__3fUgs\",\"tableControls\":\"ManageRoles_tableControls__DhTOu\",\"search\":\"ManageRoles_search__2rSsq\",\"checkbox\":\"ManageRoles_checkbox__1G80m\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"SquadNotSelected_container__2k-L4\",\"iconColor\":\"SquadNotSelected_iconColor__2GVk9\",\"bold\":\"SquadNotSelected_bold__Rrzif\",\"light\":\"SquadNotSelected_light__2SmHz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"Unauthorised_container__26GzW\",\"iconColor\":\"Unauthorised_iconColor__1rnQv\",\"bold\":\"Unauthorised_bold__3jSvb\",\"light\":\"Unauthorised_light__1FBQv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dropdownIconContainer\":\"FrequencySelector_dropdownIconContainer__1lu-A\",\"dropdownIcon\":\"FrequencySelector_dropdownIcon__1pzwf\",\"loadingIndicator\":\"FrequencySelector_loadingIndicator__1Cr19\",\"select\":\"FrequencySelector_select__LXV14\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"paper\":\"GroupCard_paper__sJpZM\",\"actions\":\"GroupCard_actions__snL3j\",\"loadingIndicator\":\"GroupCard_loadingIndicator__39GI0\",\"table\":\"GroupCard_table__SEO6J\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatar\":\"SquadCatchUpItem_avatar__1n52r\",\"linkToEmployee\":\"SquadCatchUpItem_linkToEmployee__spW5z\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"NoAccessToApp_container__1UBj_\",\"iconColor\":\"NoAccessToApp_iconColor__3l6-1\",\"bold\":\"NoAccessToApp_bold__3kw0H\",\"light\":\"NoAccessToApp_light__FGGYQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"statusContainer\":\"StatusIcon_statusContainer__RtIY_\",\"circle\":\"StatusIcon_circle__1XMf6\",\"status_0\":\"StatusIcon_status_0__1ENvS\",\"undefined\":\"StatusIcon_undefined__1ZImn\",\"status_1\":\"StatusIcon_status_1__gQ5qC\",\"status_2\":\"StatusIcon_status_2__24JLn\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"isSensitiveChip\":\"TagDropdown_isSensitiveChip__2oa9l\",\"chip\":\"TagDropdown_chip__2aS9Z\",\"option\":\"TagDropdown_option__zZlEK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"NoRoleChangeSubmission_container__1ZMJ4\",\"icon\":\"NoRoleChangeSubmission_icon__3MBzB\",\"bold\":\"NoRoleChangeSubmission_bold__H7WwZ\",\"spacing\":\"NoRoleChangeSubmission_spacing__2lz0m\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"validationIconContainer\":\"ValidationIcon_validationIconContainer__2ju1i\",\"validationSuccess\":\"ValidationIcon_validationSuccess__3Bkaj\",\"validationError\":\"ValidationIcon_validationError__BhqVW\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"MarkdownTextArea_root__1QkG2\",\"markdownPreview\":\"MarkdownTextArea_markdownPreview__1t4Nk\",\"markdownInput\":\"MarkdownTextArea_markdownInput__1ywZQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"SupportingOpportunitiesByMonthChart_root__3EcZi\",\"skeleton\":\"SupportingOpportunitiesByMonthChart_skeleton__1hAMB\",\"yearSelector\":\"SupportingOpportunitiesByMonthChart_yearSelector__1rtrT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatar\":\"SquadCatchUpItemSkeleton_avatar__1whwA\",\"skeleton\":\"SquadCatchUpItemSkeleton_skeleton__3ONgh\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"editNoteComponent\":\"EditNote_editNoteComponent__2p_7w\",\"formSection\":\"EditNote_formSection__1CyLX\",\"formContainer\":\"EditNote_formContainer__36on6\",\"formItem\":\"EditNote_formItem__3xRZF\",\"checkbox\":\"EditNote_checkbox__3gwqw\",\"inputContainer\":\"EditNote_inputContainer__1Z8zT\",\"errorText\":\"EditNote_errorText__3bzRT\",\"markdownTextContainer\":\"EditNote_markdownTextContainer__3eABY\",\"markdownSupportedText\":\"EditNote_markdownSupportedText__1akZR\",\"validationIcon\":\"EditNote_validationIcon__3LA_l\",\"sensitivity\":\"EditNote_sensitivity__2uc31\",\"isFaceToFaceDiscussion\":\"EditNote_isFaceToFaceDiscussion__aQNJS\",\"error\":\"EditNote_error__py5h1\",\"datePicker\":\"EditNote_datePicker__13QYV\",\"buttonsContainer\":\"EditNote_buttonsContainer__28nOE\",\"rightButtonsContainer\":\"EditNote_rightButtonsContainer__1IfHw\",\"sensitiveText\":\"EditNote_sensitiveText__DD8S6\",\"loadingContainer\":\"EditNote_loadingContainer__2SZII\",\"loadingIndicator\":\"EditNote_loadingIndicator__2rvEz\",\"informationIcon\":\"EditNote_informationIcon__TU5op\",\"informationText\":\"EditNote_informationText__3Y4qa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"navContainer\":\"Nav_navContainer__1xyRY\",\"active\":\"Nav_active__1dXQ1\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"LoadingIndicator_container__1InpN\",\"text\":\"LoadingIndicator_text__WXpol\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loadingIndicator\":\"LongTermLeaveFlagCheckbox_loadingIndicator__1e91v\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"inputContainer\":\"DialogWithDatepicker_inputContainer__3bJrP\",\"datePicker\":\"DialogWithDatepicker_datePicker__2pBYX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"disabledCheckbox\":\"Probation_disabledCheckbox__UeC5X\",\"disabledLabel\":\"Probation_disabledLabel__3UVZX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"SensitiveAttribute_root__3Kx9w\",\"attribute\":\"SensitiveAttribute_attribute__2wrn7\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"FaceToFaceDiscussionAttribute_root__9Ply0\",\"attribute\":\"FaceToFaceDiscussionAttribute_attribute__198Ao\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"tagComponent\":\"Tag_tagComponent__3LTB6\",\"materialOverride\":\"Tag_materialOverride__2gYBu\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"BackToTop_root__2yr38\",\"materialOverride\":\"BackToTop_materialOverride__2p8xq\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"RoleChangeStatusChip_root__1Sf8V\",\"new\":\"RoleChangeStatusChip_new__o8MK0\",\"draft\":\"RoleChangeStatusChip_draft__2Hcfg\",\"rejected\":\"RoleChangeStatusChip_rejected__2SSgJ\",\"submitted\":\"RoleChangeStatusChip_submitted__2hqTJ\",\"approved\":\"RoleChangeStatusChip_approved__1kLKM\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"AssignSquads_root__2Tr5a\",\"tableControls\":\"AssignSquads_tableControls__3jWjX\",\"search\":\"AssignSquads_search__2gud5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"container\":\"NoteReview_container__2e2ic\",\"buttonSwitcher\":\"NoteReview_buttonSwitcher__3pIei\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"ChartHeader_root__3eEBc\",\"subHeader\":\"ChartHeader_subHeader__3EdMK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"customSelection\":\"CustomSelection_customSelection__2-6D0\",\"customSelectionInput\":\"CustomSelection_customSelectionInput__30h2b\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"TalentCodesByMonthChart_root__3vDUm\",\"skeleton\":\"TalentCodesByMonthChart_skeleton__3llrg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"TalentAnalysisToolTable_root__200GL\",\"toolTableContainer\":\"TalentAnalysisToolTable_toolTableContainer__3PacA\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filterWrapper\":\"talentAnalysisTool_filterWrapper__2bj6E\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"searchResult\":\"EmployeeDropdown_searchResult__5pRQO\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"archivedChip\":\"ArchivedChip_archivedChip__gXYS5\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"Avatar_root__3iw0_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"roundInputBox\":\"SquadSelect_roundInputBox__hPw1i\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loadingIndicator\":\"FlightRisk_loadingIndicator__3ogAK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"loadingIndicator\":\"RoleChangePathway_loadingIndicator__2PdeG\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"indicator\":\"Tab_indicator__1Kmxz\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"TablePaginationActions_root__2vZHE\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatar\":\"SquadEmployeeRow_avatar__ub2Be\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"notFoundRoot\":\"NotFound_notFoundRoot__27AKf\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"skeleton\":\"RoleDistributionChart_skeleton__IAzfN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"PageHeader\":\"PageHeader_PageHeader__1EbuR\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"employeeHeader\":\"EmployeeJourneys_employeeHeader__35FZz\",\"gridContainer\":\"EmployeeJourneys_gridContainer__1Ws1B\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"AddMemberForm_button__2qVQL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"button\":\"MyCatchUps_button__uz9KY\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"paper\":\"SquadCatchUps_paper__3rU0U\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"ChangeAccessDialog_title__33LuD\",\"closeButton\":\"ChangeAccessDialog_closeButton__2S6mn\",\"content\":\"ChangeAccessDialog_content__33-GH\",\"employeeDetailsContainer\":\"ChangeAccessDialog_employeeDetailsContainer__3EXJi\",\"avatar\":\"ChangeAccessDialog_avatar__1VeMw\",\"employeeDetails\":\"ChangeAccessDialog_employeeDetails__1Mzrb\",\"bold\":\"ChangeAccessDialog_bold__2vbSe\",\"keyIcon\":\"ChangeAccessDialog_keyIcon__3CL1G\",\"accessSelection\":\"ChangeAccessDialog_accessSelection__32bZz\",\"rightPanel\":\"ChangeAccessDialog_rightPanel__3u4vP\",\"buttonContainer\":\"ChangeAccessDialog_buttonContainer__2WOBm\",\"loadingIndicator\":\"ChangeAccessDialog_loadingIndicator__1ZEue\",\"buttonIcon\":\"ChangeAccessDialog_buttonIcon__3zAYI\",\"employeeList\":\"ChangeAccessDialog_employeeList__mgAhN\",\"employeeNamesContainer\":\"ChangeAccessDialog_employeeNamesContainer__3z2Wr\",\"accessLevel\":\"ChangeAccessDialog_accessLevel__2VJXC\",\"lastInvitationContainer\":\"ChangeAccessDialog_lastInvitationContainer__32KI6\",\"lastInvitationText\":\"ChangeAccessDialog_lastInvitationText__wCdOa\",\"resendLink\":\"ChangeAccessDialog_resendLink__3tyPk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"noteTimelineItemComponent\":\"NoteTimelineItem_noteTimelineItemComponent__UQohp\",\"dateContainer\":\"NoteTimelineItem_dateContainer__2pr15\",\"noteContainer\":\"NoteTimelineItem_noteContainer__3_Obk\",\"noteContentContainer\":\"NoteTimelineItem_noteContentContainer__-RF2_\",\"headerContainer\":\"NoteTimelineItem_headerContainer__1EQNK\",\"plChatChip\":\"NoteTimelineItem_plChatChip__ThMJL\",\"materialOverride\":\"NoteTimelineItem_materialOverride__1pcSc\",\"attributes\":\"NoteTimelineItem_attributes__38DvM\",\"actionButtonBar\":\"NoteTimelineItem_actionButtonBar__2Iupj\",\"editButton\":\"NoteTimelineItem_editButton__3EXaM\",\"deleteButton\":\"NoteTimelineItem_deleteButton__2QQdw\",\"tagsContainer\":\"NoteTimelineItem_tagsContainer__2DNip\",\"contentContainer\":\"NoteTimelineItem_contentContainer__1l9Nh\",\"contentFade\":\"NoteTimelineItem_contentFade__38puT\",\"authorContainer\":\"NoteTimelineItem_authorContainer__K13Gq\",\"showMoreContainer\":\"NoteTimelineItem_showMoreContainer__FxFLe\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"employeeTimelineComponent\":\"EmployeeTimeline_employeeTimelineComponent__2nTYY\",\"timelineContainer\":\"EmployeeTimeline_timelineContainer__3RcCF\",\"emptyState\":\"EmployeeTimeline_emptyState__1-eVW\",\"filterContainer\":\"EmployeeTimeline_filterContainer__kaPLD\",\"roundInputBox\":\"EmployeeTimeline_roundInputBox__2uUQ5\",\"dateRange\":\"EmployeeTimeline_dateRange__3Mdue\",\"startDate\":\"EmployeeTimeline_startDate__HQ3HR\",\"tag\":\"EmployeeTimeline_tag__3wDCv\",\"addNoteButtonContainer\":\"EmployeeTimeline_addNoteButtonContainer__1hQ-C\",\"materialOverride\":\"EmployeeTimeline_materialOverride__hD8mR\",\"backToTopButtonContainer\":\"EmployeeTimeline_backToTopButtonContainer__1hSWL\",\"notesContainer\":\"EmployeeTimeline_notesContainer__1UERO\",\"monthNotesContainer\":\"EmployeeTimeline_monthNotesContainer__13k_R\",\"backToTopContainer\":\"EmployeeTimeline_backToTopContainer__1Jtl4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"avatar\":\"NoteItem_avatar__gUzEo\",\"plChat\":\"NoteItem_plChat__330PC\",\"reviewStatus\":\"NoteItem_reviewStatus__1WmIb\",\"review\":\"NoteItem_review__1Ej49\",\"visibilitySelector\":\"NoteItem_visibilitySelector__2kOm7\",\"tagContainer\":\"NoteItem_tagContainer__1QFiK\",\"xlButton\":\"NoteItem_xlButton__7O8GS\",\"noteItem\":\"NoteItem_noteItem__2njd-\",\"nameContainer\":\"NoteItem_nameContainer__2WQcI\",\"menuItem\":\"NoteItem_menuItem__6V6bX\",\"menuItemIcon\":\"NoteItem_menuItemIcon__1kfwm\",\"sensitiveInfoText\":\"NoteItem_sensitiveInfoText__1OGoH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"root\":\"RoleChangeSidePanel_root__1jsHQ\",\"closeButton\":\"RoleChangeSidePanel_closeButton__6NRia\",\"section\":\"RoleChangeSidePanel_section__3dKvR\",\"behaviors\":\"RoleChangeSidePanel_behaviors__3sZJ3\",\"buttonContainer\":\"RoleChangeSidePanel_buttonContainer__7HQSY\",\"statusContainer\":\"RoleChangeSidePanel_statusContainer__1QV3W\",\"loadingIndicator\":\"RoleChangeSidePanel_loadingIndicator__1g4xu\",\"businessCaseAttachment\":\"RoleChangeSidePanel_businessCaseAttachment__pSf16\"};","import { CSSProperties } from 'react';\n\nexport enum color {\n black = '#000000',\n white = '#ffffff',\n vibrantBlue = '#0e39fb',\n pinkishRed = '#ed1f4f',\n brick = '#d32323',\n tangerine = '#ff9300',\n sapGreen = '#58a41e',\n veryLightPink = '#d1d1d1',\n brownGrey = '#8b8b8b',\n brownishGrey = '#707070',\n mineShaft = '#343434',\n cerulean = '#00aeef',\n hollywoodCerise = '#ff029a',\n bigStone = '#141b33',\n lemon = '#f9ea1d',\n puertoRico = '#49BAAA',\n electricLime = '#CCFF00',\n treePoppy = '#F7941D',\n tePapaGreen = '#1F313E',\n blueDianne = '#223F54',\n fiord = '#3D5567',\n athensGray = '#F0F0F4',\n alabaster = '#F8F8F8',\n codgray = '#111111',\n sunglo = '#E57373',\n texasRose = '#FFB74D',\n pictonBlue = '#4FC3F7',\n deYork = '#81C784',\n boulder = '#777777',\n catskillWhite = '#F9FAFC',\n aliceBlue = '#F9FAFC',\n}\n\ninterface IAppCssProperties extends CSSProperties {\n '--background': color;\n '--primary-one': color;\n '--on-primary-one': color;\n '--primary-two': color;\n '--on-primary-two': color;\n '--primary-three': color;\n '--on-primary-three': color;\n '--secondary-one': color;\n '--secondary-two': color;\n '--secondary-three': color;\n '--secondary-four': color;\n '--shade-darkest': color;\n '--shade-darker': color;\n '--shade-dark': color;\n '--shade-light': color;\n '--shade-lighter': color;\n '--on-notification': color;\n '--error': color;\n '--warning': color;\n '--information': color;\n '--success': color;\n '--disabled': color;\n '--header-bg': color;\n '--nav-link': color;\n '--active-nav': color;\n '--input-border': color;\n '--validation-success': color;\n '--active-nav-link': color;\n '--journey-background': color;\n}\n\nexport const siteDefault: IAppCssProperties = {\n '--background': color.catskillWhite,\n '--primary-one': color.vibrantBlue,\n '--on-primary-one': color.white,\n '--primary-two': color.hollywoodCerise,\n '--on-primary-two': color.white,\n '--primary-three': color.bigStone,\n '--on-primary-three': color.white,\n '--secondary-one': color.lemon,\n '--secondary-two': color.puertoRico,\n '--secondary-three': color.electricLime,\n '--secondary-four': color.treePoppy,\n '--shade-darkest': color.tePapaGreen,\n '--shade-darker': color.blueDianne,\n '--shade-dark': color.fiord,\n '--shade-light': color.athensGray,\n '--shade-lighter': color.alabaster,\n '--on-notification': color.codgray,\n '--error': color.sunglo,\n '--warning': color.texasRose,\n '--information': color.pictonBlue,\n '--success': color.deYork,\n '--disabled': color.boulder,\n '--header-bg': color.mineShaft,\n '--nav-link': color.veryLightPink,\n '--active-nav': color.pinkishRed,\n '--active-nav-link': color.white,\n '--input-border': color.brownishGrey,\n '--validation-success': color.sapGreen,\n '--journey-background': color.aliceBlue,\n};\n","import React from 'react';\n\nimport { Link } from 'react-router-dom';\n\nimport styles from './Nav.module.scss';\n\nexport interface NavItem {\n title: string;\n link: string;\n isActive: boolean;\n}\n\ninterface Props {\n className?: string;\n items: NavItem[];\n currentNav: string;\n}\n\nexport const Nav: React.FC = ({ className, items, currentNav }) => (\n \n);\n","import querystring from 'query-string';\nimport { useHistory } from 'react-router-dom';\n\ninterface IQueryParams {\n [key: string]: string;\n}\n\ntype UseNavigateReturn = (route: string, queryParams?: IQueryParams) => void;\n\nexport function useNavigate(): UseNavigateReturn {\n const history = useHistory();\n return (route: string, queryParams?: IQueryParams) => {\n history.push({\n pathname: route,\n search: queryParams ? querystring.stringify(queryParams) : undefined,\n });\n };\n}\n","import { useContext } from 'react';\n\nimport { StoreContext } from 'views/App';\nimport { IRootStoreModel } from 'domain/store/RootStoreModel';\n\nexport function useStore(): IRootStoreModel {\n const store = useContext(StoreContext);\n\n if (!store) throw new Error('Store context has not been initialised');\n return store;\n}\n","import { useStore } from './useStore';\nimport { IGraphModel } from 'domain/store/singletons/GraphModel';\n\nexport function useGraph(): IGraphModel {\n const { graph } = useStore();\n return graph;\n}\n","import { Chip } from '@material-ui/core';\nimport React from 'react';\nimport styles from './ArchivedChip.module.scss';\n\nexport const ArchivedChip: React.FC = () => {\n return (\n \n );\n};\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Autocomplete } from '@material-ui/lab';\nimport { CircularProgress, TextField } from '@material-ui/core';\nimport { useGraph } from 'hooks/useGraph';\nimport { EmployeeSearchResult } from 'domain/store/singletons/GraphModel';\nimport styles from './EmployeeDropdown.module.scss';\nimport { ArchivedChip } from '../archivedChip/ArchivedChip';\n\ninterface EmployeeDropdownProps {\n defaultValue?: EmployeeSearchResult | null;\n onChange?: (employee: EmployeeSearchResult | undefined, clearCallback: () => void) => void;\n onBlur?: () => void;\n className?: string;\n textBoxClassName?: string;\n includeFormerEmployees?: boolean;\n}\n\nexport const EmployeeDropdown: React.FC = (props: EmployeeDropdownProps) => {\n const { searchForEmployees } = useGraph();\n const [value, setValue] = useState(null);\n const [loading, setLoading] = useState(false);\n const [inputValue, setInputValue] = useState('');\n const [options, setOptions] = useState([]);\n const inputTextRef = useRef();\n\n const fetchUsers = useCallback(\n async (search: string) => await searchForEmployees(search, props.includeFormerEmployees),\n [searchForEmployees, props.includeFormerEmployees]\n );\n\n useEffect(() => {\n const fetchUsersDebounced = (search: string) => {\n const global = (window as unknown) as { timer: NodeJS.Timeout };\n clearTimeout(global.timer);\n if (inputValue) {\n setLoading(true);\n } else {\n setLoading(false);\n setOptions([]);\n return;\n }\n global.timer = setTimeout(async () => {\n const users = await fetchUsers(search);\n setOptions(users);\n setLoading(false);\n }, 500);\n };\n\n fetchUsersDebounced(inputValue);\n }, [inputValue, fetchUsers]);\n\n useEffect(() => {\n if (props.defaultValue || props.defaultValue === null) {\n setValue(props.defaultValue);\n }\n }, [props.defaultValue]);\n\n const handleChange = (value: EmployeeSearchResult | null) => {\n let clearCalled = false;\n props.onChange &&\n props.onChange(value || undefined, () => {\n clearCalled = true;\n setValue(null);\n setOptions([]);\n setInputValue('');\n inputTextRef.current?.blur();\n });\n !clearCalled && setValue(value || null);\n };\n\n return (\n option.displayName}\n className={props.className}\n options={options}\n autoComplete\n filterSelectedOptions\n value={value}\n loading={loading}\n onInputChange={(event, newInputValue) => setInputValue(newInputValue)}\n getOptionSelected={(option: EmployeeSearchResult, value: EmployeeSearchResult) =>\n option.idpId === value.idpId\n }\n onChange={(event, value) => handleChange(value)}\n onBlur={() => props.onBlur && props.onBlur()}\n renderInput={(params) => (\n \n {loading ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n renderOption={(option: EmployeeSearchResult) => {\n return (\n
\n {option.displayName}\n {option.isFormerEmployee && }\n
\n );\n }}\n />\n );\n};\n","import { IUser } from 'domain/store/UserModel';\nimport { useStore } from 'hooks/useStore';\n\nexport function useUser(): IUser {\n const { user } = useStore();\n\n return user;\n}\n","import { useUser } from './useUser';\nimport { IPermissions } from 'domain/store/UserModel';\n\nexport function usePermissions(): IPermissions {\n const { permissions } = useUser();\n\n return permissions;\n}\n","import React, { useState } from 'react';\nimport styles from 'views/components/shell/components/search/Search.module.scss';\nimport { useNavigate } from 'hooks/useNavigate';\nimport { EmployeeDropdown } from 'views/components/employeeDropdown/EmployeeDropdown';\nimport { EMPLOYEE_JOURNEYS_ROUTE_PATH } from 'views/routes/Routes';\nimport { Checkbox, FormControlLabel } from '@material-ui/core';\nimport { usePermissions } from 'hooks/usePermissions';\n\ninterface Props {\n className?: string;\n}\n\nexport const Search: React.FC = ({ className }) => {\n const navigate = useNavigate();\n const {\n employees: { canSearchForFormerEmployees },\n } = usePermissions();\n\n const [includeFormerEmployees, setIncludeFormerEmployees] = useState(false);\n\n return (\n
\n {\n if (employee) {\n navigate(`${EMPLOYEE_JOURNEYS_ROUTE_PATH}/${employee.idpId}`);\n clearCallback();\n }\n }}\n textBoxClassName={styles.headerSearch}\n includeFormerEmployees={includeFormerEmployees}\n />\n {canSearchForFormerEmployees && (\n setIncludeFormerEmployees(value)}\n />\n }\n label=\"Include former employees\"\n className={styles.includeFormerEmployees}\n />\n )}\n
\n );\n};\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 485.41h161.8V323.6H0zM323.6 161.8A161.8 161.8 0 00161.8 0v323.61A161.8 161.8 0 00323.6 161.8\",\n fill: \"#fff\"\n}));\n\nfunction SvgPurpleLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, [\"title\", \"titleId\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 323.6 485.41\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ref2);\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPurpleLogo);\nexport default __webpack_public_path__ + \"static/media/purple-logo.e2e0e5e0.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\n\nimport { Link } from 'react-router-dom';\n\nimport { ReactComponent as MyLogo } from 'assets/purple-logo.svg';\n\ninterface Props {\n className?: string;\n}\n\nexport const Logo: React.FC = ({ className }) => {\n return (\n \n \n \n );\n};\n","import React from 'react';\nimport { useEmployeePhoto } from 'hooks/useEmployeePhoto';\nimport { Avatar as MuiAvatar } from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport styles from './Avatar.module.scss';\nimport cn from 'classnames';\n\ninterface AvatarProps {\n idpId?: string;\n givenName?: string;\n familyName?: string;\n className?: string;\n}\n\n// Basically lifted this from https://stackoverflow.com/questions/3426404/create-a-hexadecimal-colour-based-on-a-string-with-javascript\nconst idpIdToColor = (input: string) => {\n let hash = 0;\n for (let i = 0; i < input.length; i++) {\n hash = input.charCodeAt(i) + ((hash << 5) - hash);\n }\n\n const c = (hash & 0x00ffffff).toString(16).toUpperCase();\n\n return '00000'.substring(0, 6 - c.length) + c;\n};\n\nexport const Avatar: React.FC = ({ idpId, givenName, familyName, className }) => {\n const { photo, isLoading } = useEmployeePhoto(idpId);\n const initials = givenName && familyName ? `${givenName[0]}${familyName[0]}` : '';\n const altText = givenName && familyName ? `${givenName} ${familyName}` : 'User';\n\n return (\n
\n {isLoading || !idpId ? (\n \n ) : photo ? (\n \n ) : (\n \n {initials}\n \n )}\n
\n );\n};\n","import { useEffect, useState } from 'react';\n\nimport { useGraph } from './useGraph';\n\ninterface IEmployeePhotoResult {\n photo?: string | null;\n isLoading: boolean;\n}\n\nexport function useEmployeePhoto(employeeId?: string): IEmployeePhotoResult {\n const { searchForEmployeePhoto } = useGraph();\n const [photo, setPhoto] = useState(undefined);\n const [isLoading, setLoading] = useState(true);\n\n useEffect(() => {\n let active = true;\n if (employeeId) {\n setLoading(true);\n searchForEmployeePhoto(employeeId)\n .then((photoUri) => {\n active && setPhoto(photoUri);\n })\n .catch(() => active && setPhoto(null))\n .finally(() => active && setLoading(false));\n } else {\n active && setPhoto(undefined);\n }\n return () => {\n active = false;\n };\n }, [employeeId, searchForEmployeePhoto]);\n\n return { photo, isLoading };\n}\n","import React from 'react';\nimport styles from './UserProfile.module.scss';\nimport cn from 'classnames';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport { useUser } from 'hooks/useUser';\nimport { useSecurity } from 'hooks/useSecurity';\nimport { faSignOutAlt } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, ListItem, Menu, MenuItem } from '@material-ui/core';\nimport { siteDefault } from 'views/themes';\n\ninterface UserProfileProps {\n className?: string;\n}\n\nexport const UserProfile: React.FC = ({ className }) => {\n const { idpId, givenName, familyName, squadName } = useUser();\n const { signOut } = useSecurity();\n const [menuAnchorElement, setMenuAnchorElement] = React.useState(null);\n\n const handleClick = (event: React.MouseEvent) =>\n setMenuAnchorElement(event.currentTarget);\n const handleClose = () => setMenuAnchorElement(null);\n const squadDisplayName =\n squadName?.toLowerCase().indexOf('squad') === -1 ? `${squadName} Squad` : squadName;\n\n return (\n
\n \n \n \n \n \n
\n Signed-In as\n {`${givenName} ${familyName}`}\n {squadDisplayName}\n
\n \n
\n {/* An Example of adding a new element (e.g. for Admin). */}\n {/* {console.warn('clicked!'); handleClose();}>\n Admin \n */}\n \n Sign Out \n \n \n
\n );\n};\n","import { useStore } from 'hooks/useStore';\n\ninterface IUseSecurity {\n signOut: () => void;\n}\n\nexport function useSecurity(): IUseSecurity {\n const { security } = useStore();\n\n return {\n signOut: security.signOut,\n };\n}\n","import React, { useEffect, useState } from 'react';\nimport { TextField } from '@material-ui/core';\nimport styles from './SquadSelect.module.scss';\nimport { IUser } from 'domain/store/UserModel';\nimport { observer } from 'mobx-react-lite';\nimport { Autocomplete } from '@material-ui/lab';\nimport cn from 'classnames';\n\nexport const SquadSelect: React.FC<{ user: IUser }> = observer(({ user }) => {\n const {\n permissions: { canViewAllSquads },\n selectedSquad,\n setSquad,\n getAllSquads,\n assignedSquads,\n } = user;\n\n const [squads, setSquads] = useState(assignedSquads);\n\n useEffect(() => {\n if (canViewAllSquads) {\n getAllSquads().then((s) => {\n setSquads(\n Array.from(\n new Set([...s])\n )\n );\n });\n }\n }, [getAllSquads, canViewAllSquads]);\n\n if (!canViewAllSquads && assignedSquads.length === 0) return null;\n\n return (\n <>\n option}\n className={cn(styles.roundInputBox)}\n options={squads}\n value={selectedSquad ? selectedSquad : undefined}\n onChange={(e, v) => (v === null ? setSquad('') : setSquad(v as string))}\n renderInput={(params) => (\n \n )}\n />\n \n );\n});\n","import React, { useEffect, useState, useCallback } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { Nav, NavItem } from 'views/components/shell/components/nav/Nav';\nimport { Search } from 'views/components/shell/components/search/Search';\nimport {\n ADMIN_ROUTE_PATH,\n CREATE_NOTE_ROUTE_PATH,\n SQUAD_ROUTE_PATH,\n EMPLOYEE_JOURNEYS_ROUTE_PATH,\n CATCH_UPS_ROUTE_PATH,\n} from 'views/routes/Routes';\nimport { Logo } from './components/logo/Logo';\nimport { UserProfile } from './components/UserProfile';\nimport styles from './Shell.module.scss';\n\nimport { useUser } from 'hooks/useUser';\nimport { usePermissions } from 'hooks/usePermissions';\nimport { SquadSelect } from './components/squadSelect/SquadSelect';\n\nexport const Shell: React.FC = ({ children }) => {\n const user = useUser();\n\n const {\n canViewSquadTab,\n canViewEmployeeTab,\n canViewNoteTab,\n canManageRoles,\n canViewCatchupGroupTab,\n } = usePermissions();\n const history = useHistory();\n const [currentNav, setCurrentNav] = useState('');\n const [activeNav, setActiveNav] = useState('');\n\n const navs: NavItem[] = [];\n const setNav = useCallback((route: string) => {\n setCurrentNav(route);\n setActiveNav(topLevelRoute(route));\n }, []);\n const topLevelRoute = (route: string) => route.split('/')[1];\n\n if (canViewSquadTab) {\n navs.push({\n title: 'Squad',\n link: SQUAD_ROUTE_PATH,\n isActive: false,\n });\n }\n\n if (canViewEmployeeTab) {\n navs.push({\n title: 'Employees',\n link: EMPLOYEE_JOURNEYS_ROUTE_PATH,\n isActive: false,\n });\n }\n\n if (canViewNoteTab) {\n navs.push({\n title: 'Notes',\n link: CREATE_NOTE_ROUTE_PATH,\n isActive: false,\n });\n }\n\n if (canViewCatchupGroupTab) {\n navs.push({\n title: 'Catch-ups',\n link: CATCH_UPS_ROUTE_PATH,\n isActive: false,\n });\n }\n\n if (canManageRoles) {\n navs.push({\n title: 'Admin',\n link: ADMIN_ROUTE_PATH,\n isActive: false,\n });\n }\n\n useEffect(() =>\n history.listen((location) => {\n setNav(location.pathname + location.search);\n })\n );\n\n useEffect(() => {\n if (history.location.pathname === '/') {\n if (canViewSquadTab) {\n setNav(SQUAD_ROUTE_PATH);\n } else if (canViewEmployeeTab) {\n setNav(EMPLOYEE_JOURNEYS_ROUTE_PATH);\n } else {\n setNav(history.location.pathname + history.location.search);\n }\n } else {\n setNav(history.location.pathname + history.location.search);\n }\n }, [setNav, history.location, canViewSquadTab, canViewEmployeeTab]);\n\n const getNavs = () =>\n navs.map((nav) => ({\n ...nav,\n isActive: topLevelRoute(nav.link) === activeNav,\n }));\n\n return (\n
\n
\n \n
\n
{children}
\n
\n );\n};\n","import { useEffect } from 'react';\nimport { useStore } from './useStore';\nimport { IEmployeeJourney } from 'domain/store/employeeJourney/EmployeeJourneyModel';\nimport { UNAUTHORISED_ROUTE_PATH } from 'views/routes/Routes';\nimport { useHistory, useParams } from 'react-router-dom';\n\nexport function useEmployeeJourney(): IEmployeeJourney {\n const { employeeJourney } = useStore();\n const { idpId } = useParams<{ idpId?: string }>();\n const history = useHistory();\n\n useEffect(() => {\n if (idpId && idpId !== employeeJourney.employee?.idpId) {\n employeeJourney.unloadJourney();\n employeeJourney.loadJourney(idpId).then(() => {\n if (employeeJourney.state === 'unauthorised') {\n history.push(UNAUTHORISED_ROUTE_PATH);\n }\n });\n }\n }, [employeeJourney, history, idpId]);\n\n return employeeJourney;\n}\n","import React from 'react';\nimport { Divider, Box } from '@material-ui/core';\n\nexport const EmployeeSidebarDivider: React.FC = () => {\n return (\n \n \n \n );\n};\n","import { IFlags } from 'domain/store/FlagsModel';\nimport { useStore } from 'hooks/useStore';\n\nexport function useFlags(): IFlags {\n const { flags } = useStore();\n\n return flags;\n}\n","import React, { ReactNode } from 'react';\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n} from '@material-ui/core';\n\nexport interface AlertDialogProps {\n isOpen: boolean;\n title: string;\n text?: string;\n content?: ReactNode;\n agreeButtonText?: string;\n disagreeButtonText?: string;\n onAgreeClick?: () => void;\n onDisagreeClick?: () => void;\n agreeDisabled?: boolean;\n}\n\nexport const AlertDialog: React.FunctionComponent = (props) => {\n const onAgreeClick = () => {\n props.onAgreeClick && props.onAgreeClick();\n };\n\n const onDisagreeClick = () => {\n props.onDisagreeClick && props.onDisagreeClick();\n };\n\n return (\n \n \n {props.title}\n \n \n {props.text}\n {props.content}\n \n \n \n {props.agreeButtonText || 'Yes'}\n \n {props.onDisagreeClick && (\n \n {props.disagreeButtonText || 'No'}\n \n )}\n \n \n );\n};\n","import React from 'react';\nimport { Tooltip } from '@material-ui/core';\nimport moment from 'moment';\nimport { InfoOutlined } from '@material-ui/icons';\n\nexport interface UpdatedByTooltipProps {\n updatedByDisplayName: string;\n modifiedDateTime: string;\n}\n\nexport const UpdatedByInfoIcon: React.FunctionComponent = (props) => {\n return (\n \n Updated by: {props.updatedByDisplayName} on{' '}\n {moment(props.modifiedDateTime).format('DD/MM/YYYY')}\n \n }>\n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { MenuItem, Select, Box } from '@material-ui/core';\nimport { useFlags } from 'hooks/useFlags';\nimport { IFlag } from 'domain/store/FlagsModel';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faChevronCircleDown } from '@fortawesome/free-solid-svg-icons/faChevronCircleDown';\nimport styles from './PrimaryFlagDropdown.module.scss';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport { useStore } from 'hooks/useStore';\nimport { IUpdatePrimaryFlagRequest } from 'domain/store/employeeJourney/PrimaryFlagModel';\nimport { observer } from 'mobx-react-lite';\nimport { IEmployeeJourney } from 'domain/store/employeeJourney/EmployeeJourneyModel';\nimport { Skeleton } from '@material-ui/lab';\nimport { AlertDialog } from '../alertDialog/AlertDialog';\nimport { UpdatedByInfoIcon } from 'views/routes/employeeJourney/components/employeeSidebar/components/updatedByInfoIcon/UpdatedByInfoIcon';\nimport { api } from '../../../shared/api/interfaces';\n\ninterface IPrimaryFlagDropdownProps {\n journey: IEmployeeJourney;\n disabled: boolean;\n}\ninterface IFlagModificationInfo {\n modifiedDateTime: string;\n modifiedBy: string;\n}\n\nexport const PrimaryFlagDropdown: React.FC = observer(\n ({ journey, disabled }) => {\n const store = useStore();\n const flagStore = useFlags();\n const { employee } = journey;\n const [options, setOptions] = useState([]);\n const [value, setValue] = useState(-1);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [showAlertDialog, setShowAlertDialog] = useState(false);\n const [flagIdToUpdate, setFlagIdToUpdate] = useState(null);\n const [showTalentCodeInfo, setShowTalentCodeInfo] = useState(false);\n const [flagModificationInfo, setFlagModificationInfo] = useState(\n null\n );\n\n const flagId = employee?.flags.primaryFlag?.value?.flagId || -1;\n const isLoaded = journey.isLoaded && flagStore.state === 'done';\n\n useEffect(() => {\n const flags = flagStore.all;\n setOptions(flags);\n }, [setOptions, flagStore.all]);\n\n useEffect(() => {\n if (isLoaded) {\n setValue(flagId);\n setShowTalentCodeInfo(flagId !== -1);\n setFlagModificationInfo({\n modifiedBy: employee?.flags.primaryFlag?.value?.modifiedBy.displayName || '',\n modifiedDateTime: employee?.flags.primaryFlag?.value?.modifiedDateTime || '',\n });\n }\n }, [isLoaded, flagId, employee]);\n\n const handleChange = (event: React.ChangeEvent<{ value: unknown }>) => {\n const flagId = event.target.value as number;\n setFlagIdToUpdate(flagId);\n setShowAlertDialog(true);\n };\n\n const resetPrimaryFlagUpdateStates = () => {\n setFlagIdToUpdate(null);\n setShowAlertDialog(false);\n };\n\n const onAgreeClickChangePrimaryFlag = () => {\n const flagRequest: IUpdatePrimaryFlagRequest = {\n employeeIdpId: employee!.idpId,\n flagId: flagIdToUpdate as number,\n };\n setIsSubmitting(true);\n\n employee!.flags.primaryFlag\n ?.update(flagRequest)\n .then((response: api.FlagDto) => {\n setValue(flagIdToUpdate as number);\n setShowTalentCodeInfo(true);\n setFlagModificationInfo({\n modifiedBy: response.modifiedBy.displayName,\n modifiedDateTime: response.modifiedDateTime,\n });\n })\n .catch((e) => {\n if (e.response.status) {\n if (e.response.status === 409) {\n store.notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (e.response.status === 403) {\n store.notifications.addError('Not authorised to change primary flag.');\n } else if (e.response.status === 404) {\n store.notifications.addError('Primary flag could not be changed, please try again.');\n }\n }\n })\n .finally(() => setIsSubmitting(false));\n\n resetPrimaryFlagUpdateStates();\n };\n\n const onDisagreeClick = () => resetPrimaryFlagUpdateStates();\n\n return (\n <>\n {isLoaded ? (\n \n handleChange(event)}\n IconComponent={(props) => {\n const propsWithDropdownIcon = {\n ...props,\n className: `${props.className} ${styles.dropdownIcon} `,\n };\n return (\n
\n {isSubmitting ? (\n \n ) : (\n \n )}\n
\n );\n }}\n className={styles.selectInput}\n disabled={disabled}\n data-testid=\"edit-primary-flag-dropdown\">\n {value === -1 && (\n \n No Primary Flag Selected\n \n )}\n {options.length &&\n options.map((flag) => {\n return (\n \n {flag.name}\n \n );\n })}\n \n {showTalentCodeInfo && (\n \n \n \n )}\n
\n ) : (\n \n )}\n \n \n );\n }\n);\n","import React from 'react';\nimport cn from 'classnames';\nimport styles from './LoadingIndicator.module.scss';\nimport { CircularProgress } from '@material-ui/core';\n\ninterface ILoadingIndicatorProps {\n text?: string;\n size?: number | string;\n className?: string;\n}\n\nexport const LoadingIndicator: React.FC = ({ text, className, size }) => {\n return (\n
\n \n
{text}
\n
\n );\n};\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Checkbox, FormControlLabel, Box, Typography } from '@material-ui/core';\nimport { SwitchBaseProps } from '@material-ui/core/internal/SwitchBase';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport styles from './FlightRisk.module.scss';\nimport { UpdatedByInfoIcon } from 'views/routes/employeeJourney/components/employeeSidebar/components/updatedByInfoIcon/UpdatedByInfoIcon';\nimport { IFlightRiskStatusModelValue } from 'domain/store/employeeJourney/FlightRiskModel';\n\ninterface FlightRiskProps {\n flightRiskStatusModelValue: IFlightRiskStatusModelValue | null;\n loading: boolean;\n onToggle?: () => void;\n disabled: boolean;\n}\n\nexport const FlightRisk: React.FC = observer(\n ({ flightRiskStatusModelValue, onToggle, loading, disabled }) => {\n return (\n \n \n \n \n ) : (\n onToggle && onToggle()}\n disabled={onToggle === undefined}\n inputProps={\n {\n 'data-testid': 'flight-risk-checkbox',\n } as SwitchBaseProps['inputProps'] & { 'data-testid': string }\n }\n />\n )\n }\n label={\n \n \n Flight risk\n \n \n }\n />\n {!loading && flightRiskStatusModelValue && (\n \n )}\n \n );\n }\n);\n","import { IFlightRiskStatusModel } from 'domain/store/employeeJourney/FlightRiskModel';\nimport { useStore } from 'hooks/useStore';\nimport React, { useState } from 'react';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\nimport { FlightRisk } from 'views/routes/employeeJourney/components/employeeSidebar/components/flightRisk/FlightRisk';\nexport interface FlightRiskFlagProps {\n employeeId: string;\n employeeDisplayName: string;\n flightRiskStatusModel: IFlightRiskStatusModel | null;\n disabled: boolean;\n}\n\nexport const FlightRiskFlag: React.FC = ({\n flightRiskStatusModel,\n employeeId,\n employeeDisplayName,\n disabled,\n}) => {\n const [isFlightRiskDialogOpen, setIsFlightRiskDialogOpen] = useState(false);\n const [isLoadingFlightRisk, setLoadingFlightRisk] = useState(false);\n const store = useStore();\n const toggleFlightRisk = () => {\n setIsFlightRiskDialogOpen(true);\n };\n\n const resetFlightRiskDialogStates = () => {\n setIsFlightRiskDialogOpen(false);\n };\n\n const onFlightRiskAgree = () => {\n setLoadingFlightRisk(true);\n\n flightRiskStatusModel\n ?.toggleFlightRiskStatus(employeeId)\n .then((r) => r)\n .catch((e) => {\n if (e?.response?.status === 409) {\n store.notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (e?.response?.status === 403) {\n store.notifications.addError('Not authorised to save changes.');\n } else {\n store.notifications.addError('Unable to change flight risk status, please try again.');\n }\n })\n .finally(() => setLoadingFlightRisk(false));\n\n resetFlightRiskDialogStates();\n };\n\n const onFlightRiskDisagree = () => {\n resetFlightRiskDialogStates();\n };\n\n return (\n <>\n \n \n \n );\n};\n","import { Box, Checkbox, FormControlLabel, Typography } from '@material-ui/core';\nimport { SwitchBaseProps } from '@material-ui/core/internal/SwitchBase';\nimport { ILongTermLeaveModelValue } from 'domain/store/employeeJourney/LongTermLeaveModel';\nimport { usePermissions } from 'hooks/usePermissions';\nimport { observer } from 'mobx-react-lite';\nimport moment from 'moment';\nimport React from 'react';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { UpdatedByInfoIcon } from 'views/routes/employeeJourney/components/employeeSidebar/components/updatedByInfoIcon/UpdatedByInfoIcon';\nimport styles from './LongTermLeaveFlagCheckbox.module.scss';\n\ninterface LongTermLeaveFlagCheckboxProps {\n longTermLeave: ILongTermLeaveModelValue | null;\n loading: boolean;\n onToggle?: () => void;\n disabled: boolean;\n}\n\nexport const LongTermLeaveFlagCheckbox: React.FC = observer(\n ({ longTermLeave, onToggle, loading, disabled }) => {\n const { canEdit, employees } = usePermissions();\n\n return (\n <>\n \n \n ) : (\n onToggle && onToggle()}\n readOnly={!canEdit(employees.longTermLeave)}\n disabled={onToggle === undefined}\n inputProps={\n {\n 'data-testid': 'long-term-leave-checkbox',\n } as SwitchBaseProps['inputProps'] & { 'data-testid': string }\n }\n />\n )\n }\n label={\n \n \n Long Term Leave\n \n \n }\n />\n {!loading && longTermLeave && (\n \n )}\n \n \n {!loading && longTermLeave?.isOnLongTermLeave && (\n \n \n Expected Return: {moment(longTermLeave!.expectedReturn).format('DD/MM/YYYY')}\n \n \n )}\n \n \n );\n }\n);\n","import { TextField } from '@material-ui/core';\nimport moment from 'moment';\nimport React, { ChangeEvent, useState } from 'react';\nimport styles from './DialogWithDatepicker.module.scss';\n\ninterface IDatepickerProps {\n value: string | null;\n onChange: (e: ChangeEvent) => void;\n isUpdating: boolean;\n}\n\nexport const LeaveDatepicker: React.FC = (props: IDatepickerProps) => {\n const [value, setValue] = useState(props.value);\n const onDateChange = (e: ChangeEvent) => {\n !props.isUpdating && setValue(e.target.value);\n props.onChange(e);\n };\n\n return (\n
\n onDateChange(e)}\n inputProps={{ min: moment().format('YYYY-MM-DD') }}\n />\n
\n );\n};\n","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n} from '@material-ui/core';\nimport React, { ChangeEvent } from 'react';\nimport { LeaveDatepicker } from './LeaveDatepicker';\n\ninterface IDialogWithDatepickerProps {\n isOpen: boolean;\n title: string;\n employeeDisplayName: string;\n currentExpectedReturn: string | null;\n onDateChange: (e: ChangeEvent) => void;\n onAgreeClick?: () => void;\n onDisagreeClick?: () => void;\n isDisabled: boolean;\n}\n\nexport const DialogWithDatepicker: React.FC = (\n props: IDialogWithDatepickerProps\n) => {\n const onAgreeClick = () => {\n props.onAgreeClick && props.onAgreeClick();\n };\n\n const onDisagreeClick = () => {\n props.onDisagreeClick && props.onDisagreeClick();\n };\n return (\n \n \n {props.title}\n \n \n <>\n {!props.currentExpectedReturn ? (\n <>\n \n You are editing {props.employeeDisplayName}'s Long Term Leave to\n \n
\n \n \n ) : (\n \n You are clearing {props.employeeDisplayName}'s Long Term Leave\n \n )}\n \n
\n \n \n {'Submit'}\n \n {props.onDisagreeClick && (\n \n {'Cancel'}\n \n )}\n \n \n );\n};\n","import { ILongTermLeaveModel } from 'domain/store/employeeJourney/LongTermLeaveModel';\nimport { useStore } from 'hooks/useStore';\nimport React, { ChangeEvent, useCallback, useEffect, useState } from 'react';\nimport { LongTermLeaveFlagCheckbox } from 'views/routes/employeeJourney/components/employeeSidebar/components/longTermLeaveFlagCheckbox/LongTermLeaveFlagCheckbox';\nimport { DialogWithDatepicker } from './DialogWithDatepicker';\n\nexport interface LongTermLeaveFlagProps {\n employeeId: string;\n employeeDisplayName: string;\n longTermLeaveModel: ILongTermLeaveModel | null;\n disabled: boolean;\n}\n\nexport const LongTermLeaveFlag: React.FC = ({\n longTermLeaveModel,\n employeeId,\n employeeDisplayName,\n disabled,\n}) => {\n const store = useStore();\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [isDisabled, setIsDisabled] = useState(true);\n const employeeExpectedReturn = longTermLeaveModel?.value?.expectedReturn ?? null;\n const [expectedReturn, setExpectedReturn] = useState(employeeExpectedReturn);\n const filterNull = useCallback(\n (source: string | null) => {\n return !source ? employeeExpectedReturn : source;\n },\n [employeeExpectedReturn]\n );\n const [newExpectedReturn, setNewExpectedReturn] = useState(\n filterNull(expectedReturn)\n );\n\n useEffect(() => {\n setExpectedReturn(employeeExpectedReturn);\n setNewExpectedReturn(filterNull(employeeExpectedReturn));\n }, [employeeExpectedReturn, filterNull]);\n\n const toggle = () => {\n setIsDialogOpen(true);\n };\n\n const resetDialogStates = () => {\n setNewExpectedReturn(filterNull(expectedReturn));\n setIsDialogOpen(false);\n setIsDisabled(true);\n };\n\n const handleChange = (e: ChangeEvent) => {\n setNewExpectedReturn(e.target.value as string);\n setIsDisabled(false);\n };\n\n const onAgreeClick = () => {\n if (longTermLeaveModel) {\n setIsLoading(true);\n longTermLeaveModel\n .toggleLongTermLeaveStatus(\n employeeId,\n newExpectedReturn === expectedReturn ? null : newExpectedReturn\n )\n .catch(() => {\n store.notifications.addError('Expected return must not be in the past');\n })\n .finally(() => setIsLoading(false));\n }\n\n resetDialogStates();\n };\n\n const onDisagreeClick = () => {\n resetDialogStates();\n };\n\n return (\n <>\n \n \n \n );\n};\n","import React, { useState } from 'react';\nimport { Select, MenuItem } from '@material-ui/core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faChevronCircleDown } from '@fortawesome/free-solid-svg-icons';\nimport styles from 'views/components/primaryFlagDropdown/PrimaryFlagDropdown.module.scss';\nimport { siteDefault } from 'views/themes';\n\nexport interface TimeframeDropdownProps {\n value: number;\n onSelectChange: (event: React.ChangeEvent<{ value: unknown }>) => void;\n timeframes: number[];\n isUpdatingTimeframe: boolean;\n}\n\nexport const TimeframeDropdown: React.FunctionComponent = (props) => {\n const [value, setValue] = useState(props.value);\n const onSelectChange = (\n event: React.ChangeEvent<{\n value: unknown;\n }>\n ) => {\n !props.isUpdatingTimeframe && setValue(event.target.value as number);\n props.onSelectChange(event);\n };\n return (\n onSelectChange(event)}\n style={siteDefault}\n IconComponent={(values) => {\n const propsWithDropdownIcon = {\n ...values,\n className: `${values.className} ${styles.dropdownIcon} `,\n };\n return (\n
\n \n
\n );\n }}\n variant=\"outlined\"\n className={styles.selectInput}>\n {props.timeframes.map((key) => {\n return (\n \n {key > 12 ? '12+' : key} months\n \n );\n })}\n \n );\n};\n","import React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Checkbox, FormControlLabel, Box, Typography } from '@material-ui/core';\nimport { SwitchBaseProps } from '@material-ui/core/internal/SwitchBase';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { UpdatedByInfoIcon } from '../updatedByInfoIcon/UpdatedByInfoIcon';\nimport styles from './RoleChangePathway.module.scss';\nimport { TimeframeDropdown } from '../roleChangePathwayTimeframe/TimeframeDropdown';\nimport { IRoleChangePathwayModelValue } from 'domain/store/employeeJourney/RoleChangePathwayModel';\nimport { usePermissions } from 'hooks/usePermissions';\n\ninterface RoleChangePathwayControlProps {\n roleChangePathwayModelValue: IRoleChangePathwayModelValue | null;\n loading: boolean;\n onToggle?: () => void;\n timeframes: number[];\n onSelectChangeOnSidebar: (event: React.ChangeEvent<{ value: unknown }>) => void;\n disabled: boolean;\n}\n\nexport const RoleChangePathwayControl: React.FC = observer(\n ({\n roleChangePathwayModelValue,\n onToggle,\n loading,\n timeframes,\n onSelectChangeOnSidebar,\n disabled,\n }) => {\n const {\n canEdit,\n employees: { roleChangePathway },\n } = usePermissions();\n const loadingIndicator = (\n \n );\n\n return (\n <>\n \n onToggle && onToggle()}\n readOnly={!canEdit(roleChangePathway)}\n disabled={onToggle === undefined}\n inputProps={\n {\n 'data-testid': 'role-change-pathway-checkbox',\n } as SwitchBaseProps['inputProps'] & { 'data-testid': string }\n }\n />\n )\n }\n label={\n \n \n Role Change Pathway\n \n \n }\n />\n {!loading && roleChangePathwayModelValue && (\n \n )}\n \n {loading\n ? loadingIndicator\n : roleChangePathwayModelValue?.hasRoleChangePathway && (\n \n )}\n \n );\n }\n);\n","import React from 'react';\nimport {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n DialogContentText,\n} from '@material-ui/core';\nimport { TimeframeDropdown } from '../roleChangePathwayTimeframe/TimeframeDropdown';\n\nexport interface DialogWithDropdownProps {\n isOpen: boolean;\n title: string;\n agreeButtonText?: string;\n disagreeButtonText?: string;\n timeframes: number[];\n employeeDisplayName: string;\n oldNewTimeframe: [number, number];\n onSelectChange: (event: React.ChangeEvent<{ value: unknown }>) => void;\n onAgreeClick?: () => void;\n onDisagreeClick?: () => void;\n}\n\nexport const DialogWithDropdown: React.FunctionComponent = (props) => {\n const [oldValue, newValue] = props.oldNewTimeframe;\n const onAgreeClick = () => {\n props.onAgreeClick && props.onAgreeClick();\n };\n\n const onDisagreeClick = () => {\n props.onDisagreeClick && props.onDisagreeClick();\n };\n\n const filterMoreThanOneYear = (numberOfMonths: number) => {\n return numberOfMonths > 12 ? '12+' : numberOfMonths;\n };\n\n const bold: React.CSSProperties = { fontWeight: 'bold' };\n\n return (\n \n \n {props.title}\n \n \n <>\n {oldValue === 0 ? (\n <>\n \n You are editing {props.employeeDisplayName}'s Role Change Pathway to\n \n
\n \n \n ) : (\n \n {newValue === oldValue ? (\n <>You are clearing {props.employeeDisplayName}'s Role Change Pathway\n ) : (\n <>\n You are editing {props.employeeDisplayName}'s Role Change Pathway from{' '}\n {filterMoreThanOneYear(oldValue)} months to{' '}\n {filterMoreThanOneYear(newValue)} months\n \n )}\n \n )}\n \n
\n \n \n {props.agreeButtonText || 'Submit'}\n \n {props.onDisagreeClick && (\n \n {props.disagreeButtonText || 'Cancel'}\n \n )}\n \n \n );\n};\n","import React, { useState, useEffect } from 'react';\nimport { RoleChangePathwayControl } from 'views/routes/employeeJourney/components/employeeSidebar/components/roleChangePathway/RoleChangePathwayControl';\nimport { DialogWithDropdown } from './DialogWithDropdown';\nimport { IRoleChangePathwayModel } from 'domain/store/employeeJourney/RoleChangePathwayModel';\n\nexport interface RoleChangePathwayFlagProps {\n employeeId: string;\n employeeDisplayName: string;\n roleChangePathwayModel: IRoleChangePathwayModel | null;\n disabled: boolean;\n}\n\nexport const RoleChangePathwayFlag: React.FunctionComponent = ({\n roleChangePathwayModel,\n employeeId,\n employeeDisplayName,\n disabled,\n}) => {\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const timeframes = [6, 12, 18];\n const employeeTimeframe = roleChangePathwayModel?.value?.timeframe ?? 0;\n const [currentTimeframe, setCurrentTimeframe] = useState(employeeTimeframe);\n const filterZero = (source: number) => {\n return source === 0 ? timeframes[0] : source;\n };\n const [newTimeframe, setNewNumberOfMonth] = useState(filterZero(currentTimeframe));\n\n useEffect(() => {\n setCurrentTimeframe(employeeTimeframe);\n setNewNumberOfMonth(filterZero(employeeTimeframe));\n }, [employeeTimeframe]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const toggle = () => {\n setIsDialogOpen(true);\n };\n\n const resetDialogStates = () => {\n setNewNumberOfMonth(filterZero(currentTimeframe));\n setIsDialogOpen(false);\n };\n\n const onSelectChangeInDialog = (event: React.ChangeEvent<{ value: unknown }>) => {\n setNewNumberOfMonth(event.target.value as number);\n };\n\n const onSelectChangeOnSidebar = (event: React.ChangeEvent<{ value: unknown }>) => {\n setNewNumberOfMonth(event.target.value as number);\n setIsDialogOpen(true);\n };\n\n const onAgreeClick = () => {\n setIsLoading(true);\n\n roleChangePathwayModel\n ?.toggleRoleChangePathwayStatus(\n employeeId,\n newTimeframe === currentTimeframe ? 0 : newTimeframe\n )\n .finally(() => setIsLoading(false));\n\n resetDialogStates();\n };\n\n const onDisagreeClick = () => {\n resetDialogStates();\n };\n\n return (\n <>\n \n \n \n );\n};\n","import { Typography, Box } from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport React from 'react';\n\ninterface ISidebarContentProps {\n heading: string;\n details?: string | undefined;\n hasChildren?: boolean;\n isLoaded?: boolean;\n}\n\nexport const SidebarContent: React.FC = (props: ISidebarContentProps) => {\n return (\n <>\n \n \n {props.heading}\n \n \n {props.hasChildren && (\n \n \n {props.isLoaded ? props.details : }\n \n \n )}\n \n );\n};\n","import React from 'react';\nimport { Box, Checkbox, FormControlLabel, Tooltip } from '@material-ui/core';\nimport { InfoOutlined } from '@material-ui/icons';\nimport { Probation as EmployeeProbation } from 'domain/store/employeeJourney/EmployeeModel';\nimport styles from './Probation.module.scss';\nimport { SwitchBaseProps } from '@material-ui/core/internal/SwitchBase';\n\ninterface ProbationProps {\n probation: EmployeeProbation;\n overrideDisabledStyle?: boolean;\n disabled: boolean;\n}\n\nexport const Probation: React.FC = ({\n probation,\n overrideDisabledStyle,\n disabled,\n}) => {\n return (\n \n \n }\n label={'Probation'}\n />\n End of probation on {probation.endDate}}>\n \n \n \n );\n};\n","import {\n flow as origFlow,\n getEnv as origGetEnv,\n getRoot as origGetRoot,\n IStateTreeNode,\n types,\n} from 'mobx-state-tree';\nimport ky from 'ky';\nimport { FlowReturn } from 'mobx-state-tree/dist/core/flow';\n\nimport { IAuthenticationProvider } from 'auth/AuthenticationTypes';\nimport { IRootStoreEnvironment, IRootStoreModel } from './RootStoreModel';\n\nexport function flow, R, Args extends unknown[]>(\n generator: (...args: Args) => Generator ? Y : never>\n): (...args: Args) => Promise> {\n return origFlow(generator);\n}\n\nexport function getEnv(model: IStateTreeNode): IRootStoreEnvironment {\n return origGetEnv(model);\n}\n\nexport function getRoot(model: IStateTreeNode): IRootStoreModel {\n return origGetRoot(model);\n}\n\nexport function getDefaultAjaxInstance(auth: IAuthenticationProvider): typeof ky {\n return ky.create({\n timeout: false,\n retry: { limit: 1 },\n prefixUrl: `${window.location.origin}/api`,\n hooks: {\n beforeRequest: [\n async (request) => {\n if (await auth.getIsSignedIn()) {\n request.headers.append('Authorization', `Bearer ${await auth.getApiAccessToken()}`);\n }\n },\n ],\n },\n });\n}\n\nexport type ModelLoadingState = 'loading' | 'done' | 'error' | 'unauthorized';\n\nexport const LoadingStateModel = types.optional(\n types.enumeration(['loading', 'done', 'error', 'unauthorized']),\n 'loading'\n);\n","import { flow, getEnv } from 'domain/store/util';\nimport { Instance, types } from 'mobx-state-tree';\nimport { api } from 'shared/api/interfaces';\nimport { IEmployeeStatusDto } from '../dataTranferObjects/IEmployeeStatusDto';\n\nexport const EmployeeStatusModifier = types.model('EmployeeStatusModifier', {\n idpId: types.identifier,\n displayName: types.string,\n});\n\nconst toDictionary: { [id: number]: string } = {};\n\ntoDictionary[0] = 'No concern';\ntoDictionary[1] = 'Few things to keep an eye on';\ntoDictionary[2] = 'Needs close attention';\n\nexport const EmployeeStatusLabels = toDictionary;\n\nexport interface IEmployeeStatusModel extends Instance {}\n\nexport interface IEmployeeStatusWithMobx extends IEmployeeStatusDto {\n modifiedBy: Instance;\n}\n\nexport interface IEmployeeStatusModelValue extends Instance {}\n\nexport const EmployeeStatusModelValue = types.model('EmployeeStatusModelValue', {\n status: types.number,\n modifiedBy: EmployeeStatusModifier,\n modifiedDateTime: types.string,\n});\n\nexport const EmployeeStatusModel = types\n .model('EmployeeStatusModel', {\n value: types.maybeNull(EmployeeStatusModelValue),\n })\n .actions((self) => {\n const updateEmployeeStatus = function* (\n statusData: IUpdateStatusRequest\n ): Generator<\n Promise,\n IEmployeeStatusWithMobx,\n IEmployeeStatusWithMobx\n > {\n const { ajax } = getEnv(self);\n\n const result = yield ajax\n .post('employee/status', {\n json: statusData,\n })\n .json();\n\n self.value = result;\n return result;\n };\n\n return {\n updateEmployeeStatus: flow(updateEmployeeStatus),\n };\n });\n\nexport interface IEmployeeStatus extends Instance {}\n\nexport interface IEmployeeStatuses extends Instance {}\n\nexport interface IUpdateStatusRequest {\n employeeIdpId: string;\n status: number;\n}\n","import { Typography } from '@material-ui/core';\nimport React from 'react';\nimport styles from './StatusIcon.module.scss';\n\ninterface IStatusIconProps {\n color: string | number;\n status?: string;\n}\n\nexport const StatusIcon: React.FC = (props: IStatusIconProps) => {\n return (\n
\n
\n {props.status && (\n \n {props.status}\n \n )}\n
\n );\n};\n","import { faEdit } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Box, IconButton, Typography } from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport {\n EmployeeStatusLabels,\n IEmployeeStatusModelValue,\n} from 'domain/store/employeeJourney/EmployeeStatusModel';\nimport { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { UpdatedByInfoIcon } from 'views/routes/employeeJourney/components/employeeSidebar/components/updatedByInfoIcon/UpdatedByInfoIcon';\nimport styles from './EmployeeStatus.module.scss';\nimport { StatusIcon } from './StatusIcon/StatusIcon';\n\nexport interface IEmployeeStatusProps {\n employeeStatusModelValue: IEmployeeStatusModelValue | null;\n loading: boolean;\n onToggle?: () => void;\n disabled: boolean;\n}\n\nexport const EmployeeStatus = observer((props: IEmployeeStatusProps) => {\n return (\n \n \n \n Status\n \n props.onToggle && props.onToggle()}\n data-testid=\"edit-status\"\n className={styles.editButton}\n disabled={props.disabled}>\n \n \n {!props.loading && props.employeeStatusModelValue && (\n <>\n \n \n )}\n \n \n {!props.loading ? (\n
\n \n
\n ) : (\n \n )}\n
\n \n );\n});\n","import { FormControl, FormControlLabel, Radio, RadioGroup } from '@material-ui/core';\nimport { IEmployeeJourney } from 'domain/store/employeeJourney/EmployeeJourneyModel';\nimport {\n IEmployeeStatusModel,\n IUpdateStatusRequest,\n} from 'domain/store/employeeJourney/EmployeeStatusModel';\nimport React, { useEffect, useState } from 'react';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\nimport { EmployeeStatus } from 'views/components/EmployeeStatus/EmployeeStatus';\nexport interface IStatusFlagProps {\n employeeId: string;\n employeeDisplayName: string;\n employeeStatusModel: IEmployeeStatusModel | null;\n journey: IEmployeeJourney;\n disabled: boolean;\n}\n\nexport const StatusFlag: React.FC = ({\n employeeStatusModel,\n employeeId,\n employeeDisplayName,\n journey,\n disabled,\n}) => {\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [status, setStatus] = useState('0');\n\n const { employee } = journey;\n\n const employeeStatus = employeeStatusModel?.value?.status ?? 0;\n\n useEffect(() => {\n if (!isLoading) {\n setStatus(employeeStatus.toString());\n }\n }, [isLoading, employeeStatus]);\n\n const toggleStatus = () => {\n setIsDialogOpen(true);\n };\n\n const resetStatusDialogStates = () => {\n setIsDialogOpen(false);\n };\n\n const handleChange = (event: React.ChangeEvent) => {\n setStatus(event.target.value);\n };\n\n const onStatusAgree = () => {\n const statusRequest: IUpdateStatusRequest = {\n employeeIdpId: employeeId,\n status: parseInt(status),\n };\n\n setIsLoading(true);\n employee!.flags.status?.updateEmployeeStatus(statusRequest).finally(() => setIsLoading(false));\n resetStatusDialogStates();\n };\n\n const onStatusDisagree = () => {\n resetStatusDialogStates();\n };\n\n return (\n <>\n \n \n \n \n } label=\"No concern\" />\n }\n label=\"Few things to keep an eye on\"\n />\n } label=\"Needs close attention\" />\n \n \n \n }\n onAgreeClick={onStatusAgree}\n agreeButtonText={'Save'}\n agreeDisabled={parseInt(status) === employeeStatusModel?.value?.status}\n onDisagreeClick={onStatusDisagree}\n disagreeButtonText={'Cancel'}\n />\n \n );\n};\n","import { Box, Link, Typography } from '@material-ui/core';\nimport LinkIcon from '@material-ui/icons/Link';\nimport { Skeleton } from '@material-ui/lab';\nimport { useEmployeeJourney } from 'hooks/useEmployeeJourney';\nimport { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { EmployeeSidebarDivider } from 'views/components/EmployeeSidebarDivider/EmployeeSidebarDivider';\nimport { ArchivedChip } from 'views/components/archivedChip/ArchivedChip';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport { PrimaryFlagDropdown } from 'views/components/primaryFlagDropdown/PrimaryFlagDropdown';\nimport { FlightRiskFlag } from 'views/routes/employeeJourney/components/employeeSidebar/components/flightRiskFlag/FlightRiskFlag';\nimport { LongTermLeaveFlag } from 'views/routes/employeeJourney/components/employeeSidebar/components/longTermLeaveFlag/LongTermLeaveFlag';\nimport { RoleChangePathwayFlag } from 'views/routes/employeeJourney/components/employeeSidebar/components/roleChangePathwayFlag/RoleChangePathwayFlag';\nimport styles from './EmployeeSidebar.module.scss';\nimport { SidebarContent } from './components/SidebarContent/SidebarContent';\nimport { Probation } from './components/probation/Probation';\nimport { StatusFlag } from './components/status/StatusFlag';\n\nexport const EmployeeSidebar: React.FC = observer(() => {\n const journey = useEmployeeJourney();\n const { employee, isLoaded } = journey;\n\n return (\n \n \n
\n \n
\n
\n \n \n {isLoaded ? employee?.displayName : }\n \n \n {employee?.isFormerEmployee && }\n \n \n {isLoaded ? `${employee?.position}` : }\n \n \n {/* Capability (Department) data is no longer available */}\n {/* \n \n {isLoaded ? `${employee?.capability}` : }\n \n */}\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n\n {employee?.emailAddress && (\n <>\n \n \n \n \n PurpleMe\n \n \n \n \n \n )}\n\n {(!employee || employee!.flags.status) && (\n <>\n \n \n {!isLoaded ? (\n \n ) : (\n \n )}\n \n \n )}\n\n {employee &&\n (employee!.flags.flightRisk ||\n employee!.flags.longTermLeave ||\n employee!.flags.primaryFlag ||\n employee!.flags.roleChangePathway) && (\n <>\n \n \n \n {employee!.flags.flightRisk && (\n \n )}\n {employee.probation.isInProbation && (\n \n )}\n {employee!.flags.roleChangePathway && (\n \n )}\n {employee!.flags.longTermLeave && (\n \n )}\n \n \n )}\n\n {(!employee || employee!.flags.primaryFlag) && (\n <>\n \n \n \n \n \n \n )}\n\n {/* No leave or PD data available */}\n {/* {employee && employee.leaveDetails && (\n <>\n \n \n \n \n Balances\n \n \n \n \n \n \n \n \n
\n \n )} */}\n \n );\n});\n","import React from 'react';\nimport styles from './SensitiveAttribute.module.scss';\nimport { Typography, Grid, Box } from '@material-ui/core';\nimport Visibility from '@material-ui/icons/Visibility';\nimport VisibilityOff from '@material-ui/icons/VisibilityOff';\n\ninterface ISensitiveAttributeProps {\n isSensitive: boolean;\n}\n\nexport const SensitiveAttribute: React.FC = ({ isSensitive }) => {\n return (\n \n \n \n {isSensitive ? (\n \n ) : (\n \n )}\n {isSensitive ? 'Sensitive' : 'Non-Sensitive'}\n \n \n \n );\n};\n","import React from 'react';\nimport styles from './FaceToFaceDiscussionAttribute.module.scss';\nimport { Typography, Grid, Box } from '@material-ui/core';\nimport ForumIcon from '@material-ui/icons/Forum';\n\ninterface IFaceToFaceDiscussionAttributeProps {\n isFaceToFaceDiscussion: boolean;\n}\n\nexport const FaceToFaceDiscussionAttribute: React.FC = ({\n isFaceToFaceDiscussion,\n}) => {\n return (\n \n \n \n \n \n {isFaceToFaceDiscussion\n ? 'Direct conversation with the employee'\n : 'Feedback/observations about the employee'}\n \n \n \n \n );\n};\n","import React from 'react';\nimport styles from 'views/components/tag/Tag.module.scss';\nimport { Chip } from '@material-ui/core';\n\nexport interface TagProps {\n name: string;\n isSensitive: boolean;\n reviewRequired: boolean;\n}\n\nexport const Tag: React.FC = ({ isSensitive, name }) => {\n return (\n \n );\n};\n","import { Chip } from '@material-ui/core';\nimport { INote, NoteSensitivity, NoteStatus } from 'domain/store/NoteModel';\nimport React from 'react';\nimport styles from './NoteCard.module.scss';\n\nconst NOTE_STATUS_TO_LABEL: Record = {\n published: '',\n pending: 'Requires Review',\n draft: '',\n sensitive: 'Sensitive',\n 'non-sensitive': '',\n none: '',\n};\nexport const NoteStatusChip: React.FC<{ note: INote }> = ({ note }) => {\n const key = note.status === 'published' ? note.sensitivity : note.status;\n const label = NOTE_STATUS_TO_LABEL[key];\n return label ? (\n \n ) : null;\n};\n","import { faEdit, faTrash } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, Chip, IconButton, Typography } from '@material-ui/core';\nimport { INote } from 'domain/store/NoteModel';\nimport React, { useState } from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport { SensitiveAttribute } from 'views/components/sensitiveAttribute/SensitiveAttribute';\nimport { FaceToFaceDiscussionAttribute } from 'views/components/faceToFaceDiscussionAttribute/FaceToFaceDiscussionAttribute';\nimport { Tag } from 'views/components/tag/Tag';\nimport styles from 'views/routes/employeeJourney/components/employeeTimeline/components/noteTimelineItem/NoteTimelineItem.module.scss';\nimport 'github-markdown-css';\nimport cn from 'classnames';\nimport { NoteStatusChip } from 'views/routes/myNotes/components/listNotes/components/NoteStatusChip';\n\ninterface NoteTimelineItemProps {\n note: INote;\n editable?: boolean;\n deletable?: boolean;\n onEdit: (noteId: number) => void;\n onDelete: (noteId: number) => void;\n editDisabled: boolean;\n}\n\nconst parseContent = (allContent: string) => {\n const maxCharactersToShowInitially = 500;\n const showMoreButtonRequired = allContent.length > maxCharactersToShowInitially;\n const reducedContent = allContent.substring(0, maxCharactersToShowInitially) + '...';\n\n return { allContent, reducedContent, showMoreButtonRequired };\n};\n\nexport const NoteTimelineItem: React.FC = ({\n note,\n editable,\n deletable,\n onEdit,\n onDelete,\n editDisabled,\n}) => {\n const [showAll, setShowAll] = useState(false);\n const date = note.eventDateMoment!.local();\n\n const { allContent, reducedContent, showMoreButtonRequired } = parseContent(note.content);\n const toggleShowMore = () => setShowAll(!showAll);\n\n return (\n
  • \n
    \n
    {date.format('dddd')}
    \n
    {date.format('DD MMMM')}
    \n
    \n
    \n
    \n
    \n \n {note.subject}\n {note.isPeopleLeaderConversation === true && (\n \n )}\n {note.status === 'pending' && (\n
    \n \n
    \n )}\n
    \n
    \n
    \n {editable && (\n onEdit(note.noteId)}\n data-testid=\"edit-note\"\n className={styles.editButton}\n disabled={editDisabled}>\n \n \n )}\n {deletable && (\n onDelete(note.noteId)}\n data-testid=\"delete-note\"\n className={styles.deleteButton}>\n \n \n )}\n
    \n \n {note.sensitivity === 'sensitive' && }\n {note.sensitivity === 'non-sensitive' && }\n
    \n
    \n
    \n {note.tags.map((tag, index) => (\n \n ))}\n
    \n
    \n \n {showMoreButtonRequired && !showAll &&
    }\n
    \n
    Author: {note.author.displayName}
    \n {showMoreButtonRequired && (\n
    \n \n
    \n )}\n
    \n
    \n
  • \n );\n};\n","import React, { useEffect } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { Autocomplete } from '@material-ui/lab';\nimport { Chip, CircularProgress, TextField } from '@material-ui/core';\nimport { useTags } from 'hooks/useTags';\nimport { ITag } from 'domain/store/TagsModel';\nimport styles from './TagDropdown.module.scss';\nimport cn from 'classnames';\nimport { Lock } from '@material-ui/icons';\n\nexport interface Props {\n defaultValue?: ITag[];\n onChange?: (tags: ITag[]) => void;\n onBlur?: () => void;\n className?: string;\n textBoxClassName?: string;\n}\n\nexport const TagDropdown: React.FC = observer((props: Props) => {\n const tagStore = useTags();\n const [options, setOptions] = React.useState([]);\n const [loading] = React.useState(false);\n const [values, setValues] = React.useState([]);\n\n useEffect(() => {\n const tags = tagStore.all;\n setOptions(tags);\n }, [setOptions, tagStore.state, tagStore.all]);\n\n useEffect(() => {\n if (props.defaultValue) {\n setValues(props.defaultValue);\n }\n }, [props.defaultValue]);\n\n const handleDelete = (chipToDelete: ITag) => () => {\n if (props.onChange) {\n props.onChange(values?.filter((chip) => chip.tagId !== chipToDelete.tagId) || []);\n }\n setValues(values?.filter((chip) => chip.tagId !== chipToDelete.tagId) || undefined);\n };\n\n const handleChange = (values: ITag[] | null) => {\n if (props.onChange) {\n props.onChange(values || []);\n }\n setValues(values || undefined);\n };\n\n return (\n option.name}\n className={props.className}\n options={options}\n autoComplete\n filterSelectedOptions\n loading={loading}\n multiple\n value={values}\n getOptionSelected={(option: ITag, value: ITag) => option.tagId === value.tagId}\n onChange={(_, values) => {\n handleChange(values);\n }}\n onBlur={() => {\n props.onBlur && props.onBlur();\n }}\n renderTags={(params) =>\n params.map((p, i) => (\n \n ))\n }\n renderInput={(params) => (\n 0 ? '' : 'Select Tag(s)'}\n className={props.textBoxClassName}\n variant=\"outlined\"\n fullWidth\n InputLabelProps={{ shrink: false }}\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n \n {loading ? : null}\n {params.InputProps.endAdornment}\n \n ),\n }}\n />\n )}\n renderOption={(option: ITag) => {\n return (\n
    \n {option.name}\n {(option.isSensitive || option.reviewRequired) && }\n
    \n );\n }}\n />\n );\n});\n","import { ITags } from 'domain/store/TagsModel';\nimport { useStore } from 'hooks/useStore';\n\nexport function useTags(): ITags {\n const { tags } = useStore();\n\n return tags;\n}\n","import React from 'react';\nimport { IconButton } from '@material-ui/core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faArrowAltCircleUp } from '@fortawesome/free-regular-svg-icons';\nimport styles from './BackToTop.module.scss';\n\nexport interface BackToTopButtonProps {\n scrollToTop: () => void;\n edge?: 'start' | 'end';\n}\n\nexport const BackToTopButton: React.FC = ({ scrollToTop, edge }) => {\n return (\n \n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { asapScheduler, fromEvent, merge } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\n\ninterface IBackToTopButtonResult {\n scrollableContainerRef: React.Ref;\n scrollToTopOfTimeline: () => void;\n showBackToTopButton: boolean;\n}\n\nexport function useBackToTopButton(): IBackToTopButtonResult {\n const scrollableContainerRef = React.createRef();\n const [showBackToTopButton, setShowBackToTopButton] = useState(false);\n const scrollToTopOfTimeline = () =>\n scrollableContainerRef.current?.scrollTo({ top: 0, behavior: 'smooth' });\n\n useEffect(() => {\n const checkIfBackToTopButtonIsNecessary = () => {\n const isNecessary =\n !!scrollableContainerRef.current &&\n scrollableContainerRef.current.scrollTop > 100 &&\n scrollableContainerRef.current.scrollHeight > scrollableContainerRef.current.clientHeight;\n\n if (showBackToTopButton !== isNecessary) {\n setShowBackToTopButton(isNecessary);\n }\n };\n\n const observableEvents = [fromEvent(window, 'resize'), fromEvent(window, 'orientationchange')];\n\n if (scrollableContainerRef.current) {\n observableEvents.push(fromEvent(scrollableContainerRef.current, 'scroll'));\n }\n\n const scrollEventSubscription = merge(...observableEvents)\n .pipe(throttleTime(250, asapScheduler, { leading: true, trailing: true }))\n .subscribe(checkIfBackToTopButtonIsNecessary);\n\n checkIfBackToTopButtonIsNecessary();\n return () => {\n scrollEventSubscription.unsubscribe();\n };\n }, [showBackToTopButton, scrollableContainerRef]);\n\n return { scrollableContainerRef, scrollToTopOfTimeline, showBackToTopButton };\n}\n","import React, { useState } from 'react';\nimport styles from 'views/routes/employeeJourney/components/employeeTimeline/EmployeeTimeline.module.scss';\nimport cn from 'classnames';\nimport { NoteTimelineItem } from 'views/routes/employeeJourney/components/employeeTimeline/components/noteTimelineItem/NoteTimelineItem';\nimport { useEmployeeJourney } from 'hooks/useEmployeeJourney';\nimport { observer } from 'mobx-react-lite';\nimport moment, { Moment, MomentInput } from 'moment';\nimport { INote } from 'domain/store/NoteModel';\nimport { useUser } from 'hooks/useUser';\nimport { useNavigate } from 'hooks/useNavigate';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { DateRange, DateRangePicker } from '@material-ui/pickers';\nimport { Button, TextField } from '@material-ui/core';\nimport { TagDropdown } from 'views/components/tagDropdown/TagDropdown';\nimport { BackToTopButton } from './components/backToTopButton/BackToTopButton';\nimport { useBackToTopButton } from 'hooks/useBackToTopButton';\nimport { CREATE_NOTE_ROUTE_PATH, EDIT_NOTE_ROUTE_PATH } from 'views/routes/Routes';\nimport { ITag } from 'domain/store/TagsModel';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faFile } from '@fortawesome/free-regular-svg-icons';\nimport { DateRangeValidationError } from '@material-ui/pickers/_helpers/date-utils';\nimport { useStore } from 'hooks/useStore';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\n\ninterface EmployeeTimelineProps {\n idpId?: string;\n className?: string;\n}\n\ninterface NotesProps {\n notes: { [key: string]: INote[] };\n editNoteHandler: (noteId: number) => void;\n deleteNoteHandler: (noteId: number) => void;\n editDisabled: boolean;\n}\n\nconst Notes: React.FC = ({\n notes,\n editNoteHandler,\n deleteNoteHandler,\n editDisabled,\n}) => {\n const currentYear = moment().format('YYYY');\n const noteEntries = Object.entries(notes);\n\n return (\n
    \n {noteEntries.map(([key, monthNotes]) => {\n const monthTitle =\n moment(key).format('YYYY') === currentYear\n ? moment(key).format('MMMM')\n : moment(key).format('MMMM YYYY');\n\n return (\n
    \n

    {monthTitle}

    \n
      \n {monthNotes?.map((note, index) => {\n return (\n \n );\n })}\n
    \n
    \n );\n })}\n
    \n );\n};\n\nexport const EmployeeTimeline: React.FC = observer(\n (props: EmployeeTimelineProps) => {\n const { notifications } = useStore();\n const user = useUser();\n const { loadNotes } = useEmployeeJourney();\n const navigate = useNavigate();\n const { isLoaded, notes, employee } = useEmployeeJourney();\n const [selectedDateRange, setDateRange] = useState>([null, null]);\n const [selectedTags, setSelectedTags] = useState([]);\n const [\n dateRangeValidationError,\n setDateRangeValidationError,\n ] = React.useState([null, null]);\n const {\n showBackToTopButton,\n scrollToTopOfTimeline,\n scrollableContainerRef,\n } = useBackToTopButton();\n\n const [showAlertDialog, setShowAlertDialog] = useState(false);\n const [noteIdToDelete, setNoteIdToDelete] = useState(null);\n\n const noteIsIncludedByFilter = (note: INote) => {\n const noteDate = note.eventDateMoment;\n const [fromDate, toDate] = selectedDateRange;\n\n const isSameOrAfterFromDate = !fromDate || noteDate!.isSameOrAfter(fromDate);\n const isBeforeToDate = !toDate || noteDate!.isBefore(toDate.clone().add(1, 'day'));\n\n const noteTags = note.tags.map((t) => t.tagId);\n const noteTagsAreSelected =\n selectedTags.length === 0 ||\n noteTags.filter((tagId) => selectedTags.map((t) => t.tagId).indexOf(tagId) >= 0).length > 0;\n\n return isSameOrAfterFromDate && isBeforeToDate && noteTagsAreSelected;\n };\n\n const groupedNotes =\n notes?.filter(noteIsIncludedByFilter).reduce((acc: NotesProps['notes'], cur: INote) => {\n const key = cur.eventDateMoment!.format('YYYY-MM');\n if (Object.prototype.hasOwnProperty.call(acc, key)) {\n acc[key].push(cur);\n } else {\n acc[key] = [cur];\n }\n return acc;\n }, {}) || {};\n\n const isFiltered = () => {\n const [fromDate, toDate] = selectedDateRange;\n return fromDate || toDate || selectedTags.length > 0;\n };\n\n const storeNoteToDelete = (noteId: number) => {\n setNoteIdToDelete(noteId);\n setShowAlertDialog(true);\n };\n\n const resetNoteDeleteStates = () => {\n setNoteIdToDelete(null);\n setShowAlertDialog(false);\n };\n\n const onAgreeClickDeleteNote = () => {\n user\n .deleteNote(noteIdToDelete as number)\n .then(() => loadNotes())\n .then(() => {\n notifications.addSuccess('The note was deleted successfully');\n })\n .catch((e) => {\n if (e?.response?.status === 409) {\n notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (e?.response?.status === 403) {\n notifications.addError('Not authorised to save changes.');\n } else {\n notifications.addError('An error occurred whilst deleting the note, please try again');\n }\n });\n resetNoteDeleteStates();\n };\n\n const onDisagreeClick = () => resetNoteDeleteStates();\n\n const editNote = (noteId: number) => {\n navigate(`${EDIT_NOTE_ROUTE_PATH}/${noteId}`);\n };\n\n return (\n \n
    \n
    \n (\n
    \n \n \n
    \n )}\n value={selectedDateRange}\n onChange={setDateRange}\n onError={(reason, value) => {\n // Fix for known bug https://github.com/mui-org/material-ui-pickers/issues/1801\n if (reason[0] === 'invalidRange' && value[0] && value[1]) {\n if (moment(value[0] as MomentInput).isSame(moment(value[1] as MomentInput))) {\n setDateRangeValidationError([null, null]);\n return;\n }\n }\n setDateRangeValidationError(reason);\n }}\n />\n\n setSelectedTags(tags)}\n defaultValue={selectedTags}\n />\n {isLoaded && (\n
    \n \n navigate(CREATE_NOTE_ROUTE_PATH, { employeeId: props.idpId || '' })\n }\n disabled={employee?.isFormerEmployee}\n data-testid=\"add-note-button\">\n Add A Note\n \n
    \n )}\n
    \n\n {isLoaded ? (\n groupedNotes && Object.entries(groupedNotes).length > 0 ? (\n
    \n \n \n
    \n ) : (\n
    \n \n

    No notes were found

    \n {isFiltered() && (\n

    \n You could try adjusting your search filters to help find what you're\n looking for.\n

    \n )}\n
    \n )\n ) : (\n \n )}\n\n {showBackToTopButton && (\n
    \n \n
    \n )}\n
    \n
    \n );\n }\n);\n","import { Chip } from '@material-ui/core';\nimport { RoleChangeStatus } from 'domain/store/employeeJourney/RoleChangeModel';\nimport React from 'react';\nimport styles from './RoleChangeStatusChip.module.scss';\n\ninterface IRoleChangeStatusChipProps {\n status: RoleChangeStatus;\n}\n\nexport const RoleChangeStatusChip: React.FC = ({ status }) => {\n return (\n \n );\n};\n","import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Grid } from '@material-ui/core';\nimport cn from 'classnames';\nimport React from 'react';\nimport styles from './NoRoleChangeSubmission.module.scss';\n\nexport const NoRoleChangeSubmissions: React.FC = () => {\n return (\n \n \n \n \n \n There is no role change submission for this employee\n \n \n );\n};\n","import { IRoleChangeModel } from 'domain/store/employeeJourney/RoleChangeModel';\nimport { useStore } from 'hooks/useStore';\n\nexport function useRoleChange(): IRoleChangeModel {\n const { roleChange } = useStore();\n\n return roleChange;\n}\n","export enum Positions {\n LeadConsultant = 'Lead Consultant',\n SeniorDeveloper = 'Senior Developer',\n TechnicalLead = 'Technical Lead',\n ManagingConsultant = 'Managing Consultant',\n Consultant = 'Consultant',\n SquadLeader = 'Squad Leader',\n PrincipalConsultant = 'Principal Consultant',\n Associate = 'Associate',\n AssociateSquadLeader = 'Associate Squad Leader',\n}\n","import { flow, getEnv, LoadingStateModel } from 'domain/store/util';\nimport { Instance, types } from 'mobx-state-tree';\nimport { api } from 'shared/api/interfaces';\nimport { errorLog } from 'index';\nimport moment from 'moment';\n\nexport const ratings = [\n { value: '0', description: 'Not Applicable' },\n { value: '1', description: 'Needs Coaching' },\n { value: '2', description: 'Maturing' },\n { value: '3', description: 'No Brainer' },\n { value: '4', description: 'Outstanding' },\n];\n\nexport type RoleChangeStatus = 'draft' | 'submitted' | 'approved' | 'rejected' | 'new';\nexport interface RoleChangeAttachmentFile {\n name: string;\n base64: string;\n contentType: string;\n}\n\nexport const RoleChangeModel = types\n .model('RoleChange', {\n loadingState: LoadingStateModel,\n })\n .actions((self) => ({\n getCurrentRoleChange: flow(function* (\n roleChangeId: number\n ): Generator, api.RoleChangeDto | null, api.RoleChangeDto> {\n const { ajax } = getEnv(self);\n try {\n self.loadingState = 'loading';\n const result = yield ajax\n .get('RoleChanges/rolechange', { searchParams: { roleChangeId } })\n .json();\n\n self.loadingState = 'done';\n return result;\n } catch (error) {\n self.loadingState = 'error';\n errorLog('Failed to fetch current role change', error);\n return null;\n }\n }),\n getAllRoleChangeSubmissions: flow(function* (\n employeeIdpId: string\n ): Generator, api.RoleChangeDto[] | null, api.RoleChangeDto[]> {\n const { ajax } = getEnv(self);\n try {\n self.loadingState = 'loading';\n const result = yield ajax\n .get('RoleChanges/rolechangesforemployee', { searchParams: { employeeIdpId } })\n .json();\n\n self.loadingState = 'done';\n return result;\n } catch (error) {\n self.loadingState = 'error';\n errorLog('Failed to fetch current role change', error);\n return null;\n }\n }),\n getRoleChangeSubmissionsForSquad: flow(function* (\n squadName: string\n ): Generator<\n Promise,\n api.EmployeeWithRoleChangeDto[],\n api.EmployeeWithRoleChangeDto[]\n > {\n const { ajax } = getEnv(self);\n try {\n self.loadingState = 'loading';\n const result = yield ajax\n .get('RoleChanges/rolechangesforsquad', { searchParams: { squadName } })\n .json();\n\n self.loadingState = 'done';\n return result;\n } catch (error) {\n self.loadingState = 'error';\n errorLog(`Failed to fetch role change submissions for ${squadName}`, error);\n return [];\n }\n }),\n upsertRoleChange: flow(function* (\n request: api.UpsertRoleChangeSubmissionRequest\n ): Generator, void, void> {\n const { ajax } = getEnv(self);\n\n try {\n yield ajax\n .post('RoleChanges/upsertrolechange', {\n json: request,\n })\n .json();\n } catch (error) {\n errorLog('Failed to submit role change', error);\n throw error;\n }\n }),\n revertCurrentRoleChangeToDraft: flow(function* (\n roleChangeId: number\n ): Generator, void, void> {\n const { ajax } = getEnv(self);\n try {\n yield ajax\n .post('RoleChanges/revertrolechangetodraft', { searchParams: { roleChangeId } })\n .json();\n } catch (error) {\n errorLog('Failed to revert current role change to draft', error);\n }\n }),\n approveRoleChangeForEmployee: flow(function* (\n roleChangeId: number,\n shouldApprove: boolean,\n approverAdditionalComments: string\n ): Generator, void, void> {\n const { ajax } = getEnv(self);\n try {\n yield ajax\n .post('RoleChanges/finalizerolechange', {\n json: { roleChangeId, approveRoleChange: shouldApprove, approverAdditionalComments },\n })\n .json();\n } catch (error) {\n errorLog(`Failed to ${shouldApprove ? 'approve' : 'reject'} role change`, error);\n }\n }),\n downloadRoleChangeBusinessCaseAttachment: flow(function* (\n employeeIdpId: string,\n roleChangeId: number,\n fileName: string\n ): Generator, Blob, Blob> {\n const { ajax } = getEnv(self);\n\n try {\n return yield ajax\n .get('RoleChanges/downloadBusinessCaseAttachment', {\n searchParams: { employeeIdpId, roleChangeId, fileName },\n })\n .blob();\n } catch (error) {\n errorLog('Failed to download business case for Role Change', error);\n throw error;\n }\n }),\n }))\n .actions((self) => ({\n loadSkills: flow(function* (\n capabilityId: string,\n roleNames: string[]\n ): Generator<\n Promise,\n api.CapabilityRoleDto[],\n api.CapabilityRoleDto[]\n > {\n const { ajax } = getEnv(self);\n\n const searchRoleNames = new URLSearchParams(roleNames.map((s) => ['roleName', s]));\n const roleName = searchRoleNames.toString();\n\n return yield ajax\n .get('RoleChanges/details?capabilityId=' + capabilityId + '&' + roleName)\n .json();\n }),\n }))\n .views((self) => ({\n get isLoading() {\n return self.loadingState === 'loading';\n },\n get currentRoleChangeCycle() {\n const currentYear = moment().get('year');\n return moment().get('month') < 6 ? `Jan-Jun ${currentYear}` : `Jul-Dec ${currentYear}`;\n },\n getRoleChangeCycle(roleChange: api.RoleChangeDto) {\n const currentYear = moment(roleChange.createdAt).get('year');\n const isCurrentMonthInFirstCycle = moment(roleChange.createdAt).get('month') < 6;\n const cycles = [\n `Jan-Jun ${currentYear}`,\n `Jul-Dec ${currentYear}`,\n `Jan-Jun ${currentYear + 1}`,\n ].slice(isCurrentMonthInFirstCycle ? 0 : 1, isCurrentMonthInFirstCycle ? 2 : 3);\n\n return cycles[roleChange.skipCurrentPromotionCycle ? 1 : 0];\n },\n getRatingDescriptionFromValue(value: string) {\n return ratings.find((r) => r.value === value)?.description || undefined;\n },\n }));\n\nexport const getStatus = (\n isDraft: boolean | undefined,\n isApproved: boolean | undefined,\n isActive: boolean | undefined\n): RoleChangeStatus => {\n if (isDraft) return 'draft';\n if (isDraft === undefined) return 'new';\n if (isApproved === null && isActive) return 'submitted';\n if (isApproved && !isActive) {\n return 'approved';\n } else {\n return 'rejected';\n }\n};\n\nexport interface IRoleChangeModel extends Instance {}\n","import React from 'react';\nimport styles from 'views/components/validationIcon/ValidationIcon.module.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCheckCircle, faTimesCircle } from '@fortawesome/free-solid-svg-icons';\n\nexport type ValidationStatus = 'hidden' | 'valid' | 'error';\n\ninterface IStatusIconProps {\n status: ValidationStatus;\n className?: string;\n}\n\nexport const ValidationIcon: React.FC = ({ status, className }) => {\n return (\n <>\n {status !== 'hidden' && (\n
    v).join(' ')}>\n {status === 'error' && (\n \n )}\n {status === 'valid' && (\n \n )}\n
    \n )}\n \n );\n};\n","import { Checkbox, FormControlLabel } from '@material-ui/core';\nimport { SwitchBaseProps } from '@material-ui/core/internal/SwitchBase';\nimport React from 'react';\nimport styles from '../../RoleChange.module.scss';\nimport cn from 'classnames';\n\ninterface IRoleChangeCheckboxProps {\n onChange?: (value: boolean) => void;\n disabled: boolean;\n selectedValue: boolean;\n label: string;\n inputProps?: React.InputHTMLAttributes | undefined;\n dataTestId?: string;\n}\n\nexport const RoleChangeCheckbox: React.FC = (props) => {\n return (\n \n props.onChange && props.onChange((event.target as HTMLInputElement).checked)\n }\n inputProps={\n props.dataTestId\n ? ({\n 'data-testid': props.dataTestId,\n } as SwitchBaseProps['inputProps'] & { 'data-testid': string })\n : undefined\n }\n />\n }\n label={props.label}\n className={cn(styles.formInputItem, styles.reverse)}\n />\n );\n};\n","import { FormControl, FormControlLabel, Radio, RadioGroup } from '@material-ui/core';\nimport React from 'react';\nimport styles from '../../RoleChange.module.scss';\nimport moment from 'moment';\nimport cn from 'classnames';\nimport { SwitchBaseProps } from '@material-ui/core/internal/SwitchBase';\n\ninterface IRoleChangeCycleRadioGroupProps {\n onChange: (value: boolean) => void;\n disabled: boolean;\n selectedValue: boolean | undefined;\n roleChangeDate: string | undefined;\n dataTestId: string;\n}\n\nexport const RoleChangeCycleRadioGroup: React.FC = (props) => {\n const getCurrentCycles = () => {\n const currentYear = moment(props.roleChangeDate).get('year');\n const isCurrentMonthInFirstCycle = moment(props.roleChangeDate).get('month') < 6;\n\n if (isCurrentMonthInFirstCycle) {\n return [`January to June ${currentYear}`, `July to December ${currentYear}`];\n } else {\n return [`July to December ${currentYear}`, `January to June ${currentYear + 1}`];\n }\n };\n\n const cycles = getCurrentCycles();\n\n return (\n \n \n \n props.onChange(cycles.indexOf((event.target as HTMLInputElement).value) > 0)\n }>\n {cycles.map((c, i) => (\n \n }\n label={c}\n className={cn(styles.formInputItem, styles.reverse)}\n />\n ))}\n \n \n );\n};\n","import { FormControl, MenuItem, Select } from '@material-ui/core';\nimport React from 'react';\nimport styles from '../../../../RoleChange.module.scss';\nimport { api } from 'shared/api/interfaces';\nimport { ratings } from 'domain/store/employeeJourney/RoleChangeModel';\nimport { SwitchBaseProps } from '@material-ui/core/internal/SwitchBase';\n\ninterface IRatingProps {\n coreValueId: string;\n skill: string;\n currentRating: number;\n index: number;\n handleSkillChange: (item: api.SkillRatingDto) => void;\n disabled: boolean;\n dataTestId: string;\n showValidationError: boolean;\n}\n\nexport const SkillRating: React.FC = (props) => {\n return (\n \n \n \n props.handleSkillChange({\n coreValueId: props.coreValueId,\n rating: parseInt((e.target as HTMLInputElement).value) as api.Rating,\n })\n }\n inputProps={\n {\n 'data-testid': 'skill-rating-dropdown-input',\n } as SwitchBaseProps['inputProps'] & { 'data-testid': string }\n }\n data-testid=\"skill-rating-dropdown\"\n disableUnderline>\n {ratings.map((r, i) => (\n \n {r.description}\n \n ))}\n \n \n );\n};\n","import { faEdit, faQuestionCircle } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n ClickAwayListener,\n FormControl,\n FormControlLabel,\n FormGroup,\n IconButton,\n Menu,\n MenuItem,\n Paper,\n Radio,\n RadioGroup,\n} from '@material-ui/core';\nimport cn from 'classnames';\nimport React, { ChangeEvent, useState } from 'react';\nimport { api } from 'shared/api/interfaces';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\nimport { ValidationIcon } from 'views/components/validationIcon/ValidationIcon';\nimport styles from '../../RoleChange.module.scss';\nimport { SkillRating } from './components/skillRating/SkillRating';\n\ninterface IRoleChangeSkills {\n currentRoleSkills?: api.CapabilityRoleDto;\n targetRoleSkills: api.CapabilityRoleDto;\n disabled: boolean;\n dataSource: string[];\n onSelected?: (selectedItem: string) => void;\n selectedItem: string;\n currentRoleSkillRatings: api.SkillRatingDto[];\n targetRoleSkillRatings: api.SkillRatingDto[];\n handleCurrentRoleSkillChange: (item: api.SkillRatingDto) => void;\n handleTargetRoleSkillChange: (item: api.SkillRatingDto) => void;\n formError: string | undefined;\n showValidationErrors: boolean;\n}\n\nexport const RoleChangeSkills: React.FC = (props) => {\n const [anchorEl, setAnchorEl] = useState(null);\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [positionToUpdate, setPositionToUpdate] = useState(props.selectedItem || '');\n const [isOpen, setIsOpen] = useState(false);\n const [isOpenTarget, setIsOpenTarget] = useState(false);\n\n const onCloseDialog = () => {\n setIsDialogOpen(false);\n setAnchorEl(null);\n };\n\n const toggleSkillsMenu = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleRoleChange = (e: ChangeEvent<{ value: unknown }>) => {\n const newValue = e.target.value as string;\n setPositionToUpdate(newValue);\n setIsDialogOpen(true);\n };\n\n const onAgree = () => {\n props.onSelected!(positionToUpdate);\n setIsDialogOpen(false);\n };\n\n return (\n \n {props.currentRoleSkills && (\n <>\n setIsOpen(false)}>\n \n \n \n {props.currentRoleSkills.coreValues.map((skill, index) => {\n const rating =\n props.currentRoleSkillRatings.find((r) => r.coreValueId === skill.id)?.rating || 0;\n return (\n \n \n {props.showValidationErrors && (\n \n )}\n \n );\n })}\n \n \n )}\n setIsOpenTarget(false)}>\n \n \n \n {props.targetRoleSkills.coreValues.map((skill, index) => {\n const rating =\n props.targetRoleSkillRatings.find((r) => r.coreValueId === skill.id)?.rating || 0;\n return (\n \n \n {props.showValidationErrors && (\n \n )}\n \n );\n })}\n \n {props.formError && props.showValidationErrors && (\n
    {props.formError}
    \n )}\n \n );\n};\n\ninterface IRatingDescriptionProps {\n open: boolean;\n onClick: () => void;\n}\n\nconst RatingDescription = (props: IRatingDescriptionProps) => {\n return (\n <>\n props.onClick && props.onClick()}>\n \n \n {props.open ? (\n \n

    \n Rating Descriptions\n

    \n

    \n Not Applicable - There hasn't been an opportunity to demonstrate this,\n or your contributor hasn't had the opportunity to witness this area.\n

    \n

    \n Needs Coaching - This area needs improvement. If you haven’t already, focus\n your PD plan on it.\n

    \n

    \n Maturing - You’re developing well in this area. Continue to work on it as a\n growth area.\n

    \n

    \n No Brainer - You’re consistently demonstrating solid ability at this. Keep\n it up!\n

    \n

    \n Outstanding - You’re doing this exceptionally well, demonstrating\n leadership in this space.\n

    \n
    \n ) : null}\n \n );\n};\n","import React from 'react';\nimport NavigationPrompt from 'react-router-navigation-prompt';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\n\nexport interface NavigationAlertProps {\n for: string;\n when: boolean;\n}\n\nexport const NavigationAlert: React.FunctionComponent = (props) => (\n \n {({ onCancel, onConfirm }) => (\n \n )}\n \n);\n","import { Box, FormControl, Link, Tooltip, Button, IconButton } from '@material-ui/core';\nimport { faTimes, faUpload } from '@fortawesome/free-solid-svg-icons';\nimport React, { useState } from 'react';\nimport styles from '../../RoleChange.module.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport cn from 'classnames';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\nimport { useStore } from '../../../../../../../hooks/useStore';\nimport { RoleChangeAttachmentFile } from 'domain/store/employeeJourney/RoleChangeModel';\n\ninterface IRoleChangeBusinessCaseAttachment {\n fileName: string | undefined;\n onBusinessCaseFileModified: (file: RoleChangeAttachmentFile, fileModified: boolean) => void;\n onDownload: (fileName: string | undefined) => void;\n onDelete: (fileName: string | undefined) => void;\n disabled: boolean;\n formError: string | undefined;\n showValidationErrors: boolean;\n}\n\nexport const RoleChangeBusinessCaseAttachment: React.FC = (\n props: IRoleChangeBusinessCaseAttachment\n) => {\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const {\n notifications: { addError },\n } = useStore();\n const [fileModified, setFileModified] = useState(false);\n const allowed_types = [\n 'application/pdf',\n 'text/plain',\n 'application/msword',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n ];\n\n const onAgree = () => {\n props.onDelete(props.fileName);\n setIsDialogOpen(false);\n };\n\n const preFileUploadCheck = (selectedFiles: FileList | null) => {\n if (!selectedFiles || selectedFiles.length === 0) {\n addError('Please select a file');\n return;\n }\n\n const selectedFile = selectedFiles[0];\n\n if (!allowed_types.includes(selectedFile.type)) {\n addError('Only Word, Text and PDF files are allowed ( Doc(x) | Txt | PDF)');\n return;\n }\n\n const getFileContent = new Promise(\n (resolve: (file: RoleChangeAttachmentFile) => void, reject) => {\n const reader = new FileReader();\n reader.onloadend = function () {\n resolve({\n name: selectedFile.name,\n base64: reader.result,\n contentType: selectedFile.type,\n } as RoleChangeAttachmentFile);\n };\n reader.readAsDataURL(selectedFile);\n }\n );\n getFileContent.then((attachment) => {\n setFileModified(true);\n props.onBusinessCaseFileModified(attachment, true);\n });\n };\n\n return (\n \n \n \n {!!props.fileName && !fileModified && (\n \n props.onDownload(props.fileName)} target=\"_blank\">\n {props.fileName}\n \n \n )}\n {!!props.fileName && fileModified && {props.fileName}}\n {!props.disabled && !!props.fileName && (\n \n setIsDialogOpen(true)}>\n \n \n \n )}\n {!props.fileName && No files attached}\n \n {props.formError && props.showValidationErrors && (\n
    {props.formError}
    \n )}\n setIsDialogOpen(false)}\n />\n \n );\n};\n","import { faPaperPlane, faSave } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, FormControl, FormGroup, TextField } from '@material-ui/core';\nimport { SwitchBaseProps } from '@material-ui/core/internal/SwitchBase';\nimport cn from 'classnames';\nimport {\n getStatus,\n RoleChangeStatus,\n RoleChangeAttachmentFile,\n} from 'domain/store/employeeJourney/RoleChangeModel';\nimport { useEmployeeJourney } from 'hooks/useEmployeeJourney';\nimport { usePermissions } from 'hooks/usePermissions';\nimport { useRoleChange } from 'hooks/useRoleChange';\nimport { useStore } from 'hooks/useStore';\nimport { useUser } from 'hooks/useUser';\nimport { observer } from 'mobx-react-lite';\nimport moment, { utc } from 'moment';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { api } from 'shared/api/interfaces';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { RoleChangeStatusChip } from 'views/components/roleChangeStatusChip/RoleChangeStatusChip';\nimport { ValidationIcon, ValidationStatus } from 'views/components/validationIcon/ValidationIcon';\nimport { RoleChangeCheckbox } from './components/roleChangeCheckbox/RoleChangeCheckbox';\nimport { RoleChangeCycleRadioGroup } from './components/roleChangeCycleRadioGroup/RoleChangeCycleRadioGroup';\nimport { RoleChangeSkills } from './components/roleChangeSkills/RoleChangeSkills';\nimport styles from './RoleChange.module.scss';\nimport { NavigationAlert } from 'views/components/navigationAlert/NavigationAlert';\nimport { RoleChangeBusinessCaseAttachment } from './components/roleChangeBusinessCaseAttachment/RoleChangeBusinessCaseAttachment';\nimport { Positions } from '../../../../../shared/constants/Positions';\n\ninterface IRoleChangeProps {\n roleChange: api.RoleChangeDto | undefined;\n setSelectedRoleChange: (value: api.RoleChangeDto | undefined) => void;\n setRoleChangeHasStarted: (value: boolean) => void;\n roleChangeHasStarted: boolean;\n}\n\ntype FormItem =\n | 'isNotOnProbation'\n | 'hasCompletedRetros'\n | 'noPerformancePlan'\n | 'prerequisites'\n | 'skillRatings'\n | 'businessCaseAttachment';\n\ntype FormError = { [key in FormItem]?: string };\n\ninterface IFormState {\n targetRole: string;\n skipCurrentPromotionCycle: boolean;\n createdAt: string | undefined;\n hasCompletedRetros: boolean;\n noPerformanceImprovementPlan: boolean;\n isDraft: boolean | undefined;\n businessCaseAttachmentFileName: string | undefined;\n businessCaseAttachmentContentType: string | undefined;\n businessCaseAttachmentFileContent: string | undefined;\n businessCaseAttachmentContentModified: boolean;\n errors: FormError;\n submitterAdditionalComments: string | undefined;\n}\n\nconst immutableEmptyFormState = (): IFormState => {\n return {\n targetRole: '',\n skipCurrentPromotionCycle: false,\n createdAt: undefined,\n hasCompletedRetros: false,\n noPerformanceImprovementPlan: false,\n isDraft: undefined,\n businessCaseAttachmentFileName: undefined,\n businessCaseAttachmentContentType: undefined,\n businessCaseAttachmentFileContent: undefined,\n businessCaseAttachmentContentModified: false,\n errors: {},\n submitterAdditionalComments: undefined,\n };\n};\n\nexport const RoleChange: React.FC = observer(\n ({ roleChange, setSelectedRoleChange, setRoleChangeHasStarted, roleChangeHasStarted }) => {\n const { employee, positions } = useEmployeeJourney();\n const {\n isLoading,\n upsertRoleChange,\n loadSkills,\n revertCurrentRoleChangeToDraft,\n downloadRoleChangeBusinessCaseAttachment,\n } = useRoleChange();\n const {\n notifications: { addError, addSuccess },\n } = useStore();\n const {\n canEdit,\n employees: { roleChanges },\n } = usePermissions();\n\n const { givenName, familyName } = useUser();\n\n const employeeCurrentRole = employee?.position ?? 'Select Position';\n const positionsArray = positions.slice(\n positions.indexOf(employeeCurrentRole) + 1,\n positions.length\n );\n const [confirmationDialogOpen, setConfirmationDialogOpen] = useState(false);\n const [currentRoleSkillRatings, setCurrentRoleSkillRatings] = useState(\n []\n );\n const [initialCurrentRoleSkillRatings, setInitialCurrentRoleSkillRatings] = useState<\n api.SkillRatingDto[]\n >([]);\n const [targetRoleSkillRatings, setTargetRoleSkillRatings] = useState([]);\n const [initialTargetRoleSkillRatings, setInitialTargetRoleSkillRatings] = useState<\n api.SkillRatingDto[]\n >([]);\n const [isSkillsLoaded, setIsSkillsLoaded] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [lastModifiedBy, setLastModifiedBy] = useState<{\n user: string;\n date: string;\n } | null>(null);\n const [formState, setFormState] = useState({\n ...immutableEmptyFormState(),\n targetRole: positionsArray[0],\n });\n const [initialFormState, setInitialFormState] = useState({\n ...formState,\n });\n const [validationQueue, setValidationQueue] = useState([]);\n const [showSkillRatingValidationIcons, setShowSkillRatingValidationIcons] = useState(false);\n const [currentRoleSkills, setCurrentRoleSkills] = useState();\n const [targetRoleSkills, setTargetRoleSkills] = useState();\n\n const handleRoleSkillChange = (\n item: api.SkillRatingDto,\n skills: api.SkillRatingDto[],\n setter: React.Dispatch>\n ) => {\n const tempSkills = [...skills];\n const skillRating = tempSkills.find((r) => r.coreValueId === item.coreValueId);\n if (skillRating) {\n skillRating.rating = item.rating;\n setter(tempSkills);\n setValidationQueue(['skillRatings']);\n }\n };\n\n const isReadOnly = !canEdit(roleChanges) || formState.isDraft === false;\n\n const loadRoleSkills = (\n currentRole: string,\n targetRole: string,\n skillRatings: api.SkillRatingDto[] | undefined = undefined\n ) => {\n setIsSkillsLoaded(false);\n const requireCurrentRoleSkills =\n currentRole === Positions.Associate ? [targetRole] : [currentRole, targetRole];\n employee &&\n loadSkills(employee.capability, requireCurrentRoleSkills)\n .then((s) => {\n const currentRs = s.find((x) => x.name === currentRole);\n const targetRs = s.find((x) => x.name === targetRole);\n setCurrentRoleSkills(currentRs);\n setTargetRoleSkills(targetRs);\n if (skillRatings) {\n if (currentRs) {\n const currentRoleRatings = skillRatings.filter(\n (value) => currentRs!.coreValues.findIndex((y) => y.id === value.coreValueId) >= 0\n );\n setCurrentRoleSkillRatings(\n currentRoleRatings.map((r) => {\n return { coreValueId: r.coreValueId, rating: r.rating };\n })\n );\n\n setInitialCurrentRoleSkillRatings(\n currentRoleRatings.map((r) => {\n return { coreValueId: r.coreValueId, rating: r.rating };\n })\n );\n }\n const targetRoleRatings = skillRatings.filter(\n (value) => targetRs!.coreValues.findIndex((y) => y.id === value.coreValueId) >= 0\n );\n\n setTargetRoleSkillRatings(\n targetRoleRatings.map((r) => {\n return { coreValueId: r.coreValueId, rating: r.rating };\n })\n );\n\n setInitialTargetRoleSkillRatings(\n targetRoleRatings.map((r) => {\n return { coreValueId: r.coreValueId, rating: r.rating };\n })\n );\n\n setValidationQueue(['skillRatings']);\n } else {\n if (currentRs) {\n setCurrentRoleSkillRatings(\n currentRs!.coreValues.map((r) => {\n return { coreValueId: r.id, rating: 0 };\n })\n );\n\n setInitialCurrentRoleSkillRatings(\n currentRs!.coreValues.map((r) => {\n return { coreValueId: r.id, rating: 0 };\n })\n );\n }\n\n setTargetRoleSkillRatings(\n targetRs!.coreValues.map((r) => {\n return { coreValueId: r.id, rating: 0 };\n })\n );\n\n setInitialTargetRoleSkillRatings(\n targetRs!.coreValues.map((r) => {\n return { coreValueId: r.id, rating: 0 };\n })\n );\n }\n })\n .finally(() => setIsSkillsLoaded(true));\n };\n const handleSubmitRoleChange = () => {\n if (employee) {\n setConfirmationDialogOpen(false);\n setIsSubmitting(true);\n const combinedSkillRatings = targetRoleSkillRatings.concat(currentRoleSkillRatings);\n upsertRoleChange({\n ...formState,\n roleChangeId: roleChange?.roleChangeId,\n employeeIdpId: employee.idpId,\n skillRatings: combinedSkillRatings,\n saveAsDraft: false,\n })\n .then(() => {\n addSuccess('Role change is submitted');\n setFormState({ ...formState, isDraft: false });\n setInitialFormState({ ...formState, isDraft: false });\n\n setInitialCurrentRoleSkillRatings(\n currentRoleSkillRatings.map((r) => {\n return { coreValueId: r.coreValueId, rating: r.rating };\n })\n );\n\n setInitialTargetRoleSkillRatings(\n targetRoleSkillRatings.map((r) => {\n return { coreValueId: r.coreValueId, rating: r.rating };\n })\n );\n\n setLastModifiedBy({\n user: `${givenName} ${familyName}`,\n date: moment().format('DD/MM/YYYY'),\n });\n setSelectedRoleChange(roleChange);\n })\n .catch((err) => {\n if (err?.response?.status === 409) {\n addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (err?.response?.status === 403) {\n addError('Not authorised to save changes.');\n } else {\n addError('Failed to submit role change');\n }\n })\n .finally(() => {\n setIsSubmitting(false);\n setRoleChangeHasStarted(false);\n });\n }\n };\n\n const handleRevertToDraft = () => {\n if (roleChange) {\n setIsSubmitting(true);\n revertCurrentRoleChangeToDraft(roleChange.roleChangeId)\n .then(() => {\n setFormState({ ...formState, isDraft: true });\n setInitialFormState({ ...formState, isDraft: true });\n })\n .catch((err) => {\n if (err?.response?.status === 409) {\n addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (err?.response?.status === 403) {\n addError('Not authorised to save changes.');\n } else {\n addError('Failed to revert role change to draft');\n }\n })\n .finally(() => setIsSubmitting(false));\n }\n };\n\n const handleSaveAsDraft = async () => {\n if (employee) {\n setIsSubmitting(true);\n const combinedSkillsRatings = targetRoleSkillRatings.concat(currentRoleSkillRatings);\n await upsertRoleChange({\n ...formState,\n roleChangeId: roleChange?.roleChangeId,\n employeeIdpId: employee.idpId,\n skillRatings: combinedSkillsRatings,\n saveAsDraft: true,\n })\n .then(() => {\n addSuccess('Draft role change is saved');\n setFormState({ ...formState, isDraft: true });\n setInitialFormState({ ...formState, isDraft: true });\n setInitialCurrentRoleSkillRatings(\n currentRoleSkillRatings.map((r) => {\n return { coreValueId: r.coreValueId, rating: r.rating };\n })\n );\n setInitialTargetRoleSkillRatings(\n targetRoleSkillRatings.map((r) => {\n return { coreValueId: r.coreValueId, rating: r.rating };\n })\n );\n setLastModifiedBy({\n user: `${givenName} ${familyName}`,\n date: moment().format('DD/MM/YYYY'),\n });\n setSelectedRoleChange(roleChange);\n })\n .catch((err) => {\n if (err?.response?.status === 409) {\n addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (err?.response?.status === 403) {\n addError('Not authorised to save changes.');\n } else {\n addError('Failed to save draft');\n }\n })\n .finally(() => {\n setIsSubmitting(false);\n setRoleChangeHasStarted(false);\n });\n }\n };\n\n const handleBusinessCaseFileModified = (\n file: RoleChangeAttachmentFile,\n fileModified: boolean\n ) => {\n setFormState((formState) => {\n return {\n ...formState,\n ...{\n businessCaseAttachmentFileName: file.name,\n businessCaseAttachmentFileContent: file.base64,\n businessCaseAttachmentContentType: file.contentType,\n businessCaseAttachmentContentModified: fileModified,\n },\n };\n });\n setValidationQueue(['businessCaseAttachment']);\n };\n\n const handleFileDownload = (fileName: string | undefined) => {\n if (employee === null || fileName === undefined) {\n addError('for downloading the file, employee and fileName should be present');\n return;\n }\n\n if (roleChange) {\n downloadRoleChangeBusinessCaseAttachment(employee.idpId, roleChange.roleChangeId, fileName)\n .then((blob: Blob) => {\n const url = window.URL.createObjectURL(new Blob([blob]));\n const a = document.createElement('a');\n a.setAttribute('style', 'display:none;');\n document.body.appendChild(a);\n a.download = fileName;\n a.href = url;\n a.target = '_blank';\n a.click();\n document.body.removeChild(a);\n })\n .catch((err) => {\n if (err?.response?.status === 404) addError('File not found');\n });\n }\n };\n\n const handleFileDelete = (fileName: string | undefined) => {\n if (employee === null || fileName === undefined) {\n return;\n }\n setFormState((formState) => {\n return {\n ...formState,\n ...{\n businessCaseAttachmentFileName: undefined,\n businessCaseAttachmentContentType: undefined,\n businessCaseAttachmentFileContent: undefined,\n businessCaseAttachmentContentModified: true,\n },\n };\n });\n\n setValidationQueue(['businessCaseAttachment']);\n };\n\n useEffect(() => {\n if (!roleChange && !roleChangeHasStarted) return;\n\n if (roleChange && employee) {\n loadRoleSkills(employee.position, roleChange.targetRole, roleChange.skillRatings);\n setFormState((formState) => {\n return {\n ...formState,\n ...roleChange,\n };\n });\n setInitialFormState((initialFormState) => {\n return {\n ...formState,\n ...roleChange,\n };\n });\n setLastModifiedBy({\n user: roleChange.lastModifiedBy,\n date: utc(roleChange.lastModifiedAtUtc).local().format('DD/MM/YYYY'),\n });\n }\n\n if (roleChangeHasStarted && employee && roleChange?.isDraft === undefined) {\n loadRoleSkills(employee.position, positionsArray[0]);\n setFormState((formState) => {\n return {\n ...formState,\n };\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [employee, roleChange]);\n\n const getValidationError = useCallback(\n (item: FormItem): string | undefined => {\n const validationErrors: FormError = {\n isNotOnProbation: !employee?.probation.isInProbation ? undefined : '',\n hasCompletedRetros: formState.hasCompletedRetros ? undefined : '',\n noPerformancePlan: formState.noPerformanceImprovementPlan ? undefined : '',\n\n prerequisites:\n !employee?.probation.isInProbation &&\n formState.hasCompletedRetros &&\n formState.noPerformanceImprovementPlan\n ? undefined\n : 'All prerequisites must be satisfied prior to submission',\n\n skillRatings:\n targetRoleSkillRatings.every((r) => r.rating >= 3) &&\n currentRoleSkillRatings.every((r) => r.rating >= 3)\n ? undefined\n : 'All skills & behaviours must be rated as No Brainer or above prior to submission',\n\n businessCaseAttachment:\n (formState.targetRole === Positions.ManagingConsultant ||\n formState.targetRole === Positions.PrincipalConsultant) &&\n !formState.businessCaseAttachmentFileName\n ? `Business Case Attachment is mandatory for ${Positions.ManagingConsultant} and ${Positions.PrincipalConsultant} roles`\n : undefined,\n };\n\n return validationErrors[item];\n },\n [employee, formState, currentRoleSkillRatings, targetRoleSkillRatings]\n );\n\n const handleValidateFormItem = useCallback(\n (name: FormItem) => {\n const newState = {\n ...formState,\n };\n\n newState.errors[name] = getValidationError(name);\n setFormState(newState);\n },\n [formState, getValidationError]\n );\n\n const handleValidation = () => {\n handleValidateFormItem('isNotOnProbation');\n handleValidateFormItem('hasCompletedRetros');\n handleValidateFormItem('noPerformancePlan');\n handleValidateFormItem('prerequisites');\n handleValidateFormItem('skillRatings');\n handleValidateFormItem('businessCaseAttachment');\n\n setShowSkillRatingValidationIcons(true);\n\n return Object.values(formState.errors).every((v) => v === undefined);\n };\n\n const getValidationStatus = (item: FormItem): ValidationStatus => {\n if (Object.prototype.hasOwnProperty.call(formState.errors, item)) {\n return formState.errors[item] === undefined ? 'valid' : 'error';\n }\n return 'hidden';\n };\n\n const handleFormStateChange = useCallback(\n (state: IFormState, item?: FormItem | FormItem[]) => {\n item && setValidationQueue(validationQueue.concat(item));\n setFormState(state);\n },\n [validationQueue]\n );\n\n useEffect(() => {\n if (validationQueue.length) {\n const errors = formState.errors;\n validationQueue.forEach((item) => {\n errors[item] = getValidationError(item);\n });\n setFormState({ ...formState, errors });\n setValidationQueue([]);\n }\n }, [validationQueue, handleValidateFormItem, formState, getValidationError]);\n\n const isFormStateDirty = useCallback(() => {\n if (formState.targetRole !== initialFormState.targetRole) {\n return true;\n }\n if (formState.skipCurrentPromotionCycle !== initialFormState.skipCurrentPromotionCycle) {\n return true;\n }\n if (formState.hasCompletedRetros !== initialFormState.hasCompletedRetros) {\n return true;\n }\n if (\n formState.noPerformanceImprovementPlan !== initialFormState.noPerformanceImprovementPlan\n ) {\n return true;\n }\n if (formState.submitterAdditionalComments !== initialFormState.submitterAdditionalComments) {\n return true;\n }\n return (\n currentRoleSkillRatings.some(\n (r, i) => r.rating !== initialCurrentRoleSkillRatings[i]?.rating\n ) ||\n targetRoleSkillRatings.some((r, i) => r.rating !== initialTargetRoleSkillRatings[i]?.rating)\n );\n }, [\n formState,\n initialFormState,\n currentRoleSkillRatings,\n initialCurrentRoleSkillRatings,\n targetRoleSkillRatings,\n initialTargetRoleSkillRatings,\n ]);\n\n if (isLoading) {\n return (\n
    \n \n
    \n );\n }\n\n return (\n <>\n \n
    \n
    \n

    Role Change

    \n \n
    \n {lastModifiedBy && (\n \n Last modified by {lastModifiedBy.user} on {lastModifiedBy.date}\n \n )}\n \n handleFormStateChange({ ...formState, skipCurrentPromotionCycle: value })\n }\n roleChangeDate={formState.createdAt}\n dataTestId=\"role-change-cycle-radio-button\"\n />\n\n \n \n \n \n \n \n handleFormStateChange(\n {\n ...formState,\n hasCompletedRetros: value,\n },\n getValidationStatus('prerequisites') !== 'hidden'\n ? ['hasCompletedRetros', 'prerequisites']\n : undefined\n )\n }\n label=\"Candidate has completed 2 retros within the last 12 months\"\n dataTestId=\"completed-retros-checkbox\"\n />\n \n \n handleFormStateChange(\n {\n ...formState,\n noPerformanceImprovementPlan: value,\n },\n getValidationStatus('prerequisites') !== 'hidden'\n ? ['noPerformancePlan', 'prerequisites']\n : undefined\n )\n }\n label=\"Candidate has not been on a performance improvement plan for at least 12 months\"\n dataTestId=\"performance-improvement-plan-checkbox\"\n />\n \n \n {formState.errors.prerequisites && (\n
    {formState.errors.prerequisites}
    \n )}\n \n {isSkillsLoaded && targetRoleSkills ? (\n {\n handleFormStateChange({\n ...formState,\n targetRole: e,\n });\n loadRoleSkills(employee!.position, e);\n }}\n selectedItem={formState.targetRole}\n currentRoleSkillRatings={currentRoleSkillRatings}\n targetRoleSkillRatings={targetRoleSkillRatings}\n handleCurrentRoleSkillChange={(e) =>\n handleRoleSkillChange(e, currentRoleSkillRatings, setCurrentRoleSkillRatings)\n }\n handleTargetRoleSkillChange={(e) =>\n handleRoleSkillChange(e, targetRoleSkillRatings, setTargetRoleSkillRatings)\n }\n formError={formState.errors.skillRatings}\n showValidationErrors={showSkillRatingValidationIcons}\n />\n ) : (\n \n )}\n \n \n \n {!isReadOnly ? (\n \n setFormState({\n ...formState,\n submitterAdditionalComments: e.currentTarget.value,\n })\n }\n />\n ) : (\n
    \n {roleChange?.submitterAdditionalComments || 'No comments were made'}\n
    \n )}\n
    \n {roleChange?.approverAdditionalComments && (\n
    \n \n
    {roleChange.approverAdditionalComments}
    \n
    \n )}\n
    \n {\n setRoleChangeHasStarted(false);\n setSelectedRoleChange(undefined);\n }}>\n Back\n \n {canEdit(roleChanges) && isSubmitting ? (\n
    \n \n
    \n ) : formState.isDraft === false ? (\n roleChange?.isApproved === true ||\n roleChange?.isApproved === false ||\n !canEdit(roleChanges) ? null : (\n \n Edit\n \n \n )\n ) : (\n <>\n \n Save\n \n \n handleValidation() && setConfirmationDialogOpen(true)}>\n Submit\n \n \n setConfirmationDialogOpen(false)}\n agreeButtonText=\"Submit\"\n disagreeButtonText=\"Cancel\"\n />\n \n )}\n
    \n \n \n );\n }\n);\n","import { Button, Typography, Box } from '@material-ui/core';\nimport React, { useEffect, useState } from 'react';\nimport { api } from 'shared/api/interfaces';\nimport { RoleChangeStatusChip } from 'views/components/roleChangeStatusChip/RoleChangeStatusChip';\nimport { NoRoleChangeSubmissions } from './components/noRoleChangeSubmission/NoRoleChangeSubmission';\nimport styles from './RoleChange.module.scss';\nimport { useRoleChange } from 'hooks/useRoleChange';\nimport { useEmployeeJourney } from 'hooks/useEmployeeJourney';\nimport { observer } from 'mobx-react-lite';\nimport { usePermissions } from 'hooks/usePermissions';\nimport AddBoxIcon from '@material-ui/icons/AddBox';\nimport { RoleChange } from './RoleChange';\nimport { useStore } from 'hooks/useStore';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { getStatus, RoleChangeStatus } from 'domain/store/employeeJourney/RoleChangeModel';\nimport { Positions } from '../../../../../shared/constants/Positions';\n\nexport const RoleChangesList: React.FC = observer(() => {\n const { employee, positions } = useEmployeeJourney();\n const { getRoleChangeCycle, getAllRoleChangeSubmissions } = useRoleChange();\n const {\n canEdit,\n employees: { roleChanges },\n } = usePermissions();\n const {\n notifications: { addError },\n } = useStore();\n const [isLoading, setIsLoading] = useState(false);\n const [newRoleChangeHasBeenStarted, setNewRoleChangeHasBeenStarted] = useState(false);\n const [allRoleChanges, setAllRoleChanges] = useState([]);\n const [selectedRoleChange, setSelectedRoleChange] = useState(\n undefined\n );\n const previousRole = (targetRole: string) => {\n const index = positions.indexOf(targetRole);\n return positions[index - 1];\n };\n\n const handleRoleChangeHasStarted = (value: boolean) => {\n setNewRoleChangeHasBeenStarted(value);\n };\n\n const canEditRoleChange = canEdit(roleChanges);\n\n useEffect(() => {\n setAllRoleChanges([]);\n setIsLoading(true);\n employee &&\n getAllRoleChangeSubmissions(employee.idpId)\n .then((result) => {\n setAllRoleChanges(result);\n })\n .catch((err) => {\n if (err?.response?.status === 403) {\n addError('Not authorised to access role changes.');\n } else {\n addError(`Failed to get role changes for ${employee.givenName} ${employee.familyName}`);\n }\n })\n .finally(() => setIsLoading(false));\n }, [\n getAllRoleChangeSubmissions,\n employee,\n setAllRoleChanges,\n addError,\n newRoleChangeHasBeenStarted,\n ]);\n\n return (\n
    \n {!newRoleChangeHasBeenStarted ? (\n
    \n
    \n

    Role Change

    \n {canEditRoleChange && employee?.position !== Positions.PrincipalConsultant && (\n }\n onClick={() => handleRoleChangeHasStarted(true)}>\n Create New\n \n )}\n {employee?.position === Positions.PrincipalConsultant && (\n \n )}\n
    \n {!isLoading ? (\n allRoleChanges && allRoleChanges.length > 0 ? (\n allRoleChanges.map((r, i) => (\n
    \n
    \n \n \n {previousRole(r.targetRole)} to {r.targetRole} ·\n \n \n \n \n {getRoleChangeCycle(r)}\n \n \n
    \n
    \n \n {\n setSelectedRoleChange(r);\n handleRoleChangeHasStarted(true);\n }}>\n View\n \n
    \n
    \n ))\n ) : (\n \n )\n ) : (\n \n )}\n
    \n ) : (\n \n )}\n
    \n );\n});\n","import React, { ReactNode } from 'react';\nimport { Link, Redirect, Route, Switch, useLocation, useParams } from 'react-router-dom';\nimport styles from 'views/routes/employeeJourney/EmployeeJourney.module.scss';\nimport { EmployeeSidebar } from 'views/routes/employeeJourney/components/employeeSidebar/EmployeeSidebar';\nimport { EmployeeTimeline } from 'views/routes/employeeJourney/components/employeeTimeline/EmployeeTimeline';\nimport { RoleChangesList } from 'views/routes/employeeJourney/components/roleChange/RoleChangesList';\nimport { AppBar, Tab, Tabs } from '@material-ui/core';\nimport { usePermissions } from 'hooks/usePermissions';\nimport { observer } from 'mobx-react-lite';\nimport { useEmployeeJourney } from 'hooks/useEmployeeJourney';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\n\ninterface TabItem {\n link: string;\n title: ReactNode;\n component: ReactNode;\n disabled: boolean;\n visible: boolean;\n}\n\nexport const EmployeeJourney: React.FC = observer(() => {\n const { idpId } = useParams<{ idpId?: string }>();\n const {\n canView,\n canViewEmployeeTab,\n employees: { roleChanges },\n } = usePermissions();\n const location = useLocation();\n\n const canViewRoleChanges = canView(roleChanges);\n const { isLoaded, employee } = useEmployeeJourney();\n\n const tabItems: TabItem[] = [\n {\n title: 'Journey',\n component: ,\n link: 'journey',\n disabled: !canViewEmployeeTab,\n visible: true,\n },\n {\n title: 'Role Change',\n component: isLoaded ? : ,\n link: 'role-change',\n disabled: !canViewRoleChanges || !employee?.isInCareerFramework,\n visible: canViewRoleChanges,\n },\n ].filter((t) => t.visible);\n\n const activeTab: number = tabItems.findIndex(\n (item) => location.pathname === `/employees/${idpId}/${item.link}`\n );\n\n return (\n
    \n \n \n {tabItems.map((item, index) => (\n \n ))}\n \n \n
    \n \n \n {tabItems.map(\n (item) =>\n !item.disabled && ( // prevent the user from just using updating the url\n \n {item.component}\n \n )\n )}\n {isLoaded && (\n \n )}\n \n
    \n
    \n );\n});\n","import React, { useState } from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport { TextField } from '@material-ui/core';\nimport styles from './MarkdownTextArea.module.scss';\nimport 'github-markdown-css';\n\ntype ITextAreaProps = {\n content: string;\n onChange?: (text: string) => void;\n onBlur?: () => void;\n};\n\nexport const MarkdownTextArea: React.FC = function ({ content, onChange, onBlur }) {\n const [isFocused, setIsFocused] = useState(false);\n\n const onBlurHandler = () => {\n setIsFocused(false);\n onBlur && onBlur();\n };\n\n const onClickHandler = () => {\n setIsFocused(true);\n };\n\n const onChangeHandler = (event: React.ChangeEvent) => {\n onChange && onChange(event.target.value);\n };\n\n return (\n \n {!isFocused && content.length ? (\n
    \n \n
    \n ) : (\n \n )}\n \n );\n};\n","import React, { FormEvent } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport moment from 'moment';\nimport { MarkdownTextArea } from 'views/components/markdownTextArea/MarkdownTextArea';\nimport {\n Button,\n Checkbox,\n FormControl,\n FormControlLabel,\n Radio,\n RadioGroup,\n TextField,\n} from '@material-ui/core';\nimport styles from 'views/routes/myNotes/components/editNote/EditNote.module.scss';\nimport { EmployeeDropdown } from 'views/components/employeeDropdown/EmployeeDropdown';\nimport { TagDropdown } from 'views/components/tagDropdown/TagDropdown';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faArrowCircleRight, faSave, faUndo } from '@fortawesome/free-solid-svg-icons';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { FormItem, IFormState, ModeType } from 'views/routes/myNotes/MyNotes';\nimport { ValidationIcon, ValidationStatus } from 'views/components/validationIcon/ValidationIcon';\nimport { NavigationAlert } from 'views/components/navigationAlert/NavigationAlert';\nimport { Tooltip } from '@material-ui/core';\nimport { InfoOutlined } from '@material-ui/icons';\nimport { NoteSensitivity } from 'domain/store/NoteModel';\n\ninterface IEditNoteProps {\n formState: IFormState;\n formTitle: string;\n mode: ModeType;\n showSensitivity: boolean;\n onChange: (state: IFormState, item?: FormItem) => void;\n onSubmitNote: () => void;\n onSubmitDraft: () => void;\n onValidateFormItem: (item: FormItem) => void;\n onUndoChanges: () => void;\n isFormStateDirty: boolean;\n isOkToSaveAsDraft: boolean;\n isSubmitting: false | 'draft' | 'published';\n}\n\ninterface CheckboxProps extends React.InputHTMLAttributes {\n 'data-testid'?: string;\n}\n\nconst SUBMISSION_TEXT: { draft: string; published: string } = {\n draft: 'Saving Note',\n published: 'Submitting Note',\n};\n\nexport const EditNote: React.FC = observer(\n ({\n formState,\n formTitle,\n mode,\n showSensitivity,\n onChange,\n onValidateFormItem,\n onSubmitNote,\n onSubmitDraft,\n onUndoChanges,\n isFormStateDirty,\n isOkToSaveAsDraft,\n isSubmitting,\n }) => {\n const onSubmitForm = (e: FormEvent) => {\n e.preventDefault();\n onSubmitNote();\n };\n\n const handleSaveAsDraft = (e: FormEvent) => {\n e.preventDefault();\n onSubmitDraft();\n };\n\n const getFormItemClass = (item: FormItem): string => {\n const classes = [styles.formItem];\n\n if (styles[item]) {\n classes.push(styles[item]);\n }\n\n const errors = formState.errors;\n if (errors[item]) {\n classes.push(styles.error);\n }\n\n if (!isFormStateDirty) {\n classes.push(styles.pristine);\n }\n\n return classes.join(' ');\n };\n\n const getValidationStatus = (item: FormItem): ValidationStatus => {\n if (Object.prototype.hasOwnProperty.call(formState.errors, item)) {\n return formState.errors[item] === undefined ? 'valid' : 'error';\n }\n return 'hidden';\n };\n\n return (\n <>\n \n
    \n
    \n

    {formTitle}

    \n \n
    \n \n
    \n onChange({ ...formState, employee }, 'employee')}\n defaultValue={formState.employee}\n onBlur={() => onValidateFormItem('employee')}\n />\n
    \n \n
    {formState.errors.employee}
    \n
    \n\n {formState.employee && (\n
    \n \n \n \n onChange({\n ...formState,\n isFaceToFaceDiscussion:\n (event.target as HTMLInputElement).value === 'true',\n })\n }\n onBlur={() => onValidateFormItem('isFaceToFaceDiscussion')}>\n }\n label=\"Direct conversation with the employee\"\n data-testid=\"is-face-to-face\"\n />\n }\n label=\"Feedback/observations about the employee\"\n />\n \n \n \n
    {formState.errors.isFaceToFaceDiscussion}
    \n
    \n )}\n\n
    \n \n
    \n \n onChange({ ...formState, date: event.currentTarget.value }, 'date')\n }\n onBlur={() => onValidateFormItem('date')}\n inputProps={{\n 'data-testid': 'date',\n max: moment().format('YYYY-MM-DD'),\n min: moment().add(-1, 'year').format('YYYY-MM-DD'),\n }}\n />\n
    \n \n
    {formState.errors.date}
    \n
    \n\n
    \n \n
    \n onChange({ ...formState, tags }, 'tags')}\n onBlur={() => onValidateFormItem('tags')}\n defaultValue={formState.tags}\n />\n
    \n \n {(formState.errors.tags || showSensitivity) && (\n
    {formState.errors.tags}
    \n )}\n
    \n\n {showSensitivity ? (\n
    \n \n \n \n onChange({\n ...formState,\n sensitivity: (event.target as HTMLInputElement).value as NoteSensitivity,\n })\n }\n onBlur={() => onValidateFormItem('sensitivity')}>\n }\n label={\n <>\n Sensitive\n \n Marking this note as sensitive will make this note visible to only\n M & A users.\n \n }>\n \n \n \n }\n />\n }\n label={\n <>\n Non-Sensitive\n \n Marking this note as non-sensitive will make this note visible to\n M, A, B1 & B2 users.
    C users will not have visibility.\n \n }>\n \n \n \n }\n />\n \n
    \n \n
    {formState.errors.sensitivity}
    \n
    \n ) : formState.tags?.some((p) => p.isSensitive) ? (\n
    You have selected a sensitive tag
    \n ) : formState.tags?.some((p) => p.reviewRequired) ? (\n
    \n You have selected a sensitive tag which requires a review\n
    \n ) : (\n !formState.errors.tags &&
    \n )}\n\n
    \n \n
    \n \n onChange({ ...formState, subject: event.currentTarget.value })\n }\n onBlur={() => onValidateFormItem('subject')}\n inputProps={{\n 'data-testid': 'subject',\n }}\n />\n
    \n \n
    {formState.errors.subject}
    \n
    \n\n
    \n \n
    \n onChange({ ...formState, description })}\n onBlur={() => isFormStateDirty && onValidateFormItem('description')}\n />\n
    \n \n
    \n
    {formState.errors.description}
    \n \n \n Markdown\n {' '}\n is supported\n \n
    \n
    \n\n
    \n \n onChange({ ...formState, isPeopleLeaderConversation: event.target.checked })\n }\n inputProps={\n {\n 'data-testid': 'isPeopleLeaderConvoCheckbox',\n } as CheckboxProps\n }\n />\n }\n label=\"This is a People Leader conversation\"\n className={styles.checkbox}\n />\n
    \n\n
    \n {isSubmitting ? (\n \n ) : (\n <>\n \n Undo Changes\n \n \n
    \n {(mode === 'create' || formState.noteStatus === 'draft') && (\n \n Save Draft\n \n \n )}\n \n {mode === 'create' || formState.noteStatus === 'draft' ? 'Submit' : 'Save'}\n \n \n
    \n \n )}\n
    \n \n
    \n
    \n \n );\n }\n);\n","import React, { ReactNode } from 'react';\nimport { Tab, Tabs } from '@material-ui/core';\nimport styles from './Tab.module.scss';\n\nexport interface TabItem {\n title: ReactNode;\n testId?: string;\n disabled?: boolean;\n component?: ReactNode;\n}\n\ninterface Props {\n className?: string;\n items: TabItem[];\n centered?: boolean;\n value: number;\n onChange?: (selectedIndex: number) => void;\n}\n\nexport const TabComponent: React.FC = ({ items, centered, onChange, value, className }) => {\n const handleChange = (event: unknown, newValue: number) => {\n onChange && onChange(newValue);\n };\n\n return (\n \n {items.map((item, index) => (\n \n ))}\n \n );\n};\n","import React, { useState } from 'react';\nimport styles from './NoteCard.module.scss';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport { INote } from 'domain/store/NoteModel';\nimport {\n IconButton,\n ListItem,\n ListItemAvatar,\n ListItemSecondaryAction,\n ListItemText,\n Typography,\n} from '@material-ui/core';\nimport { Delete } from '@material-ui/icons';\nimport { NoteStatusChip } from 'views/routes/myNotes/components/listNotes/components/NoteStatusChip';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\n\ninterface INoteCardProps {\n note: INote;\n selected: boolean;\n onClick: () => void;\n onDelete?: (noteId: number) => void;\n divider: boolean;\n}\n\nexport const NoteCard: React.FC = ({\n note,\n selected,\n onClick,\n onDelete,\n divider,\n}) => {\n const [showAlertDialog, setShowAlertDialog] = useState(false);\n\n const onDisagreeClick = () => {\n setShowAlertDialog(false);\n };\n\n const onDeleteButtonClick = () => {\n setShowAlertDialog(true);\n };\n\n const onAgreeClick = () => {\n setShowAlertDialog(false);\n onDelete && onDelete(note.noteId);\n };\n\n return (\n <>\n \n (e.target as Element).namespaceURI !== 'http://www.w3.org/2000/svg' && onClick()\n }\n alignItems={'flex-start'}\n divider={divider}\n button={true}>\n \n \n \n \n primary={\n \n \n {note.subject} \n \n \n {(note.modifiedDateMoment ?? note.createdDateMoment).fromNow()}\n \n \n }\n secondaryTypographyProps={{ component: 'span' }}\n secondary={\n <>\n
    {note.employee.displayName}
    \n
    {note.eventDateMoment!.format('DD/MM/YY')}
    \n {note.canDelete && (\n \n \n \n \n \n )}\n \n }\n />\n \n \n \n );\n};\n","import { List, ListItem, ListItemText } from '@material-ui/core';\nimport { useNavigate } from 'hooks/useNavigate';\nimport { useStore } from 'hooks/useStore';\nimport { useUser } from 'hooks/useUser';\nimport { observer } from 'mobx-react-lite';\nimport React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { CREATE_NOTE_ROUTE_PATH, EDIT_NOTE_ROUTE_PATH } from 'views/routes/Routes';\nimport { NoteCard } from './components/NoteCard';\ninterface IRecentListProps {\n selectedNoteId: number;\n resetForm: () => void;\n}\n\nexport const RecentList = observer((props: IRecentListProps) => {\n const { previous, loadSubmittedNotes, deleteNote } = useUser();\n const navigate = useNavigate();\n const { notifications } = useStore();\n const [isLoading, setLoading] = useState(true);\n const history = useHistory();\n\n useEffect(() => {\n let active = true;\n loadSubmittedNotes()\n .then(() => {\n active && setLoading(false);\n })\n .catch(() => {\n notifications.addError('Unable to load your submitted notes');\n active && setLoading(false);\n });\n return () => {\n active = false;\n };\n }, [loadSubmittedNotes, notifications]);\n\n const onAgreeClickDeleteNote = (noteId: number) => {\n deleteNote(noteId).then(() => {\n loadSubmittedNotes();\n props.resetForm();\n history.replace(CREATE_NOTE_ROUTE_PATH);\n });\n };\n\n if (previous?.length && !isLoading) {\n const handleNoteSelected = (noteId: number) => {\n if (props.selectedNoteId === noteId) return;\n\n navigate(`${EDIT_NOTE_ROUTE_PATH}/${noteId}`);\n };\n return (\n \n {previous.map((note, index, array) => (\n handleNoteSelected(note.noteId)}\n onDelete={onAgreeClickDeleteNote}\n divider={index < array.length - 1}\n />\n ))}\n \n );\n }\n return (\n <>\n {isLoading ? (\n \n ) : (\n \n \n No recent notes to display}\n />\n \n \n )}\n \n );\n});\n","import { List, ListItem, ListItemText } from '@material-ui/core';\nimport { useNavigate } from 'hooks/useNavigate';\nimport { useStore } from 'hooks/useStore';\nimport { useUser } from 'hooks/useUser';\nimport { observer } from 'mobx-react-lite';\nimport React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { CREATE_NOTE_ROUTE_PATH, EDIT_NOTE_ROUTE_PATH } from 'views/routes/Routes';\nimport { NoteCard } from './components/NoteCard';\n\ninterface IDraftListProps {\n selectedNoteId: number;\n resetForm: () => void;\n}\n\nexport const DraftList = observer((props: IDraftListProps) => {\n const { drafts, deleteNote, loadDraftNotes } = useUser();\n const navigate = useNavigate();\n const { notifications } = useStore();\n const [isLoading, setLoading] = useState(true);\n const history = useHistory();\n\n useEffect(() => {\n let active = true;\n loadDraftNotes()\n .then(() => {\n active && setLoading(false);\n })\n .catch(() => {\n active && notifications.addError('Unable to load your draft notes');\n active && setLoading(false);\n });\n return () => {\n active = false;\n };\n }, [loadDraftNotes, notifications]);\n\n if (drafts?.length && !isLoading) {\n const handleNoteSelected = (noteId: number) => {\n if (props.selectedNoteId === noteId) return;\n\n navigate(`${EDIT_NOTE_ROUTE_PATH}/${noteId}`);\n };\n\n const onAgreeClickDeleteNote = (noteId: number) => {\n deleteNote(noteId).then(() => {\n loadDraftNotes();\n props.resetForm();\n history.replace(CREATE_NOTE_ROUTE_PATH);\n });\n };\n\n return (\n <>\n \n {drafts.map((note, index, array) => (\n handleNoteSelected(note.noteId)}\n onDelete={onAgreeClickDeleteNote}\n divider={index < array.length - 1}\n />\n ))}\n \n \n );\n }\n return (\n <>\n {isLoading ? (\n \n ) : (\n \n \n No drafts to display}\n />\n \n \n )}\n \n );\n});\n","import React, { useEffect, useState } from 'react';\nimport styles from './ListNotes.module.scss';\nimport { TabComponent, TabItem } from 'views/components/tab/Tab';\nimport { RecentList } from './RecentList';\nimport { DraftList } from './DraftList';\nimport { Button, Grid } from '@material-ui/core';\nimport { useNavigate } from 'hooks/useNavigate';\nimport { CREATE_NOTE_ROUTE_PATH } from 'views/routes/Routes';\n\ninterface IListNotesProps {\n selectedNoteId?: number;\n showDrafts: boolean;\n resetForm: () => void;\n}\n\nexport const ListNotes: React.FC = ({ selectedNoteId, showDrafts, resetForm }) => {\n const [activeTab, setActiveTab] = useState(showDrafts ? 0 : 1);\n const navigate = useNavigate();\n\n useEffect(() => setActiveTab(showDrafts ? 0 : 1), [showDrafts]);\n\n const tabItems: TabItem[] = [\n {\n title: 'Drafts',\n testId: 'list-notes-header-drafts',\n component: ,\n },\n {\n title: 'Previous',\n testId: 'list-notes-header-previous',\n component: ,\n },\n ];\n\n const handleTabChange = (selectedIndex: number) => {\n setActiveTab(selectedIndex);\n };\n\n return (\n
    \n \n \n

    Notes

    \n
    \n \n navigate(CREATE_NOTE_ROUTE_PATH)}>\n New Note\n \n \n
    \n \n
    {tabItems[activeTab].component}
    \n
    \n );\n};\n","import { useLocation } from 'react-router-dom';\nimport querystring, { ParsedQuery } from 'query-string';\n\nexport function useQueryParams(): Params {\n const { search } = useLocation();\n const params = querystring.parse(search);\n return params as Params;\n}\n","import { Box, Link, Typography } from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport cn from 'classnames';\nimport { IEmployee } from 'domain/store/employeeJourney/EmployeeModel';\nimport { EmployeeStatusLabels } from 'domain/store/employeeJourney/EmployeeStatusModel';\nimport React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { EmployeeSidebarDivider } from 'views/components/EmployeeSidebarDivider/EmployeeSidebarDivider';\nimport { StatusIcon } from 'views/components/EmployeeStatus/StatusIcon/StatusIcon';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport { EMPLOYEE_JOURNEYS_ROUTE_PATH } from 'views/routes/Routes';\nimport { SidebarContent } from 'views/routes/employeeJourney/components/employeeSidebar/components/SidebarContent/SidebarContent';\nimport styles from './EmployeeNoteSidebar.module.scss';\n\ninterface IEmployeeNoteSidebarProps {\n className?: string;\n employee?: IEmployee;\n isLoading: boolean;\n}\n\nexport const EmployeeNoteSidebar: React.FC = ({\n className,\n employee,\n isLoading,\n}) => {\n return (\n \n \n
    \n \n
    \n
    \n \n {\n \n \n {!isLoading ? employee?.displayName : }\n \n \n }\n \n\n {employee?.isFormerEmployee && (\n \n (Archived)\n \n )}\n \n \n {!isLoading ? `${employee?.position}` : }\n \n \n {/* \n \n {!isLoading ? `${employee?.capability}` : }\n \n */}\n
    \n
    \n \n \n \n \n \n \n \n \n \n\n {(!employee || employee!.flags.status) && (\n <>\n \n \n {employee ? : }\n \n {employee ? (\n \n ) : (\n \n )}\n \n \n \n )}\n\n {(!employee || employee!.flags.primaryFlag) && (\n <>\n \n \n {employee ? (\n \n ) : (\n \n )}\n \n \n )}\n\n {employee &&\n (employee!.flags.flightRisk ||\n employee!.flags.longTermLeave ||\n employee!.flags.primaryFlag ||\n employee!.flags.roleChangePathway) && (\n <>\n \n \n \n {employee!.flags.flightRisk?.value?.isFlightRisk && (\n \n )}\n {employee.probation.isInProbation && (\n \n )}\n {employee!.flags.roleChangePathway?.value?.hasRoleChangePathway && (\n \n )}\n {employee!.flags.longTermLeave?.value?.isOnLongTermLeave && (\n \n )}\n \n \n )}\n {/* No leave or PD data available */}\n {/* {employee && employee.leaveDetails && (\n <>\n \n \n \n \n Balances\n \n \n \n \n \n \n \n \n \n \n )} */}\n \n );\n};\n\ninterface IFlagTextProps {\n text: string;\n testId: string;\n}\n\nconst FlagText = (props: IFlagTextProps) => {\n return (\n \n \n {props.text}\n \n \n );\n};\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { EditNote } from './components/editNote/EditNote';\nimport { ListNotes } from './components/listNotes/ListNotes';\nimport { ITag } from 'domain/store/TagsModel';\nimport { INoteRequest, NoteSensitivity, NoteStatus } from 'domain/store/NoteModel';\nimport { useUser } from 'hooks/useUser';\nimport { useStore } from 'hooks/useStore';\nimport moment from 'moment';\nimport styles from './MyNotes.module.scss';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { EmployeeSearchResult } from 'domain/store/singletons/GraphModel';\nimport { Redirect, useParams } from 'react-router-dom';\nimport { useNavigate } from 'hooks/useNavigate';\nimport { useQueryParams } from 'hooks/useQueryParams';\nimport { CREATE_NOTE_ROUTE_PATH, UNAUTHORISED_ROUTE_PATH } from 'views/routes/Routes';\nimport { Grid, Hidden } from '@material-ui/core';\nimport { EmployeeNoteSidebar } from 'views/routes/myNotes/components/employeeNoteSidebar/EmployeeNoteSidebar';\nimport { AlertDialog, AlertDialogProps } from 'views/components/alertDialog/AlertDialog';\nimport { useGraph } from 'hooks/useGraph';\nimport { IEmployee } from 'domain/store/employeeJourney/EmployeeModel';\nimport { usePermissions } from 'hooks/usePermissions';\n\nexport type FormItem =\n | 'employee'\n | 'date'\n | 'tags'\n | 'subject'\n | 'description'\n | 'isPeopleLeaderConversation'\n | 'sensitivity'\n | 'isFaceToFaceDiscussion';\nexport type FormError = { [key in FormItem]?: string };\n\n// Employee needs a null state in order to reset the Employee field. This a quirk of Material UI\nexport interface IFormState {\n employee?: EmployeeSearchResult | null;\n date: string;\n tags?: ITag[];\n subject: string;\n description: string;\n isPeopleLeaderConversation: boolean;\n errors: FormError;\n noteStatus: NoteStatus;\n sensitivity: NoteSensitivity | undefined;\n isFaceToFaceDiscussion: boolean | undefined;\n}\n\nconst MAX_SUBJECT_LENGTH = 256;\n\nexport type ModeType = 'create' | 'edit';\n\nexport interface MyNotesProps {\n mode: ModeType;\n}\n\nconst immutableEmptyFormState = (): IFormState => {\n return {\n employee: null,\n date: '',\n tags: [],\n subject: '',\n description: '',\n isPeopleLeaderConversation: false,\n errors: {},\n noteStatus: 'draft',\n sensitivity: undefined,\n isFaceToFaceDiscussion: undefined,\n };\n};\n\nconst immutableEmptyAlertDialog = (): AlertDialogProps => {\n return {\n isOpen: false,\n title: '',\n text: '',\n agreeButtonText: undefined,\n disagreeButtonText: undefined,\n onAgreeClick: undefined,\n onDisagreeClick: undefined,\n };\n};\n\nexport const MyNotes: React.FC = ({ mode }) => {\n const store = useStore();\n const userStore = useUser();\n const { notes } = usePermissions();\n const navigate = useNavigate();\n const { noteId } = useParams<{ noteId?: string }>();\n const { employeeId } = useQueryParams<{ employeeId: string | null }>();\n const { loadEmployee } = useGraph();\n const [showDrafts, setShowDrafts] = useState(true);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [isOkToSaveAsDraft, setisOkToSaveAsDraft] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [formState, setFormState] = useState(immutableEmptyFormState());\n const [validationQueue, setValidationQueue] = useState([]);\n const [initialFormState, setInitialFormState] = useState(immutableEmptyFormState());\n const [redirect, setRedirect] = useState('');\n const [alertDialog, setAlertDialog] = useState(immutableEmptyAlertDialog());\n const [employee, setEmployee] = useState();\n const [isLoadingEmployee, setIsLoadingEmployee] = useState(false);\n\n useEffect(() => {\n if (noteId) return;\n loadEmployee.reset();\n setFormState(immutableEmptyFormState());\n setInitialFormState(immutableEmptyFormState());\n setIsSubmitting(false);\n setisOkToSaveAsDraft(false);\n setValidationQueue([]);\n setAlertDialog(immutableEmptyAlertDialog());\n setRedirect(null);\n setEmployee(undefined);\n setIsLoadingEmployee(false);\n }, [loadEmployee, mode, employeeId, noteId]);\n\n const showSensitivity = useCallback((): boolean => {\n if (!notes.canBypassReview || !formState.tags) {\n return false;\n }\n\n let showSensitivity = false;\n for (const tag of formState.tags) {\n if (tag.isSensitive) {\n return false;\n }\n\n if (tag.reviewRequired) {\n showSensitivity = true;\n }\n }\n\n return showSensitivity;\n }, [notes.canBypassReview, formState.tags]);\n\n const handleFormStateChange = useCallback(\n (state: IFormState, item?: FormItem | FormItem[]) => {\n item && setValidationQueue(validationQueue.concat(item));\n\n if (item === 'employee') setEmployee(undefined); // clear sidebar\n\n setFormState(state);\n },\n [validationQueue]\n );\n\n useEffect(() => {\n const setFormStateEmployee = (e?: IEmployee | null) => {\n const state: IFormState = {\n ...formState,\n employee: e,\n };\n setInitialFormState(state);\n setFormState(state);\n setValidationQueue((self) => self.concat('employee'));\n setAlertDialog(immutableEmptyAlertDialog());\n };\n\n let active = true;\n const currentEmployeeId = formState.employee?.idpId ?? employeeId;\n if (currentEmployeeId) {\n setIsLoadingEmployee(true);\n loadEmployee.searchForEmployee(currentEmployeeId).then((foundEmployee) => {\n setEmployee(foundEmployee ?? undefined);\n if (loadEmployee.state === 'unauthorized') {\n if (employeeId || noteId) {\n active && setRedirect(UNAUTHORISED_ROUTE_PATH);\n } else {\n setAlertDialog({\n isOpen: true,\n title: 'Not Authorised',\n text: 'You are not authorised to add a note for this employee.',\n agreeButtonText: 'OK',\n onAgreeClick: () => setFormStateEmployee(null),\n });\n }\n } else if (foundEmployee !== null && employeeId && !formState.employee) {\n active && setFormStateEmployee(foundEmployee);\n }\n setIsLoadingEmployee(false);\n });\n } else {\n setEmployee(undefined);\n }\n return () => {\n active = false;\n };\n // Including the suggested formState as a dependency will cause the employee to be re-loaded every time the form changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [formState.employee, employeeId, loadEmployee, noteId]);\n\n const isFormStateDirty = useCallback(() => {\n if (formState.employee?.idpId !== initialFormState.employee?.idpId) {\n return true;\n }\n if (formState.date !== initialFormState.date) {\n return true;\n }\n if (formState.subject !== initialFormState.subject) {\n return true;\n }\n if (formState.tags?.length !== initialFormState.tags?.length) {\n return true;\n }\n if (formState.tags && initialFormState.tags) {\n const origIds = initialFormState.tags.map((t) => t.tagId);\n const currentIds = formState.tags.map((t) => t.tagId);\n if (origIds.filter((t) => !currentIds.includes(t)).length !== 0) {\n return true;\n }\n }\n if (formState.subject !== initialFormState.subject) {\n return true;\n }\n if (formState.isPeopleLeaderConversation !== initialFormState.isPeopleLeaderConversation) {\n return true;\n }\n if (formState.isFaceToFaceDiscussion !== initialFormState.isFaceToFaceDiscussion) {\n return true;\n }\n return formState.description !== initialFormState.description;\n }, [formState, initialFormState]);\n\n const getNoteById = useCallback(\n async (id: string): Promise => {\n const noteId = Number(id);\n const response = await userStore.loadEditNote(noteId);\n\n return {\n ...immutableEmptyFormState(),\n employee: response.employee,\n date: response.eventDateMoment!.format('yyyy-MM-DD'),\n tags: response.tags,\n subject: response.subject,\n description: response.content || '',\n isPeopleLeaderConversation: response.isPeopleLeaderConversation,\n noteStatus: response.status,\n sensitivity: response.sensitivity,\n isFaceToFaceDiscussion: response.isFaceToFaceDiscussion,\n };\n },\n [userStore]\n );\n\n useEffect(() => {\n let active = true;\n if (noteId) {\n active && setIsLoading(true);\n active && setShowDrafts(false); //default to previous tab if editing an existing note.\n active &&\n getNoteById(noteId)\n .then((note: IFormState) => {\n active && setShowDrafts(note.noteStatus === 'draft');\n active && setInitialFormState(note);\n active && setFormState(note);\n })\n .catch(() => {\n active && setFormState(immutableEmptyFormState());\n active && setInitialFormState(immutableEmptyFormState());\n if (active) {\n store.notifications.addError(\n 'There was an error loading the note. Please try again later.'\n );\n }\n })\n .finally(() => {\n active && setIsLoading(false);\n active &&\n setValidationQueue([\n 'employee',\n 'date',\n 'tags',\n 'subject',\n 'description',\n 'isFaceToFaceDiscussion',\n ]);\n });\n }\n return () => {\n active = false;\n };\n }, [noteId, getNoteById, store.notifications]);\n\n const createNoteRequest = (\n employee: EmployeeSearchResult,\n tags: number[],\n sensitivity: NoteSensitivity | undefined\n ): INoteRequest => {\n return {\n employeeIdpId: employee.idpId,\n content: formState.description,\n tags: tags,\n eventDate: formState.date,\n subject: formState.subject,\n isPeopleLeaderConversation: formState.isPeopleLeaderConversation,\n sensitivity: sensitivity,\n noteStatus: undefined,\n isFaceToFaceDiscussion: formState.isFaceToFaceDiscussion,\n };\n };\n\n const saveNote = async (noteRequest: INoteRequest) => {\n await userStore\n .saveNote(noteRequest, Number(noteId) || undefined)\n .then(() => {\n store.notifications.addSuccess('The note is saved');\n resetForm();\n setShowDrafts(noteRequest.noteStatus === 'draft');\n if (noteRequest.noteStatus === 'draft') {\n userStore.loadDraftNotes();\n } else {\n userStore.loadSubmittedNotes();\n }\n navigate(CREATE_NOTE_ROUTE_PATH);\n })\n .catch((e) => {\n if (e?.response?.status === 403) {\n store.notifications.addError('Not authorised to save note for employee');\n } else if (e?.response?.status === 409) {\n store.notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else {\n store.notifications.addError('Unable to save note, please try again');\n }\n })\n .finally(() => setIsSubmitting(false));\n };\n\n const handleSubmitNote = async () => {\n if (handleValidation()) {\n const employee: EmployeeSearchResult | undefined | null = formState.employee;\n if (employee) {\n const tags = formState.tags?.map((t) => t.tagId) || [];\n const noteRequest = createNoteRequest(employee, tags, formState.sensitivity);\n setIsSubmitting('published');\n await saveNote(noteRequest);\n }\n }\n };\n\n const handleSubmitDraft = async () => {\n if (handleDraftValidation()) {\n const employee: EmployeeSearchResult | undefined | null = formState.employee;\n if (employee) {\n const tags = formState.tags?.map((t) => t.tagId) || [];\n const noteRequest = createNoteRequest(employee, tags, formState.sensitivity);\n noteRequest.noteStatus = 'draft';\n setIsSubmitting('draft');\n await saveNote(noteRequest);\n }\n }\n };\n\n const handleDraftValidation = useCallback(() => {\n return (\n formState.employee !== undefined &&\n formState.employee !== null &&\n formState.date.trim().length > 0 &&\n formState.subject.trim().length > 0 &&\n formState.subject.length <= MAX_SUBJECT_LENGTH &&\n formState.isFaceToFaceDiscussion !== undefined &&\n ((formState.tags?.length || 0) > 0 || formState.description.trim().length > 0)\n );\n }, [formState]);\n\n useEffect(() => {\n setisOkToSaveAsDraft(handleDraftValidation());\n }, [formState, handleDraftValidation]);\n\n const getValidationError = useCallback(\n (item: FormItem): string | undefined => {\n const validationErrors: FormError = {\n employee: formState.employee ? undefined : 'Please select an employee.',\n date: formState.date.length\n ? moment().diff(formState.date) < 0\n ? 'Date cannot be in the future'\n : undefined\n : 'Please select a date.',\n tags: (formState.tags?.length || 0) > 0 ? undefined : 'Please select at least one tag.',\n subject: formState.subject\n ? formState.subject.length > MAX_SUBJECT_LENGTH\n ? 'Subject is too long. Please provide a subject less than 256 characters.'\n : undefined\n : 'Please provide a subject.',\n description: formState.description ? undefined : 'Please provide details.',\n sensitivity:\n showSensitivity() && formState.sensitivity === undefined\n ? 'Please specify the sensitivity.'\n : undefined,\n isFaceToFaceDiscussion:\n formState.isFaceToFaceDiscussion === undefined\n ? 'Please specify whether this was a \"Direct conversation with the employee\" or \"Feedback/observations about the employee\".'\n : undefined,\n };\n\n return validationErrors[item];\n },\n [formState, showSensitivity]\n );\n\n const handleValidateFormItem = useCallback(\n (name: FormItem) => {\n const newState = {\n ...formState,\n };\n\n newState.errors[name] = getValidationError(name);\n setFormState(newState);\n },\n [formState, getValidationError]\n );\n\n const handleValidation = () => {\n const newErrorState = {\n employee: getValidationError('employee'),\n date: getValidationError('date'),\n tags: getValidationError('tags'),\n subject: getValidationError('subject'),\n description: getValidationError('description'),\n sensitivity: notes.canBypassReview ? getValidationError('sensitivity') : undefined,\n isFaceToFaceDiscussion: getValidationError('isFaceToFaceDiscussion'),\n };\n setFormState({ ...formState, errors: newErrorState });\n const invalid = Object.values(newErrorState).some((v) => v !== undefined);\n\n return !invalid;\n };\n\n useEffect(() => {\n if (validationQueue.length) {\n const errors = formState.errors;\n validationQueue.forEach((item) => {\n errors[item] = getValidationError(item);\n });\n setFormState({ ...formState, errors });\n setValidationQueue([]);\n }\n }, [validationQueue, handleValidateFormItem, formState, getValidationError]);\n\n const resetForm = () => {\n setEmployee(undefined);\n setFormState(immutableEmptyFormState());\n setInitialFormState(immutableEmptyFormState());\n setIsSubmitting(false);\n };\n\n const onAgreeClickRestoreInitialFormValues = () => {\n setFormState({ ...initialFormState, errors: {} });\n setAlertDialog(immutableEmptyAlertDialog());\n };\n\n const onDisagreeClick = () => setAlertDialog(immutableEmptyAlertDialog());\n\n const onUndoPrompt = () => {\n const shouldShowAlert = isFormStateDirty() && !isSubmitting;\n setAlertDialog({\n isOpen: shouldShowAlert,\n title: 'Undo changes',\n text: 'Are you sure you want to undo your changes?',\n onAgreeClick: onAgreeClickRestoreInitialFormValues,\n onDisagreeClick: onDisagreeClick,\n });\n };\n\n const formTitle =\n mode !== 'create' && initialFormState.subject?.trim().length > 0\n ? initialFormState.subject.trim()\n : 'New Note';\n\n return (\n \n {redirect && }\n \n \n \n \n {isLoading ? (\n \n ) : (\n \n )}\n \n\n \n\n {formState.employee && (\n \n \n
    \n \n
    \n
    \n
    \n )}\n
    \n );\n};\n","import { IAdmin } from 'domain/store/admin/AdminModel';\nimport { useStore } from './useStore';\n\nexport function useAdmin(): IAdmin {\n const { admin } = useStore();\n\n return admin;\n}\n","import React, { useEffect, useRef, useState } from 'react';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport Table from '@material-ui/core/Table';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport Paper from '@material-ui/core/Paper';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableBody from '@material-ui/core/TableBody';\nimport { observer } from 'mobx-react-lite';\nimport { useAdmin } from 'hooks/useAdmin';\nimport Box from '@material-ui/core/Box/Box';\nimport { SquadEmployeeRow } from './components/SquadEmployeeRow/SquadEmployeeRow';\nimport { useUser } from 'hooks/useUser';\nimport { useStore } from 'hooks/useStore';\nimport { Grid, TextField } from '@material-ui/core';\nimport { Autocomplete } from '@material-ui/lab';\nimport { IEmployeeItem } from 'domain/store/admin/EmployeeListModel';\nimport { getSnapshot } from 'mobx-state-tree';\nimport styles from './AssignSquads.module.scss';\nimport { debounce, isEmpty } from 'lodash';\nimport { AssignSquadDialog } from './components/AssignSquadDialog/AssignSquadDialog';\nimport { ChangeAccessDialog } from '../manageRoles/components/changeAccess/ChangeAccessDialog';\nimport { usePermissions } from '../../../../../hooks/usePermissions';\n\nenum AssignmentState {\n Closed = 0,\n AssignSquad = 1,\n AssignRole = 2,\n}\n\nexport const AssignSquads: React.FC = observer(() => {\n const {\n SquadAssignment: {\n squadAssignmentEmployees,\n loadEmployeesEligibleForSquadAssignment,\n squadAssignmentEmployeesSearch,\n searchEmployeesEligibleForSquadAssignment,\n selectedEmployee,\n setSquadAssignmentEmployees,\n searchState,\n state,\n },\n } = useAdmin();\n const { accessLevel, squadName, assignedSquads, getAllSquads } = useUser();\n const { canViewAllSquads } = usePermissions();\n const store = useStore();\n const [searchValue, setSearchValue] = useState(null);\n const [squads, setSquads] = useState([]);\n const [allSquads, setAllSquads] = useState([]);\n const inputTextRef = useRef();\n const [employeeToAssign, setEmployeeToAssign] = useState(null);\n const [currentAssignmentState, setCurrentAssignmentState] = useState(\n AssignmentState.Closed\n );\n\n const searchEmployee = useRef(\n debounce((query: string) => {\n const search = isEmpty(query) ? undefined : query;\n searchEmployeesEligibleForSquadAssignment(search, false).catch(() => {\n store.notifications.addError('Unable to load employees, please try again.');\n });\n }, 600)\n ).current;\n\n const getSearchPlaceholderText = () => {\n if (searchState === 'error') return 'Could not load results, try again';\n if (searchValue === null) return 'Type name to search';\n return searchState === 'loading' ? 'Searching' : 'No results';\n };\n\n useEffect(() => {\n loadEmployeesEligibleForSquadAssignment().catch(() => {\n store.notifications.addError('Unable to load employees, please try again.');\n });\n }, [loadEmployeesEligibleForSquadAssignment, store.notifications]);\n\n useEffect(() => {\n getAllSquads().then((result) => {\n const allowedAccessSquads = canViewAllSquads ? result : [...assignedSquads, squadName];\n const newSquadList = result.filter((canView) => allowedAccessSquads.includes(canView));\n setSquads(newSquadList);\n setAllSquads(result);\n });\n }, [assignedSquads, getAllSquads, squadName, canViewAllSquads]);\n\n const isEmployeeAccessLevelBelowUser = (employeeAccessLevel: string) => {\n if (accessLevel === 'A' && employeeAccessLevel !== 'M' && employeeAccessLevel !== 'A')\n return true;\n return accessLevel === 'M' && employeeAccessLevel !== 'M';\n };\n\n const handleClose = () => {\n setEmployeeToAssign(null);\n setCurrentAssignmentState(AssignmentState.Closed);\n };\n\n return (\n
    \n \n \n option?.name}\n options={getSnapshot(squadAssignmentEmployeesSearch) as IEmployeeItem[]}\n noOptionsText={getSearchPlaceholderText()}\n autoComplete\n filterSelectedOptions\n className={styles.search}\n value={selectedEmployee}\n onInputChange={(_, newInputValue) => {\n if (searchValue !== newInputValue) {\n setSearchValue(newInputValue);\n searchEmployee(newInputValue);\n }\n }}\n getOptionSelected={(option: IEmployeeItem, value: IEmployeeItem) =>\n option.idpId === value?.idpId\n }\n onChange={(_, value, reason) => {\n if (reason === 'clear') {\n loadEmployeesEligibleForSquadAssignment().catch(() => {\n store.notifications.addError('Unable to load employees, please try again.');\n });\n }\n setSquadAssignmentEmployees(value);\n }}\n renderInput={(params) => (\n \n )}\n renderOption={(option: IEmployeeItem) => {\n return
    {option.name}
    ;\n }}\n />\n
    \n \n \n \n \n \n Name\n Position\n Access Level\n Squads\n Action\n \n \n \n {state === 'done'\n ? Array.from(squadAssignmentEmployees).map((employee) => (\n {\n setEmployeeToAssign(e);\n setCurrentAssignmentState(AssignmentState.AssignSquad);\n }}\n />\n ))\n : Array.from({ length: 6 }, (v, k) => k).map((i) => (\n \n ))}\n \n
    \n
    \n
    \n
    \n {employeeToAssign && (\n <>\n setCurrentAssignmentState(AssignmentState.AssignRole)}\n />\n \n \n )}\n
    \n );\n});\n","import React from 'react';\nimport { Grid } from '@material-ui/core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\n\nimport styles from './SquadNotSelected.module.scss';\n\nexport const SquadNotSelected: React.FC = () => {\n return (\n
    \n \n \n \n \n \n No Squad Selected\n \n Select a squad from the dropdown menu in the header above.\n \n
    \n );\n};\n","import React from 'react';\nimport { Button, Link, TableCell, TableRow } from '@material-ui/core';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { EMPLOYEE_JOURNEYS_ROUTE_PATH } from 'views/routes/Routes';\nimport { Skeleton } from '@material-ui/lab';\nimport styles from './EmployeeListRow.module.scss';\nimport { IEmployeeItem } from 'domain/store/admin/EmployeeListModel';\nimport { useStore } from 'hooks/useStore';\nimport { observer } from 'mobx-react-lite';\ninterface EmployeeListRowProps {\n employee: IEmployeeItem | null;\n canView: boolean;\n canChangeAccess: boolean;\n onAssignEmployee: (employee: IEmployeeItem) => void;\n}\n\nexport const EmployeeListRow: React.FC = observer(\n ({ canView, canChangeAccess, onAssignEmployee, employee }) => {\n const {\n notifications: { addError },\n } = useStore();\n\n return (\n <>\n \n \n
    \n
    \n \n
    \n
    \n {employee ? (\n canView ? (\n \n {employee.name}\n \n ) : (\n {employee.name}\n )\n ) : (\n \n )}\n
    \n
    \n
    \n \n {employee ? <>{`${employee?.position}`} : }\n \n \n {employee ? (\n <>\n {employee.accessLevelDisplayName} {employee.noAccessRequested ? '(Blocked)' : null}\n \n ) : (\n \n )}\n \n \n {employee ? (\n canChangeAccess ? (\n \n !canChangeAccess\n ? addError(\"You cannot send invitations for this person's role\")\n : onAssignEmployee(employee)\n }>\n Change Access\n \n ) : null\n ) : (\n \n )}\n \n
    \n \n );\n }\n);\n","import {\n Button,\n Dialog,\n DialogContent,\n DialogTitle,\n FormControl,\n FormControlLabel,\n FormLabel,\n IconButton,\n Radio,\n RadioGroup,\n Typography,\n} from '@material-ui/core';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { IEmployeeItem } from 'domain/store/admin/EmployeeListModel';\nimport React, { useState, useEffect, useCallback } from 'react';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport styles from './ChangeAccessDialog.module.scss';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faKey, faArrowCircleRight } from '@fortawesome/free-solid-svg-icons';\nimport { useAdmin } from 'hooks/useAdmin';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { observer } from 'mobx-react-lite';\nimport { useStore } from 'hooks/useStore';\nimport { api } from 'shared/api/interfaces';\nimport { utc } from 'moment';\n\ninterface IChangeAccessDialogProps {\n isOpen: boolean;\n employee: IEmployeeItem;\n closeDialog: () => void;\n}\n\nconst getAccessLevelValue = (level: string) => {\n switch (level) {\n case 'Unknown':\n return 0;\n case 'C':\n return 1;\n case 'B2':\n return 2;\n case 'B1':\n return 3;\n case 'A':\n return 4;\n case 'M':\n return 5;\n default:\n return 0;\n }\n};\n\nexport const ChangeAccessDialog: React.FC = observer((props) => {\n const {\n notifications,\n user: { selectedSquad },\n } = useStore();\n const {\n employees: {\n sendChangeAccessLevelInvitation,\n sendingRoleInvitationState,\n getLastChangeAccessLevelInvitationForEmployee,\n squadEmployees,\n loadSquadEmployees,\n squadEmployeesState,\n loadEmployees,\n },\n } = useAdmin();\n\n const [squadFilter, setSquadFilter] = useState();\n const [value, setValue] = useState(props.employee.accessLevel);\n const [filteredEmployees, setFilteredEmployees] = useState([]);\n const [lastInvitationForRole, setLastInvitationForRole] = useState<\n api.ChangeAccessLevelMessageDto | undefined\n >(undefined);\n\n useEffect(() => {\n if (props.isOpen) {\n setValue(props.employee.accessLevel);\n setLastInvitationForRole(undefined);\n getLastChangeAccessLevelInvitationForEmployee(props.employee.idpId).then((response) => {\n if (response.requestedRole !== props.employee.accessLevel) {\n setLastInvitationForRole(response);\n }\n });\n }\n }, [\n props.employee.accessLevel,\n props.isOpen,\n getLastChangeAccessLevelInvitationForEmployee,\n props.employee.idpId,\n ]);\n\n const filterEmployees = useCallback(() => {\n return squadEmployees.filter(\n (e) =>\n getAccessLevelValue(e.accessLevel) < getAccessLevelValue(value) &&\n e.idpId !== props.employee.idpId\n );\n }, [props.employee.idpId, squadEmployees, value]);\n\n useEffect(\n () => {\n if (props.isOpen) {\n const squads = props.employee.assignedSquads ?? [selectedSquad];\n if (squads !== squadFilter) {\n setFilteredEmployees([]);\n setSquadFilter(squads);\n loadSquadEmployees(squads, true).then(() => setFilteredEmployees(filterEmployees()));\n } else {\n setFilteredEmployees(filterEmployees());\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n filterEmployees,\n loadSquadEmployees,\n props.employee.assignedSquads,\n props.isOpen,\n selectedSquad,\n ]\n );\n\n const handleChange = (event: React.ChangeEvent) =>\n setValue((event.target as HTMLInputElement).value);\n\n const handleSubmit = (role?: string) =>\n sendChangeAccessLevelInvitation(props.employee.idpId, props.employee.accessLevel, role || value)\n .then((response) => {\n setLastInvitationForRole(response);\n props.closeDialog();\n loadEmployees(selectedSquad);\n })\n .catch((e) => {\n if (e?.response?.status === 409) {\n notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (e?.response?.status === 403) {\n notifications.addError('Not authorised to save changes.');\n } else {\n notifications.addError('Changes could not be saved, please try again.');\n }\n });\n\n return (\n \n \n Change Access\n \n \n \n \n \n
    \n
    \n \n
    \n {props.employee.name}\n {props.employee.position}\n {/* {props.employee.capability} */}\n {selectedSquad} Squad\n
    \n \n \n Current access: {props.employee.accessLevelDisplayName}{' '}\n {props.employee.noAccessRequested ||\n lastInvitationForRole?.requestedRole === 'Unknown'\n ? '(Blocked)'\n : null}\n \n
    \n
    \n \n \n Select access type:\n \n \n } label=\"Portfolio Leader\" />\n } label=\"Squad Leader\" />\n } label=\"Principal Consultant\" />\n } label=\"Managing Consultant\" />\n } label=\"Contributor\" />\n } label=\"No Access\" />\n \n \n
    \n
    \n
    \n {squadEmployeesState === 'loading' ? (\n \n ) : value === 'Unknown' ? (\n \n You are removing {props.employee.name}'s "YOUtopia Access" which will\n prevent them from accessing the YOUtopia app.\n \n ) : (\n
    \n \n Granting {props.employee.name} the "{value}" access will allow them to\n view:\n \n
    \n
      \n {filteredEmployees.map((e) => (\n
    1. \n {e.accessLevelDisplayName}\n - {e.name}\n - ({e.assignedSquads?.join(', ')})\n
    2. \n ))}\n
    \n
    \n
    \n )}\n
    \n {sendingRoleInvitationState === 'loading' ? (\n \n ) : (\n handleSubmit()}\n disabled={props.employee.accessLevel === value}\n variant=\"contained\"\n disableElevation\n color=\"primary\"\n data-testid=\"invite-button\">\n {value !== 'Unknown' ? 'Invite' : 'Continue'}\n \n \n )}\n
    \n
    \n {lastInvitationForRole && (\n \n \n {`${\n lastInvitationForRole.requestedRole !== 'Unknown'\n ? `Invitation to access ${lastInvitationForRole.requestedRoleDisplayName}`\n : 'Notification to remove access'\n }\n sent by ${lastInvitationForRole.requesterDisplayName}\n on ${utc(lastInvitationForRole.requestDate).local().format('DD MMMM YYYY')}`}\n \n handleSubmit(lastInvitationForRole.requestedRole)}\n data-testid=\"resend-button\">\n Resend?\n \n \n )}\n
    \n
    \n );\n});\n","import React from 'react';\nimport FirstPageIcon from '@material-ui/icons/FirstPage';\nimport LastPageIcon from '@material-ui/icons/LastPage';\nimport KeyboardArrowLeft from '@material-ui/icons/KeyboardArrowLeft';\nimport KeyboardArrowRight from '@material-ui/icons/KeyboardArrowRight';\nimport { IconButton } from '@material-ui/core';\nimport { TablePaginationActionsProps } from '@material-ui/core/TablePagination/TablePaginationActions';\nimport styles from './TablePaginationActions.module.scss';\n\nexport const TablePaginationActions: React.FC = ({\n count,\n page,\n rowsPerPage,\n onChangePage,\n}) => {\n return (\n
    \n onChangePage(e, 0)} disabled={page === 0} aria-label=\"first page\">\n \n \n onChangePage(e, page - 1)}\n disabled={page === 0}\n aria-label=\"previous page\">\n \n \n onChangePage(e, page + 1)}\n disabled={page >= Math.ceil(count / rowsPerPage) - 1}\n aria-label=\"next page\">\n \n \n onChangePage(e, Math.max(0, Math.ceil(count / rowsPerPage) - 1))}\n disabled={page >= Math.ceil(count / rowsPerPage) - 1}\n aria-label=\"last page\">\n \n \n
    \n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport styles from './ManageRoles.module.scss';\nimport { useUser } from 'hooks/useUser';\nimport { useAdmin } from 'hooks/useAdmin';\nimport { SquadNotSelected } from 'views/components/squadNotSelected/SquadNotSelected';\nimport TableContainer from '@material-ui/core/TableContainer';\nimport Table from '@material-ui/core/Table';\nimport TableHead from '@material-ui/core/TableHead';\nimport TableRow from '@material-ui/core/TableRow';\nimport Paper from '@material-ui/core/Paper';\nimport TableCell from '@material-ui/core/TableCell';\nimport TableBody from '@material-ui/core/TableBody';\nimport TablePagination from '@material-ui/core/TablePagination';\nimport { observer } from 'mobx-react-lite';\nimport { Autocomplete } from '@material-ui/lab';\nimport { Checkbox, FormControlLabel, TextField } from '@material-ui/core';\nimport { IEmployeeItem } from 'domain/store/admin/EmployeeListModel';\nimport { EmployeeListRow } from './components/employeeListRow/EmployeeListRow';\nimport { ChangeAccessDialog } from './components/changeAccess/ChangeAccessDialog';\nimport { TablePaginationActions } from 'views/components/table/TablePaginationActions';\n\nexport const ManageRoles: React.FC = observer(() => {\n const { selectedSquad, idpId, accessLevel } = useUser();\n const {\n employees: { employees, loadEmployees, state },\n } = useAdmin();\n\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [searchedEmployee, setSearchedEmployee] = useState(null);\n const [inputValue, setInputValue] = useState('');\n const [options, setOptions] = useState([]);\n const [showAllUnknownRoles, setShowAllUnknownRoles] = useState(false);\n const inputTextRef = useRef();\n const [employeeToAssign, setEmployeeToAssign] = useState(null);\n const [changeAccessDialogIsOpen, setChangeAccessDialogIsOpen] = React.useState(false);\n\n useEffect(() => {\n loadEmployees(selectedSquad, true);\n }, [loadEmployees, selectedSquad]);\n\n useEffect(() => {\n setPage(0);\n }, [employees, searchedEmployee, showAllUnknownRoles]);\n\n useEffect(() => {\n if (!inputValue) {\n setOptions([]);\n return;\n }\n\n const pattern = new RegExp(`^${inputValue}`, 'i');\n\n const givenNameMatches = employees\n .filter((e) => e.givenName.match(pattern))\n .sort((a, b) => a.givenName.localeCompare(b.givenName));\n\n const familyNameMatches = employees\n .filter((e) => e.familyName.match(pattern) && !givenNameMatches.includes(e))\n .sort((a, b) => a.familyName.localeCompare(b.familyName));\n\n setOptions([...givenNameMatches, ...familyNameMatches]);\n }, [inputValue, employees]);\n\n const filteredEmployees = employees\n .filter((e) => searchedEmployee || showAllUnknownRoles || e.accessLevel !== 'Unknown')\n .filter((e) => !searchedEmployee || e.idpId === searchedEmployee.idpId);\n\n const isEmployeeAccessLevelBelowUser = (employeeAccessLevel: string) => {\n if (accessLevel === 'A' && employeeAccessLevel !== 'M' && employeeAccessLevel !== 'A')\n return true;\n return accessLevel === 'M' && employeeAccessLevel !== 'M';\n };\n\n const handleClose = () => {\n setEmployeeToAssign(null);\n setChangeAccessDialogIsOpen(false);\n };\n const handleEmployeeAssignment = (e: IEmployeeItem | null) => {\n setEmployeeToAssign(e);\n setChangeAccessDialogIsOpen(true);\n };\n\n return (\n
    \n {selectedSquad ? (\n <>\n
    \n option.name}\n className={styles.search}\n options={options}\n autoComplete\n filterSelectedOptions\n value={searchedEmployee}\n onInputChange={(_, newInputValue) => setInputValue(newInputValue)}\n getOptionSelected={(option: IEmployeeItem, value: IEmployeeItem) =>\n option.idpId === value.idpId\n }\n onChange={(_, value) => setSearchedEmployee(value)}\n renderInput={(params) => (\n \n )}\n renderOption={(option: IEmployeeItem) => {\n return
    {option.name}
    ;\n }}\n />\n setShowAllUnknownRoles(value)}\n />\n }\n label=\"Show users with no access\"\n className={styles.checkbox}\n />\n
    \n \n \n \n \n Name\n Position\n Access Level\n Action\n \n \n \n {state === 'done'\n ? filteredEmployees\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((employee, index) => (\n \n ))\n : Array.from({ length: 10 }, (v, k) => k).map((i) => (\n {}}\n />\n ))}\n \n
    \n setPage(p)}\n page={page}\n rowsPerPage={rowsPerPage}\n ActionsComponent={TablePaginationActions}\n onChangeRowsPerPage={(e) => {\n setRowsPerPage(+e.target.value);\n setPage(0);\n }}\n />\n
    \n \n ) : (\n \n )}\n {employeeToAssign && (\n \n )}\n
    \n );\n});\n","import { Box, Button, TableCell, TableRow } from '@material-ui/core';\nimport Skeleton from '@material-ui/lab/Skeleton/Skeleton';\nimport { IEmployeeItem } from 'domain/store/admin/EmployeeListModel';\nimport { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport styles from './SquadEmployeeRow.module.scss';\n\nexport interface SquadEmployeeRowProps {\n employee: IEmployeeItem | null;\n canChangeAccess: boolean;\n assignEmployee: (employee: IEmployeeItem) => void;\n}\n\nexport const SquadEmployeeRow: React.FC = observer(\n ({ employee, canChangeAccess, assignEmployee }) => {\n return (\n \n \n \n \n {employee?.name}\n \n \n {employee ? employee?.position : }\n \n {employee ? employee?.accessLevelDisplayName : }\n \n \n {employee ? employee?.assignedSquads?.join(' / ') : }\n \n \n {employee ? (\n canChangeAccess ? (\n {\n assignEmployee(employee);\n }}\n color=\"primary\">\n Assign\n \n ) : null\n ) : (\n \n )}\n \n \n );\n }\n);\n","import {\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n Button,\n FormControlLabel,\n Checkbox,\n Grid,\n Box,\n DialogContentText,\n} from '@material-ui/core';\nimport { IEmployeeItem } from 'domain/store/admin/EmployeeListModel';\nimport { useAdmin } from 'hooks/useAdmin';\nimport { useStore } from 'hooks/useStore';\nimport { observer } from 'mobx-react-lite';\nimport React, { useState } from 'react';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport _ from 'lodash';\n\nexport interface AssignSquadDialogProps {\n isOpen: boolean;\n squads: string[];\n allSquads: string[];\n employee: IEmployeeItem;\n closeDialog: () => void;\n saveDialog: () => void;\n}\n\nexport const AssignSquadDialog: React.FC = observer(\n ({ isOpen, squads, allSquads, employee, closeDialog, saveDialog }) => {\n const initialAssignedSquads = employee.assignedSquads ? employee.assignedSquads : [];\n\n const squadSelectionChanged = () =>\n _.isEqual(_.sortBy(selectedSquads), _.sortBy(initialAssignedSquads));\n\n const allPossibleSquadsAreDeselected = () => !selectedSquads.some((s) => squads.includes(s));\n\n const {\n SquadAssignment: { assignSquads },\n } = useAdmin();\n\n const store = useStore();\n\n const [selectedSquads, setSelectedSquads] = useState(initialAssignedSquads);\n const [isLoading, setIsLoading] = useState(false);\n const [confirmation, setConfirmation] = useState(false);\n\n const handleOkClick = () => {\n setIsLoading(true);\n assignSquads({ employeeIdpId: employee.idpId, squads: selectedSquads })\n .then(() => {\n if (allPossibleSquadsAreDeselected()) {\n closeDialog();\n } else {\n saveDialog();\n }\n })\n .catch((e) => {\n setSelectedSquads(employee.assignedSquads ?? []);\n if (e?.response?.status === 409) {\n store.notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (e?.response?.status === 403) {\n store.notifications.addError('Not authorised to save changes.');\n } else {\n store.notifications.addError('Unable to assign squads, please try again.');\n }\n })\n .finally(() => {\n setIsLoading(false);\n });\n };\n\n const handleCancelClick = () => {\n setSelectedSquads(employee.assignedSquads ?? []);\n closeDialog();\n };\n\n const addRemoveSquad = (e: React.ChangeEvent, squad: string) => {\n if (e.target.checked) {\n setSelectedSquads([...selectedSquads, squad]);\n } else {\n setSelectedSquads(selectedSquads.filter((s) => s !== squad));\n }\n };\n\n return isOpen ? (\n \n Assign Squads\n \n {!confirmation ? (\n \n {allSquads.map((squad) => (\n \n }\n disabled={!squads.includes(squad)}\n onChange={(event) =>\n addRemoveSquad(event as React.ChangeEvent, squad)\n }\n label={squad}\n />\n \n ))}\n \n ) : (\n \n {selectedSquads.length > 0 ? (\n <>\n You're about to update assigned squads for "{employee.name}" to\n below squads. Do you wish to continue?\n
      \n {selectedSquads.map((squad) => (\n
    • \n - {squad}\n
    • \n ))}\n
    \n \n ) : (\n <>\n You're about to unassign all squads for "{employee.name}". Do you\n wish to continue?\n \n )}\n
    \n )}\n
    \n \n {isLoading ? (\n \n \n \n ) : (\n <>\n {!confirmation ? (\n setConfirmation(true)}\n color=\"primary\"\n disabled={squadSelectionChanged()}>\n Next\n \n ) : (\n \n )}\n\n \n \n )}\n \n \n ) : null;\n }\n);\n","import { AppBar, Tab, Tabs } from '@material-ui/core';\nimport { useBackToTopButton } from 'hooks/useBackToTopButton';\nimport { usePermissions } from 'hooks/usePermissions';\nimport React, { ReactNode } from 'react';\nimport { Link, Switch, Redirect, useLocation, Route } from 'react-router-dom';\nimport { BackToTopButton } from '../employeeJourney/components/employeeTimeline/components/backToTopButton/BackToTopButton';\nimport styles from './Admin.module.scss';\nimport { ManageRoles } from './components/manageRoles/ManageRoles';\nimport { AssignSquads } from './components/manageSquads/AssignSquads';\n\ninterface TabItem {\n link: string;\n title: ReactNode;\n component: ReactNode;\n disabled: boolean;\n}\n\nexport const Admin: React.FC = () => {\n const { canAssignSquads, canManageRoles } = usePermissions();\n const location = useLocation();\n\n const {\n showBackToTopButton,\n scrollToTopOfTimeline,\n scrollableContainerRef,\n } = useBackToTopButton();\n\n const tabItems: TabItem[] = [\n {\n title: 'Squad Member Access',\n component: ,\n link: 'manage-roles',\n disabled: !canManageRoles,\n },\n {\n title: 'Non-Squad Member Access',\n component: ,\n link: 'assign-squads',\n disabled: !canAssignSquads,\n },\n ].filter((t) => !t.disabled);\n\n const activeTab: number = tabItems.findIndex(\n (item) => location.pathname === `/admin/${item.link}`\n );\n\n return (\n
    \n \n \n {tabItems.map((item, index) => (\n \n ))}\n \n \n
    \n \n {tabItems.map(\n (item) =>\n !item.disabled && (\n \n {item.component}\n \n )\n )}\n \n \n {showBackToTopButton && (\n
    \n \n
    \n )}\n
    \n
    \n );\n};\n","import React from 'react';\nimport styles from 'views/routes/notFound/NotFound.module.scss';\n\nexport const NotFound: React.FC = function () {\n return (\n
    \n

    Oh no!

    \n

    The page you were looking for cannot be found. Try clicking on one of the menu links.

    \n
    \n );\n};\n","import React, { CSSProperties, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\nimport ReactMarkdown from 'react-markdown';\nimport { Button } from '@material-ui/core';\nimport styles from './SquadFeedTimelineItemContent.module.scss';\nimport 'github-markdown-css';\n\nconst FADE_HEIGHT = 114;\n\nexport const SquadFeedTimelineItemContent: React.FC<{ content: string }> = ({ content }) => {\n const item = useRef(null);\n\n const [needsFade, setNeedsFade] = useState(false);\n const [showAll, setShowAll] = useState(false);\n const toggleShowMore = () => setShowAll(!showAll);\n\n useEffect(() => {\n setNeedsFade((item.current?.clientHeight ?? 0) > FADE_HEIGHT);\n }, [item]);\n\n return (\n <>\n \n
    (item.current = e)} className=\"markdown-body\">\n \n
    \n {needsFade &&
    }\n
    \n {needsFade && (\n \n )}\n \n );\n};\n","import React, { useState } from 'react';\nimport { INote } from 'domain/store/NoteModel';\nimport { useNavigate } from 'hooks/useNavigate';\nimport { IconButton, Menu, MenuItem } from '@material-ui/core';\nimport { MoreVert, Person } from '@material-ui/icons';\nimport { EMPLOYEE_JOURNEYS_ROUTE_PATH } from 'views/routes/Routes';\n\nexport const SquadFeedTimelineItemAction: React.FC<{ note: INote }> = ({ note }) => {\n const navigate = useNavigate();\n const [menuEl, setMenuEl] = useState(null);\n const handleClose = () => setMenuEl(null);\n return (\n <>\n {\n setMenuEl(e.currentTarget);\n }}>\n \n \n \n {\n handleClose();\n navigate(`${EMPLOYEE_JOURNEYS_ROUTE_PATH}/${note.employee.idpId}`);\n }}>\n \n View Profile\n \n \n \n );\n};\n","import React from 'react';\nimport { INote } from 'domain/store/NoteModel';\nimport { Link as RouterLink } from 'react-router-dom';\nimport {\n TimelineConnector,\n TimelineContent,\n TimelineDot,\n TimelineItem,\n TimelineOppositeContent,\n TimelineSeparator,\n} from '@material-ui/lab';\nimport {\n Card,\n CardContent,\n CardHeader,\n Chip,\n Typography,\n Link,\n Grid,\n Box,\n} from '@material-ui/core';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport styles from './SquadFeedTimelineItem.module.scss';\nimport { SquadFeedTimelineItemContent } from 'views/routes/squad/components/squadFeed/components/SquadFeedTimelineItemContent';\nimport { Tag } from 'views/components/tag/Tag';\nimport { SquadFeedTimelineItemAction } from 'views/routes/squad/components/squadFeed/components/SquadFeedTimelineItemAction';\nimport { EMPLOYEE_JOURNEYS_ROUTE_PATH } from 'views/routes/Routes';\nimport { SensitiveAttribute } from 'views/components/sensitiveAttribute/SensitiveAttribute';\nimport { FaceToFaceDiscussionAttribute } from 'views/components/faceToFaceDiscussionAttribute/FaceToFaceDiscussionAttribute';\n\ninterface ISquadFeedTimelineItemProps {\n note: INote;\n connected: boolean;\n isFirstOfDate: boolean;\n}\n\nexport const SquadFeedTimelineItem: React.FC = ({\n note,\n connected,\n isFirstOfDate,\n}) => {\n return (\n \n \n \n {isFirstOfDate &&\n (note.modifiedDateMoment ?? note.createdDateMoment).local().format('dddd')}\n \n \n {isFirstOfDate &&\n (note.modifiedDateMoment ?? note.createdDateMoment).local().format('DD MMMM')}\n \n \n \n \n {connected && }\n \n \n \n \n \n }\n title={\n \n \n \n \n \n {note.subject}\n {note.isPeopleLeaderConversation === true && (\n \n )}\n \n \n \n \n \n \n \n {note.employee.displayName}\n \n \n \n \n \n {note.eventDateMoment!.local().format('DD/MM/YYYY')}\n \n \n \n \n \n {note.tags.map((tag, index) => (\n \n ))}\n \n \n \n \n \n \n \n \n Author: {note.author.displayName}\n \n \n \n \n \n \n Last modified: {note.modifiedDateMoment!.local().fromNow()}\n \n \n \n \n {note.sensitivity === 'sensitive' && (\n \n )}\n {note.sensitivity === 'non-sensitive' && (\n \n )}\n \n \n \n }\n action={}\n />\n \n \n \n \n \n \n \n \n \n );\n};\n","import React from 'react';\nimport { INote } from 'domain/store/NoteModel';\nimport moment from 'moment';\nimport { Typography } from '@material-ui/core';\nimport { Timeline } from '@material-ui/lab';\nimport { SquadFeedTimelineItem } from './SquadFeedTimelineItem';\n\nexport const SquadFeedTimeline: React.FC<{ notes: INote[]; group: string }> = ({\n notes,\n group,\n}) => {\n const currentYear = moment().format('YYYY');\n\n const title =\n moment(group).format('YYYY') === currentYear\n ? moment(group).format('MMMM')\n : moment(group).format('MMMM YYYY');\n\n const isFirstOfDate = (note: INote, index: number) => {\n const date = (note.modifiedDateMoment || note.createdDateMoment)\n .local()\n .startOf('day')\n .valueOf();\n\n return (\n notes.findIndex(\n (n) =>\n (n.modifiedDateMoment || n.createdDateMoment).local().startOf('day').valueOf() === date\n ) === index\n );\n };\n\n return (\n <>\n {title}\n\n \n {notes.map((n, index, array) => (\n \n ))}\n \n \n );\n};\n","import React from 'react';\nimport { INote } from 'domain/store/NoteModel';\nimport { SquadFeedTimeline } from './SquadFeedTimeline';\n\ninterface ISquadFeedTimelineGroupsProps {\n groups: { [key: string]: INote[] };\n}\n\nexport const SquadFeedTimelineGroups: React.FC = ({ groups }) => {\n const entries = Object.entries(groups);\n\n return (\n <>\n {entries.length > 0 ? (\n entries.map(([key, value], i) => (\n \n (b.modifiedDateMoment ?? b.createdDateMoment).diff(\n a.modifiedDateMoment ?? a.createdDateMoment\n )\n )}\n key={i}\n />\n ))\n ) : (\n

    There are no notes currently available

    \n )}\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Container } from '@material-ui/core';\nimport { INote } from 'domain/store/NoteModel';\nimport { useUser } from 'hooks/useUser';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { SquadFeedTimelineGroups } from './components/SquadFeedTimelineGroups';\nimport InfiniteScroll from 'react-infinite-scroller';\nimport { DEFAULT_PAGE_NUMBER, DEFAULT_ROWS_PER_PAGE } from 'views/ViewConstants';\nimport { observer } from 'mobx-react-lite';\n\nexport const SquadFeed: React.FC = observer(() => {\n const { loadSquadNotes, selectedSquad } = useUser();\n const [notes, setNotes] = useState([]);\n const [page, setPage] = useState(DEFAULT_PAGE_NUMBER);\n const [hasMore, setHasMore] = useState(true);\n const [isLoading, setIsLoading] = useState(false);\n const [initialLoadHasCompleted, setInitialLoadHasCompleted] = useState(false);\n\n useEffect(() => {\n setNotes([]);\n setPage(0);\n setHasMore(true);\n }, [selectedSquad]);\n\n const loadNextPage = () => {\n if (isLoading) return;\n setIsLoading(true);\n loadSquadNotes(selectedSquad, page, DEFAULT_ROWS_PER_PAGE)\n .then((result) => {\n const combinedNotes = [...notes, ...result.notes];\n setNotes(combinedNotes);\n setPage(page + 1);\n setHasMore(combinedNotes.length < result.totalCount);\n })\n .finally(() => {\n setInitialLoadHasCompleted(true);\n setIsLoading(false);\n });\n };\n\n useEffect(() => {\n loadNextPage();\n // This is only here to fire off the initial request, so we don't want to give it any dependencies that might cause it to run again\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n }\n useWindow={false}>\n {!!notes.length && (\n \n {\n const key = (cur.modifiedDateMoment ?? cur.createdDateMoment).format('YYYY-MM');\n if (Object.prototype.hasOwnProperty.call(acc, key)) {\n acc[key].push(cur);\n } else {\n acc[key] = [cur];\n }\n return acc;\n }, {})}\n />\n \n )}\n \n );\n});\n","export const DEFAULT_PAGE_NUMBER = 0;\nexport const DEFAULT_ROWS_PER_PAGE = 10;\n","import React, { CSSProperties, useEffect, useRef, useState } from 'react';\nimport cn from 'classnames';\nimport styles from './NoteItemContent.module.scss';\nimport ReactMarkdown from 'react-markdown';\nimport { Box, Button } from '@material-ui/core';\nimport 'github-markdown-css';\n\nconst FADE_HEIGHT = 114;\nexport const NoteItemContent: React.FC<{ content: string }> = ({ content }) => {\n const item = useRef(null);\n\n const [needsFade, setNeedsFade] = useState(false);\n const [showAll, setShowAll] = useState(false);\n const toggleShowMore = () => setShowAll(!showAll);\n\n useEffect(() => {\n setNeedsFade((item.current?.clientHeight ?? 0) > FADE_HEIGHT);\n }, [item]);\n\n return (\n <>\n \n
    (item.current = e)} className=\"markdown-body\">\n \n
    \n {needsFade &&
    }\n
    \n \n {needsFade && (\n \n )}\n \n \n );\n};\n","import {\n Box,\n Button,\n Card,\n CardContent,\n CardHeader,\n Chip,\n FormControl,\n Grid,\n Link,\n MenuItem,\n Select,\n Typography,\n} from '@material-ui/core';\nimport { ChevronRightRounded, Visibility, VisibilityOff } from '@material-ui/icons';\nimport { INote, NoteSensitivity } from 'domain/store/NoteModel';\nimport { useStore } from 'hooks/useStore';\nimport { useUser } from 'hooks/useUser';\nimport React, { useEffect, useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport { SensitiveAttribute } from 'views/components/sensitiveAttribute/SensitiveAttribute';\nimport { FaceToFaceDiscussionAttribute } from 'views/components/faceToFaceDiscussionAttribute/FaceToFaceDiscussionAttribute';\nimport { Tag } from 'views/components/tag/Tag';\nimport { EMPLOYEE_JOURNEYS_ROUTE_PATH } from 'views/routes/Routes';\nimport { NoteItemContent } from 'views/routes/squad/components/noteReview/components/NoteItemContent';\nimport styles from './NoteItem.module.scss';\n\ninterface INoteItemProps {\n note: INote;\n onNoteApproved: () => void;\n}\n\nexport const NoteItemHeader: React.FC<{ note: INote }> = ({ note }) => {\n return (\n \n }\n title={\n \n \n \n \n \n {note.subject}\n {note.isPeopleLeaderConversation === true && (\n \n )}\n \n \n \n \n \n \n \n {note.employee.displayName}\n \n \n \n \n \n {note.eventDateMoment!.format('DD/MM/YYYY')}\n \n \n \n \n \n {note.tags.map((tag, index) => (\n \n ))}\n \n \n \n \n \n \n \n \n Author: {note.author.displayName}\n \n \n \n \n \n \n Last modified: {note.modifiedDateMoment!.fromNow()}\n \n \n \n \n \n \n {note.status === 'pending' && To be reviewed}\n {note.sensitivity === 'sensitive' && }\n {note.sensitivity === 'non-sensitive' && (\n \n )}\n \n \n \n \n \n }\n />\n );\n};\n\nexport const NoteItem: React.FC = ({ note, onNoteApproved }) => {\n const store = useStore();\n const { review } = useUser();\n const [selection, setSelection] = useState('none');\n\n const isValidSelection = () =>\n (selection === 'sensitive' || selection === 'non-sensitive') && selection !== note.sensitivity;\n\n const updateNoteSensitivity = () => {\n if (isValidSelection()) {\n review\n .updateNoteSensitivity(selection, note.noteId)\n .then(() => onNoteApproved())\n .catch(() => {\n store.notifications.addError('Unable to approve the note, please try again.');\n });\n }\n };\n\n useEffect(() => {\n setSelection(note.sensitivity);\n }, [note]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n
    Visibility Settings
    \n \n setSelection(e.target.value as NoteSensitivity)}>\n \n Choose settings...\n \n \n \n \n Mark as Sensitive\n \n \n \n \n \n Mark as Non-Sensitive\n \n \n \n \n
    \n \n updateNoteSensitivity()}\n endIcon={}>\n Submit\n \n \n {isValidSelection() && selection === 'sensitive' && (\n \n Marking this note as sensitive will make this note visible to only M & A users.\n \n )}\n {isValidSelection() && selection === 'non-sensitive' && (\n \n Marking this note as non-sensitive will make this note visible to M, A, B1 & B2\n users. C users will not have visibility.\n \n )}\n \n
    \n
    \n
    \n
    \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Button, Container, Grid, Typography } from '@material-ui/core';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { NoteItem } from 'views/routes/squad/components/noteReview/components/NoteItem';\nimport { useUser } from 'hooks/useUser';\nimport { observer } from 'mobx-react-lite';\nimport { useQueryParams } from 'hooks/useQueryParams';\nimport styles from './NoteReview.module.scss';\nimport { INote } from 'domain/store/NoteModel';\nimport { ReviewState } from 'domain/store/ReviewModel';\nimport InfiniteScroll from 'react-infinite-scroller';\nimport { DEFAULT_PAGE_NUMBER, DEFAULT_ROWS_PER_PAGE } from 'views/ViewConstants';\nimport { SquadNotSelected } from 'views/components/squadNotSelected/SquadNotSelected';\n\nexport const NoteReview: React.FC = observer(() => {\n const {\n selectedSquad,\n review: { getNote, getNotes, updateReviewState, reviewState },\n } = useUser();\n const { noteId } = useQueryParams<{ noteId: string | null }>();\n const [shouldShowOtherNotes, setShouldShowOtherNotes] = useState(!noteId);\n const [notes, setNotes] = useState([]);\n const [page, setPage] = useState(DEFAULT_PAGE_NUMBER);\n const [hasMore, setHasMore] = useState(true);\n const [isLoading, setIsLoading] = useState(false);\n const [initialLoadHasCompleted, setInitialLoadHasCompleted] = useState(false);\n const [initialSquad] = useState(selectedSquad);\n\n useEffect(() => {\n if (noteId && !shouldShowOtherNotes) {\n setIsLoading(true);\n getNote(Number(noteId))\n .then((n) => n && setNotes([n]))\n .finally(() => setIsLoading(false));\n }\n }, [getNote, noteId, shouldShowOtherNotes]);\n\n useEffect(() => {\n resetPage();\n }, [selectedSquad]);\n\n const loadNextPage = () => {\n if (isLoading) return;\n setIsLoading(true);\n getNotes(selectedSquad, page, DEFAULT_ROWS_PER_PAGE)\n .then((result) => {\n const combinedNotes = [...notes, ...result.notes];\n setNotes(combinedNotes);\n setPage(page + 1);\n setHasMore(combinedNotes.length < result.totalCount);\n })\n .finally(() => {\n setInitialLoadHasCompleted(true);\n setIsLoading(false);\n });\n };\n\n useEffect(() => {\n shouldShowOtherNotes && loadNextPage();\n // This is only here to fire off the initial request, so we don't want to give it any dependencies that might cause it to run again\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [shouldShowOtherNotes]);\n\n const resetPage = () => {\n setNotes([]);\n setPage(0);\n setHasMore(true);\n };\n\n useEffect(() => {\n if (selectedSquad !== initialSquad) {\n setShouldShowOtherNotes(true);\n }\n }, [selectedSquad, initialSquad]);\n\n const swapView = (state: ReviewState) => {\n setShouldShowOtherNotes(true);\n updateReviewState(state);\n resetPage();\n };\n\n return shouldShowOtherNotes && !selectedSquad ? (\n \n ) : (\n }\n useWindow={false}>\n \n \n \n \n \n swapView('in-progress')}>\n In Progress\n \n \n \n swapView('reviewed')}>\n Reviewed\n \n \n \n \n {notes.length || isLoading ? (\n notes.map((note) => (\n \n \n \n ))\n ) : noteId && !shouldShowOtherNotes ? (\n \n \n There is no note with id {noteId}{' '}\n {reviewState === 'in-progress' ? 'requiring review' : 'that has been reviewed'}\n \n \n ) : (\n \n \n {reviewState === 'in-progress'\n ? 'There are no notes currently requiring review'\n : 'You have not reviewed any notes yet'}\n \n \n )}\n \n \n \n );\n});\n","import React from 'react';\nimport styles from './ChartHeader.module.scss';\n\nexport const ChartHeader: React.FC<{ text: string; subHeader?: string }> = ({\n text,\n subHeader,\n}) => {\n return (\n
    \n {text}\n {subHeader ?
    By Month
    : <>}\n
    \n );\n};\n","import { ITrends } from 'domain/store/trends/TrendsModel';\nimport { useStore } from 'hooks/useStore';\n\nexport function useTrends(): ITrends {\n const { trends } = useStore();\n\n return trends;\n}\n","import React from 'react';\n\n// eslint-disable-next-line\nexport function useEmployeeListPopper() {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [offset, setOffset] = React.useState<[number, number] | undefined>(undefined);\n const [ignoreNextClose, setIgnoreNextClose] = React.useState(false);\n\n const handleClick = (event: React.MouseEvent) => setAnchorEl(event.currentTarget);\n\n const handleClose = () => {\n if (ignoreNextClose) {\n setIgnoreNextClose(false);\n return;\n }\n setAnchorEl(null);\n };\n\n return { anchorEl, setAnchorEl, offset, setOffset, handleClick, handleClose, setIgnoreNextClose };\n}\n","import React from 'react';\nimport styles from './EmployeeListPopperItem.module.scss';\nimport { TableCell } from '@material-ui/core';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport { Link } from 'react-router-dom';\nimport { ITrendsEmployeesItem } from 'domain/store/trends/TrendsEmployeesModel';\nimport { EMPLOYEE_JOURNEYS_ROUTE_PATH } from 'views/routes/Routes';\nimport { ISupportingOpportunityEmployee } from 'domain/store/trends/SupportingOpportunitiesWithEmployeesModel';\n\ninterface IEmployeeListPopperItemProps {\n employee: ITrendsEmployeesItem | ISupportingOpportunityEmployee;\n}\n\nexport const EmployeeListPopperItem: React.FC = function (props) {\n const getEmployeeId = () =>\n 'employeeIdpId' in props.employee ? props.employee.employeeIdpId : props.employee.idpId;\n\n return (\n \n
    \n
    \n \n
    \n \n {props.employee.displayName}\n \n
    \n
    \n );\n};\n","import React from 'react';\nimport {\n TableContainer,\n Table,\n TableRow,\n TableBody,\n TablePagination,\n TableCell,\n} from '@material-ui/core';\nimport { EmployeeListPopperItem } from './EmployeeListPopperItem';\nimport { ITrendsEmployeesItem } from 'domain/store/trends/TrendsEmployeesModel';\nimport { ISupportingOpportunityEmployee } from 'domain/store/trends/SupportingOpportunitiesWithEmployeesModel';\nimport styles from './EmployeeListPopperItem.module.scss';\nimport cn from 'classnames';\n\ninterface IEmployeeListProps {\n employees: Array;\n}\n\nexport const EmployeeList: React.FC = function (props) {\n const rowsPerPage = 6;\n const itemsPerRow = 3;\n const itemsPerPage = itemsPerRow * rowsPerPage;\n const [page, setPage] = React.useState(0);\n\n React.useEffect(() => {\n setPage(0);\n }, [props]);\n\n return (\n \n \n \n {[...Array(rowsPerPage)].map((_, row) => (\n \n {[...Array(itemsPerRow)].map((_, i) => {\n const index = page * itemsPerPage + row * 3 + i;\n const employee = props.employees[index];\n return employee ? (\n \n ) : (\n itemsPerPage,\n })}\n key={index}\n />\n );\n })}\n \n ))}\n \n
    \n setPage(p)}\n page={page}\n rowsPerPage={rowsPerPage}\n labelDisplayedRows={() =>\n `${page + 1} of ${Math.ceil(props.employees.length / itemsPerPage || 1)}`\n }\n rowsPerPageOptions={[rowsPerPage]}\n />\n
    \n );\n};\n","import React from 'react';\nimport styles from './EmployeeListPopper.module.scss';\nimport { IconButton, Popper, ClickAwayListener, Tabs, Tab } from '@material-ui/core';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faTimesCircle } from '@fortawesome/free-regular-svg-icons';\nimport { ITrendsEmployeesItem } from 'domain/store/trends/TrendsEmployeesModel';\nimport { ISupportingOpportunityEmployee } from 'domain/store/trends/SupportingOpportunitiesWithEmployeesModel';\nimport { EmployeeList } from './EmployeeList';\n\ninterface IEmployeeListPopperProps {\n anchorEl: HTMLElement | SVGElement | null;\n handleClose: () => void;\n title: string;\n employees: Array;\n color: string;\n offset?: [number, number];\n flip?: boolean;\n isRoleChangePathway?: boolean;\n}\n\nexport const EmployeeListPopper: React.FC = function (props) {\n const calculateOverflow = () => {\n if (!props.anchorEl) return 0;\n\n // Having to use a magic number for pageMargin due to using causes it to not be rendered correctly\n // (position is wrong and has display: none). If keepMounted worked it would give us the actual popper element to grab dimensions from.\n // The number should be relative to width of this popper when rendered\n const pageMargin = 350;\n const rect = props.anchorEl.getBoundingClientRect();\n const horizontalOffset = props.offset ? props.offset[0] : 0;\n const center = rect.left + rect.width / 2;\n const left = center + horizontalOffset - pageMargin;\n const right = center + horizontalOffset + pageMargin;\n const windowLimit = document.documentElement.clientWidth;\n\n if (left < 0) {\n return left * -1;\n }\n\n if (right > windowLimit) {\n return windowLimit - right;\n }\n\n return 0;\n };\n\n const horizontalOffset = props.offset ? props.offset[0] : 0;\n const verticalOffset = props.offset ? props.offset[1] : 0;\n const overflow = calculateOverflow();\n const popperOffset = `${horizontalOffset + overflow},${verticalOffset}`;\n const arrowOffset = overflow * -1;\n\n const [activeTab, setActiveTab] = React.useState(0);\n const changeTab = (_: React.ChangeEvent, value: number) => setActiveTab(value);\n\n const employeesFilteredByTimeFrame = (timeframe: 0 | 6 | 12 | 18) => {\n if (timeframe === 0) return props.employees;\n\n return props.employees.filter(\n (e) =>\n 'roleChangeTimeFrame' in e && e.roleChangeTimeFrame && e.roleChangeTimeFrame === timeframe\n ) as ITrendsEmployeesItem[];\n };\n\n return (\n \n \n \n
    \n
    \n
    \n {props.title}\n Total: {props.employees.length}\n
    \n \n \n \n {props.isRoleChangePathway ? (\n <>\n \n \n \n \n \n \n \n \n ) : (\n \n )}\n
    \n \n \n );\n};\n","import React from 'react';\nimport { useTrends } from 'hooks/useTrends';\nimport { Skeleton } from '@material-ui/lab';\nimport { observer } from 'mobx-react-lite';\nimport { Bar } from 'react-chartjs-2';\nimport { useEmployeeListPopper } from 'hooks/useEmployeeListPopper';\nimport { EmployeeListPopper } from '../employeeListPopper/EmployeeListPopper';\nimport { IRoleCount } from 'domain/store/trends/TrendsEmployeesModel';\nimport styles from './RoleDistributionChart.module.scss';\n\nexport const RoleDistributionChart: React.FC = observer(() => {\n const { trendsEmployees, roleDistributionOrder } = useTrends();\n\n const orderedRoles = trendsEmployees.roleCounts\n .filter((c) => roleDistributionOrder.indexOf(c.role) > -1)\n .sort((a, b) => roleDistributionOrder.indexOf(a.role) - roleDistributionOrder.indexOf(b.role));\n\n const abbreviations = Object.assign(\n {},\n ...orderedRoles.map((x) => ({\n [x.role]: x.role\n .split(' ')\n .map((n) => n[0])\n .join(''),\n }))\n );\n\n const CHART_OPTIONS = {\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: false,\n },\n scales: {\n xAxes: [\n {\n stacked: true,\n gridLines: {\n display: true,\n drawBorder: true,\n drawOnChartArea: false,\n drawTicks: false,\n lineWidth: 1,\n },\n ticks: {\n padding: 10,\n callback: (value: string) => abbreviations[value],\n },\n },\n ],\n yAxes: [\n {\n stacked: true,\n display: true,\n },\n ],\n },\n onHover: (event: MouseEvent, chartElement: HTMLElement[]) => {\n if (event.currentTarget)\n (event.currentTarget as HTMLElement).style.cursor = chartElement[0] ? 'pointer' : 'default';\n },\n };\n\n const chartData = {\n labels: orderedRoles.map((item: IRoleCount) => item.role),\n datasets: [\n {\n backgroundColor: '#5DDAE7',\n borderColor: '#313232',\n borderWidth: 0,\n data: orderedRoles.map((item: IRoleCount) => item.count),\n },\n ],\n };\n\n const popper = useEmployeeListPopper();\n const divRef = React.useRef(null);\n // eslint-disable-next-line\n const [selectedElement, setSelectedElement] = React.useState(undefined);\n\n const handleClick = (e: HTMLElement[]) => {\n // eslint-disable-next-line\n const element = e[0] as any;\n if (!element) return;\n\n // Without this, selecting subsequent bars will fire the ClickAwayListener's handleClose() *after* this assigns anchorEl, thereby dismissing the new popper\n if (popper.anchorEl) {\n popper.setIgnoreNextClose(true);\n }\n\n setSelectedElement(element);\n popper.setAnchorEl(divRef.current);\n popper.setOffset([\n element._model.x - (divRef.current?.getBoundingClientRect()?.width || 0) / 2,\n 0,\n ]);\n };\n\n const getSelectedElementEmployees = () => {\n if (!selectedElement) return [];\n const index = selectedElement._index;\n const jobTitle = selectedElement._chart.data.labels[index];\n\n return trendsEmployees.employeesWithMatchingJobTitle(jobTitle);\n };\n\n return (\n <>\n
    \n {trendsEmployees.state === 'done' ? (\n \n ) : (\n \n )}\n
    \n \n \n );\n});\n","import { HierarchyCircularNode } from 'd3-hierarchy';\n\nexport interface ChartData {\n name: string;\n value: number;\n colour: string;\n}\n\nexport interface PackData extends ChartData {\n children: PackData[];\n}\n\ninterface UniqueId {\n id: string;\n href: string;\n uri: string;\n}\n\nexport type PackDatum = HierarchyCircularNode;\n\nexport interface GroupDatum extends PackDatum {\n leafUid: UniqueId;\n clipUid: UniqueId;\n}\n\nexport class IdProvider {\n protected static uniqueBaseId = 0;\n\n public static uid(name: string): UniqueId {\n const id = this.uniqueBaseId++;\n const idStr = `${name}-${id}`;\n return {\n id: idStr,\n href: `#${idStr}`,\n uri: `url(#${idStr})`,\n };\n }\n}\n\nexport type ChartEventCallback = (datum: GroupDatum, elem: SVGGElement) => void;\n","import { easeQuad, format, hierarchy, HierarchyNode, nest, pack, Selection } from 'd3';\nimport cn from 'classnames';\nimport {\n ChartData,\n ChartEventCallback,\n GroupDatum,\n IdProvider,\n PackData,\n PackDatum,\n} from './types';\nimport { color } from 'views/themes';\n\nconst d3Format = format(',d');\n\nexport const createChart = (\n styles: { [key: string]: string },\n parent: Selection,\n data: ChartData[],\n size: [number, number],\n onOverBubble: ChartEventCallback,\n onOutBubble: ChartEventCallback\n): Selection => {\n const baseData: PackData = {\n value: 0,\n name: 'root',\n colour: '',\n children: data.map((d) => ({ ...d, children: [] })),\n };\n\n const dataHierarchy: HierarchyNode = hierarchy(baseData)\n .sum((d) => d.value)\n .sort((a, b) => (b.value ?? 0) - (a.value ?? 0));\n\n const packed = pack()\n .size(size)\n .padding(30)(dataHierarchy)\n .descendants()\n .filter((d) => !d.children);\n const nestedData = nest()\n .key((d) => `${d.height}`)\n .entries(packed);\n\n const svg = parent\n .append('svg')\n .attr('width', size[0])\n .attr('height', size[1])\n .attr('viewBox', `${[0, 0, ...size]}`)\n .attr('class', cn(styles.bubbleChart))\n .attr('text-anchor', 'middle');\n\n const groups = svg\n .selectAll('g')\n .data(nestedData)\n .join('g')\n .attr('class', cn(styles.bubbleGroups))\n .selectAll('g')\n .data((d) => d.values)\n .join('g')\n .attr('class', cn(styles.bubbleGroup))\n .attr('transform', `translate(${size[0] / 2},${size[1] / 2})`)\n .on('mouseover click touchend', (datum, index, nodes) => {\n onOverBubble && onOverBubble(datum, nodes[index]);\n })\n .on('mouseout', (datum, index, nodes) => {\n onOutBubble && onOutBubble(datum, nodes[index]);\n });\n\n groups\n .transition('animate-groups')\n .duration(500)\n .ease(easeQuad)\n .attr('transform', (d) => `translate(${d.x + 1},${d.y + 1})`);\n\n groups.append('title').text((d) => `${d.data.name}\\n${d3Format(d.data.value)}`);\n\n groups\n .append('circle')\n .attr('id', (d) => (d.leafUid = IdProvider.uid('leaf')).id)\n // .attr('fill', () => 'hsl(' + Math.random() * 360 + ',65%, 50%)')\n .attr('fill', (d) => d.data.colour)\n .attr('class', cn(styles.bubbleCircle))\n .transition('animate-circles')\n .duration(500)\n .attr('r', (d) => (d.r ? d.r + 11 : 0));\n\n groups\n .append('clipPath')\n .attr('id', (d) => (d.clipUid = IdProvider.uid('clip')).id)\n .append('use')\n .attr('xlink:href', (d) => d.leafUid.href);\n\n groups\n .filter((d) => d.r + 10 > 30)\n .append('text')\n .attr('clip-path', (d) => d.clipUid.uri)\n .attr('class', cn(styles.bubbleText))\n .attr('fill', (d) => color.white)\n .selectAll('tspan')\n .data<{ text: string; size: number }>((d) =>\n d.data.name.split(' ').map((v) => ({ text: `${v}`, size: d.r }))\n )\n .join('tspan')\n .attr('x', 0)\n .attr('y', (d, i, nodes) => `${i - nodes.length / 2 + 0.8}em`)\n .attr('class', (d) => cn({ [styles.fontSmall]: d.size < 50 }, styles.fontLarge))\n .text((d) => d.text);\n\n return svg;\n};\n","import {\n green,\n cyan,\n deepPurple,\n purple,\n blue,\n amber,\n deepOrange,\n indigo,\n lightBlue,\n lightGreen,\n lime,\n orange,\n pink,\n red,\n teal,\n yellow,\n} from '@material-ui/core/colors';\n\nexport enum ColourSet {\n TealGreen,\n LimeOrange,\n RedPurple,\n Blue,\n}\n\n// eslint-disable-next-line\nconst mapColours = (colourSet: ColourSet): any[] => {\n switch (colourSet) {\n case ColourSet.TealGreen:\n return [teal, cyan, lightGreen, green];\n case ColourSet.LimeOrange:\n return [lime, amber, yellow, orange];\n case ColourSet.RedPurple:\n return [deepOrange, red, pink, purple];\n case ColourSet.Blue:\n return [deepPurple, indigo, blue, lightBlue];\n }\n};\n\nexport const generateColours = (numberOfColours: number, colourSet: ColourSet): string[] => {\n const colours: string[] = [];\n let colourGroup = undefined;\n\n const colourGroups = mapColours(colourSet);\n\n for (let i = 0; i * 4 < numberOfColours; i++) {\n const indexOfColourGroups = i >= colourGroups.length ? i % colourGroups.length : i;\n colourGroup = colourGroups[indexOfColourGroups];\n\n colours.push(colourGroup[800]);\n colours.push(colourGroup[600]);\n colours.push(colourGroup[400]);\n colours.push(colourGroup[200]);\n }\n\n return colours.slice(0, numberOfColours);\n};\n","import React from 'react';\nimport styles from './D3BubbleChart.module.scss';\nimport { Paper, Popper, Typography } from '@material-ui/core';\n\ninterface ID3BubbleChartTooltipProps {\n anchorEl: SVGElement | null;\n title: string;\n value: number;\n}\n\nexport const D3BubbleChartTooltip: React.FC = (props) => {\n const [arrowRef, setArrowRef] = React.useState(null);\n\n return (\n \n \n \n {props.title}\n {props.value}\n \n \n );\n};\n","import React, { useEffect, useRef, useState } from 'react';\nimport { select } from 'd3-selection';\nimport cn from 'classnames';\nimport { ChartData, GroupDatum } from './types';\nimport { createChart } from './d3chart';\nimport styles from './D3BubbleChart.module.scss';\nimport { useEmployeeListPopper } from 'hooks/useEmployeeListPopper';\nimport { EmployeeListPopper } from 'views/routes/squad/components/squadTrends/components/employeeListPopper/EmployeeListPopper';\nimport { useTrends } from 'hooks/useTrends';\nimport { D3BubbleChartTooltip } from './D3BubbleChartTooltip';\n\ninterface ID3BubbleChartProps {\n className?: string;\n data: ChartData[];\n size: [number, number];\n chartType: 'talentCodes' | 'supportingOpportunities';\n shouldEmployeeListFlip?: boolean;\n}\n\nexport const D3BubbleChart: React.FC = ({\n data,\n className,\n size,\n shouldEmployeeListFlip,\n chartType,\n}) => {\n const chartRef = useRef(null);\n const [selectedBubbleDatum, setSelectedBubbleDatum] = React.useState(null);\n const [hoveredBubbleRef, setHoveredBubbleRef] = useState<{\n element: SVGElement;\n datum: GroupDatum;\n } | null>(null);\n\n const { trendsEmployees, supportingOpportunitiesWithEmployees } = useTrends();\n\n useEffect(() => {\n if (chartRef.current) {\n const ref = (chartRef.current as unknown) as HTMLElement;\n const chart = createChart(\n styles,\n select(ref),\n data,\n size,\n (d, e) => {\n e.onclick = () => setSelectedBubbleDatum(d);\n setHoveredBubbleRef({ element: e, datum: d });\n },\n () => {\n setHoveredBubbleRef(null);\n }\n );\n return () => {\n chart.remove();\n };\n }\n return () => {};\n }, [chartRef, data, size]);\n\n const employeeList = useEmployeeListPopper();\n\n const handleClick = () => {\n employeeList.setAnchorEl(hoveredBubbleRef?.element || null);\n\n // Without this, selecting subsequent bars will fire the ClickAwayListener's handleClose() *after* this assigns anchorEl, thereby dismissing the new popper\n if (employeeList.anchorEl) {\n employeeList.setIgnoreNextClose(true);\n }\n };\n\n return !data.length ? (\n
    \n No data available\n
    \n ) : (\n <>\n {hoveredBubbleRef && (\n \n )}\n
    \n {selectedBubbleDatum && (\n \n )}\n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { useTrends } from 'hooks/useTrends';\nimport { D3BubbleChart } from 'views/components/charts/d3BubbleChart/D3BubbleChart';\nimport { Skeleton } from '@material-ui/lab';\nimport { Typography } from '@material-ui/core';\nimport { ColourSet, generateColours } from '../../ColourGenerator';\nimport { ChartData } from '../../../../../../components/charts/d3BubbleChart/types';\n\nexport const TalentCodesChart: React.FC = observer(() => {\n const {\n trendsEmployees: { state, talentCodeCounts },\n } = useTrends();\n\n const [colours, setColours] = useState([] as string[]);\n const [chartData, setChartData] = useState([] as ChartData[]);\n\n useEffect(() => {\n setColours(generateColours(talentCodeCounts.length, ColourSet.Blue));\n }, [talentCodeCounts]);\n\n useEffect(() => {\n setChartData(\n talentCodeCounts.map((item, index) => ({\n name: item.talentCode,\n value: item.count,\n colour: colours[index],\n }))\n );\n }, [colours, talentCodeCounts]);\n\n return (\n \n {state === 'done' ? (\n \n ) : (\n \n )}\n \n );\n});\n","import React from 'react';\nimport styles from './FlagChart.module.scss';\nimport { EmployeeListPopper } from '../employeeListPopper/EmployeeListPopper';\nimport { useEmployeeListPopper } from 'hooks/useEmployeeListPopper';\nimport { ITrendsEmployeesItem } from 'domain/store/trends/TrendsEmployeesModel';\n\ninterface IFlagItemProps {\n color: string;\n flag: string;\n employees: ITrendsEmployeesItem[];\n isRoleChangePathway?: boolean;\n}\n\nexport const FlagItem: React.FC = (props) => {\n const popper = useEmployeeListPopper();\n\n return (\n <>\n \n
    \n {props.employees.length}\n {props.flag}\n
    \n \n \n \n );\n};\n","import { Skeleton } from '@material-ui/lab';\nimport { useTrends } from 'hooks/useTrends';\nimport { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport styles from './FlagChart.module.scss';\nimport { FlagItem } from './FlagItem';\n\nexport const FlagChart = observer(() => {\n const { trendsEmployees } = useTrends();\n\n return (\n <>\n {trendsEmployees.state === 'done' ? (\n
    \n
    \n \n \n
    \n
    \n \n \n
    \n
    \n ) : (\n \n )}\n \n );\n});\n","import { FormControl, InputLabel, Select } from '@material-ui/core';\nimport React, { JSXElementConstructor, PropsWithChildren, ReactElement } from 'react';\nimport cn from 'classnames';\nimport styles from './CustomSelection.module.scss';\n\ninterface ICustomSelectionProps {\n label: string;\n value: DataType;\n onChange: (value: DataType) => void;\n className?: string;\n fullWidth?: boolean;\n}\n\ntype Props = PropsWithChildren>;\n\nexport function CustomSelection({\n label,\n value,\n onChange,\n children,\n className,\n fullWidth,\n}: Props): ReactElement, JSXElementConstructor>> | null {\n return (\n \n {label}\n onChange(event.target.value as DataType)}>\n {children}\n \n \n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { useTrends } from 'hooks/useTrends';\nimport { MenuItem, Typography } from '@material-ui/core';\nimport { D3BubbleChart } from 'views/components/charts/d3BubbleChart/D3BubbleChart';\nimport { Skeleton } from '@material-ui/lab';\nimport { CustomSelection } from 'views/components/customSelection/CustomSelection';\nimport { TimeRange } from 'domain/store/trends/SupportingOpportunitiesWithEmployeesModel';\nimport { useUser } from 'hooks/useUser';\nimport { ColourSet, generateColours } from '../../ColourGenerator';\nimport { ChartData } from '../../../../../../components/charts/d3BubbleChart/types';\n\nconst TIME_RANGES: { text: string; value: TimeRange }[] = [\n { text: 'Last FY Quarter', value: 'last_fy_quarter' },\n { text: 'Current FY Quarter', value: 'current_fy_quarter' },\n { text: 'Last FY', value: 'last_fy' },\n { text: 'Current FY', value: 'current_fy' },\n];\n\nexport const SupportingOpportunitiesChart: React.FC = observer(() => {\n const { selectedSquad } = useUser();\n const {\n supportingOpportunitiesWithEmployees: {\n state,\n value,\n selectedTimeRange,\n loadSupportingOpportunitiesWithEmployees,\n selectTimeRange,\n },\n } = useTrends();\n\n const [colours, setColours] = useState([] as string[]);\n const [chartData, setChartData] = useState([] as ChartData[]);\n\n useEffect(() => {\n loadSupportingOpportunitiesWithEmployees(selectedSquad).then(() =>\n setColours(generateColours(value.length, ColourSet.TealGreen))\n );\n }, [loadSupportingOpportunitiesWithEmployees, selectedSquad, selectedTimeRange, value]);\n\n useEffect(() => {\n setChartData(\n value.map((item, index) => ({\n name: item.tag,\n value: item.people.length,\n colour: colours[index],\n }))\n );\n }, [colours, value]);\n\n return (\n <>\n {state === 'done' ? (\n \n \n \n ) : (\n \n )}\n
    \n \n {TIME_RANGES.map((t) => (\n \n {t.text}\n \n ))}\n \n
    \n \n );\n});\n","import Checkbox, { CheckboxProps } from '@material-ui/core/Checkbox';\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\nimport { withStyles } from '@material-ui/core/styles';\nimport React from 'react';\n\ninterface ICheckBoxProps {\n index: number;\n label: string;\n color: string;\n checked: boolean;\n onChange: (index: number) => void;\n}\n\nexport const CustomColorCheckBox: React.FC = (props: ICheckBoxProps) => {\n const CustomCheckBox = withStyles({\n root: {\n color: props.color,\n '&$checked': {\n color: props.color,\n },\n },\n checked: {},\n })((props: CheckboxProps) => );\n\n const handleOnchange = () => {\n props.onChange(props.index);\n };\n\n return (\n }\n label={props.label}\n />\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { useUser } from 'hooks/useUser';\nimport { useTrends } from 'hooks/useTrends';\nimport { Bar } from 'react-chartjs-2';\nimport { Skeleton } from '@material-ui/lab';\nimport { ColourSet, generateColours } from '../../ColourGenerator';\nimport { CustomColorCheckBox } from '../customColorCheckBox/CustomColorCheckBox';\nimport styles from './TalentCodesByMonthChart.module.scss';\nimport { ChartData } from 'chart.js';\n\nconst CHART_OPTIONS = {\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: false,\n },\n scales: {\n xAxes: [\n {\n stacked: true,\n gridLines: {\n display: true,\n drawBorder: true,\n drawOnChartArea: false,\n drawTicks: false,\n lineWidth: 1,\n },\n ticks: {\n padding: 10,\n },\n },\n ],\n yAxes: [\n {\n stacked: true,\n display: true,\n },\n ],\n },\n};\n\nexport const TalentCodesByMonthChart: React.FC = observer(() => {\n const { selectedSquad } = useUser();\n const {\n talentCodeTrendsByMonth: { state, value, loadTalentCodeTrendsByMonth },\n } = useTrends();\n\n // eslint-disable-next-line\n const [talentCodes, setTalentCodes] = useState([] as any[]);\n const [chartData, setChartData] = useState({} as ChartData);\n\n useEffect(() => {\n loadTalentCodeTrendsByMonth(selectedSquad).then((talentCodeTrends) => {\n const colours = generateColours(talentCodeTrends.labels.length, ColourSet.Blue);\n setTalentCodes(\n talentCodeTrends.labels.map((label, index) => {\n const talentCodeCounts = [] as number[];\n talentCodeTrends.data.forEach((d) => {\n const counts = d.counts.find((c) => c.name === label);\n talentCodeCounts.push(counts ? counts.count : 0);\n });\n\n return {\n name: label,\n checked: false,\n dataSet: {\n label: label,\n backgroundColor: colours[index],\n data: talentCodeCounts,\n },\n };\n })\n );\n });\n }, [loadTalentCodeTrendsByMonth, selectedSquad]);\n\n useEffect(() => {\n setChartData({\n labels: value.data.map((d) => d.month),\n datasets: talentCodes.map((talentCode) => talentCode.dataSet),\n });\n }, [talentCodes, value]);\n\n const handleOnchange = (index: number) => {\n setTalentCodes((talentCodes) => {\n talentCodes[index].checked = !talentCodes[index].checked;\n return talentCodes;\n });\n\n setChartData((chartData: ChartData) => {\n let dataSets = talentCodes\n .filter((talentCode) => talentCode.checked)\n .map((code) => code.dataSet);\n if (dataSets.length === 0) {\n dataSets = talentCodes.map((code) => code.dataSet);\n }\n return {\n ...chartData,\n datasets: dataSets,\n };\n });\n };\n\n return (\n
    \n {state === 'done' ? (\n <>\n
    \n \n
    \n
    \n {talentCodes.map((talentCode, index) => {\n return (\n \n );\n })}\n
    \n \n ) : (\n \n )}\n
    \n );\n});\n","import React, { useEffect, useState } from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { useUser } from 'hooks/useUser';\nimport { useTrends } from 'hooks/useTrends';\nimport { ColourSet, generateColours } from '../../ColourGenerator';\nimport { Bar } from 'react-chartjs-2';\nimport { CustomColorCheckBox } from '../customColorCheckBox/CustomColorCheckBox';\nimport Skeleton from '@material-ui/lab/Skeleton';\nimport styles from './SupportingOpportunitiesByMonthChart.module.scss';\nimport { CustomSelection } from 'views/components/customSelection/CustomSelection';\nimport { MenuItem } from '@material-ui/core';\nimport moment from 'moment';\nimport { ChartData } from 'chart.js';\n\nconst startYear = Number(process.env.REACT_APP_SUPPORTING_OPPORTUNITIES_BY_MONTH_STARTING_YEAR);\nconst currentYear = moment().year();\nconst years = Array.from(\n { length: Math.max(currentYear - startYear + 1, 1) },\n (_, i) => currentYear - i\n);\n\nconst CHART_OPTIONS = {\n responsive: true,\n maintainAspectRatio: false,\n legend: {\n display: false,\n },\n scales: {\n xAxes: [\n {\n stacked: true,\n gridLines: {\n display: true,\n drawBorder: true,\n drawOnChartArea: false,\n drawTicks: false,\n lineWidth: 1,\n },\n ticks: {\n padding: 10,\n },\n },\n ],\n yAxes: [\n {\n stacked: true,\n display: true,\n },\n ],\n },\n};\n\nexport const SupportingOpportunitiesByMonthChart: React.FC = observer(() => {\n const { selectedSquad } = useUser();\n const {\n supportingOpportunitiesByMonth: { state, value, loadSupportingOpportunitiesByMonth },\n } = useTrends();\n\n const [selectedYear, setSelectedYear] = useState(currentYear.toString());\n // eslint-disable-next-line\n const [supportingOpportunities, setSupportingOpportunities] = useState([] as any[]);\n const [chartData, setChartData] = useState({} as ChartData);\n\n useEffect(() => {\n loadSupportingOpportunitiesByMonth(selectedSquad, Number(selectedYear)).then(\n (supportingOpps) => {\n const colours = generateColours(supportingOpps.labels.length, ColourSet.TealGreen);\n setSupportingOpportunities(\n supportingOpps.labels.map((label, index) => {\n const supportingOpportunityCounts = [] as number[];\n supportingOpps.data.forEach((d) => {\n const counts = d.counts.find((c) => c.name === label);\n supportingOpportunityCounts.push(counts ? counts.count : 0);\n });\n\n return {\n name: label,\n checked: false,\n dataSet: {\n label: label,\n backgroundColor: colours[index],\n data: supportingOpportunityCounts,\n },\n };\n })\n );\n }\n );\n }, [loadSupportingOpportunitiesByMonth, selectedSquad, selectedYear]);\n\n useEffect(() => {\n setChartData({\n labels: value.data.map((d) => d.month),\n datasets: supportingOpportunities.map(\n (supportingOpportunity) => supportingOpportunity.dataSet\n ),\n });\n }, [supportingOpportunities, value]);\n\n const handleOnchange = (index: number) => {\n setSupportingOpportunities((supportingOpportunities) => {\n supportingOpportunities[index].checked = !supportingOpportunities[index].checked;\n return supportingOpportunities;\n });\n\n setChartData((chartData: ChartData) => {\n let dataSets = supportingOpportunities\n .filter((supportingOpportunity) => supportingOpportunity.checked)\n .map((supportingOpportunity) => supportingOpportunity.dataSet);\n if (dataSets.length === 0) {\n dataSets = supportingOpportunities.map(\n (supportingOpportunity) => supportingOpportunity.dataSet\n );\n }\n return {\n ...chartData,\n datasets: dataSets,\n };\n });\n };\n\n return (\n
    \n setSelectedYear(value)}\n className={styles.yearSelector}>\n {years.map((t) => {\n const value = t.toString();\n return (\n \n {value}\n \n );\n })}\n \n {state === 'done' ? (\n <>\n
    \n \n
    \n
    \n {supportingOpportunities.map((supportingOpportunity, index) => {\n return (\n \n );\n })}\n
    \n \n ) : (\n \n )}\n
    \n );\n});\n","import { Grid, Paper } from '@material-ui/core';\nimport { useUser } from 'hooks/useUser';\nimport { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { ChartHeader } from 'views/routes/squad/components/squadTrends/components/chartHeader/ChartHeader';\nimport { RoleDistributionChart } from 'views/routes/squad/components/squadTrends/components/roleDistribution/RoleDistributionChart';\nimport { TalentCodesChart } from 'views/routes/squad/components/squadTrends/components/talentCodes/TalentCodesChart';\nimport { FlagChart } from './components/flagChart/FlagChart';\nimport { SupportingOpportunitiesChart } from './components/supportingOpportunities/SupportingOpportunitiesChart';\nimport styles from './SquadTrends.module.scss';\nimport { TalentCodesByMonthChart } from './components/talentCodesByMonth/TalentCodesByMonthChart';\nimport { SupportingOpportunitiesByMonthChart } from './components/supportingOpportunitiesByMonth/SupportingOpportunitiesByMonthChart';\nimport { useTrends } from 'hooks/useTrends';\n\nexport const SquadTrends: React.FC = observer(() => {\n const {\n permissions: {\n squads: { canViewTrends },\n },\n selectedSquad,\n } = useUser();\n\n const {\n trendsEmployees: { loadEmployees },\n } = useTrends();\n\n React.useEffect(() => {\n loadEmployees(selectedSquad);\n }, [loadEmployees, selectedSquad]);\n\n if (!canViewTrends) return null;\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n});\n","import { useStore } from 'hooks/useStore';\nimport { ITalentAnalysisTool } from 'domain/store/talentAnalysisTool/TalentAnalysisToolModel';\n\nexport function useTalentAnalysis(): ITalentAnalysisTool {\n const { talentAnalysis } = useStore();\n\n return talentAnalysis;\n}\n","export type Order = 'asc' | 'desc';\n\nconst descendingComparator = (a: T, b: T, orderBy: keyof T) => {\n if (b[orderBy] < a[orderBy]) {\n return -1;\n }\n if (b[orderBy] > a[orderBy]) {\n return 1;\n }\n return 0;\n};\n\nexport function getComparator(order: Order, orderBy: keyof T): (a: T, b: T) => number {\n return order === 'desc'\n ? (a, b) => descendingComparator(a, b, orderBy)\n : (a, b) => -descendingComparator(a, b, orderBy);\n}\n\nexport const stableSort = (array: T[], comparator: (a: T, b: T) => number): T[] => {\n const stabilizedThis = array.map((el, index) => [el, index] as [T, number]);\n stabilizedThis.sort((a, b) => {\n const order = comparator(a[0], b[0]);\n if (order !== 0) return order;\n return a[1] - b[1];\n });\n return stabilizedThis.map((el) => el[0]);\n};\n","import { TableCell, TableHead, TableRow, TableSortLabel } from '@material-ui/core';\nimport React from 'react';\nimport { Order } from './SortHelper';\n\nexport interface HeadCell {\n id: string;\n label: string;\n isSortable: boolean;\n}\n\ninterface ISortTableHeaderProps {\n // eslint-disable-next-line\n onRequestSort: (event: React.MouseEvent, property: any) => void;\n order: Order;\n orderBy: string;\n labels: HeadCell[];\n}\n\nexport const SortTableHeader: React.FC = ({\n onRequestSort,\n order,\n orderBy,\n labels,\n}) => {\n // eslint-disable-next-line\n const createSortHandler = (property: any) => (event: React.MouseEvent) => {\n onRequestSort(event, property);\n };\n\n return (\n \n \n {labels.map((l) =>\n l.isSortable ? (\n \n \n {l.label}\n \n \n ) : (\n {l.label}\n )\n )}\n \n \n );\n};\n","import React, { useState } from 'react';\nimport { Checkbox } from '@material-ui/core';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\n\nexport interface AlertCheckboxProps {\n isLoading: boolean;\n checked: boolean;\n onAgreeClick?: () => void;\n dialogTitle?: string;\n dialogText: string;\n}\n\nexport const AlertCheckbox: React.FunctionComponent = (props) => {\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n\n const onAgree = async () => {\n resetDialogStates();\n props.onAgreeClick && props.onAgreeClick();\n };\n\n const onDisagree = () => {\n resetDialogStates();\n };\n\n const onCheckChangeHandler = async (event: React.ChangeEvent) => {\n setIsDialogOpen(true);\n };\n\n const resetDialogStates = () => {\n setIsDialogOpen(false);\n };\n return (\n <>\n \n {props.isLoading ? (\n \n ) : (\n \n )}\n \n );\n};\n","import { Checkbox, Tooltip } from '@material-ui/core';\nimport { InfoOutlined } from '@material-ui/icons';\nimport moment from 'moment';\nimport React from 'react';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport styles from './EmployeeRow.module.scss';\n\ninterface ILongTermLeaveCheckboxProps {\n checked: boolean;\n employeeExpectedReturn: string | null;\n isLoading: boolean;\n onToggle?: () => void;\n}\n\nexport const LongTermLeaveCheckbox: React.FC = (\n props: ILongTermLeaveCheckboxProps\n) => {\n return props.isLoading ? (\n \n ) : (\n
    \n props.onToggle && props.onToggle()} checked={props.checked} />\n {props.employeeExpectedReturn && (\n Expected Return: {moment(props.employeeExpectedReturn).format('DD/MM/YYYY')}}>\n \n \n )}\n
    \n );\n};\n","import React, { useState } from 'react';\nimport { MenuItem } from '@material-ui/core';\nimport { CustomSelection } from 'views/components/customSelection/CustomSelection';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\n\nexport type TimeframeOption = { description: string; value: number };\n\nexport interface RoleChangePathwaySelectorProps {\n employeeDisplayName: string;\n selectedValue: number;\n onAgreeClick: (selectedValue: TimeframeOption) => void;\n isLoading: boolean;\n}\n\nexport const RoleChangePathwaySelector: React.FunctionComponent = (\n props\n) => {\n const options: TimeframeOption[] = [\n { description: 'N/A', value: 0 },\n { description: '6 months', value: 6 },\n { description: '12 months', value: 12 },\n { description: '12+ months', value: 18 },\n ];\n\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [timeframeToSelect, setTimeframeToSelect] = useState(0);\n\n const onTimeframeChange = (timeframeValue: number) => {\n setTimeframeToSelect(timeframeValue);\n setIsDialogOpen(true);\n };\n\n const onCloseDialog = () => {\n setIsDialogOpen(false);\n setTimeframeToSelect(0);\n };\n\n const onAgreeUpdateClick = () => {\n // update logic here\n const newTimeframeOption = getTimeframeOption(timeframeToSelect);\n props.onAgreeClick(newTimeframeOption!);\n onCloseDialog();\n };\n\n const getTimeframeOption = (timeframeToSelect: number) => {\n return options.find((x) => x.value === timeframeToSelect);\n };\n\n return props.isLoading ? (\n \n ) : (\n <>\n \n \n {options.map(({ description, value }) => (\n \n {description}\n \n ))}\n \n \n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { MenuItem } from '@material-ui/core';\nimport { useFlags } from 'hooks/useFlags';\nimport { CustomSelection } from 'views/components/customSelection/CustomSelection';\nimport { useTalentAnalysis } from 'hooks/useTalentAnalysis';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\n\nexport const TalentCodeSelector: React.FC<{\n employeeIdpId: string;\n talentCode: string;\n employeeName: string;\n onChanged: () => void;\n}> = ({ employeeIdpId, talentCode, employeeName, onChanged }) => {\n const { all, getFlag } = useFlags();\n const { updateTalentCode } = useTalentAnalysis();\n const [loadingTalentCode, setLoadingTalentCode] = useState(true);\n const [currentTalentCode, setCurrentTalentCode] = useState(talentCode);\n const [selectedTalentCode, setSelectedTalentCode] = useState(-1);\n\n const [isDialogOpen, setIsDialogOpen] = useState(false);\n const [talentCodeToSelect, setTalentCodeToSelect] = useState(-1);\n\n const updateTC = (talentCode: number) => {\n setTalentCodeToSelect(talentCode);\n setIsDialogOpen(true);\n };\n\n const onCloseDialog = () => {\n setIsDialogOpen(false);\n setTalentCodeToSelect(-1);\n };\n\n const onAgreeUpdate = () => {\n setLoadingTalentCode(true);\n updateTalentCode(employeeIdpId, talentCodeToSelect)\n .then(() => {\n setCurrentTalentCode(getFlag(talentCodeToSelect)?.name ?? '');\n setSelectedTalentCode(talentCodeToSelect);\n onChanged();\n })\n .finally(() => {\n setLoadingTalentCode(false);\n onCloseDialog();\n });\n };\n\n useEffect(() => {\n setSelectedTalentCode(all.find((flag) => flag.name === currentTalentCode)?.flagId ?? -1);\n setLoadingTalentCode(false);\n }, [all, currentTalentCode]);\n\n return loadingTalentCode ? (\n \n ) : (\n <>\n \n \n {currentTalentCode || N/A}\n {all.map(({ name, flagId }) => (\n \n {name}\n \n ))}\n \n \n );\n};\n","import { Box, Link, TableCell, TableRow } from '@material-ui/core';\nimport { IEmployeeTalentModel } from 'domain/store/talentAnalysisTool/TalentAnalysisToolModel';\nimport { useFlightRiskService } from 'hooks/useFlightRiskService';\nimport { useLongTermLeaveService } from 'hooks/useLongTermLeaveService';\nimport { useRoleChangePathwayService } from 'hooks/useRoleChangePathwayService';\nimport { useStore } from 'hooks/useStore';\nimport React, { ChangeEvent, useCallback, useEffect, useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport { StatusIcon } from 'views/components/EmployeeStatus/StatusIcon/StatusIcon';\nimport { DialogWithDatepicker } from 'views/routes/employeeJourney/components/employeeSidebar/components/longTermLeaveFlag/DialogWithDatepicker';\nimport { EMPLOYEE_JOURNEYS_ROUTE_PATH } from 'views/routes/Routes';\nimport { AlertCheckbox } from 'views/routes/squad/components/alertCheckbox/AlertCheckbox';\nimport styles from './EmployeeRow.module.scss';\nimport { LongTermLeaveCheckbox } from './LongTermLeaveCheckbox';\nimport { RoleChangePathwaySelector, TimeframeOption } from './RoleChangePathwaySelector';\nimport { TalentCodeSelector } from './TalentCodeSelector';\n\nexport const EmployeeRow: React.FC<{\n employee: IEmployeeTalentModel;\n onDataChanged: () => void;\n}> = ({\n employee: {\n idpId: employeeIdpId,\n givenName,\n familyName,\n role,\n // department,\n statusType,\n talentCode,\n isFlightRisk: propIsFlightRisk,\n isRoleChangePathway: propHasRoleChangePathway,\n isOnProbation,\n isOnLongTermLeave: propIsOnLongTermLeave,\n longTermLeaveExpectedReturn: propLongTermLeaveExpectedReturn,\n roleChangePathwayTimeframeInMonths: propRoleProgressionPathwayTimeframeInMonths,\n },\n onDataChanged,\n}) => {\n const store = useStore();\n\n const { isFlightRisk, toggleFlightRisk, isLoading: isLoadingFlightRisk } = useFlightRiskService(\n propIsFlightRisk\n );\n\n const [isLeaveDialogOpen, setIsLeaveDialogOpen] = useState(false);\n const [isDisabled, setIsDisabled] = useState(true);\n const employeeExpectedReturn = propLongTermLeaveExpectedReturn ?? null;\n const [expectedLeaveReturn, setExpectedLeaveReturn] = useState(\n employeeExpectedReturn\n );\n const filterNull = useCallback(\n (source: string | null) => {\n return !source ? employeeExpectedReturn : source;\n },\n [employeeExpectedReturn]\n );\n const [newExpectedReturn, setNewExpectedReturn] = useState(\n filterNull(expectedLeaveReturn)\n );\n\n useEffect(() => {\n setExpectedLeaveReturn(employeeExpectedReturn);\n setNewExpectedReturn(filterNull(employeeExpectedReturn));\n }, [employeeExpectedReturn, filterNull]);\n\n const toggleLeave = () => {\n setIsLeaveDialogOpen(true);\n };\n\n const resetDialogStates = () => {\n setNewExpectedReturn(filterNull(expectedReturn));\n setIsLeaveDialogOpen(false);\n setIsDisabled(true);\n };\n\n const onDisagreeLeaveClick = () => {\n resetDialogStates();\n };\n\n const handleLeaveChange = (e: ChangeEvent) => {\n setNewExpectedReturn(e.target.value as string);\n setIsDisabled(false);\n };\n\n const {\n isOnLongTermLeave,\n expectedReturn,\n updateLongTermLeave,\n isLoading: isLoadingLeaveChange,\n } = useLongTermLeaveService(propIsOnLongTermLeave, propLongTermLeaveExpectedReturn);\n\n const {\n timeframe,\n updateRoleChangePathway,\n isLoading: isLoadingRoleChangePathway,\n } = useRoleChangePathwayService(propRoleProgressionPathwayTimeframeInMonths);\n\n const onFlightRiskAgreeClick = async () => {\n try {\n await toggleFlightRisk(employeeIdpId);\n onDataChanged();\n } catch (error) {\n store.notifications.addError('Failed to update Flight Risk flag');\n }\n };\n\n const onLongTermLeaveAgreeClick = async () => {\n try {\n await updateLongTermLeave({\n employeeIdpId,\n expectedReturn: newExpectedReturn === expectedReturn ? null : newExpectedReturn,\n });\n resetDialogStates();\n onDataChanged();\n } catch (e) {\n if (e?.response?.status === 409) {\n store.notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (e?.response?.status === 403) {\n store.notifications.addError('Not authorised to save changes.');\n } else {\n store.notifications.addError('Failed to update Long Term Leave flag');\n }\n }\n };\n\n const onRoleChangePathwayAgreeClick = async (selectedValue: TimeframeOption) => {\n try {\n await updateRoleChangePathway({\n employeeIdpId,\n timeframe: selectedValue.value,\n });\n onDataChanged();\n } catch (e) {\n if (e?.response?.status === 409) {\n store.notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (e?.response?.status === 403) {\n store.notifications.addError('Not authorised to save changes.');\n } else {\n store.notifications.addError('Failed to update Role Change Pathway flag');\n }\n }\n };\n\n const displayName = `${givenName} ${familyName}`;\n\n return (\n \n \n \n \n \n {givenName} {familyName}\n \n \n \n {role}\n {/* {department} */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n <>\n \n \n \n \n \n \n {isOnProbation ? 'Yes' : 'No'}\n \n );\n};\n","import { auth, errorLog } from 'index';\nimport { getDefaultAjaxInstance } from 'domain/store/util';\nimport { useState, useCallback } from 'react';\nimport { api } from 'shared/api/interfaces';\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const useFlightRiskService = (initFlightRiskValue: boolean) => {\n const [isFlightRisk, setIsFlightRisk] = useState(initFlightRiskValue);\n const [isLoading, setIsLoading] = useState(false);\n\n const ajax = getDefaultAjaxInstance(auth);\n const toggleFlightRisk = useCallback(\n async (employeeId: string) => {\n setIsLoading(true);\n try {\n const result = await ajax\n .post('Employee/FlightRisk', {\n json: { employeeIdpId: employeeId, flagValue: !isFlightRisk },\n })\n .json();\n\n setIsFlightRisk(result.isFlightRisk);\n return result;\n } catch (error) {\n errorLog('Failed to update employee flight risk.', error);\n throw error;\n } finally {\n setIsLoading(false);\n }\n },\n [ajax, isFlightRisk]\n );\n\n return { isFlightRisk, isLoading, toggleFlightRisk };\n};\n","import { auth, errorLog } from 'index';\nimport { getDefaultAjaxInstance } from 'domain/store/util';\nimport { useState, useCallback } from 'react';\nimport { api } from 'shared/api/interfaces';\nimport { IUpdateLongTermLeaveDto } from 'domain/store/dataTranferObjects/ILongTermLeaveDto';\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const useLongTermLeaveService = (\n initLeaveValue: boolean,\n initExpectedReturn: string | null\n) => {\n const [isOnLongTermLeave, setIsOnLongTermLeave] = useState(initLeaveValue);\n const [expectedReturn, setExpectedReturn] = useState(initExpectedReturn);\n const [isLoading, setIsLoading] = useState(false);\n\n const ajax = getDefaultAjaxInstance(auth);\n const updateLongTermLeave = useCallback(\n async (updateDto: IUpdateLongTermLeaveDto) => {\n setIsLoading(true);\n try {\n const result = await ajax\n .post('Employee/LongTermLeave', {\n json: {\n employeeIdpId: updateDto.employeeIdpId,\n flagValue: !isOnLongTermLeave || updateDto.expectedReturn !== null,\n expectedReturn: updateDto.expectedReturn,\n } as api.UpdateLongTermLeaveRequest,\n })\n .json();\n\n setIsOnLongTermLeave(result.isOnLongTermLeave);\n setExpectedReturn(result.expectedReturn || null);\n return result;\n } catch (error) {\n errorLog('Failed to update employee long term leave.', error);\n throw error;\n } finally {\n setIsLoading(false);\n }\n },\n [ajax, isOnLongTermLeave]\n );\n\n return { isOnLongTermLeave, isLoading, updateLongTermLeave, expectedReturn };\n};\n","import { auth, errorLog } from 'index';\nimport { getDefaultAjaxInstance } from 'domain/store/util';\nimport { useState, useCallback } from 'react';\nimport { IUpdateRoleChangePathwayDto } from 'domain/store/dataTranferObjects/IRoleChangePathwayDto';\nimport { api } from 'shared/api/interfaces';\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport const useRoleChangePathwayService = (initTimeframeValue: number) => {\n const [hasRoleChangePathway, setHasRoleChangePathway] = useState(initTimeframeValue > 0);\n const [timeframe, setTimeframe] = useState(initTimeframeValue);\n const [isLoading, setIsLoading] = useState(false);\n\n const ajax = getDefaultAjaxInstance(auth);\n const updateRoleChangePathway = useCallback(\n async (updateDto: IUpdateRoleChangePathwayDto) => {\n setIsLoading(true);\n try {\n const result = await ajax\n .post('Employee/rolechangepathway', {\n json: {\n employeeIdpId: updateDto.employeeIdpId,\n flagValue: updateDto.timeframe !== 0 ? true : false,\n timeframe: updateDto.timeframe,\n } as api.UpdateRoleChangePathwayRequest,\n })\n .json();\n\n setHasRoleChangePathway(result.hasRoleChangePathway);\n setTimeframe(result.timeframe);\n return result;\n } catch (error) {\n errorLog('Failed to update employee role progression.', error);\n throw error;\n } finally {\n setIsLoading(false);\n }\n },\n [ajax]\n );\n\n return { hasRoleChangePathway, timeframe, isLoading, updateRoleChangePathway };\n};\n","import { Paper, Table, TableBody, TableContainer, TablePagination } from '@material-ui/core';\nimport { getComparator, Order, stableSort } from 'views/components/table/SortHelper';\nimport { IEmployeeTalentModelDto } from 'domain/store/dataTranferObjects/IEmployeeTalentModelDto';\nimport { IEmployeeTalentModel } from 'domain/store/talentAnalysisTool/TalentAnalysisToolModel';\nimport { usePagingCache } from 'hooks/usePagingCache';\nimport React, { useState } from 'react';\nimport { HeadCell, SortTableHeader } from 'views/components/table/SortTableHeader';\nimport { EmployeeRow } from 'views/routes/squad/components/talentAnalysisTool/components/employeeRow/EmployeeRow';\nimport styles from './TalentAnalysisToolTable.module.scss';\nimport { TablePaginationActions } from 'views/components/table/TablePaginationActions';\n\nconst tableCells: HeadCell[] = [\n { id: 'givenName', label: 'Name', isSortable: true },\n { id: 'role', label: 'Position', isSortable: true },\n // { id: 'department', label: 'Capability', isSortable: true },\n { id: 'status', label: 'Status', isSortable: false },\n { id: 'talentCode', label: 'Talent Code', isSortable: false },\n { id: 'rcp', label: 'Role Change Pathway', isSortable: false },\n { id: 'ft', label: 'Flight Risk ', isSortable: false },\n { id: 'ltl', label: 'Long Term Leave', isSortable: false },\n { id: 'p', label: 'Probation', isSortable: false },\n];\n\nexport const TalentAnalysisToolTable: React.FC<{\n employees: IEmployeeTalentModel[];\n onDataChanged: () => void;\n}> = ({ employees, onDataChanged }) => {\n const { setCurrentPageCache, setRowsPerPageCache } = usePagingCache();\n\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n const [order, setOrder] = useState('asc');\n const [orderBy, setOrderBy] = useState('givenName');\n\n const updatePage = (page: number) => {\n setPage(page);\n setCurrentPageCache(page);\n };\n\n const updateRowsPerPage = (rowsPerPage: number) => {\n setRowsPerPage(rowsPerPage);\n setRowsPerPageCache(rowsPerPage);\n };\n\n const handleRequestSort = (\n event: React.MouseEvent,\n property: keyof IEmployeeTalentModelDto\n ) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n return (\n \n \n \n \n \n {stableSort(employees, getComparator(order, orderBy))\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((employee) => (\n \n ))}\n \n
    \n
    \n updatePage(p)}\n ActionsComponent={TablePaginationActions}\n onChangeRowsPerPage={(e) => {\n updateRowsPerPage(+e.target.value);\n updatePage(0);\n }}\n />\n
    \n );\n};\n","import { IPagingCache } from 'domain/store/PagingCacheModel';\nimport { useStore } from './useStore';\n\nexport function usePagingCache(): IPagingCache {\n const { pagingCache } = useStore();\n\n return pagingCache;\n}\n","import { MenuItem, FormControl, InputLabel, Select } from '@material-ui/core';\nimport React from 'react';\nimport { observer } from 'mobx-react-lite';\nimport { StatusIcon } from 'views/components/EmployeeStatus/StatusIcon/StatusIcon';\nimport { EmployeeStatusLabels } from 'domain/store/employeeJourney/EmployeeStatusModel';\n\ninterface IEmployeeStatusSelectProps {\n id: string;\n options: string[];\n onChanged: (selectedOptions: string) => void;\n label: string;\n value?: string;\n}\n\nexport const EmployeeStatusSelect: React.FC = observer((props) => {\n return (\n \n {props.label}\n props.onChanged(event.target.value as string)}\n value={props.value}>\n {props.options.map((option) => (\n \n {option ? (\n \n ) : (\n 'Any'\n )}\n \n ))}\n \n \n );\n});\n","import { Autocomplete } from '@material-ui/lab';\nimport React from 'react';\nimport { Checkbox, Chip, TextField } from '@material-ui/core';\nimport CheckBoxIcon from '@material-ui/icons/CheckBox';\nimport CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank';\nimport { observer } from 'mobx-react-lite';\n\ninterface MultiSelectProps {\n id: string;\n options: string[];\n onChanged: (selectedOptions: string[]) => void;\n label: string;\n values?: string[];\n}\n\nconst icon = ;\nconst checkedIcon = ;\n\nexport const MultiSelect: React.FC = observer((props: MultiSelectProps) => {\n const [selectedOptions, setValues] = React.useState(props.values);\n\n return (\n {\n setValues(values);\n props.onChanged(values);\n }}\n options={props.options}\n getOptionLabel={(option) => option}\n disableCloseOnSelect\n renderOption={(option, { selected }) => (\n \n \n {option}\n \n )}\n renderTags={(value, getTagProps) =>\n value.map((v, index) => (\n \n ))\n }\n renderInput={(params) => }\n />\n );\n});\n","import { MenuItem, FormControl, InputLabel, Select } from '@material-ui/core';\nimport React from 'react';\nimport { observer } from 'mobx-react-lite';\n\ninterface SingleSelectProps {\n id: string;\n options: string[];\n onChanged: (selectedOptions: string) => void;\n label: string;\n value?: string;\n}\n\nexport const SingleSelect: React.FC = observer((props: SingleSelectProps) => {\n return (\n \n {props.label}\n props.onChanged(event.target.value as string)}\n value={props.value}>\n {props.options.map((option) => (\n \n {option || 'Any'}\n \n ))}\n \n \n );\n});\n","import { Box, Grid } from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport { useFlags } from 'hooks/useFlags';\nimport { usePermissions } from 'hooks/usePermissions';\nimport { useTalentAnalysis } from 'hooks/useTalentAnalysis';\nimport { useUser } from 'hooks/useUser';\nimport { observer } from 'mobx-react-lite';\nimport React, { useEffect, useState } from 'react';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { TalentAnalysisToolTable } from 'views/routes/squad/components/talentAnalysisTool/components/talentAnalysisToolTable/TalentAnalysisToolTable';\nimport { EmployeeStatusSelect } from './components/employeeStatusSelect/EmployeeStatusSelect';\nimport { MultiSelect } from './components/multiSelect/multiSelect';\nimport { SingleSelect } from './components/singleSelect/singleSelect';\nimport styles from './talentAnalysisTool.module.scss';\n\nexport const TalentAnalysisTool: React.FC = observer(() => {\n const { selectedSquad, getAllSquads } = useUser();\n\n const {\n // canViewAllSquads,\n squads: { canViewTalentAnalysis },\n } = usePermissions();\n\n if (!canViewTalentAnalysis) return null;\n const canViewAllSquads = false; // TODO: Get CanViewAllSquads from permissions when multi squad support is in.\n\n const { loadEmployees, state, employees } = useTalentAnalysis();\n const { all: talentCodes } = useFlags();\n\n const [isDirty, setIsDirty] = useState(false);\n const [squads, setSquads] = useState([]);\n const [, setSelectedSquads] = useState([]);\n const [selectedPositions, setSelectedPositions] = useState([]);\n // const [selectedDepartments, setSelectedDepartments] = useState([]);\n const [selectedEmployeeStatus, setSelectedEmployeeStatus] = useState('');\n const [selectedTalentCodes, setSelectedTalentCodes] = useState([]);\n const [selectedRoleChangePathWay, setSelectedRoleChangePathWay] = useState('');\n const [selectedFlightRisk, setSelectedFlightRisk] = useState('');\n const [selectedProbation, setSelectedProbation] = useState('');\n const [selectedLongTermLeave, setSelectedLongTermLeave] = useState('');\n\n const yesNoOptions = ['', 'Yes', 'No'];\n const yes = 'Yes';\n\n if (canViewAllSquads) {\n useEffect(() => {\n getAllSquads().then((s) => {\n setSquads(\n Array.from(\n new Set([...s])\n )\n );\n });\n }, [getAllSquads, canViewAllSquads]);\n }\n\n const requiresReloadEmployees = async () => {\n if (isDirty) await loadEmployees(selectedSquad);\n setIsDirty(false);\n };\n\n useEffect(() => {\n if (selectedSquad) {\n loadEmployees(selectedSquad);\n }\n }, [loadEmployees, selectedSquad]);\n\n const filteredEmployees = employees.filter(\n (e) =>\n (selectedPositions.length === 0 || selectedPositions.indexOf(e.role) > -1) &&\n // (selectedDepartments.length === 0 || selectedDepartments.indexOf(e.department) > -1) &&\n (selectedEmployeeStatus === '' || e.statusType === Number(selectedEmployeeStatus)) &&\n (selectedTalentCodes.length === 0 || selectedTalentCodes.indexOf(e.talentCode) > -1) &&\n (selectedRoleChangePathWay === '' ||\n e.isRoleChangePathway === (selectedRoleChangePathWay === yes)) &&\n (selectedFlightRisk === '' || e.isFlightRisk === (selectedFlightRisk === yes)) &&\n (selectedProbation === '' || e.isOnProbation === (selectedProbation === yes)) &&\n (selectedLongTermLeave === '' || e.isOnLongTermLeave === (selectedLongTermLeave === yes))\n );\n\n return (\n <>\n {state === 'error' ? undefined : (\n <>\n \n {canViewAllSquads && (\n \n {state !== 'done' ? (\n \n ) : (\n \n )}\n \n )}\n \n {state !== 'done' ? (\n \n ) : (\n ([...employees.map((e) => e.role)])\n )}\n onChanged={setSelectedPositions}\n label=\"Positions\"\n values={selectedPositions}\n />\n )}\n \n \n {state !== 'done' ? (\n \n ) : (\n {\n setSelectedEmployeeStatus(so);\n await requiresReloadEmployees();\n }}\n options={['', '0', '1', '2']}\n value={selectedEmployeeStatus?.toString() ?? ''}\n />\n )}\n \n \n \n {/* \n {state !== 'done' ? (\n \n ) : (\n ([...employees.map((e) => e.department)])\n )}\n onChanged={setSelectedDepartments}\n label=\"Capabilities\"\n values={selectedDepartments}\n />\n )}\n */}\n \n {state !== 'done' ? (\n \n ) : (\n t.name)}\n onChanged={async (so) => {\n setSelectedTalentCodes(so);\n await requiresReloadEmployees();\n }}\n label=\"Talent Codes\"\n values={selectedTalentCodes}\n />\n )}\n \n \n {state !== 'done' ? (\n \n ) : (\n {\n setSelectedRoleChangePathWay(so);\n await requiresReloadEmployees();\n }}\n options={yesNoOptions}\n value={selectedRoleChangePathWay ?? ''}\n />\n )}\n \n \n {state !== 'done' ? (\n \n ) : (\n {\n setSelectedFlightRisk(so);\n await requiresReloadEmployees();\n }}\n options={yesNoOptions}\n value={selectedFlightRisk ?? ''}\n />\n )}\n \n \n {state !== 'done' ? (\n \n ) : (\n \n )}\n \n \n {state !== 'done' ? (\n \n ) : (\n \n )}\n \n \n \n )}\n {state === 'done' && (\n setIsDirty(true)}\n />\n )}\n {state === 'loading' && }\n {state === 'error' && (\n This is awkward - Failed to load Talent Analysis Tool.\n )}\n \n );\n});\n","import { FormControl, Grid, InputLabel, MenuItem, Select } from '@material-ui/core';\nimport React, { ChangeEvent } from 'react';\nexport interface ITableFilterSelectProps {\n label: string;\n value: string;\n options: string[];\n disallowAny?: boolean;\n onChange: (\n event: ChangeEvent<{\n name?: string | undefined;\n value: unknown;\n }>\n ) => void;\n}\n\nexport const TableFilterSelect: React.FC = (props) => {\n return (\n \n \n {props.label}\n \n \n \n );\n};\n","import { Button, Link, TableCell, TableRow } from '@material-ui/core';\nimport { useRoleChange } from 'hooks/useRoleChange';\nimport React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { api } from 'shared/api/interfaces';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport { RoleChangeStatusChip } from 'views/components/roleChangeStatusChip/RoleChangeStatusChip';\nimport { EMPLOYEE_JOURNEYS_ROUTE_PATH } from 'views/routes/Routes';\nimport styles from '../../RoleChangeTable.module.scss';\n\ninterface IEmployeeWithRoleChangeRowProps {\n employee: api.EmployeeWithRoleChangeDto;\n setSelectedEmployee: (value: api.EmployeeWithRoleChangeDto) => void;\n}\n\nexport const EmployeeWithRoleChangeRow: React.FC = ({\n employee,\n setSelectedEmployee,\n}) => {\n const { getRoleChangeCycle } = useRoleChange();\n\n return (\n \n \n \n \n \n {employee.givenName} {employee.familyName}\n \n \n \n {employee.role}\n {employee.roleChange.targetRole}\n {employee.department}\n {employee.talentCode || 'N/A'}\n {getRoleChangeCycle(employee.roleChange)}\n \n \n \n \n \n \n \n );\n};\n","import {\n Button,\n Drawer,\n IconButton,\n Link,\n TextField,\n Tooltip,\n Typography,\n} from '@material-ui/core';\nimport CheckBoxOutlinedIcon from '@material-ui/icons/CheckBoxOutlined';\nimport CloseIcon from '@material-ui/icons/Close';\nimport { Skeleton } from '@material-ui/lab';\nimport cn from 'classnames';\nimport { usePermissions } from 'hooks/usePermissions';\nimport { useRoleChange } from 'hooks/useRoleChange';\nimport { useStore } from 'hooks/useStore';\nimport React, { useEffect, useState } from 'react';\nimport { api } from 'shared/api/interfaces';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { RoleChangeStatusChip } from 'views/components/roleChangeStatusChip/RoleChangeStatusChip';\nimport styles from './RoleChangeSidePanel.module.scss';\n\ninterface IRoleChangeSidePanelProps {\n employee: api.EmployeeWithRoleChangeDto | undefined;\n setSelectedEmployee: (value: undefined) => void;\n}\n\nexport const RoleChangeSidePanel: React.FC = ({\n employee,\n setSelectedEmployee,\n}) => {\n const {\n loadSkills,\n getRatingDescriptionFromValue,\n approveRoleChangeForEmployee,\n downloadRoleChangeBusinessCaseAttachment,\n } = useRoleChange();\n const {\n notifications: { addError },\n } = useStore();\n const {\n canEdit,\n squads: { roleChanges },\n } = usePermissions();\n\n const [isLoadingSkills, setIsLoadingSkills] = useState(false);\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [skills, setSkills] = useState([]);\n const [approverComment, setApproverComment] = useState('');\n const [confirmationState, setConfirmationState] = useState<'approving' | 'rejecting' | undefined>(\n undefined\n );\n\n const handleFileDownload = (fileName: string | undefined): void => {\n if (!employee || !fileName) {\n addError('To download the file, both the employee and file name should be present');\n return;\n }\n\n if (employee.roleChange) {\n downloadRoleChangeBusinessCaseAttachment(\n employee.idpId,\n employee.roleChange.roleChangeId,\n fileName\n )\n .then((blob: Blob) => {\n const url = window.URL.createObjectURL(new Blob([blob]));\n const a = document.createElement('a');\n a.setAttribute('style', 'display:none;');\n document.body.appendChild(a);\n a.download = fileName;\n a.href = url;\n a.target = '_blank';\n a.click();\n document.body.removeChild(a);\n })\n .catch((err) => {\n if (err?.response?.status === 404) addError('File not found');\n });\n }\n };\n\n useEffect(() => {\n if (!employee) return;\n\n setIsLoadingSkills(true);\n loadSkills(employee.department, [employee.roleChange.targetRole])\n .then((result) => setSkills(result[0].coreValues))\n .catch((err) => {\n if (err?.response?.status === 403) {\n addError('Not authorised to get role change skills.');\n } else {\n addError('Failed to retrieve role change skills');\n }\n })\n .finally(() => setIsLoadingSkills(false));\n }, [employee, loadSkills, addError]);\n\n const finalizeRoleChange = (shouldApprove: boolean) => {\n if (!employee) return;\n setConfirmationState(undefined);\n setIsSubmitting(true);\n approveRoleChangeForEmployee(employee.roleChange.roleChangeId, shouldApprove, approverComment)\n .then(() => {\n employee.roleChange.isApproved = shouldApprove;\n employee.roleChange.approverAdditionalComments = approverComment;\n })\n .catch((err) => {\n if (err?.response?.status === 409) {\n addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (err?.response?.status === 403) {\n addError('Not authorised to save changes.');\n } else {\n addError(`Failed to ${shouldApprove ? 'approve' : 'reject'} role change.`);\n }\n })\n .finally(() => setIsSubmitting(false));\n };\n\n return (\n {\n setSelectedEmployee(undefined);\n setApproverComment('');\n }}>\n
    \n setSelectedEmployee(undefined)}>\n \n \n
    \n

    {employee?.displayName}'s Role Change

    \n
    \n
    \n

    Prerequisites

    \n
      \n
    • \n Passed probation\n \n
    • \n
    • \n Completed 2 retros in past 12 months\n \n
    • \n
    • \n No performance plan in past 12 months\n \n
    • \n
    \n
    \n
    \n

    {employee?.roleChange.targetRole} Skills & Behaviours

    \n
      \n {isLoadingSkills\n ? Array.from({ length: 8 }, (_, k) => k).map((i) => (\n
    • \n \n \n
    • \n ))\n : skills.map((s, i) => (\n
    • \n {s.name}\n \n {getRatingDescriptionFromValue(\n employee?.roleChange.skillRatings\n .find((r) => r.coreValueId === s.id)\n ?.rating.toString() || '0'\n ) || 'Not Rated'}\n \n
    • \n ))}\n
    \n
    \n
    \n

    Business Case Attachment

    \n {employee?.roleChange.businessCaseAttachmentFileName ? (\n \n \n handleFileDownload(employee?.roleChange.businessCaseAttachmentFileName)\n }\n target=\"_blank\">\n \n {employee?.roleChange.businessCaseAttachmentFileName}\n \n \n \n ) : (\n 'No attachment was uploaded'\n )}\n
    \n
    \n

    Submitters Additional Comments

    \n {employee?.roleChange.submitterAdditionalComments\n ? employee?.roleChange.submitterAdditionalComments\n : 'No comments were made'}\n
    \n {canEdit(roleChanges) && (\n
    \n
    \n

    Approvers Comment

    \n {employee && employee.roleChange.isApproved !== null ? (\n employee.roleChange.approverAdditionalComments || 'No comments were made'\n ) : (\n setApproverComment(e.currentTarget.value)}\n />\n )}\n
    \n {employee && employee.roleChange.isApproved !== null ? (\n
    \n \n
    \n ) : (\n employee &&\n !isLoadingSkills && (\n
    \n {isSubmitting ? (\n
    \n \n
    \n ) : (\n <>\n setConfirmationState('approving')}>\n Approve\n \n setConfirmationState('rejecting')}>\n Reject\n \n \n )}\n
    \n )\n )}\n
    \n )}\n
    \n finalizeRoleChange(true)}\n onDisagreeClick={() => {\n setConfirmationState(undefined);\n setApproverComment('');\n }}\n agreeButtonText=\"Approve\"\n disagreeButtonText=\"Cancel\"\n />\n finalizeRoleChange(false)}\n onDisagreeClick={() => {\n setConfirmationState(undefined);\n setApproverComment('');\n }}\n agreeButtonText=\"Reject\"\n disagreeButtonText=\"Cancel\"\n />\n \n );\n};\n","import {\n Grid,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TablePagination,\n TableRow,\n} from '@material-ui/core';\nimport { useRoleChange } from 'hooks/useRoleChange';\nimport { useStore } from 'hooks/useStore';\nimport { useUser } from 'hooks/useUser';\nimport moment from 'moment';\nimport React, { useEffect, useState } from 'react';\nimport { api } from 'shared/api/interfaces';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { getComparator, Order, stableSort } from 'views/components/table/SortHelper';\nimport { HeadCell, SortTableHeader } from 'views/components/table/SortTableHeader';\nimport { TableFilterSelect } from 'views/components/table/TableFilterSelect/TableFilterSelect';\nimport { TablePaginationActions } from 'views/components/table/TablePaginationActions';\nimport { EmployeeWithRoleChangeRow } from './components/employeeWithRoleChangeRow/EmployeeWithRoleChangeRow';\nimport { RoleChangeSidePanel } from './components/roleChangeSidePanel/RoleChangeSidePanel';\nimport styles from './RoleChangeTable.module.scss';\n\nconst validRoleChangeStatuses = ['', 'Approved', 'Rejected', 'Submitted'] as const;\nconst tableCells: HeadCell[] = [\n { id: 'givenName', label: 'Name', isSortable: true },\n { id: 'role', label: 'Current Position', isSortable: true },\n { id: 'roleChange', label: 'Propose Position', isSortable: true },\n // { id: 'department', label: 'Capability', isSortable: true },\n { id: 'talentCode', label: 'Talent Code', isSortable: true },\n { id: 'changeCycle', label: 'Change Cycle', isSortable: false },\n { id: 'action', label: 'Action', isSortable: false },\n { id: 'status', label: 'Status', isSortable: false },\n];\ntype RoleChangeStatus = typeof validRoleChangeStatuses[number];\n\nexport const RoleChangeTable: React.FC = () => {\n const { selectedSquad } = useUser();\n const {\n getRoleChangeSubmissionsForSquad,\n isLoading,\n getRoleChangeCycle,\n currentRoleChangeCycle,\n } = useRoleChange();\n const {\n notifications: { addError },\n } = useStore();\n\n const [selectedCurrentPosition, setSelectedCurrentPosition] = useState('');\n const [selectedProposedPosition, setSelectedProposedPosition] = useState('');\n // const [selectedCapability, setSelectedCapability] = useState('');\n const [selectedTalentCode, setSelectedTalentCode] = useState('');\n const [selectedChangeCycle, setSelectedChangeCycle] = useState('');\n const [selectedChangeStatus, setSelectedChangeStatus] = useState('');\n\n const [employees, setEmployees] = useState([]);\n const [selectedEmployee, setSelectedEmployee] = useState<\n api.EmployeeWithRoleChangeDto | undefined\n >(undefined);\n const [order, setOrder] = useState('asc');\n const [orderBy, setOrderBy] = useState('displayName');\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(10);\n\n useEffect(() => {\n setEmployees([]);\n getRoleChangeSubmissionsForSquad(selectedSquad)\n .then((result) => {\n setEmployees(result);\n setSelectedChangeCycle(currentRoleChangeCycle);\n })\n .catch((err) => {\n if (err?.response?.status === 403) {\n addError('Not authorised to access role changes.');\n } else {\n addError(`Failed to get role changes for ${selectedSquad}`);\n }\n });\n }, [selectedSquad, getRoleChangeSubmissionsForSquad, currentRoleChangeCycle, addError]);\n\n const roleChangeMatchesSelectedStatus = (roleChange: api.RoleChangeDto) => {\n if (selectedChangeStatus === '') return true;\n if (selectedChangeStatus === 'Submitted' && roleChange.isApproved === null) return true;\n if (selectedChangeStatus === 'Approved' && roleChange.isApproved) return true;\n if (selectedChangeStatus === 'Rejected' && roleChange.isApproved === false) return true;\n return false;\n };\n\n const filteredEmployees = employees.filter(\n (e) =>\n (selectedCurrentPosition === '' || selectedCurrentPosition === e.role) &&\n (selectedProposedPosition === '' || selectedProposedPosition === e.roleChange.targetRole) &&\n // (selectedCapability === '' || selectedCapability === e.department) &&\n (selectedTalentCode === '' || selectedTalentCode === e.talentCode) &&\n selectedChangeCycle === getRoleChangeCycle(e.roleChange) &&\n roleChangeMatchesSelectedStatus(e.roleChange)\n );\n\n const handleRequestSort = (\n event: React.MouseEvent,\n property: keyof api.EmployeeWithRoleChangeDto\n ) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n return (\n <>\n \n (employees.map((e) => e.role)))}\n onChange={(event) => setSelectedCurrentPosition((event.target as HTMLInputElement).value)}\n />\n (employees.map((e) => e.roleChange.targetRole)))}\n onChange={(event) =>\n setSelectedProposedPosition((event.target as HTMLInputElement).value)\n }\n />\n {/* (employees.map((e) => e.department)))}\n onChange={(event) => setSelectedCapability((event.target as HTMLInputElement).value)}\n /> */}\n (employees.map((e) => e.talentCode)))}\n onChange={(event) => setSelectedTalentCode((event.target as HTMLInputElement).value)}\n />\n ([\n ...employees\n .map((e) => getRoleChangeCycle(e.roleChange))\n .sort((a, b) => moment(a).diff(b))\n .reverse(),\n currentRoleChangeCycle,\n ])\n )}\n onChange={(event) => setSelectedChangeCycle((event.target as HTMLInputElement).value)}\n />\n setSelectedChangeStatus(event.target.value as RoleChangeStatus)}\n />\n \n {isLoading ? (\n \n ) : (\n \n \n \n \n \n {filteredEmployees.length ? (\n stableSort(\n filteredEmployees,\n getComparator(order, orderBy)\n )\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((e) => (\n \n ))\n ) : (\n \n \n No role changes match your current filters\n \n \n )}\n \n
    \n
    \n setPage(p)}\n ActionsComponent={TablePaginationActions}\n onChangeRowsPerPage={(e) => {\n setPage(0);\n setRowsPerPage(Number(e.target.value));\n }}\n />\n
    \n )}\n \n \n );\n};\n","import { useUser } from 'hooks/useUser';\nimport React, { ReactNode, useEffect } from 'react';\nimport { Link as RouterLink, Redirect, Route, Switch, useLocation } from 'react-router-dom';\nimport { SquadFeed } from './components/squadFeed/SquadFeed';\nimport { AppBar, Badge, Tab, Tabs } from '@material-ui/core';\nimport { NoteReview } from 'views/routes/squad/components/noteReview/NoteReview';\nimport { SquadTrends } from './components/squadTrends/SquadTrends';\nimport styles from './Squad.module.scss';\nimport { useBackToTopButton } from 'hooks/useBackToTopButton';\nimport { BackToTopButton } from 'views/routes/employeeJourney/components/employeeTimeline/components/backToTopButton/BackToTopButton';\nimport { observer } from 'mobx-react-lite';\nimport { TalentAnalysisTool } from 'views/routes/squad/components/talentAnalysisTool/talentAnalysisTool';\nimport { usePermissions } from 'hooks/usePermissions';\nimport { RoleChangeTable } from './components/roleChangeTable/RoleChangeTable';\nimport { SquadNotSelected } from 'views/components/squadNotSelected/SquadNotSelected';\n\ninterface TabItem {\n link: string;\n title: ReactNode;\n component: ReactNode;\n disabled: boolean;\n testId?: string;\n}\n\nexport const Squad = observer(() => {\n const {\n canViewSquadTab,\n squads,\n employees: { roleChanges },\n canView,\n } = usePermissions();\n\n if (!canViewSquadTab) return null;\n\n const location = useLocation();\n const { review, selectedSquad } = useUser();\n\n useEffect(() => {\n if (selectedSquad && squads.canViewNoteReview) {\n review.getNumberPendingNotes(selectedSquad);\n }\n }, [review, review.reviewState, squads.canViewNoteReview, selectedSquad]);\n\n const {\n showBackToTopButton,\n scrollToTopOfTimeline,\n scrollableContainerRef,\n } = useBackToTopButton();\n\n const tabItems: TabItem[] = [\n {\n title: 'Trends',\n testId: 'squad-trends-tab-item',\n component: selectedSquad ? : ,\n link: 'trends',\n disabled: !squads.canViewTrends,\n },\n {\n title: 'Squad Feed',\n testId: 'squad-feed-tab-item',\n component: selectedSquad ? : ,\n link: 'feed',\n disabled: !squads.canViewFeed,\n },\n {\n title: selectedSquad ? (\n \n Review\n \n ) : (\n 'Review'\n ),\n component: ,\n link: 'review',\n disabled: !squads.canViewNoteReview,\n },\n {\n title: 'Talent Analysis Tool',\n link: 'talent',\n component: selectedSquad ? : ,\n disabled: !squads.canViewTalentAnalysis,\n },\n {\n title: 'Role Change',\n link: 'rolechange',\n component: selectedSquad ? : ,\n disabled: !canView(roleChanges),\n },\n ].filter((t) => !t.disabled);\n\n const activeTab: number = tabItems.findIndex(\n (item) => location.pathname === `/squad/${item.link}`\n );\n\n return (\n
    \n \n \n {tabItems.map((item, index) => (\n \n ))}\n \n \n
    \n \n {tabItems.map(\n (item) =>\n !item.disabled && ( // prevent the user from just using updating the url\n \n {item.component}\n \n )\n )}\n \n \n {showBackToTopButton && (\n
    \n \n
    \n )}\n
    \n
    \n );\n});\n","import React from 'react';\nimport styles from './PageHeader.module.scss';\n\ninterface IPageHeaderProps {\n title: string;\n}\n\nexport const PageHeader: React.FC = (props: IPageHeaderProps) => {\n return
    {props.title}
    ;\n};\n","import React, { useState } from 'react';\nimport { ISquadUser } from 'domain/store/UserModel';\nimport { IconButton, Link, Menu, MenuItem, TableCell, TableRow } from '@material-ui/core';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { CREATE_NOTE_ROUTE_PATH, EMPLOYEE_JOURNEYS_ROUTE_PATH } from 'views/routes/Routes';\nimport { Skeleton } from '@material-ui/lab';\nimport styles from './EmployeeJourneysRow.module.scss';\nimport { Create, MoreVert, Person } from '@material-ui/icons';\nimport { useNavigate } from 'hooks/useNavigate';\n\ninterface EmployeeJourneysRowProps {\n employee: ISquadUser | null;\n}\n\nexport const EmployeeJourneysRow: React.FC = ({ employee }) => {\n const navigate = useNavigate();\n const [menuEl, setMenuEl] = useState(null);\n const handleClose = () => setMenuEl(null);\n\n return (\n \n \n
    \n
    \n \n
    \n
    \n {employee ? (\n \n {employee.displayName}\n \n ) : (\n \n )}\n
    \n
    \n
    \n \n {employee ? <>{employee?.position} : }\n \n {/* \n {employee ? <>{employee?.capability} : }\n */}\n \n {employee ? (\n <>\n {\n setMenuEl(e.currentTarget);\n }}>\n \n \n\n \n {\n handleClose();\n navigate(`${EMPLOYEE_JOURNEYS_ROUTE_PATH}/${employee.idpId}`);\n }}>\n \n View Profile\n \n {\n handleClose();\n navigate(CREATE_NOTE_ROUTE_PATH, { employeeId: employee.idpId });\n }}>\n \n Add Note\n \n \n \n ) : (\n \n )}\n \n
    \n );\n};\n","import {\n Container,\n Grid,\n Paper,\n Table,\n TableBody,\n TableContainer,\n TablePagination,\n} from '@material-ui/core';\nimport { ISquadUser } from 'domain/store/UserModel';\nimport { useStore } from 'hooks/useStore';\nimport { useUser } from 'hooks/useUser';\nimport { observer } from 'mobx-react-lite';\nimport React, { useEffect, useState } from 'react';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { PageHeader } from 'views/components/pageHeader/PageHeader';\nimport { SquadNotSelected } from 'views/components/squadNotSelected/SquadNotSelected';\nimport { getComparator, Order, stableSort } from 'views/components/table/SortHelper';\nimport { HeadCell, SortTableHeader } from 'views/components/table/SortTableHeader';\nimport { TableFilterSelect } from 'views/components/table/TableFilterSelect/TableFilterSelect';\nimport { EmployeeJourneysRow } from 'views/routes/employeeJourneys/components/employeeJourneysRow/EmployeeJourneysRow';\nimport { DEFAULT_PAGE_NUMBER, DEFAULT_ROWS_PER_PAGE } from 'views/ViewConstants';\nimport styles from './EmployeeJourneys.module.scss';\nimport { TablePaginationActions } from 'views/components/table/TablePaginationActions';\n\nconst tableCells: HeadCell[] = [\n { id: 'displayName', label: 'Name', isSortable: true },\n { id: 'position', label: 'Position', isSortable: true },\n // { id: 'capability', label: 'Capability', isSortable: true },\n { id: 'action', label: 'Action', isSortable: false },\n];\n\nexport const EmployeeJourneys: React.FC = observer(() => {\n const { selectedSquad, getEmployeesForSquad } = useUser();\n const {\n notifications: { addError },\n } = useStore();\n\n const [isLoading, setIsLoading] = useState(false);\n\n // const [selectedCapability, setSelectedCapability] = useState('');\n const [selectedPosition, setSelectedPosition] = useState('');\n\n const [page, setPage] = useState(DEFAULT_PAGE_NUMBER);\n const [rowsPerPage, setRowsPerPage] = useState(DEFAULT_ROWS_PER_PAGE);\n const [employees, setEmployees] = useState([]);\n const [order, setOrder] = useState('asc');\n const [orderBy, setOrderBy] = useState('displayName');\n\n useEffect(() => {\n if (selectedSquad) {\n setIsLoading(true);\n getEmployeesForSquad(selectedSquad)\n .then((res) => setEmployees(res))\n .catch((e) => {\n addError(`Failed to get role changes for ${selectedSquad}`);\n })\n .finally(() => setIsLoading(false));\n }\n }, [selectedSquad, getEmployeesForSquad, addError]);\n\n const filteredEmployees = employees.filter(\n (e) => selectedPosition === '' || selectedPosition === e.position\n // && (selectedCapability === '' || selectedCapability === e.capability)\n );\n\n const handleRequestSort = (event: React.MouseEvent, property: keyof ISquadUser) => {\n const isAsc = orderBy === property && order === 'asc';\n setOrder(isAsc ? 'desc' : 'asc');\n setOrderBy(property);\n };\n\n return (\n <>\n {selectedSquad ? (\n \n \n \n \n (employees.map((e) => e.position)))}\n onChange={(e) => {\n setSelectedPosition((e.target as HTMLInputElement).value);\n setPage(0);\n }}\n />\n \n {/* \n (employees.map((e) => e.capability)))}\n onChange={(e) => {\n setSelectedCapability((e.target as HTMLInputElement).value);\n setPage(0);\n }}\n />\n */}\n \n\n {isLoading ? (\n \n ) : (\n \n \n \n \n {stableSort(filteredEmployees, getComparator(order, orderBy))\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((employee, index) => (\n \n ))}\n \n
    \n setPage(p)}\n page={page}\n rowsPerPage={rowsPerPage}\n ActionsComponent={TablePaginationActions}\n onChangeRowsPerPage={(e) => {\n setPage(0);\n setRowsPerPage(+e.target.value);\n }}\n />\n
    \n )}\n
    \n ) : (\n \n )}\n \n );\n});\n","import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Grid } from '@material-ui/core';\nimport React from 'react';\nimport styles from 'views/routes/unauthorised/Unauthorised.module.scss';\n\nexport const Unauthorised: React.FC = function () {\n return (\n
    \n \n \n \n \n \n Unauthorised\n \n You do not have permission to view the page that you were looking for.\n \n
    \n );\n};\n","import { ICatchUpsModel } from 'domain/store/catchUps/CatchUpsModel';\nimport { useStore } from './useStore';\n\nexport function useCatchUpGroups(): ICatchUpsModel {\n const { catchUpGroups } = useStore();\n\n return catchUpGroups;\n}\n","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n TextField,\n} from '@material-ui/core';\nimport React, { useState } from 'react';\n\nexport interface AddGroupDialogProps {\n isOpen: boolean;\n onCancelClick: () => void;\n onOkClick: (groupName: string) => void;\n}\n\nexport const AddGroupDialog: React.FunctionComponent = (props) => {\n const [newGroupName, setNewGroupName] = useState('');\n\n const onCancelClick = () => {\n props.onCancelClick();\n };\n\n const onOkClick = () => {\n props.onOkClick(newGroupName);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.keyCode === 13) {\n props.onOkClick(newGroupName);\n }\n\n if (e.keyCode === 27) {\n onCancelClick();\n }\n };\n\n return (\n setNewGroupName('')}\n open={props.isOpen}\n aria-labelledby=\"alert-dialog-title\"\n aria-describedby=\"alert-dialog-description\">\n \n Create new group\n \n \n setNewGroupName(event.target.value)}\n value={newGroupName}\n />\n \n \n \n \n \n \n );\n};\n","import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { CircularProgress, MenuItem, Select } from '@material-ui/core';\nimport React, { useState } from 'react';\nimport styles from './FrequencySelector.module.scss';\nimport { faChevronCircleDown } from '@fortawesome/free-solid-svg-icons';\n\ninterface Frequency {\n value: number;\n text: string;\n}\n\nexport interface FrequencySelectorProps {\n showSelectOption?: boolean;\n value: number;\n isUpdatingFrequency?: boolean;\n onFrequencyChange: (frequencyId: number) => void;\n}\n\nexport const FrequencySelector: React.FC = ({\n showSelectOption,\n value,\n isUpdatingFrequency,\n onFrequencyChange,\n}) => {\n const [selectedFrequency, setSelectedFrequency] = useState(value);\n\n const frequencies: Frequency[] = Array.from({ length: 8 }, (_, k) => k + 1).map((i) => ({\n value: i,\n text: `${i} ${i === 1 ? 'Week' : 'Weeks'}`,\n }));\n\n const handleFrequencyChange = (frequency: number) => {\n setSelectedFrequency(frequency);\n onFrequencyChange(frequency);\n };\n\n return (\n handleFrequencyChange(event.target.value as number)}\n disabled={isUpdatingFrequency}\n className={styles.select}\n IconComponent={(props) => {\n const propsWithDropdownIcon = {\n ...props,\n className: `${props.className} ${styles.dropdownIcon} `,\n };\n return (\n
    \n {isUpdatingFrequency ? (\n \n ) : (\n \n )}\n
    \n );\n }}>\n {showSelectOption && Select}\n {frequencies.map((f) => (\n \n {f.text}\n \n ))}\n \n );\n};\n","import { faCheck, faTimes } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Button, IconButton, TableCell, TableRow } from '@material-ui/core';\nimport React, { useState } from 'react';\nimport { EmployeeDropdown } from 'views/components/employeeDropdown/EmployeeDropdown';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { FrequencySelector } from '../FrequencySelector/FrequencySelector';\nimport styles from './AddMemberForm.module.scss';\n\nexport interface AddMemberFormProps {\n isAddingMember: boolean;\n onCancelClick: () => void;\n onOkClick: (idpId: string, frequencyId: number) => void;\n}\n\nexport const AddMemberForm: React.FC = ({\n isAddingMember,\n onCancelClick,\n onOkClick,\n}) => {\n const [selectedFrequency, setSelectedFrequency] = useState(0);\n const [selectedEmployee, setSelectedEmployee] = useState('');\n\n const handleFrequencyChange = (frequencyId: number) => {\n setSelectedFrequency(frequencyId);\n };\n\n const handleSaveClick = () => {\n if (selectedEmployee && selectedFrequency > 0) {\n onOkClick(selectedEmployee, selectedFrequency);\n }\n };\n\n return (\n \n \n {\n if (employee) {\n setSelectedEmployee(employee?.idpId);\n }\n }}\n />\n \n -\n -\n -\n \n handleFrequencyChange(id)}\n value={0}\n showSelectOption={true}\n />\n \n \n \n \n \n {isAddingMember ? (\n \n ) : (\n <>\n \n \n \n \n \n \n \n )}\n \n \n );\n};\n","import { faMinusCircle } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Box, Button, IconButton, TableCell, TableRow } from '@material-ui/core';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport { IGroupMemberModel } from 'domain/store/catchUps/CatchUpsModel';\nimport React, { useState } from 'react';\nimport styles from './MemberRow.module.scss';\nimport { observer } from 'mobx-react-lite';\nimport { useCatchUpGroups } from 'hooks/useCatchUpGroups';\nimport Skeleton from '@material-ui/lab/Skeleton/Skeleton';\nimport { CREATE_NOTE_ROUTE_PATH, EMPLOYEE_JOURNEYS_ROUTE_PATH } from 'views/routes/Routes';\nimport { Link } from 'react-router-dom';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\nimport { LoadingIndicator } from 'views/components/loadingIndicator/LoadingIndicator';\nimport { FrequencySelector } from '../FrequencySelector/FrequencySelector';\nimport cn from 'classnames';\nimport { useStore } from 'hooks/useStore';\n\nexport interface MemberRowProps {\n member: IGroupMemberModel | null;\n}\n\nexport const MemberRow: React.FC = observer(({ member }: MemberRowProps) => {\n const { updateCatchupFrequency, removeMemberFromGroup } = useCatchUpGroups();\n\n const store = useStore();\n\n const [isUpdatingFrequency, setIsUpdatingFrequency] = useState(false);\n const [isRemovingMember, setIsRemovingMember] = useState(false);\n const [selectedFrequency, setSelectedFrequency] = useState(\n member?.catchupFrequencyInWeeks\n );\n const [isDeleteGroupDialogOpen, setIsDeleteDialogOpen] = useState(false);\n\n const handleRemoveMember = () => {\n if (member?.catchupGroupId) {\n setIsRemovingMember(true);\n setIsDeleteDialogOpen(false);\n removeMemberFromGroup(member.catchupGroupId, member?.idpId)\n .catch((e) => {\n if (e?.response?.status === 409) {\n store.notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (e?.response?.status === 403) {\n store.notifications.addError('Not authorised to save changes.');\n } else {\n store.notifications.addError('Unable to remove user from the group, please try again.');\n }\n })\n .finally(() => {\n setIsRemovingMember(false);\n });\n }\n };\n\n const handleFrequencyChange = (frequencyId: number) => {\n setIsUpdatingFrequency(true);\n setSelectedFrequency(frequencyId);\n member &&\n updateCatchupFrequency(member?.catchupGroupId, member?.idpId, frequencyId)\n .catch(() => {\n store.notifications.addError('Unable to update frequency, please try again.');\n })\n .finally(() => setIsUpdatingFrequency(false));\n };\n\n return (\n \n \n \n \n \n {member?.displayName}\n \n \n \n \n {member ? (\n <>{member.lastCatchupDateUTC ? member.lastCatchupDateAsLocalString : '-'}\n ) : (\n \n )}\n \n \n {member ? (\n <>{member.nextCatchupDateUTC ? member.nextCatchupDateAsLocalString : '-'}\n ) : (\n \n )}\n \n \n {member ? (\n member.daysUntilNextCatchup ? (\n \n {`${member.daysUntilNextCatchup} ${\n member.daysUntilNextCatchup === 1 ? 'day' : 'days'\n }`}\n \n ) : (\n '-'\n )\n ) : (\n \n )}\n \n \n {member ? (\n handleFrequencyChange(id)}\n isUpdatingFrequency={isUpdatingFrequency}\n value={selectedFrequency ?? 0}\n />\n ) : (\n \n )}\n \n \n {member ? (\n \n Add a Note\n \n ) : (\n \n )}\n \n \n {member ? (\n !isRemovingMember ? (\n setIsDeleteDialogOpen(true)}>\n \n \n ) : (\n \n )\n ) : (\n \n )}\n \n setIsDeleteDialogOpen(false)}\n onAgreeClick={handleRemoveMember}\n />\n \n );\n});\n","import {\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n TextField,\n} from '@material-ui/core';\nimport React, { useState } from 'react';\n\nexport interface IRenameGroupDialogProps {\n isOpen: boolean;\n groupName: string;\n onOkClick: (groupName: string) => void;\n onCancelClick: () => void;\n}\n\nexport const RenameGroupDialog: React.FC = (\n props: IRenameGroupDialogProps\n) => {\n const [groupName, setGroupName] = useState(props.groupName);\n\n const onCancelClick = () => {\n props.onCancelClick();\n };\n\n const onOkClick = (groupName: string) => {\n props.onOkClick(groupName);\n };\n\n return (\n \n \n Change the group name\n \n \n setGroupName(e.target.value)}\n value={groupName}\n />\n \n \n \n \n \n \n );\n};\n","import { faEdit, faPlusCircle, faTrashAlt } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n Box,\n CircularProgress,\n IconButton,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n} from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport { IGroupModel } from 'domain/store/catchUps/CatchUpsModel';\nimport { useCatchUpGroups } from 'hooks/useCatchUpGroups';\nimport { useStore } from 'hooks/useStore';\nimport { observer } from 'mobx-react-lite';\nimport React, { useState } from 'react';\nimport { AlertDialog } from 'views/components/alertDialog/AlertDialog';\nimport { AddMemberForm } from '../AddMemberForm/AddMemberForm';\nimport { MemberRow } from '../MemberRow/MemberRow';\nimport { RenameGroupDialog } from '../RenameGroupDialog/RenameGroupDialog';\nimport styles from './GroupCard.module.scss';\n\nexport interface GroupCardProps {\n group: IGroupModel | null;\n}\n\nexport const GroupCard: React.FC = observer(({ group }) => {\n const { addMember, deleteGroup, renameGroup } = useCatchUpGroups();\n\n const store = useStore();\n\n const [isAddMemberFormOpen, setAddMemberFormOpen] = useState(false);\n const [isDeleteGroupDialogOpen, setIsDeleteDialogOpen] = useState(false);\n const [isRenameGroupDialogOpen, setIsRenameDialogOpen] = useState(false);\n const [isAddingMember, setIsAddingMember] = useState(false);\n const [groupName, setGroupName] = useState(group?.catchupGroupName);\n const [isUpdatingGroupName, setIsUpdatingGroupName] = useState(false);\n\n const handleGroupDelete = () => {\n if (group) {\n deleteGroup(group.catchupGroupId).catch((e) => {\n if (e?.response?.status === 409) {\n store.notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (e?.response?.status === 403) {\n store.notifications.addError('Not authorised to save changes.');\n } else {\n store.notifications.addError('Unable to delete group, please try again.');\n }\n });\n setIsDeleteDialogOpen(false);\n }\n };\n\n const handleGroupRename = (groupName: string) => {\n setIsUpdatingGroupName(true);\n setGroupName(groupName);\n group &&\n renameGroup(group.catchupGroupId, groupName)\n .catch((e) => {\n if (e?.response?.status === 409) {\n store.notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (e?.response?.status === 403) {\n store.notifications.addError('Not authorised to save changes.');\n } else {\n store.notifications.addError('Unable to rename group, please try again.');\n }\n })\n .finally(() => {\n setIsUpdatingGroupName(false);\n setIsRenameDialogOpen(false);\n });\n };\n\n const handleAddMember = (idpId: string, frequencyId: number) => {\n setIsAddingMember(true);\n group &&\n addMember(idpId, group.catchupGroupId, frequencyId)\n .then((_) => {\n setAddMemberFormOpen(false);\n })\n .catch((e) => {\n e.response.text().then((message: string) => {\n if (e.response.status === 409) {\n store.notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else {\n store.notifications.addError('Unable to add user to the group, please try again.');\n }\n });\n })\n .finally(() => {\n setIsAddingMember(false);\n });\n };\n\n return (\n \n \n \n {group && (\n
    \n setIsRenameDialogOpen(true)}>\n \n \n setIsDeleteDialogOpen(true)}>\n \n \n
    \n )}\n
    \n {group ? (\n <>\n {isUpdatingGroupName ? (\n \n ) : (\n

    {groupName}

    \n )}\n \n ) : (\n \n )}\n \n \n \n \n Name\n \n Last Catch-up\n \n \n Next Catch-up\n \n \n Days until next\n \n Frequency\n Add note\n Remove\n \n \n \n {group\n ? group.members.map((member) => )\n : Array.from({ length: 5 }, (v, k) => k).map((i) => (\n \n ))}\n {isAddMemberFormOpen && (\n setAddMemberFormOpen(false)}\n onOkClick={handleAddMember}\n />\n )}\n \n
    \n
    \n {group && (\n <>\n \n setAddMemberFormOpen(true)}>\n \n
    Add New Member
    \n
    \n
    \n setIsDeleteDialogOpen(false)}\n onAgreeClick={handleGroupDelete}\n />\n handleGroupRename(name)}\n onCancelClick={() => setIsRenameDialogOpen(false)}\n />\n \n )}\n
    \n
    \n );\n});\n","import { faPlusCircle } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Box, Button } from '@material-ui/core';\nimport { useCatchUpGroups } from 'hooks/useCatchUpGroups';\nimport { usePermissions } from 'hooks/usePermissions';\nimport { useStore } from 'hooks/useStore';\nimport { observer } from 'mobx-react-lite';\nimport React, { useEffect, useState } from 'react';\nimport { AddGroupDialog } from './components/AddGroupDialog/AddGroupDialog';\nimport { GroupCard } from './components/GroupCard/GroupCard';\nimport styles from './MyCatchUps.module.scss';\n\nexport interface MyCatchUpsProps {}\n\nexport const MyCatchUps: React.FC = observer(() => {\n const { loadGroups, createGroup, groups, state } = useCatchUpGroups();\n const {\n catchUps: { canViewMyCatchUps },\n } = usePermissions();\n const store = useStore();\n\n if (!canViewMyCatchUps) return null;\n\n const [isAddGroupDialogOpen, showAddGroupDialog] = useState(false);\n\n const handleGroupDialogOkClick = (groupName: string) => {\n if (groupName) {\n createGroup(groupName)\n .then(() => showAddGroupDialog(false))\n .catch((e) => {\n if (e?.response?.status === 409) {\n store.notifications.addError(\n 'Conflict occurred saving changes, please refresh the page, and try again after.'\n );\n } else if (e?.response?.status === 403) {\n store.notifications.addError('Not authorised to save changes.');\n } else {\n store.notifications.addError('Unable to create group, please try again.');\n }\n });\n }\n };\n\n const openDialog = (e: React.MouseEvent) => {\n showAddGroupDialog(true);\n document.activeElement && (document.activeElement as HTMLElement).blur();\n };\n\n useEffect(() => {\n loadGroups();\n }, [loadGroups]);\n\n return (\n \n \n }\n onClick={(e) => openDialog(e)}>\n Create New Group\n \n showAddGroupDialog(false)}\n />\n \n {state === 'done' ? (\n groups.map((group, index) => )\n ) : (\n \n )}\n \n );\n});\n","import React from 'react';\nimport styles from './SquadCatchUpItem.module.scss';\nimport { Box, TableCell, TableRow } from '@material-ui/core';\nimport { Avatar } from 'views/components/avatar/Avatar';\nimport { Link } from 'react-router-dom';\nimport { EMPLOYEE_JOURNEYS_ROUTE_PATH } from 'views/routes/Routes';\nimport { ISquadCatchUpItem } from 'domain/store/catchUps/SquadCatchUpsModel';\n\ninterface ISquadCatchUpItemProps {\n catchup: ISquadCatchUpItem;\n}\n\nexport const SquadCatchUpItem: React.FC = ({ catchup }) => {\n return (\n \n \n \n \n \n {catchup.employee.displayName}\n \n \n \n \n {catchup.lastCatchupDateUTC ? catchup.lastCatchupDateAsLocalString : '-'}\n \n \n {catchup.personWhoCaughtUpWithEmployee ? (\n \n \n \n {catchup.personWhoCaughtUpWithEmployee.displayName}\n \n \n ) : (\n '-'\n )}\n \n \n {catchup.daysSinceLastCatchup === undefined\n ? '-'\n : `${catchup.daysSinceLastCatchup} ${\n catchup.daysSinceLastCatchup === 1 ? 'day' : 'days'\n }`}\n \n \n );\n};\n","import React from 'react';\nimport styles from './SquadCatchUpItemSkeleton.module.scss';\nimport { Box, TableCell, TableRow } from '@material-ui/core';\nimport { Skeleton } from '@material-ui/lab';\nimport { Avatar } from 'views/components/avatar/Avatar';\n\nexport const SquadCatchUpItemSkeleton: React.FC = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import React from 'react';\nimport styles from './SquadCatchUps.module.scss';\nimport {\n Box,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow,\n} from '@material-ui/core';\nimport { useSquadCatchUps } from 'hooks/useSquadCatchUps';\nimport { useUser } from 'hooks/useUser';\nimport { observer } from 'mobx-react-lite';\nimport { SquadCatchUpItem } from './components/squadCatchUpItem/SquadCatchUpItem';\nimport { SquadCatchUpItemSkeleton } from './components/squadCatchUpItemSkeleton/SquadCatchUpItemSkeleton';\nimport { usePermissions } from 'hooks/usePermissions';\n\nexport const SquadCatchUps: React.FC = observer(() => {\n const { state, squadCatchUps, loadCatchupsForSquad } = useSquadCatchUps();\n const { selectedSquad } = useUser();\n\n const {\n catchUps: { canViewSquadCatchUps },\n } = usePermissions();\n\n if (!canViewSquadCatchUps) return null;\n\n React.useEffect(() => {\n loadCatchupsForSquad(selectedSquad);\n }, [loadCatchupsForSquad, selectedSquad]);\n\n return (\n \n \n

    {selectedSquad}

    \n \n \n \n \n Name\n Last Catch-up\n Catch-up with\n Days since last Catch-up\n \n \n \n {state === 'done'\n ? squadCatchUps.map((c, i) => )\n : Array.from({ length: 5 }, (v, k) => k).map((i) => (\n \n ))}\n \n
    \n
    \n
    \n
    \n );\n});\n","import { ISquadCatchUpsModel } from 'domain/store/catchUps/SquadCatchUpsModel';\nimport { useStore } from './useStore';\n\nexport function useSquadCatchUps(): ISquadCatchUpsModel {\n const { squadCatchUps } = useStore();\n\n return squadCatchUps;\n}\n","import { AppBar, Tab, Tabs } from '@material-ui/core';\nimport { useBackToTopButton } from 'hooks/useBackToTopButton';\nimport { usePermissions } from 'hooks/usePermissions';\nimport React, { ReactNode } from 'react';\nimport { Link, Switch, Redirect, useLocation, Route } from 'react-router-dom';\nimport { BackToTopButton } from '../employeeJourney/components/employeeTimeline/components/backToTopButton/BackToTopButton';\nimport styles from './CatchUps.module.scss';\nimport { MyCatchUps } from './components/myCatchUps/MyCatchUps';\nimport { SquadCatchUps } from './components/squadCatchUps/SquadCatchUps';\nimport { useUser } from 'hooks/useUser';\nimport { SquadNotSelected } from 'views/components/squadNotSelected/SquadNotSelected';\nimport { observer } from 'mobx-react-lite';\n\ninterface TabItem {\n link: string;\n title: ReactNode;\n component: ReactNode;\n disabled: boolean;\n}\n\nexport const CatchUps: React.FC = observer(() => {\n const { canViewCatchupGroupTab, catchUps } = usePermissions();\n const { selectedSquad } = useUser();\n const location = useLocation();\n\n const {\n showBackToTopButton,\n scrollToTopOfTimeline,\n scrollableContainerRef,\n } = useBackToTopButton();\n\n if (!canViewCatchupGroupTab) return null;\n\n const tabItems: TabItem[] = [\n {\n title: 'My Catch-Ups',\n component: ,\n link: 'my-catch-ups',\n disabled: !catchUps.canViewMyCatchUps,\n },\n {\n title: 'Squad Catch-Ups',\n component: selectedSquad ? : ,\n link: 'squad-catch-ups',\n disabled: !catchUps.canViewSquadCatchUps,\n },\n ].filter((t) => !t.disabled);\n\n const activeTab: number = tabItems.findIndex(\n (item) => location.pathname === `/catch-ups/${item.link}`\n );\n\n return (\n
    \n \n \n {tabItems.map((item, index) => (\n \n ))}\n \n \n
    \n \n {tabItems.map(\n (item) =>\n !item.disabled && (\n \n {item.component}\n \n )\n )}\n \n \n {showBackToTopButton && (\n
    \n \n
    \n )}\n
    \n
    \n );\n});\n","import { observer } from 'mobx-react-lite';\nimport React from 'react';\nimport { Route, Switch } from 'react-router-dom';\nimport { Shell } from 'views/components/shell/Shell';\nimport { EmployeeJourney } from 'views/routes/employeeJourney/EmployeeJourney';\nimport { MyNotes } from 'views/routes/myNotes/MyNotes';\nimport { Admin } from './admin/Admin';\nimport { NotFound } from './notFound/NotFound';\nimport { Squad } from './squad/Squad';\nimport { EmployeeJourneys } from 'views/routes/employeeJourneys/EmployeeJourneys';\nimport { Unauthorised } from './unauthorised/Unauthorised';\nimport { usePermissions } from 'hooks/usePermissions';\nimport { CatchUps } from './catchUps/CatchUps';\n\nexport const EMPLOYEE_JOURNEYS_ROUTE_PATH = '/employees';\nexport const CREATE_NOTE_ROUTE_PATH = '/notes/create';\nexport const EDIT_NOTE_ROUTE_PATH = '/notes/edit';\nexport const SQUAD_ROUTE_PATH = '/squad';\nexport const ADMIN_ROUTE_PATH = '/admin';\nexport const UNAUTHORISED_ROUTE_PATH = '/unauthorised';\nexport const CATCH_UPS_ROUTE_PATH = '/catch-ups';\n\nexport const Routes: React.FC = observer(() => {\n const {\n canViewSquadTab,\n canViewEmployeeTab,\n canViewNoteTab,\n canManageRoles,\n canViewCatchupGroupTab,\n canAssignSquads,\n } = usePermissions();\n\n return (\n \n \n \n {canViewSquadTab ? (\n \n ) : canViewEmployeeTab ? (\n \n ) : (\n \n )}\n \n\n {canViewNoteTab && (\n \n \n \n )}\n\n {canViewNoteTab && (\n \n \n \n )}\n\n {canViewCatchupGroupTab && (\n \n \n \n )}\n\n {canViewEmployeeTab && (\n \n \n \n )}\n\n {canViewEmployeeTab && (\n \n \n \n )}\n\n {canViewSquadTab && (\n \n \n \n )}\n\n {(canManageRoles || canAssignSquads) && (\n \n \n \n )}\n\n \n \n \n \n \n \n \n \n );\n});\n","import React, { useEffect, useState } from 'react';\n\nimport { autorun } from 'mobx';\nimport { observer } from 'mobx-react-lite';\nimport { Alert } from '@material-ui/lab';\nimport { Snackbar } from '@material-ui/core';\n\nimport { useStore } from 'hooks/useStore';\nimport { INotification } from 'domain/store/singletons/NotificationModel';\n\ninterface INotificationProps {\n isOpen: boolean;\n notification: INotification;\n onClose: () => void;\n}\n\nexport const Notifications: React.FC = observer(() => {\n const store = useStore();\n const [notifications, setNotifications] = useState([]);\n\n useEffect(() => {\n return autorun(() => {\n setNotifications(store.notifications.notificationsToShow);\n });\n }, [store, notifications, setNotifications]);\n\n return (\n <>\n {notifications.map((n, i) => (\n {\n store.notifications.closeNotification(n);\n }}\n />\n ))}\n \n );\n});\n\nconst Notification: React.FC = observer(\n ({ isOpen, notification: { message, severity }, onClose }) => {\n return (\n \n \n {message}\n \n \n );\n }\n);\n","import { faExclamationCircle } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Grid } from '@material-ui/core';\nimport React from 'react';\nimport styles from './NoAccessToApp.module.scss';\n\nexport const NoAccessToApp: React.FC = function () {\n return (\n
    \n \n \n \n \n \n Oops\n \n \n You don't currently have access to this app. If you believe you should have access,\n please contact your local People Partner.\n \n \n
    \n );\n};\n","import { createMuiTheme } from '@material-ui/core';\nimport { siteDefault } from './views/themes';\n\nexport const theme = createMuiTheme({\n palette: {\n primary: {\n main: siteDefault['--primary-one'],\n },\n },\n});\n","import React from 'react';\nimport { History } from 'history';\nimport { Router } from 'react-router-dom';\n\nimport { siteDefault } from './themes';\nimport styles from './App.module.scss';\nimport { Routes } from 'views/routes/Routes';\nimport { IRootStoreModel } from 'domain/store/RootStoreModel';\nimport { useAuthentication } from 'hooks/useAuthentication';\nimport { IAuthenticationProvider } from 'auth/AuthenticationTypes';\nimport { Notifications } from 'views/components/notification/Notifications';\n\nimport { LocalizationProvider } from '@material-ui/pickers';\nimport MomentUtils from '@material-ui/pickers/adapter/moment';\nimport { observer } from 'mobx-react-lite';\nimport { Unauthorised } from './routes/unauthorised/Unauthorised';\nimport { NoAccessToApp } from './components/noAccessToApp/NoAccessToApp';\nimport { Box, Button } from '@material-ui/core';\n\nimport { ThemeProvider } from '@material-ui/core';\nimport { theme } from 'theme';\n\ninterface IAppProps {\n history: History;\n store: IRootStoreModel;\n auth: IAuthenticationProvider;\n}\n\nexport const StoreContext = React.createContext(undefined);\n\nexport const App: React.FC = observer(({ history, store, auth }) => {\n const authState = useAuthentication(auth);\n\n if (authState === 'login-error') {\n return (\n \n \n \n );\n }\n\n if (authState === 'signed-in' && store.state === 'unauthorized') {\n return (\n \n \n \n \n \n \n );\n }\n\n if (authState === 'loading' || store.isLoading) {\n return (\n \n

    Loading {store.isLoading && your account} please wait...

    \n
    \n );\n }\n\n if (authState === 'signed-in') {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n\n return (\n \n

    \n Please{' '}\n \n

    \n
    \n );\n});\n","import { useCallback, useEffect, useState } from 'react';\n\nimport { AuthenticationProviderState, IAuthenticationProvider } from 'auth/AuthenticationTypes';\n\nexport function useAuthentication(provider: IAuthenticationProvider): AuthenticationProviderState {\n const [state, setState] = useState(provider.initialState);\n const updateState = useCallback(async () => {\n return await provider.signIn();\n }, [provider]);\n\n useEffect(() => {\n updateState().then(setState);\n }, [updateState]);\n\n return state;\n}\n","import { errorLog } from 'index';\nimport { Instance, types } from 'mobx-state-tree';\nimport { api } from 'shared/api/interfaces';\n\nimport { flow, getEnv, LoadingStateModel } from './util';\n\nexport const TagModel = types.model('Tag', {\n tagId: types.identifierNumber,\n name: types.string,\n description: types.maybeNull(types.string),\n isSensitive: types.boolean,\n reviewRequired: types.boolean,\n});\n\nexport const TagsModel = types\n .model('TagsModel', {\n state: LoadingStateModel,\n tags: types.map(TagModel),\n })\n .views((self) => ({\n get all() {\n return Array.from(self.tags.values());\n },\n }))\n .actions((self) => ({\n afterAttach: flow(function* (): Generator, void, ITag[]> {\n if (self.state === 'done') return;\n\n const { ajax } = getEnv(self);\n try {\n const data = yield ajax\n .get('Tags', {})\n .json()\n .then((tags) => tags.map((tag) => TagModel.create(tag)));\n data.forEach((tag) => self.tags.put(tag));\n self.state = 'done';\n } catch (e) {\n errorLog('GET tags failed.', e);\n self.state = 'error';\n }\n }),\n }));\n\nexport interface ITag extends Instance {}\n\nexport interface ITags extends Instance {}\n","import { Instance, types } from 'mobx-state-tree';\n\nimport { TagModel } from './TagsModel';\nimport { utc } from 'moment';\nimport { api } from 'shared/api/interfaces';\n\nexport const NotePersonNameModel = types\n .model('NotePersonName', {\n idpId: types.string,\n givenName: types.string,\n familyName: types.string,\n })\n .views((self) => ({\n get displayName(): string {\n return `${self.givenName} ${self.familyName}`.trim();\n },\n }));\n\nexport type NoteStatus = 'draft' | 'pending' | 'published';\nexport type NoteSensitivity = 'sensitive' | 'non-sensitive' | 'none';\n\nexport const NoteModel = types\n .model('Note', {\n noteId: types.identifierNumber,\n employee: NotePersonNameModel,\n content: types.string,\n tags: types.array(TagModel),\n eventDate: types.maybeNull(types.string),\n createdDate: types.string,\n modifiedDate: types.maybeNull(types.string),\n author: NotePersonNameModel,\n modifier: NotePersonNameModel,\n subject: types.string,\n isPeopleLeaderConversation: types.boolean,\n status: types.optional(\n types.enumeration(['draft', 'pending', 'published']),\n 'draft'\n ),\n isFaceToFaceDiscussion: types.maybe(types.boolean),\n canDelete: types.boolean,\n canEdit: types.boolean,\n sensitivity: types.optional(\n types.enumeration(['sensitive', 'non-sensitive', 'none']),\n 'none'\n ),\n })\n .views((self) => ({\n get eventDateMoment() {\n return self.eventDate && self.eventDate.trim().length > 0 ? utc(self.eventDate) : null;\n },\n get createdDateMoment() {\n return utc(self.createdDate);\n },\n get modifiedDateMoment() {\n return self.modifiedDate && self.modifiedDate.trim().length > 0\n ? utc(self.modifiedDate)\n : null;\n },\n }));\n\nexport interface INoteRequest {\n employeeIdpId: string;\n content: string;\n tags: number[];\n eventDate: string;\n subject: string;\n isPeopleLeaderConversation: boolean;\n noteStatus: NoteStatus | undefined;\n sensitivity: NoteSensitivity | undefined;\n isFaceToFaceDiscussion: boolean | undefined;\n}\n\nexport interface INote extends Instance {}\n\nexport function createNote(note: api.NoteDto): INote {\n return NoteModel.create({\n noteId: note.noteId,\n employee: note.employee,\n status: note.status as 'draft' | 'pending' | 'published',\n content: note.content,\n tags: note.tags,\n eventDate: note.eventDate,\n createdDate: note.createdDate,\n modifiedDate: note.modifiedDate,\n author: note.author,\n modifier: note.modifier,\n subject: note.subject,\n isPeopleLeaderConversation: note.isPeopleLeaderConversation,\n canDelete: note.canDelete,\n canEdit: note.canEdit,\n sensitivity: note.sensitivity as 'non-sensitive' | 'sensitive' | 'none',\n isFaceToFaceDiscussion: note.isFaceToFaceDiscussion,\n });\n}\n\nexport interface IPaginatedNotes {\n notes: INote[];\n totalCount: number;\n}\n","import { Instance, types } from 'mobx-state-tree';\nimport { flow, getEnv } from 'domain/store/util';\nimport { IFlightRiskDto } from 'domain/store/dataTranferObjects/IFlightRiskDto';\nimport { api } from 'shared/api/interfaces';\n\nexport const FlightRiskStatusModifier = types.model('FlightRiskStatusModifier', {\n idpId: types.identifier,\n displayName: types.string,\n});\n\nexport interface IFlightRiskStatusModel extends Instance {}\n\nexport interface IFlightRiskWithMobx extends IFlightRiskDto {\n modifiedBy: Instance;\n}\n\nexport interface IFlightRiskStatusModelValue extends Instance {}\n\nexport const FlightRiskStatusModelValue = types.model('FlightRiskStatusModelValue', {\n isFlightRisk: types.boolean,\n modifiedBy: FlightRiskStatusModifier,\n modifiedDateTime: types.string,\n});\n\nexport const FlightRiskStatusModel = types\n .model('FlightRiskStatusModel', {\n value: types.maybeNull(FlightRiskStatusModelValue),\n })\n .actions((self) => {\n const toggleFlightRiskStatus = function* (\n employeeIdpId: string\n ): Generator, IFlightRiskWithMobx, IFlightRiskWithMobx> {\n const { ajax } = getEnv(self);\n\n const result = yield ajax\n .post('Employee/FlightRisk', {\n json: {\n employeeIdpId,\n flagValue: self.value ? !self.value.isFlightRisk : true,\n },\n })\n .json();\n\n self.value = FlightRiskStatusModelValue.create(result);\n return result;\n };\n\n return {\n toggleFlightRiskStatus: flow(toggleFlightRiskStatus),\n };\n });\n\nexport function createFlightRiskStatusModel(\n model: api.FlightRiskDtoValueDto\n): IFlightRiskStatusModel | null {\n if (!model) {\n return null;\n }\n\n return FlightRiskStatusModel.create(model);\n}\n","import { ILongTermLeaveDto } from 'domain/store/dataTranferObjects/ILongTermLeaveDto';\nimport { flow, getEnv } from 'domain/store/util';\nimport { Instance, types } from 'mobx-state-tree';\nimport { api } from 'shared/api/interfaces';\n\nexport const LongTermLeaveModifier = types.model('LongTermLeaveModifier', {\n idpId: types.identifier,\n displayName: types.string,\n});\n\nexport interface ILongTermLeaveModel extends Instance {}\n\nexport interface ILongTermLeaveWithMobx extends ILongTermLeaveDto {\n modifiedBy: Instance;\n}\n\nexport interface ILongTermLeaveModelValue extends Instance {}\n\nexport const LongTermLeaveModelValue = types.model('LongTermLeaveModelValue', {\n isOnLongTermLeave: types.boolean,\n modifiedBy: LongTermLeaveModifier,\n modifiedDateTime: types.string,\n expectedReturn: types.maybeNull(types.string),\n});\n\nexport const LongTermLeaveModel = types\n .model('LongTermLeaveModel', {\n value: types.maybeNull(LongTermLeaveModelValue),\n })\n .actions((self) => {\n const toggleLongTermLeaveStatus = function* (\n employeeIdpId: string,\n expectedReturn: string | null\n ): Generator, ILongTermLeaveWithMobx, ILongTermLeaveWithMobx> {\n const { ajax } = getEnv(self);\n\n const result = yield ajax\n .post('Employee/LongTermLeave', {\n json: {\n employeeIdpId,\n flagValue: !self.value || expectedReturn !== null,\n expectedReturn: expectedReturn,\n },\n })\n .json();\n\n self.value = LongTermLeaveModelValue.create(result);\n return result;\n };\n\n return {\n toggleLongTermLeaveStatus: flow(toggleLongTermLeaveStatus),\n };\n });\n\nexport interface ILongTermLeave extends Instance {}\n\nexport function createLongTermLeaveModel(ltl: api.LongTermLeaveDtoValueDto): ILongTermLeave | null {\n if (!ltl) {\n return null;\n }\n\n return LongTermLeaveModel.create(ltl);\n}\n","import { Instance, types } from 'mobx-state-tree';\nimport { flow, getEnv } from 'domain/store/util';\nimport { api } from 'shared/api/interfaces';\n\nexport const PrimaryFlagModifier = types.model('PrimaryFlagModifier', {\n idpId: types.identifier,\n displayName: types.string,\n});\n\nexport const PrimaryFlagModelValue = types.model('PrimaryFlagModelValue', {\n flagId: types.number,\n name: types.string,\n modifiedBy: PrimaryFlagModifier,\n modifiedDateTime: types.string,\n});\n\nexport const PrimaryFlagModel = types\n .model('PrimaryFlagModel', {\n value: types.maybeNull(PrimaryFlagModelValue),\n })\n .actions((self) => {\n const updatePrimaryFlag = function* (\n primaryFlagData: IUpdatePrimaryFlagRequest\n ): Generator, api.FlagDto, api.FlagDto> {\n const { ajax } = getEnv(self);\n return yield ajax.post('employee/primaryflag', { json: primaryFlagData }).json();\n };\n\n return {\n update: flow(updatePrimaryFlag),\n };\n });\n\nexport interface IPrimaryFlagModel extends Instance {}\n\nexport function createPrimaryFlagModel(pfm: api.FlagDtoValueDto): IPrimaryFlagModel | null {\n if (!pfm) {\n return null;\n }\n\n return PrimaryFlagModel.create(pfm);\n}\n\nexport interface IUpdatePrimaryFlagRequest {\n employeeIdpId: string;\n flagId: number;\n}\n","import { flow, getEnv } from 'domain/store/util';\nimport { Instance, types } from 'mobx-state-tree';\nimport { IRoleChangePathwayDto } from 'domain/store/dataTranferObjects/IRoleChangePathwayDto';\nimport { api } from 'shared/api/interfaces';\n\nexport const RoleChangePathwayModifier = types.model('RoleChangePathwayModifier', {\n idpId: types.identifier,\n displayName: types.string,\n});\n\nexport interface IRoleChangePathwayModel extends Instance {}\n\nexport interface IRoleChangePathwayWithMobx extends IRoleChangePathwayDto {\n modifiedBy: Instance;\n}\n\nexport interface IRoleChangePathwayModelValue\n extends Instance {}\n\nexport const RoleChangePathwayModelValue = types.model('RoleChangePathwayModelValue', {\n hasRoleChangePathway: types.boolean,\n modifiedBy: RoleChangePathwayModifier,\n modifiedDateTime: types.string,\n timeframe: types.number,\n});\n\nexport const RoleChangePathwayModel = types\n .model('RoleChangePathwayModel', {\n value: types.maybeNull(RoleChangePathwayModelValue),\n })\n .actions((self) => {\n const toggleRoleChangePathwayStatus = function* (\n employeeIdpId: string,\n timeframe: number\n ): Generator<\n Promise,\n IRoleChangePathwayWithMobx,\n IRoleChangePathwayWithMobx\n > {\n const { ajax } = getEnv(self);\n\n const result = yield ajax\n .post('Employee/rolechangepathway', {\n json: {\n employeeIdpId,\n flagValue: !self.value || timeframe !== 0 ? true : false,\n timeframe: timeframe,\n },\n })\n .json();\n\n self.value = RoleChangePathwayModelValue.create(result);\n return result;\n };\n\n return {\n toggleRoleChangePathwayStatus: flow(toggleRoleChangePathwayStatus),\n };\n });\n\nexport interface IRoleChangePathway extends Instance {}\n\nexport function createRoleChangePathwayModel(\n rpp: api.RoleChangePathwayDtoValueDto\n): IRoleChangePathway | null {\n if (!rpp) {\n return null;\n }\n\n return RoleChangePathwayModel.create(rpp);\n}\n","import { humanizer, Unit } from 'humanize-duration';\nimport { Instance, types } from 'mobx-state-tree';\nimport moment, { duration } from 'moment';\nimport { EmployeeStatusModel } from './EmployeeStatusModel';\nimport { api } from 'shared/api/interfaces';\nimport { createFlightRiskStatusModel, FlightRiskStatusModel } from './FlightRiskModel';\nimport { createLongTermLeaveModel, LongTermLeaveModel } from './LongTermLeaveModel';\nimport { createPrimaryFlagModel, PrimaryFlagModel } from './PrimaryFlagModel';\nimport { createRoleChangePathwayModel, RoleChangePathwayModel } from './RoleChangePathwayModel';\n\nexport const WORK_DAY_IN_HOURS = 8;\n\nexport const EmployeeFlagsModel = types.model('EmployeeFlagsModel', {\n primaryFlag: types.maybeNull(PrimaryFlagModel),\n flightRisk: types.maybeNull(FlightRiskStatusModel),\n roleChangePathway: types.maybeNull(RoleChangePathwayModel),\n longTermLeave: types.maybeNull(LongTermLeaveModel),\n status: types.maybeNull(EmployeeStatusModel),\n});\n\nexport function createEmployeeFlags(\n empFlags: api.EmployeeFlagsDto\n): Instance {\n return EmployeeFlagsModel.create({\n flightRisk: createFlightRiskStatusModel(empFlags.flightRisk),\n longTermLeave: createLongTermLeaveModel(empFlags.longTermLeave),\n primaryFlag: createPrimaryFlagModel(empFlags.primaryFlag),\n roleChangePathway: createRoleChangePathwayModel(empFlags.roleChangePathway),\n status: empFlags.status ? EmployeeStatusModel.create(empFlags.status) : null,\n });\n}\n\nexport const EmployeeLeaveModel = types.model('EmployeeLeaveModel', {\n annualLeaveInHours: types.number,\n personalLeaveInHours: types.number,\n pdTakenInHours: types.number,\n});\n\nexport const EmployeeModel = types\n .model('EmployeeModel', {\n idpId: types.optional(types.string, ''),\n telstraEmployeeNumber: types.optional(types.string, ''),\n givenName: types.optional(types.string, ''),\n familyName: types.optional(types.string, ''),\n displayName: types.optional(types.string, ''),\n squadName: types.optional(types.string, ''),\n position: types.optional(types.string, ''),\n capability: types.optional(types.string, ''),\n tenure: types.maybeNull(types.string),\n leaveDetails: types.maybeNull(EmployeeLeaveModel),\n isFormerEmployee: types.optional(types.boolean, false),\n probationEndDate: types.maybeNull(types.string),\n lastRetroDate: types.maybeNull(types.string),\n flags: EmployeeFlagsModel,\n emailAddress: types.maybeNull(types.string),\n showMinimalDetails: types.optional(types.boolean, false),\n isInCareerFramework: types.optional(types.boolean, false),\n })\n .views((self) => ({\n get annualLeaveDays(): string {\n return Math.round(self.leaveDetails!.annualLeaveInHours / WORK_DAY_IN_HOURS).toString();\n },\n get personalLeaveDays(): string {\n return Math.round(self.leaveDetails!.personalLeaveInHours! / WORK_DAY_IN_HOURS).toString();\n },\n get pdTakenDays(): string {\n return Math.round(self.leaveDetails!.pdTakenInHours! / WORK_DAY_IN_HOURS).toString();\n },\n get annualLeaveHours(): string {\n return self.leaveDetails!.annualLeaveInHours!.toFixed(2);\n },\n get personalLeaveHours(): string {\n return self.leaveDetails!.personalLeaveInHours!.toFixed(2);\n },\n get pdTakenHours(): string {\n return self.leaveDetails!.pdTakenInHours!.toFixed(2);\n },\n get tenureFormatted(): string {\n if (self.tenure === null) return 'Unknown';\n\n const difference = duration(\n moment().diff(moment(self.tenure), 'milliseconds', true),\n 'milliseconds'\n );\n const units: Unit[] = ['y', 'mo'];\n if (difference.asDays() < 30) {\n units.push('d');\n }\n const yearMonthHumaniser = humanizer({\n language: 'en',\n round: true,\n units,\n });\n return yearMonthHumaniser(difference.asMilliseconds());\n },\n get probation(): Probation {\n const probationEndDate = moment(self.probationEndDate);\n return {\n isInProbation: moment().diff(probationEndDate, 'day') <= 0,\n endDate: probationEndDate.format('DD/MM/YYYY'),\n };\n },\n get lastRetroFormatted(): string {\n if (self.lastRetroDate === null) return 'Unknown';\n const lastRetroDate = moment(self.lastRetroDate);\n return lastRetroDate.format('DD/MM/YYYY');\n },\n }));\n\nexport interface IEmployee extends Instance {}\n\nexport function createEmployee(employee: api.EmployeeDetailsDto): IEmployee {\n return EmployeeModel.create({\n ...employee,\n flags: createEmployeeFlags(employee.flags),\n probationEndDate: employee.probationEndDate,\n tenure: employee.tenure,\n });\n}\n\nexport interface Probation {\n isInProbation: boolean;\n endDate: string;\n}\n","import { flow, getEnv } from 'domain/store/util';\nimport { Instance, types } from 'mobx-state-tree';\nimport { createNote, INote, NoteModel } from 'domain/store/NoteModel';\nimport { createEmployee, EmployeeModel, IEmployee } from './EmployeeModel';\nimport { api } from 'shared/api/interfaces';\nimport { errorLog } from 'index';\n\nconst EmployeeJourneyNotesModel = types.array(NoteModel);\n\nexport const EmployeeJourneyModel = types\n .model('EmployeeJourneyModel', {\n employee: types.maybeNull(EmployeeModel),\n notes: types.maybeNull(EmployeeJourneyNotesModel),\n state: types.optional(\n types.enumeration<'pending' | 'loading' | 'done' | 'error' | 'unauthorised'>(\n 'EmployeeJourneyState',\n ['pending', 'loading', 'done', 'error', 'unauthorised']\n ),\n 'pending'\n ),\n positions: types.array(types.string),\n })\n .actions((self) => {\n const loadNotes = function* (): Generator, void, INote[]> {\n const { ajax } = getEnv(self);\n const employeeIdpId = self.employee?.idpId;\n if (employeeIdpId) {\n const response = yield ajax\n .get('Notes', { searchParams: { EmployeeIdpId: employeeIdpId } })\n .json()\n .then((notes) => notes.map((note) => createNote(note)));\n self.notes = EmployeeJourneyNotesModel.create(response);\n }\n };\n\n return {\n loadNotes: flow(loadNotes),\n };\n })\n .actions((self) => {\n const shouldUpdate = (employeeIdpId: string): boolean => {\n return self.employee?.idpId !== employeeIdpId;\n };\n\n const unloadJourney = function (): void {\n self.state = 'pending';\n self.notes = null;\n self.employee = null;\n };\n\n const loadJourney = function* (\n employeeIdpId: string\n ): Generator, void, IEmployee> {\n if (self.state === 'done' && shouldUpdate(employeeIdpId)) {\n unloadJourney();\n }\n\n if (self.state !== 'pending') return;\n\n self.state = 'loading';\n try {\n const { ajax } = getEnv(self);\n\n self.employee = yield ajax\n .get('Employee', { searchParams: { employeeIdpId } })\n .json()\n .then((r) => createEmployee(r));\n\n yield self.loadNotes();\n\n self.state = 'done';\n } catch (e) {\n self.state = 'error';\n errorLog('Failed to get employee.', e);\n if (e.response && e.response.status === 403) {\n self.state = 'unauthorised';\n }\n }\n };\n\n return {\n unloadJourney,\n loadJourney: flow(loadJourney),\n };\n })\n .actions((self) => ({\n afterAttach: flow(function* (): Generator<\n Promise,\n void,\n api.ChartMetaDataDto\n > {\n const { ajax } = getEnv(self);\n try {\n const result = yield ajax.get('RoleChanges/positions', {}).json();\n self.positions.push(...result.roleDistributionOrderedSet);\n } catch (e) {\n errorLog('Failed to get positions metadata.', e);\n }\n }),\n }))\n .views((self) => ({\n get isLoaded() {\n return self.state === 'done';\n },\n }));\n\nexport interface IEmployeeJourney extends Instance {}\n","import { errorLog } from 'index';\nimport { Instance, types } from 'mobx-state-tree';\nimport { api } from 'shared/api/interfaces';\n\nimport { flow, getEnv, LoadingStateModel } from './util';\n\nexport const FlagModel = types.model('Flag', {\n flagId: types.identifierNumber,\n name: types.string,\n description: types.maybeNull(types.string),\n});\n\nexport const FlagsModel = types\n .model('FlagsModel', {\n state: LoadingStateModel,\n flags: types.map(FlagModel),\n })\n .views((self) => ({\n get all() {\n return Array.from(self.flags.values());\n },\n getFlag(flagId?: number): IFlag | undefined {\n if (flagId) {\n return Array.from(self.flags.values()).find((flag) => {\n return flag.flagId === flagId;\n });\n }\n return undefined;\n },\n }))\n .actions((self) => ({\n afterAttach: flow(function* (): Generator, void, IFlag[]> {\n if (self.state === 'done') return;\n\n const { ajax } = getEnv(self);\n try {\n const data = yield ajax\n .get('Flags', {})\n .json()\n .then((flags) => flags.map((flag) => FlagModel.create(flag)));\n data.forEach((flag) => self.flags.put(flag));\n self.state = 'done';\n } catch (e) {\n errorLog('GET flags failed.', e);\n self.state = 'error';\n }\n }),\n }));\n\nexport interface IFlag extends Instance {}\n\nexport interface IFlags extends Instance {}\n","import { detach, Instance, types } from 'mobx-state-tree';\n\nimport { flow, getEnv, LoadingStateModel } from 'domain/store/util';\nimport { AuthenticationProvider, Client, ResponseType } from '@microsoft/microsoft-graph-client';\nimport { AuthenticationProviderOptions } from '@microsoft/microsoft-graph-client/src/IAuthenticationProviderOptions';\nimport {\n createEmployee,\n EmployeeModel,\n IEmployee,\n} from 'domain/store/employeeJourney/EmployeeModel';\nimport { api } from 'shared/api/interfaces';\nimport { errorLog } from 'index';\n\nexport interface EmployeeSearchResult {\n idpId: string;\n displayName: string;\n isFormerEmployee?: boolean;\n}\n\nconst LoadEmployeeModel = types\n .model('LoadEmployeeModel', {\n employee: types.maybeNull(EmployeeModel),\n state: LoadingStateModel,\n })\n .actions((self) => ({\n reset: function () {\n self.employee = null;\n self.state = 'loading';\n },\n searchForEmployee: flow(function* (\n employeeIdpId?: string\n ): Generator, IEmployee | null, IEmployee> {\n const { ajax } = getEnv(self);\n\n if (self.state === 'done' && self.employee?.idpId === employeeIdpId) {\n return self.employee;\n }\n\n self.state = 'loading';\n if (self.employee) {\n detach(self.employee);\n }\n self.employee = null;\n\n if (employeeIdpId) {\n try {\n const result = yield ajax\n .get('Employee', { searchParams: { employeeIdpId } })\n .json()\n .then((r) => createEmployee(r));\n\n self.employee = result;\n self.state = 'done';\n return result;\n } catch (e) {\n if (e.response && e.response.status === 403) {\n self.state = 'unauthorized';\n } else {\n errorLog('Failed to get employee.', e);\n self.state = 'error';\n }\n }\n } else {\n self.employee = null;\n }\n return null;\n }),\n }));\n\nconst PhotoModel = types.model({\n id: types.identifier,\n uri: types.maybeNull(types.string),\n});\n\nexport const GraphModel = types\n .model('GraphModel', {\n loadEmployee: types.optional(LoadEmployeeModel, {}),\n photos: types.map(PhotoModel),\n })\n .actions((self) => {\n function* searchForEmployees(\n query: string,\n includeFormerEmployees = false\n ): Generator> {\n const { ajax } = getEnv(self);\n\n return yield ajax\n .get(`Employee/${'search'}`, {\n searchParams: { query, includeFormerEmployees },\n })\n .json();\n }\n\n function* searchForEmployeePhoto(idpId: string): Generator> {\n const { auth } = getEnv(self);\n const graph = Client.initWithMiddleware({\n authProvider: new (class implements AuthenticationProvider {\n async getAccessToken(options?: AuthenticationProviderOptions): Promise {\n return await auth.getGraphAccessToken(options?.scopes);\n }\n })(),\n debugLogging: false,\n });\n\n if (self.photos.get(idpId)) return self.photos.get(idpId)!.uri;\n\n try {\n const img = yield graph\n .api(`/users/${idpId}/photos/120x120/$value`)\n .version('beta')\n .responseType(ResponseType.BLOB)\n .get();\n\n const blobUrl = (window.URL || window.webkitURL).createObjectURL(img);\n self.photos.put({ id: idpId, uri: blobUrl });\n return blobUrl;\n } catch {\n self.photos.put({ id: idpId, uri: null });\n return null;\n }\n }\n\n return {\n searchForEmployees: flow(searchForEmployees),\n searchForEmployeePhoto: flow(searchForEmployeePhoto),\n };\n });\n\nexport interface IGraphModel extends Instance {}\n","import { Color } from '@material-ui/lab/Alert';\nimport { Instance, types } from 'mobx-state-tree';\n\nexport interface INotification extends Instance {}\n\nconst Notification = types.model('Notification', {\n message: types.string,\n severity: types.enumeration(['info', 'success', 'error', 'warning']),\n});\n\nexport const NotificationModel = types\n .model('NotificationsModel', {\n notificationsToShow: types.array(Notification),\n })\n .actions((self) => {\n function addNotification(message: string, severity: INotification['severity']) {\n self.notificationsToShow.push({ message, severity });\n }\n\n const addSuccess = (msg: string) => addNotification(msg, 'success');\n\n const addError = (msg: string) => addNotification(msg, 'error');\n\n function closeNotification(notification: INotification) {\n self.notificationsToShow.remove(notification);\n }\n\n return { addSuccess, addError, closeNotification };\n });\n","import { types } from 'mobx-state-tree';\n\nimport { flow, getEnv } from 'domain/store/util';\n\nexport const SecurityModel = types.model('SecurityModel', {}).actions((self) => {\n const { auth } = getEnv(self);\n const getSignedInName = () => {\n const account = auth.account;\n return account && account.name;\n };\n const getAccountId = () => {\n const account = auth.account;\n return account && account.accountIdentifier;\n };\n const signIn = function* (): Generator, string, string> {\n return yield auth.signIn();\n };\n const getApiAccessToken = function* (): Generator, string, string> {\n return yield auth.getApiAccessToken();\n };\n return {\n signIn: flow(signIn),\n signOut: () => auth.signOut(),\n getIsSignedIn: () => auth.getIsSignedIn(),\n getApiAccessToken: flow(getApiAccessToken),\n getSignedInName,\n getAccountId,\n };\n});\n","import { types } from 'mobx-state-tree';\n\nexport const CountModel = types.model('CountModel', {\n name: types.string,\n count: types.number,\n});\n\nexport const CountByMonthModel = types.model('CountByMonthModel', {\n year: types.number,\n month: types.string,\n counts: types.array(CountModel),\n});\n\nexport const MonthlyTrendModel = types.model('MonthlyTrendModel', {\n labels: types.array(types.string),\n data: types.array(CountByMonthModel),\n});\n","import { Instance, types } from 'mobx-state-tree';\nimport { flow, getEnv, LoadingStateModel } from 'domain/store/util';\nimport { makeTrendsUrl } from './TrendsModel';\nimport { MonthlyTrendModel } from './MonthlyTrendModel';\nimport { api } from 'shared/api/interfaces';\nimport { errorLog } from 'index';\n\ninterface ITalentCodeTrendsByMonth extends Instance {}\n\nexport const TalentCodeTrendsByMonthModel = types\n .model('TalentCodeTrendsByMonth', {\n value: types.optional(MonthlyTrendModel, {}),\n state: LoadingStateModel,\n })\n .actions((self) => ({\n loadTalentCodeTrendsByMonth: flow(function* (\n selectedSquad: string | null\n ): Generator<\n Promise,\n ITalentCodeTrendsByMonth,\n ITalentCodeTrendsByMonth\n > {\n if (selectedSquad) {\n const { ajax } = getEnv(self);\n\n self.state = 'loading';\n try {\n self.value = yield ajax\n .get(makeTrendsUrl('TalentCodesByMonth'), {\n searchParams: { squadName: selectedSquad },\n })\n .json()\n .then((x) => MonthlyTrendModel.create(x));\n self.state = 'done';\n } catch (e) {\n errorLog('Failed to load talent codes by month data', e);\n self.state = 'error';\n }\n }\n return self.value;\n }),\n }));\n","import { Instance, types } from 'mobx-state-tree';\nimport { api } from 'shared/api/interfaces';\nimport { flow, getEnv, LoadingStateModel } from '../util';\nimport { MonthlyTrendModel } from './MonthlyTrendModel';\nimport { makeTrendsUrl } from './TrendsModel';\nimport moment from 'moment';\nimport { errorLog } from 'index';\n\ninterface ISupportingOpportunityByMonth extends Instance {}\n\nexport const SupportingOpportunitiesByMonthModel = types\n .model('SupportingOpportunitiesByMonth', {\n value: types.optional(MonthlyTrendModel, {}),\n state: LoadingStateModel,\n })\n .actions((self) => ({\n loadSupportingOpportunitiesByMonth: flow(function* (\n selectedSquad: string | null,\n year?: number\n ): Generator<\n Promise,\n ISupportingOpportunityByMonth,\n ISupportingOpportunityByMonth\n > {\n if (selectedSquad) {\n const { ajax } = getEnv(self);\n\n const endDate = moment();\n if (year) endDate.set({ year: year });\n\n self.state = 'loading';\n try {\n self.value = yield ajax\n .get(makeTrendsUrl('SupportingOpportunitiesByMonth'), {\n searchParams: { squadName: selectedSquad, endDate: endDate.toDate().toDateString() },\n })\n .json()\n .then((trend) => MonthlyTrendModel.create(trend));\n self.state = 'done';\n } catch (e) {\n errorLog('Failed to load supporting opportunities by month data', e);\n self.state = 'error';\n }\n }\n return self.value;\n }),\n }));\n","import { errorLog } from 'index';\nimport { Instance, types } from 'mobx-state-tree';\nimport { api } from 'shared/api/interfaces';\nimport { flow, getEnv, LoadingStateModel } from '../util';\nimport { makeTrendsUrl } from './TrendsModel';\n\nconst TrendsEmployeesItemModel = types.model('TrendsEmployeeItem', {\n employeeIdpId: types.string,\n displayName: types.string,\n jobTitle: types.string,\n talentCode: types.maybeNull(types.string),\n isFlightRisk: types.boolean,\n isRoleChangePathway: types.boolean,\n isOnProbation: types.boolean,\n isOnLongTermLeave: types.boolean,\n roleChangeTimeFrame: types.maybeNull(types.number),\n});\n\nexport interface ITrendsEmployeesItem extends Instance {}\n\nexport type IRoleCount = { role: string; count: number };\n\nexport const TrendsEmployeesModel = types\n .model('TrendsEmployees', {\n value: types.optional(types.array(TrendsEmployeesItemModel), []),\n state: LoadingStateModel,\n })\n .actions((self) => ({\n loadEmployees: flow(function* (\n selectedSquad: string | null\n ): Generator, void, ITrendsEmployeesItem[]> {\n if (selectedSquad) {\n const { ajax } = getEnv(self);\n\n self.state = 'loading';\n try {\n self.value.clear();\n const value = yield ajax\n .get(makeTrendsUrl('Employees'), {\n searchParams: { squadName: selectedSquad },\n })\n .json()\n .then((values) => values.map((item) => TrendsEmployeesItemModel.create(item)));\n value.forEach((i) => self.value.push(i));\n self.state = 'done';\n } catch (e) {\n errorLog('Failed to load trend employees', e);\n self.state = 'error';\n }\n }\n }),\n }))\n .views((self) => ({\n sortByName(employees: ITrendsEmployeesItem[]) {\n return employees.sort((a, b) => (a.displayName > b.displayName ? 1 : -1));\n },\n get flightRiskEmployees() {\n return this.sortByName(self.value.filter((e) => e.isFlightRisk));\n },\n get employeesOnLongTermLeave() {\n return this.sortByName(self.value.filter((e) => e.isOnLongTermLeave));\n },\n get employeesOnRoleChangePathways() {\n return this.sortByName(self.value.filter((e) => e.isRoleChangePathway));\n },\n get employeesOnProbation() {\n return this.sortByName(self.value.filter((e) => e.isOnProbation));\n },\n employeesWithMatchingJobTitle(jobTitle: string) {\n return this.sortByName(self.value.filter((e) => e.jobTitle === jobTitle));\n },\n employeesWithMatchingTalentCode(talentCode: string) {\n return this.sortByName(self.value.filter((e) => e.talentCode === talentCode));\n },\n get talentCodeCounts() {\n const counts = self.value.reduce>((result, item) => {\n if (item.talentCode) result[item.talentCode] = (result[item.talentCode] || 0) + 1;\n return result;\n }, {});\n\n return Object.keys(counts).map((key) => {\n return { talentCode: key, count: counts[key] };\n });\n },\n get roleCounts(): IRoleCount[] {\n const counts = self.value.reduce>((result, item) => {\n if (item.jobTitle) result[item.jobTitle] = (result[item.jobTitle] || 0) + 1;\n return result;\n }, {});\n\n return Object.keys(counts).map((key) => {\n return { role: key, count: counts[key] };\n });\n },\n }));\n","import { errorLog } from 'index';\nimport { Instance, types } from 'mobx-state-tree';\nimport { api } from 'shared/api/interfaces';\nimport { flow, getEnv, LoadingStateModel } from '../util';\nimport { makeTrendsUrl } from './TrendsModel';\n\nexport type TimeRange = 'last_fy_quarter' | 'current_fy_quarter' | 'last_fy' | 'current_fy';\n\nconst PersonModel = types.model('Person', {\n idpId: types.string,\n givenName: types.string,\n familyName: types.string,\n displayName: types.string,\n roleType: types.maybeNull(types.string),\n squadName: types.maybeNull(types.string),\n});\n\nexport interface ISupportingOpportunityEmployee extends Instance {}\n\nconst SupportingOpportunitiesWithEmployeesItemModel = types.model(\n 'SupportingOpportunitiesWithEmployees',\n {\n tag: types.string,\n people: types.optional(types.array(PersonModel), []),\n }\n);\n\ninterface ISupportingOpportunitiesWithEmployeesItem\n extends Instance {}\n\nexport const SupportingOpportunitiesWithEmployeesModel = types\n .model('SupportingOpportunitiesWithEmployees', {\n value: types.optional(types.array(SupportingOpportunitiesWithEmployeesItemModel), []),\n state: LoadingStateModel,\n selectedTimeRange: types.optional(\n types.enumeration([\n 'last_fy_quarter',\n 'current_fy_quarter',\n 'last_fy',\n 'current_fy',\n ]),\n 'current_fy_quarter'\n ),\n })\n .actions((self) => ({\n loadSupportingOpportunitiesWithEmployees: flow(function* (\n selectedSquad: string | null\n ): Generator<\n Promise,\n void,\n ISupportingOpportunitiesWithEmployeesItem[]\n > {\n if (selectedSquad) {\n const { ajax } = getEnv(self);\n\n self.state = 'loading';\n try {\n self.value.clear();\n const value = yield ajax\n .get(makeTrendsUrl('SupportingOpportunitiesWithEmployees'), {\n searchParams: { squadName: selectedSquad, timeRange: self.selectedTimeRange },\n })\n .json()\n .then((values) =>\n values.map((item) => SupportingOpportunitiesWithEmployeesItemModel.create(item))\n );\n value.forEach((i) => self.value.push(i));\n self.state = 'done';\n } catch (e) {\n errorLog('Failed to load supporting opportunities with employees', e);\n self.state = 'error';\n }\n }\n }),\n selectTimeRange(timeRage: TimeRange) {\n self.selectedTimeRange = timeRage;\n },\n }))\n .views((self) => ({\n sortByName(employees: ISupportingOpportunityEmployee[]) {\n return employees.slice().sort((a, b) => (a.displayName > b.displayName ? 1 : -1));\n },\n employeesWithMatchingTag(tag: string) {\n return this.sortByName(self.value.find((e) => e.tag === tag)?.people || []);\n },\n }));\n","import { Instance, types } from 'mobx-state-tree';\nimport { flow, getEnv, getRoot, LoadingStateModel } from 'domain/store/util';\nimport { TalentCodeTrendsByMonthModel } from './TalentCodeTrendsByMonthModel';\nimport { SupportingOpportunitiesByMonthModel } from './SupportingOpportunitiesByMonthModel';\nimport { TrendsEmployeesModel } from './TrendsEmployeesModel';\nimport { SupportingOpportunitiesWithEmployeesModel } from './SupportingOpportunitiesWithEmployeesModel';\nimport { api } from 'shared/api/interfaces';\nimport { errorLog } from 'index';\n\nexport function makeTrendsUrl(name: string): string {\n return `Trends/${name}`;\n}\n\nexport const TrendsModel = types\n .model('Trends', {\n squadsStatus: LoadingStateModel,\n selectedSquad: types.optional(types.string, ''),\n talentCodeTrendsByMonth: types.optional(TalentCodeTrendsByMonthModel, {}),\n supportingOpportunitiesByMonth: types.optional(SupportingOpportunitiesByMonthModel, {}),\n trendsEmployees: types.optional(TrendsEmployeesModel, {}),\n supportingOpportunitiesWithEmployees: types.optional(\n SupportingOpportunitiesWithEmployeesModel,\n {}\n ),\n roleDistributionOrder: types.array(types.string),\n })\n .actions((self) => ({\n afterAttach: flow(function* (): Generator<\n Promise,\n void,\n api.ChartMetaDataDto\n > {\n const { user } = getRoot(self);\n self.selectedSquad = user.squadName ?? '';\n\n const { ajax } = getEnv(self);\n try {\n const result = yield ajax.get(makeTrendsUrl('Meta'), {}).json();\n self.roleDistributionOrder.push(...result.roleDistributionOrderedSet);\n } catch (e) {\n errorLog('Failed to get chart metadata.', e);\n }\n }),\n }));\n\nexport interface ITrends extends Instance {}\n","import { types } from 'mobx-state-tree';\n\nexport enum PermissionLevel {\n None,\n View,\n Edit,\n}\n\nconst SquadsPermissionModel = types.model('Squads', {\n canViewTrends: types.optional(types.boolean, false),\n canViewFeed: types.optional(types.boolean, false),\n canViewNoteReview: types.optional(types.boolean, false),\n canViewTalentAnalysis: types.optional(types.boolean, false),\n roleChanges: types.optional(types.number, PermissionLevel.None),\n});\n\nconst EmployeePermissionModel = types.model('Employees', {\n primaryFlag: types.optional(types.number, PermissionLevel.None),\n flightRisk: types.optional(types.number, PermissionLevel.None),\n roleChangePathway: types.optional(types.number, PermissionLevel.None),\n longTermLeave: types.optional(types.number, PermissionLevel.None),\n status: types.optional(types.number, PermissionLevel.None),\n roleChanges: types.optional(types.number, PermissionLevel.None),\n canViewLeaveBalances: types.optional(types.boolean, false),\n canViewPurpleMeLink: types.optional(types.boolean, false),\n canViewPurpleMeRetroDate: types.optional(types.boolean, false),\n canSearchForFormerEmployees: types.optional(types.boolean, false),\n canViewNoneSquadEmployees: types.optional(types.boolean, false),\n});\n\nconst NotesPermissionModel = types.model('Notes', {\n canViewPreviousSquadNotes: types.optional(types.boolean, false),\n canViewSensitive: types.optional(types.boolean, false),\n canBypassReview: types.optional(types.boolean, false),\n canDeleteSubmitted: types.optional(types.boolean, false),\n});\n\nconst CatchUpsPermissionModel = types.model('CatchUps', {\n canViewMyCatchUps: types.optional(types.boolean, false),\n canViewSquadCatchUps: types.optional(types.boolean, false),\n});\n\nexport const PermissionsModel = types\n .model('Permissions', {\n canViewAllSquads: types.optional(types.boolean, false),\n\n canViewSquadTab: types.optional(types.boolean, false),\n canViewEmployeeTab: types.optional(types.boolean, false),\n canViewNoteTab: types.optional(types.boolean, false),\n canViewCatchupGroupTab: types.optional(types.boolean, false),\n\n canManageRoles: types.optional(types.boolean, false),\n canAssignSquads: types.optional(types.boolean, false),\n\n squads: types.optional(SquadsPermissionModel, {}),\n employees: types.optional(EmployeePermissionModel, {}),\n notes: types.optional(NotesPermissionModel, {}),\n catchUps: types.optional(CatchUpsPermissionModel, {}),\n })\n .views(() => {\n return {\n canView(permission: PermissionLevel): boolean {\n return permission === PermissionLevel.View || permission === PermissionLevel.Edit;\n },\n canEdit(permission: PermissionLevel): boolean {\n return permission === PermissionLevel.Edit;\n },\n };\n });\n","import { types } from 'mobx-state-tree';\nimport { flow, getEnv, LoadingStateModel } from 'domain/store/util';\nimport {\n createNote,\n INote,\n IPaginatedNotes,\n NoteModel,\n NoteSensitivity,\n} from 'domain/store/NoteModel';\nimport { api } from 'shared/api/interfaces';\n\nexport type ReviewState = 'in-progress' | 'reviewed' | 'unknown';\n\nexport const NotesModelMap = types.map(NoteModel);\n\nexport const ReviewModel = types\n .model('ForReview', {\n status: LoadingStateModel,\n reviewState: types.optional(\n types.enumeration(['in-progress', 'reviewed', 'unknown']),\n 'unknown'\n ),\n numberOfPendingNotes: types.integer,\n })\n .actions((self) => ({\n getNote: flow(function* (noteId: number): Generator, INote | null, INote> {\n try {\n const { ajax } = getEnv(self);\n self.status = 'loading';\n\n const note = yield ajax\n .get('Notes/noteId', { searchParams: { noteId } })\n .json()\n .then((n) => createNote(n));\n\n self.reviewState = note.status === 'pending' ? 'in-progress' : 'reviewed';\n return note;\n } catch (e) {\n if (e.response && e.response.status === 403) {\n self.status = 'unauthorized';\n } else {\n self.status = 'error';\n }\n } finally {\n self.status = 'done';\n }\n\n return null;\n }),\n\n getNotes: flow(function* (\n selectedSquad: string,\n page: number,\n size: number\n ): Generator, IPaginatedNotes, IPaginatedNotes> {\n const { ajax } = getEnv(self);\n self.status = 'loading';\n\n let notes: IPaginatedNotes = {\n notes: [],\n totalCount: 0,\n };\n\n try {\n if (self.reviewState === 'reviewed') {\n notes = yield ajax\n .get('Notes/reviewed/me', { searchParams: { page, size } })\n .json()\n .then((result) => {\n return {\n notes: result.notes.map((note) => createNote(note)),\n totalCount: result.totalCount,\n };\n });\n } else {\n self.reviewState = 'in-progress';\n notes = yield ajax\n .get('Notes/to-review', {\n searchParams: { squadName: selectedSquad, page, size },\n })\n .json()\n .then((result) => {\n return {\n notes: result.notes.map((note) => createNote(note)),\n totalCount: result.totalCount,\n };\n });\n }\n\n self.status = 'done';\n } catch (e) {\n if (e.response && e.response.status === 403) {\n self.status = 'unauthorized';\n } else {\n self.status = 'error';\n }\n }\n\n return notes;\n }),\n getNumberPendingNotes: flow(function* (\n selectedSquad: string\n ): Generator, void, number> {\n const { ajax } = getEnv(self);\n const numberOfNotes = yield ajax\n .get('Notes/to-review/count', { searchParams: { squadName: selectedSquad } })\n .json();\n\n self.numberOfPendingNotes = numberOfNotes;\n }),\n updateNoteSensitivity: flow(function* (sensitivity: NoteSensitivity, noteId: number) {\n const { ajax } = getEnv(self);\n yield ajax('Notes/updatenotesensitivity', {\n json: { sensitivity, noteId } as api.UpdateNoteSensitivityRequest,\n method: 'post',\n }).json();\n\n self.numberOfPendingNotes -= 1;\n }),\n updateReviewState: function (state: ReviewState): void {\n self.reviewState = state;\n },\n }));\n","import { ResponsePromise } from 'ky';\nimport { Instance, types } from 'mobx-state-tree';\nimport { createNote, INote, INoteRequest, IPaginatedNotes, NoteModel } from './NoteModel';\nimport { flow, getEnv } from './util';\nimport { ReviewModel } from './ReviewModel';\nimport { PermissionsModel } from './PermissionsModel';\nimport { api } from 'shared/api/interfaces';\n\nexport const NotesModelMap = types.map(NoteModel);\n\nexport interface ISquadUser extends api.PersonDto {}\n\nconst selectedSquadStorageKey = 'YOUtopia.User.SquadName';\n\nexport const UserModel = types\n .model('User', {\n idpId: types.maybe(types.string),\n familyName: types.maybe(types.string),\n givenName: types.maybe(types.string),\n squadName: types.maybe(types.string),\n permissions: types.optional(PermissionsModel, {}),\n draftNotes: NotesModelMap,\n submittedNotes: NotesModelMap,\n review: types.optional(ReviewModel, { numberOfPendingNotes: 0 }),\n selectedSquad: types.optional(types.string, ''),\n accessLevel: types.maybe(types.string),\n accessLevelDisplayName: types.maybe(types.string),\n assignedSquads: types.optional(types.array(types.string), []),\n })\n .actions((self) => {\n const loadEditNote = function* (noteId: number): Generator, INote, INote> {\n const { ajax } = getEnv(self);\n return yield ajax\n .get('Notes/noteId', { searchParams: { noteId } })\n .json()\n .then((note) => createNote(note));\n };\n\n return {\n loadEditNote: flow(loadEditNote),\n };\n })\n .actions((self) => ({\n loadSquadNotes: flow(function* (\n squad: string,\n page: number,\n size: number\n ): Generator, IPaginatedNotes, IPaginatedNotes> {\n const { ajax } = getEnv(self);\n return yield ajax\n .get('Notes/squad', { searchParams: { squadName: squad, page, size } })\n .json()\n .then((result) => {\n return {\n notes: result.notes.map((note) => createNote(note)),\n totalCount: result.totalCount,\n };\n });\n }),\n }))\n .actions((self) => {\n const saveNote = function* (\n formData: INoteRequest,\n noteId?: number\n ): Generator, Response, Response> {\n const { ajax } = getEnv(self);\n return yield ajax('Notes', {\n json: {\n ...formData,\n noteId: noteId || undefined /* just in case NaN is provided here */,\n },\n method: noteId ? 'put' : 'post',\n }).json();\n };\n\n const deleteNote = function* (noteId: number): Generator {\n const { ajax } = getEnv(self);\n yield ajax.delete('Notes', { searchParams: { noteId } });\n };\n\n return {\n saveNote: flow(saveNote),\n deleteNote: flow(deleteNote),\n };\n })\n .actions((self) => {\n const loadDraftNotes = function* (): Generator, void, INote[]> {\n const { ajax } = getEnv(self);\n const response = yield ajax\n .get('Notes/drafts/me')\n .json()\n .then((notes) => notes.map((note) => createNote(note)));\n self.draftNotes.clear();\n response.forEach((note: INote) => self.draftNotes.put(note));\n };\n\n const loadSubmittedNotes = function* (): Generator, void, INote[]> {\n const { ajax } = getEnv(self);\n const response = yield ajax\n .get('Notes/submitted_notes/me')\n .json()\n .then((notes) => notes.map((note) => createNote(note)));\n self.submittedNotes.clear();\n response.forEach((note: INote) => self.submittedNotes.put(note));\n };\n\n return {\n loadDraftNotes: flow(loadDraftNotes),\n loadSubmittedNotes: flow(loadSubmittedNotes),\n };\n })\n .actions((self) => ({\n getEmployeesForSquad: flow(function* (\n squadName: string\n ): Generator, ISquadUser[], ISquadUser[]> {\n const { ajax } = getEnv(self);\n return yield ajax\n .get('Employee/List', { searchParams: { squadName } })\n .json();\n }),\n getAllSquads: flow(function* (): Generator, string[], string[]> {\n const { ajax } = getEnv(self);\n return yield ajax.get('Squads').json();\n }),\n }))\n .actions((self) => ({\n setSquad: (squad: string) => {\n if (!self.permissions.canViewAllSquads && self.assignedSquads.length <= 0) return;\n\n self.selectedSquad = squad;\n sessionStorage.setItem(selectedSquadStorageKey, squad);\n },\n }))\n .views((self) => {\n const sortNotes = (a: INote, b: INote): number => {\n const aDate = a.modifiedDateMoment ?? a.createdDateMoment;\n const bDate = b.modifiedDateMoment ?? b.createdDateMoment;\n return bDate.diff(aDate);\n };\n\n return {\n get drafts() {\n return Array.from(self.draftNotes?.values() || []).sort(sortNotes);\n },\n get previous() {\n return Array.from(self.submittedNotes?.values() || []).sort(sortNotes);\n },\n };\n });\n\nexport interface IUser extends Instance {}\n\nexport interface IPermissions extends Instance {}\n\nexport const createUser = (user: api.LoggedInUserDto): IUser => {\n const getUserSquad = () => {\n const selectedSquad = sessionStorage.getItem(selectedSquadStorageKey);\n if (selectedSquad) {\n if (user.permissions.canViewAllSquads) {\n return selectedSquad;\n } else if (user.assignedSquads && user.assignedSquads.length > 0) {\n if (user.assignedSquads.includes(selectedSquad)) return selectedSquad;\n }\n }\n return user.squadName;\n };\n\n return UserModel.create({\n idpId: user.idpId,\n familyName: user.familyName,\n givenName: user.givenName,\n squadName: user.squadName,\n selectedSquad: getUserSquad(),\n permissions: user.permissions,\n draftNotes: {},\n submittedNotes: {},\n accessLevel: user.accessLevel,\n accessLevelDisplayName: user.accessLevelDisplayName,\n assignedSquads: user.assignedSquads,\n });\n};\n","import { errorLog } from 'index';\nimport { Instance, types } from 'mobx-state-tree';\nimport { api } from 'shared/api/interfaces';\nimport { flow, getEnv, LoadingStateModel } from '../util';\n\nexport const TalentAnalysisEmployeeModel = types.model('TalentAnalysisEmployee', {\n idpId: types.string,\n givenName: types.string,\n familyName: types.string,\n role: types.string,\n department: types.string,\n talentCode: types.string,\n statusType: types.number,\n roleChangePathwayTimeframeInMonths: types.number,\n isFlightRisk: types.optional(types.boolean, false),\n isRoleChangePathway: types.optional(types.boolean, false),\n isOnProbation: types.optional(types.boolean, false),\n isOnLongTermLeave: types.optional(types.boolean, false),\n longTermLeaveExpectedReturn: types.maybeNull(types.string),\n});\n\nexport interface IEmployeeTalentModel extends Instance {}\n\nexport const TalentAnalysisToolModel = types\n .model('TalentAnalysisTool', {\n state: LoadingStateModel,\n employees: types.optional(types.array(TalentAnalysisEmployeeModel), []),\n })\n .actions((self) => ({\n loadEmployees: flow(function* (\n squadName: string\n ): Generator, void, IEmployeeTalentModel[]> {\n const { ajax } = getEnv(self);\n self.state = 'loading';\n try {\n const result = yield ajax\n .get('TalentAnalysisTool', { searchParams: { squadName }, timeout: 600000 })\n .json()\n .then((values) => values.map((item) => TalentAnalysisEmployeeModel.create(item)));\n self.employees.clear();\n result.forEach((i) => self.employees.push(i));\n self.state = 'done';\n } catch (e) {\n errorLog('Unable to get all employees for squad: ' + squadName, e);\n self.state = 'error';\n }\n }),\n updateTalentCode: flow(function* (\n employeeIdpId: string,\n talentCode: number\n ): Generator, void, void> {\n const { ajax } = getEnv(self);\n\n yield ajax\n .post('employee/primaryflag', {\n json: {\n employeeIdpId,\n flagId: talentCode,\n reason: '',\n },\n })\n .json();\n }),\n }));\n\nexport interface ITalentAnalysisTool extends Instance {}\n","import { errorLog } from 'index';\nimport { flow, Instance, types } from 'mobx-state-tree';\nimport { api } from 'shared/api/interfaces';\nimport { LoadingStateModel, getEnv, ModelLoadingState } from '../util';\nimport { makeAdminUrl } from './AdminModel';\n\nexport const EmployeeModel = types.model('EmployeeModel', {\n idpId: types.string,\n name: types.string,\n givenName: types.string,\n familyName: types.string,\n position: types.string,\n capability: types.string,\n accessLevel: types.string,\n accessLevelDisplayName: types.string,\n noAccessRequested: types.boolean,\n assignedSquads: types.maybeNull(types.array(types.string)),\n});\n\nexport interface IEmployeeItem extends Instance {}\n\nexport const EmployeeListModel = types\n .model('EmployeeListModel', {\n employees: types.optional(types.array(EmployeeModel), []),\n squadEmployees: types.optional(types.array(EmployeeModel), []),\n state: LoadingStateModel,\n squadEmployeesState: LoadingStateModel,\n sendingRoleInvitationState: types.optional(\n types.enumeration(['loading', 'done', 'error', 'unauthorized']),\n 'done'\n ),\n })\n .actions((self) => ({\n loadSquadEmployees: flow(function* (\n squadNames: string[],\n includeUnknownRoles = false\n ): Generator, void, IEmployeeItem[]> {\n if (squadNames) {\n const { ajax } = getEnv(self);\n const searchParams = new URLSearchParams({ includeUnknownRoles: includeUnknownRoles });\n squadNames.forEach((squad) => {\n searchParams.append('squadName', squad);\n });\n self.squadEmployeesState = 'loading';\n\n try {\n self.squadEmployees.clear();\n const value = yield ajax\n .get(makeAdminUrl('employees'), {\n searchParams: searchParams,\n })\n .json()\n .then((values) => values.map((item) => EmployeeModel.create(item)));\n value.forEach((i) => self.squadEmployees.push(i));\n\n self.squadEmployeesState = 'done';\n } catch (e) {\n errorLog('Failed to load employees', e);\n self.state = 'error';\n }\n }\n }),\n loadEmployees: flow(function* (\n selectedSquad: string | null,\n includeUnknownRoles = false\n ): Generator, void, IEmployeeItem[]> {\n if (selectedSquad) {\n const { ajax } = getEnv(self);\n\n self.state = 'loading';\n\n try {\n self.employees.clear();\n const value = yield ajax\n .get(makeAdminUrl('employees'), {\n searchParams: { squadName: selectedSquad, includeUnknownRoles },\n })\n .json()\n .then((values) => values.map((item) => EmployeeModel.create(item)));\n value.forEach((i) => self.employees.push(i));\n\n self.state = 'done';\n } catch (e) {\n errorLog('Failed to load employees', e);\n self.state = 'error';\n }\n }\n }),\n sendChangeAccessLevelInvitation: flow(function* (\n requestForIdpId: string,\n currentRole: string,\n requestedRole: string\n ): Generator<\n Promise,\n api.ChangeAccessLevelMessageDto,\n api.ChangeAccessLevelMessageDto\n > {\n const { ajax } = getEnv(self);\n try {\n self.sendingRoleInvitationState = 'loading';\n return yield ajax\n .post(makeAdminUrl('ChangeAccessLevelRequest'), {\n json: { requestForIdpId, currentRole, requestedRole },\n })\n .json();\n } finally {\n self.sendingRoleInvitationState = 'done';\n }\n }),\n getLastChangeAccessLevelInvitationForEmployee: flow(function* (\n employeeIdpId: string\n ): Generator<\n Promise,\n api.ChangeAccessLevelMessageDto,\n api.ChangeAccessLevelMessageDto\n > {\n const { ajax } = getEnv(self);\n return yield ajax\n .get(makeAdminUrl('ChangeAccessLevelRequest'), {\n searchParams: { requestForIdpId: employeeIdpId },\n })\n .json();\n }),\n }));\n","import { errorLog } from 'index';\nimport { cast, flow, types } from 'mobx-state-tree';\nimport { api } from 'shared/api/interfaces';\nimport { LoadingStateModel, getEnv } from '../util';\nimport { makeAdminUrl } from './AdminModel';\nimport { EmployeeModel, IEmployeeItem } from './EmployeeListModel';\n\nexport const SquadAssignmentEmployeeListModel = types\n .model('EmployeeModel', {\n squadAssignmentEmployees: types.optional(types.array(EmployeeModel), []),\n state: LoadingStateModel,\n squadAssignmentEmployeesSearch: types.optional(types.array(EmployeeModel), []),\n selectedEmployee: types.maybeNull(EmployeeModel),\n searchState: LoadingStateModel,\n })\n .actions((self) => ({\n loadEmployeesEligibleForSquadAssignment: flow(function* (): Generator<\n Promise,\n void,\n IEmployeeItem[]\n > {\n const { ajax } = getEnv(self);\n\n self.state = 'loading';\n\n try {\n self.squadAssignmentEmployees.clear();\n const value = yield ajax\n .get(makeAdminUrl('MultipleSquadEmployees'))\n .json()\n .then((values) => values.map((item) => EmployeeModel.create(item)));\n value.forEach((i) => self.squadAssignmentEmployees.push(i));\n\n self.state = 'done';\n } catch (e) {\n errorLog('Failed to load employees', e);\n self.state = 'error';\n throw e;\n }\n }),\n assignSquads: flow(function* (\n assignSquadsRequest: api.AssignSquadsRequest\n ): Generator, void, void> {\n const { ajax } = getEnv(self);\n\n try {\n yield ajax.post(makeAdminUrl('AssignSquads'), { json: assignSquadsRequest }).json();\n\n const employee = self.squadAssignmentEmployees.find(\n (emp) => emp.idpId === assignSquadsRequest.employeeIdpId\n );\n\n if (employee) {\n employee.assignedSquads = cast(assignSquadsRequest.squads);\n }\n\n self.state = 'done';\n } catch (e) {\n errorLog('Failed to assign squads', e);\n self.state = 'error';\n throw e;\n }\n }),\n setSquadAssignmentEmployees(item: IEmployeeItem | null) {\n self.state = 'loading';\n self.squadAssignmentEmployees.clear();\n const employee = item as IEmployeeItem;\n if (employee) self.squadAssignmentEmployees.push(employee);\n self.selectedEmployee = employee;\n self.state = 'done';\n },\n searchEmployeesEligibleForSquadAssignment: flow(function* (\n nameFilter?: string,\n titleFiltered?: boolean\n ): Generator, void, IEmployeeItem[]> {\n const { ajax } = getEnv(self);\n self.searchState = 'loading';\n\n const searchParams = new URLSearchParams();\n if (nameFilter !== undefined) searchParams.set('nameFilter', nameFilter);\n if (titleFiltered !== undefined) searchParams.set('titleFiltered', titleFiltered.toString());\n try {\n const value = yield ajax\n .get(makeAdminUrl('MultipleSquadEmployees'), {\n searchParams: searchParams,\n })\n .json()\n .then((values) => values.map((item) => EmployeeModel.create(item)));\n self.squadAssignmentEmployeesSearch.clear();\n value.forEach((i) => self.squadAssignmentEmployeesSearch.push(i));\n self.searchState = 'done';\n } catch (e) {\n errorLog('Failed to load employees', e);\n self.searchState = 'error';\n throw e;\n }\n }),\n }));\n","import { Instance, types } from 'mobx-state-tree';\nimport { EmployeeListModel } from './EmployeeListModel';\nimport { SquadAssignmentEmployeeListModel } from './SquadAssignmentEmployeeListModel';\n\nexport function makeAdminUrl(name: string): string {\n return `Admin/${name}`;\n}\n\nexport const AdminModel = types.model('AdminModel', {\n employees: types.optional(EmployeeListModel, {}),\n SquadAssignment: types.optional(SquadAssignmentEmployeeListModel, {}),\n});\n\nexport interface IAdmin extends Instance {}\n","import { errorLog } from 'index';\nimport { Instance, types } from 'mobx-state-tree';\nimport moment, { utc } from 'moment';\nimport { api } from 'shared/api/interfaces';\nimport { flow, getEnv, LoadingStateModel } from '../util';\n\nexport const GroupMemberModel = types\n .model('GroupMemberModel', {\n idpId: types.string,\n displayName: types.string,\n givenName: types.string,\n familyName: types.string,\n lastCatchupDateUTC: types.maybeNull(types.string),\n nextCatchupDateUTC: types.maybeNull(types.string),\n catchupFrequencyInWeeks: types.number,\n catchupGroupId: types.number,\n })\n .views((self) => ({\n get lastCatchupDateAsLocalString() {\n return utc(self.lastCatchupDateUTC).local().format('DD/MM/YY');\n },\n get nextCatchupDateAsLocalString() {\n return utc(self.nextCatchupDateUTC).local().format('DD/MM/YY');\n },\n get daysUntilNextCatchup() {\n if (!self.lastCatchupDateUTC) return undefined;\n const nextCatchupDateLocal = utc(self.nextCatchupDateUTC).local().startOf('day');\n const now = moment().startOf('day');\n return nextCatchupDateLocal.diff(now, 'days');\n },\n }));\n\nexport interface IGroupMemberModel extends Instance {}\n\nexport function createCatchupGroupMember(member: api.CatchupGroupMemberDto): IGroupMemberModel {\n return GroupMemberModel.create({\n ...member,\n nextCatchupDateUTC: member.nextCatchupDateUTC,\n lastCatchupDateUTC: member.lastCatchupDateUTC,\n });\n}\n\nexport const GroupModel = types.model('GroupModel', {\n catchupGroupId: types.number,\n catchupGroupName: types.string,\n members: types.array(GroupMemberModel),\n});\n\nexport interface IGroupModel extends Instance {}\n\nexport function createCatchupGroup(cug: api.CatchupGroupDto): IGroupModel {\n return GroupModel.create({\n catchupGroupId: cug.catchupGroupId,\n catchupGroupName: cug.catchupGroupName,\n members: cug.members.map((m) => createCatchupGroupMember(m)),\n });\n}\n\nexport const CatchUpsModel = types\n .model('GroupListModel', {\n groups: types.optional(types.array(GroupModel), []),\n state: LoadingStateModel,\n })\n .actions((self) => ({\n loadGroups: flow(function* (): Generator, void, IGroupModel[]> {\n const { ajax } = getEnv(self);\n\n self.state = 'loading';\n\n try {\n self.groups.clear();\n const result = yield ajax\n .get('Catchup/groups/me')\n .json()\n .then((cugs) => cugs.map((cug) => createCatchupGroup(cug)));\n\n self.groups.clear();\n result.forEach((g: IGroupModel) => self.groups.push(g));\n self.state = 'done';\n } catch (error) {\n errorLog('Failed to load groups', error);\n self.state = 'error';\n }\n }),\n createGroup: flow(function* (\n catchupGroupName: string\n ): Generator, void, IGroupModel> {\n const { ajax } = getEnv(self);\n\n try {\n const result = yield ajax\n .post('Catchup/groups', {\n json: {\n catchupGroupName,\n },\n })\n .json()\n .then((cug) => createCatchupGroup(cug));\n\n self.groups.push(result);\n } catch (error) {\n errorLog('Failed to get catchup groups', error);\n throw error;\n }\n }),\n addMember: flow(function* (\n employeeIdpId: string,\n groupId: number,\n frequency: number\n ): Generator, void, IGroupMemberModel> {\n const { ajax } = getEnv(self);\n\n const result = yield ajax\n .post('Catchup/groups/members', {\n json: {\n groupId,\n employeeIdpId,\n frequency,\n },\n })\n .json()\n .then((cugm) => createCatchupGroupMember(cugm));\n\n self.groups.find((g) => g.catchupGroupId === groupId)?.members.push(result);\n }),\n deleteGroup: flow(function* (catchupGroupId: number): Generator, void, void> {\n const { ajax } = getEnv(self);\n yield ajax\n .delete('Catchup/groups', {\n searchParams: {\n catchupGroupId,\n },\n })\n .json();\n\n const group = self.groups.find((g) => g.catchupGroupId === catchupGroupId);\n group && self.groups.remove(group);\n }),\n renameGroup: flow(function* (\n catchupGroupId: number,\n groupName: string\n ): Generator, void, void> {\n const { ajax } = getEnv(self);\n return yield ajax\n .put('Catchup', {\n json: {\n catchupGroupId,\n groupName,\n },\n })\n .json();\n }),\n updateCatchupFrequency: flow(function* (\n catchupGroupId: number,\n catchupGroupMemberIdpId: string,\n frequency: number\n ): Generator, void, IGroupMemberModel> {\n const { ajax } = getEnv(self);\n\n const result = yield ajax\n .put('Catchup/groups/members/frequency', {\n json: {\n catchupGroupId,\n catchupGroupMemberIdpId,\n frequency,\n },\n })\n .json()\n .then((cugm) => createCatchupGroupMember(cugm));\n\n const group = self.groups.find((g) => g.catchupGroupId === catchupGroupId);\n const member = group?.members.find((m) => m.idpId === result.idpId);\n if (group && member) {\n member.nextCatchupDateUTC = result.nextCatchupDateUTC;\n }\n }),\n removeMemberFromGroup: flow(function* (\n catchupGroupId: number,\n catchupGroupMemberIdpId: string\n ): Generator, void, void> {\n const { ajax } = getEnv(self);\n yield ajax\n .delete('Catchup/groups/members', {\n searchParams: {\n catchupGroupId,\n catchupGroupMemberIdpId,\n },\n })\n .json();\n\n const group = self.groups.find((g) => g.catchupGroupId === catchupGroupId);\n const member = group?.members.find((m) => m.idpId === catchupGroupMemberIdpId);\n\n if (group && member) {\n group.members.remove(member);\n }\n }),\n }));\n\nexport interface ICatchUpsModel extends Instance {}\n","import { Instance, types } from 'mobx-state-tree';\n\nexport const PagingCacheModel = types\n .model('PagingCacheModel', {\n currentPageCache: types.integer,\n rowsPerPageCache: types.integer,\n })\n .actions((self) => ({\n setCurrentPageCache: (page: number) => (self.currentPageCache = page),\n setRowsPerPageCache: (rowsPerPage: number) => (self.rowsPerPageCache = rowsPerPage),\n }));\n\nexport interface IPagingCache extends Instance {}\n","import { Instance, types } from 'mobx-state-tree';\nimport { flow, getEnv, LoadingStateModel } from '../util';\nimport moment, { utc } from 'moment';\nimport { api } from 'shared/api/interfaces';\nimport { errorLog } from 'index';\n\nconst PersonModel = types.model('Person', {\n idpId: types.string,\n givenName: types.string,\n familyName: types.string,\n displayName: types.string,\n roleType: types.maybeNull(types.string),\n squadName: types.maybeNull(types.string),\n});\n\nexport interface IPerson extends Instance {}\n\nconst SquadCatchUpItemModel = types\n .model('SquadCatchUpItem', {\n employee: PersonModel,\n personWhoCaughtUpWithEmployee: types.maybeNull(PersonModel),\n lastCatchupDateUTC: types.maybeNull(types.string),\n })\n .views((self) => ({\n get lastCatchupDateAsLocalString() {\n return utc(self.lastCatchupDateUTC).local().format('DD/MM/YY');\n },\n get daysSinceLastCatchup() {\n if (!self.lastCatchupDateUTC) return undefined;\n const lastCatchupDateLocal = utc(self.lastCatchupDateUTC).local().startOf('day');\n const now = moment().startOf('day');\n return now.diff(lastCatchupDateLocal, 'days');\n },\n }));\n\nexport interface ISquadCatchUpItem extends Instance {}\n\nexport function createSquadCatchUpItem(item: api.SquadCatchupDto): ISquadCatchUpItem {\n return SquadCatchUpItemModel.create({\n employee: item.employee,\n lastCatchupDateUTC: item.lastCatchupDateUTC,\n personWhoCaughtUpWithEmployee: item.personWhoCaughtUpWithEmployee,\n });\n}\n\nexport const SquadCatchUpsModel = types\n .model('SquadCatchUpsModel', {\n squadCatchUps: types.array(SquadCatchUpItemModel),\n state: LoadingStateModel,\n })\n .actions((self) => ({\n loadCatchupsForSquad: flow(function* (\n squadName: string\n ): Generator, void, ISquadCatchUpItem[]> {\n const { ajax } = getEnv(self);\n\n try {\n self.state = 'loading';\n self.squadCatchUps.clear();\n const result = yield ajax\n .get('Catchup/squad', { searchParams: { squadName } })\n .json()\n .then((scus) => scus.map((scu) => createSquadCatchUpItem(scu)));\n\n result.map((s) => self.squadCatchUps.push(s));\n self.state = 'done';\n } catch (error) {\n errorLog('Failed to load squad catch-ups', error);\n self.state = 'error';\n }\n }),\n }));\n\nexport interface ISquadCatchUpsModel extends Instance {}\n","import { IAuthenticationProvider } from 'auth/AuthenticationTypes';\nimport ky from 'ky';\nimport { Instance, types } from 'mobx-state-tree';\nimport { EmployeeJourneyModel } from './employeeJourney/EmployeeJourneyModel';\nimport { FlagsModel } from './FlagsModel';\nimport { GraphModel } from './singletons/GraphModel';\nimport { NotificationModel } from './singletons/NotificationModel';\nimport { SecurityModel } from './singletons/SecurityModel';\nimport { TagsModel } from './TagsModel';\nimport { TrendsModel } from './trends/TrendsModel';\nimport { createUser, IUser, UserModel } from './UserModel';\nimport { flow, getDefaultAjaxInstance, getEnv, LoadingStateModel } from './util';\nimport { TalentAnalysisToolModel } from './talentAnalysisTool/TalentAnalysisToolModel';\nimport { AdminModel } from './admin/AdminModel';\nimport { CatchUpsModel } from './catchUps/CatchUpsModel';\nimport { PagingCacheModel } from './PagingCacheModel';\nimport { DEFAULT_PAGE_NUMBER, DEFAULT_ROWS_PER_PAGE } from 'views/ViewConstants';\nimport { SquadCatchUpsModel } from './catchUps/SquadCatchUpsModel';\nimport { api } from 'shared/api/interfaces';\nimport { errorLog } from 'index';\nimport { RoleChangeModel } from './employeeJourney/RoleChangeModel';\n\nconst RootStoreModel = types\n .model(`RootStoreModel`, {\n graph: types.optional(GraphModel, {}),\n security: types.optional(SecurityModel, {}),\n notifications: types.optional(NotificationModel, {}),\n tags: types.optional(TagsModel, {}),\n flags: types.optional(FlagsModel, {}),\n user: types.optional(UserModel, {}),\n employeeJourney: types.optional(EmployeeJourneyModel, {}),\n state: LoadingStateModel,\n trends: types.optional(TrendsModel, {}),\n talentAnalysis: types.optional(TalentAnalysisToolModel, {}),\n admin: types.optional(AdminModel, {}),\n catchUpGroups: types.optional(CatchUpsModel, {}),\n squadCatchUps: types.optional(SquadCatchUpsModel, {}),\n pagingCache: types.optional(PagingCacheModel, {\n currentPageCache: DEFAULT_PAGE_NUMBER,\n rowsPerPageCache: DEFAULT_ROWS_PER_PAGE,\n }),\n roleChange: types.optional(RoleChangeModel, {}),\n })\n .actions((self) => ({\n afterCreate: flow(function* (): Generator, void, IUser> {\n const { ajax } = getEnv(self);\n\n try {\n self.user = yield ajax\n .get('User')\n .json()\n .then((user) => createUser(user));\n self.state = 'done';\n } catch (e) {\n errorLog('GET user failed.', e);\n const k = e as ky.HTTPError;\n if (k.response && k.response.status === 403) {\n self.state = 'unauthorized';\n } else {\n self.state = 'error';\n }\n }\n }),\n }))\n .views((self) => ({\n get isLoading() {\n return self.state === 'loading';\n },\n }));\n\nexport interface IRootStoreModel extends Instance {}\n\nexport interface IRootStoreEnvironment {\n ajax: typeof ky;\n auth: IAuthenticationProvider;\n}\n\nexport function getDefaultStore(auth: IAuthenticationProvider): IRootStoreModel {\n const ajax = getDefaultAjaxInstance(auth);\n\n return RootStoreModel.create({ state: 'loading' }, { auth, ajax });\n}\n","export const CLIENT_ID = process.env.REACT_APP_CLIENT_ID || 'client-id-not-set';\nexport const TENANT_ID = process.env.REACT_APP_TENANT_ID || 'tenant-id-not-set';\nexport const AUTHORITY = `https://login.microsoftonline.com/${TENANT_ID}`;\n\nconst NODE_ENV = process.env.NODE_ENV;\nexport const isDevelopment = NODE_ENV === 'development';\n","import { Account } from 'msal';\n\nexport class AuthenticationAccount extends Account {}\n\nexport type AuthenticationProviderState =\n | 'signing-in'\n | 'signed-in'\n | 'redirecting'\n | 'signed-out'\n | 'loading'\n | 'login-error';\n\nexport interface IAuthenticationProvider {\n readonly initialState: AuthenticationProviderState;\n readonly account: AuthenticationAccount | null;\n\n signIn(): Promise;\n\n signOut(): void;\n\n getIsSignedIn(): Promise;\n\n getApiAccessToken(): Promise;\n\n getGraphAccessToken(scopes?: string[]): Promise;\n}\n\nexport class AuthenticationError extends Error {\n constructor() {\n super('Not Authenticated');\n }\n}\n","import {\n AuthenticationParameters,\n AuthError,\n AuthResponse,\n Configuration,\n UserAgentApplication,\n} from 'msal';\n\nimport {\n AuthenticationAccount,\n AuthenticationError,\n AuthenticationProviderState,\n IAuthenticationProvider,\n} from './AuthenticationTypes';\n\nexport class AuthenticationProvider implements IAuthenticationProvider {\n private readonly application: UserAgentApplication;\n\n constructor(config: Configuration, private readonly authParams: AuthenticationParameters) {\n this.application = new UserAgentApplication(config);\n }\n\n public get initialState(): AuthenticationProviderState {\n return 'loading';\n }\n\n public get account(): AuthenticationAccount | null {\n return this.application.getAccount();\n }\n\n public async signIn(): Promise {\n if (this.getIsSigningIn()) return 'signing-in';\n if (this.getIsLoginError()) return 'login-error';\n if (await this.getIsSignedIn()) return 'signed-in';\n\n this.signInRedirect();\n return 'redirecting';\n }\n\n public signOut(): void {\n sessionStorage.clear();\n this.application.logout();\n }\n\n public async getIsSignedIn(): Promise {\n const local = !this.getIsSigningIn() && !!this.account;\n return local && (await this.canAcquireTokenSilent());\n }\n\n public async getApiAccessToken(): Promise {\n if (await this.getIsSignedIn()) {\n const response = await this.application.acquireTokenSilent(this.authParams);\n return response.accessToken;\n }\n throw new AuthenticationError();\n }\n\n public async getGraphAccessToken(scopes?: string[]): Promise {\n const accessTokenRequest: AuthenticationParameters = {\n scopes: scopes || ['user.read'],\n };\n if (await this.getIsSignedIn()) {\n const response = await this.application.acquireTokenSilent(accessTokenRequest);\n return response.accessToken;\n }\n throw new AuthenticationError();\n }\n\n private signInRedirect() {\n this.application.loginRedirect(this.authParams);\n }\n\n private getIsLoginError(): boolean {\n let isLoginError = false;\n\n //\n // The callback is invoked immediately by MSAL.js\n //\n this.application.handleRedirectCallback((authErr: AuthError, response?: AuthResponse) => {\n isLoginError = !!authErr;\n });\n\n return isLoginError;\n }\n\n private getIsSigningIn(): boolean {\n return (\n this.application.getLoginInProgress() ||\n this.application.urlContainsHash(window.location.hash)\n );\n }\n\n private async canAcquireTokenSilent(): Promise {\n try {\n await this.application.acquireTokenSilent(this.authParams);\n return true;\n } catch {\n return false;\n }\n }\n}\n","import React from 'react';\n\nimport ReactDOM from 'react-dom';\nimport { createBrowserHistory } from 'history';\n\nimport 'typeface-roboto';\nimport 'typeface-open-sans';\n\nimport 'index.scss';\nimport { App } from 'views/App';\nimport { getDefaultStore } from 'domain/store/RootStoreModel';\nimport { AUTHORITY, CLIENT_ID, isDevelopment } from 'appSettings';\nimport { AuthenticationProvider } from 'auth/AuthenticationProvider';\nimport { IAuthenticationProvider } from 'auth/AuthenticationTypes';\n\n//\n// Make the FontAwesome CSS part of the bundle instead of\n// having a