{"version":3,"sources":["utils/config.js","contexts/AuthContext.js","utils/helper.js","utils/api.js","contexts/UserContext.js","components/LanguageProvider.js","components/AvatarProgressModal/AvatarProgressModal.js","components/DialogBody/DialogBody.js","components/DialogTitle/DialogTitle.js","components/DialogFooter/DialogFooter.js","components/AnimatedBackground/AnimatedBackground.js","pages/Login.js","pages/OidcCallback.js","pages/OidcLogoutCallback.js","pages/Errors/ErrorPageTemplate.js","components/ErrorSvgs/NotFound.js","components/ErrorSvgs/ServerError.js","components/ErrorSvgs/Unauthorised.js","pages/Errors/ServerErrorPage.js","components/AuthenticationGuard.js","pages/RegistrationQuestions/RegistrationQuestionRadio.js","pages/RegistrationQuestions/RegistrationQuestionDataList.js","pages/RegistrationQuestions/AccessRequest.js","pages/RegistrationQuestions/RegistrationQuestions.js","components/RegistrationGuard.js","components/Tour/TourPage.js","components/Tour/Tour.js","components/Sidebar/LinkList.js","components/Sidebar/PATLogo.js","components/Sidebar/SidebarFooter.js","components/Sidebar/Sidebar.js","pages/SilentRenew.js","components/Link/Link.js","components/TablePagination/TablePagination.js","components/User/User.js","components/Team/TeamUsers.js","components/ErrorMessage/ErrorMessage.js","components/PATDialog/PATDialog.js","utils/useDebounce.js","components/Team/TeamUserAddDialog.js","components/Team/TeamUserRemoveDialog.js","components/Team/TeamUserButtons.js","utils/useTableRowSelection.js","components/Team/Team.js","utils/useDebounceCallback.js","utils/dataStates.js","contexts/YourProcessesContextProvider.js","components/core/JumboMetaData/JumboMetaData.js","components/YourProcesses/Banner.js","components/YourProcesses/DrawerContent.js","components/YourProcesses/ColumnToggleDrawer.js","components/YourProcesses/Filter.js","components/YourProcesses/TextFilter.js","components/core/NumberInput/NumberInput.js","components/core/DateInput/DateInput.js","components/YourProcesses/DateFilter.js","components/YourProcesses/CheckboxFilter.js","components/YourProcesses/TagsFilter.js","components/YourProcesses/NumberFilter.js","components/YourProcesses/CurrencyFilter.js","components/YourProcesses/FilterFactory.js","components/YourProcesses/TableFilterDrawer.js","components/ErrorDialog/ErrorDialog.js","components/GroupSelector/GroupSelectorDialog.js","components/SetStatusDialog/SetStatusDialog.js","components/YourProcesses/YourProcessesTableToolbar.js","components/TableStates/LoadingState.js","images/Error400.js","images/ErrorTable.js","components/TableStates/ErrorState.js","components/TableStates/EmptyState.js","components/TableStates/TableLoader.js","components/YourProcesses/YourProcessesTable.js","components/YourProcesses/YourProcessesTableContainer.js","components/YourProcesses/RecommendationDescriptionDialog.js","components/YourProcesses/YourProcessesDetails.js","components/YourProcesses/YourProcesses.js","contexts/GroupsContext.js","contexts/UsersContext.js","contexts/TeamsContext.js","contexts/SpaceContext.js","pages/SpaceUsers.js","pages/SpaceAdmins.js","components/GroupNameDialog.js","components/GroupRemoveDialog.js","components/GroupNavButtons.js","components/SpaceUserAddDialog.js","components/SpaceUserEditDialog.js","components/SpaceUserRemoveDialog.js","components/AlertDialog.js","components/UsersNavButtons.js","components/TeamAddDialog.js","components/SpaceTeamRemoveDialog.js","components/TeamNavButtons.js","components/SpaceGroupsList.js","components/ConfirmDialog.js","pages/SpaceTeams.js","pages/Space.js","pages/SpaceWrapper.js","contexts/GroupContext.js","contexts/GroupMembersContext.js","contexts/GroupMembersSearchContext.js","components/GroupMembersList.js","components/GroupMembersContent.js","components/GroupsList.js","components/GroupMemberDialog.js","components/GroupMemberRemoveDialog.js","components/GroupMemberEditDialog.js","components/GroupMemberButtons.js","pages/Group.js","pages/GroupWrapper.js","components/core/ToggleTip/ToggleTip.js","components/AssessmentTextQuestion.js","components/AssessmentRadioQuestion.js","components/AssessmentDataListQuestion.js","components/AssessmentSliderQuestion.js","components/AssessmentNumberQuestion.js","components/AssessmentNumberOptionQuestion.js","components/AssessmentSelectQuestion.js","components/AssessmentTagsQuestion.js","components/core/DurationInput/DurationInput.js","components/AssessmentTimespanQuestion.js","components/CurrencyInput/CurrencyInput.js","components/AssessmentCurrencyQuestion.js","components/ProcessAssessmentSummaryEntry.js","components/AssessmentBenefitsSummary.js","components/AssessmentSummarySection.js","components/AssessmentSummary.js","components/AssessmentGroupSelector.js","pages/ProcessAssessment.js","pages/Recommendation.js","pages/ProcessAssessmentCreator.js","components/SpaceAddDialog.js","pages/GroupManagement.js","pages/Errors/NotFoundErrorPage.js","pages/Errors/UnauthorisedErrorPage.js","components/MaintenanceNotificationBanner/MaintenanceNotificationBanner.js","pages/Routes.js","utils/urlHelpers.js","App.js","index.js"],"names":["config","imageUrl","image","window","env","PORTAL_URL","logoutUrl","editProfileUrl","id","apiUrl","API_URL","portalUrl","authServerUrl","ID_SERVER_URL","helpUrl","HELP_URL","AuthContext","createContext","AuthContextProvider","children","history","useHistory","useState","userManager","setUserManager","isLoggedIn","hasCheckedLoggedInState","loggedInState","setLoggedInState","useEffect","UserManager","client_id","redirect_uri","location","protocol","hostname","port","response_type","scope","authority","automaticSilentRenew","silent_redirect_uri","post_logout_redirect_uri","filterProtocolClaims","loadUserInfo","events","addSilentRenewError","ev","a","querySessionStatus","signinRedirect","console","log","push","getUser","then","u","catch","err","error","logout","signoutRedirect","Provider","value","login","recheckLoggedInState","toUInt","defValue","num","Number","isNaN","Math","floor","createOffsetLimitFragment","offset","limit","limitFragment","generateRequestConfig","currentUser","options","headers","access_token","localStorage","getItem","httpPost","url","data","customOptions","axios","post","result","httpGet","get","regDTO","teamId","userId","groupId","permissionId","privLevel","folderId","spaceId","name","assessmentId","status","getUsers","filters","responseType","newGroupId","assessments","addAssessment","assessment","editAssessment","getStatusForChanging","postStatus","exportAssessments","getFormattedSummaryAnswers","getRecommendation","changeGroup","getNewAssessment","getAssessment","getAssessmentMetaData","user","isEmailInPortal","email","getRegistrationDetails","postRegistrationDetails","getRefreshedUserDetails","getUserDetails","spaceManagement","getSpace","getSpaces","getGroup","getGroupContent","getTeam","getTeamMembers","getSpaceTeams","getSpaceUsers","addSpace","addTeam","teamName","addGroup","parentGroupId","groupName","FolderId","Name","addMemberToTeam","addSpaceUser","isAdmin","editSpace","editGroup","newName","editTeam","editGroupMember","editSpaceUser","removeSpace","removeGroup","removeTeam","removeSpaceUser","UserId","removeMemberFromTeam","spaceUserSearch","searchTerm","spaceMemberSearch","getSpaceAdmins","removeSelfFromSpace","getGroupMembers","addGroupMember","memberId","memberType","removeMemberFromGroup","yourProcesses","postFullAssessments","request","postAssessments","getFilterMetaData","maintenance","UserContext","React","UserContextProvider","isUserSet","isRegistered","isFirstVisit","details","setUser","updateUser","response","userApi","getMessages","language","translations","LanguageProvider","browser","browserLanguage","navigator","languages","locale","toLowerCase","split","getBrowserLanguage","messages","DialogWithOverFlow","styled","DialogModal","AvatarBox","Box","props","css","theme","color","paper","replace","AvatarHeaderCenter","Center","AvatarHeader","avatarImage","percent","intrinsic","width","height","padding","title","TourContent","Stack","globalSizes","large","AvatarProgressModal","gap","onClose","onChange","overlay","page","visible","rest","max","Children","count","innerHeight","data-testid","splitAfter","map","child","index","cloneElement","hidden","ContentWrapper","ContentSection","contentHeight","contentWidth","fadeScroll","remValue","DialogBody","StyledText","Text","font","size","h4","DialogTitle","type","FooterBox","hexToRGBA","DialogFooter","element","className","translate","from","to","keyframes","translateY","dashOffset","Container","div","Svg","svg","TrackPaths","g","translateX","BlueCircles","YellowCircles","lineBlockFirst","lineBlockSecond","LineBlock","Icons","FilterLines","UnderMagnifyingGlass","path","Crosses","Ticks","AnimatedBackground","viewBox","preserveAspectRatio","fill","cx","cy","r","d","Login","useContext","justify","onClick","iconRight","OidcCallback","signinRedirectCallback","href","OidcLogoutCallback","signoutRedirectCallback","HiddenOverflowStack","ErrorPageTemplate","errorMessageText","headingText","linkText","linkHref","maxWidth","align","primsy","primsyShadow","blueArmsNudge","blueFace","Blue","Plant","Shadows","Primsy","NotFound","rx","ry","stroke","strokeLinejoin","strokeWidth","x","y","ServerError","stroke-width","stroke-linecap","stroke-linejoin","transform","LockPrism","Unauthorised","fillRule","ServerErrorPage","intl","useIntl","formatMessage","AuthenticationGuard","exact","render","component","RegistrationQuestionRadio","fieldName","isInError","getErrorMessage","onNextClick","onPreviousClick","onValidate","event","label","errorText","isFieldset","standalone","toString","target","Object","entries","key","val","iconLeft","handleNextClick","RegistrationQuestionDataList","defaultValue","AccessRequest","aria-hidden","horizontalAlign","values","firstName","RegistrationQuestions","pageIndex","setPageIndex","errors","setErrors","registrationOptions","setRegistrationOptions","relationshipWithBP","reasonForPDTUse","heardAboutPDTFrom","industry","registrationDetails","setRegistrationDetails","handleValidation","checkIsRegistered","prevUser","length","handleChange","prevRegistrationDetails","newIndex","handlePreviousClick","RegistrationGuard","TourPage","description","isLast","onContinue","preTitle","Tour","handleOnCloseClick","handleOnContinueClick","pageIndexValue","List","ul","ListItem","li","collapsed","LinkList","tourModalVisible","setTourModalVisible","preventDefault","rel","PATLogo","Title","StyledRow","Row","SidebarFooter","appName","Sidebar","setCollapsed","headerRef","useRef","menuVisible","setMenuVisible","lastName","message","displayAvatarCogIcon","ref","onAvatarClick","menuVisibleValue","anchorRef","anchor","externalUserId","icon","SilentRenew","signinSilentCallback","Link","useReplace","TablePagination","itemName","onLimitChange","onNextData","onPreviousData","cantGoBack","cantGoForward","rowCountLabel","pageLabel","rangeBottom","rangeTop","min","pageValue","prevButtonLabel","nextButtonLabel","prevButtonDisabled","nextButtonDisabled","onPageValueChange","onPrevButtonClick","onNextButtonClick","UserNameText","weight","bold","AvatarContainer","User","userName","TeamUsers","users","selectedRowIds","onSelectionChanged","onPaginationChanged","rowData","avatar","isCurrentUser","columns","header","accessor","handlePagingUrlChange","newOffset","newLimit","selectRows","tableLayout","selectedIds","onRowSelectionChange","limitLabelId","warning","xs","ErrorMessage","ThemeContext","role","themeColor","getModalHeight","PATDialog","useDebounce","delay","debouncedValue","setDebouncedValue","handler","setTimeout","clearTimeout","TeamUserAddDialog","open","onConfirm","search","setSearch","lastExecutedSearch","setLastExecutedSearch","results","setResults","debouncedSearchTerm","formatUser","getSelectedMember","searchText","find","some","api","handleCloseClick","handleAdd","selectedAnswer","aria-labelledby","headerContent","footerContent","helperText","TeamUserRemoveDialog","TeamUserButtons","onUserAdded","onUserRemoved","team","canEditSelection","addDialogOpen","setAddDialogOpen","removeDialogOpen","setRemoveDialogOpen","disabled","useTableRowSelection","initialRows","singleSelection","setSelectedRowIds","row","selected","prevSelectedIds","filter","prevId","clearSelection","tabs","Team","params","useParams","setTeam","setUsers","setCount","requiresUsersRefresh","setRequiresUsersRefresh","tab","items","spaceName","selectedIndex","indexOf","newValue","fragment","currentTarget","useDebounceCallback","debounceHandler","current","callback","propTypes","PropTypes","number","dataStates","defaultColumns","initialState","paging","summaries","recommendation","hours","validationErrors","YourProcessesContext","YourProcessesContextProvider","debounceDelay","state","setState","assessmentStates","errorCode","args","sorting","debounceCallback","getStoredColumnsForUser","storedValues","JSON","parse","selectedColumns","requestUpdate","flattenFilters","obj","parent","res","Array","applyChange","newArgs","isFullRequest","isEqual","replaceState","prevState","query","URLSearchParams","getPaging","tempColumns","disableSort","keys","column","sortDirection","direction","getColumns","setStoredColumnsForUser","stringify","setItem","DescriptionList","text","MainTitle","dt","typography","bodyL","black","MainTitleDescription","mega","SecondaryTitle","body","regular","SecondaryTitleDescription","dd","IconContainer","span","CountContainer","JumboMetadata","mainTitleDescriptionText","mainTitleText","secondaryTitleText","secondaryTitleDescriptionText","recommendationType","getIcon","Banner","summary","StyledTitle","h5","StickyHeader","layer","hovering","DrawerContent","buttons","ColumnToggleDrawer","docked","onSelectedColumnsChange","handleToggleColumnChange","newValues","checked","selectedColumn","getNewSelectedColumns","initialWidth","fixed","filteredColumns","defaultColumn","displayType","includes","enabled","Filter","onToggle","aria-expanded","TextFilter","localValue","setLocalValue","htmlFor","InputFieldRightAligned","InputField","fieldLength","xxl","NumberInput","pattern","StyledInputFieldLabel","InputFieldLabel","padZeros","numberOfZeros","String","padStart","DateInput","day","month","year","date","setDate","isDateValid","previousDate","dateParts","Intl","DateTimeFormat","weekday","hour","minute","second","fractionalSecondDigits","hour12","timeZone","timezone","formatToParts","Date","part","prevDate","handleBlur","isOneFieldEmpty","isPassableDate","newDate","timezoneOffset","getTimezoneOffset","posOffset","abs","dateOffset","toISOLocalString","onBlur","DateFilter","labelMin","labelMax","helperTextMin","helperTextMax","isInErrorMin","isInErrorMax","errorTextMin","errorTextMax","localValues","setLocalValues","handleValuesChange","CheckboxFilter","_","option","TagsFilter","splitValue","tag","trim","NumberFilter","minValue","maxValue","maxvalue","CurrencyFilter","labelCurrency","helperTextCurrency","currencyOptions","isInErrorCurrency","errorTextCurrency","localValueMin","setLocalValueMin","localValueMax","setLocalValueMax","lastCurrencyCode","currencyCode","currencyName","filterType","FilterFactory","onFilterValuesChange","handleFilterValuesChange","changedValues","textInputLabel","textInputHelperText","checkboxOptionsLabel","checkboxOptionsHelperText","numberInputMinLabel","numberInputMinHelperText","numberInputMaxLabel","numberInputMaxHelperText","dateFromLabel","dateToLabel","dateFromHelperText","dateToHelperText","currencyInputLabel","currencyInputHelperText","minimumSavingHelperText","minimumSavingLabel","maximumSavingHelperText","maximumSavingLabel","TableFilterDrawer","onFiltersReset","onFiltersChange","metaData","setMetaData","selectedFilters","setSelectedFilters","updatedFilters","newFilters","changedFilters","removeValue","isArray","reduce","acc","handleSelectedFiltersChange","prevSelectedFilters","siblingFilters","startsWith","noValidate","filterLabel","ErrorDialog","bodyText","buttonText","onOk","StyledUl","StyledBox","FooterStack","structure","StyledHeader","base","GroupSelectorDialog","disableAdminCheck","currentGroupId","isOpen","displayValidationError","setDisplayValidationError","userIsNotAdmin","setUserIsNotAdmin","content","setContent","group","setGroup","hasAutoSkippedSpaces","isRootGroup","contentId","pageSettings","setPageSettings","handleContentSelect","settings","rootGroupId","innerText","parentGroups","handleNextData","handlePreviousData","handleConfirm","links","concat","link","aria-describedby","getLinkElements","aria-label","renderFooter","aria-controls","aria-live","item","renderContent","HeaderInfoContainer","BoldText","h2","dialogStates","DialogHeaderContent","dialogstatus","DialogFooterContent","SetStatusDialog","assessmentTitle","validOptions","setValidOptions","setStatus","setErrorText","setDialogStatus","fetchedStatus","renderOptions","handleGroupChange","DialogContent","YourProcessesTableToolbar","selectedRowId","onShowDetailsChanged","isGroupSelectorDialogOpen","setIsGroupSelectorDialogOpen","isSetStatusDialogOpen","setIsSetStatusDialogOpen","columnToggleDrawerDocked","setColumnToggleDrawerDocked","filterTableDrawerDocked","setFilterTableDrawerDocked","setFilters","filterCount","setFilterCount","selectedAssessment","handleFiltersChange","active","drawerDocked","ariaLabel","blob","Blob","encoding","saveAs","now","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","generateFileName","newColumns","processTitle","propTypesd","oneOf","string","arrayOf","func","OpacityRow","opacity","LoadingState","lines","pauseAnimation","Error400","strokeLinecap","clipRule","maskUnits","mask","filterUnits","colorInterpolationFilters","floodOpacity","in","in2","stdDeviation","PlugSocket","PlugnWire","Prismy","ErrorTable","x1","y1","x2","y2","Content","Overlay","ErrorState","ErrorPic","andText","EmptyState","TableLoader","emptyStateTitle","emptyStateText","errorStateText","onHeaderClick","sortColumns","tableStatus","tableDataStates","TableWrapper","YourProcessesTable","setPaging","Recommendation","Type","processType","Analyst","processAnalyst","Owner","processOwner","ProcessId","processId","BusinessFunction","businessFunction","ReasonForAutomating","reasonForAutomating","CreateDate","formatDate","createdAt","Group","folderName","CapitalSavings","currency","potentialSavingCost","formatNumber","style","HoursSavings","potentialSavingHours","ApScore","apScore","minimumFractionDigits","IeScore","ieScore","Status","Space","space","Tags","tags","handleTablePagingChange","currentPaging","selectHeaderLabel","sortColumn","YourProcessesTableContainer","setSelectedColumns","RecommendationDescriptionDialog","setRecommendation","handleOkClick","StyledDescriptionDetail","headline","YourProcessesDetails","isDialogOpen","setIsDialogOpen","process","hoursSavings","capitalSavings","analyst","owner","createdDate","detail","YourProcesses","showDetails","setShowDetails","handleRowSelectionChange","handleShowDetailsChanged","newShowDetails","GroupsContext","GroupsContextProvider","isActive","parentId","isSpaceAdmin","groups","isAddOpen","isEditOpen","isRemoveOpen","setTableStatus","newGroup","updateGroupParams","openAddDialog","handleAddClose","groupIdParam","dialogError","setGroupsActive","isActiveParam","openEditDialog","handleEditClose","updateGroupsSpace","openRemoveDialog","handleRemoveClose","error400","UsersContext","UsersContextProvider","alertText","isAlertOpen","userContext","setUserContext","selectedUser","member","reloadUsers","onAlertOk","setUsersActive","updateUserParams","TeamsContext","TeamsContextProvider","teams","closeAddDialog","closeEditDialog","closeRemoveDialog","updateTeamParams","setTeamsActive","SpaceContext","SpaceContextProvider","setSpace","setSpaceId","isRemoveSelfOpen","setIsRemoveSelfOpen","reloadSpace","openRemoveSelfDialog","handleRemoveSelfClose","removeSelf","SpaceUsers","i","userDetails","SpaceAdmins","admins","setAdmins","mapData","GroupNameDialog","mode","setText","handleCancelClick","groupParam","GroupRemoveDialog","selectedGroup","GroupNavButtons","currentGroup","groupItem","SpaceUserAddDialog","setIsAdmin","at","lastIndexOf","substring","isValidEmail","handleClose","handleAddClick","isAdminValue","SpaceUserEditDialog","canEdit","displayWarningMessage","currentUserHasAccess","SpaceUserRemoveDialog","AlertDialog","UsersNavButtons","TeamAddDialog","SpaceTeamRemoveDialog","dialogErrorMessage","setDialogErrorMessage","TeamNavButtons","selectedTeam","teamItem","SpaceGroupsList","nameColumn","disableSelect","ConfirmDialog","onCancel","SpaceTeams","teamDetails","activeTab","setActiveTab","clearUserIds","selectedUserIds","onUserSelectionChange","clearTeamIds","selectedTeamIds","onTeamSelectionChange","clearGroupIds","selectedGroupIds","onGroupSelectionChange","isCurrentUserAdmin","tabIndex","getIndexFromFragment","currentTab","newSpaceId","tabName","getTabText","renderButtons","adminsCount","renderTabContent","bool","SpaceWrapper","GroupContext","GroupContextProvider","groupDetails","setGroupDetails","setGroupId","reloadGroup","GroupMembersContext","withRouter","members","groupMembers","setGroupMembers","removeGroupMember","groupMemberId","groupMemberToRemove","groupMemberToEdit","updateGroupMembersParams","openAddMemberDialog","handleAddMemberClose","groupMemberType","setGroupMembersActive","updateGroupMembersSpace","openRemoveMemberDialog","handleRemoveMemberClose","openEditMemberDialog","handleEditMemberClose","GroupMembersSearchContext","GroupMembersSearchContextProvider","lastExecutedSearchTerm","isSearching","p","searchForGroupMember","resetSearch","GroupMembersList","teamText","memberData","disableSelectAll","GroupMembersContent","setSelectedGroupMember","rows","GroupsList","GroupMemberDialog","setName","setRole","memberName","found","formatMember","selectedMember","parseInt","GroupMemberRemoveDialog","GroupMemberEditDialog","handleEditClick","GroupMemberButtons","groupMemberSearch","areEditButtonsDisabled","clearGroupMemberIds","selectedGroupMemberIds","onGroupMemberSelectionChange","getTabUrlFragment","GroupWrapper","Details","Summary","action","smallest","hover","focus","Span","ToggleTip","summaryText","hideText","detailsText","setActive","translatedSummaryText","translatedHideText","tabindex","AssessmentTextQuestion","question","validationLabel","questionText","AssessmentRadioQuestion","toggleTipText","optionValue","AssessmentDataListQuestion","setValue","enumName","enum","e","SliderContainer","SliderValueLabel","AssessmentSliderQuestion","checkBoxLabel","step","sliderValue","setSliderValue","iDontKnow","setChecked","leadPara","isChecked","AssessmentNumberQuestion","Fieldset","attrs","Legend","legend","ToggleTipLeftMargin","AssessmentNumberOptionQuestion","dontKnowSelected","AssessmentSelectQuestion","datalistProps","document","getElementById","AssessmentTagsQuestion","join","DurationInput","minutes","seconds","errorHours","errorMinutes","errorSeconds","setHours","setMinutes","setSeconds","AssessmentTimespanQuestion","time","setTime","InputContainer","Label","caption","CurrencyInput","currencyValue","currencyLabel","currencyAriaLabel","currencyData","currencyError","amountValue","amountLabel","amountAriaLabel","amountError","onCurrencyChange","onAmountChange","AssessmentCurrencyQuestion","amount","currencyIsInError","currencyErrorText","amountIsInError","amountErrorText","setAmount","availableCurrencies","initialAmount","currencyInputProps","currencyHelperText","ProcessAssessmentSummaryEntry","fieldValue","isAnswered","linkEnabled","isMandatory","alignContent","spacing","AssessmentBenefitsSummary","processData","averageFTECost","currencyDisplay","maximumFractionDigits","AssessmentSummarySection","questions","filterIncomplete","formattedSummary","pageMetaData","currentPageType","questionElements","questionName","answer","getFormattedAnswer","missingFields","questionType","ENUM","SLIDER","getQuestionText","questionLink","pageName","pages","generatePath","getLinkToQuestionPage","isReadonly","summaryTemplate","AssessmentSummary","isFormattedSummarySet","setFormattedSummary","isInEditableState","userHasEditPermission","renderReadonlyInfoMessage","AssessmentGroupSelector","hasAssessmentBeenSaved","groupIdFieldName","groupNameFieldName","selectGroup","setIsOpen","newGroupName","TEXT","NUMBER","TAGS","SELECT","DATALIST","TIMESPAN","NUMBEROPTION","CURRENCY","GROUPSELECT","StackedContainer","QuestionList","ProcessAssessment","isProcessDataSet","setProcess","pageError","setPageError","setFilterIncomplete","savePrompt","setSavePrompt","isMetaDataSet","match","localProcessId","mains","getElementsByTagName","main","documentElement","scrollTo","scrollTop","processPage","parameters","getCurrentPage","navigateTo","increment","navigateToUrlForPageName","finalPath","newPageName","submittedFromPage","dto","assign","triggerSaveComplete","fieldName2","mandatoryFieldsComplete","margin","statusLabels","RecommendationHeader","dl","DescriptionTerm","DescriptionDetail","setResult","apScoreMin","apScoreMax","ieScoreMin","ieScoreMax","ButtonRow","ProcessAssessmentCreator","SpaceAddDialog","currentName","busy","setBusy","handleModalClose","aria-disabled","GroupManagement","spaces","setSpaces","editDialogOpen","setEditDialogOpen","removeErrorText","setRemoveErrorText","selectedSpace","canModifySpace","createdBy","updateSpaces","itemCount","handleAddDialogClose","handleEditDialogClose","handleRemoveDialogClose","NotFoundErrorPage","UnauthorisedErrorPage","CloseButtonContainer","NotificationText","MaintenanceNotificationBanner","maintenanceTime","setMaintenanceTime","formatDateToParts","timeZoneName","formatTime","PageContainer","changeTitle","pathname","findBaseUrl","getUrlTitle","Routes","useLocation","listen","historyLocation","App","sideContent","mainContent","ReactDOM"],"mappings":"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","file":"static/js/main.3bea4586.chunk.js","sourcesContent":["export const config = {\r\n imageUrl: image => `${window.env.PORTAL_URL}/sites/default/files/pictures/${image}`,\r\n logoutUrl: `${window.env.PORTAL_URL}/user/logout`,\r\n editProfileUrl: id => `${window.env.PORTAL_URL}/user/${id}/edit`,\r\n apiUrl: window.env.API_URL,\r\n portalUrl: window.env.PORTAL_URL,\r\n authServerUrl: window.env.ID_SERVER_URL,\r\n helpUrl: window.env.HELP_URL,\r\n};\r\n","import React, { createContext, useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { UserManager } from 'oidc-client';\r\nimport { config } from 'utils/config';\r\n\r\nconst createUserManager = () =>\r\n new UserManager({\r\n client_id: 'pdtApp',\r\n redirect_uri: `${window.location.protocol}//${window.location.hostname}${\r\n window.location.port ? `:${window.location.port}` : ''\r\n }/oidc-callback`,\r\n response_type: 'code',\r\n scope: 'openid profile pdtAPI',\r\n authority: config.authServerUrl,\r\n automaticSilentRenew: true,\r\n silent_redirect_uri: `${window.location.protocol}//${window.location.hostname}${\r\n window.location.port ? `:${window.location.port}` : ''\r\n }/silent_renew`,\r\n post_logout_redirect_uri: `${window.location.protocol}//${window.location.hostname}${\r\n window.location.port ? `:${window.location.port}` : ''\r\n }/oidc-logout-callback`,\r\n filterProtocolClaims: true,\r\n loadUserInfo: true,\r\n });\r\n\r\nexport const AuthContext = createContext();\r\n\r\nexport default function AuthContextProvider({ children }) {\r\n const history = useHistory();\r\n const [userManager, setUserManager] = useState(null);\r\n\r\n const [loggedInState, setLoggedInState] = useState({\r\n isLoggedIn: false,\r\n hasCheckedLoggedInState: false,\r\n });\r\n\r\n useEffect(() => {\r\n setUserManager(createUserManager());\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!userManager) {\r\n return;\r\n }\r\n\r\n userManager.events.addSilentRenewError(async ev => {\r\n try {\r\n await userManager.querySessionStatus();\r\n await userManager.signinRedirect();\r\n } catch (err) {\r\n console.log(err);\r\n history.push('/servererror');\r\n }\r\n });\r\n\r\n if (!loggedInState.hasCheckedLoggedInState) {\r\n userManager\r\n .getUser()\r\n .then(u =>\r\n setLoggedInState({\r\n isLoggedIn: u != null,\r\n hasCheckedLoggedInState: true,\r\n })\r\n )\r\n .catch(err => console.error(err));\r\n }\r\n }, [userManager, loggedInState, history]);\r\n\r\n if (!loggedInState.hasCheckedLoggedInState) {\r\n return null;\r\n }\r\n\r\n const login = () => {\r\n userManager.signinRedirect().catch(err => history.push('/servererror'));\r\n };\r\n\r\n const logout = async () => {\r\n try {\r\n await userManager.querySessionStatus();\r\n await userManager.signoutRedirect();\r\n } catch (err) {\r\n console.log(err);\r\n history.push('/servererror');\r\n }\r\n };\r\n\r\n const recheckLoggedInState = () => {\r\n setLoggedInState({ hasCheckedLoggedInState: false });\r\n };\r\n\r\n const getUser = () => {\r\n return userManager.getUser();\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nAuthContextProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","export const toUInt = (value, defValue = 0) => {\r\n const num = Number(value);\r\n\r\n if (isNaN(num) || num < 1) {\r\n return defValue;\r\n }\r\n\r\n return Math.floor(+num);\r\n};\r\n\r\n// returns true if the string is null, whitespace or parsable to a float within the specified range.\r\nexport const isEmptyOrFloatWithinRange = (str, min = 0, max = 2147483647) => {\r\n if (str !== null && str.toString().trim().length > 0) {\r\n var floatRegex = /^-?\\d+(?:[.,]\\d*?)?$/;\r\n if (!floatRegex.test(str)) return false;\r\n\r\n var floatVal = parseFloat(str, 10);\r\n if (isNaN(floatVal)) {\r\n return false;\r\n }\r\n\r\n if (floatVal < min || floatVal > max) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\n// returns true if the string is null, whitespace or parsable to an integer within the specified range.\r\nexport const isEmptyOrIntWithinRange = (str, min = 0, max = 2147483647) => {\r\n if (str !== null && str.toString().trim().length > 0) {\r\n var intRegex = /^-?\\d+$/;\r\n if (!intRegex.test(str)) return false;\r\n\r\n var intVal = parseInt(str, 10);\r\n if (parseFloat(str) !== intVal || isNaN(intVal)) {\r\n return false;\r\n }\r\n\r\n if (intVal < min || intVal > max) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n};\r\n\r\nexport const createOffsetLimitFragment = (offset, limit) => {\r\n const offsetFragment = offset || offset === 0 ? '/' + offset : '';\r\n const limitFragment = limit || limit === 0 ? '/' + limit : '';\r\n return `${offsetFragment}${limitFragment}`;\r\n};\r\n\r\nexport function getPaging() {\r\n const query = new URLSearchParams(window.location.search);\r\n return { offset: toUInt(query.get('offset'), 0), limit: toUInt(query.get('limit'), 25) };\r\n}\r\n\r\nexport const isValidEmail = email => {\r\n if (!!email === false) {\r\n return false;\r\n }\r\n\r\n const at = email.lastIndexOf('@');\r\n return at !== -1 && !!email.substring(0, at).trim() === true && email.substring(at).includes('.');\r\n};\r\n","import axios from 'axios';\r\nimport { createOffsetLimitFragment } from 'utils/helper';\r\nimport { config } from 'utils/config';\r\n\r\nfunction generateRequestConfig(currentUser, options = { headers: {} }) {\r\n if (currentUser) {\r\n options.headers['Authorization'] = `Bearer ${currentUser.access_token}`;\r\n }\r\n\r\n if (localStorage.getItem('usePseudoTranslations') === 'true') {\r\n options.headers['Accept-Language'] = 'qps-ploc';\r\n }\r\n\r\n return options;\r\n}\r\n\r\nasync function httpPost(getUser, url, data, customOptions) {\r\n const currentUser = await getUser();\r\n const options = generateRequestConfig(currentUser, customOptions);\r\n const result = await axios.post(config.apiUrl + url, data, options);\r\n return result.data;\r\n}\r\n\r\nasync function httpGet(getUser, url, customOptions) {\r\n const currentUser = await getUser();\r\n const options = generateRequestConfig(currentUser, customOptions);\r\n const result = await axios.get(config.apiUrl + url, options);\r\n return result.data;\r\n}\r\n\r\nconst isEmailInPortal = (getUser, email) => httpGet(getUser, `/api/user/isemailinportal/${email}`);\r\nconst getRegistrationDetails = getUser => httpGet(getUser, '/api/user/RegistrationDetails');\r\n\r\nasync function postRegistrationDetails(getUser, regDTO) {\r\n const result = await httpPost(getUser, '/api/user/RegistrationDetails', regDTO);\r\n return result;\r\n}\r\n\r\nconst getUserDetails = getUser => httpGet(getUser, '/api/user/UserDetails');\r\nconst getRefreshedUserDetails = getUser =>\r\n httpGet(getUser, '/api/user/RefreshedUserDetails', {\r\n headers: { 'Cache-Control': 'no-cache' },\r\n });\r\n\r\nconst getSpaceAdmins = (getUser, spaceId, offset, limit) =>\r\n httpGet(getUser, `/api/space/${spaceId}/admins/${offset}/${limit}`);\r\n\r\nconst spaceUserSearch = (getUser, spaceId, searchTerm) =>\r\n httpGet(getUser, `/api/space/${spaceId}/usersearch/${searchTerm}`);\r\n\r\nconst spaceMemberSearch = (getUser, spaceId, searchTerm) =>\r\n httpPost(getUser, `/api/space/${spaceId}/membersearch`, { name: searchTerm });\r\n\r\nasync function getTeam(getUser, teamId) {\r\n const result = await httpGet(getUser, `/api/team/${teamId}`);\r\n return result;\r\n}\r\n\r\nasync function addMemberToTeam(getUser, userId, teamId) {\r\n const result = await httpPost(getUser, `/api/team/${teamId}/adduser`, { userId, teamId });\r\n return result;\r\n}\r\n\r\nasync function removeMemberFromTeam(getUser, userId, teamId) {\r\n const result = await httpPost(getUser, `/api/team/${teamId}/removeuser/${userId}`);\r\n return result;\r\n}\r\n\r\nasync function getTeamMembers(getUser, teamId, offset, limit) {\r\n const result = await httpGet(getUser, `/api/team/${teamId}/users${createOffsetLimitFragment(offset, limit)}`);\r\n return result;\r\n}\r\n\r\nconst getGroupMembers = (getUser, spaceId, groupId, offset, limit) =>\r\n httpGet(getUser, `/api/space/${spaceId}/group/${groupId}/members${createOffsetLimitFragment(offset, limit)}`);\r\n\r\nconst addGroupMember = (getUser, groupId, memberId, memberType, privLevel) =>\r\n httpPost(getUser, `/api/group/${groupId}/members/add`, {\r\n folderId: groupId,\r\n memberId: memberId,\r\n memberType: memberType,\r\n privLevel: privLevel,\r\n });\r\n\r\nasync function removeMemberFromGroup(getUser, groupId, permissionId) {\r\n const result = await httpPost(getUser, `/api/group/${groupId}/members/remove/${permissionId}`, {});\r\n return result;\r\n}\r\n\r\nasync function editGroupMember(getUser, groupId, permissionId, privLevel) {\r\n const result = await httpPost(getUser, `/api/group/${groupId}/members/edit`, {\r\n permissionId: permissionId,\r\n folderId: groupId,\r\n privLevel,\r\n });\r\n return result;\r\n}\r\n\r\nconst removeSelfFromSpace = (getUser, spaceId) => httpPost(getUser, `/api/space/${spaceId}/removeself`);\r\nconst getSpace = (getUser, spaceId) => httpGet(getUser, `/api/space/${spaceId}`);\r\n\r\nasync function getSpaces(getUser, offset, limit) {\r\n return await httpGet(getUser, `/api/groupmanagement/spaces/${offset}/${limit}`);\r\n}\r\n\r\nasync function getGroupContent(getUser, spaceId, groupId, offset, limit) {\r\n const result = await httpGet(\r\n getUser,\r\n `/api/space/${spaceId}/group-content/${groupId}${createOffsetLimitFragment(offset, limit)}`\r\n );\r\n return result;\r\n}\r\n\r\nconst addGroup = (getUser, parentGroupId, groupName) =>\r\n httpPost(getUser, `/api/group/${parentGroupId}/add`, { FolderId: parentGroupId, Name: groupName });\r\n\r\nconst editGroup = (getUser, groupId, newName) =>\r\n httpPost(getUser, `/api/group/${groupId}/edit`, { FolderId: groupId, Name: newName });\r\n\r\nconst removeGroup = (getUser, groupId) => httpPost(getUser, `/api/group/${groupId}/remove`);\r\n\r\nasync function getGroup(getUser, groupId) {\r\n const result = await httpGet(getUser, `/api/group/${groupId}`);\r\n return result;\r\n}\r\n\r\nconst getSpaceTeams = (getUser, spaceId, offset, limit) =>\r\n httpGet(getUser, `/api/space/${spaceId}/teams${createOffsetLimitFragment(offset, limit)}`);\r\n\r\nconst addTeam = (getUser, spaceId, teamName) => httpPost(getUser, `/api/space/${spaceId}/team/add`, { name: teamName });\r\n\r\nconst editTeam = (getUser, teamId, teamName) =>\r\n httpPost(getUser, `/api/team/${teamId}/edit`, { teamId: teamId, name: teamName });\r\n\r\nconst removeTeam = (getUser, teamId) => httpPost(getUser, `/api/team/${teamId}/remove`);\r\n\r\nconst getSpaceUsers = (getUser, spaceId, offset, limit) =>\r\n httpGet(getUser, `/api/space/${spaceId}/users${createOffsetLimitFragment(offset, limit)}`);\r\n\r\nconst addSpaceUser = (getUser, spaceId, email, isAdmin) =>\r\n httpPost(getUser, `/api/space/${spaceId}/adduser`, { email: email, isAdmin: isAdmin });\r\n\r\nconst editSpaceUser = (getUser, spaceId, userId, isAdmin) =>\r\n httpPost(getUser, `/api/space/${spaceId}/edituser`, {\r\n userId: userId,\r\n isAdmin: isAdmin,\r\n });\r\n\r\nconst removeSpaceUser = (getUser, spaceId, userId) =>\r\n httpPost(getUser, `/api/space/${spaceId}/removeuser`, { UserId: userId });\r\n\r\nasync function addSpace(getUser, name) {\r\n const result = await httpPost(getUser, '/api/groupmanagement/addspace', { name });\r\n return result;\r\n}\r\n\r\nasync function editSpace(getUser, spaceId, name) {\r\n const result = await httpPost(getUser, `/api/space/${spaceId}`, { name });\r\n return result;\r\n}\r\n\r\nasync function removeSpace(getUser, spaceId) {\r\n const result = await httpPost(getUser, `/api/space/${spaceId}/remove`);\r\n return result;\r\n}\r\n\r\nasync function getStatusForChanging(getUser, assessmentId) {\r\n const result = await httpGet(getUser, `/api/processassessment/getstatusforchanging/${assessmentId}`);\r\n return result;\r\n}\r\n\r\nasync function postStatus(getUser, assessmentId, status) {\r\n const result = await httpPost(getUser, `/api/processassessment/updatestatus`, { id: assessmentId, status });\r\n return result;\r\n}\r\n\r\nconst postFullAssessments = (getUser, request) => httpPost(getUser, `/api/assessments/full`, request);\r\n\r\nconst postAssessments = (getUser, request) => httpPost(getUser, `/api/assessments`, request);\r\n\r\nconst getFilterMetaData = getUser => httpGet(getUser, '/api/processassessment/getfiltermetadata');\r\n\r\nasync function exportAssessments(getUsers, filters) {\r\n return httpPost(getUsers, '/api/assessments/export', filters, { headers: {}, responseType: 'blob' });\r\n}\r\n\r\nconst getFormattedSummaryAnswers = (getUser, id) =>\r\n httpGet(getUser, `/api/processassessment/getformattedsummaryanswers/${id}`);\r\n\r\nconst getRecommendation = (getUser, assessmentId) =>\r\n httpGet(getUser, `/api/processassessment/getrecommendation/${assessmentId}`);\r\n\r\nasync function changeGroup(getUser, assessmentId, newGroupId) {\r\n const result = await httpPost(getUser, `/api/processassessment/changefolder`, {\r\n id: Number(assessmentId),\r\n folderId: newGroupId,\r\n });\r\n return result;\r\n}\r\n\r\nconst getNewAssessment = getUser => httpGet(getUser, '/api/processassessment');\r\nconst getAssessment = (getUser, id) => httpGet(getUser, `/api/processassessment/${id}`);\r\nconst getAssessmentMetaData = getUser => httpGet(getUser, '/api/processassessment/getmetadata');\r\nconst addAssessment = (getUser, groupId, assessment) => httpPost(getUser, `/api/group/${groupId}`, assessment);\r\nconst editAssessment = (getUser, assessment) => httpPost(getUser, '/api/processassessment', assessment);\r\n\r\nconst getNextMaintenanceTime = getUser => httpGet(getUser, '/api/maintenance/next');\r\n\r\nexport const assessments = {\r\n addAssessment,\r\n editAssessment,\r\n getStatusForChanging,\r\n postStatus,\r\n exportAssessments,\r\n getFormattedSummaryAnswers,\r\n getRecommendation,\r\n changeGroup,\r\n getNewAssessment,\r\n getAssessment,\r\n getAssessmentMetaData,\r\n};\r\n\r\nexport const user = {\r\n isEmailInPortal,\r\n getRegistrationDetails,\r\n postRegistrationDetails,\r\n getRefreshedUserDetails,\r\n getUserDetails,\r\n};\r\n\r\nexport const spaceManagement = {\r\n getSpace,\r\n getSpaces,\r\n getGroup,\r\n getGroupContent,\r\n getTeam,\r\n getTeamMembers,\r\n getSpaceTeams,\r\n getSpaceUsers,\r\n addSpace,\r\n addTeam,\r\n addGroup,\r\n addMemberToTeam,\r\n addSpaceUser,\r\n editSpace,\r\n editGroup,\r\n editTeam,\r\n editGroupMember,\r\n editSpaceUser,\r\n removeSpace,\r\n removeGroup,\r\n removeTeam,\r\n removeSpaceUser,\r\n removeMemberFromTeam,\r\n spaceUserSearch,\r\n spaceMemberSearch,\r\n getSpaceAdmins,\r\n removeSelfFromSpace,\r\n getGroupMembers,\r\n addGroupMember,\r\n removeMemberFromGroup,\r\n};\r\n\r\nexport const yourProcesses = {\r\n postFullAssessments,\r\n postAssessments,\r\n getFilterMetaData,\r\n};\r\n\r\nexport const maintenance = {\r\n getNextMaintenanceTime,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { AuthContext } from './AuthContext';\r\nimport { user as userApi } from 'utils/api';\r\n\r\nexport const UserContext = React.createContext();\r\n\r\nexport default function UserContextProvider({ children }) {\r\n const [user, setUser] = React.useState({\r\n isUserSet: false,\r\n isRegistered: false,\r\n isFirstVisit: false,\r\n details: {},\r\n });\r\n\r\n const { isLoggedIn, getUser } = React.useContext(AuthContext);\r\n\r\n React.useEffect(() => {\r\n const updateUser = response => {\r\n setUser({\r\n isUserSet: true,\r\n isRegistered: response.isRegistered,\r\n isFirstVisit: !response.isRegistered,\r\n details: response.details || {},\r\n });\r\n };\r\n\r\n if (isLoggedIn && !user.isUserSet) {\r\n userApi\r\n .getUserDetails(getUser)\r\n .then(response => updateUser(response))\r\n .catch(err => console.error(err));\r\n\r\n userApi\r\n .getRefreshedUserDetails(getUser)\r\n .then(response => updateUser(response))\r\n .catch(err => console.error(err));\r\n }\r\n }, [user, getUser, isLoggedIn]);\r\n\r\n return {children};\r\n}\r\n\r\nUserContextProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { IntlProvider } from 'react-intl';\r\nimport * as translations from 'translations';\r\n\r\nfunction getBrowserLanguage() {\r\n const browserLanguage = (navigator.languages && navigator.languages[0]) || navigator.language || 'en';\r\n\r\n return {\r\n locale: browserLanguage,\r\n language: browserLanguage.toLowerCase().split(/[_-]+/)[0],\r\n };\r\n}\r\n\r\n// TODO: Dynamically import required translations\r\nconst getMessages = language =>\r\n localStorage.getItem('usePseudoTranslations') === 'true'\r\n ? translations.pseudo\r\n : translations[language] ?? translations.en;\r\n\r\nexport default function LanguageProvider({ children }) {\r\n const browser = getBrowserLanguage();\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nLanguageProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css } from 'styled-components';\r\nimport AvatarProgress from '@blueprism/ui-core/components/AvatarProgress';\r\nimport DialogModal from '@blueprism/ui-core/components/DialogModal';\r\nimport Center from '@blueprism/ui-core/layout/Center';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport { globalSizes } from '@blueprism/ui-core/theme/units';\r\n\r\n//TODO: the all the \">\" entries below are a temporary fix - can be removed when dialogModal has been updated to remove headers and footers (and not be a Stack)\r\nconst DialogWithOverFlow = styled(DialogModal)`\r\n overflow: visible;\r\n position: relative;\r\n padding: 0;\r\n\r\n > footer,\r\n > header {\r\n display: none;\r\n }\r\n\r\n > div {\r\n margin-top: 0;\r\n }\r\n`;\r\n\r\nconst AvatarBox = styled(Box)(\r\n props => css`\r\n background: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 58 53' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M22.358 3.752L.54 28.938a2.22 2.22 0 0 0 .508 3.337l21.818 13.404a2.166 2.166 0 0 0 2.267 0l21.818-13.404a2.219 2.219 0 0 0 .508-3.337L25.641 3.752a2.167 2.167 0 0 0-3.283 0z' fill='${props.theme.color.paper.replace(\r\n '#',\r\n '%23'\r\n )}'/%3E%3C/svg%3E%0A\")\r\n 0.8rem 1rem no-repeat;\r\n `\r\n);\r\n\r\nconst AvatarHeaderCenter = styled(Center)`\r\n margin-top: -6rem;\r\n position: absolute;\r\n width: 100%;\r\n`;\r\n\r\nconst AvatarHeader = ({ avatarImage, percent }) => (\r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst TourContent = styled(Stack)(\r\n props => css`\r\n position: relative;\r\n top: 3rem;\r\n overflow: hidden;\r\n maxheight: calc(100vh - ${globalSizes.large} - (2 * ${globalSizes[props.padding]}));\r\n `\r\n);\r\n\r\n/**\r\n *\r\n * The AvatarProgessModal component is a Modal Dialog Box which presents an AvatarProgress\r\n * component above its content. This modal is typically to be used to present a number of\r\n * steps (in a \"wizard\" type format) with the progress bar showing the user's progression\r\n * through the process.\r\n *\r\n * It adds the following props to its children:\r\n *\r\n * * Height : passed to DialogBody component to render the height of the scrolling content within the dialog\r\n * * Hidden : tells the page to display or not depending upon whether it is the current active page of the wizard\r\n * * Gap - the gap prop passed to the Dialog - to be passed down to DialogBody/DialogFooter components\r\n * * Index - used for generating keys\r\n */\r\nexport default function AvatarProgressModal({\r\n avatarImage,\r\n children,\r\n height = '25rem',\r\n gap = 'base',\r\n onClose = () => {},\r\n onChange = () => {},\r\n overlay = false,\r\n padding = 'medium',\r\n page = 0,\r\n visible = true,\r\n width,\r\n ...rest\r\n}) {\r\n const percent = page === 0 ? 0 : Math.max(0, page / (React.Children.count(children) - 1)) * 100;\r\n const innerHeight = `calc(${height} - 3rem)`;\r\n\r\n return (\r\n \r\n \r\n \r\n {React.Children.map(children, (child, index) =>\r\n React.cloneElement(child, {\r\n height: innerHeight,\r\n hidden: page === index ? false : true,\r\n gap: gap,\r\n })\r\n )}\r\n \r\n \r\n );\r\n}\r\n\r\nAvatarProgressModal.propTypes = {\r\n /**\r\n * the image to be used in the AvatarProgress component\r\n */\r\n avatarImage: PropTypes.string,\r\n /**\r\n * the children of the Modal - these will be the \"pages\" of the wizard\r\n */\r\n children: PropTypes.node,\r\n /**\r\n * The gap between the vertical elements inside the modal (this is passed down to DioalogBody ands DialogFooter components)\r\n */\r\n gap: PropTypes.string,\r\n /**\r\n * The preferred Height of the Dialog (px/rem/%)\r\n */\r\n height: PropTypes.string,\r\n /**\r\n * passthrough to DialogModal\r\n */\r\n onChange: PropTypes.func,\r\n /**\r\n * function to padd on closing the dialog\r\n */\r\n onClose: PropTypes.func,\r\n /**\r\n * tell DialogModal whether or not to display an overlay\r\n */\r\n overlay: PropTypes.bool,\r\n /**\r\n * The padding for the Modal\r\n */\r\n padding: PropTypes.string,\r\n /**\r\n * the current page within the wizard - passed to children to indicate which to display\r\n */\r\n page: PropTypes.number,\r\n /**\r\n * indicate whether Dialog is visible or not\r\n */\r\n visible: PropTypes.bool,\r\n /**\r\n * The preferred width of the dialog (px/rem/%)\r\n */\r\n width: PropTypes.string,\r\n};\r\n","import React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport PropTypes from 'prop-types';\r\nimport { remValue } from '@blueprism/ui-core/utils/utils';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport { globalSizes } from '@blueprism/ui-core/theme/units';\r\n\r\nconst ContentWrapper = styled(Stack)`\r\n flex-grow: 1;\r\n overflow-y: auto;\r\n`;\r\n\r\nconst ContentSection = styled(Stack)(\r\n ({ contentHeight, contentWidth, fadeScroll, gap, theme }) => css`\r\n max-width: ${contentWidth};\r\n height: ${contentHeight};\r\n\r\n ${fadeScroll &&\r\n css`\r\n padding-bottom: ${remValue(theme.globalSizes[gap])}rem;\r\n `}\r\n `\r\n);\r\n/**\r\n *\r\n * The DialogBody component is a resizing container which is used to present the body of a dialog\r\n * Placed inside a Stack component it allows for the contents of the dialog to resize, whilst ensuring\r\n * the contents of a DialogFooter component also in the same dialog is always displayed\r\n */\r\nconst DialogBody = ({ children, contentWidth, contentHeight, fadeScroll, gap = 'base', ...rest }) => (\r\n \r\n \r\n {children}\r\n \r\n \r\n);\r\n\r\nDialogBody.propTypes = {\r\n /** Content of the component */\r\n children: PropTypes.node,\r\n /** Set the preferred height of the scrolling content (px/rem/percent)*/\r\n contentHeight: PropTypes.string,\r\n /** Set the preferred width of the scrolling content (px/rem/percent)*/\r\n contentWidth: PropTypes.string,\r\n /** Fade the base of the scrolling content box to make obvious that there is more content */\r\n fadeScroll: PropTypes.bool,\r\n /** Space between header / content /footer (Dialog is a styled Stack)\r\n *\r\n * choose from : [ none | smallest | tiny | xxs | xs | small | base | medium | large | xl | xxl | largest ] */\r\n gap: PropTypes.oneOf(Object.keys(globalSizes)),\r\n};\r\n\r\nexport default DialogBody;\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css } from 'styled-components';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\n\r\nconst StyledText = styled(Text)(\r\n props => css`\r\n font-size: ${props.theme.font.size.h4}rem;\r\n line-height: 1.2;\r\n `\r\n);\r\n\r\nconst DialogTitle = ({ children, ...rest }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nDialogTitle.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n\r\nexport default DialogTitle;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css } from 'styled-components';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\nimport { remValue, hexToRGBA } from '@blueprism/ui-core/utils/utils';\r\nimport { globalSizes } from '@blueprism/ui-core/theme/units';\r\n\r\nconst FooterBox = styled(Box)(\r\n ({ fadeScroll, theme, gap }) => css`\r\n ${fadeScroll &&\r\n css`\r\n margin-top: 0;\r\n position: relative;\r\n\r\n &::before {\r\n position: absolute;\r\n top: ${0 - remValue(theme.globalSizes[gap])}rem;\r\n height: ${remValue(theme.globalSizes[gap])}rem;\r\n left: 0;\r\n width: 100%;\r\n background: linear-gradient(\r\n to bottom,\r\n ${hexToRGBA(theme.color.paper, 0)} 0,\r\n ${hexToRGBA(theme.color.paper, 1)} ${remValue(theme.globalSizes[gap])}rem\r\n )\r\n transparent;\r\n content: ' ';\r\n }\r\n `}\r\n `\r\n);\r\n/**\r\n *\r\n * The DialogFooter component renders the footer of the Dialog - typically used to display action buttons - the\r\n * body of the dialog scrolls to allow the footer of the dialog to always be visible.\r\n */\r\nconst DialogFooter = ({ children, fadeScroll, gap }) => (\r\n \r\n {children}\r\n \r\n);\r\n\r\nDialogFooter.propTypes = {\r\n /** The children of the footer - usually buttons, but images and/or other decorative elements can be placed in the footer */\r\n children: PropTypes.node,\r\n /** Places a gradient element over the scrolling body elements */\r\n fadeScroll: PropTypes.bool,\r\n /** The gap specified in the dialog can be passed in to ensure consistent spacing between elements */\r\n gap: PropTypes.oneOf(Object.keys(globalSizes)),\r\n};\r\n\r\nexport default DialogFooter;\r\n","import * as React from 'react';\r\nimport styled, { keyframes } from 'styled-components';\r\n\r\nconst translate = (from = [0, 0], to = [0, 0]) => keyframes`\r\n from {\r\n transform: translate(${from[0]}px, ${from[1]}px);\r\n }\r\n\r\n to {\r\n transform: translateX(${to[0]}px, ${to[1]}px);\r\n }\r\n`;\r\n\r\nconst translateX = (from = 0, to = 0) => keyframes`\r\n from {\r\n transform: translateX(${from}px);\r\n }\r\n\r\n to {\r\n transform: translateX(${to}px);\r\n }\r\n`;\r\n\r\nconst translateY = (from = 0, to = 0) => keyframes`\r\n from {\r\n transform: translateY(${from}px);\r\n }\r\n\r\n to {\r\n transform: translateY(${to}px);\r\n }\r\n`;\r\n\r\nconst dashOffset = (from = 0, to = 0) => keyframes`\r\n from {\r\n stroke-dashoffset: ${from};\r\n }\r\n\r\n to {\r\n stroke-dashoffset: ${to};\r\n }\r\n`;\r\n\r\nconst Container = styled.div`\r\n width: 100%;\r\n height: 100vh;\r\n overflow: hidden;\r\n`;\r\n\r\nconst Svg = styled.svg`\r\n fill-rule: evenodd;\r\n stroke-linecap: round;\r\n stroke-linejoin: round;\r\n clip-rule: evenodd;\r\n width: 100%;\r\n height: 100%;\r\n background: #e1f4f9;\r\n`;\r\n\r\nconst TrackPaths = styled.g`\r\n path {\r\n stroke: #80cfeb;\r\n stroke-width: 15;\r\n fill: none;\r\n }\r\n\r\n path:nth-of-type(1) {\r\n animation: 8s ease-in-out infinite alternate ${translateX(-30, 30)};\r\n }\r\n`;\r\n\r\nconst BlueCircles = styled.g`\r\n path {\r\n fill: #b1e2f2;\r\n }\r\n\r\n path:nth-of-type(1) {\r\n animation: 11s ease-in-out infinite alternate ${translateY(-80, 20)};\r\n }\r\n\r\n path:nth-of-type(2) {\r\n animation: 10s ease-in-out infinite alternate ${translateY(-120, 50)};\r\n }\r\n\r\n path:nth-of-type(3) {\r\n animation: 12s ease-in-out infinite alternate ${translate([40, 40], [-40, -40])};\r\n }\r\n\r\n path:nth-of-type(4) {\r\n animation: 10s ease-in-out infinite alternate ${translateY(0, 160)};\r\n }\r\n`;\r\n\r\nconst YellowCircles = styled.g`\r\n path {\r\n fill: #f9f0df;\r\n }\r\n\r\n path:nth-of-type(1) {\r\n animation: 10s ease-in-out infinite alternate ${translate([40, 40], [-40, -40])};\r\n }\r\n\r\n path:nth-of-type(2) {\r\n animation: 9s ease-in-out infinite alternate ${translate([160, 160], [0, 0])};\r\n }\r\n`;\r\n\r\nconst lineBlockFirst = keyframes`\r\n 0%,\r\n 50%,\r\n 100% {\r\n transform: translateX(0);\r\n }\r\n\r\n 25% {\r\n transform: translateX(40px);\r\n }\r\n`;\r\n\r\nconst lineBlockSecond = keyframes`\r\n 0%,\r\n 50%,\r\n 100% {\r\n transform: translateX(0);\r\n }\r\n\r\n 75% {\r\n transform: translateX(40px);\r\n }\r\n`;\r\n\r\nconst LineBlock = styled.g`\r\n path {\r\n stroke: #18a1db;\r\n stroke-width: 12;\r\n fill: none;\r\n }\r\n\r\n path:nth-of-type(1),\r\n path:nth-of-type(3),\r\n path:nth-of-type(5) {\r\n animation: 20s ease-in-out infinite alternate ${lineBlockFirst};\r\n }\r\n\r\n path:nth-of-type(2),\r\n path:nth-of-type(4),\r\n path:nth-of-type(6) {\r\n animation: 20s ease-in-out infinite alternate ${lineBlockSecond};\r\n }\r\n`;\r\n\r\nconst Icons = styled.g`\r\n path {\r\n stroke: #19a2db;\r\n fill: none;\r\n stroke-width: 18;\r\n }\r\n\r\n path:nth-of-type(1),\r\n path:nth-of-type(5),\r\n path:nth-of-type(6) {\r\n fill: #19a2db;\r\n stroke-width: 0;\r\n }\r\n\r\n path:nth-of-type(4) {\r\n stroke-width: 30;\r\n }\r\n\r\n path:nth-of-type(7) {\r\n fill: #80cfeb;\r\n stroke-width: 0;\r\n }\r\n`;\r\n\r\nconst FilterLines = styled.g`\r\n fill: none;\r\n stroke: #80cfeb;\r\n stroke-dasharray: 30 30;\r\n stroke-width: 15;\r\n animation: 5s linear infinite ${dashOffset(0, -60)};\r\n`;\r\n\r\nconst UnderMagnifyingGlass = styled.path`\r\n fill: none;\r\n stroke: #80cfeb;\r\n stroke-dasharray: 0 40;\r\n stroke-width: 30;\r\n animation: 2s linear infinite ${dashOffset(0, -40)};\r\n clip-path: url(#clipPath);\r\n`;\r\n\r\nconst Crosses = styled.g`\r\n fill: #b2e2f3;\r\n`;\r\n\r\nconst Ticks = styled.g`\r\n fill: none;\r\n stroke: #b2e2f3;\r\n stroke-linecap: butt;\r\n stroke-linejoin: miter;\r\n stroke-width: 18;\r\n`;\r\n\r\nconst AnimatedBackground = ({ children }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n);\r\n\r\nexport default AnimatedBackground;\r\n","import React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport AvatarProgressModal from '../components/AvatarProgressModal';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport ArrowRight from '@blueprism/ui-icons/ArrowRight';\r\nimport DialogBody from 'components/DialogBody';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport DialogFooter from 'components/DialogFooter';\r\nimport AnimatedBackground from 'components/AnimatedBackground';\r\n\r\nexport default function Login() {\r\n const { login } = React.useContext(AuthContext);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useEffect, useContext } from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\n\r\nconst OidcCallback = props => {\r\n const { userManager, recheckLoggedInState } = useContext(AuthContext);\r\n\r\n useEffect(() => {\r\n userManager\r\n .signinRedirectCallback()\r\n .then(user => recheckLoggedInState())\r\n .catch(error => {\r\n console.log(error);\r\n window.location.href = '/login';\r\n });\r\n }, [userManager, recheckLoggedInState]);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default OidcCallback;\r\n","import React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport { config } from 'utils/config';\r\n\r\nexport default function OidcLogoutCallback() {\r\n const { userManager } = React.useContext(AuthContext);\r\n\r\n React.useEffect(() => {\r\n userManager\r\n .signoutRedirectCallback()\r\n .then(() => (window.location.href = config.logoutUrl))\r\n .catch(error => console.log(error));\r\n }, [userManager]);\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { Box, Center, Text, Link, Stack } from '@blueprism/ui-core';\r\n\r\nconst HiddenOverflowStack = styled(Stack)`\r\n overflow: hidden;\r\n height: 100vh;\r\n`;\r\n\r\nconst ErrorPageTemplate = ({ errorMessageText = '', headingText = '', image = null, linkText = '', linkHref = '' }) => (\r\n \r\n
\r\n \r\n {headingText}\r\n \r\n \r\n {errorMessageText} {linkText}\r\n \r\n \r\n {image}\r\n \r\n
\r\n
\r\n);\r\n\r\nErrorPageTemplate.propTypes = {\r\n errorMessageText: PropTypes.string.isRequired,\r\n headingText: PropTypes.string.isRequired,\r\n image: PropTypes.node,\r\n linkText: PropTypes.string,\r\n linkHref: PropTypes.string,\r\n};\r\n\r\nexport default ErrorPageTemplate;\r\n","import * as React from 'react';\r\nimport styled, { keyframes } from 'styled-components';\r\n\r\nconst primsy = keyframes`\r\n 0%, 66%, 81%, 100% {\r\n transform: rotate(0deg);\r\n }\r\n\r\n 75%, 80% {\r\n transform: rotate(5deg);\r\n }\r\n`;\r\n\r\nconst primsyShadow = keyframes`\r\n 0%, 66%, 81%, 100% {\r\n transform: scale(1);\r\n }\r\n\r\n 75%, 80% {\r\n transform: scale(1.2);\r\n }\r\n`;\r\n\r\nconst blueArmsNudge = keyframes`\r\n 0%, 60%, 67%, 100% {\r\n transform: translateY(0);\r\n }\r\n\r\n 62%, 65% {\r\n transform: translateY(-15px);\r\n }\r\n`;\r\n\r\nconst blueFace = keyframes`\r\n 0%, 17%, 28%, 37%, 48%, 100% {\r\n transform: translate(0, 0);\r\n }\r\n\r\n 20%, 25% {\r\n transform: translate(-10px, -2px);\r\n }\r\n\r\n 40%, 45% {\r\n transform: translate(10px, -2px);\r\n }\r\n`;\r\n\r\nconst Blue = styled.g`\r\n fill: #2e8ecb;\r\n\r\n path:nth-of-type(3) {\r\n animation: ${blueArmsNudge} 10s ease-out infinite;\r\n }\r\n\r\n path:nth-of-type(6) {\r\n animation: ${blueFace} 10s ease infinite;\r\n }\r\n`;\r\n\r\nconst Plant = styled.g`\r\n fill: #fff;\r\n fill-rule: evenodd;\r\n stroke: #0a5280;\r\n stroke-width: 4;\r\n`;\r\n\r\nconst Shadows = styled.g`\r\n fill: #d9f3ff;\r\n opacity: 0.5;\r\n\r\n ellipse:nth-of-type(2) {\r\n animation: ${primsyShadow} 10s ease infinite;\r\n transform-origin: 70% 90%;\r\n }\r\n`;\r\n\r\nconst Primsy = styled.g`\r\n animation: ${primsy} 10s ease infinite;\r\n transform-origin: 70% 85%;\r\n`;\r\n\r\nexport const NotFound = () => (\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\n\r\nexport const ServerError = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nconst LockPrism = styled.g`\r\n fill: #7d3354;\r\n`;\r\n\r\nconst Shadows = styled.g`\r\n fill: #d9f3ff;\r\n`;\r\n\r\nconst Blue = styled.g`\r\n fill: #2e8ecb;\r\n`;\r\n\r\nexport const Unauthorised = () => (\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import React from 'react';\r\nimport ErrorPageTemplate from './ErrorPageTemplate';\r\nimport { useIntl } from 'react-intl';\r\nimport { ServerError } from '../../components/ErrorSvgs';\r\n\r\nconst email = 'support@blueprism.com';\r\nconst subject = '500%20Error%20from%20the%20browser';\r\n\r\nexport default function ServerErrorPage() {\r\n const intl = useIntl();\r\n\r\n return (\r\n }\r\n />\r\n );\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Route, Redirect, Switch } from 'react-router-dom';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport Login from 'pages/Login';\r\nimport OidcCallback from 'pages/OidcCallback';\r\nimport OidcLogoutCallback from 'pages/OidcLogoutCallback';\r\nimport ServerErrorPage from 'pages/Errors/ServerErrorPage';\r\n\r\nexport default function AuthenticationGuard({ children }) {\r\n const { isLoggedIn, login } = React.useContext(AuthContext);\r\n\r\n if (isLoggedIn) {\r\n return children;\r\n }\r\n\r\n return (\r\n \r\n } />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nAuthenticationGuard.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport { useIntl } from 'react-intl';\r\nimport PropTypes from 'prop-types';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport DialogBody from '../../components/DialogBody';\r\nimport DialogFooter from '../../components/DialogFooter';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport RadioButtonGroup from '@blueprism/ui-core/components/RadioButtonGroup';\r\nimport RadioButton from '@blueprism/ui-core/components/RadioButton';\r\nimport ArrowLeft from '@blueprism/ui-icons/ArrowLeft';\r\nimport ArrowRight from '@blueprism/ui-icons/ArrowRight';\r\n\r\nexport default function RegistrationQuestionRadio({\r\n index,\r\n fieldName,\r\n options = {},\r\n data = {},\r\n isInError = () => {},\r\n getErrorMessage = () => {},\r\n hidden = false,\r\n onChange = () => {},\r\n onNextClick = () => {},\r\n onPreviousClick = () => {},\r\n onValidate = () => {},\r\n}) {\r\n const intl = useIntl();\r\n const handleChange = event => onChange(fieldName, event.target.value);\r\n\r\n async function handleNextClick(event) {\r\n try {\r\n await onValidate(fieldName, false);\r\n } catch (err) {\r\n return;\r\n }\r\n\r\n onNextClick(event);\r\n }\r\n return hidden ? null : (\r\n <>\r\n \r\n \r\n \r\n {Object.entries(options).map(([key, val]) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nRegistrationQuestionRadio.propTypes = {\r\n index: PropTypes.number.isRequired,\r\n fieldName: PropTypes.string.isRequired,\r\n options: PropTypes.object,\r\n data: PropTypes.object,\r\n getErrorMessage: PropTypes.func,\r\n isInError: PropTypes.func,\r\n onChange: PropTypes.func,\r\n onNextClick: PropTypes.func,\r\n onPreviousClick: PropTypes.func,\r\n onValidate: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport { useIntl } from 'react-intl';\r\nimport PropTypes from 'prop-types';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport DialogBody from '../../components/DialogBody';\r\nimport DialogFooter from '../../components/DialogFooter';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport DatalistIndexed from '@blueprism/ui-core/components/DatalistIndexed';\r\nimport Option from '@blueprism/ui-core/components/Option';\r\nimport ArrowLeft from '@blueprism/ui-icons/ArrowLeft';\r\nimport ArrowRight from '@blueprism/ui-icons/ArrowRight';\r\n\r\nexport default function RegistrationQuestionDataList({\r\n index,\r\n fieldName,\r\n onChange = () => {},\r\n onPreviousClick = () => {},\r\n onValidate = () => {},\r\n data = {},\r\n options = {},\r\n isInError = () => {},\r\n getErrorMessage = () => {},\r\n hidden = false,\r\n}) {\r\n const intl = useIntl();\r\n const handleChanges = event => onChange(fieldName, event.target.value);\r\n\r\n async function handleNextClick() {\r\n try {\r\n await onValidate(fieldName, true);\r\n } catch (err) {\r\n return;\r\n }\r\n }\r\n\r\n return hidden ? null : (\r\n <>\r\n \r\n \r\n \r\n {Object.entries(options).map(([key, value]) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nRegistrationQuestionDataList.propTypes = {\r\n index: PropTypes.number.isRequired,\r\n fieldName: PropTypes.string.isRequired,\r\n onPreviousPage: PropTypes.func,\r\n handleChange: PropTypes.func,\r\n onValidate: PropTypes.func,\r\n data: PropTypes.object,\r\n options: PropTypes.object,\r\n getErrorMessage: PropTypes.func,\r\n isInError: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport { UserContext } from 'contexts/UserContext';\r\nimport PropTypes from 'prop-types';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport DialogBody from '../../components/DialogBody';\r\nimport DialogFooter from '../../components/DialogFooter';\r\nimport DialogTitle from '../../components/DialogTitle';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport ArrowRight from '@blueprism/ui-icons/ArrowRight';\r\n\r\nexport default function AccessRequest({ index, hidden = false, onNextClick = () => {} }) {\r\n const { user } = React.useContext(UserContext);\r\n return hidden ? null : (\r\n <>\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nAccessRequest.propTypes = {\r\n index: PropTypes.number.isRequired,\r\n onNextClick: PropTypes.func,\r\n};\r\n","import React, { useContext, useState, useEffect } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { UserContext } from 'contexts/UserContext';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport AvatarProgressModal from '../../components/AvatarProgressModal';\r\nimport RegistrationQuestionRadio from 'pages/RegistrationQuestions/RegistrationQuestionRadio';\r\nimport RegistrationQuestionDataList from 'pages/RegistrationQuestions/RegistrationQuestionDataList';\r\nimport AccessRequest from 'pages/RegistrationQuestions/AccessRequest';\r\nimport AnimatedBackground from 'components/AnimatedBackground';\r\nimport { config } from 'utils/config';\r\nimport { user as userApi } from 'utils/api';\r\n\r\nexport default function RegistrationQuestions() {\r\n const history = useHistory();\r\n const { user, setUser } = useContext(UserContext);\r\n const { getUser } = useContext(AuthContext);\r\n const [pageIndex, setPageIndex] = React.useState(0);\r\n const [errors, setErrors] = useState({});\r\n\r\n const [registrationOptions, setRegistrationOptions] = useState({});\r\n const [registrationDetails, setRegistrationDetails] = useState({\r\n relationshipWithBP: {},\r\n reasonForPDTUse: {},\r\n heardAboutPDTFrom: {},\r\n industry: {},\r\n });\r\n\r\n useEffect(() => {\r\n userApi.getRegistrationDetails(getUser).then(response => {\r\n setRegistrationDetails({ ...response.details });\r\n setRegistrationOptions(response.options);\r\n });\r\n }, [getUser]);\r\n\r\n async function handleValidation(fieldName, checkIsRegistered) {\r\n const regDTO = {\r\n [fieldName]: registrationDetails[fieldName],\r\n returnTrueIfRegistered: checkIsRegistered,\r\n };\r\n\r\n try {\r\n const response = await userApi.postRegistrationDetails(getUser, regDTO);\r\n setErrors({});\r\n if (checkIsRegistered && response) {\r\n setUser(prevUser => ({ ...prevUser, isRegistered: true, isFirstVisit: true }));\r\n history.push('/');\r\n }\r\n } catch (err) {\r\n setErrors(err.response.data);\r\n throw err;\r\n }\r\n }\r\n\r\n const getErrorMessage = fieldName => errors[fieldName];\r\n\r\n const isInError = fieldName => errors[fieldName] != null && errors[fieldName].length > 0;\r\n\r\n const handleChange = (key, value) => {\r\n setRegistrationDetails(prevRegistrationDetails => ({ ...prevRegistrationDetails, [key]: value }));\r\n };\r\n\r\n const handleNextClick = newIndex => {\r\n setPageIndex(newIndex);\r\n };\r\n\r\n const handlePreviousClick = newIndex => {\r\n setErrors({});\r\n setPageIndex(newIndex);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport RegistrationQuestions from 'pages/RegistrationQuestions/RegistrationQuestions';\r\nimport { UserContext } from 'contexts/UserContext';\r\n\r\nexport default function RegistrationGuard({ children }) {\r\n const { user } = React.useContext(UserContext);\r\n\r\n if (!user.isUserSet) {\r\n return null;\r\n }\r\n\r\n if (user.isRegistered) {\r\n return children;\r\n }\r\n\r\n return ;\r\n}\r\n\r\nRegistrationGuard.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport ArrowRight from '@blueprism/ui-icons/ArrowRight';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport DialogBody from '../DialogBody';\r\nimport DialogFooter from '../DialogFooter';\r\nimport { globalSizes } from '@blueprism/ui-core/theme/units';\r\n\r\n/**\r\n *\r\n * A TourPage component is a \"Wizard page\" for use within an AvatarProgressModal\r\n *\r\n * it handles its visibility based upon the \"hidden\" prop - which is passed in and calulated within the AvatarProgressModal\r\n */\r\nconst TourPage = ({\r\n description = '',\r\n gap = 'base',\r\n hidden = false,\r\n isLast = false,\r\n onClose = () => {},\r\n onContinue = () => {},\r\n preTitle = '',\r\n title = '',\r\n}) =>\r\n hidden ? null : (\r\n <>\r\n \r\n \r\n {preTitle}\r\n {title}\r\n \r\n \r\n {description}\r\n \r\n \r\n \r\n \r\n \r\n {isLast ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n\r\nTourPage.propTypes = {\r\n /**\r\n * The bulk of the dialog's body content\r\n */\r\n description: PropTypes.string,\r\n /**\r\n * the vertical spacing between the page's child elements\r\n */\r\n gap: PropTypes.oneOf(Object.keys(globalSizes)),\r\n /**\r\n * Height of the content - this is passed from the Dialog and used to define the height of the content Stack, which in turn defines when the Body content shoudl scroll\r\n */\r\n height: PropTypes.string,\r\n /**\r\n * is this the last page in the wizard? - can be used to display a different button\r\n */\r\n isLast: PropTypes.bool,\r\n /**\r\n * show this child or not\r\n */\r\n hidden: PropTypes.bool,\r\n /**\r\n * callback for skip/cancel buttons\r\n */\r\n onClose: PropTypes.func,\r\n /** Callback for next buttons */\r\n onContinue: PropTypes.func,\r\n /** used in this instance as our content has two titles - this is the \"little one\" */\r\n preTitle: PropTypes.string,\r\n /** The main title for the Wizard page */\r\n title: PropTypes.string,\r\n};\r\n\r\nexport default TourPage;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from 'react-intl';\r\nimport TourPage from './TourPage';\r\nimport AvatarProgressModal from 'components/AvatarProgressModal';\r\nimport { config } from 'utils/config';\r\nexport default function Tour({ visible = false, avatarImage, firstName = '', onClose = () => {} }) {\r\n const intl = useIntl();\r\n const [pageIndex, setPageIndex] = React.useState(0);\r\n\r\n React.useEffect(() => {\r\n if (visible) {\r\n setPageIndex(0);\r\n }\r\n }, [visible]);\r\n\r\n function handleOnCloseClick() {\r\n onClose();\r\n }\r\n\r\n function handleOnContinueClick() {\r\n setPageIndex(pageIndexValue => pageIndexValue + 1);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nTour.propTypes = {\r\n visible: PropTypes.bool,\r\n avatarImage: PropTypes.string,\r\n firstName: PropTypes.string,\r\n onClose: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css } from 'styled-components';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport Link from '@blueprism/ui-core/components/Link';\r\nimport { UserContext } from 'contexts/UserContext';\r\nimport Tour from '../Tour';\r\nimport { config } from 'utils/config';\r\n\r\nconst List = styled.ul`\r\n list-style: none;\r\n margin: 0;\r\n padding: 1rem;\r\n`;\r\n\r\nconst ListItem = styled.li(\r\n props => css`\r\n padding: 0.5rem 0;\r\n text-indent: 1rem;\r\n transition: text-indent 0.5s ease-in-out, opacity 0.4s ease-out;\r\n ${props.collapsed &&\r\n css`\r\n text-indent: -30rem;\r\n opacity: 0;\r\n `}\r\n `\r\n);\r\n\r\nexport default function LinkList({ collapsed, avatarImage, firstName }) {\r\n const { user } = React.useContext(UserContext);\r\n const [tourModalVisible, setTourModalVisible] = React.useState(user.isFirstVisit);\r\n\r\n function handleTakeTourClick(event) {\r\n event.preventDefault();\r\n setTourModalVisible(true);\r\n }\r\n\r\n function handleTourModalClose() {\r\n setTourModalVisible(false);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nLinkList.propTypes = {\r\n collapsed: PropTypes.bool,\r\n avatarImage: PropTypes.string,\r\n firstName: PropTypes.string,\r\n};\r\n","import React from 'react';\r\n\r\nconst PATLogo = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default PATLogo;\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css } from 'styled-components';\r\nimport { Row, Box, Text } from '@blueprism/ui-core';\r\nimport PATLogo from 'components/Sidebar/PATLogo';\r\n\r\nconst Container = styled(Box)`\r\n position: relative;\r\n height: 5.25rem;\r\n width: 100%;\r\n`;\r\n\r\nconst Svg = styled.svg(\r\n props => css`\r\n position: absolute;\r\n transition: all 250ms ease;\r\n bottom: 0;\r\n z-index: -1;\r\n ${props.collapsed\r\n ? css`\r\n width: 80px;\r\n height: 64px;\r\n `\r\n : css`\r\n width: 100px;\r\n height: 92px;\r\n `}\r\n `\r\n);\r\n\r\nconst Title = styled(Text)(\r\n props => css`\r\n padding-left: 2rem;\r\n white-space: nowrap;\r\n transition: opacity 250ms ease;\r\n opacity: ${props.collapsed ? '0' : '1'};\r\n `\r\n);\r\n\r\nconst StyledRow = styled(Row)(\r\n props => css`\r\n height: 100%;\r\n align-items: center;\r\n padding: 1rem 0 0 0.5rem;\r\n\r\n svg {\r\n transition: all 250ms ease;\r\n width: ${props.collapsed ? '32px' : '48px'};\r\n padding-top: ${props.collapsed ? '1rem' : '0'};\r\n flex-shrink: 0;\r\n }\r\n `\r\n);\r\n\r\nexport default function SidebarFooter({ collapsed = false, appName }) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {appName}\r\n \r\n \r\n );\r\n}\r\n\r\nSidebarFooter.propTypes = {\r\n collapsed: PropTypes.bool,\r\n appName: PropTypes.string.isRequired,\r\n};\r\n","import React from 'react';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport SideBarNavItem from '@blueprism/ui-core/components/SideBarNavItem';\r\nimport SideBarNavItemContainer from '@blueprism/ui-core/components/SideBarNavItemContainer';\r\nimport { default as PdtSidebar } from '@blueprism/ui-core/components/SideBar';\r\nimport NavHeader from '@blueprism/ui-core/components/NavHeader';\r\nimport Menu from '@blueprism/ui-core/components/Menu';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport { Processes, Tick, Space } from '@blueprism/ui-icons';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport { UserContext } from 'contexts/UserContext';\r\nimport LinkList from './LinkList';\r\nimport SidebarFooter from 'components/Sidebar/SidebarFooter';\r\nimport { config } from 'utils/config';\r\n\r\nexport default function Sidebar() {\r\n const [collapsed, setCollapsed] = React.useState(false);\r\n const headerRef = React.useRef();\r\n const [menuVisible, setMenuVisible] = React.useState(false);\r\n const { logout } = React.useContext(AuthContext);\r\n const { user } = React.useContext(UserContext);\r\n const intl = useIntl();\r\n\r\n function handleMenuClose() {\r\n setMenuVisible(false);\r\n }\r\n\r\n function handleAvatarClick() {\r\n setMenuVisible(menuVisibleValue => !menuVisibleValue);\r\n }\r\n\r\n function handleEditProfileClick() {\r\n window.location.href = config.editProfileUrl(user.details.externalUserId);\r\n }\r\n\r\n function handleLogoutClick() {\r\n logout();\r\n }\r\n\r\n const onChange = () => {\r\n setCollapsed(!collapsed);\r\n };\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n }\r\n />\r\n } />\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import { useEffect, useContext } from 'react';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\n\r\nexport default function SilentRenew() {\r\n const { userManager } = useContext(AuthContext);\r\n\r\n useEffect(() => {\r\n userManager.signinSilentCallback().catch(error => console.log(error));\r\n });\r\n\r\n return null;\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { default as UiCoreLink } from '@blueprism/ui-core/components/Link';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nexport default function Link({ children, href = '', useReplace = false, ...rest }) {\r\n const history = useHistory();\r\n\r\n function handleOnClick(event) {\r\n event.preventDefault();\r\n if (useReplace) {\r\n history.replace(href);\r\n return;\r\n }\r\n\r\n history.push(href);\r\n }\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nLink.propTypes = {\r\n /** The content describing the `Link`. This is usually a string but can also be a component tree. */\r\n children: PropTypes.node.isRequired,\r\n useReplace: PropTypes.bool,\r\n /** The URL destination. */\r\n href: PropTypes.string,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from 'react-intl';\r\nimport PagingToolbar from '@blueprism/ui-core/components/PagingToolbar';\r\n\r\nexport default function TablePagination({ itemName, count, offset, limit, onLimitChange, onNextData, onPreviousData }) {\r\n const intl = useIntl();\r\n const cantGoBack = offset <= 0;\r\n const cantGoForward = offset + limit >= count;\r\n\r\n function handleChange(event) {\r\n onLimitChange(Number(event.target.value));\r\n }\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nTablePagination.propTypes = {\r\n itemName: PropTypes.string.isRequired,\r\n count: PropTypes.number.isRequired,\r\n offset: PropTypes.number.isRequired,\r\n limit: PropTypes.number.isRequired,\r\n limitLabelId: PropTypes.string.isRequired,\r\n onLimitChange: PropTypes.func.isRequired,\r\n onNextData: PropTypes.func.isRequired,\r\n onPreviousData: PropTypes.func.isRequired,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css } from 'styled-components';\r\nimport Avatar from '@blueprism/ui-core/components/Avatar';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Box from '@blueprism/ui-core/layout/Row';\r\n\r\nconst UserNameText = styled(Text)(\r\n props => css`\r\n font-weight: ${props.theme.font.weight.bold};\r\n `\r\n);\r\n\r\nconst AvatarContainer = styled(Box)`\r\n flex-shrink: 0;\r\n`;\r\n\r\nconst User = ({ avatarImage, userName }) => (\r\n \r\n \r\n \r\n \r\n {userName}\r\n \r\n);\r\n\r\nUser.propTypes = {\r\n avatarImage: PropTypes.string,\r\n userName: PropTypes.string,\r\n};\r\n\r\nexport default User;\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from 'react-intl';\r\nimport { useHistory } from 'react-router-dom';\r\nimport Table from '@blueprism/ui-core/components/Table';\r\nimport TablePagination from 'components/TablePagination';\r\nimport User from 'components/User';\r\nimport { config } from 'utils/config';\r\n\r\nexport default function TeamUsers({\r\n users = [],\r\n count = 0,\r\n selectedRowIds = [],\r\n onSelectionChanged = () => {},\r\n onPaginationChanged = () => {},\r\n teamId,\r\n offset,\r\n limit,\r\n}) {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n\r\n const rowData = React.useMemo(\r\n () =>\r\n users.map(user => ({\r\n id: user.userId.toString(),\r\n user: (\r\n \r\n {`${user.name}${user.isCurrentUser ? ` (${intl.formatMessage({ id: 'memberYou' })})` : ''}`}\r\n \r\n ),\r\n })),\r\n [intl, users]\r\n );\r\n\r\n const columns = React.useMemo(\r\n () => [\r\n {\r\n header: intl.formatMessage({ id: 'teamMembersColumn1' }),\r\n accessor: 'user',\r\n },\r\n ],\r\n [intl]\r\n );\r\n\r\n function handlePagingUrlChange({ newOffset, newLimit }) {\r\n history.push(`/your-spaces/team/${teamId}/users/${Math.max(0, newOffset)}/${Math.max(0, newLimit)}`);\r\n onPaginationChanged();\r\n }\r\n\r\n function handlePagingPreviousClick() {\r\n handlePagingUrlChange({ newOffset: offset - limit, newLimit: limit });\r\n }\r\n\r\n function handlePagingNextClick() {\r\n handlePagingUrlChange({ newOffset: offset + limit, newLimit: limit });\r\n }\r\n\r\n function handlePagingLimitChange(value) {\r\n // TODO: Should probably debounce this!\r\n handlePagingUrlChange({ newOffset: offset, newLimit: value });\r\n }\r\n\r\n return (\r\n <>\r\n {users && (\r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n\r\nTeamUsers.propTypes = {\r\n users: PropTypes.array,\r\n count: PropTypes.number,\r\n onSelectionChanged: PropTypes.func,\r\n teamId: PropTypes.number,\r\n offset: PropTypes.number,\r\n limit: PropTypes.number,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css, ThemeContext } from 'styled-components';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Alert from '@blueprism/ui-icons/Alert';\r\n\r\nconst Container = styled(Row)(\r\n ({ theme }) => css`\r\n border-radius: 0.125rem;\r\n align-items: center;\r\n background: ${theme.color.warning};\r\n color: white;\r\n padding: ${theme.globalSizes.xs};\r\n align-items: flex-start;\r\n\r\n svg {\r\n margin-right: ${theme.globalSizes.xs};\r\n }\r\n `\r\n);\r\n\r\nexport default function ErrorMessage({ label }) {\r\n const theme = React.useContext(ThemeContext);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n );\r\n}\r\n\r\nErrorMessage.propTypes = {\r\n label: PropTypes.string,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport DialogModal from '@blueprism/ui-core/components/DialogModal';\r\nimport ErrorMessage from 'components/ErrorMessage';\r\n\r\nfunction getModalHeight(size) {\r\n switch (size) {\r\n case 'small':\r\n return '20rem';\r\n case 'medium':\r\n return '25rem';\r\n case 'large':\r\n return '32rem';\r\n default:\r\n return '20rem';\r\n }\r\n}\r\n\r\nexport default function PATDialog({ errorText, size, children, ...rest }) {\r\n return (\r\n \r\n {errorText && }\r\n {children}\r\n \r\n );\r\n}\r\n\r\nPATDialog.propTypes = {\r\n /** contents of the Dialog */\r\n children: PropTypes.node,\r\n /** Size of the Dialog (Small/Medium/Large) -\r\n * just affects the height of the dialog - small = 20rem, medium = 25rem, large = 32rem\r\n * */\r\n size: PropTypes.oneOf(['small', 'medium', 'large']),\r\n errorText: PropTypes.string,\r\n};\r\n","import { useEffect, useState } from 'react';\r\n\r\n// Hook\r\nexport default function useDebounce(value, delay) {\r\n // State and setters for debounced value\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n\r\n useEffect(\r\n () => {\r\n // Update debounced value after delay\r\n const handler = setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, delay);\r\n\r\n // Cancel the timeout if value changes (also on delay change or unmount)\r\n // This is how we prevent debounced value from updating if value is changed ...\r\n // .. within the delay period. Timeout gets cleared and restarted.\r\n return () => {\r\n clearTimeout(handler);\r\n };\r\n },\r\n [value, delay] // Only re-call effect if value or delay changes\r\n );\r\n\r\n return debouncedValue;\r\n}\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport Datalist from '@blueprism/ui-core/components/Datalist';\r\nimport Option from '@blueprism/ui-core/components/Option';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport PATDialog from 'components/PATDialog';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport { spaceManagement } from 'utils/api';\r\nimport useDebounce from 'utils/useDebounce';\r\n\r\nexport default function TeamUserAddDialog({ spaceId, open = false, onClose, onConfirm }) {\r\n const intl = useIntl();\r\n const { getUser } = React.useContext(AuthContext);\r\n const [search, setSearch] = React.useState('');\r\n const [lastExecutedSearch, setLastExecutedSearch] = React.useState(null);\r\n const [results, setResults] = React.useState(false);\r\n const [errors, setErrors] = React.useState({});\r\n const debouncedSearchTerm = useDebounce(search, 500);\r\n\r\n const formatUser = user => `${user.name} (${user.email})`;\r\n const getSelectedMember = searchText => results && results.find(x => searchText === formatUser(x));\r\n\r\n React.useEffect(() => {\r\n setSearch('');\r\n setErrors({});\r\n }, [open]);\r\n\r\n React.useEffect(() => {\r\n if (debouncedSearchTerm && lastExecutedSearch !== debouncedSearchTerm) {\r\n const selectedAnswer = results && results.some(x => debouncedSearchTerm === formatUser(x));\r\n if (!selectedAnswer) {\r\n setLastExecutedSearch(debouncedSearchTerm);\r\n spaceManagement\r\n .spaceUserSearch(getUser, spaceId, debouncedSearchTerm)\r\n .then(response => {\r\n setResults(response);\r\n })\r\n .catch(err => {\r\n switch (err?.response?.status) {\r\n case 400:\r\n case 500:\r\n setErrors({ api: intl.formatMessage({ id: '500TeamDialogText' }) });\r\n return;\r\n case 401:\r\n setErrors({ api: intl.formatMessage({ id: '401TeamDialogText' }) });\r\n return;\r\n default:\r\n console.log(err);\r\n return;\r\n }\r\n });\r\n }\r\n }\r\n }, [debouncedSearchTerm, lastExecutedSearch, results, getUser, spaceId, intl]);\r\n\r\n const handleClose = () => onClose();\r\n const handleCloseClick = () => onClose();\r\n const handleAdd = async () => {\r\n const selectedAnswer = getSelectedMember(search);\r\n const result = await onConfirm(selectedAnswer?.userId);\r\n setErrors(result || {});\r\n };\r\n\r\n const handleTextChange = event => setSearch(event.target.value);\r\n const getErrorMessage = fieldName => errors[fieldName];\r\n const isInError = fieldName => errors[fieldName]?.length > 0 ?? false;\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n footerContent={renderFooter()}\r\n errorText={getErrorMessage('api')}\r\n >\r\n \r\n \r\n {results && results.map(user => \r\n \r\n \r\n );\r\n}\r\n\r\nTeamUserAddDialog.propTypes = {\r\n open: PropTypes.bool,\r\n spaceId: PropTypes.number,\r\n onClose: PropTypes.func,\r\n onConfirm: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport PATDialog from 'components/PATDialog';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport ErrorMessage from 'components/ErrorMessage';\r\nimport User from 'components/User';\r\nimport { config } from 'utils/config';\r\n\r\nexport default function TeamUserRemoveDialog({ open, user, onConfirm, onClose }) {\r\n const intl = useIntl();\r\n const [errors, setErrors] = React.useState({});\r\n\r\n React.useEffect(() => setErrors({}), [open]);\r\n\r\n const name = user ? user.name : null;\r\n const avatar = user ? user.avatar : null;\r\n const email = user ? user.email : null;\r\n\r\n const handleClose = () => onClose();\r\n const handleCloseClick = () => onClose();\r\n const handleAdd = async () => {\r\n const result = await onConfirm(user.userId, onClose);\r\n setErrors(result || {});\r\n };\r\n\r\n const getErrorMessage = fieldName => errors[fieldName];\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n footerContent={renderFooter()}\r\n errorText={getErrorMessage('api')}\r\n >\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nTeamUserRemoveDialog.propTypes = {\r\n open: PropTypes.bool,\r\n user: PropTypes.object,\r\n onConfirm: PropTypes.func,\r\n onClose: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport { useHistory } from 'react-router-dom';\r\nimport ButtonGroup from '@blueprism/ui-core/components/ButtonGroup';\r\nimport ToolbarButton from '@blueprism/ui-core/components/ToolbarButton';\r\nimport PersonPlus from '@blueprism/ui-icons/PersonPlus';\r\nimport PersonRemove from '@blueprism/ui-icons/PersonRemove';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport TeamUserAddDialog from './TeamUserAddDialog';\r\nimport TeamUserRemoveDialog from './TeamUserRemoveDialog';\r\nimport { spaceManagement } from 'utils/api';\r\n\r\nexport default function TeamUserButtons({\r\n onUserAdded = () => {},\r\n onUserRemoved = () => {},\r\n team,\r\n canEditSelection,\r\n currentUser,\r\n}) {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const { getUser } = React.useContext(AuthContext);\r\n const [addDialogOpen, setAddDialogOpen] = React.useState(false);\r\n const [removeDialogOpen, setRemoveDialogOpen] = React.useState(false);\r\n\r\n function handleRemoveClose() {\r\n setRemoveDialogOpen(false);\r\n }\r\n\r\n function handleRemoveUser() {\r\n setRemoveDialogOpen(true);\r\n }\r\n\r\n function handleAddClose() {\r\n setAddDialogOpen(false);\r\n }\r\n\r\n function handleAddUser() {\r\n setAddDialogOpen(true);\r\n }\r\n\r\n const addTeamUser = userId =>\r\n spaceManagement\r\n .addMemberToTeam(getUser, userId ?? 0, team.teamId)\r\n .then(response => {\r\n setAddDialogOpen(false);\r\n onUserAdded();\r\n })\r\n .catch(err => {\r\n switch (err?.response?.status) {\r\n case 400:\r\n return err.response.data;\r\n case 500:\r\n return {\r\n api: intl.formatMessage({ id: '500TeamDialogText' }),\r\n };\r\n case 401:\r\n return { api: intl.formatMessage({ id: '401TeamDialogText' }) };\r\n case 403:\r\n history.push('/login');\r\n return;\r\n default:\r\n console.log(err);\r\n return;\r\n }\r\n });\r\n\r\n const removeTeamUser = userId =>\r\n spaceManagement\r\n .removeMemberFromTeam(getUser, userId ?? 0, team.teamId)\r\n .then(() => {\r\n setRemoveDialogOpen(false);\r\n onUserRemoved(userId);\r\n })\r\n .catch(err => {\r\n switch (err?.response?.status) {\r\n case 400:\r\n return err.response.data;\r\n case 500:\r\n return {\r\n api: intl.formatMessage({ id: '500TeamDialogText' }),\r\n };\r\n case 401:\r\n return { api: intl.formatMessage({ id: '401TeamDialogText' }) };\r\n case 403:\r\n history.push('/login');\r\n return;\r\n default:\r\n console.log(err);\r\n return;\r\n }\r\n });\r\n\r\n return (\r\n <>\r\n \r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\n\r\nexport default function useTableRowSelection(initialRows = [], singleSelection = false) {\r\n const [selectedRowIds, setSelectedRowIds] = React.useState(initialRows);\r\n\r\n function onRowSelectionChange(row) {\r\n const { id, selected } = row;\r\n\r\n setSelectedRowIds(prevSelectedIds => {\r\n if (selected) {\r\n if (singleSelection) return [id];\r\n\r\n return [...prevSelectedIds, id];\r\n }\r\n\r\n return prevSelectedIds.filter(prevId => prevId !== id);\r\n });\r\n }\r\n\r\n function clearSelection() {\r\n setSelectedRowIds([]);\r\n }\r\n\r\n return {\r\n selectedRowIds,\r\n onRowSelectionChange,\r\n clearSelection,\r\n };\r\n}\r\n","import React from 'react';\r\nimport { useParams, useHistory } from 'react-router-dom';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport Person from '@blueprism/ui-icons/Person';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Breadcrumbs from '@blueprism/ui-core/components/Breadcrumbs';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Toolbar from '@blueprism/ui-core/components/Toolbar';\r\nimport ButtonTabGroup from '@blueprism/ui-core/components/ButtonTabGroup';\r\nimport ToolbarButton from '@blueprism/ui-core/components/ToolbarButton';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport Link from 'components/Link';\r\nimport TeamUsers from './TeamUsers';\r\nimport { toUInt } from 'utils/helper';\r\nimport TeamUserButtons from './TeamUserButtons';\r\nimport useTableRowSelection from 'utils/useTableRowSelection';\r\nimport { spaceManagement } from 'utils/api';\r\n\r\nconst tabs = ['users', 'teams'];\r\n\r\nexport default function Team() {\r\n const params = useParams();\r\n const history = useHistory();\r\n const intl = useIntl();\r\n const { getUser } = React.useContext(AuthContext);\r\n const { clearSelection, selectedRowIds, onRowSelectionChange } = useTableRowSelection([], true);\r\n\r\n const [team, setTeam] = React.useState(null);\r\n const [users, setUsers] = React.useState([]);\r\n const [count, setCount] = React.useState(0);\r\n const [requiresUsersRefresh, setRequiresUsersRefresh] = React.useState(true);\r\n\r\n const teamId = toUInt(params.teamId);\r\n const tab = (params.tab || 'users').toLowerCase();\r\n\r\n const offset = toUInt(params.offset) || 0;\r\n const limit = toUInt(params.limit) || 25;\r\n\r\n React.useEffect(() => {\r\n if (teamId === team?.teamId) {\r\n return;\r\n }\r\n\r\n spaceManagement\r\n .getTeam(getUser, teamId)\r\n .then(response => setTeam(response))\r\n .catch(err => {\r\n switch (err.response?.status) {\r\n case 500:\r\n history.push('/servererror');\r\n return;\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 401:\r\n history.push('/unauthorised');\r\n return;\r\n default:\r\n console.log(err);\r\n }\r\n });\r\n }, [team, teamId, getUser, history]);\r\n\r\n React.useEffect(() => {\r\n if (requiresUsersRefresh) {\r\n setRequiresUsersRefresh(false);\r\n spaceManagement\r\n .getTeamMembers(getUser, teamId, offset, limit)\r\n .then(response => {\r\n setCount(response.count);\r\n setUsers(response.items);\r\n })\r\n .catch(err => {\r\n switch (err.response?.status) {\r\n case 500:\r\n history.push('/servererror');\r\n return;\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 401:\r\n history.push('/unauthorised');\r\n return;\r\n default:\r\n console.log(err);\r\n }\r\n });\r\n }\r\n }, [requiresUsersRefresh, teamId, offset, limit, getUser, history]);\r\n\r\n if (!team) {\r\n return ;\r\n }\r\n\r\n function handleChange(newValue) {\r\n const fragment = tabs[newValue.currentTarget.value];\r\n history.push(`/your-spaces/team/${team.teamId}/${fragment}`);\r\n }\r\n\r\n function handleUserRemoved(userId) {\r\n clearSelection();\r\n setRequiresUsersRefresh(true);\r\n }\r\n\r\n function handleUserAdded() {\r\n setRequiresUsersRefresh(true);\r\n }\r\n\r\n function handlePaginationChanged() {\r\n setRequiresUsersRefresh(true);\r\n }\r\n\r\n const canEditSelection =\r\n selectedRowIds.length === 1 && (users?.some(user => user.userId.toString() === selectedRowIds[0]) ?? false);\r\n const currentUser =\r\n selectedRowIds.length === 1 && users ? users.find(user => user.userId.toString() === selectedRowIds[0]) : {};\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {team.spaceName}\r\n \r\n \r\n \r\n {team.name}\r\n \r\n\r\n \r\n {team.name}\r\n \r\n\r\n \r\n \r\n } />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nexport default function useDebounceCallback(delay = 500) {\r\n const debounceHandler = React.useRef();\r\n\r\n React.useEffect(() => () => clearTimeout(debounceHandler.current), []);\r\n\r\n return function debounceChange(callback, value) {\r\n clearTimeout(debounceHandler.current);\r\n\r\n debounceHandler.current = setTimeout(() => {\r\n callback(value);\r\n }, delay);\r\n };\r\n}\r\n\r\nuseDebounceCallback.propTypes = {\r\n delay: PropTypes.number,\r\n};\r\n","export const dataStates = {\r\n INIT: 'initialising',\r\n FETCHING: 'fetching',\r\n VALIDATIONERROR: 'validationerror',\r\n ERROR: 'error',\r\n SUCCESS: 'success',\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from 'react-intl';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport { UserContext } from 'contexts/UserContext';\r\nimport useDebounceCallback from 'utils/useDebounceCallback';\r\nimport { getPaging } from 'utils/helper';\r\nimport { dataStates as assessmentStates } from '../utils/dataStates';\r\nimport { yourProcesses } from 'utils/api';\r\nimport { isEqual } from 'lodash';\r\n\r\nexport const defaultColumns = ['Recommendation', 'Title', 'Group'];\r\n\r\nexport const initialState = {\r\n paging: { offset: 0, limit: 25, filters: {} },\r\n assessments: {\r\n items: [],\r\n count: 0,\r\n },\r\n summaries: [1, 2, 3].map(id => ({ recommendation: id, assessments: 0, hours: 0 })),\r\n validationErrors: {},\r\n error: {},\r\n};\r\n\r\nfunction getColumns(sorting, intl) {\r\n const tempColumns = [\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_recommendationColumn' }),\r\n accessor: 'Recommendation',\r\n disableSort: true,\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_titleColumn' }),\r\n accessor: 'Title',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_typeColumn' }),\r\n accessor: 'Type',\r\n disableSort: true,\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_analystColumn' }),\r\n accessor: 'Analyst',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_ownerColumn' }),\r\n accessor: 'Owner',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_processIdColumn' }),\r\n accessor: 'ProcessId',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_businessFunctionColumn' }),\r\n accessor: 'BusinessFunction',\r\n disableSort: true,\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_reasonForAutomatingColumn' }),\r\n accessor: 'ReasonForAutomating',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_createdDateColumn' }),\r\n accessor: 'CreateDate',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_groupColumn' }),\r\n accessor: 'Group',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_capitalSavingsColumn' }),\r\n accessor: 'CapitalSavings',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_hoursSavingsColumn' }),\r\n accessor: 'HoursSavings',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_apScoreColumn' }),\r\n accessor: 'ApScore',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_ieScoreColumn' }),\r\n accessor: 'IeScore',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_statusColumn' }),\r\n accessor: 'Status',\r\n disableSort: true,\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_spaceColumn' }),\r\n accessor: 'Space',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'yourProcesses_table_tagsColumn' }),\r\n accessor: 'Tags',\r\n disableSort: true,\r\n },\r\n ];\r\n\r\n if (sorting === null || Object.keys(sorting).length === 0) return tempColumns;\r\n\r\n return tempColumns.map(column =>\r\n column.accessor === sorting.column ? { ...column, sortDirection: sorting.direction } : column\r\n );\r\n}\r\n\r\nexport const YourProcessesContext = React.createContext();\r\n\r\nexport default function YourProcessesContextProvider({ children, debounceDelay }) {\r\n const intl = useIntl();\r\n const { user } = React.useContext(UserContext);\r\n const { getUser } = React.useContext(AuthContext);\r\n const [state, setState] = React.useState(initialState);\r\n const status = React.useRef(assessmentStates.INIT);\r\n const errorCode = React.useRef('');\r\n const columns = React.useRef([]);\r\n\r\n const args = React.useRef({ limit: 25, offset: 0, sorting: null, filters: {} });\r\n const debounceCallback = useDebounceCallback(debounceDelay);\r\n\r\n function getStoredColumnsForUser() {\r\n const storedValues = JSON.parse(localStorage.getItem(`${user.details.userId}-columns`));\r\n return {\r\n selectedColumns: storedValues?.selectedColumns ?? defaultColumns,\r\n sorting: storedValues?.sorting ?? null,\r\n };\r\n }\r\n\r\n function setStoredColumnsForUser({ selectedColumns, sorting = state.sorting }) {\r\n const newValue = JSON.stringify({\r\n selectedColumns,\r\n sorting,\r\n });\r\n\r\n localStorage.setItem(`${user.details.userId}-columns`, newValue);\r\n }\r\n\r\n function requestUpdate({\r\n offset = args.current.offset,\r\n limit = args.current.limit,\r\n filters,\r\n sorting = args.current.sorting,\r\n }) {\r\n status.current = assessmentStates.FETCHING;\r\n const useDebounce = !!filters || limit !== args.current.limit;\r\n\r\n if (filters) {\r\n // filters may have nested objects containing the filter values we need to send to the server.\r\n // This pulls those values into the top level filter object.\r\n const flattenFilters = (obj, parent, res = {}) => {\r\n for (let key in obj) {\r\n if (typeof obj[key] == 'object' && !(obj[key] instanceof Array)) {\r\n flattenFilters(obj[key], key, res);\r\n } else {\r\n res[key] = obj[key];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n filters = flattenFilters(filters);\r\n offset = 0;\r\n } else {\r\n filters = args.current.filters;\r\n }\r\n\r\n args.current = { ...args.current, offset, limit, filters, sorting };\r\n\r\n const applyChange = newArgs => {\r\n const isFullRequest = !isEqual(newArgs.filters, state.paging.filters) || state.assessments.items.length === 0;\r\n const api = isFullRequest ? yourProcesses.postFullAssessments : yourProcesses.postAssessments;\r\n\r\n api(getUser, newArgs)\r\n .then(response => {\r\n window.history.replaceState(null, null, `/your-processes?offset=${newArgs.offset}&limit=${newArgs.limit}`);\r\n\r\n status.current = assessmentStates.SUCCESS;\r\n setState(prevState => ({\r\n ...prevState,\r\n ...(isFullRequest ? response : { assessments: { ...response } }),\r\n paging: args.current,\r\n validationErrors: {},\r\n }));\r\n })\r\n .catch(err => {\r\n status.current = assessmentStates.ERROR;\r\n errorCode.current = err.response?.status;\r\n setState(prevState => ({\r\n ...prevState,\r\n error: err.message,\r\n paging: args.current,\r\n validationErrors: err.response?.data ?? {},\r\n }));\r\n });\r\n };\r\n\r\n if (useDebounce) {\r\n debounceCallback(applyChange, args.current);\r\n } else {\r\n applyChange(args.current);\r\n }\r\n }\r\n\r\n React.useEffect(() => {\r\n const { sorting } = getStoredColumnsForUser();\r\n const { limit, offset } = getPaging();\r\n\r\n columns.current = getColumns(sorting, intl);\r\n requestUpdate({ sorting, filters: {}, limit, offset });\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nYourProcessesContextProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n debounceDelay: PropTypes.number,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css } from 'styled-components';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport { typography } from '@blueprism/ui-core/theme/units';\r\n\r\nconst DescriptionList = styled(Stack)(\r\n ({ theme }) => css`\r\n text-align: center;\r\n color: ${theme.color.text};\r\n `\r\n);\r\n\r\nconst MainTitle = styled.dt(\r\n ({ theme }) => css`\r\n font-size: ${typography.bodyL.size}rem;\r\n font-weight: ${theme.font.weight.black};\r\n order: 2;\r\n `\r\n);\r\n\r\nconst MainTitleDescription = styled(Row)(\r\n ({ theme }) => css`\r\n order: 1;\r\n font-size: ${typography.mega.size}rem;\r\n font-weight: ${theme.font.weight.black};\r\n `\r\n);\r\n\r\nconst SecondaryTitle = styled.dt(\r\n ({ theme }) => css`\r\n order: 3;\r\n font-size: ${typography.body.size}rem;\r\n font-weight: ${theme.font.weight.regular};\r\n `\r\n);\r\n\r\nconst SecondaryTitleDescription = styled.dd(\r\n ({ theme }) => css`\r\n font-weight: ${theme.font.weight.black};\r\n font-size: ${typography.body.size}rem;\r\n order: 4;\r\n `\r\n);\r\n\r\nconst IconContainer = styled.span(\r\n css`\r\n display: flex;\r\n align-content: center;\r\n `\r\n);\r\n\r\nconst CountContainer = styled.span(\r\n css`\r\n text-align: right;\r\n `\r\n);\r\n\r\nexport default function JumboMetadata({\r\n mainTitleDescriptionText = '',\r\n mainTitleText = '',\r\n secondaryTitleText = '',\r\n secondaryTitleDescriptionText = '',\r\n width = '100%',\r\n icon,\r\n}) {\r\n return (\r\n \r\n {mainTitleText}\r\n \r\n {icon}\r\n {mainTitleDescriptionText}\r\n \r\n {secondaryTitleText}\r\n {secondaryTitleDescriptionText}\r\n \r\n );\r\n}\r\n\r\nJumboMetadata.propTypes = {\r\n mainTitleDescriptionText: PropTypes.string,\r\n mainTitleText: PropTypes.string,\r\n secondaryTitleText: PropTypes.string,\r\n secondaryTitleDescriptionText: PropTypes.string,\r\n width: PropTypes.string,\r\n icon: PropTypes.node,\r\n};\r\n","import * as React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport Cluster from '@blueprism/ui-core/layout/Cluster';\r\nimport { Lightning, Clock, Clipboard } from '@blueprism/ui-icons';\r\nimport JumboMetadata from '../core/JumboMetaData';\r\nimport { YourProcessesContext } from 'contexts/YourProcessesContextProvider';\r\n\r\nconst recommendationType = {\r\n PRIORITISE: 1,\r\n REVIEW: 2,\r\n DEFER: 3,\r\n};\r\n\r\nexport function getIcon(type) {\r\n switch (type) {\r\n case recommendationType.PRIORITISE:\r\n return ;\r\n case recommendationType.REVIEW:\r\n return ;\r\n case recommendationType.DEFER:\r\n return ;\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nexport default function Banner() {\r\n const intl = useIntl();\r\n const { state } = React.useContext(YourProcessesContext);\r\n\r\n return (\r\n \r\n {state.summaries.map(summary => (\r\n \r\n ))}\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, Text, Row, ButtonGroup } from '@blueprism/ui-core';\r\nimport styled, { css } from 'styled-components';\r\n\r\nconst StyledTitle = styled(Text)(\r\n ({ theme }) => css`\r\n font-size: ${theme.font.size.h5}rem;\r\n font-weight: ${theme.font.weight.black};\r\n `\r\n);\r\n\r\nconst StickyHeader = styled(Row)(\r\n ({ theme }) => css`\r\n position: sticky;\r\n top: 0;\r\n background: ${theme.color.paper};\r\n z-index: ${theme.layer.hovering};\r\n `\r\n);\r\n\r\nconst DrawerContent = ({ title, buttons, children }) => (\r\n \r\n \r\n {title}\r\n {buttons}\r\n \r\n {children}\r\n \r\n);\r\n\r\nDrawerContent.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n buttons: PropTypes.node,\r\n children: PropTypes.node,\r\n};\r\n\r\nexport default DrawerContent;\r\n","import * as React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport PropTypes from 'prop-types';\r\nimport { Drawer, Switch, ToolbarButton } from '@blueprism/ui-core';\r\nimport { Cross, Refresh } from '@blueprism/ui-icons';\r\nimport DrawerContent from './DrawerContent';\r\n\r\nexport default function ColumnToggleDrawer({\r\n docked = false,\r\n columns = [],\r\n defaultColumns = [],\r\n selectedColumns = [],\r\n onClose = () => {},\r\n onSelectedColumnsChange = () => {},\r\n}) {\r\n const intl = useIntl();\r\n\r\n const getNewSelectedColumns = (accessor, checked) =>\r\n checked ? [...selectedColumns, accessor] : selectedColumns.filter(selectedColumn => selectedColumn !== accessor);\r\n\r\n function handleCloseClick() {\r\n onClose();\r\n }\r\n\r\n function handleToggleColumnChange(event) {\r\n const { name, checked } = event.target;\r\n const newValues = getNewSelectedColumns(name, checked);\r\n onSelectedColumnsChange(newValues);\r\n }\r\n\r\n function handleToggleResetClick() {\r\n const filteredColumns = columns\r\n .filter(column => defaultColumns.some(defaultColumn => defaultColumn === column.accessor))\r\n .map(column => column.accessor);\r\n onSelectedColumnsChange(filteredColumns);\r\n }\r\n\r\n return (\r\n \r\n \r\n }\r\n />\r\n }\r\n />\r\n \r\n }\r\n >\r\n {columns.map(column => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\nColumnToggleDrawer.propTypes = {\r\n docked: PropTypes.bool,\r\n columns: PropTypes.array,\r\n defaultColumns: PropTypes.array,\r\n selectedColumns: PropTypes.array,\r\n onClose: PropTypes.func,\r\n onSelectedColumnsChange: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css } from 'styled-components';\r\nimport { Stack, Switch } from '@blueprism/ui-core';\r\n\r\nconst Container = styled(Stack)(\r\n props => css`\r\n display: ${props.enabled ? 'block' : 'none'};\r\n `\r\n);\r\n\r\nexport default function Filter({ children, fieldName, enabled = false, title = '', onToggle = () => {} }) {\r\n function handleSwitchChange({ target }) {\r\n onToggle(fieldName, target.checked);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n}\r\n\r\nFilter.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n fieldName: PropTypes.string.isRequired,\r\n enabled: PropTypes.bool,\r\n title: PropTypes.string,\r\n onToggle: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FormField, InputField } from '@blueprism/ui-core';\r\n\r\nexport default function TextFilter({ enabled, fieldName, label = '', helperText = '', onChange = () => {} }) {\r\n const [localValue, setLocalValue] = React.useState('');\r\n\r\n function handleTextChange({ target }) {\r\n setLocalValue(target.value);\r\n onChange({ [fieldName]: target.value });\r\n }\r\n\r\n React.useEffect(() => {\r\n if (enabled && localValue) {\r\n onChange({ [fieldName]: localValue });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [enabled]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nTextFilter.propTypes = {\r\n enabled: PropTypes.bool.isRequired,\r\n fieldName: PropTypes.string.isRequired,\r\n label: PropTypes.string,\r\n helperText: PropTypes.string,\r\n onChange: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css } from 'styled-components';\r\nimport { InputField } from '@blueprism/ui-core';\r\n\r\nconst InputFieldRightAligned = styled(InputField)(\r\n ({ fieldLength, theme }) => css`\r\n text-align: right;\r\n width: ${fieldLength > 0 ? fieldLength + 1 + 'rem' : '100%'};\r\n min-width: ${theme.globalSizes.xxl}rem;\r\n `\r\n);\r\n\r\nexport default function NumberInput({ max = null, ...rest }) {\r\n let fieldLength = 0;\r\n if (max !== null) {\r\n if (max.toString().length <= 10) {\r\n fieldLength = max.toString().length;\r\n }\r\n }\r\n return ;\r\n}\r\n\r\nNumberInput.propTypes = {\r\n id: PropTypes.string.isRequired,\r\n name: PropTypes.string,\r\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n fieldLength: PropTypes.number,\r\n onChange: PropTypes.func,\r\n onBlur: PropTypes.func,\r\n error: PropTypes.bool,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { useIntl } from 'react-intl';\r\nimport { Row, Stack, InputFieldLabel } from '@blueprism/ui-core';\r\nimport NumberInput from '../NumberInput/NumberInput';\r\n\r\nconst StyledInputFieldLabel = styled(InputFieldLabel)`\r\n div:nth-child(1) {\r\n text-transform: capitalize;\r\n div:nth-child(1) {\r\n display: none;\r\n }\r\n }\r\n`;\r\n\r\nconst padZeros = (value, numberOfZeros = 2) => String(value).padStart(numberOfZeros, '0');\r\n\r\nexport function toISOLocalString({ year, month, day }) {\r\n const newDate = new Date(year, month, day);\r\n\r\n if (isNaN(newDate) || year < 1000) {\r\n return 'Invalid Date';\r\n }\r\n\r\n const timezoneOffset = newDate.getTimezoneOffset();\r\n const posOffset = Math.abs(timezoneOffset);\r\n const dateOffset = `${padZeros(Math.floor(posOffset / 60))}:${padZeros(posOffset % 60)}`;\r\n\r\n return `${padZeros(year)}-${padZeros(month)}-${padZeros(day)}T00:00:00.000${\r\n timezoneOffset <= 0 ? '+' : '-'\r\n }${dateOffset}`;\r\n}\r\n\r\nconst isPassableDate = ({ year, month, day }) =>\r\n !!day === false || !!month === false || !!year === false ? false : true;\r\n\r\nconst isOneFieldEmpty = ({ year, month, day }) => (day === '' || month === '' || year === '' ? true : false);\r\n\r\nexport default function DateInput({ id, error = false, onChange = () => {} }) {\r\n const intl = useIntl();\r\n const [date, setDate] = React.useState({ day: '', month: '', year: '' });\r\n const isDateValid = React.useRef(false);\r\n const previousDate = React.useRef({ day: '', month: '', year: '' });\r\n\r\n const dateParts = React.useRef(\r\n (() =>\r\n Intl.DateTimeFormat(intl.locale, {\r\n weekday: 'long',\r\n year: 'numeric',\r\n month: 'numeric',\r\n day: 'numeric',\r\n hour: 'numeric',\r\n minute: 'numeric',\r\n second: 'numeric',\r\n fractionalSecondDigits: 3,\r\n hour12: true,\r\n timeZone: intl.timezone,\r\n })\r\n .formatToParts(new Date())\r\n .filter(part => ['day', 'month', 'year'].some(key => key === part.type))\r\n .map(part => part.type))()\r\n );\r\n\r\n function handleChange(event) {\r\n const { name, value } = event.target;\r\n setDate(prevDate => ({ ...prevDate, [name]: value }));\r\n }\r\n\r\n function handleBlur(event) {\r\n const { value, name } = event.target;\r\n if (previousDate.current[name] === value) {\r\n return;\r\n }\r\n\r\n if (isOneFieldEmpty(date)) {\r\n if (isDateValid.current) {\r\n onChange('');\r\n previousDate.current = { day: '', month: '', year: '' };\r\n isDateValid.current = false;\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (isPassableDate(date)) {\r\n onChange(toISOLocalString(date));\r\n isDateValid.current = true;\r\n previousDate.current = { ...date };\r\n }\r\n }\r\n\r\n return (\r\n \r\n {dateParts.current.map(type => (\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n}\r\n\r\nDateInput.propTypes = {\r\n id: PropTypes.string.isRequired,\r\n error: PropTypes.bool,\r\n onChange: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, FormField } from '@blueprism/ui-core';\r\nimport DateInput from '../core/DateInput';\r\n\r\nexport default function DateFilter({\r\n enabled,\r\n fieldName,\r\n labelMin = '',\r\n labelMax = '',\r\n helperTextMin = '',\r\n helperTextMax,\r\n isInErrorMin = false,\r\n isInErrorMax = false,\r\n errorTextMin = '',\r\n errorTextMax = '',\r\n onChange = () => {},\r\n}) {\r\n const [localValues, setLocalValues] = React.useState({ [`${fieldName}Min`]: '', [`${fieldName}Max`]: '' });\r\n\r\n function handleValuesChange(newValues) {\r\n var filter = {};\r\n if (newValues[`${fieldName}Min`]) {\r\n filter[`${fieldName}Min`] = newValues[`${fieldName}Min`];\r\n }\r\n\r\n if (newValues[`${fieldName}Max`]) {\r\n filter[`${fieldName}Max`] = newValues[`${fieldName}Max`];\r\n }\r\n onChange({\r\n [`${fieldName}`]: {\r\n ...filter,\r\n },\r\n });\r\n }\r\n\r\n function handleMinValueChange(date) {\r\n const newValues = {\r\n [`${fieldName}Min`]: date,\r\n [`${fieldName}Max`]: localValues[`${fieldName}Max`],\r\n };\r\n setLocalValues(newValues);\r\n handleValuesChange(newValues);\r\n }\r\n\r\n function handleMaxValueChange(date) {\r\n const newValues = {\r\n [`${fieldName}Min`]: localValues[`${fieldName}Min`],\r\n [`${fieldName}Max`]: date,\r\n };\r\n\r\n setLocalValues(newValues);\r\n handleValuesChange(newValues);\r\n }\r\n\r\n React.useEffect(() => {\r\n if (enabled && (localValues[`${fieldName}Min`] || localValues[`${fieldName}Max`])) {\r\n handleValuesChange({\r\n [`${fieldName}Min`]: localValues[`${fieldName}Min`],\r\n [`${fieldName}Max`]: localValues[`${fieldName}Max`],\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [enabled]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nDateFilter.propTypes = {\r\n enabled: PropTypes.bool.isRequired,\r\n fieldName: PropTypes.string.isRequired,\r\n labelMin: PropTypes.string,\r\n labelMax: PropTypes.string,\r\n helperTextMin: PropTypes.string,\r\n helperTextMax: PropTypes.string,\r\n isInErrorMin: PropTypes.bool,\r\n isInErrorMax: PropTypes.bool,\r\n errorTextMin: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\r\n errorTextMax: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\r\n onChange: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { CheckBoxGroup, CheckBox, FormField } from '@blueprism/ui-core';\r\n\r\nexport default function CheckboxFilter({\r\n enabled,\r\n fieldName,\r\n label = '',\r\n helperText = '',\r\n options = {},\r\n onChange = () => {},\r\n}) {\r\n const [localValue, setLocalValue] = React.useState([]);\r\n\r\n function handleValueChange(_, values) {\r\n setLocalValue(values);\r\n onChange({ [fieldName]: values });\r\n }\r\n\r\n React.useEffect(() => {\r\n if (enabled && localValue.length) {\r\n onChange({ [fieldName]: localValue });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [enabled]);\r\n\r\n return (\r\n \r\n \r\n {Object.keys(options).map(option => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\nCheckboxFilter.propTypes = {\r\n enabled: PropTypes.bool.isRequired,\r\n fieldName: PropTypes.string.isRequired,\r\n label: PropTypes.string,\r\n helperText: PropTypes.string,\r\n options: PropTypes.object,\r\n onChange: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FormField, InputField } from '@blueprism/ui-core';\r\n\r\nexport default function TagsFilter({ enabled, fieldName, label = '', helperText = '', onChange = () => {} }) {\r\n const [localValue, setLocalValue] = React.useState([]);\r\n\r\n const splitValue = value =>\r\n value\r\n .split(',')\r\n .map(tag => tag.trim())\r\n .filter(tag => tag !== '');\r\n\r\n function handleTextChange(event) {\r\n const { value } = event.target;\r\n setLocalValue(value);\r\n onChange({ [fieldName]: splitValue(value) });\r\n }\r\n\r\n React.useEffect(() => {\r\n if (enabled && localValue.length) {\r\n onChange({ [fieldName]: splitValue(localValue) });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [enabled]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nTagsFilter.propTypes = {\r\n enabled: PropTypes.bool.isRequired,\r\n fieldName: PropTypes.string.isRequired,\r\n label: PropTypes.string,\r\n helperText: PropTypes.string,\r\n onChange: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Box, FormField } from '@blueprism/ui-core';\r\nimport NumberInput from 'components/core/NumberInput/NumberInput';\r\n\r\nexport default function NumberFilter({\r\n enabled,\r\n fieldName,\r\n labelMin = '',\r\n labelMax = '',\r\n helperTextMin = '',\r\n helperTextMax = '',\r\n width = '4rem',\r\n isInErrorMin,\r\n isInErrorMax,\r\n errorTextMin,\r\n errorTextMax,\r\n onChange = () => {},\r\n}) {\r\n const [localValues, setLocalValues] = React.useState({ minValue: '', maxValue: '' });\r\n\r\n function handleChange(newValues) {\r\n var filter = {};\r\n if (newValues[`${fieldName}Min`]) {\r\n filter[`${fieldName}Min`] = newValues[`${fieldName}Min`];\r\n }\r\n\r\n if (newValues[`${fieldName}Max`]) {\r\n filter[`${fieldName}Max`] = newValues[`${fieldName}Max`];\r\n }\r\n onChange({\r\n [`${fieldName}`]: {\r\n ...filter,\r\n },\r\n });\r\n }\r\n\r\n function handleMinValueChange({ target }) {\r\n const newValues = { ...localValues, minValue: target.value };\r\n setLocalValues(newValues);\r\n handleChange({\r\n [`${fieldName}Min`]: newValues.minValue,\r\n [`${fieldName}Max`]: newValues.maxValue,\r\n });\r\n }\r\n\r\n function handleMaxValueChange({ target }) {\r\n const newValues = { ...localValues, maxValue: target.value };\r\n setLocalValues(newValues);\r\n handleChange({\r\n [`${fieldName}Min`]: newValues.minValue,\r\n [`${fieldName}Max`]: newValues.maxValue,\r\n });\r\n }\r\n\r\n React.useEffect(() => {\r\n if (enabled && (localValues.minValue || localValues.maxvalue)) {\r\n onChange({\r\n [`${fieldName}`]: { [`${fieldName}Min`]: localValues.minValue, [`${fieldName}Max`]: localValues.maxValue },\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [enabled]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nNumberFilter.propTypes = {\r\n enabled: PropTypes.bool.isRequired,\r\n fieldName: PropTypes.string.isRequired,\r\n labelMin: PropTypes.string,\r\n labelMax: PropTypes.string,\r\n helperTextMin: PropTypes.string,\r\n helperTextMax: PropTypes.string,\r\n width: PropTypes.string,\r\n isInErrorMin: PropTypes.bool,\r\n isInErrorMax: PropTypes.bool,\r\n errorTextMin: PropTypes.arrayOf(PropTypes.string),\r\n errorTextMax: PropTypes.arrayOf(PropTypes.string),\r\n onChange: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FormField, Option, DatalistIndexed, Box } from '@blueprism/ui-core';\r\nimport NumberInput from '../core/NumberInput/NumberInput';\r\n\r\nexport default function CurrencyFilter({\r\n enabled,\r\n fieldName,\r\n labelCurrency = '',\r\n helperTextCurrency,\r\n currencyOptions = [],\r\n labelMin = '',\r\n labelMax = '',\r\n helperTextMin = '',\r\n helperTextMax = '',\r\n isInErrorCurrency,\r\n isInErrorMin,\r\n isInErrorMax,\r\n errorTextCurrency,\r\n errorTextMin,\r\n errorTextMax,\r\n onChange = () => {},\r\n}) {\r\n const [localValueMin, setLocalValueMin] = React.useState('');\r\n const [localValueMax, setLocalValueMax] = React.useState('');\r\n const lastCurrencyCode = React.useRef('');\r\n\r\n function handleValuesChange(newValues) {\r\n var filter = {};\r\n if (newValues[`${fieldName}MinAmount`]) {\r\n filter[`${fieldName}MinAmount`] = newValues[`${fieldName}MinAmount`];\r\n }\r\n\r\n if (newValues[`${fieldName}MaxAmount`]) {\r\n filter[`${fieldName}MaxAmount`] = newValues[`${fieldName}MaxAmount`];\r\n }\r\n\r\n if (newValues[`${fieldName}Currency`]) {\r\n filter[`${fieldName}Currency`] = newValues[`${fieldName}Currency`];\r\n }\r\n onChange({\r\n [`${fieldName}`]: {\r\n ...filter,\r\n },\r\n });\r\n }\r\n\r\n function handleMinValueChange({ target }) {\r\n setLocalValueMin(target.value);\r\n handleValuesChange({\r\n [`${fieldName}MinAmount`]: target.value,\r\n [`${fieldName}MaxAmount`]: localValueMax,\r\n [`${fieldName}Currency`]: lastCurrencyCode.current,\r\n });\r\n }\r\n\r\n function handleMaxValueChange({ target }) {\r\n setLocalValueMax(target.value);\r\n handleValuesChange({\r\n [`${fieldName}MinAmount`]: localValueMin,\r\n [`${fieldName}MaxAmount`]: target.value,\r\n [`${fieldName}Currency`]: lastCurrencyCode.current,\r\n });\r\n }\r\n\r\n function handleCurrencyValueChange(event) {\r\n const { value: currencyCode } = event.target;\r\n const isEnteredCodeValid = currencyOptions.some(option => option.currencyCode === currencyCode);\r\n\r\n if (\r\n (!isEnteredCodeValid || lastCurrencyCode.current === currencyCode) &&\r\n !(!!!currencyCode && lastCurrencyCode.current)\r\n ) {\r\n return;\r\n }\r\n\r\n lastCurrencyCode.current = currencyCode;\r\n\r\n handleValuesChange({\r\n [`${fieldName}MinAmount`]: localValueMin,\r\n [`${fieldName}MaxAmount`]: localValueMax,\r\n [`${fieldName}Currency`]: lastCurrencyCode.current,\r\n });\r\n }\r\n\r\n React.useEffect(() => {\r\n if (enabled && (localValueMin || localValueMax || lastCurrencyCode.current)) {\r\n handleValuesChange({\r\n [`${fieldName}MinAmount`]: localValueMin,\r\n [`${fieldName}MaxAmount`]: localValueMax,\r\n [`${fieldName}Currency`]: lastCurrencyCode.current,\r\n });\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [enabled]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n {currencyOptions.map(({ currencyCode, currencyName }) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nCurrencyFilter.propTypes = {\r\n enabled: PropTypes.bool.isRequired,\r\n fieldName: PropTypes.string.isRequired,\r\n labelCurrency: PropTypes.string,\r\n helperTextCurrency: PropTypes.string,\r\n currencyOptions: PropTypes.array,\r\n labelMin: PropTypes.string,\r\n labelMax: PropTypes.string,\r\n helperTextMin: PropTypes.string,\r\n helperTextMax: PropTypes.string,\r\n isInErrorCurrency: PropTypes.bool,\r\n isInErrorMin: PropTypes.bool,\r\n isInErrorMax: PropTypes.bool,\r\n errorTextCurrency: PropTypes.arrayOf(PropTypes.string),\r\n errorTextMin: PropTypes.arrayOf(PropTypes.string),\r\n errorTextMax: PropTypes.arrayOf(PropTypes.string),\r\n onChange: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport TextFilter from './TextFilter';\r\nimport DateFilter from './DateFilter';\r\nimport CheckboxFilter from './CheckboxFilter';\r\nimport TagsFilter from './TagsFilter';\r\nimport NumberFilter from './NumberFilter';\r\nimport CurrencyFilter from './CurrencyFilter';\r\n\r\nexport const filterType = {\r\n TEXT: 0,\r\n CHECKBOX: 1,\r\n NUMBER: 2,\r\n DATE: 3,\r\n CURRENCY: 4,\r\n TAG: 5,\r\n};\r\n\r\nexport default function FilterFactory({ enabled, filter, validationErrors = {}, onFilterValuesChange = () => {} }) {\r\n const isInError = fieldName => !!validationErrors[fieldName];\r\n\r\n function handleFilterValuesChange(changedValues) {\r\n onFilterValuesChange(changedValues);\r\n }\r\n\r\n switch (filter.filterType) {\r\n case filterType.TEXT:\r\n return (\r\n \r\n );\r\n\r\n case filterType.CHECKBOX:\r\n return (\r\n \r\n );\r\n\r\n case filterType.NUMBER:\r\n return (\r\n \r\n );\r\n\r\n case filterType.DATE:\r\n return (\r\n \r\n );\r\n\r\n case filterType.CURRENCY:\r\n return (\r\n \r\n );\r\n\r\n case filterType.TAG:\r\n return (\r\n \r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nFilterFactory.propTypes = {\r\n enabled: PropTypes.bool.isRequired,\r\n filter: PropTypes.object.isRequired,\r\n validationErrors: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]),\r\n onFilterValuesChange: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from 'react-intl';\r\nimport { Drawer, ToolbarButton } from '@blueprism/ui-core';\r\nimport { Cross, Refresh } from '@blueprism/ui-icons';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport DrawerContent from './DrawerContent';\r\nimport Filter from './Filter';\r\nimport FilterFactory from './FilterFactory';\r\nimport { yourProcesses } from 'utils/api';\r\n\r\nexport default function TableFilterDrawer({\r\n docked = false,\r\n validationErrors = {},\r\n onClose = () => {},\r\n onFiltersReset = () => {},\r\n onFiltersChange = () => {},\r\n}) {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const { getUser } = React.useContext(AuthContext);\r\n const [metaData, setMetaData] = React.useState([]);\r\n const [selectedFilters, setSelectedFilters] = React.useState([]);\r\n const updatedFilters = React.useRef({});\r\n\r\n function handleFilterValuesChange(newFilters) {\r\n updatedFilters.current = { ...updatedFilters.current, ...newFilters };\r\n const changedFilters = Object.entries(updatedFilters.current)\r\n .filter(([fieldName, value]) => {\r\n let removeValue = !!value;\r\n\r\n if (typeof value === 'object') {\r\n if (Array.isArray(value)) {\r\n removeValue = value.length !== 0;\r\n } else {\r\n removeValue = Object.keys(value).length !== 0;\r\n }\r\n }\r\n\r\n return removeValue;\r\n })\r\n .reduce((acc, [fieldName, value]) => ({ ...acc, [fieldName]: value }), {});\r\n\r\n onFiltersChange(changedFilters);\r\n }\r\n\r\n function handleDrawerClose() {\r\n onClose();\r\n }\r\n\r\n function handleResetFiltersClick() {\r\n setSelectedFilters([]);\r\n updatedFilters.current = {};\r\n onFiltersReset();\r\n }\r\n\r\n function handleSelectedFiltersChange(fieldName, checked) {\r\n setSelectedFilters(prevSelectedFilters => {\r\n if (checked) {\r\n return [...prevSelectedFilters, fieldName];\r\n }\r\n\r\n const siblingFilters = Object.entries(updatedFilters.current).filter(([sibling]) =>\r\n sibling.startsWith(fieldName)\r\n );\r\n\r\n if (siblingFilters.length > 0) {\r\n handleFilterValuesChange(siblingFilters.reduce((acc, [name]) => ({ ...acc, [name]: '' }), {}));\r\n }\r\n return prevSelectedFilters.filter(filter => filter !== fieldName);\r\n });\r\n }\r\n\r\n React.useEffect(() => {\r\n yourProcesses\r\n .getFilterMetaData(getUser)\r\n .then(response => {\r\n setMetaData(response.filters);\r\n })\r\n .catch(err => {\r\n switch (err.response?.status) {\r\n case 500:\r\n history.push('/servererror');\r\n return;\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 401:\r\n history.push('/unauthorised');\r\n return;\r\n default:\r\n console.log(err);\r\n }\r\n });\r\n }, [getUser, history]);\r\n\r\n return (\r\n \r\n \r\n }\r\n onClick={handleResetFiltersClick}\r\n />\r\n }\r\n onClick={handleDrawerClose}\r\n />\r\n \r\n }\r\n >\r\n
\r\n {metaData.map(filter => (\r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nTableFilterDrawer.propTypes = {\r\n docked: PropTypes.bool,\r\n validationErrors: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.object]),\r\n onClose: PropTypes.func,\r\n onFiltersReset: PropTypes.func,\r\n onFiltersChange: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport DialogModal from '@blueprism/ui-core/components/DialogModal';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport ErrorMessage from 'components/ErrorMessage';\r\n\r\nexport default function ErrorDialog({ title, bodyText, errorText, open = false, buttonText, onClose, onOk }) {\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n {title}}\r\n footerContent={renderFooter()}\r\n >\r\n \r\n {bodyText}\r\n \r\n );\r\n}\r\n\r\nErrorDialog.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n bodyText: PropTypes.string.isRequired,\r\n errorText: PropTypes.string.isRequired,\r\n open: PropTypes.bool,\r\n buttonText: PropTypes.string,\r\n onClose: PropTypes.func,\r\n onOk: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css } from 'styled-components';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport PATDialog from 'components/PATDialog';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\nimport Breadcrumbs from '@blueprism/ui-core/components/Breadcrumbs';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Link from '@blueprism/ui-core/components/Link';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport ErrorMessage from 'components/ErrorMessage';\r\nimport ErrorDialog from 'components/ErrorDialog';\r\nimport Toolbar from '@blueprism/ui-core/components/Toolbar';\r\nimport ToolbarButton from '@blueprism/ui-core/components/ToolbarButton';\r\nimport { ArrowLeft, ArrowRight } from '@blueprism/ui-icons';\r\nimport ButtonGroup from '@blueprism/ui-core/components/ButtonGroup';\r\nimport { spaceManagement } from 'utils/api';\r\n\r\nconst StyledUl = styled(Stack)`\r\n list-style-type: none;\r\n padding: 0;\r\n`;\r\n\r\nconst StyledBox = styled(Box)(\r\n props => css`\r\n width: 100%;\r\n `\r\n);\r\n\r\nconst FooterStack = styled(Stack)(\r\n ({ theme }) => css`\r\n border-top: 1px solid ${theme.color.structure};\r\n `\r\n);\r\n\r\nconst StyledHeader = styled(Stack)(\r\n ({ theme }) => css`\r\n padding-bottom: ${theme.globalSizes.base};\r\n border-bottom: 1px solid ${theme.color.structure};\r\n `\r\n);\r\n\r\nexport default function GroupSelectorDialog({\r\n disableAdminCheck = false,\r\n currentGroupId = -1,\r\n isOpen,\r\n onClose,\r\n onConfirm,\r\n}) {\r\n const intl = useIntl();\r\n\r\n const { getUser } = React.useContext(AuthContext);\r\n const [displayValidationError, setDisplayValidationError] = React.useState(false);\r\n const [userIsNotAdmin, setUserIsNotAdmin] = React.useState(false);\r\n const [count, setCount] = React.useState(0);\r\n const [content, setContent] = React.useState([]);\r\n const [group, setGroup] = React.useState(null);\r\n const [pageSettings, setPageSettings] = React.useState({\r\n isOpen: false,\r\n hasAutoSkippedSpaces: false,\r\n isRootGroup: false,\r\n contentId: -1,\r\n spaceId: -1,\r\n offset: 0,\r\n limit: 5,\r\n });\r\n\r\n React.useEffect(() => {\r\n setPageSettings({\r\n isOpen: isOpen,\r\n hasAutoSkippedSpaces: currentGroupId > 0,\r\n isRootGroup: false,\r\n spaceId: -1,\r\n contentId: currentGroupId,\r\n limit: 5,\r\n offset: 0,\r\n });\r\n setCount(0);\r\n setContent([]);\r\n setGroup(null);\r\n setUserIsNotAdmin(false);\r\n }, [isOpen, currentGroupId]);\r\n\r\n React.useEffect(() => {\r\n setDisplayValidationError(false);\r\n if (disableAdminCheck) {\r\n setUserIsNotAdmin(false);\r\n return;\r\n }\r\n\r\n if (group && currentGroupId === group.groupId && group.privLevel !== 2) {\r\n setUserIsNotAdmin(true);\r\n return;\r\n }\r\n\r\n setUserIsNotAdmin(false);\r\n }, [pageSettings, currentGroupId, group, disableAdminCheck]);\r\n\r\n React.useEffect(() => {\r\n if (!pageSettings.isOpen) {\r\n return;\r\n }\r\n if (pageSettings.contentId <= 0) {\r\n spaceManagement\r\n .getSpaces(getUser, pageSettings.offset, pageSettings.limit)\r\n .then(response => {\r\n if (!pageSettings.hasAutoSkippedSpaces && response.count === 1) {\r\n setGroup({\r\n spaceId: response.items[0].id,\r\n spaceName: response.items[0].name,\r\n name: '',\r\n parentGroups: [],\r\n });\r\n setPageSettings(settings => ({\r\n ...settings,\r\n hasAutoSkippedSpaces: true,\r\n isRootGroup: true,\r\n contentId: response.items[0].rootGroupId,\r\n spaceId: response.items[0].id,\r\n offset: 0,\r\n }));\r\n return;\r\n }\r\n\r\n setContent(response.items);\r\n setCount(response.count);\r\n })\r\n .catch(err => console.error(err));\r\n } else if (pageSettings.spaceId > 0) {\r\n spaceManagement\r\n .getGroupContent(getUser, pageSettings.spaceId, pageSettings.contentId, pageSettings.offset, pageSettings.limit)\r\n .then(response => {\r\n setContent(response.items);\r\n setCount(response.count);\r\n })\r\n .catch(() => {\r\n setContent([]);\r\n setCount(0);\r\n });\r\n }\r\n }, [pageSettings, getUser]);\r\n\r\n React.useEffect(() => {\r\n if (!pageSettings.isOpen) {\r\n return;\r\n }\r\n\r\n if (pageSettings.contentId > 0 && !pageSettings.isRootGroup) {\r\n spaceManagement\r\n .getGroup(getUser, pageSettings.contentId)\r\n .then(response => {\r\n setPageSettings(settings =>\r\n response.spaceId === settings.spaceId ? settings : { ...settings, spaceId: response.spaceId }\r\n );\r\n setGroup(response);\r\n })\r\n .catch(err => console.error(err));\r\n }\r\n }, [pageSettings.contentId, pageSettings.isRootGroup, getUser, pageSettings.isOpen]);\r\n\r\n function handleContentSelect(event, contentId, spaceId, isRootGroup) {\r\n event.preventDefault();\r\n setPageSettings(settings => ({\r\n ...settings,\r\n isRootGroup: isRootGroup,\r\n spaceId: spaceId,\r\n contentId: contentId,\r\n offset: 0,\r\n }));\r\n\r\n if (isRootGroup) {\r\n setGroup({\r\n contentId: contentId,\r\n rootGroupId: contentId,\r\n spaceId: spaceId,\r\n spaceName: event.target.innerText,\r\n name: '',\r\n parentGroups: [],\r\n });\r\n }\r\n }\r\n\r\n function handleNextData() {\r\n setPageSettings(settings => ({ ...settings, offset: settings.offset + settings.limit }));\r\n }\r\n\r\n function handlePreviousData() {\r\n setPageSettings(settings => ({ ...settings, offset: Math.max(0, settings.offset - settings.limit) }));\r\n }\r\n\r\n function getLinkElements() {\r\n if (!group || pageSettings.contentId <= 0) {\r\n return [\r\n \r\n \r\n ,\r\n ];\r\n }\r\n\r\n const links = [\r\n { contentId: -1, spaceId: -1, isRootGroup: true, text: intl.formatMessage({ id: 'spaces' }) },\r\n {\r\n contentId: group.rootGroupId,\r\n spaceId: group.spaceId,\r\n isRootGroup: true,\r\n text: group.spaceName,\r\n },\r\n ].concat(\r\n group.parentGroups.map(parent => ({\r\n contentId: parent.id,\r\n spaceId: group.spaceId,\r\n text: parent.name,\r\n isRootGroup: false,\r\n }))\r\n );\r\n\r\n if (!pageSettings.isRootGroup) {\r\n links.push({\r\n contentId: group.groupId,\r\n spaceId: group.spaceId,\r\n text: group.name,\r\n isRootGroup: false,\r\n });\r\n }\r\n\r\n return links.map((link, index) =>\r\n index === links.length - 1 ? (\r\n \r\n {link.text}\r\n \r\n ) : (\r\n handleContentSelect(event, link.contentId, link.spaceId, link.isRootGroup)}\r\n >\r\n {link.text}\r\n \r\n )\r\n );\r\n }\r\n\r\n function renderContent() {\r\n if ((content?.length ?? 0) === 0) {\r\n return (\r\n
  • \r\n \r\n
  • \r\n );\r\n }\r\n\r\n if (pageSettings.contentId <= 0) {\r\n return content.map(item => (\r\n
  • \r\n handleContentSelect(event, item.rootGroupId, item.id, true)}>{item.name}\r\n
  • \r\n ));\r\n }\r\n\r\n return content.map(item => (\r\n
  • \r\n handleContentSelect(event, item.id, pageSettings.spaceId, false)}>{item.name}\r\n
  • \r\n ));\r\n }\r\n\r\n function handleConfirm() {\r\n if (pageSettings.isRootGroup || pageSettings.contentId <= 0) {\r\n setDisplayValidationError('groupSelectorError');\r\n return;\r\n }\r\n\r\n if (group.privLevel === 0) {\r\n setDisplayValidationError('groupSelectorNoAccessError');\r\n return;\r\n }\r\n\r\n onConfirm(group.groupId, group.name);\r\n onClose();\r\n }\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n {intl.formatMessage(\r\n { id: 'paginationShowingRangeOfItems' },\r\n {\r\n itemName: intl.formatMessage({ id: 'groups' }),\r\n rangeBottom: pageSettings.offset + 1,\r\n rangeTop: Math.min(pageSettings.offset + pageSettings.limit, count),\r\n max: count,\r\n }\r\n )}\r\n \r\n \r\n }\r\n label={intl.formatMessage({ id: 'paginationPrev' })}\r\n onClick={handlePreviousData}\r\n disabled={pageSettings.offset <= 0}\r\n />\r\n }\r\n label={intl.formatMessage({ id: 'paginationNext' })}\r\n disabled={pageSettings.offset + pageSettings.limit >= count}\r\n onClick={handleNextData}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {getLinkElements()}\r\n \r\n }\r\n footerContent={renderFooter()}\r\n >\r\n \r\n {displayValidationError && }\r\n \r\n {renderContent()}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nGroupSelectorDialog.propTypes = {\r\n disableAdminCheck: PropTypes.bool,\r\n currentGroupId: PropTypes.number,\r\n isOpen: PropTypes.bool.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n onConfirm: PropTypes.func.isRequired,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport styled, { css } from 'styled-components';\r\nimport {\r\n DialogModal,\r\n RadioButtonGroup,\r\n RadioButton,\r\n Button,\r\n FormField,\r\n Row,\r\n Box,\r\n Text,\r\n Stack,\r\n Placeholder,\r\n} from '@blueprism/ui-core';\r\nimport { typography } from '@blueprism/ui-core/theme/units';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport ErrorMessage from 'components/ErrorMessage';\r\nimport { assessments } from 'utils/api';\r\n\r\nconst HeaderInfoContainer = styled(Box)(\r\n props => css`\r\n width: 100%;\r\n border-bottom: 1px solid ${props.theme.color.structure};\r\n `\r\n);\r\n\r\nconst BoldText = styled.h2`\r\n font-size: ${typography.body.size}em;\r\n font-weight: 700;\r\n`;\r\n\r\nconst dialogStates = { FETCHING: 'fetching', ERROR: 'error', READY: 'ready' };\r\n\r\nconst DialogHeaderContent = ({ dialogstatus }) => (\r\n \r\n \r\n \r\n);\r\n\r\nfunction DialogFooterContent({ dialogstatus, onClose, onConfirm }) {\r\n switch (dialogstatus) {\r\n case dialogStates.FETCHING:\r\n return null;\r\n\r\n case dialogStates.ERROR:\r\n return (\r\n \r\n \r\n \r\n );\r\n\r\n case dialogStates.READY:\r\n default:\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default function SetStatusDialog({ assessmentId, assessmentTitle, isOpen = false, onClose, onConfirm }) {\r\n const intl = useIntl();\r\n const { getUser } = React.useContext(AuthContext);\r\n\r\n const [validOptions, setValidOptions] = React.useState([]);\r\n const [status, setStatus] = React.useState();\r\n const [errorText, setErrorText] = React.useState('');\r\n const [dialogstatus, setDialogStatus] = React.useState(dialogStates.FETCHING);\r\n\r\n React.useEffect(() => {\r\n if (isOpen === false || assessmentId <= 0) {\r\n return;\r\n }\r\n\r\n setErrorText('');\r\n setDialogStatus(dialogStates.FETCHING);\r\n\r\n assessments\r\n .getStatusForChanging(getUser, assessmentId)\r\n .then(fetchedStatus => {\r\n setValidOptions(fetchedStatus.validOptions);\r\n setStatus(fetchedStatus.status);\r\n setDialogStatus(dialogStates.READY);\r\n })\r\n .catch(err => {\r\n if (err.response?.status === 400) {\r\n setErrorText(err.response.data);\r\n setDialogStatus(dialogStates.READY);\r\n } else if (err.response?.status === 401) {\r\n setErrorText(intl.formatMessage({ id: 'setStatusNotAdminMessage' }));\r\n setDialogStatus(dialogStates.ERROR);\r\n } else {\r\n console.log(err.message);\r\n }\r\n });\r\n }, [assessmentId, getUser, intl, isOpen]);\r\n\r\n async function handleConfirm() {\r\n try {\r\n await assessments.postStatus(getUser, assessmentId, status);\r\n onConfirm();\r\n } catch (err) {\r\n setDialogStatus(dialogStates.ERROR);\r\n\r\n if (err.response?.status === 401) {\r\n setErrorText(intl.formatMessage({ id: 'setStatusNotAdmin' }));\r\n } else {\r\n setErrorText(intl.formatMessage({ id: 'setStatusUpdateFailed' }));\r\n console.log(err.message);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n function handleClose() {\r\n onClose();\r\n }\r\n\r\n const renderOptions = React.useMemo(\r\n () =>\r\n Object.entries(validOptions).map(([key, value]) => (\r\n \r\n )),\r\n [validOptions]\r\n );\r\n\r\n function handleGroupChange(event) {\r\n setStatus(Number(event.target.value));\r\n }\r\n\r\n function DialogContent() {\r\n switch (dialogstatus) {\r\n case dialogStates.FETCHING:\r\n return ;\r\n\r\n case dialogStates.ERROR:\r\n return (\r\n <>\r\n \r\n {assessmentTitle}\r\n \r\n );\r\n\r\n case dialogStates.READY:\r\n default:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {assessmentTitle}\r\n \r\n \r\n \r\n {renderOptions}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n return (\r\n }\r\n footerContent={\r\n \r\n }\r\n >\r\n \r\n \r\n );\r\n}\r\n\r\nSetStatusDialog.propTypes = {\r\n assessmentId: PropTypes.number.isRequired,\r\n assessmentTitle: PropTypes.string.isRequired,\r\n isOpen: PropTypes.bool.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n onConfirm: PropTypes.func.isRequired,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from 'react-intl';\r\nimport { ButtonGroup, Toolbar, ToolbarButton, Badge } from '@blueprism/ui-core';\r\nimport { FolderGroup, Filter as FilterIcon, ArrangeVertical, StateChange, Expand, Export } from '@blueprism/ui-icons';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport { YourProcessesContext, defaultColumns } from 'contexts/YourProcessesContextProvider';\r\nimport ColumnToggleDrawer from './ColumnToggleDrawer';\r\nimport TableFilterDrawer from './TableFilterDrawer';\r\nimport GroupSelectorDialog from 'components/GroupSelector';\r\nimport SetStatusDialog from 'components/SetStatusDialog';\r\nimport { saveAs } from 'file-saver';\r\nimport { assessments } from 'utils/api';\r\n\r\nexport default function YourProcessesTableToolbar({\r\n selectedRowId,\r\n selectedColumns = [],\r\n onSelectedColumnsChange = () => {},\r\n onShowDetailsChanged = () => {},\r\n}) {\r\n const intl = useIntl();\r\n const { state, columns, requestUpdate } = React.useContext(YourProcessesContext);\r\n const { getUser } = React.useContext(AuthContext);\r\n const [isGroupSelectorDialogOpen, setIsGroupSelectorDialogOpen] = React.useState(false);\r\n const [isSetStatusDialogOpen, setIsSetStatusDialogOpen] = React.useState(false);\r\n const [columnToggleDrawerDocked, setColumnToggleDrawerDocked] = React.useState(true);\r\n const [filterTableDrawerDocked, setFilterTableDrawerDocked] = React.useState(true);\r\n const [filters, setFilters] = React.useState({});\r\n const [filterCount, setFilterCount] = React.useState(0);\r\n\r\n const selectedAssessment = state.assessments.items.find(row => row.id.toString() === selectedRowId) ?? {};\r\n\r\n function handleEditTableDrawerToggleClick() {\r\n setFilterTableDrawerDocked(true);\r\n setColumnToggleDrawerDocked(drawerDocked => !drawerDocked);\r\n }\r\n\r\n function handleFilterTableDrawerToggleClick() {\r\n setColumnToggleDrawerDocked(true);\r\n setFilterTableDrawerDocked(drawerDocked => !drawerDocked);\r\n }\r\n\r\n function handleChangeGroupClick() {\r\n setIsGroupSelectorDialogOpen(true);\r\n }\r\n\r\n function handleSetStatusClick() {\r\n setIsSetStatusDialogOpen(true);\r\n }\r\n\r\n function handleExportClick() {\r\n function generateFileName() {\r\n const now = new Date();\r\n return `${intl.formatMessage({ id: 'yourProcesses_export_filename' })}-${now.getFullYear()}-${\r\n now.getMonth() + 1\r\n }-${now.getDate()}-${now.getHours()}-${now.getMinutes()}-${now.getSeconds()}.csv`;\r\n }\r\n\r\n assessments.exportAssessments(getUser, filters).then(response => {\r\n const blob = new Blob([response], { type: 'text/csv', encoding: 'UTF-8' });\r\n saveAs(blob, generateFileName());\r\n });\r\n }\r\n\r\n function handleGroupSelectorDialogClose() {\r\n setIsGroupSelectorDialogOpen(false);\r\n }\r\n\r\n function handleSetStatusDialogClose() {\r\n setIsSetStatusDialogOpen(false);\r\n }\r\n\r\n function handleSetStatusDialogConfirm() {\r\n requestUpdate({});\r\n setIsSetStatusDialogOpen(false);\r\n }\r\n\r\n function handleColumnToggerDrawerClose() {\r\n setColumnToggleDrawerDocked(true);\r\n }\r\n\r\n function handleFilterDrawerClose() {\r\n setFilterTableDrawerDocked(true);\r\n }\r\n\r\n function handleViewDetailsClick() {\r\n onShowDetailsChanged(true);\r\n }\r\n\r\n async function handleGroupSelectorDialogConfirm(newGroupId) {\r\n try {\r\n await assessments.changeGroup(getUser, selectedAssessment.id, newGroupId);\r\n } catch (err) {\r\n console.log(err);\r\n }\r\n requestUpdate({});\r\n }\r\n\r\n function handleSelectedColumnsChange(newColumns) {\r\n onSelectedColumnsChange(newColumns);\r\n }\r\n\r\n function handleFiltersReset() {\r\n handleFiltersChange({});\r\n }\r\n\r\n function handleFiltersChange(changedFilters) {\r\n setFilterCount(\r\n Object.entries(changedFilters).filter(\r\n ([key]) => !!changedFilters[key] && (typeof changedFilters[key] !== 'string' || changedFilters[key].length > 1)\r\n ).length\r\n );\r\n setFilters(changedFilters);\r\n requestUpdate({ filters: changedFilters });\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n }\r\n >\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n \r\n\r\n \r\n\r\n \r\n \r\n {selectedAssessment?.id && (\r\n <>\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n}\r\n\r\nYourProcessesTableToolbar.propTypesd = {\r\n selectedRowId: PropTypes.oneOf([PropTypes.string, PropTypes.number]),\r\n selectedColumns: PropTypes.arrayOf(PropTypes.string),\r\n onSelectedColumnsChange: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css } from 'styled-components';\r\nimport { Row, Placeholder } from '@blueprism/ui-core';\r\n\r\nconst OpacityRow = styled(Row)(\r\n props => css`\r\n opacity: ${props.opacity};\r\n `\r\n);\r\n\r\nconst LoadingState = ({ lines = 6, pauseAnimation = false }) =>\r\n Array.from({ length: lines + 1 }, (_, index) => {\r\n const height = index === 0 ? '30px' : '3.5rem';\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n });\r\n\r\nexport default LoadingState;\r\n\r\nLoadingState.propTypes = {\r\n lines: PropTypes.number,\r\n pauseAnimation: PropTypes.bool,\r\n};\r\n","import * as React from 'react';\r\n\r\nexport const Error400 = ({ width, height }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled from 'styled-components';\r\n\r\nconst PlugSocket = styled.g`\r\n stroke: #0a5280;\r\n stroke-width: 2;\r\n fill: none;\r\n`;\r\n\r\nconst PlugnWire = styled.g``;\r\n\r\nconst Prismy = styled.g`\r\n stroke: #126285;\r\n`;\r\n\r\nexport const ErrorTable = ({ width, height }) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nErrorTable.propTypes = {\r\n width: PropTypes.string,\r\n height: PropTypes.string,\r\n};\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, Text, Center } from '@blueprism/ui-core';\r\nimport { Error400 } from 'images/Error400';\r\nimport { ErrorTable } from 'images/ErrorTable';\r\nimport LoadingState from 'components/TableStates/LoadingState';\r\n\r\nconst Container = styled(Stack)`\r\n position: relative;\r\n`;\r\n\r\nconst Content = styled(Stack)`\r\n border-radius: 0.5rem;\r\n background: white;\r\n`;\r\n\r\nconst Overlay = styled(Stack)`\r\n position: absolute;\r\n`;\r\n\r\nconst StyledText = styled(Text)`\r\n font-weight: 900;\r\n margin-top: 1.5rem;\r\n`;\r\n\r\nconst ErrorState = ({ lines = 6, text = '', errorCode }) => {\r\n let ErrorPic;\r\n switch (errorCode) {\r\n case '400':\r\n ErrorPic = () => ;\r\n break;\r\n case '500':\r\n ErrorPic = () => ;\r\n break;\r\n default:\r\n ErrorPic = () => ;\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n {text}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ErrorState;\r\n\r\nLoadingState.propTypes = {\r\n lines: PropTypes.number,\r\n text: PropTypes.string,\r\n};\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport PropTypes from 'prop-types';\r\nimport { Stack, Text, Box } from '@blueprism/ui-core';\r\nimport LoadingState from 'components/TableStates/LoadingState';\r\n\r\nconst Container = styled(Stack)`\r\n position: relative;\r\n`;\r\n\r\nconst Content = styled(Stack)`\r\n border-radius: 0.5rem;\r\n background: white;\r\n`;\r\n\r\nconst Overlay = styled(Stack)`\r\n position: absolute;\r\n margin: 0;\r\n`;\r\n\r\nconst EmptyState = ({ lines = 6, text = '', title = '' }) => (\r\n \r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n {text}\r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default EmptyState;\r\n\r\nLoadingState.propTypes = {\r\n lines: PropTypes.number,\r\n text: PropTypes.string,\r\n title: PropTypes.string,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport LoadingState from 'components/TableStates/LoadingState';\r\nimport ErrorState from 'components/TableStates/ErrorState';\r\nimport EmptyState from 'components/TableStates/EmptyState';\r\nimport { dataStates as tableDataStates } from '../../utils/dataStates';\r\nimport Table from '@blueprism/ui-core/components/Table';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\n\r\nexport default function TableLoader({\r\n columns,\r\n emptyStateTitle,\r\n emptyStateText,\r\n errorStateText,\r\n onHeaderClick,\r\n onRowSelectionChange,\r\n rowData,\r\n selectedIds,\r\n selectRows,\r\n sortColumns,\r\n tableLayout,\r\n tableStatus,\r\n errorCode,\r\n}) {\r\n switch (tableStatus) {\r\n case tableDataStates.SUCCESS:\r\n return rowData.length > 0 ? (\r\n \r\n ) : (\r\n \r\n );\r\n case tableDataStates.ERROR:\r\n return ;\r\n case tableDataStates.INIT:\r\n case tableDataStates.FETCHING:\r\n default:\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nTableLoader.propTypes = {\r\n columns: PropTypes.array,\r\n emptyStateTitle: PropTypes.string,\r\n emptyStateText: PropTypes.string,\r\n errorStateText: PropTypes.string,\r\n onHeaderClick: PropTypes.func,\r\n onRowSelectionChange: PropTypes.func,\r\n rowData: PropTypes.array,\r\n selectedIds: PropTypes.array,\r\n selectRows: PropTypes.bool,\r\n sortColumns: PropTypes.bool,\r\n tableStatus: PropTypes.oneOf(Object.values(tableDataStates)),\r\n tableLayout: PropTypes.string,\r\n errorCode: PropTypes.string,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { useIntl } from 'react-intl';\r\nimport { Stack, Box } from '@blueprism/ui-core';\r\nimport TablePagination from 'components/TablePagination';\r\nimport { YourProcessesContext } from 'contexts/YourProcessesContextProvider';\r\nimport TableLoader from 'components/TableStates/TableLoader';\r\nimport { toUInt } from 'utils/helper';\r\nconst TableWrapper = styled(Box)`\r\n overflow-x: auto;\r\n`;\r\n\r\nexport default function YourProcessesTable({\r\n selectedColumns = [],\r\n selectedRowIds = [],\r\n onRowSelectionChange = () => {},\r\n}) {\r\n const intl = useIntl();\r\n const { columns, status, state, requestUpdate, setStoredColumnsForUser } = React.useContext(YourProcessesContext);\r\n const [paging, setPaging] = React.useState(state.paging);\r\n const rowData = React.useMemo(\r\n () => ({\r\n paging: state.paging,\r\n data: state.assessments.items.map(assessment => ({\r\n id: assessment.id.toString(),\r\n Recommendation: assessment.recommendation.title,\r\n Title: assessment.processTitle,\r\n Type: assessment.processType,\r\n Analyst: assessment.processAnalyst,\r\n Owner: assessment.processOwner,\r\n ProcessId: assessment.processId,\r\n BusinessFunction: assessment.businessFunction,\r\n ReasonForAutomating: assessment.reasonForAutomating,\r\n CreateDate: intl.formatDate(assessment.createdAt),\r\n Group: assessment.folderName,\r\n CapitalSavings:\r\n assessment.currency && assessment.potentialSavingCost !== null\r\n ? intl.formatNumber(assessment.potentialSavingCost, {\r\n style: 'currency',\r\n currency: assessment.currency,\r\n })\r\n : assessment.potentialSavingCost,\r\n HoursSavings: assessment.potentialSavingHours,\r\n ApScore: assessment.recommendation.apScore\r\n ? intl.formatNumber(assessment.recommendation.apScore, { minimumFractionDigits: 1 })\r\n : null,\r\n IeScore: assessment.recommendation.ieScore\r\n ? intl.formatNumber(assessment.recommendation.ieScore, { minimumFractionDigits: 1 })\r\n : null,\r\n Status: assessment.status,\r\n Space: assessment.space,\r\n Tags: assessment.tags,\r\n })),\r\n }),\r\n [intl, state.assessments.items, state.paging]\r\n );\r\n\r\n React.useEffect(() => {\r\n setPaging(currentPaging =>\r\n currentPaging.limit === rowData.paging.limit && currentPaging.offset === rowData.paging.offset\r\n ? currentPaging\r\n : rowData.paging\r\n );\r\n }, [rowData.paging]);\r\n\r\n function handleTablePagingChange({ offset = paging.offset, limit = paging.limit }) {\r\n setPaging({ offset, limit });\r\n requestUpdate({ offset, limit });\r\n }\r\n\r\n function handlePageLimitChange(limit) {\r\n handleTablePagingChange({ limit: toUInt(limit, 25) });\r\n }\r\n\r\n function handleNextPageClick() {\r\n handleTablePagingChange({ offset: paging.offset + paging.limit });\r\n }\r\n\r\n function handlePreviousPageClick() {\r\n handleTablePagingChange({ offset: Math.max(0, paging.offset - paging.limit) });\r\n }\r\n\r\n function handleHeaderClick(sortColumn) {\r\n const [column, direction] = Object.entries(sortColumn)[0];\r\n const sorting = direction === 'none' ? null : { column, direction };\r\n\r\n setStoredColumnsForUser({ selectedColumns, sorting });\r\n requestUpdate({ sorting });\r\n }\r\n\r\n function handleRowSelectionChange(row) {\r\n onRowSelectionChange(row);\r\n }\r\n\r\n return (\r\n \r\n \r\n selectedColumns.includes(column.accessor))}\r\n selectedIds={selectedRowIds}\r\n onRowSelectionChange={handleRowSelectionChange}\r\n onHeaderClick={handleHeaderClick}\r\n />\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nYourProcessesTable.propTypes = {\r\n selectedColumns: PropTypes.array,\r\n selectedRowIds: PropTypes.arrayOf(PropTypes.string),\r\n onRowSelectionChange: PropTypes.func,\r\n};\r\n","import React from 'react';\r\n\r\nimport YourProcessesToolbar from './YourProcessesTableToolbar';\r\nimport YourProcessesTable from './YourProcessesTable';\r\nimport { YourProcessesContext } from 'contexts/YourProcessesContextProvider';\r\n\r\nexport default function YourProcessesTableContainer({\r\n onRowSelectionChange = () => {},\r\n selectedRowIds = [],\r\n onShowDetailsChanged = () => {},\r\n}) {\r\n const { getStoredColumnsForUser, setStoredColumnsForUser } = React.useContext(YourProcessesContext);\r\n\r\n const [selectedColumns, setSelectedColumns] = React.useState(getStoredColumnsForUser().selectedColumns);\r\n\r\n function handleSelectedColumnsChange(columns) {\r\n setStoredColumnsForUser({ selectedColumns: columns });\r\n setSelectedColumns(columns);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport { Row, Text, Button } from '@blueprism/ui-core';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport PATDialog from 'components/PATDialog';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport { assessments } from 'utils/api';\r\n\r\nexport default function RecommendationDescriptionDialog({ assessmentId, onClose, open }) {\r\n const { getUser } = React.useContext(AuthContext);\r\n const [recommendation, setRecommendation] = React.useState({});\r\n\r\n React.useEffect(() => {\r\n assessments\r\n .getRecommendation(getUser, assessmentId)\r\n .then(response => {\r\n setRecommendation(response);\r\n })\r\n .catch(err => console.error(err));\r\n }, [getUser, assessmentId]);\r\n\r\n function handleOkClick() {\r\n onClose();\r\n }\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n footerContent={renderFooter()}\r\n >\r\n {recommendation.description}\r\n \r\n );\r\n}\r\n\r\nRecommendationDescriptionDialog.propTypes = {\r\n assessmentId: PropTypes.string.isRequired,\r\n onClose: PropTypes.func.isRequired,\r\n open: PropTypes.bool.isRequired,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport { useHistory } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\nimport { Stack, Box, Row, ToolbarButton, Text, Cluster, Button } from '@blueprism/ui-core';\r\nimport { Cross, List as ListIcon } from '@blueprism/ui-icons';\r\nimport GaugeChart from '@blueprism/ui-charts/components/GaugeChart';\r\nimport { YourProcessesContext } from 'contexts/YourProcessesContextProvider';\r\nimport RecommendationDescriptionDialog from './RecommendationDescriptionDialog';\r\nimport { getIcon } from './Banner';\r\nimport { typography } from '@blueprism/ui-core/theme/units';\r\n\r\nconst Content = styled(Stack)`\r\n min-width: 90%;\r\n`;\r\n\r\nconst StyledDescriptionDetail = styled.dd(\r\n props =>\r\n `\r\n font-size: ${props.headline ? typography.mega.size : typography.bodyL.size}rem;\r\n font-weight: 900;\r\n `\r\n);\r\n\r\nexport default function YourProcessesDetails({ assessmentId, onShowDetailsChanged }) {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const { state } = React.useContext(YourProcessesContext);\r\n const [isDialogOpen, setIsDialogOpen] = React.useState(false);\r\n\r\n const assessment = state.assessments.items.find(process => process.id.toString() === assessmentId);\r\n\r\n function handleDialogClose() {\r\n setIsDialogOpen(false);\r\n }\r\n\r\n function handleDialogOpen() {\r\n setIsDialogOpen(true);\r\n }\r\n\r\n function handleCloseDetails() {\r\n onShowDetailsChanged(false);\r\n }\r\n\r\n function handleViewSummaryClick() {\r\n history.push(`/process-assessment/${assessment.id}/summary`);\r\n }\r\n\r\n const details = {\r\n hoursSavings: assessment.potentialSavingHours,\r\n capitalSavings: assessment.currency\r\n ? intl.formatNumber(assessment.potentialSavingCost, {\r\n style: 'currency',\r\n currency: assessment.currency,\r\n })\r\n : assessment.potentialSavingCost,\r\n analyst: assessment.processAnalyst,\r\n owner: assessment.processOwner,\r\n createdDate: intl.formatDate(assessment.createdAt),\r\n status: assessment.status,\r\n space: assessment.space,\r\n group: assessment.folderName,\r\n processId: assessment.processId,\r\n type: assessment.processType,\r\n businessFunction: assessment.businessFunction,\r\n reasonForAutomating: assessment.reasonForAutomating,\r\n tags: assessment.tags,\r\n };\r\n\r\n const getDetails = () => {\r\n const filteredDetails = Object.entries(details).filter(([, value]) => value !== null && value !== '');\r\n return filteredDetails.map((detail, index) => (\r\n \r\n
    \r\n \r\n
    \r\n \r\n {detail[1]}\r\n \r\n
    \r\n ));\r\n };\r\n\r\n const showIncomplete = () => {\r\n return (\r\n \r\n \r\n \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {assessment.processTitle}\r\n \r\n \r\n }\r\n />\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n {getIcon(assessment.recommendation.recommendation)}\r\n {assessment.recommendation.title}\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n {assessment.recommendation.recommendation !== 0 ? getDetails() : showIncomplete()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n );\r\n}\r\n\r\nYourProcessesDetails.propTypes = {\r\n assessmentId: PropTypes.string,\r\n onShowDetailsChanged: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport YourProcessesContextProvider from 'contexts/YourProcessesContextProvider';\r\nimport Banner from './Banner';\r\nimport YourProcessesTableContainer from './YourProcessesTableContainer';\r\nimport useTableRowSelection from 'utils/useTableRowSelection';\r\nimport YourProcessesDetails from './YourProcessesDetails';\r\n\r\nconst debounceDelay = 500;\r\n\r\nconst YourProcesses = () => {\r\n const { selectedRowIds, onRowSelectionChange } = useTableRowSelection([], true);\r\n const [showDetails, setShowDetails] = React.useState(false);\r\n\r\n function handleRowSelectionChange(event) {\r\n onRowSelectionChange(event);\r\n }\r\n\r\n function handleShowDetailsChanged(newShowDetails) {\r\n setShowDetails(newShowDetails);\r\n }\r\n\r\n function renderContent() {\r\n if (showDetails) {\r\n return ;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {renderContent()}\r\n \r\n );\r\n};\r\nexport default YourProcesses;\r\n","import React, { createContext, useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useHistory } from 'react-router';\r\nimport { useIntl } from 'react-intl';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport { dataStates as tableDataStates } from '../utils/dataStates';\r\nimport { spaceManagement } from 'utils/api';\r\n\r\nexport const GroupsContext = createContext();\r\n\r\nexport default function GroupsContextProvider({ children }) {\r\n const history = useHistory();\r\n const intl = useIntl();\r\n const { getUser } = React.useContext(AuthContext);\r\n const [group, setGroup] = useState({\r\n isActive: false,\r\n\r\n spaceId: null,\r\n parentId: null,\r\n isSpaceAdmin: false,\r\n\r\n groups: null,\r\n isAddOpen: false,\r\n isEditOpen: false,\r\n isRemoveOpen: false,\r\n\r\n offset: null,\r\n limit: null,\r\n });\r\n\r\n const [tableStatus, setTableStatus] = React.useState(tableDataStates.INIT);\r\n\r\n useEffect(() => {\r\n if (\r\n !group.isActive ||\r\n group.groups ||\r\n group.parentId == null ||\r\n group.limit == null ||\r\n group.offset == null ||\r\n group.spaceId == null\r\n ) {\r\n return;\r\n }\r\n\r\n spaceManagement\r\n .getGroupContent(getUser, group.spaceId, group.parentId, group.offset, group.limit)\r\n .then(response => {\r\n const newGroup = { ...group, groups: response };\r\n setGroup(newGroup);\r\n setTableStatus(tableDataStates.SUCCESS);\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n setTableStatus(tableDataStates.ERROR);\r\n });\r\n }, [group, getUser]);\r\n\r\n const updateGroupParams = (limit, offset) => {\r\n if (group.limit === limit && group.offset === offset) {\r\n return;\r\n }\r\n\r\n const newGroup = { ...group, limit, offset, groups: null };\r\n setGroup(newGroup);\r\n };\r\n\r\n const updateGroupsSpace = (spaceId, parentId, isAdmin) => {\r\n if (spaceId === group.spaceId && parentId === group.parentId && isAdmin === group.isSpaceAdmin) {\r\n return;\r\n }\r\n setGroup({ ...group, spaceId, parentId, isSpaceAdmin: isAdmin, groups: null });\r\n };\r\n\r\n const openAddDialog = () => setGroup({ ...group, isAddOpen: true });\r\n const handleAddClose = () => setGroup({ ...group, isAddOpen: false });\r\n const addGroup = (groupIdParam, groupName, clearSelection = () => {}) =>\r\n spaceManagement\r\n .addGroup(getUser, groupIdParam, groupName)\r\n .then(() => {\r\n setGroup({ ...group, isAddOpen: false, groups: null });\r\n clearSelection();\r\n })\r\n .catch(err => {\r\n switch (err?.response?.status) {\r\n case 401:\r\n return { dialogError: intl.formatMessage({ id: 'addGroup401' }) };\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 500:\r\n return { dialogError: intl.formatMessage({ id: 'addGroup500' }) };\r\n default:\r\n if (err.response) {\r\n return err.response.data;\r\n }\r\n\r\n if (err.message) {\r\n console.log(err.message);\r\n }\r\n\r\n return;\r\n }\r\n });\r\n\r\n const openEditDialog = () => setGroup({ ...group, isEditOpen: true });\r\n const handleEditClose = () => setGroup({ ...group, isEditOpen: false });\r\n const editGroup = (groupId, newName, clearSelection = () => {}) =>\r\n spaceManagement\r\n .editGroup(getUser, groupId, newName)\r\n .then(() => {\r\n setGroup({ ...group, isEditOpen: false, groups: null });\r\n clearSelection();\r\n })\r\n .catch(err => {\r\n switch (err?.response?.status) {\r\n case 401:\r\n return { dialogError: intl.formatMessage({ id: 'editGroup401' }) };\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 500:\r\n return { dialogError: intl.formatMessage({ id: 'editGroup500' }) };\r\n default:\r\n if (err.response) {\r\n return err.response.data;\r\n }\r\n\r\n if (err.message) {\r\n console.log(err.message);\r\n }\r\n\r\n return;\r\n }\r\n });\r\n\r\n const setGroupsActive = isActiveParam => {\r\n if (isActiveParam === group.isActive) {\r\n return;\r\n }\r\n setGroup({ ...group, isActive: isActiveParam });\r\n };\r\n\r\n const openRemoveDialog = () => setGroup({ ...group, isRemoveOpen: true });\r\n const handleRemoveClose = () => setGroup({ ...group, isRemoveOpen: false });\r\n const removeGroup = (groupIdParam, clearSelection = () => {}) =>\r\n spaceManagement\r\n .removeGroup(getUser, groupIdParam)\r\n .then(() => {\r\n setGroup({ ...group, isRemoveOpen: false, groups: null });\r\n clearSelection();\r\n })\r\n .catch(err => {\r\n switch (err.response?.status) {\r\n case 400:\r\n return { error400: err.response.data };\r\n case 401:\r\n return { dialogError: intl.formatMessage({ id: 'removeGroup401' }) };\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 500:\r\n return { dialogError: intl.formatMessage({ id: 'removeGroup500' }) };\r\n\r\n default:\r\n if (err.message) {\r\n console.log(err.message);\r\n }\r\n setGroup({ ...group, isRemoveOpen: false, groups: null });\r\n return;\r\n }\r\n });\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nGroupsContextProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useIntl } from 'react-intl';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport { UserContext } from 'contexts/UserContext';\r\nimport { spaceManagement } from 'utils/api';\r\nimport { dataStates as tableDataStates } from '../utils/dataStates';\r\n\r\nexport const UsersContext = React.createContext();\r\n\r\nexport default function UsersContextProvider({ children }) {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const { user } = React.useContext(UserContext);\r\n const { getUser } = React.useContext(AuthContext);\r\n const [tableStatus, setTableStatus] = React.useState(tableDataStates.INIT);\r\n\r\n const [userContext, setUserContext] = React.useState({\r\n isActive: false,\r\n spaceId: null,\r\n users: null,\r\n isAddOpen: false,\r\n isEditOpen: false,\r\n isRemoveOpen: false,\r\n offset: null,\r\n limit: null,\r\n alertText: '',\r\n isAlertOpen: false,\r\n });\r\n\r\n React.useEffect(() => {\r\n if (userContext.isActive && !userContext.users && userContext.spaceId) {\r\n spaceManagement\r\n .getSpaceUsers(getUser, userContext.spaceId, userContext.offset, userContext.limit)\r\n .then(response => {\r\n setUserContext({ ...userContext, users: response });\r\n setTableStatus(tableDataStates.SUCCESS);\r\n })\r\n .catch(err => {\r\n if (err.response && err.response.status && err.response.status === 401) {\r\n history.replace(`/your-spaces/space/${userContext.spaceId}/groups`);\r\n } else {\r\n console.error(err);\r\n setTableStatus(tableDataStates.ERROR);\r\n }\r\n });\r\n }\r\n }, [userContext, history, getUser]);\r\n\r\n const reloadUsers = () => setUserContext({ ...userContext, users: null });\r\n const openAddDialog = () => setUserContext({ ...userContext, isAddOpen: true });\r\n const handleAddClose = () => setUserContext({ ...userContext, isAddOpen: false });\r\n\r\n const addSpaceUser = (email, isAdmin, clearSelection = () => {}) =>\r\n spaceManagement\r\n .addSpaceUser(getUser, userContext.spaceId, email, isAdmin)\r\n .then(r => {\r\n setUserContext({ ...userContext, isAddOpen: false, users: null });\r\n clearSelection();\r\n })\r\n .catch(err => {\r\n switch (err?.response?.status) {\r\n case 400:\r\n return err.response.data;\r\n case 401:\r\n return { dialogError: intl.formatMessage({ id: 'addSpaceUser401' }) };\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 404:\r\n return err.response.data;\r\n case 409:\r\n return { dialogError: err.response.data };\r\n case 500:\r\n return { dialogError: intl.formatMessage({ id: 'addSpaceUser500' }) };\r\n default:\r\n setUserContext({ ...userContext, isAddOpen: false });\r\n break;\r\n }\r\n });\r\n\r\n const openEditDialog = selectedUser =>\r\n setUserContext({\r\n ...userContext,\r\n isEditOpen: true,\r\n });\r\n const handleEditClose = () => setUserContext({ ...userContext, isEditOpen: false });\r\n const editSpaceUser = (selectedUser, isAdmin, clearSelection) =>\r\n spaceManagement\r\n .editSpaceUser(getUser, userContext.spaceId, selectedUser.member.userId, isAdmin)\r\n .then(() => {\r\n if (!isAdmin && selectedUser.member.userId === user.details.userId) {\r\n setUserContext({\r\n ...userContext,\r\n isEditOpen: false,\r\n users: null,\r\n isActive: false,\r\n });\r\n } else {\r\n setUserContext({ ...userContext, isEditOpen: false, users: null });\r\n }\r\n clearSelection();\r\n })\r\n .catch(err => {\r\n switch (err?.response?.status) {\r\n case 401:\r\n return { dialogError: intl.formatMessage({ id: 'editSpaceUser401' }) };\r\n case 403:\r\n history.push('/login');\r\n return;\r\n\r\n case 409:\r\n setUserContext({\r\n ...userContext,\r\n isAlertOpen: true,\r\n alertText: intl.formatMessage({ id: 'spaceMembers1AdminRequired' }),\r\n isEditOpen: false,\r\n });\r\n return;\r\n case 500:\r\n return { dialogError: intl.formatMessage({ id: 'editSpaceUser500' }) };\r\n\r\n default:\r\n setUserContext({ ...userContext, isEditOpen: false });\r\n break;\r\n }\r\n });\r\n\r\n const openRemoveDialog = () => setUserContext({ ...userContext, isRemoveOpen: true });\r\n const handleRemoveClose = () => setUserContext({ ...userContext, isRemoveOpen: false });\r\n const removeSpaceUser = (userId, clearSelection = () => {}) =>\r\n spaceManagement\r\n .removeSpaceUser(getUser, userContext.spaceId, userId)\r\n .then(() => {\r\n if (userId === user.details.userId) {\r\n setUserContext({ ...userContext, isRemoveOpen: false });\r\n history.push(`/your-spaces`);\r\n } else {\r\n setUserContext({ ...userContext, isRemoveOpen: false, users: null });\r\n clearSelection();\r\n }\r\n })\r\n .catch(err => {\r\n switch (err?.response?.status) {\r\n case 401:\r\n return { dialogError: intl.formatMessage({ id: 'removeSpaceUser401' }) };\r\n case 403:\r\n history.push('/login');\r\n return;\r\n\r\n case 409:\r\n setUserContext({\r\n ...userContext,\r\n isAlertOpen: true,\r\n alertText: intl.formatMessage({ id: 'spaceMembers1AdminRequired' }),\r\n isRemoveOpen: false,\r\n });\r\n return;\r\n case 500:\r\n return { dialogError: intl.formatMessage({ id: 'removeSpaceUser500' }) };\r\n\r\n default:\r\n setUserContext({ ...userContext, isRemoveOpen: false });\r\n break;\r\n }\r\n });\r\n\r\n const onAlertOk = () => setUserContext({ ...userContext, isAlertOpen: false });\r\n\r\n const setUsersActive = isActiveParam => {\r\n if (isActiveParam === userContext.isActive) {\r\n return;\r\n }\r\n setUserContext({ ...userContext, isActive: isActiveParam });\r\n };\r\n\r\n const updateUserParams = (spaceId, limit, offset) => {\r\n if (userContext.spaceId === spaceId && userContext.limit === limit && userContext.offset === offset) {\r\n return;\r\n }\r\n\r\n setUserContext({ ...userContext, spaceId, limit, offset, users: null });\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nUsersContextProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import React, { createContext, useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from 'react-intl';\r\nimport { useHistory } from 'react-router';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport { dataStates as tableDataStates } from '../utils/dataStates';\r\nimport { spaceManagement } from 'utils/api';\r\n\r\nexport const TeamsContext = createContext();\r\n\r\nexport default function TeamsContextProvider({ children }) {\r\n const history = useHistory();\r\n const intl = useIntl();\r\n const { getUser } = React.useContext(AuthContext);\r\n const [team, setTeam] = useState({\r\n isActive: false,\r\n spaceId: null,\r\n teams: null,\r\n isAddOpen: false,\r\n isEditOpen: false,\r\n isRemoveOpen: false,\r\n offset: null,\r\n limit: null,\r\n });\r\n\r\n const [tableStatus, setTableStatus] = React.useState(tableDataStates.INIT);\r\n\r\n useEffect(() => {\r\n if (team.isActive && !team.teams && team.spaceId && team.limit != null && team.offset != null) {\r\n spaceManagement\r\n .getSpaceTeams(getUser, team.spaceId, team.offset, team.limit)\r\n .then(response => {\r\n setTeam({ ...team, teams: response });\r\n setTableStatus(tableDataStates.SUCCESS);\r\n })\r\n .catch(err => {\r\n if (err.response?.status === 401) {\r\n history.replace(`/space/${team.spaceId}/groups`);\r\n } else {\r\n console.error(err);\r\n setTableStatus(tableDataStates.ERROR);\r\n }\r\n });\r\n }\r\n }, [history, team, getUser]);\r\n\r\n const updateTeamParams = (spaceId, limit, offset) => {\r\n if (team.spaceId === spaceId && team.limit === limit && team.offset === offset) {\r\n return;\r\n }\r\n setTeam({ ...team, spaceId, limit, offset, teams: null });\r\n };\r\n\r\n const openAddDialog = () => setTeam({ ...team, isAddOpen: true });\r\n const closeAddDialog = () => setTeam({ ...team, isAddOpen: false });\r\n\r\n const addTeam = (teamName, clearSelection = () => {}) =>\r\n spaceManagement\r\n .addTeam(getUser, team.spaceId, teamName)\r\n .then(() => {\r\n setTeam({ ...team, isAddOpen: false, teams: null });\r\n clearSelection();\r\n })\r\n .catch(err => {\r\n switch (err.response?.status) {\r\n case 401:\r\n return { dialogError: intl.formatMessage({ id: 'addTeam401' }) };\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 500:\r\n return { dialogError: intl.formatMessage({ id: 'addTeam500' }) };\r\n default:\r\n if (err.response?.data?.name) {\r\n return { name: err.response?.data?.name };\r\n }\r\n return;\r\n }\r\n });\r\n\r\n const editTeam = (teamName, teamId, clearSelection = () => {}) =>\r\n spaceManagement\r\n .editTeam(getUser, teamId, teamName)\r\n .then(() => {\r\n setTeam({ ...team, isEditOpen: false, teams: null });\r\n clearSelection();\r\n })\r\n .catch(err => {\r\n switch (err?.response?.status) {\r\n case 401:\r\n return { dialogError: intl.formatMessage({ id: 'editTeam401' }) };\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 500:\r\n return { dialogError: intl.formatMessage({ id: 'editTeam500' }) };\r\n default:\r\n if (err.response?.data?.name) {\r\n return { name: err.response?.data?.name };\r\n }\r\n return;\r\n }\r\n });\r\n\r\n const removeTeam = (teamId, clearSelection = () => {}) =>\r\n spaceManagement\r\n .removeTeam(getUser, teamId)\r\n .then(() => {\r\n setTeam({ ...team, isRemoveOpen: false, teams: null });\r\n clearSelection();\r\n })\r\n .catch(err => {\r\n switch (err.response?.status) {\r\n case 401:\r\n return { dialogError: intl.formatMessage({ id: 'removeTeam401' }) };\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 500:\r\n return { dialogError: intl.formatMessage({ id: 'removeTeam500' }) };\r\n default:\r\n return;\r\n }\r\n });\r\n\r\n const openEditDialog = () => setTeam({ ...team, isEditOpen: true });\r\n const closeEditDialog = () => setTeam({ ...team, isEditOpen: false });\r\n const openRemoveDialog = () => setTeam({ ...team, isRemoveOpen: true });\r\n const closeRemoveDialog = () => setTeam({ ...team, isRemoveOpen: false });\r\n\r\n const setTeamsActive = isActiveParam => {\r\n if (isActiveParam === team.isActive) {\r\n return;\r\n }\r\n setTeam({ ...team, isActive: isActiveParam });\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nTeamsContextProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useIntl } from 'react-intl';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport { spaceManagement } from 'utils/api';\r\n\r\nexport const SpaceContext = React.createContext();\r\n\r\nexport default function SpaceContextProvider({ children }) {\r\n const history = useHistory();\r\n const intl = useIntl();\r\n const { getUser } = React.useContext(AuthContext);\r\n const [space, setSpace] = React.useState();\r\n const [spaceId, setSpaceId] = React.useState();\r\n const [isRemoveSelfOpen, setIsRemoveSelfOpen] = React.useState(false);\r\n const [errorText, setErrorText] = React.useState();\r\n\r\n React.useEffect(() => {\r\n if (spaceId && (!space || space.id !== spaceId)) {\r\n spaceManagement\r\n .getSpace(getUser, spaceId)\r\n .then(response => {\r\n setSpace(response);\r\n })\r\n .catch(err => {\r\n if (err.response.status === 403) {\r\n history.push('/login');\r\n } else if (err.response.status === 401) {\r\n history.push('/unauthorised');\r\n } else if (err.response.status === 500) {\r\n history.push('/servererror');\r\n }\r\n });\r\n }\r\n }, [spaceId, space, history, getUser]);\r\n\r\n const reloadSpace = () => setSpace(null);\r\n\r\n const openRemoveSelfDialog = () => setIsRemoveSelfOpen(true);\r\n const handleRemoveSelfClose = () => {\r\n setIsRemoveSelfOpen(false);\r\n setErrorText('');\r\n };\r\n const removeSelf = () =>\r\n spaceManagement\r\n .removeSelfFromSpace(getUser, spaceId)\r\n .then(() => history.push('/your-spaces/'))\r\n .catch(err => {\r\n if (err.response.status === 403) {\r\n history.push('/login');\r\n } else if (err.response.status === 401) {\r\n history.push('/your-spaces');\r\n } else if (err.response.status === 500) {\r\n setErrorText(intl.formatMessage({ id: 'leaveSpace500Error' }));\r\n } else {\r\n history.push('/servererror');\r\n }\r\n });\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nSpaceContextProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { UsersContext } from 'contexts/UsersContext';\r\nimport TablePagination from 'components/TablePagination';\r\nimport User from 'components/User';\r\nimport { toUInt } from 'utils/helper';\r\nimport TableLoader from 'components/TableStates/TableLoader';\r\nimport { config } from 'utils/config';\r\n\r\nexport default function SpaceUsers({ selectedRowIds = [], onRowSelectionChange = () => {} }) {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const { tableStatus, userContext } = React.useContext(UsersContext);\r\n\r\n const offset = toUInt(userContext.offset, 0);\r\n const limit = toUInt(userContext.limit, 25);\r\n const spaceId = userContext.spaceId;\r\n\r\n const handlePreviousData = () =>\r\n history.push(`/your-spaces/space/${spaceId}/users/${Math.max(0, offset - limit)}/${limit}`);\r\n const handleNextData = () => history.push(`/your-spaces/space/${spaceId}/users/${offset + limit}/${limit}`);\r\n const handleLimitChange = newLimit => history.push(`/your-spaces/space/${spaceId}/users/${offset}/${newLimit}`);\r\n\r\n const count = userContext.users?.count ?? 0;\r\n\r\n const columns = [\r\n {\r\n header: intl.formatMessage({ id: 'spaceMembersColumn1' }),\r\n accessor: 'userDetails',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'spaceMembersColumn2' }),\r\n accessor: 'role',\r\n },\r\n ];\r\n\r\n const rowData = () => {\r\n if (userContext.users) {\r\n return userContext.users.items.map((x, i) => ({\r\n id: x.memberId.toString(),\r\n user: x,\r\n userDetails: (\r\n \r\n ),\r\n role: x.isAdmin && intl.formatMessage({ id: 'isAdmin' }),\r\n }));\r\n }\r\n\r\n return [];\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport { useHistory, useParams } from 'react-router-dom';\r\nimport Table from '@blueprism/ui-core/components/Table';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport TablePagination from 'components/TablePagination';\r\nimport User from 'components/User';\r\nimport { toUInt } from 'utils/helper';\r\nimport { config } from 'utils/config';\r\nimport { spaceManagement } from 'utils/api';\r\n\r\nexport default function SpaceAdmins() {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const params = useParams();\r\n const { getUser } = React.useContext(AuthContext);\r\n\r\n const [admins, setAdmins] = React.useState({});\r\n\r\n const spaceId = toUInt(params.spaceId);\r\n const offset = toUInt(params.offset, 0);\r\n const limit = toUInt(params.limit, 25);\r\n\r\n React.useEffect(() => {\r\n spaceManagement\r\n .getSpaceAdmins(getUser, spaceId, offset, limit)\r\n .then(response => {\r\n setAdmins(response);\r\n })\r\n .catch(err => console.error(err));\r\n }, [getUser, spaceId, offset, limit]);\r\n\r\n const handlePreviousData = () =>\r\n history.push(`/your-spaces/space/${spaceId}/admins/${Math.max(0, offset - limit)}/${limit}`);\r\n const handleNextData = () => history.push(`/your-spaces/space/${spaceId}/admins/${offset + limit}/${limit}`);\r\n const handleLimitChange = newLimit => history.push(`/your-spaces/space/${spaceId}/admins/${offset}/${newLimit}`);\r\n\r\n const columns = [\r\n {\r\n header: intl.formatMessage({ id: 'spaceMembersColumn1' }),\r\n accessor: 'userDetails',\r\n },\r\n ];\r\n\r\n const mapData = () =>\r\n admins.items?.map(user => ({\r\n id: user.memberId.toString(),\r\n userDetails: ,\r\n }));\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport PATDialog from 'components/PATDialog';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport InputField from '@blueprism/ui-core/components/InputField';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport DialogTitle from 'components/DialogTitle';\r\n\r\nexport default function GroupNameDialog({ parentGroupId, group, mode = 'add', open = false, onClose, onConfirm }) {\r\n const intl = useIntl();\r\n const [text, setText] = React.useState('');\r\n const [errors, setErrors] = React.useState({});\r\n\r\n React.useEffect(() => {\r\n if (open) {\r\n setText(group?.name ?? '');\r\n setErrors({});\r\n }\r\n }, [group, open]);\r\n\r\n function handleCancelClick() {\r\n onClose();\r\n }\r\n\r\n async function handleOkClick() {\r\n const groupParam = mode === 'add' ? parentGroupId : group.id;\r\n const results = await onConfirm(groupParam, text);\r\n setErrors(results ?? {});\r\n }\r\n\r\n function handleTextChange(event) {\r\n setText(event.target.value);\r\n }\r\n\r\n const getErrorMessage = fieldName => errors[fieldName];\r\n const isInError = fieldName => errors[fieldName] != null && errors[fieldName].length > 0;\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n footerContent={renderFooter()}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nGroupNameDialog.propTypes = {\r\n group: PropTypes.object,\r\n parentGroupId: PropTypes.number,\r\n mode: PropTypes.oneOf(['add', 'edit']),\r\n open: PropTypes.bool,\r\n spaceId: PropTypes.number,\r\n onClose: PropTypes.func,\r\n onConfirm: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport PATDialog from 'components/PATDialog';\r\nimport { GroupsContext } from 'contexts/GroupsContext';\r\nimport DialogTitle from 'components/DialogTitle';\r\n\r\nexport default function GroupRemoveDialog({ selectedGroup, onConfirm = () => {} }) {\r\n const { group, handleRemoveClose } = React.useContext(GroupsContext);\r\n const [errors, setErrors] = React.useState({});\r\n\r\n React.useEffect(() => {\r\n if (group.isRemoveOpen && selectedGroup) {\r\n setErrors({});\r\n }\r\n }, [group.isRemoveOpen, selectedGroup]);\r\n\r\n function handleCancelClick() {\r\n handleRemoveClose();\r\n setErrors({});\r\n }\r\n\r\n const handleOkClick = async () => {\r\n const error = await onConfirm(selectedGroup.id);\r\n setErrors(error ?? {});\r\n };\r\n\r\n const getErrorMessage = fieldName => errors[fieldName];\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n footerContent={renderFooter()}\r\n >\r\n \r\n \r\n );\r\n}\r\n","import React, { useContext } from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport ButtonGroup from '@blueprism/ui-core/components/ButtonGroup';\r\nimport ToolbarButton from '@blueprism/ui-core/components/ToolbarButton';\r\nimport { FolderAdd, FolderDelete, FolderEdit } from '@blueprism/ui-icons';\r\nimport { GroupsContext } from 'contexts/GroupsContext';\r\nimport GroupNameDialog from 'components/GroupNameDialog';\r\nimport GroupRemoveDialog from 'components/GroupRemoveDialog';\r\n\r\nconst GroupNavButtons = ({ selectedRowIds = [], clearSelection = () => {}, isAdmin }) => {\r\n const intl = useIntl();\r\n const {\r\n group,\r\n openAddDialog,\r\n handleAddClose,\r\n addGroup,\r\n openEditDialog,\r\n handleEditClose,\r\n editGroup,\r\n openRemoveDialog,\r\n removeGroup,\r\n } = useContext(GroupsContext);\r\n\r\n if (!group.spaceId) {\r\n return null;\r\n }\r\n\r\n const currentGroup =\r\n selectedRowIds.length === 1\r\n ? group.groups?.items.find(groupItem => groupItem.id.toString() === selectedRowIds[0])\r\n : null;\r\n\r\n const renderButtons = () => {\r\n return (\r\n \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n \r\n );\r\n };\r\n\r\n function handleAddGroup(groupParam, text) {\r\n return addGroup(groupParam, text, clearSelection);\r\n }\r\n\r\n function handleRemoveConfirm(groupId) {\r\n return removeGroup(groupId, clearSelection);\r\n }\r\n\r\n function handleEditGroup(id, name) {\r\n return editGroup(id, name, clearSelection);\r\n }\r\n return (\r\n <>\r\n {renderButtons()}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default GroupNavButtons;\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport PATDialog from 'components/PATDialog';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Switch from '@blueprism/ui-core/components/Switch';\r\nimport InputField from '@blueprism/ui-core/components/InputField';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport { SpaceContext } from 'contexts/SpaceContext';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport useDebounce from 'utils/useDebounce';\r\nimport { isValidEmail } from 'utils/helper';\r\nimport { user } from 'utils/api';\r\n\r\nexport default function SpaceUserAddDialog({ open = false, onClose, onConfirm }) {\r\n const intl = useIntl();\r\n const { getUser } = React.useContext(AuthContext);\r\n const { reloadSpace } = React.useContext(SpaceContext);\r\n const [search, setSearch] = React.useState('');\r\n const [results, setResults] = React.useState(false);\r\n const [isAdmin, setIsAdmin] = React.useState(false);\r\n const [errors, setErrors] = React.useState({});\r\n const debouncedSearchTerm = useDebounce(search, 500);\r\n\r\n React.useEffect(() => {\r\n setSearch('');\r\n setIsAdmin(false);\r\n setErrors({});\r\n }, [open]);\r\n\r\n React.useEffect(() => {\r\n if (debouncedSearchTerm && isValidEmail(debouncedSearchTerm)) {\r\n user.isEmailInPortal(getUser, debouncedSearchTerm).then(response => {\r\n setResults(response);\r\n setErrors({});\r\n });\r\n } else {\r\n setResults(false);\r\n }\r\n }, [debouncedSearchTerm, getUser]);\r\n\r\n const handleClose = () => onClose();\r\n const handleCloseClick = () => handleClose();\r\n\r\n const handleAddClick = async () => {\r\n const error = await onConfirm(debouncedSearchTerm, isAdmin);\r\n if (!!error === false) {\r\n reloadSpace();\r\n }\r\n setErrors(error ?? {});\r\n };\r\n\r\n const handleTextChange = event => setSearch(event.target.value);\r\n const handleCheckedChange = () => setIsAdmin(isAdminValue => !isAdminValue);\r\n\r\n const getErrorMessage = fieldName => errors[fieldName];\r\n const isInError = fieldName => errors[fieldName] != null && errors[fieldName].length > 0;\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n footerContent={renderFooter()}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nSpaceUserAddDialog.props = {\r\n open: PropTypes.bool,\r\n onClose: PropTypes.func,\r\n onConfirm: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport PATDialog from 'components/PATDialog';\r\nimport Switch from '@blueprism/ui-core/components/Switch';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport { UserContext } from 'contexts/UserContext';\r\nimport { SpaceContext } from 'contexts/SpaceContext';\r\nimport { GroupsContext } from 'contexts/GroupsContext';\r\nimport { UsersContext } from 'contexts/UsersContext';\r\nimport ErrorMessage from 'components/ErrorMessage';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport User from 'components/User';\r\nimport { config } from 'utils/config';\r\n\r\nexport default function SpaceUserEditDialog({\r\n selectedUser = { member: {}, canEdit: false },\r\n clearSelection = () => {},\r\n}) {\r\n const { user } = React.useContext(UserContext);\r\n const { userContext, editSpaceUser, handleEditClose } = React.useContext(UsersContext);\r\n const { reloadSpace } = React.useContext(SpaceContext);\r\n const { group, updateGroupsSpace } = React.useContext(GroupsContext);\r\n const intl = useIntl();\r\n\r\n const [isAdmin, setIsAdmin] = React.useState(false);\r\n const [errors, setErrors] = React.useState({});\r\n\r\n const displayWarningMessage =\r\n selectedUser.canEdit &&\r\n selectedUser.member.isAdmin &&\r\n !userContext.currentUserHasAccess &&\r\n selectedUser.member.userId === user.details?.userId;\r\n const warning = displayWarningMessage && intl.formatMessage({ id: 'spaceAdminRemovalWarning' });\r\n\r\n React.useEffect(() => {\r\n setErrors({});\r\n }, [userContext.isEditOpen]);\r\n\r\n React.useEffect(() => {\r\n setIsAdmin(selectedUser.canEdit ? selectedUser.member.isAdmin : false);\r\n }, [selectedUser]);\r\n\r\n async function handleOkClick() {\r\n const error = await editSpaceUser(selectedUser, isAdmin, clearSelection);\r\n if (!!error === false) {\r\n reloadSpace();\r\n }\r\n setErrors(error ?? {});\r\n\r\n if (displayWarningMessage) {\r\n if (group.groups) {\r\n updateGroupsSpace(group.spaceId, group.parentId, isAdmin);\r\n }\r\n }\r\n }\r\n\r\n function handleCancelClick() {\r\n handleEditClose();\r\n }\r\n\r\n function handleCheckedChange() {\r\n setIsAdmin(isAdminValue => !isAdminValue);\r\n }\r\n\r\n const getErrorMessage = fieldName => errors[fieldName];\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n footerContent={renderFooter()}\r\n >\r\n \r\n \r\n {warning && }\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport PATDialog from 'components/PATDialog';\r\nimport { SpaceContext } from 'contexts/SpaceContext';\r\nimport ErrorMessage from 'components/ErrorMessage';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport User from 'components/User';\r\nimport { config } from 'utils/config';\r\n\r\nexport default function SpaceUserRemoveDialog({ user, open = false, onConfirm, onClose }) {\r\n const intl = useIntl();\r\n const { reloadSpace } = React.useContext(SpaceContext);\r\n\r\n const { name, avatar, email } = user;\r\n const [errors, setErrors] = React.useState({});\r\n\r\n React.useEffect(() => {\r\n setErrors({});\r\n }, [open]);\r\n\r\n function handleClose() {\r\n onClose();\r\n }\r\n\r\n function handleCloseClick() {\r\n onClose();\r\n }\r\n\r\n const handleOkClick = async () => {\r\n const error = await onConfirm(user.userId);\r\n if (!!error === false) {\r\n reloadSpace();\r\n }\r\n setErrors(error ?? {});\r\n };\r\n\r\n const getErrorMessage = fieldName => errors[fieldName];\r\n const isInError = fieldName => errors[fieldName] != null && errors[fieldName].length > 0;\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n \r\n \r\n }\r\n footerContent={renderFooter()}\r\n >\r\n {!isInError('dialogError') && }\r\n \r\n \r\n );\r\n}\r\n\r\nSpaceUserRemoveDialog.propTypes = {\r\n user: PropTypes.object.isRequired,\r\n open: PropTypes.bool,\r\n onConfirm: PropTypes.func,\r\n onClose: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport DialogModal from '@blueprism/ui-core/components/DialogModal';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport DialogTitle from 'components/DialogTitle';\r\n\r\nexport default function AlertDialog({ title, text, open = false, buttonText, onClose, onOk }) {\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n {title}}\r\n footerContent={renderFooter()}\r\n >\r\n {text}\r\n \r\n );\r\n}\r\n\r\nAlertDialog.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n text: PropTypes.string.isRequired,\r\n open: PropTypes.bool,\r\n onClose: PropTypes.func,\r\n onCancel: PropTypes.func,\r\n onConfirm: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport ButtonGroup from '@blueprism/ui-core/components/ButtonGroup';\r\nimport ToolbarButton from '@blueprism/ui-core/components/ToolbarButton';\r\nimport { PersonPlus, PersonRemove, KeyWithDots } from '@blueprism/ui-icons';\r\nimport SpaceUserAddDialog from 'components/SpaceUserAddDialog';\r\nimport SpaceUserEditDialog from 'components/SpaceUserEditDialog';\r\nimport SpaceUserRemoveDialog from 'components/SpaceUserRemoveDialog';\r\nimport AlertDialog from 'components/AlertDialog';\r\nimport { UsersContext } from 'contexts/UsersContext';\r\n\r\nexport default function UsersNavButtons({ selectedRowIds = [], clearSelection = () => {} }) {\r\n const intl = useIntl();\r\n const {\r\n userContext,\r\n openAddDialog,\r\n openEditDialog,\r\n openRemoveDialog,\r\n addSpaceUser,\r\n handleAddClose,\r\n removeSpaceUser,\r\n handleRemoveClose,\r\n onAlertOk,\r\n } = React.useContext(UsersContext);\r\n\r\n const selectedUser = {\r\n member:\r\n (selectedRowIds.length === 1\r\n ? userContext.users?.items.find(user => user.memberId.toString() === selectedRowIds[0])\r\n : {}) ?? {},\r\n canEdit:\r\n selectedRowIds.length === 1 &&\r\n (userContext.users?.items.some(user => user.memberId.toString() === selectedRowIds[0]) ?? false),\r\n };\r\n\r\n function handleOpenRemoveDialog() {\r\n openRemoveDialog(selectedUser.member);\r\n }\r\n\r\n function handleOpenAddialog() {\r\n openAddDialog(selectedUser.member);\r\n }\r\n\r\n function handleRemoveSpaceUser(userId) {\r\n return removeSpaceUser(userId, clearSelection);\r\n }\r\n\r\n function handleAddSpaceUser(email, isAdmin) {\r\n return addSpaceUser(email, isAdmin, clearSelection);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport InputField from '@blueprism/ui-core/components/InputField';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport PATDialog from 'components/PATDialog';\r\nimport DialogTitle from 'components/DialogTitle';\r\n\r\nexport default function TeamAddDialog({ team, open = false, mode = 'Add', onConfirm, onClose }) {\r\n const intl = useIntl();\r\n const [text, setText] = React.useState('');\r\n const [errors, setErrors] = React.useState({});\r\n\r\n React.useEffect(() => {\r\n if (open) {\r\n setText(team?.name ?? '');\r\n setErrors({});\r\n }\r\n }, [open, team]);\r\n\r\n function handleClose() {\r\n onClose();\r\n }\r\n\r\n function handleCloseClick() {\r\n onClose();\r\n }\r\n\r\n function handleTextChange(event) {\r\n setText(event.target.value);\r\n }\r\n\r\n async function handleOkClick() {\r\n const error = await onConfirm(text, team?.teamId);\r\n setErrors(error ?? {});\r\n if (!error) {\r\n onClose();\r\n }\r\n }\r\n\r\n const getErrorMessage = fieldName => errors[fieldName];\r\n const isInError = fieldName => errors[fieldName] != null && errors[fieldName].length > 0;\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n errorText={getErrorMessage('dialogError')}\r\n footerContent={renderFooter()}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nTeamAddDialog.propTypes = {\r\n team: PropTypes.object,\r\n open: PropTypes.bool,\r\n mode: PropTypes.string,\r\n onConfirm: PropTypes.func,\r\n onClose: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport PATDialog from 'components/PATDialog';\r\nimport ErrorMessage from 'components/ErrorMessage';\r\nimport DialogTitle from 'components/DialogTitle';\r\n\r\nexport default function SpaceTeamRemoveDialog({ open = false, teamId, teamName, onClose, onConfirm }) {\r\n const [dialogErrorMessage, setDialogErrorMessage] = React.useState({});\r\n const intl = useIntl();\r\n\r\n React.useEffect(() => {\r\n setDialogErrorMessage({});\r\n }, [open]);\r\n\r\n function handleClose() {\r\n onClose();\r\n setDialogErrorMessage('');\r\n }\r\n\r\n async function handleOkClick() {\r\n const error = await onConfirm(teamId);\r\n setDialogErrorMessage(error ?? {});\r\n if (!error) {\r\n onClose();\r\n }\r\n }\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n footerContent={renderFooter()}\r\n >\r\n {!dialogErrorMessage && open && }\r\n \r\n {teamName}\r\n \r\n \r\n );\r\n}\r\n\r\nSpaceTeamRemoveDialog.propTypes = {\r\n open: PropTypes.bool,\r\n teamId: PropTypes.number,\r\n teamName: PropTypes.string,\r\n onClose: PropTypes.func,\r\n onConfirm: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport ButtonGroup from '@blueprism/ui-core/components/ButtonGroup';\r\nimport ToolbarButton from '@blueprism/ui-core/components/ToolbarButton';\r\nimport { PeoplePlus, PeopleRemove, PeopleEdit } from '@blueprism/ui-icons';\r\nimport TeamAddDialog from 'components/TeamAddDialog';\r\nimport SpaceTeamRemoveDialog from 'components/SpaceTeamRemoveDialog';\r\nimport { TeamsContext } from 'contexts/TeamsContext';\r\n\r\nexport default function TeamNavButtons({ selectedRowIds = [], clearSelection = () => {} }) {\r\n const intl = useIntl();\r\n const {\r\n team,\r\n openAddDialog,\r\n closeAddDialog,\r\n addTeam,\r\n openEditDialog,\r\n closeEditDialog,\r\n editTeam,\r\n openRemoveDialog,\r\n closeRemoveDialog,\r\n removeTeam,\r\n } = React.useContext(TeamsContext);\r\n\r\n const selectedTeam =\r\n selectedRowIds.length === 1\r\n ? team?.teams?.items.find(teamItem => teamItem.teamId.toString() === selectedRowIds[0])\r\n : null;\r\n\r\n function handleRemoveTeam(teamId) {\r\n return removeTeam(teamId, clearSelection);\r\n }\r\n\r\n function handleEditTeam(teamName, teamId) {\r\n return editTeam(teamName, teamId, clearSelection);\r\n }\r\n\r\n function handleAddTeam(teamName) {\r\n return addTeam(teamName, clearSelection);\r\n }\r\n return (\r\n <>\r\n \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useIntl } from 'react-intl';\r\nimport { GroupsContext } from 'contexts/GroupsContext';\r\nimport TablePagination from 'components/TablePagination';\r\nimport Link from 'components/Link';\r\nimport TableLoader from 'components/TableStates/TableLoader';\r\nexport default function SpaceGroupsList({ selectedRowIds = [], onRowSelectionChange = () => {} }) {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const { tableStatus, group } = React.useContext(GroupsContext);\r\n\r\n function handleLimitChange(newLimit) {\r\n history.push(`/your-spaces/space/${group.spaceId}/groups/${group.offset}/${newLimit}`);\r\n }\r\n\r\n function handleNextData() {\r\n history.push(`/your-spaces/space/${group.spaceId}/groups/${group.offset + group.limit}/${group.limit}`);\r\n }\r\n\r\n function handlePreviousData() {\r\n history.push(\r\n `/your-spaces/space/${group.spaceId}/groups/${Math.max(0, group.offset - group.limit)}/${group.limit}`\r\n );\r\n }\r\n\r\n const count = group.groups?.count ?? 0;\r\n\r\n const columns = [\r\n {\r\n header: intl.formatMessage({ id: 'spaceGroupsColumn1' }),\r\n accessor: 'nameColumn',\r\n },\r\n ];\r\n\r\n const rowData = () => {\r\n if (group.groups?.items?.length > 0) {\r\n return group.groups.items.map(groupItem => ({\r\n id: groupItem.id.toString(),\r\n group: groupItem,\r\n nameColumn: (\r\n \r\n {groupItem.name}\r\n \r\n ),\r\n disableSelect: !groupItem.isAdmin,\r\n }));\r\n }\r\n\r\n return [];\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nSpaceGroupsList.propTypes = {\r\n selectedRowIds: PropTypes.array,\r\n onRowSelectionChange: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport PATDialog from 'components/PATDialog';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport DialogTitle from 'components/DialogTitle';\r\n\r\nexport default function ConfirmDialog({\r\n title,\r\n errorText = '',\r\n description,\r\n open = false,\r\n onClose,\r\n onCancel,\r\n onConfirm,\r\n}) {\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n return (\r\n {title}}\r\n footerContent={renderFooter()}\r\n >\r\n {description}\r\n \r\n );\r\n}\r\n\r\nConfirmDialog.propTypes = {\r\n title: PropTypes.string.isRequired,\r\n description: PropTypes.string.isRequired,\r\n errorText: PropTypes.string,\r\n visible: PropTypes.bool,\r\n onClose: PropTypes.func,\r\n onCancel: PropTypes.func,\r\n onConfirm: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { TeamsContext } from 'contexts/TeamsContext';\r\nimport TablePagination from 'components/TablePagination';\r\nimport Link from 'components/Link';\r\nimport { toUInt } from 'utils/helper';\r\nimport TableLoader from 'components/TableStates/TableLoader';\r\n\r\nexport default function SpaceTeams({ selectedRowIds = [], onRowSelectionChange = () => {} }) {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const { tableStatus, team } = React.useContext(TeamsContext);\r\n\r\n const spaceId = team.spaceId;\r\n const offset = toUInt(team.offset, 0);\r\n const limit = toUInt(team.limit, 25);\r\n const count = team?.teams?.count ?? 0;\r\n\r\n function handlePreviousData() {\r\n history.push(`/your-spaces/space/${spaceId}/teams/${Math.max(0, offset - limit)}/${limit}`);\r\n }\r\n\r\n function handleNextData() {\r\n history.push(`/your-spaces/space/${spaceId}/teams/${offset + limit}/${limit}`);\r\n }\r\n\r\n function handleLimitChange(newLimit) {\r\n history.push(`/your-spaces/space/${spaceId}/teams/${offset}/${newLimit}`);\r\n }\r\n\r\n const columns = [\r\n {\r\n header: intl.formatMessage({ id: 'spaceTeamsColumn1' }),\r\n accessor: 'teamDetails',\r\n },\r\n ];\r\n\r\n const rowData = () => {\r\n if (team.teams) {\r\n return team.teams.items.map(teamItem => ({\r\n id: teamItem.teamId.toString(),\r\n team: teamItem,\r\n teamDetails: (\r\n \r\n {teamItem.name}\r\n \r\n ),\r\n }));\r\n }\r\n\r\n return [];\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { Redirect, useHistory, useParams } from 'react-router-dom';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport { Person, People, Folder, DoorEnter } from '@blueprism/ui-icons';\r\nimport Toolbar from '@blueprism/ui-core/components/Toolbar';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Breadcrumbs from '@blueprism/ui-core/components/Breadcrumbs';\r\nimport ToolbarButton from '@blueprism/ui-core/components/ToolbarButton';\r\nimport ButtonTabGroup from '@blueprism/ui-core/components/ButtonTabGroup';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport ButtonGroup from '@blueprism/ui-core/components/ButtonGroup';\r\nimport SpaceUsers from 'pages/SpaceUsers';\r\nimport SpaceAdmins from 'pages/SpaceAdmins';\r\nimport GroupNavButtons from 'components/GroupNavButtons';\r\nimport UsersNavButtons from 'components/UsersNavButtons';\r\nimport TeamNavButtons from 'components/TeamNavButtons';\r\nimport SpaceGroupsList from 'components/SpaceGroupsList';\r\nimport ConfirmDialog from 'components/ConfirmDialog';\r\nimport Link from 'components/Link';\r\nimport { GroupsContext } from 'contexts/GroupsContext';\r\nimport { UsersContext } from 'contexts/UsersContext';\r\nimport { TeamsContext } from 'contexts/TeamsContext';\r\nimport { SpaceContext } from 'contexts/SpaceContext';\r\nimport SpaceTeams from './SpaceTeams';\r\nimport { toUInt } from 'utils/helper';\r\nimport useTableRowSelection from 'utils/useTableRowSelection';\r\n\r\nexport default function Space() {\r\n const params = useParams();\r\n const history = useHistory();\r\n const {\r\n space,\r\n setSpaceId,\r\n openRemoveSelfDialog,\r\n handleRemoveSelfClose,\r\n removeSelf,\r\n isRemoveSelfOpen,\r\n errorText,\r\n } = React.useContext(SpaceContext);\r\n const { group, updateGroupParams, setGroupsActive, updateGroupsSpace } = React.useContext(GroupsContext);\r\n const { setUsersActive, updateUserParams } = React.useContext(UsersContext);\r\n const { updateTeamParams, setTeamsActive } = React.useContext(TeamsContext);\r\n const [activeTab, setActiveTab] = React.useState(0);\r\n const intl = useIntl();\r\n\r\n const {\r\n clearSelection: clearUserIds,\r\n selectedRowIds: selectedUserIds,\r\n onRowSelectionChange: onUserSelectionChange,\r\n } = useTableRowSelection([], true);\r\n const {\r\n clearSelection: clearTeamIds,\r\n selectedRowIds: selectedTeamIds,\r\n onRowSelectionChange: onTeamSelectionChange,\r\n } = useTableRowSelection([], true);\r\n const {\r\n clearSelection: clearGroupIds,\r\n selectedRowIds: selectedGroupIds,\r\n onRowSelectionChange: onGroupSelectionChange,\r\n } = useTableRowSelection([], true);\r\n\r\n const tab = (params.tab || 'users').toLowerCase();\r\n\r\n React.useEffect(() => {\r\n if (space && space.rootGroupId !== group.parentId) {\r\n updateGroupsSpace(space.id, space.rootGroupId, space.isCurrentUserAdmin);\r\n }\r\n }, [space, group, updateGroupsSpace]);\r\n\r\n React.useEffect(() => {\r\n if (!space) {\r\n return;\r\n }\r\n\r\n const tabIndex = getIndexFromFragment(params.tab, space.isCurrentUserAdmin);\r\n setActiveTab(currentTab => (currentTab === tabIndex ? currentTab : tabIndex));\r\n }, [params.tab, space]);\r\n\r\n React.useEffect(() => {\r\n if (!space) {\r\n return;\r\n }\r\n\r\n if (space.isCurrentUserAdmin) {\r\n setUsersActive(activeTab === 0);\r\n setTeamsActive(activeTab === 1);\r\n setGroupsActive(activeTab === 2);\r\n } else {\r\n setGroupsActive(activeTab === 0);\r\n }\r\n }, [activeTab, space, setUsersActive, setGroupsActive, setTeamsActive]);\r\n\r\n React.useEffect(() => {\r\n const newSpaceId = toUInt(params.spaceId);\r\n if (!space || space.id !== newSpaceId) {\r\n setSpaceId(newSpaceId);\r\n }\r\n }, [space, setSpaceId, params.spaceId]);\r\n\r\n React.useEffect(() => {\r\n const spaceId = toUInt(params.spaceId);\r\n const offset = toUInt(params.offset) || 0;\r\n const limit = toUInt(params.limit) || 25;\r\n\r\n updateGroupParams(limit, offset);\r\n updateUserParams(spaceId, limit, offset);\r\n updateTeamParams(spaceId, limit, offset);\r\n }, [group, updateGroupParams, updateUserParams, updateTeamParams, params.spaceId, params.offset, params.limit]);\r\n\r\n const getIndexFromFragment = (fragment, isCurrentUserAdmin) => {\r\n if (isCurrentUserAdmin) {\r\n switch ((fragment || '').toLowerCase()) {\r\n case 'teams':\r\n return 1;\r\n case 'groups':\r\n return 2;\r\n case 'users':\r\n default:\r\n return 0;\r\n }\r\n }\r\n\r\n switch ((fragment || '').toLowerCase()) {\r\n case 'groups':\r\n return 0;\r\n case 'admins':\r\n default:\r\n return 1;\r\n }\r\n };\r\n\r\n const getTabText = index => {\r\n if (space?.isCurrentUserAdmin) {\r\n switch (index) {\r\n case 1:\r\n return 'teams';\r\n case 2:\r\n return 'groups';\r\n case 0:\r\n default:\r\n return 'users';\r\n }\r\n }\r\n\r\n switch (index) {\r\n case 1:\r\n return 'admins';\r\n case 0:\r\n default:\r\n return 'groups';\r\n }\r\n };\r\n\r\n if (!space) {\r\n return null;\r\n }\r\n\r\n if (tab !== 'groups' && tab !== 'admins' && !space.isCurrentUserAdmin) {\r\n return ;\r\n }\r\n\r\n const handleChange = event => {\r\n const tabIndex = Number(event.currentTarget.value);\r\n const tabName = getTabText(tabIndex);\r\n history.push(`/your-spaces/space/${space.id}/${tabName}`);\r\n };\r\n\r\n const renderLeaveSpaceButton = () => {\r\n if (!space.isCurrentUserAdmin || space.adminsCount > 1) {\r\n return (\r\n \r\n }\r\n />\r\n \r\n );\r\n }\r\n\r\n return null;\r\n };\r\n const renderTabContent = () => {\r\n if (space.isCurrentUserAdmin) {\r\n switch (activeTab) {\r\n case 0:\r\n return ;\r\n case 1:\r\n return ;\r\n case 2:\r\n return ;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n switch (activeTab) {\r\n case 0:\r\n return ;\r\n case 1:\r\n return ;\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n const renderButtons = () => {\r\n if (space.isCurrentUserAdmin) {\r\n switch (activeTab) {\r\n case 0:\r\n return ;\r\n case 1:\r\n return ;\r\n case 2:\r\n return (\r\n \r\n );\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n if (activeTab === 0) {\r\n return (\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n const renderToolbar = () => {\r\n if (space.isCurrentUserAdmin) {\r\n return (\r\n \r\n } />\r\n } />\r\n } />\r\n \r\n );\r\n }\r\n return (\r\n \r\n } />\r\n } />\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {space.name}\r\n \r\n {space.name}\r\n \r\n {renderToolbar()}\r\n \r\n {renderButtons()}\r\n {renderLeaveSpaceButton()}\r\n \r\n \r\n {renderTabContent()}\r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport GroupsContextProvider from 'contexts/GroupsContext';\r\nimport UsersContextProvider from 'contexts/UsersContext';\r\nimport TeamsContextProvider from 'contexts/TeamsContext';\r\nimport SpaceContextProvider from 'contexts/SpaceContext';\r\nimport Space from 'pages/Space';\r\n\r\nconst SpaceWrapper = props => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default SpaceWrapper;\r\n","import React, { createContext, useState, useEffect } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport PropTypes from 'prop-types';\r\nimport { dataStates as tableDataStates } from '../utils/dataStates';\r\nimport { spaceManagement } from 'utils/api';\r\n\r\nexport const GroupContext = createContext();\r\n\r\nexport default function GroupContextProvider({ children }) {\r\n const history = useHistory();\r\n const { getUser } = React.useContext(AuthContext);\r\n const [groupDetails, setGroupDetails] = useState();\r\n const [groupId, setGroupId] = useState();\r\n const [tableStatus, setTableStatus] = React.useState(tableDataStates.INIT);\r\n\r\n useEffect(() => {\r\n if (groupId && (!groupDetails || groupDetails.groupId !== groupId)) {\r\n spaceManagement\r\n .getGroup(getUser, groupId)\r\n .then(response => {\r\n setGroupDetails(response);\r\n setTableStatus(tableDataStates.SUCCESS);\r\n })\r\n .catch(err => {\r\n switch (err?.response?.status) {\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 400:\r\n case 500:\r\n history.push('/servererror');\r\n return;\r\n case 401:\r\n history.push('/unauthorised');\r\n return;\r\n default:\r\n setTableStatus(tableDataStates.ERROR);\r\n }\r\n });\r\n }\r\n }, [groupId, groupDetails, getUser, history]);\r\n\r\n const reloadGroup = () => setGroupDetails(null);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nGroupContextProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import React, { createContext, useState, useEffect } from 'react';\r\nimport { withRouter } from 'react-router';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport { dataStates as tableDataStates } from '../utils/dataStates';\r\nimport { spaceManagement } from 'utils/api';\r\n\r\nexport const GroupMembersContext = createContext();\r\n\r\nconst GroupMembersContextProvider = props => {\r\n const history = useHistory();\r\n const { getUser } = React.useContext(AuthContext);\r\n const [tableStatus, setTableStatus] = React.useState(tableDataStates.INIT);\r\n\r\n const [groupMembers, setGroupMembers] = useState({\r\n isActive: false,\r\n\r\n spaceId: null,\r\n groupId: null,\r\n\r\n members: null,\r\n\r\n isAddOpen: false,\r\n isEditOpen: false,\r\n isRemoveOpen: false,\r\n offset: null,\r\n limit: null,\r\n });\r\n\r\n useEffect(() => {\r\n if (\r\n !groupMembers.isActive ||\r\n groupMembers.members ||\r\n groupMembers.groupId == null ||\r\n groupMembers.limit == null ||\r\n groupMembers.offset == null ||\r\n groupMembers.spaceId == null\r\n ) {\r\n return;\r\n }\r\n\r\n spaceManagement\r\n .getGroupMembers(getUser, groupMembers.spaceId, groupMembers.groupId, groupMembers.offset, groupMembers.limit)\r\n .then(response => {\r\n setTableStatus(tableDataStates.SUCCESS);\r\n setGroupMembers({ ...groupMembers, members: response });\r\n })\r\n .catch(err => {\r\n switch (err?.response?.status) {\r\n case 401:\r\n history.push('/unauthorised');\r\n return;\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 400:\r\n case 500:\r\n history.push('/servererror');\r\n return;\r\n default:\r\n console.error(err);\r\n setTableStatus(tableDataStates.ERROR);\r\n\r\n return;\r\n }\r\n });\r\n }, [groupMembers, getUser, history]);\r\n\r\n const updateGroupMembersParams = (limit, offset) => {\r\n if (groupMembers.limit === limit && groupMembers.offset === offset) {\r\n return;\r\n }\r\n\r\n setGroupMembers({ ...groupMembers, limit, offset, members: null });\r\n };\r\n\r\n const updateGroupMembersSpace = (spaceId, groupId, isAdmin) => {\r\n if (spaceId === groupMembers.spaceId && groupId === groupMembers.groupId && isAdmin === groupMembers.isSpaceAdmin) {\r\n return;\r\n }\r\n setGroupMembers({ ...groupMembers, spaceId, groupId, isSpaceAdmin: isAdmin, members: null });\r\n };\r\n\r\n const openAddMemberDialog = () => setGroupMembers({ ...groupMembers, isAddOpen: true });\r\n const handleAddMemberClose = () => setGroupMembers({ ...groupMembers, isAddOpen: false });\r\n\r\n const addGroupMember = ({ groupMemberId = 0, groupMemberType, privLevel, clearSelection = () => {} }) =>\r\n spaceManagement\r\n .addGroupMember(getUser, groupMembers.groupId, groupMemberId, groupMemberType, privLevel)\r\n .then(() => {\r\n setGroupMembers({ ...groupMembers, isAddOpen: false, members: null });\r\n clearSelection();\r\n })\r\n .catch(err => {\r\n if (err.response) {\r\n return err.response;\r\n }\r\n\r\n console.log(err);\r\n });\r\n\r\n const openRemoveMemberDialog = () => setGroupMembers({ ...groupMembers, isRemoveOpen: true });\r\n const handleRemoveMemberClose = () => setGroupMembers({ ...groupMembers, isRemoveOpen: false });\r\n\r\n const removeGroupMember = async (groupMemberId, clearSelection) => {\r\n const groupMemberToRemove = groupMembers.members.items.find(x => x.memberId === groupMemberId);\r\n\r\n try {\r\n await spaceManagement.removeMemberFromGroup(getUser, groupMembers.groupId, groupMemberToRemove.permissionId);\r\n } catch (err) {\r\n if (err.response) {\r\n return err.response;\r\n }\r\n\r\n console.log(err);\r\n return;\r\n }\r\n\r\n setGroupMembers({ ...groupMembers, isRemoveOpen: false, members: null });\r\n clearSelection();\r\n };\r\n\r\n const openEditMemberDialog = () => setGroupMembers({ ...groupMembers, isEditOpen: true });\r\n const handleEditMemberClose = () => setGroupMembers({ ...groupMembers, isEditOpen: false });\r\n\r\n const editGroupMember = async (groupMemberId, privLevel, clearSelection) => {\r\n const groupMemberToEdit = groupMembers.members.items.find(x => x.memberId === groupMemberId);\r\n try {\r\n await spaceManagement.editGroupMember(getUser, groupMembers.groupId, groupMemberToEdit.permissionId, privLevel);\r\n } catch (err) {\r\n if (err.response) {\r\n return err.response;\r\n }\r\n\r\n if (err.message) {\r\n console.log(err.message);\r\n }\r\n }\r\n\r\n setGroupMembers({ ...groupMembers, isEditOpen: false, members: null });\r\n clearSelection();\r\n };\r\n\r\n const setGroupMembersActive = isActiveParam => {\r\n if (isActiveParam === groupMembers.isActive) {\r\n return;\r\n }\r\n setGroupMembers({ ...groupMembers, isActive: isActiveParam });\r\n };\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default withRouter(GroupMembersContextProvider);\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from 'react-intl';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport useDebounce from 'utils/useDebounce';\r\nimport { spaceManagement } from 'utils/api';\r\n\r\nexport const GroupMembersSearchContext = React.createContext();\r\n\r\nexport default function GroupMembersSearchContextProvider({ children }) {\r\n const intl = useIntl();\r\n const { getUser } = React.useContext(AuthContext);\r\n const [search, setSearch] = React.useState({\r\n searchTerm: '',\r\n lastExecutedSearchTerm: null,\r\n results: [],\r\n isSearching: false,\r\n spaceId: null,\r\n });\r\n\r\n const [errorText, setErrorText] = React.useState('');\r\n const debouncedSearchTerm = useDebounce(search.searchTerm, 500);\r\n\r\n React.useEffect(() => {\r\n if (debouncedSearchTerm && search.spaceId && search.lastExecutedSearchTerm !== debouncedSearchTerm) {\r\n setSearch(p => ({ ...p, isSearching: true, lastExecutedSearchTerm: debouncedSearchTerm }));\r\n\r\n spaceManagement\r\n .spaceMemberSearch(getUser, search.spaceId, debouncedSearchTerm)\r\n .then(response => {\r\n setSearch(p => ({ ...p, isSearching: false, results: response }));\r\n })\r\n .catch(err => {\r\n switch (err?.response?.status) {\r\n case 400:\r\n case 500:\r\n setErrorText(intl.formatMessage({ id: 'userSearch400and500Error' }));\r\n break;\r\n case 401:\r\n setErrorText(intl.formatMessage({ id: 'userSearch401Error' }));\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n }, [debouncedSearchTerm, search.lastExecutedSearchTerm, search.spaceId, getUser, intl]);\r\n\r\n const searchForGroupMember = (spaceId, name) => {\r\n setErrorText('');\r\n setSearch({ ...search, searchTerm: name, spaceId: spaceId });\r\n };\r\n\r\n const resetSearch = () => {\r\n setSearch({\r\n searchTerm: '',\r\n lastExecutedSearchTerm: null,\r\n results: [],\r\n isSearching: false,\r\n spaceId: null,\r\n });\r\n setErrorText('');\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nGroupMembersSearchContextProvider.propTypes = {\r\n children: PropTypes.node.isRequired,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from 'react-intl';\r\nimport { useHistory } from 'react-router-dom';\r\nimport TablePagination from 'components/TablePagination';\r\nimport User from 'components/User';\r\nimport TableLoader from 'components/TableStates/TableLoader';\r\nimport { config } from 'utils/config';\r\n\r\nconst GroupMembersList = ({\r\n tableStatus,\r\n data,\r\n groupId,\r\n offset,\r\n limit,\r\n isAdmin = false,\r\n selectedRowIds = [],\r\n onRowSelectionChange = () => {},\r\n}) => {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n\r\n const handlePreviousData = () =>\r\n history.push(`/your-spaces/group/${groupId}/members/${Math.max(0, offset - limit)}/${limit}`);\r\n const handleNextData = () => history.push(`/your-spaces/group/${groupId}/members/${offset + limit}/${limit}`);\r\n const handleLimitChange = newLimit => history.push(`/your-spaces/group/${groupId}/members/${offset}/${newLimit}`);\r\n\r\n const count = data ? data.count : 0;\r\n\r\n const teamText = ' (' + intl.formatMessage({ id: 'team' }) + ')';\r\n const columns = [\r\n {\r\n header: intl.formatMessage({ id: 'groupMembersColumn1' }),\r\n accessor: 'member',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'groupMembersColumn2' }),\r\n accessor: 'role',\r\n },\r\n ];\r\n\r\n const rowData = () => {\r\n if (data) {\r\n return data.items.map(x => ({\r\n id: x.memberId.toString(),\r\n memberData: x,\r\n disableSelect: !isAdmin,\r\n member: (\r\n \r\n ),\r\n role: intl.formatMessage({ id: `priv${x.privLevel}Name` }),\r\n }));\r\n }\r\n\r\n return [];\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nGroupMembersList.propTypes = {\r\n data: PropTypes.object,\r\n onSelectionChanged: PropTypes.func,\r\n groupId: PropTypes.number,\r\n offset: PropTypes.number,\r\n limit: PropTypes.number,\r\n isAdmin: PropTypes.bool,\r\n};\r\n\r\nexport default GroupMembersList;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { GroupMembersContext } from 'contexts/GroupMembersContext';\r\nimport GroupMembersList from './GroupMembersList';\r\n\r\nexport default function GroupMembersContent({ isAdmin = false, selectedRowIds = [], onRowSelectionChange = () => {} }) {\r\n const { tableStatus, groupMembers, setSelectedGroupMember } = React.useContext(GroupMembersContext);\r\n\r\n const handleSelectedMemberChange = rows => setSelectedGroupMember(rows);\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nGroupMembersContent.propTypes = {\r\n isAdmin: PropTypes.bool,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from 'react-intl';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { GroupsContext } from 'contexts/GroupsContext';\r\nimport TablePagination from 'components/TablePagination';\r\nimport Link from 'components/Link';\r\nimport TableLoader from 'components/TableStates/TableLoader';\r\n\r\nexport default function GroupsList({ selectedRowIds, onRowSelectionChange = () => {} }) {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const { tableStatus, group } = React.useContext(GroupsContext);\r\n\r\n const groupId = group.parentId;\r\n const data = group.groups;\r\n const offset = group.offset;\r\n const limit = group.limit;\r\n\r\n const count = data?.count ?? 0;\r\n\r\n function handleLimitChange(newLimit) {\r\n history.push(`/your-spaces/group/${groupId}/groups/${offset}/${newLimit}`);\r\n }\r\n\r\n function handleNextData() {\r\n history.push(`/your-spaces/group/${groupId}/groups/${offset + limit}/${limit}`);\r\n }\r\n\r\n function handlePreviousData() {\r\n history.push(`/your-spaces/group/${groupId}/groups/${Math.max(0, offset - limit)}/${limit}`);\r\n }\r\n\r\n const columns = [\r\n {\r\n header: intl.formatMessage({ id: 'spaceGroupsColumn1' }),\r\n accessor: 'nameColumn',\r\n },\r\n ];\r\n\r\n const rowData = () => {\r\n if (data?.items?.length > 0) {\r\n return data.items.map(item => ({\r\n id: item.id.toString(),\r\n group: item,\r\n nameColumn: (\r\n \r\n {item.name}\r\n \r\n ),\r\n disableSelect: !item.isAdmin,\r\n }));\r\n }\r\n\r\n return [];\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nGroupsList.propTypes = {\r\n onRowSelectionChange: PropTypes.func,\r\n selectedRowIds: PropTypes.array,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport PATDialog from 'components/PATDialog';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport RadioButtonGroup from '@blueprism/ui-core/components/RadioButtonGroup';\r\nimport RadioButton from '@blueprism/ui-core/components/RadioButton';\r\nimport Datalist from '@blueprism/ui-core/components/Datalist';\r\nimport Option from '@blueprism/ui-core/components/Option';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport { GroupMembersSearchContext } from 'contexts/GroupMembersSearchContext';\r\n\r\nexport default function GroupMemberDialog({ mode = 'add', spaceId, open = false, onClose, onConfirm }) {\r\n const intl = useIntl();\r\n const { results, searchForGroupMember, resetSearch, errorText } = React.useContext(GroupMembersSearchContext);\r\n const [name, setName] = React.useState('');\r\n const [role, setRole] = React.useState(0);\r\n const [errors, setErrors] = React.useState({});\r\n\r\n React.useEffect(() => {\r\n setErrors({});\r\n setName('');\r\n setRole(0);\r\n }, [open]);\r\n\r\n React.useEffect(() => {\r\n setErrors(errorText ? { dialogError: errorText } : {});\r\n }, [errorText]);\r\n\r\n const getErrorMessage = fieldName => errors[fieldName];\r\n const isInError = fieldName => errors[fieldName]?.length > 0 ?? false;\r\n\r\n function getSelectedMember(memberName) {\r\n memberName = memberName?.toLowerCase();\r\n var found = results.filter(\r\n member =>\r\n formatMember(member).toLowerCase() === memberName ||\r\n member.name?.toLowerCase() === memberName ||\r\n (member.memberType === 0 && member.email?.toLowerCase() === memberName)\r\n );\r\n\r\n return found.length === 1 ? found[0] : null;\r\n }\r\n\r\n function formatMember(member) {\r\n if (member.memberType === 0) {\r\n return `${member.name} (${member.email})`;\r\n }\r\n\r\n return `${member.name} (${intl.formatMessage({ id: 'team' })})`;\r\n }\r\n\r\n async function handleOkClick() {\r\n const selectedMember = getSelectedMember(name);\r\n const error = await onConfirm(selectedMember?.memberId ?? (name ? -1 : 0), selectedMember?.memberType, role);\r\n setErrors(error || {});\r\n if (!error) {\r\n resetSearch();\r\n }\r\n }\r\n\r\n function handleTextChange(event) {\r\n const { value } = event.target;\r\n setName(value);\r\n\r\n const selectedMember = getSelectedMember(value);\r\n if (!selectedMember) {\r\n searchForGroupMember(spaceId, value);\r\n }\r\n }\r\n\r\n function handleRoleChange(event) {\r\n setRole(parseInt(event.target.value));\r\n }\r\n\r\n function handleCancelClick() {\r\n resetSearch();\r\n onClose();\r\n }\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n footerContent={renderFooter()}\r\n >\r\n \r\n \r\n \r\n {results.map(member => (\r\n \r\n ))}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nGroupMemberDialog.propTypes = {\r\n mode: PropTypes.string,\r\n spaceId: PropTypes.number,\r\n open: PropTypes.bool,\r\n onClose: PropTypes.func,\r\n onConfirm: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport { useHistory } from 'react-router-dom';\r\nimport PATDialog from 'components/PATDialog';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport { GroupMembersContext } from 'contexts/GroupMembersContext';\r\nimport { GroupContext } from 'contexts/GroupContext';\r\nimport { UserContext } from 'contexts/UserContext';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport User from 'components/User';\r\nimport { config } from 'utils/config';\r\n\r\nexport default function GroupMemberRemoveDialog({ selectedRowIds = [], clearSelection = () => {} }) {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const { user } = React.useContext(UserContext);\r\n const { groupDetails } = React.useContext(GroupContext);\r\n const { groupMembers, handleRemoveMemberClose, removeGroupMember } = React.useContext(GroupMembersContext);\r\n const [errorText, setErrorText] = React.useState('removeMemberMessage');\r\n\r\n const selectedMember = groupMembers?.members?.items.find(x => x.memberId.toString() === selectedRowIds[0]);\r\n const teamText = ' (' + intl.formatMessage({ id: 'team' }) + ')';\r\n const name = selectedMember?.name + (selectedMember?.memberType === 1 ? teamText : '');\r\n const avatar = selectedMember?.avatar && config.imageUrl(selectedMember?.avatar);\r\n\r\n React.useEffect(() => {\r\n setErrorText(intl.formatMessage({ id: 'removeMemberMessage' }));\r\n }, [groupMembers.isRemoveOpen, intl]);\r\n\r\n function handleCancelClick() {\r\n handleRemoveMemberClose();\r\n }\r\n\r\n async function handleOkClick() {\r\n const result = await removeGroupMember(selectedMember.memberId, clearSelection);\r\n switch (result?.status) {\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 401:\r\n setErrorText(intl.formatMessage({ id: 'removeGroupMember401Error' }));\r\n return;\r\n case 500:\r\n case 400:\r\n setErrorText(intl.formatMessage({ id: 'removeGroupMember500Error' }));\r\n return;\r\n default:\r\n setErrorText(intl.formatMessage({ id: 'removeMemberMessage' }));\r\n const isRedirectRequired = selectedMember.memberType === 0 && selectedMember.memberId === user.details.userId;\r\n if (isRedirectRequired) {\r\n history.push(`/your-spaces/space/${groupDetails.spaceId}`);\r\n }\r\n return;\r\n }\r\n }\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n footerContent={renderFooter()}\r\n >\r\n \r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport { useHistory } from 'react-router-dom';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport RadioButtonGroup from '@blueprism/ui-core/components/RadioButtonGroup';\r\nimport RadioButton from '@blueprism/ui-core/components/RadioButton';\r\nimport PATDialog from 'components/PATDialog';\r\nimport { GroupMembersContext } from 'contexts/GroupMembersContext';\r\nimport { GroupContext } from 'contexts/GroupContext';\r\nimport { UserContext } from 'contexts/UserContext';\r\nimport DialogTitle from 'components/DialogTitle';\r\nimport User from 'components/User';\r\nimport { config } from 'utils/config';\r\n\r\nexport default function GroupMemberEditDialog({ selectedRowIds = [], clearSelection = () => {} }) {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const { user } = React.useContext(UserContext);\r\n const { reloadGroup } = React.useContext(GroupContext);\r\n const { groupMembers, handleEditMemberClose, editGroupMember } = React.useContext(GroupMembersContext);\r\n const [role, setRole] = React.useState('');\r\n const [errorText, setErrorText] = React.useState('');\r\n\r\n const selectedMember = groupMembers?.members?.items.find(x => x.memberId.toString() === selectedRowIds[0]);\r\n\r\n React.useEffect(() => {\r\n if (!selectedMember) {\r\n return;\r\n }\r\n\r\n setRole(selectedMember.privLevel);\r\n setErrorText('');\r\n }, [groupMembers.isEditOpen, selectedMember]);\r\n\r\n if (!selectedMember) {\r\n return null;\r\n }\r\n\r\n const teamText = ' (' + intl.formatMessage({ id: 'team' }) + ')';\r\n const name = selectedMember.name + (selectedMember.memberType === 1 ? teamText : '');\r\n const avatar = selectedMember.avatar && config.imageUrl(selectedMember.avatar);\r\n\r\n function handleRoleChange(event) {\r\n setRole(parseInt(event.target.value));\r\n }\r\n\r\n function handleCancelClick() {\r\n handleEditMemberClose();\r\n }\r\n\r\n async function handleEditClick() {\r\n const result = await editGroupMember(selectedMember.memberId, role, clearSelection);\r\n switch (result?.status) {\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 401:\r\n setErrorText(intl.formatMessage({ id: 'editGroupMember401Error' }));\r\n return;\r\n case 500:\r\n case 400:\r\n setErrorText(intl.formatMessage({ id: 'editGroupMember500Error' }));\r\n return;\r\n default:\r\n setErrorText('');\r\n const isReloadRequired = selectedMember.memberType === 0 && selectedMember.memberId === user.details.userId;\r\n if (isReloadRequired) {\r\n reloadGroup();\r\n }\r\n return;\r\n }\r\n }\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n }\r\n footerContent={renderFooter()}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, { useContext } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from 'react-intl';\r\nimport ButtonGroup from '@blueprism/ui-core/components/ButtonGroup';\r\nimport ToolbarButton from '@blueprism/ui-core/components/ToolbarButton';\r\nimport { PersonPlus, PersonRemove, KeyWithDots } from '@blueprism/ui-icons';\r\nimport { GroupMembersContext } from 'contexts/GroupMembersContext';\r\nimport GroupMemberDialog from 'components/GroupMemberDialog';\r\nimport GroupMemberRemoveDialog from 'components/GroupMemberRemoveDialog';\r\nimport GroupMemberEditDialog from 'components/GroupMemberEditDialog';\r\n\r\nconst GroupMemberButtons = ({ selectedRowIds = [], clearSelection = () => {}, isAdmin }) => {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n\r\n const {\r\n groupMembers,\r\n openAddMemberDialog,\r\n openEditMemberDialog,\r\n handleAddMemberClose,\r\n addGroupMember,\r\n groupMemberSearch,\r\n openRemoveMemberDialog,\r\n } = useContext(GroupMembersContext);\r\n\r\n if (!groupMembers.spaceId) {\r\n return null;\r\n }\r\n\r\n const areEditButtonsDisabled =\r\n !(\r\n selectedRowIds.length === 1 &&\r\n (groupMembers.members?.items.some(member => member.memberId.toString() === selectedRowIds[0]) ?? false)\r\n ) || !isAdmin;\r\n\r\n const renderButtons = () => {\r\n return (\r\n \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n \r\n );\r\n };\r\n\r\n async function handleAddGroupMember(memberId, memberType, role) {\r\n const response = await addGroupMember({\r\n groupMemberId: memberId,\r\n groupMemberType: memberType,\r\n privLevel: role,\r\n clearSelection,\r\n });\r\n\r\n if (response) {\r\n switch (response.status) {\r\n case 400:\r\n case 409:\r\n return response.data;\r\n case 401:\r\n return { dialogError: intl.formatMessage({ id: 'addGroupMember401Error' }) };\r\n case 403:\r\n history.push('/login');\r\n return;\r\n case 500:\r\n return { dialogError: intl.formatMessage({ id: 'addGroupMember500Error' }) };\r\n default:\r\n console.log(response);\r\n return;\r\n }\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n {renderButtons()}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nGroupMemberButtons.propTypes = {\r\n isAdmin: PropTypes.bool,\r\n};\r\n\r\nexport default GroupMemberButtons;\r\n","import * as React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport { useHistory, useParams } from 'react-router-dom';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Breadcrumbs from '@blueprism/ui-core/components/Breadcrumbs';\r\nimport Toolbar from '@blueprism/ui-core/components/Toolbar';\r\nimport ButtonTabGroup from '@blueprism/ui-core/components/ButtonTabGroup';\r\nimport ToolbarButton from '@blueprism/ui-core/components/ToolbarButton';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport FolderGroup from '@blueprism/ui-icons/FolderGroup';\r\nimport Person from '@blueprism/ui-icons/Person';\r\nimport { GroupsContext } from 'contexts/GroupsContext';\r\nimport GroupMembersContent from 'components/GroupMembersContent';\r\nimport { GroupMembersContext } from 'contexts/GroupMembersContext';\r\nimport { GroupContext } from 'contexts/GroupContext';\r\nimport GroupsList from 'components/GroupsList';\r\nimport GroupNavButtons from 'components/GroupNavButtons';\r\nimport GroupMemberButtons from 'components/GroupMemberButtons';\r\nimport Link from 'components/Link';\r\nimport { toUInt } from 'utils/helper';\r\nimport useTableRowSelection from 'utils/useTableRowSelection';\r\n\r\nexport default function Group() {\r\n const history = useHistory();\r\n const params = useParams();\r\n const intl = useIntl();\r\n const { tableStatus, groupDetails, setGroupId } = React.useContext(GroupContext);\r\n const { group, updateGroupParams, setGroupsActive, updateGroupsSpace } = React.useContext(GroupsContext);\r\n const { groupMembers, updateGroupMembersParams, setGroupMembersActive, updateGroupMembersSpace } = React.useContext(\r\n GroupMembersContext\r\n );\r\n const [activeTab, setActiveTab] = React.useState(0);\r\n\r\n const {\r\n clearSelection: clearGroupMemberIds,\r\n selectedRowIds: selectedGroupMemberIds,\r\n onRowSelectionChange: onGroupMemberSelectionChange,\r\n } = useTableRowSelection([], true);\r\n const {\r\n clearSelection: clearGroupIds,\r\n selectedRowIds: selectedGroupIds,\r\n onRowSelectionChange: onGroupSelectionChange,\r\n } = useTableRowSelection([], true);\r\n\r\n React.useEffect(() => {\r\n const newGroupId = toUInt(params.groupId);\r\n if (!group || group.groupId !== newGroupId) {\r\n setGroupId(newGroupId);\r\n }\r\n }, [params.groupId, group, setGroupId]);\r\n\r\n React.useEffect(() => {\r\n const tabIndex = getIndexFromFragment(params.tab);\r\n if (tabIndex !== activeTab) {\r\n setActiveTab(tabIndex);\r\n }\r\n }, [activeTab, params.tab]);\r\n\r\n React.useEffect(() => {\r\n const groupId = toUInt(params.groupId);\r\n const offset = toUInt(params.offset) || 0;\r\n const limit = toUInt(params.limit) || 25;\r\n\r\n setGroupId(groupId);\r\n updateGroupParams(limit, offset);\r\n updateGroupMembersParams(limit, offset);\r\n }, [params, setGroupId, updateGroupParams, updateGroupMembersParams]);\r\n\r\n React.useEffect(() => {\r\n if (groupDetails) {\r\n updateGroupsSpace(groupDetails.spaceId, groupDetails.groupId, groupDetails.privLevel === 2);\r\n updateGroupMembersSpace(groupDetails.spaceId, groupDetails.groupId, groupDetails.privLevel === 2);\r\n }\r\n }, [groupDetails, updateGroupsSpace, updateGroupMembersSpace]);\r\n\r\n React.useEffect(() => {\r\n setGroupsActive(activeTab === 0);\r\n setGroupMembersActive(activeTab === 1);\r\n }, [activeTab, setGroupsActive, setGroupMembersActive]);\r\n\r\n const getIndexFromFragment = index => {\r\n switch (index) {\r\n case 'members':\r\n return 1;\r\n case 'groups':\r\n default:\r\n return 0;\r\n }\r\n };\r\n\r\n const getTabUrlFragment = index => {\r\n switch (index) {\r\n case 0:\r\n return 'groups';\r\n case 1:\r\n return 'members';\r\n default:\r\n return '';\r\n }\r\n };\r\n\r\n if (!groupDetails || !group || !groupMembers) {\r\n return null;\r\n }\r\n\r\n function handleTabChange(event) {\r\n const index = Number(event.currentTarget.value);\r\n setActiveTab(index);\r\n\r\n const fragment = getTabUrlFragment(index);\r\n history.push(`/your-spaces/group/${group.parentId}/${fragment}/${Math.max(0, group.offset)}/${group.limit}`);\r\n }\r\n\r\n const renderButtons = () => {\r\n switch (activeTab) {\r\n case 0:\r\n return (\r\n \r\n );\r\n case 1:\r\n return (\r\n \r\n );\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n const renderTabContent = () => {\r\n switch (activeTab) {\r\n case 0:\r\n return ;\r\n case 1:\r\n return (\r\n \r\n );\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n const getLinkElements = () => {\r\n const links = [\r\n { url: '/your-spaces', text: intl.formatMessage({ id: 'spaces' }) },\r\n { url: `/your-spaces/space/${groupDetails.spaceId}`, text: groupDetails.spaceName },\r\n { url: `/your-spaces/space/${groupDetails.spaceId}/groups`, text: intl.formatMessage({ id: 'groups' }) },\r\n ]\r\n .concat(groupDetails.parentGroups.map(p => ({ url: `/your-spaces/group/${p.id}`, text: p.name })))\r\n .map(x => (\r\n \r\n {x.text}\r\n \r\n ));\r\n\r\n links.push( {groupDetails.name} );\r\n\r\n return links;\r\n };\r\n\r\n return (\r\n \r\n {getLinkElements()}\r\n {groupDetails.name}\r\n \r\n \r\n } />\r\n } />\r\n \r\n {renderButtons()}\r\n \r\n {renderTabContent()}\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport GroupsContextProvider from 'contexts/GroupsContext';\r\nimport GroupContextProvider from 'contexts/GroupContext';\r\nimport GroupMembersContextProvider from 'contexts/GroupMembersContext';\r\nimport GroupMembersSearchContextProvider from 'contexts/GroupMembersSearchContext';\r\nimport Group from './Group';\r\n\r\nconst GroupWrapper = props => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default GroupWrapper;\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl } from 'react-intl';\r\nimport styled, { css, ThemeContext } from 'styled-components';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\n\r\nconst Details = styled(Stack)(\r\n props => css`\r\n color: ${props.theme.color.text};\r\n border: 0;\r\n outline: none;\r\n cursor: pointer;\r\n `\r\n);\r\n\r\nconst Summary = styled.summary(\r\n ({ theme, globalSizes, active }) => css`\r\n background-color: ${active ? theme.color.action : 'transparent'};\r\n color: ${active ? theme.color.paper : theme.color.action};\r\n text-align: left;\r\n display: flex;\r\n flex-direction: row;\r\n border-radius: ${globalSizes.smallest};\r\n outline: none;\r\n transition: 0.2s box-shadow;\r\n padding: ${globalSizes.xs};\r\n align-items: center;\r\n width: auto;\r\n\r\n svg {\r\n margin-right: ${globalSizes.xs};\r\n }\r\n\r\n :hover {\r\n box-shadow: 0 0 0 2px ${theme.color.hover};\r\n }\r\n\r\n :focus {\r\n box-shadow: 0 0 0 4px ${theme.color.focus};\r\n }\r\n\r\n ::-webkit-details-marker {\r\n display: none;\r\n }\r\n `\r\n);\r\n\r\nconst Span = styled(Box)(\r\n ({ globalSizes, icon }) => css`\r\n margin-left: ${icon === null ? 0 : globalSizes.base};\r\n `\r\n);\r\n\r\nexport default function ToggleTip({ summaryText = '', hideText = '', detailsText, icon = null, onClick = () => {} }) {\r\n const [active, setActive] = useState(false);\r\n const intl = useIntl();\r\n const { color, globalSizes } = React.useContext(ThemeContext);\r\n const translatedSummaryText = summaryText || intl.formatMessage({ id: 'helperMessage' });\r\n const translatedHideText = hideText || intl.formatMessage({ id: 'helperHideMessage' });\r\n\r\n function handleClick(event) {\r\n setActive(isActive => !isActive);\r\n onClick(event);\r\n }\r\n\r\n return (\r\n
    \r\n \r\n {React.Children.map(icon, child =>\r\n React.cloneElement(icon, { color: active ? color.paper : color.action, size: 16 })\r\n )}\r\n {active ? translatedHideText : translatedSummaryText}\r\n \r\n \r\n {detailsText}\r\n \r\n
    \r\n );\r\n}\r\n\r\nToggleTip.propTypes = {\r\n summaryText: PropTypes.string,\r\n hideText: PropTypes.string,\r\n detailsText: PropTypes.string.isRequired,\r\n icon: PropTypes.node,\r\n onClick: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport InputField from '@blueprism/ui-core/components/InputField';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport ToggleTip from 'components/core/ToggleTip';\r\nimport { QuestionMark } from '@blueprism/ui-icons';\r\n\r\nexport default function AssessmentTextQuestion({\r\n fieldName = '',\r\n value = '',\r\n question = {},\r\n validationLabel = '',\r\n errorText = '',\r\n isInError = false,\r\n onChange,\r\n}) {\r\n function handleChange(event) {\r\n onChange(fieldName, event.target.value);\r\n }\r\n\r\n return (\r\n <>\r\n {question.questionText && {question.questionText}}\r\n {question.helperText && } />}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nAssessmentTextQuestion.propTypes = {\r\n fieldName: PropTypes.string,\r\n value: PropTypes.string,\r\n question: PropTypes.object,\r\n validationLabel: PropTypes.string,\r\n errorText: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\r\n isInError: PropTypes.bool,\r\n onChange: PropTypes.func,\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport RadioButton from '@blueprism/ui-core/components/RadioButton';\r\nimport RadioButtonGroup from '@blueprism/ui-core/components/RadioButtonGroup';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport ToggleTip from 'components/core/ToggleTip';\r\nimport { QuestionMark } from '@blueprism/ui-icons';\r\n\r\nexport default function AssessmentRadioQuestion({\r\n fieldName = '',\r\n label = '',\r\n helperText = '',\r\n toggleTipText = '',\r\n options = {},\r\n value = '',\r\n errorText = '',\r\n isInError = false,\r\n standalone = false,\r\n onChange = () => {},\r\n}) {\r\n function handleChange(event) {\r\n onChange(fieldName, event.target.value);\r\n }\r\n\r\n return (\r\n \r\n {standalone ? } /> : <>}\r\n\r\n \r\n {Object.entries(options).map(([key, optionValue]) => (\r\n \r\n ))}\r\n \r\n \r\n );\r\n}\r\n\r\nAssessmentRadioQuestion.propTypes = {\r\n fieldName: PropTypes.string.isRequired,\r\n label: PropTypes.string,\r\n helperText: PropTypes.string,\r\n toggleTipText: PropTypes.string,\r\n options: PropTypes.object,\r\n value: PropTypes.string,\r\n errorText: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\r\n isInError: PropTypes.bool,\r\n standalone: PropTypes.bool,\r\n onChange: PropTypes.func,\r\n};\r\n","import React, { useState } from 'react';\r\nimport Option from '@blueprism/ui-core/components/Option';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Datalist from '@blueprism/ui-core/components/Datalist';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport ToggleTip from 'components/core/ToggleTip';\r\nimport { QuestionMark } from '@blueprism/ui-icons';\r\n\r\nconst AssessmentDataListQuestion = props => {\r\n const [value, setValue] = useState(props.value || '');\r\n\r\n const metaData = props.metaData;\r\n const enumName = props.question.enum;\r\n const fieldName = props.question.fieldName;\r\n const handleChange = e => {\r\n setValue(e.target.value);\r\n props.handleChange(fieldName, e.target.value);\r\n };\r\n\r\n return (\r\n <>\r\n {props.question.questionText && {props.question.questionText}}\r\n {props.question.helperText && } />}\r\n \r\n \r\n {Object.keys(metaData[enumName]).map(x => (\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AssessmentDataListQuestion;\r\n","import React, { useState } from 'react';\r\nimport styled from 'styled-components';\r\nimport PropTypes from 'prop-types';\r\nimport { QuestionMark } from '@blueprism/ui-icons';\r\nimport Slider from '@blueprism/ui-core/components/Slider';\r\nimport CheckBox from '@blueprism/ui-core/components/CheckBox';\r\nimport ToggleTip from 'components/core/ToggleTip';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport { globalSizes } from '@blueprism/ui-core/theme/units';\r\n\r\nconst SliderContainer = styled(Box)`\r\n flex-grow: 1;\r\n`;\r\n\r\nconst SliderValueLabel = styled(Text)`\r\n width: 3rem;\r\n text-align: end;\r\n line-height: 2.5rem;\r\n`;\r\n\r\nexport default function AssessmentSliderQuestion({\r\n value,\r\n helperText = '',\r\n questionText = '',\r\n errorText = '',\r\n isInError = false,\r\n validationLabel,\r\n fieldName = '',\r\n checkBoxLabel = '',\r\n defaultValue = 0,\r\n maxValue = 100,\r\n minValue = 0,\r\n step = 10,\r\n description = '',\r\n onChange = () => {},\r\n}) {\r\n const [sliderValue, setSliderValue] = useState(value?.value ?? defaultValue.toString());\r\n const [checked, setChecked] = useState(value?.iDontKnow ?? false);\r\n const handleCheckboxChange = () => {\r\n const isChecked = !checked;\r\n setChecked(isChecked);\r\n setSliderValue(defaultValue.toString());\r\n onChange(fieldName, { value: isChecked ? '' : defaultValue.toString(), iDontKnow: isChecked });\r\n };\r\n\r\n const handleSliderChange = event => {\r\n setSliderValue(event.target.value);\r\n onChange(fieldName, { value: event.target.value, iDontKnow: false });\r\n };\r\n\r\n return (\r\n \r\n {helperText && } />}\r\n \r\n \r\n \r\n \r\n {checked ? null : `${sliderValue}%`}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nAssessmentSliderQuestion.propTypes = {\r\n value: PropTypes.object,\r\n helperText: PropTypes.string,\r\n questionText: PropTypes.string,\r\n errorText: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\r\n\r\n isInError: PropTypes.bool,\r\n fieldName: PropTypes.string,\r\n checkBoxLabel: PropTypes.string,\r\n defaultValue: PropTypes.number,\r\n maxValue: PropTypes.number,\r\n minValue: PropTypes.number,\r\n step: PropTypes.number,\r\n description: PropTypes.string,\r\n onChange: PropTypes.func,\r\n};\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { QuestionMark } from '@blueprism/ui-icons';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport ToggleTip from 'components/core/ToggleTip';\r\nimport NumberInput from './core/NumberInput/NumberInput';\r\n\r\nconst AssessmentNumberQuestion = ({\r\n value,\r\n label,\r\n questionText,\r\n helperText,\r\n maxValue,\r\n fieldName,\r\n handleChange,\r\n isInError,\r\n validationLabel,\r\n errorText = '',\r\n}) => {\r\n const [localValue, setValue] = useState(value !== null ? value : '');\r\n\r\n const handleInputChange = event => {\r\n setValue(event.target.value);\r\n handleChange(fieldName, event.target.value);\r\n };\r\n return (\r\n <>\r\n {questionText && {questionText}}\r\n \r\n <>{helperText && } />}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nAssessmentNumberQuestion.propTypes = {\r\n value: PropTypes.string,\r\n label: PropTypes.string,\r\n questionText: PropTypes.string,\r\n helperText: PropTypes.string,\r\n maxValue: PropTypes.number,\r\n fieldName: PropTypes.string,\r\n handleChange: PropTypes.func,\r\n isInError: PropTypes.bool,\r\n validationLabel: PropTypes.string,\r\n errorText: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\r\n};\r\n\r\nexport default AssessmentNumberQuestion;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { QuestionMark } from '@blueprism/ui-icons';\r\nimport styled, { css } from 'styled-components';\r\nimport { CheckBox, FormField, Box, Stack } from '@blueprism/ui-core';\r\nimport ToggleTip from '../components/core/ToggleTip';\r\nimport NumberInput from '../components/core/NumberInput/NumberInput';\r\n\r\nconst Fieldset = styled(Stack).attrs(() => ({ element: 'fieldset', gap: 'base' }))`\r\n border: none;\r\n`;\r\n\r\nconst Legend = styled.legend(\r\n ({ theme }) => css`\r\n font-size: ${theme.font.size.bodyL}rem;\r\n margin-left: ${theme.globalSizes.large};\r\n `\r\n);\r\n\r\nconst ToggleTipLeftMargin = styled(Box)(\r\n ({ theme }) => css`\r\n margin-left: ${theme.globalSizes.large};\r\n `\r\n);\r\n\r\nconst StyledBox = styled(Box)(\r\n props => css`\r\n margin-left: ${props.theme.globalSizes.large};\r\n `\r\n);\r\n\r\nconst AssessmentNumberOptionQuestion = ({\r\n value,\r\n label,\r\n questionText,\r\n helperText,\r\n maxValue,\r\n iDontKnow,\r\n fieldName,\r\n handleChange,\r\n isInError,\r\n validationLabel,\r\n errorText = '',\r\n}) => {\r\n const handleInputChange = event => {\r\n handleChange(fieldName, event.target.value !== '' ? { value: event.target.value, iDontKnow: false } : null);\r\n };\r\n\r\n const handleDontKnowChanged = event => {\r\n if (event.target.checked) {\r\n handleChange(fieldName, { value: '', iDontKnow: true });\r\n } else {\r\n handleChange(fieldName, null);\r\n }\r\n };\r\n\r\n const dontKnowSelected = value !== null && value.iDontKnow;\r\n return (\r\n
    \r\n {questionText}\r\n \r\n {helperText && } />}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nAssessmentNumberOptionQuestion.propTypes = {\r\n value: PropTypes.object,\r\n label: PropTypes.string,\r\n questionText: PropTypes.string,\r\n helperText: PropTypes.string,\r\n maxValue: PropTypes.number,\r\n iDontKnow: PropTypes.string,\r\n fieldName: PropTypes.string,\r\n handleChange: PropTypes.func,\r\n isInError: PropTypes.bool,\r\n validationLabel: PropTypes.string,\r\n errorText: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\r\n};\r\n\r\nexport default AssessmentNumberOptionQuestion;\r\n","import React from 'react';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport DatalistIndexed from '@blueprism/ui-core/components/DatalistIndexed';\r\nimport Option from '@blueprism/ui-core/components/Option';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport ToggleTip from 'components/core/ToggleTip';\r\nimport { QuestionMark } from '@blueprism/ui-icons';\r\n\r\nconst AssessmentSelectQuestion = props => {\r\n const metaData = props.metaData;\r\n const enumName = props.question.enum;\r\n const fieldName = props.question.fieldName;\r\n\r\n const handleChange = e => {\r\n if (e.target.value != null) {\r\n props.handleChange(fieldName, e.target.value);\r\n } else {\r\n var textInput = document.getElementById(fieldName);\r\n var val = textInput.value?.trim() ?? '';\r\n props.handleChange(fieldName, val);\r\n }\r\n };\r\n\r\n const datalistProps = {};\r\n datalistProps['id'] = fieldName;\r\n datalistProps['name'] = fieldName;\r\n datalistProps['label'] = props.question.label;\r\n datalistProps['onChange'] = handleChange;\r\n datalistProps['error'] = props.isInError;\r\n\r\n if (props.value !== null && metaData[enumName][props.value]) {\r\n datalistProps['value'] = metaData[enumName][props.value];\r\n }\r\n\r\n return (\r\n <>\r\n {props.question.questionText && {props.question.questionText}}\r\n {props.question.helperText && } />}\r\n \r\n \r\n {Object.keys(metaData[enumName]).map(x => (\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AssessmentSelectQuestion;\r\n","import React, { useState } from 'react';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport InputField from '@blueprism/ui-core/components/InputField';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport ToggleTip from 'components/core/ToggleTip';\r\nimport { QuestionMark } from '@blueprism/ui-icons';\r\n\r\nconst AssessmentTagsQuestion = props => {\r\n const fieldName = props.question.fieldName;\r\n\r\n const [value, setValue] = useState(props.value.map(x => x.tag).join() || '');\r\n\r\n const handleChange = e => {\r\n setValue(e.target.value);\r\n props.handleChange(\r\n props.question.fieldName,\r\n e.target.value\r\n .split(',')\r\n .map(x => x.trim())\r\n .filter(x => x !== '')\r\n .map(x => ({ tag: x }))\r\n );\r\n };\r\n return (\r\n <>\r\n {props.question.questionText && {props.question.questionText}}\r\n {props.question.helperText && } />}\r\n\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AssessmentTagsQuestion;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { useIntl } from 'react-intl';\r\nimport NumberInput from '../NumberInput/NumberInput';\r\nimport InputFieldLabel from '@blueprism/ui-core/components/InputFieldLabel';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\n\r\nconst StyledInputFieldLabel = styled(InputFieldLabel)`\r\n div:nth-child(1) {\r\n div:nth-child(1) {\r\n display: none;\r\n }\r\n }\r\n`;\r\n\r\nexport default function DurationInput({\r\n id,\r\n value = { hours: '', minutes: '', seconds: '' },\r\n errorHours = false,\r\n errorMinutes = false,\r\n errorSeconds = false,\r\n onChange = () => {},\r\n}) {\r\n const [hours, setHours] = React.useState(value.hours);\r\n const [minutes, setMinutes] = React.useState(value.minutes);\r\n const [seconds, setSeconds] = React.useState(value.seconds);\r\n const intl = useIntl();\r\n\r\n function handleChange({ target: { value: newValue, name } }) {\r\n switch (name) {\r\n case 'hours':\r\n setHours(newValue);\r\n onChange({ hours: newValue, minutes: String(minutes ?? ''), seconds: String(seconds ?? '') });\r\n break;\r\n\r\n case 'minutes':\r\n setMinutes(newValue);\r\n onChange({ hours: String(hours ?? ''), minutes: newValue, seconds: String(seconds ?? '') });\r\n break;\r\n\r\n case 'seconds':\r\n setSeconds(newValue);\r\n onChange({ hours: String(hours ?? ''), minutes: String(minutes ?? ''), seconds: newValue });\r\n break;\r\n\r\n default:\r\n console.log('default action');\r\n break;\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nDurationInput.propTypes = {\r\n id: PropTypes.string.isRequired,\r\n value: PropTypes.object,\r\n errorHours: PropTypes.bool,\r\n errorMinutes: PropTypes.bool,\r\n errorSeconds: PropTypes.bool,\r\n onChange: PropTypes.func,\r\n};\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport DurationInput from 'components/core/DurationInput';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport ToggleTip from 'components/core/ToggleTip';\r\nimport { QuestionMark } from '@blueprism/ui-icons';\r\n\r\nexport default function AssessmentTimespanQuestion({\r\n fieldName,\r\n label,\r\n helperText,\r\n value = { hours: '', minutes: '', seconds: '' },\r\n isInError = false,\r\n errorHours = false,\r\n errorMinutes = false,\r\n errorSeconds = false,\r\n validationLabel,\r\n errorText = '',\r\n onChange,\r\n}) {\r\n const [time, setTime] = useState({ hours: value.hours, minutes: value.minutes, seconds: value.seconds });\r\n\r\n function handleChange(event) {\r\n onChange(fieldName, event);\r\n setTime(event);\r\n }\r\n\r\n return (\r\n \r\n {helperText != null ? } /> : <>}\r\n\r\n \r\n \r\n );\r\n}\r\n\r\nAssessmentTimespanQuestion.propTypes = {\r\n fieldName: PropTypes.string,\r\n label: PropTypes.string,\r\n helperText: PropTypes.string,\r\n validationLabel: PropTypes.string,\r\n errorText: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\r\n value: PropTypes.object,\r\n isInError: PropTypes.bool,\r\n errorHours: PropTypes.bool,\r\n errorMinutes: PropTypes.bool,\r\n errorSeconds: PropTypes.bool,\r\n onChange: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled, { css } from 'styled-components';\r\nimport DatalistIndexed from '@blueprism/ui-core/components/DatalistIndexed';\r\nimport Option from '@blueprism/ui-core/components/Option';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport Cluster from '@blueprism/ui-core/layout/Cluster';\r\nimport NumberInput from 'components/core/NumberInput/NumberInput';\r\n\r\nconst InputContainer = styled.div`\r\n display: inline-flex;\r\n flex-flow: column nowrap;\r\n flex: 1 1 0;\r\n`;\r\n\r\nconst Label = styled.label(\r\n props => css`\r\n font-size: ${props.theme.font.size.caption}rem;\r\n line-height: 1rem;\r\n min-height: 2rem;\r\n padding: 0.5rem 0;\r\n flex-grow: 1;\r\n `\r\n);\r\n\r\nfunction CurrencyInput({\r\n id,\r\n label,\r\n helperText = '',\r\n errorText = '',\r\n currencyValue = '',\r\n currencyLabel = '',\r\n currencyAriaLabel,\r\n currencyData = [],\r\n currencyError = false,\r\n amountValue = '',\r\n amountLabel = '',\r\n amountAriaLabel,\r\n amountError = false,\r\n onCurrencyChange = () => {},\r\n onAmountChange = () => {},\r\n}) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {currencyData.map(([key, value]) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nCurrencyInput.propTypes = {\r\n id: PropTypes.string.isRequired,\r\n label: PropTypes.string.isRequired,\r\n helperText: PropTypes.string,\r\n errorText: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\r\n\r\n currencyValue: PropTypes.string,\r\n currencyLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.array]).isRequired,\r\n currencyAriaLabel: PropTypes.string,\r\n currencyError: PropTypes.bool,\r\n currencyData: PropTypes.array,\r\n amountValue: PropTypes.string,\r\n amountLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.array]).isRequired,\r\n amountAriaLabel: PropTypes.string,\r\n amountError: PropTypes.bool,\r\n onCurrencyChange: PropTypes.func,\r\n onAmountChange: PropTypes.func,\r\n};\r\n\r\nexport default CurrencyInput;\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport QuestionMark from '@blueprism/ui-icons/QuestionMark';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport CurrencyInput from 'components/CurrencyInput';\r\nimport ToggleTip from 'components/core/ToggleTip';\r\n\r\nexport default function AssessmentCurrencyQuestion({\r\n value = { amount: null, currency: null },\r\n question,\r\n fieldName = '',\r\n metaData = [],\r\n currencyIsInError = false,\r\n currencyErrorText = '',\r\n amountIsInError = false,\r\n amountErrorText = '',\r\n handleChange = () => {},\r\n}) {\r\n const [amount, setAmount] = React.useState();\r\n\r\n const currencyData = Object.keys(metaData.availableCurrencies).map(x => [\r\n metaData.availableCurrencies[x].currencyCode,\r\n metaData.availableCurrencies[x].currencyName,\r\n ]);\r\n\r\n const handleCurrencyChange = event => {\r\n var currencyCode = event.target.value !== null ? event.target.value : null;\r\n\r\n const newValue = {\r\n currencyCode: currencyCode ?? document.getElementById(`currency-datalist-indexed-${fieldName}`)?.value?.trim(),\r\n amount: amount,\r\n };\r\n handleChange(fieldName, newValue);\r\n };\r\n\r\n const handleAmountChange = event => {\r\n const newValue = { ...value, amount: event.target.value };\r\n setAmount(event.target.value);\r\n handleChange(fieldName, newValue);\r\n };\r\n\r\n React.useEffect(() => {\r\n const initialAmount = value && value.amount != null ? value.amount : '';\r\n setAmount(initialAmount);\r\n }, [metaData, value]);\r\n\r\n const currencyInputProps = {\r\n id: fieldName,\r\n name: fieldName,\r\n onAmountChange: handleAmountChange,\r\n onCurrencyChange: handleCurrencyChange,\r\n currencyLabel: currencyErrorText || question.currencyHelperText,\r\n label: question.label,\r\n amountLabel: amountErrorText || question.description,\r\n currencyData: currencyData,\r\n currencyError: currencyIsInError,\r\n amountError: amountIsInError,\r\n };\r\n\r\n if (amount != null) {\r\n currencyInputProps['amountValue'] = amount;\r\n }\r\n\r\n if (value?.currencyCode !== null && metaData.availableCurrencies.find(x => x.currencyCode === value.currencyCode)) {\r\n currencyInputProps['currencyValue'] = metaData.availableCurrencies.find(\r\n x => x.currencyCode === value.currencyCode\r\n ).currencyName;\r\n }\r\n\r\n return (\r\n <>\r\n {question.questionText && {question.questionText}}\r\n {question.helperText && } />}\r\n \r\n \r\n );\r\n}\r\n\r\nAssessmentCurrencyQuestion.propTypes = {\r\n value: PropTypes.object,\r\n question: PropTypes.object,\r\n fieldName: PropTypes.string,\r\n metaData: PropTypes.object,\r\n currencyIsInError: PropTypes.bool,\r\n currencyErrorText: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\r\n amountIsInError: PropTypes.bool,\r\n amountErrorText: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\r\n handleChange: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport { ThemeContext } from 'styled-components';\r\nimport PropTypes from 'prop-types';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\nimport Tick from '@blueprism/ui-icons/Tick';\r\nimport Alert from '@blueprism/ui-icons/Alert';\r\nimport Asterisk from '@blueprism/ui-icons/Asterisk';\r\nimport Link from 'components/Link';\r\n\r\nexport default function ProcessAssessmentSummaryEntry({\r\n fieldValue = '',\r\n questionText = '',\r\n link = '',\r\n isAnswered = false,\r\n linkEnabled = false,\r\n isMandatory = false,\r\n}) {\r\n const { color } = React.useContext(ThemeContext);\r\n\r\n function renderIcon() {\r\n if (isAnswered) {\r\n return ;\r\n }\r\n\r\n if (isMandatory) {\r\n return ;\r\n }\r\n\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n {renderIcon()}\r\n \r\n \r\n
    {questionText}
    \r\n
    \r\n \r\n
    \r\n {linkEnabled && {fieldValue}} {!linkEnabled && <>{fieldValue}}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n}\r\n\r\nProcessAssessmentSummaryEntry.propTypes = {\r\n fieldValue: PropTypes.string,\r\n questionText: PropTypes.string,\r\n link: PropTypes.string,\r\n isAnswered: PropTypes.bool,\r\n linkEnabled: PropTypes.bool,\r\n isMandatory: PropTypes.bool,\r\n};\r\n","import React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport PropTypes from 'prop-types';\r\nimport { FormattedMessage, FormattedNumber } from 'react-intl';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\n\r\nexport default function AssessmentBenefitsSummary({ processData = {} }) {\r\n const intl = useIntl();\r\n\r\n if (!processData.potentialSavingHours && !processData.potentialSavingCost) {\r\n return null;\r\n }\r\n\r\n const hours = processData.potentialSavingHours ?? 0;\r\n const amount = processData.potentialSavingCost ?? '';\r\n const currency = processData.averageFTECost?.currencyCode ?? '';\r\n\r\n function getPotentialHoursSavedSection() {\r\n return (\r\n <>\r\n \r\n }}\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n function getPotentialCapitalSavedSection() {\r\n return (\r\n \r\n \r\n ),\r\n }}\r\n />\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {processData.potentialSavingCost && getPotentialCapitalSavedSection()}\r\n {processData.potentialSavingHours && getPotentialHoursSavedSection()}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nAssessmentBenefitsSummary.propTypes = {\r\n processData: PropTypes.object,\r\n};\r\n","import * as React from 'react';\r\nimport { generatePath } from 'react-router';\r\nimport PropTypes from 'prop-types';\r\nimport ProcessAssessmentSummaryEntry from './ProcessAssessmentSummaryEntry';\r\nimport AssessmentBenefitsSummary from './AssessmentBenefitsSummary';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport { questionType } from 'pages/ProcessAssessment';\r\n\r\nconst getQuestionText = question =>\r\n (question.type === questionType.ENUM && !!question.helperText) || question.type === questionType.SLIDER\r\n ? question.questionText\r\n : question.label;\r\n\r\nexport default function AssessmentSummarySection({\r\n processId = '',\r\n processData = {},\r\n header = '',\r\n metaData = {},\r\n questions = [],\r\n filterIncomplete = false,\r\n formattedSummary = {},\r\n pageMetaData = {},\r\n currentPageType = 0,\r\n}) {\r\n function getLinkToQuestionPage(questionName) {\r\n const pageName = Object.values(metaData.data.pages).find(\r\n page => page.type === 1 && page.questions.includes(questionName)\r\n ).pageName;\r\n const path = `/process-assessment/:processId/${pageName}`;\r\n return generatePath(path, { processId: processId });\r\n }\r\n\r\n const getFormattedAnswer = question => formattedSummary[question.fieldName];\r\n\r\n function getQuestions(questionName) {\r\n const question = metaData.data[questionName];\r\n const answer = getFormattedAnswer(question);\r\n const isAnswered = !processData.missingFields || !processData.missingFields.includes(question.fieldName);\r\n const isMandatory = question.isMandatory;\r\n if (filterIncomplete && isAnswered) {\r\n return null;\r\n }\r\n\r\n const questionText = getQuestionText(question);\r\n const questionLink = getLinkToQuestionPage(questionName);\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n const questionElements = questions.map(getQuestions);\r\n\r\n if (!questionElements.some(x => x !== null)) {\r\n return null;\r\n }\r\n\r\n function getSummaryTemplate() {\r\n if (pageMetaData.summaryTemplate === 1) {\r\n return ;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {header && {header}}\r\n
    \r\n {questionElements}\r\n
    \r\n
    \r\n {currentPageType === 2 && getSummaryTemplate()}\r\n \r\n );\r\n}\r\n\r\nAssessmentSummarySection.propTypes = {\r\n processId: PropTypes.string,\r\n processData: PropTypes.object,\r\n header: PropTypes.string,\r\n metaData: PropTypes.object,\r\n questions: PropTypes.array,\r\n filterIncomplete: PropTypes.bool,\r\n formattedSummary: PropTypes.object,\r\n pageMetaData: PropTypes.object,\r\n currentPageType: PropTypes.number,\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport { FormField } from '@blueprism/ui-core';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport { assessments } from 'utils/api';\r\n\r\nconst AssessmentSummary = props => {\r\n const intl = useIntl();\r\n const { getUser } = React.useContext(AuthContext);\r\n const [formattedSummary, setFormattedSummary] = useState({\r\n isFormattedSummarySet: false,\r\n data: {},\r\n });\r\n\r\n useEffect(() => {\r\n if (formattedSummary.isFormattedSummarySet === false) {\r\n assessments\r\n .getFormattedSummaryAnswers(getUser, props.id)\r\n .then(response => setFormattedSummary({ isFormattedSummarySet: true, data: response }))\r\n .catch(err => console.error(err));\r\n }\r\n }, [formattedSummary, props.id, getUser]);\r\n\r\n if (!formattedSummary.isFormattedSummarySet) {\r\n return null;\r\n }\r\n\r\n function renderReadonlyInfoMessage() {\r\n let label = null;\r\n\r\n if (!formattedSummary.data.isInEditableState) {\r\n label = intl.formatMessage({ id: 'processAssessmentSummary_readonlyInfo_readonlyDueToStatus' });\r\n }\r\n\r\n if (!formattedSummary.data.userHasEditPermission) {\r\n label = intl.formatMessage({ id: 'processAssessmentSummary_readonlyInfo_readonlyDueToUserPrivilege' });\r\n }\r\n\r\n if (label === null) {\r\n return null;\r\n }\r\n\r\n return ;\r\n }\r\n return (\r\n <>\r\n {renderReadonlyInfoMessage()}\r\n {React.Children.map(props.children, child =>\r\n React.cloneElement(child, { formattedSummary: formattedSummary.data })\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default AssessmentSummary;\r\n","import * as React from 'react';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport GroupSelectorDialog from 'components/GroupSelector';\r\n\r\nexport default function AssessmentGroupSelector({\r\n hasAssessmentBeenSaved,\r\n label,\r\n groupIdFieldName,\r\n groupNameFieldName,\r\n helperText,\r\n value,\r\n groupName,\r\n onChange,\r\n validationLabel,\r\n selectGroup,\r\n changeGroup,\r\n isInError,\r\n errorText = '',\r\n}) {\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n\r\n function handleDialogOpen() {\r\n setIsOpen(true);\r\n }\r\n\r\n function handleDialogClose() {\r\n setIsOpen(false);\r\n }\r\n\r\n function handleGroupChange(groupId, newGroupName) {\r\n onChange(groupIdFieldName, groupId);\r\n onChange(groupNameFieldName, newGroupName);\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {groupName && helperText + ' ' + groupName}\r\n \r\n \r\n\r\n \r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { generatePath } from 'react-router';\r\nimport { useIntl } from 'react-intl';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport StatusIndicator from '@blueprism/ui-core/components/StatusIndicator';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Switch from '@blueprism/ui-core/components/Switch';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport AssessmentTextQuestion from 'components/AssessmentTextQuestion';\r\nimport AssessmentRadioQuestion from 'components/AssessmentRadioQuestion';\r\nimport AssessmentDataListQuestion from 'components/AssessmentDataListQuestion';\r\nimport AssessmentSliderQuestion from 'components/AssessmentSliderQuestion';\r\nimport AssessmentNumberQuestion from 'components/AssessmentNumberQuestion';\r\nimport AssessmentNumberOptionQuestion from 'components/AssessmentNumberOptionQuestion';\r\nimport AssessmentSelectQuestion from 'components/AssessmentSelectQuestion';\r\nimport AssessmentTagsQuestion from 'components/AssessmentTagsQuestion';\r\nimport AssessmentTimespanQuestion from 'components/AssessmentTimespanQuestion';\r\nimport AssessmentCurrencyQuestion from 'components/AssessmentCurrencyQuestion';\r\nimport AssessmentSummarySection from 'components/AssessmentSummarySection';\r\nimport AssessmentSummary from 'components/AssessmentSummary';\r\nimport { toUInt } from 'utils/helper';\r\nimport AssessmentGroupSelector from 'components/AssessmentGroupSelector';\r\nimport ErrorMessage from 'components/ErrorMessage';\r\nimport { assessments } from 'utils/api';\r\n\r\nexport const questionType = {\r\n TEXT: 0,\r\n ENUM: 1,\r\n NUMBER: 2,\r\n TAGS: 3,\r\n SELECT: 4,\r\n DATALIST: 5,\r\n SLIDER: 6,\r\n TIMESPAN: 7,\r\n NUMBEROPTION: 8,\r\n CURRENCY: 9,\r\n GROUPSELECT: 10,\r\n};\r\n\r\nconst StackedContainer = styled(Stack)`\r\n width: 100%;\r\n min-width: min-content;\r\n`;\r\n\r\nconst QuestionList = styled(Stack)`\r\n padding: 0;\r\n min-height: 560px;\r\n max-width: var(--measure);\r\n`;\r\n\r\nexport default function ProcessAssessment(props) {\r\n const intl = useIntl();\r\n const { getUser } = React.useContext(AuthContext);\r\n const [errors, setErrors] = React.useState({});\r\n const [process, setProcess] = React.useState({\r\n isProcessDataSet: false,\r\n processData: {},\r\n });\r\n const [pageError, setPageError] = React.useState('');\r\n const [filterIncomplete, setFilterIncomplete] = React.useState(false);\r\n const [savePrompt, setSavePrompt] = React.useState({\r\n state: 'idle',\r\n });\r\n const [metaData, setMetaData] = React.useState({\r\n isMetaDataSet: false,\r\n data: {},\r\n });\r\n\r\n const params = props.match.params;\r\n\r\n React.useEffect(() => {\r\n const localProcessId = toUInt(params.processId);\r\n if (!process.isProcessDataSet && params.processId.toLowerCase() === 'new') {\r\n assessments\r\n .getNewAssessment(getUser)\r\n .then(response => {\r\n setProcess({\r\n isProcessDataSet: true,\r\n processData: response,\r\n });\r\n })\r\n .catch(err => {\r\n if (err.response.status === 403 || err.response.status === 401) {\r\n props.history.push('/login');\r\n return;\r\n } else if (err.response.status === 500) {\r\n props.history.push('/servererror');\r\n return;\r\n }\r\n });\r\n } else if (!process.isProcessDataSet || (localProcessId && process.processData.id !== localProcessId)) {\r\n assessments\r\n .getAssessment(getUser, localProcessId)\r\n .then(response => {\r\n setProcess({\r\n isProcessDataSet: true,\r\n processData: response,\r\n });\r\n })\r\n .catch(err => {\r\n switch (err.response.status) {\r\n case 401:\r\n props.history.push('/unauthorised');\r\n return;\r\n case 403:\r\n props.history.push('/login');\r\n return;\r\n case 500:\r\n props.history.push('/servererror');\r\n return;\r\n default:\r\n break;\r\n }\r\n });\r\n }\r\n }, [process, params, getUser, props.history]);\r\n\r\n React.useEffect(() => {\r\n if (!metaData.isMetaDataSet) {\r\n assessments\r\n .getAssessmentMetaData(getUser)\r\n .then(response => {\r\n setMetaData({ isMetaDataSet: true, data: response });\r\n })\r\n .catch(err => {\r\n if (err.response.status === 403 || err.response.status === 401) {\r\n props.history.push('/login');\r\n return;\r\n } else if (err.response.status === 500) {\r\n props.history.push('/servererror');\r\n return;\r\n }\r\n });\r\n }\r\n }, [metaData, getUser, props.history]);\r\n\r\n React.useLayoutEffect(() => {\r\n const mains = window.document.getElementsByTagName('main');\r\n\r\n if (mains?.length === 1) {\r\n const main = mains[0];\r\n const supportsNativeSmoothScroll = 'scrollBehavior' in document.documentElement.style;\r\n if (supportsNativeSmoothScroll) {\r\n main.scrollTo(0, 0);\r\n } else {\r\n main.scrollTop = 0;\r\n }\r\n }\r\n }, [params.processPage]);\r\n\r\n const getCurrentPage = parameters =>\r\n parameters.processPage\r\n ? metaData.data.pages?.[parameters.processPage.toLowerCase()]\r\n : metaData.data.pages?.[Object.keys(metaData.data.pages)[0]];\r\n\r\n if (!metaData.isMetaDataSet || !process.isProcessDataSet) {\r\n return null;\r\n }\r\n\r\n const pageMetaData = getCurrentPage(params);\r\n if (!!pageMetaData === false) {\r\n props.history.push('/NotFound');\r\n return null;\r\n }\r\n\r\n const pageIndex = metaData.isMetaDataSet ? Object.keys(metaData.data.pages).indexOf(pageMetaData.pageName) : -1;\r\n\r\n if (process.processData.isReadonly && pageMetaData.pageName !== 'summary') {\r\n props.history.push(`/process-assessment/${params.processId}/summary`);\r\n }\r\n\r\n const navigateTo = increment => {\r\n const navigateToUrlForPageName = (pageName, processId) => {\r\n const path = `/process-assessment/:processId/${pageName}`;\r\n const finalPath = generatePath(path, { processId: processId });\r\n props.history.push(finalPath);\r\n };\r\n\r\n const newPageName = Object.keys(metaData.data.pages)[pageIndex + increment];\r\n\r\n if (pageMetaData.type === 1 || pageMetaData.page === 2) {\r\n setSavePrompt({ state: 'pending' });\r\n process.processData.submittedFromPage = pageMetaData.page;\r\n\r\n const dto = Object.assign({}, process.processData, { missingFields: [] });\r\n\r\n if (dto.id === 0) {\r\n assessments\r\n .addAssessment(getUser, dto.folderId, dto)\r\n .then(result => {\r\n setErrors({});\r\n setPageError('');\r\n if (result !== null) {\r\n setProcess(p => ({ ...p, processData: result }));\r\n navigateToUrlForPageName(newPageName, result.id || 'new');\r\n triggerSaveComplete();\r\n }\r\n })\r\n .catch(err => {\r\n setSavePrompt({ state: 'warning' });\r\n if (err.response) {\r\n if (err.response.status === 403) {\r\n props.history.push('/login');\r\n return;\r\n } else if (err.response.status === 401) {\r\n setPageError(intl.formatMessage({ id: '401fullPage' }));\r\n return;\r\n } else if (err.response.status === 500) {\r\n setPageError(intl.formatMessage({ id: '500fullPage' }));\r\n return;\r\n }\r\n setErrors(err.response.data);\r\n return;\r\n }\r\n\r\n if (err.message) {\r\n console.log(err.message);\r\n }\r\n });\r\n } else {\r\n assessments\r\n .editAssessment(getUser, dto)\r\n .then(result => {\r\n setErrors({});\r\n setPageError('');\r\n if (result !== null) {\r\n setProcess(p => ({ ...p, processData: result }));\r\n navigateToUrlForPageName(newPageName, result.id || 'new');\r\n triggerSaveComplete();\r\n }\r\n })\r\n .catch(err => {\r\n setSavePrompt({ state: 'warning' });\r\n\r\n if (err.response) {\r\n if (err.response.status === 403) {\r\n props.history.push('/login');\r\n return;\r\n } else if (err.response.status === 401) {\r\n setPageError(intl.formatMessage({ id: '401fullPage' }));\r\n return;\r\n } else if (err.response.status === 500) {\r\n setPageError(intl.formatMessage({ id: '500fullPage' }));\r\n return;\r\n } else if (err.response.status === 409) {\r\n setPageError(err.response.data);\r\n return;\r\n }\r\n\r\n setErrors(err.response.data);\r\n return;\r\n }\r\n\r\n if (err.message) {\r\n console.log(err.message);\r\n }\r\n });\r\n }\r\n } else {\r\n navigateToUrlForPageName(newPageName, params.processId);\r\n }\r\n };\r\n\r\n const getErrorMessage = fieldName => errors[fieldName];\r\n\r\n const isInError = fieldName => errors[fieldName] != null && errors[fieldName].length > 0;\r\n\r\n const handleChange = (key, value) => {\r\n setProcess(p => ({ ...p, processData: { ...p.processData, [key]: value } }));\r\n };\r\n\r\n const toggleIncomplete = event => setFilterIncomplete(event.target.checked);\r\n\r\n const handleSaveAndContinueClick = event => {\r\n event.preventDefault();\r\n navigateTo(1);\r\n };\r\n\r\n const handlePreviousClick = () => {\r\n navigateTo(-1);\r\n };\r\n\r\n const handleViewSummaryClick = () => {\r\n navigateTo(Object.keys(metaData.data.pages).length - pageIndex - 1);\r\n };\r\n\r\n const handleSaveAndExit = event => {\r\n event.preventDefault();\r\n props.history.push('/your-processes');\r\n };\r\n\r\n const handleSaveAndViewRecommendations = event => {\r\n event.preventDefault();\r\n props.history.push(`/process-assessment/${params.processId}/recommendation`);\r\n };\r\n\r\n function triggerSaveComplete() {\r\n setSavePrompt({ state: 'complete' });\r\n setTimeout(() => {\r\n setSavePrompt({ state: 'idle' });\r\n }, 1500);\r\n }\r\n\r\n return (\r\n
    \r\n \r\n \r\n {metaData.data.assessmentTitle}\r\n {pageMetaData.title && {pageMetaData.title}}\r\n \r\n \r\n {pageMetaData.description && {pageMetaData.description}}\r\n \r\n {pageError && }\r\n {pageMetaData.type === 1 && (\r\n \r\n {pageMetaData.questions.map(x => {\r\n const question = metaData.data[x];\r\n\r\n switch (question.type) {\r\n case questionType.TEXT:\r\n return (\r\n \r\n );\r\n\r\n case questionType.ENUM:\r\n return (\r\n \r\n );\r\n\r\n case questionType.NUMBER:\r\n return (\r\n \r\n );\r\n\r\n case questionType.TAGS:\r\n return (\r\n \r\n );\r\n\r\n case questionType.SELECT:\r\n return (\r\n \r\n );\r\n\r\n case questionType.DATALIST:\r\n return (\r\n \r\n );\r\n\r\n case questionType.SLIDER:\r\n return (\r\n \r\n );\r\n\r\n case questionType.TIMESPAN:\r\n return (\r\n \r\n );\r\n\r\n case questionType.NUMBEROPTION:\r\n return (\r\n \r\n );\r\n\r\n case questionType.CURRENCY:\r\n return (\r\n \r\n );\r\n\r\n case questionType.GROUPSELECT:\r\n return (\r\n 0}\r\n label={question.label}\r\n groupIdFieldName={question.fieldName}\r\n groupNameFieldName={question.fieldName2}\r\n helperText={question.helperText}\r\n value={process.processData[question.fieldName]}\r\n groupName={process.processData[question.fieldName2]}\r\n onChange={handleChange}\r\n validationLabel={question.description}\r\n selectGroup={question.selectGroup}\r\n changeGroup={question.changeGroup}\r\n isInError={isInError(question.fieldName)}\r\n errorText={getErrorMessage(question.fieldName)}\r\n />\r\n );\r\n\r\n default:\r\n return
    Type {x} Not implemented
    ;\r\n }\r\n })}\r\n
    \r\n )}\r\n \r\n {pageMetaData.type === 2 && (\r\n \r\n \r\n \r\n )}\r\n {pageMetaData.type === 4 && (\r\n <>\r\n \r\n \r\n {Object.values(metaData.data.pages)\r\n .filter(page => page.type === 2)\r\n .map(page => {\r\n return (\r\n \r\n );\r\n })}\r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {pageMetaData.type < 3 && params.processId.toLowerCase() !== 'new' && (\r\n \r\n )}\r\n \r\n \r\n {pageIndex > 0 && (\r\n \r\n )}\r\n\r\n {pageIndex === 0 && (\r\n \r\n )}\r\n\r\n {pageMetaData.type < 4 && (\r\n \r\n {intl.formatMessage({ id: pageMetaData.type === 1 ? 'saveAndContinue' : 'continue' })}\r\n \r\n )}\r\n\r\n {pageMetaData.type === 4 && process.processData.mandatoryFieldsComplete && (\r\n \r\n )}\r\n\r\n {pageMetaData.type === 4 && !process.processData.mandatoryFieldsComplete && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport { FormattedMessage, useIntl } from 'react-intl';\r\nimport styled from 'styled-components';\r\nimport { useParams, useHistory } from 'react-router-dom';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport GaugeChart from '@blueprism/ui-charts/components/GaugeChart';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Cluster from '@blueprism/ui-core/layout/Cluster';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport { getIcon } from 'components/YourProcesses/Banner';\r\nimport { assessments } from 'utils/api';\r\n\r\nconst RecommendationHeader = styled(Text)`\r\n font-size: 1rem;\r\n margin-bottom: 0;\r\n font-weight: 400;\r\n`;\r\n\r\nconst Content = styled(Stack)`\r\n min-width: 90%;\r\n`;\r\n\r\nconst DescriptionList = styled.dl`\r\n padding: none;\r\n margin: none;\r\n`;\r\n\r\nconst DescriptionTerm = styled.dt`\r\n padding: none;\r\n margin: none;\r\n`;\r\n\r\nconst DescriptionDetail = styled.dd`\r\n padding: none;\r\n margin: none;\r\n`;\r\n\r\nexport default function Recommendation() {\r\n const { getUser } = React.useContext(AuthContext);\r\n const [result, setResult] = React.useState({});\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const params = useParams();\r\n\r\n function onClickViewProcesses() {\r\n history.push('/your-processes');\r\n }\r\n\r\n function onClickViewSummary() {\r\n history.push(`/process-assessment/${params.processId}/summary`);\r\n }\r\n\r\n React.useEffect(() => {\r\n assessments\r\n .getRecommendation(getUser, params.processId)\r\n .then(response => {\r\n setResult(response);\r\n })\r\n .catch(err => {\r\n if (err.response.status === 403 || err.response.status === 401) {\r\n history.push('/login');\r\n return;\r\n } else if (err.response.status === 500) {\r\n history.push('/servererror');\r\n return;\r\n }\r\n });\r\n }, [getUser, params.processId, history]);\r\n\r\n if (!result) return ;\r\n\r\n return (\r\n \r\n \r\n {result.apScore && (\r\n \r\n \r\n \r\n )}\r\n {result.ieScore && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {getIcon(result.recommendation)}\r\n \r\n {result.title}\r\n \r\n \r\n \r\n \r\n {result.description}\r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { FormattedMessage } from 'react-intl';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\n\r\nconst ButtonRow = styled(Row)`\r\n margin-top: 3rem;\r\n`;\r\n\r\n//TODO : Remove the Boxes once we've fixed the formatting of the Text component\r\n\r\nexport default function ProcessAssessmentCreator() {\r\n const history = useHistory();\r\n\r\n function handleViewExisting() {\r\n history.push('/your-processes');\r\n }\r\n\r\n function handleCreateNewClick() {\r\n history.push('/process-assessment/new');\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import * as React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport { useHistory } from 'react-router-dom';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Row from '@blueprism/ui-core/layout/Row';\r\nimport FormField from '@blueprism/ui-core/components/FormField';\r\nimport Button from '@blueprism/ui-core/components/Button';\r\nimport InputField from '@blueprism/ui-core/components/InputField';\r\nimport PATDialog from 'components/PATDialog';\r\nimport DialogTitle from 'components/DialogTitle';\r\n\r\nexport default function SpaceAddDialog({\r\n title = '',\r\n currentName = '',\r\n mode = 'Add',\r\n open = false,\r\n onClose,\r\n onConfirm,\r\n}) {\r\n const intl = useIntl();\r\n const history = useHistory();\r\n const [name, setName] = React.useState('');\r\n const [errors, setErrors] = React.useState({});\r\n const [busy, setBusy] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n if (open) {\r\n setName(currentName);\r\n setErrors({});\r\n setBusy(false);\r\n }\r\n }, [currentName, open]);\r\n\r\n function handleTextChange(event) {\r\n setName(event.target.value);\r\n }\r\n\r\n function handleModalClose() {\r\n onClose();\r\n }\r\n\r\n function handleCloseClick() {\r\n handleModalClose();\r\n }\r\n\r\n async function handleOkClick() {\r\n if (busy) {\r\n return;\r\n }\r\n\r\n try {\r\n setBusy(true);\r\n await onConfirm(name);\r\n } catch (err) {\r\n switch (err.response?.status) {\r\n case 401:\r\n if (mode === 'Edit') {\r\n setErrors({ api: intl.formatMessage({ id: 'editSpace401' }) });\r\n }\r\n break;\r\n case 403:\r\n history.push('/login');\r\n break;\r\n case 500:\r\n setErrors({ api: intl.formatMessage({ id: `${mode.toLowerCase()}Space500` }) });\r\n break;\r\n default:\r\n if (err.response?.data) {\r\n setErrors(err.response.data);\r\n }\r\n break;\r\n }\r\n setBusy(false);\r\n }\r\n }\r\n\r\n function renderFooter() {\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n const getErrorMessage = fieldName => errors[fieldName];\r\n const isInError = fieldName => errors[fieldName]?.length > 0 ?? false;\r\n\r\n return (\r\n {title}}\r\n footerContent={renderFooter()}\r\n >\r\n \r\n \r\n 0} onChange={handleTextChange} aria-labelledby=\"label\" />\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nSpaceAddDialog.propTypes = {\r\n title: PropTypes.string,\r\n currentName: PropTypes.string,\r\n mode: PropTypes.string,\r\n open: PropTypes.bool,\r\n onClose: PropTypes.func,\r\n onConfirm: PropTypes.func,\r\n};\r\n","import * as React from 'react';\r\nimport { useIntl, FormattedMessage } from 'react-intl';\r\nimport { useParams, useHistory } from 'react-router-dom';\r\nimport { SpaceAdd, SpaceEdit, SpaceRemove } from '@blueprism/ui-icons';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Text from '@blueprism/ui-core/components/Text';\r\nimport Toolbar from '@blueprism/ui-core/components/Toolbar';\r\nimport ButtonGroup from '@blueprism/ui-core/components/ButtonGroup';\r\nimport ToolbarButton from '@blueprism/ui-core/components/ToolbarButton';\r\nimport Breadcrumbs from '@blueprism/ui-core/components/Breadcrumbs';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport TablePagination from 'components/TablePagination';\r\nimport SpaceAddDialog from 'components/SpaceAddDialog';\r\nimport ConfirmDialog from 'components/ConfirmDialog';\r\nimport Link from 'components/Link';\r\nimport { toUInt } from 'utils/helper';\r\nimport useTableRowSelection from 'utils/useTableRowSelection';\r\nimport TableLoader from 'components/TableStates/TableLoader';\r\nimport { dataStates as tableDataStates } from '../utils/dataStates';\r\nimport { spaceManagement } from 'utils/api';\r\n\r\nexport default function GroupManagement() {\r\n const intl = useIntl();\r\n const params = useParams();\r\n const history = useHistory();\r\n const { selectedRowIds, onRowSelectionChange, clearSelection } = useTableRowSelection([], true);\r\n const { getUser } = React.useContext(AuthContext);\r\n const [spaces, setSpaces] = React.useState([]);\r\n const [count, setCount] = React.useState(0);\r\n const [addDialogOpen, setAddDialogOpen] = React.useState(false);\r\n const [editDialogOpen, setEditDialogOpen] = React.useState(false);\r\n const [removeDialogOpen, setRemoveDialogOpen] = React.useState(false);\r\n const [removeErrorText, setRemoveErrorText] = React.useState('');\r\n\r\n const selectedSpace =\r\n (selectedRowIds.length === 1 ? spaces?.find(space => space.id.toString() === selectedRowIds[0]) : {}) ?? {};\r\n const canModifySpace = selectedSpace.isAdmin ?? false;\r\n const offset = toUInt(params.offset, 0);\r\n const limit = toUInt(params.limit, 25);\r\n\r\n const rowData = React.useMemo(\r\n () =>\r\n spaces.map(({ id, name, isAdmin, createdAt, createdBy }) => ({\r\n id: id.toString(),\r\n name: (\r\n \r\n {`${name}${isAdmin ? ' (' + intl.formatMessage({ id: 'spacesColumn1Admin' }) + ')' : ''}`}\r\n \r\n ),\r\n createdBy,\r\n createdAt: intl.formatDate(new Date(createdAt)),\r\n isAdmin,\r\n })),\r\n [intl, spaces]\r\n );\r\n\r\n const columns = React.useMemo(\r\n () => [\r\n {\r\n header: intl.formatMessage({ id: 'spacesColumn1' }),\r\n accessor: 'name',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'spacesColumn2' }),\r\n accessor: 'createdAt',\r\n },\r\n {\r\n header: intl.formatMessage({ id: 'spacesColumn3' }),\r\n accessor: 'createdBy',\r\n },\r\n ],\r\n [intl]\r\n );\r\n\r\n const [tableStatus, setTableStatus] = React.useState(tableDataStates.INIT);\r\n\r\n const updateSpaces = React.useCallback(async () => {\r\n let items = [];\r\n let itemCount = 0;\r\n setTableStatus(tableDataStates.INIT);\r\n\r\n try {\r\n const data = await spaceManagement.getSpaces(getUser, offset, limit);\r\n if (data !== null) {\r\n items = data.items;\r\n itemCount = data.count;\r\n }\r\n } catch (err) {\r\n if (err.response.status === 500) {\r\n history.push('/servererror');\r\n return;\r\n } else if (err.response.status === 403) {\r\n history.push('/login');\r\n return;\r\n } else if (err.response.status === 401) {\r\n history.push('/unauthorised');\r\n return;\r\n }\r\n }\r\n setSpaces(items);\r\n setCount(itemCount);\r\n setTableStatus(tableDataStates.SUCCESS);\r\n }, [getUser, limit, offset, history]);\r\n\r\n React.useEffect(() => {\r\n updateSpaces();\r\n }, [updateSpaces]);\r\n\r\n async function postAddSpaceRequest(name) {\r\n await spaceManagement.addSpace(getUser, name);\r\n clearSelection();\r\n updateSpaces();\r\n handleAddDialogClose();\r\n }\r\n\r\n async function postEditSpaceRequest(name) {\r\n if (selectedSpace.id) {\r\n await spaceManagement.editSpace(getUser, selectedSpace.id, name);\r\n clearSelection();\r\n updateSpaces();\r\n handleEditDialogClose();\r\n }\r\n }\r\n\r\n async function postRemoveSpaceRequest() {\r\n if (selectedSpace.id) {\r\n try {\r\n await spaceManagement.removeSpace(getUser, selectedSpace.id);\r\n clearSelection();\r\n updateSpaces();\r\n handleRemoveDialogClose();\r\n } catch (err) {\r\n switch (err.response?.status) {\r\n case 400:\r\n setRemoveErrorText(err.response.data);\r\n break;\r\n case 500:\r\n setRemoveErrorText(intl.formatMessage({ id: 'removeSpace500' }));\r\n break;\r\n case 403:\r\n history.push('/login');\r\n break;\r\n case 401:\r\n setRemoveErrorText(intl.formatMessage({ id: 'removeSpace401' }));\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n function handlePagingUrlChange({ newOffset, newLimit }) {\r\n history.push(`/your-spaces/${Math.max(0, newOffset || 0)}/${Math.max(0, newLimit || 25)}`);\r\n }\r\n\r\n function handlePagingPreviousClick() {\r\n handlePagingUrlChange({ newOffset: offset - limit, newLimit: limit });\r\n }\r\n\r\n function handlePagingNextClick() {\r\n handlePagingUrlChange({ newOffset: offset + limit, newLimit: limit });\r\n }\r\n\r\n function handlePagingLimitChange(value) {\r\n // TODO: Should probably debounce this!\r\n handlePagingUrlChange({ newOffset: offset, newLimit: value });\r\n }\r\n\r\n function handleAddGroupClick() {\r\n setAddDialogOpen(true);\r\n }\r\n\r\n function handleEditGroupClick() {\r\n setEditDialogOpen(true);\r\n }\r\n\r\n function handleRemoveGroupClick() {\r\n setRemoveDialogOpen(true);\r\n }\r\n\r\n function handleAddDialogClose() {\r\n setAddDialogOpen(false);\r\n }\r\n\r\n function handleEditDialogClose() {\r\n setEditDialogOpen(false);\r\n }\r\n\r\n function handleRemoveDialogClose() {\r\n setRemoveDialogOpen(false);\r\n setRemoveErrorText('');\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n }\r\n />\r\n }\r\n />\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport ErrorPageTemplate from './ErrorPageTemplate';\r\nimport { NotFound } from 'components/ErrorSvgs';\r\n\r\nexport default function NotFoundErrorPage() {\r\n const intl = useIntl();\r\n\r\n return (\r\n }\r\n />\r\n );\r\n}\r\n","import React from 'react';\r\nimport { useIntl } from 'react-intl';\r\nimport ErrorPageTemplate from './ErrorPageTemplate';\r\nimport { Unauthorised } from 'components/ErrorSvgs';\r\n\r\nexport default function UnauthorisedErrorPage() {\r\n const intl = useIntl();\r\n\r\n return (\r\n }\r\n />\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Stack, Row, Text, Link, Box } from '@blueprism/ui-core';\r\nimport Alert from '@blueprism/ui-icons/Alert';\r\nimport Cross from '@blueprism/ui-icons/CrossLarge';\r\nimport { useIntl } from 'react-intl';\r\nimport { maintenance } from 'utils/api';\r\nimport { AuthContext } from 'contexts/AuthContext';\r\nimport styled, { css, ThemeContext } from 'styled-components';\r\n\r\nconst Container = styled(Row)(\r\n props => css`\r\n border-radius: 0.125rem;\r\n align-items: center;\r\n background: ${props.theme.color.warning};\r\n color: white;\r\n padding: ${props.theme.globalSizes.xs};\r\n align-items: flex-start;\r\n\r\n svg {\r\n margin-right: ${props.theme.globalSizes.xs};\r\n }\r\n `\r\n);\r\n\r\nconst CloseButtonContainer = styled(Stack)(\r\n props => css`\r\n margin-left: auto;\r\n flex: none;\r\n order: 2;\r\n `\r\n);\r\n\r\nconst NotificationText = styled(Text)(\r\n props => css`\r\n font-size: ${props.theme.font.size.h5}rem;\r\n line-height: 1.2;\r\n `\r\n);\r\n\r\nexport default function MaintenanceNotificationBanner() {\r\n const theme = React.useContext(ThemeContext);\r\n const { getUser } = React.useContext(AuthContext);\r\n const [maintenanceTime, setMaintenanceTime] = React.useState(null);\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n const intl = useIntl();\r\n\r\n React.useEffect(() => {\r\n maintenance\r\n .getNextMaintenanceTime(getUser)\r\n .then(response => {\r\n setMaintenanceTime(response.maintenanceTime ?? null);\r\n setIsOpen(!!response.maintenanceTime);\r\n })\r\n .catch(err => console.log(err));\r\n }, [getUser]);\r\n\r\n function handleClose(event) {\r\n event.preventDefault();\r\n setIsOpen(false);\r\n }\r\n\r\n if (isOpen) {\r\n var dateParts = intl.formatDateToParts(maintenanceTime, {\r\n month: 'long',\r\n weekday: 'long',\r\n day: 'numeric',\r\n timeZoneName: 'short',\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n \r\n {intl.formatMessage(\r\n { id: 'maintenanceNotificationText' },\r\n {\r\n weekday: dateParts.find(x => x.type === 'weekday').value,\r\n day: dateParts.find(x => x.type === 'day').value,\r\n month: dateParts.find(x => x.type === 'month').value,\r\n time: intl.formatTime(new Date(maintenanceTime)),\r\n timezone: dateParts.find(x => x.type === 'timeZoneName').value,\r\n }\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport styled from 'styled-components';\r\nimport { useHistory, useLocation, Switch, Redirect, Route } from 'react-router-dom';\r\nimport { useIntl } from 'react-intl';\r\nimport Stack from '@blueprism/ui-core/layout/Stack';\r\nimport Box from '@blueprism/ui-core/layout/Box';\r\nimport Team from 'components/Team';\r\nimport YourProcesses from 'components/YourProcesses';\r\nimport SpaceWrapper from 'pages/SpaceWrapper';\r\nimport GroupWrapper from 'pages/GroupWrapper';\r\nimport ProcessAssessment from 'pages/ProcessAssessment';\r\nimport Recommendation from 'pages/Recommendation';\r\nimport ProcessAssessmentCreator from 'pages/ProcessAssessmentCreator';\r\nimport GroupManagement from 'pages/GroupManagement';\r\nimport NotFoundErrorPage from 'pages/Errors/NotFoundErrorPage';\r\nimport UnauthorisedErrorPage from 'pages/Errors/UnauthorisedErrorPage';\r\nimport ServerErrorPage from 'pages/Errors/ServerErrorPage';\r\nimport MaintenanceBanner from 'components/MaintenanceNotificationBanner';\r\nimport { findBaseUrl, getUrlTitle } from 'utils/urlHelpers';\r\n\r\nconst ContentWrapper = styled(Box)`\r\n overflow: auto;\r\n flex-grow: 1;\r\n`;\r\n\r\nconst PageContainer = styled(Stack)`\r\n max-width: 960px;\r\n`;\r\n\r\nfunction changeTitle(location, intl) {\r\n const url = findBaseUrl(location.pathname);\r\n document.title = intl.formatMessage({ id: 'pageTitleMain' }) + ' - ' + getUrlTitle(url, intl);\r\n}\r\n\r\nexport default function Routes() {\r\n const history = useHistory();\r\n const location = useLocation();\r\n const intl = useIntl();\r\n\r\n React.useEffect(() => {\r\n changeTitle(location, intl);\r\n }, [location, intl]);\r\n\r\n React.useEffect(() => {\r\n return history.listen(historyLocation => {\r\n changeTitle(historyLocation, intl);\r\n });\r\n }, [history, intl]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","export const findBaseUrl = pathname => pathname.split(/[/?#]/)[1] ?? '';\r\n\r\nexport function getUrlTitle(url, intl) {\r\n switch (url) {\r\n case 'your-processes':\r\n return intl.formatMessage({ id: 'pageTitleYourProcesses' });\r\n\r\n case 'process-assessment':\r\n return intl.formatMessage({ id: 'pageTitleProcessAssessment' });\r\n\r\n case 'your-spaces':\r\n return intl.formatMessage({ id: 'pageTitleYourSpaces' });\r\n\r\n default:\r\n return url;\r\n }\r\n}\r\n","import React from 'react';\r\nimport { BrowserRouter as Router, Route } from 'react-router-dom';\r\nimport ThemeProvider from '@blueprism/ui-core/theme/ThemeProvider';\r\nimport PageLayout from '@blueprism/ui-core/templates/PageLayout';\r\nimport AuthContextProvider from 'contexts/AuthContext';\r\nimport UserContextProvider from 'contexts/UserContext';\r\nimport LanguageProvider from 'components/LanguageProvider';\r\nimport AuthenticationGuard from 'components/AuthenticationGuard';\r\nimport RegistrationGuard from 'components/RegistrationGuard';\r\nimport Sidebar from 'components/Sidebar';\r\nimport SilentRenew from 'pages/SilentRenew';\r\nimport Routes from 'pages/Routes';\r\n\r\nconst App = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n } mainContent={} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nexport default App;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\n\r\nconsole.log(`Build details: ${process.env.REACT_APP_BUILD_NUMBER}`);\r\nReactDOM.render(, document.getElementById('root'));\r\n"],"sourceRoot":""}