{"version":3,"sources":["App.module.scss","models/ui/SizeModeType.ts","configs/pages.ts","api/services/client/index.ts","api/services/client/navigationStorage.ts","api/services/permissions/index.ts","api/services/cache/index.ts","api/services/meta/index.ts","state/meta/index.ts","state/app/index.ts","api/services/messages/index.ts","state/messages/index.ts","api/models/MessageInstanceLeaderStatus.ts","api/models/MessageInstanceStatus.ts","models/data/MessageInteractionMode.ts","state/selectedMessage/index.ts","state/filters/index.ts","state/index.ts","configs/theme/v9/AppThemeTokens.ts","configs/theme/v9/context.tsx","configs/theme/v9/getTeamsThemeForV9.ts","components/MessageTileView/TileCard/TileCard.styles.ts","components/controls/MessageCategoriesList/MessageCategoriesList.styles.ts","components/controls/MessageCategoriesList/index.tsx","components/controls/MessageStrategicFocusBadge/MessageStrategicFocusBadge.styles.ts","components/controls/MessageStrategicFocusBadge/index.tsx","components/MessageTileView/TileCard/index.tsx","components/MessageTileView/MessageTileView.styles.ts","components/MessageTileView/index.tsx","pages/MyMessagesPage/MyMessages.styles.ts","components/MessageListView/MessageAdminListView/adminListView.config.ts","configs/importanceLevels.ts","components/MessageListView/MessageListView.styles.ts","configs/messageStatuses.ts","components/MessageListView/MessageAdminListView/index.tsx","components/MessageListView/MessageCommonListView/commonListView.config.ts","components/MessageListView/MessageCommonListView/index.tsx","models/ui/MessagesViewType.ts","components/ActionsBar/TabletActionBar/TabletActionBar.styles.ts","components/MessageViewSwitcher/MessageViewSwitcher.styles.ts","components/MessageViewSwitcher/index.tsx","components/NavigationBar/NavigationBar.styles.ts","components/NavigationBar/index.tsx","components/ActionsBar/TabletActionBar/index.tsx","components/ActionsBar/FullActionBar/FullActionsBar.styles.ts","components/ActionsBar/FullActionBar/index.tsx","components/ActionsBar/MobileActionBar/MobileActionsBar.styles.ts","components/ActionsBar/MobileActionBar/index.tsx","components/ActionsBar/index.tsx","components/MessageFiltersPanelAction/MessageFiltersPanel.styles.ts","components/controls/common/GroupSelect/GroupSelect.styles.ts","components/controls/common/GroupSelect/index.tsx","configs/theme/v8/context.tsx","components/controls/common/Dropdown/Dropdown.styles.ts","components/controls/common/Dropdown/index.tsx","configs/predefinedPeriods.ts","components/controls/common/PeoplePicker/PeoplePicker.styles.ts","api/services/users/index.ts","components/controls/common/PeoplePicker/index.tsx","components/MessageFiltersPanelAction/index.tsx","configs/theme/v8/useAppTheme.tsx","configs/theme/v9/useAppTheme.tsx","api/services/feedback/index.ts","components/FeedbackDialogAction/FeedbackDialogAction.styles.ts","components/FeedbackDialogAction/index.tsx","configs/feedbackTypes.ts","components/controls/common/Search/Search.styles.ts","components/controls/common/Search/index.tsx","components/controls/MessageSearchBox/MessageSearchBox.styles.ts","components/controls/MessageSearchBox/index.tsx","components/controls/common/Loader/Loader.styles.ts","components/controls/common/Loader/index.tsx","pages/PageLayout/Layout.styles.ts","components/MessageInteractionsView/MessageContentStep/MessageContentStep.styles.ts","components/MessageInteractionsView/MessageInteractionActions/MessageInteractionActions.styles.ts","components/MessageInteractionsView/MessageInteractionActions/index.tsx","components/MessageInteractionsView/MessageContentStep/MessageAdditionalInfo/MessageAdditionalInfoSection.styles.ts","components/UserInfo/index.tsx","components/MessageInteractionsView/MessageContentStep/MessageAdditionalInfo/index.tsx","configs/messageLeaderStatuses.ts","components/ConfirmationDialogAction/ConfirmationDialogAction.styles.ts","components/ConfirmationDialogAction/index.tsx","components/MessageInteractionsView/MessageContentStep/MarkIrrelevantAction/index.tsx","components/MessageInteractionsView/MessageContentStep/MessageImage/MessageImage.styles.ts","components/MessageInteractionsView/MessageContentStep/MessageImage/index.tsx","components/MessageInteractionsView/MessageBanner/MessageBanner.styles.ts","components/MessageInteractionsView/MessageBanner/index.tsx","components/MessageInteractionsView/MessageContentStep/FindOutMoreButton/FindOutMoreButton.styles.ts","components/MessageInteractionsView/MessageContentStep/FindOutMoreButton/index.tsx","components/MessageInteractionsView/MessageContentStep/LeaderAnnotation/LeaderAnnotation.styles.ts","components/MessageInteractionsView/MessageContentStep/LeaderAnnotation/index.tsx","components/MessageInteractionsView/MessageContentStep/index.tsx","components/MessageInteractionsView/MessageCommunicationStep/MessageCommunicationStep.styles.ts","components/MessageInteractionsView/MessageCommunicationStep/DirectReportsList/DirectReportsList.styles.ts","components/MessageInteractionsView/MessageCommunicationStep/DirectReportsList/DirectReportItem/DirectReportItem.styles.ts","components/MessageInteractionsView/MessageCommunicationStep/DirectReportsList/DirectReportItem/index.tsx","components/MessageInteractionsView/MessageCommunicationStep/DirectReportsList/index.tsx","components/MessageInteractionsView/MessageCommunicationStep/OtherColleaguesSection/OtherColleaguesSection.styles.ts","components/MessageInteractionsView/MessageCommunicationStep/OtherColleaguesSection/index.tsx","components/MessageInteractionsView/MessageCommunicationStep/AnnotationTextSection/index.tsx","components/MessageInteractionsView/MessageCommunicationStep/index.tsx","components/MessageInteractionsView/MessageInteractionsView.styles.ts","components/MessageInteractionsView/MessageViewHeader/MessageViewHeader.styles.ts","components/MessageInteractionsView/MessageViewHeader/CloseButton/CloseButton.styles.ts","components/MessageInteractionsView/MessageViewHeader/CloseButton/index.tsx","components/MessageInteractionsView/MessageViewHeader/MessageTitle/MessageTitle.styles.ts","components/MessageInteractionsView/MessageViewHeader/MessageTitle/index.tsx","components/MessageInteractionsView/MessageViewHeader/MessagePublishDate/MessagePublishDate.styles.ts","components/MessageInteractionsView/MessageViewHeader/MessagePublishDate/index.tsx","components/MessageInteractionsView/MessageViewHeader/MessageMeta/MessageMeta.styles.ts","components/MessageInteractionsView/MessageViewHeader/MessageMeta/index.tsx","components/MessageInteractionsView/MessageViewHeader/index.tsx","components/MessageInteractionsView/MessageLoader/index.tsx","components/controls/common/scrollbar.styles.ts","components/MessageInteractionsView/index.tsx","pages/PageLayout/index.tsx","components/MessageFilterTags/MessageFilterTags.styles.ts","components/MessageFilterTags/index.tsx","pages/MyMessagesPage/index.tsx","i18n.ts","pages/ErrorPage/ErrorPage.styles.ts","pages/ErrorPage/index.tsx","pages/AdminPage/AdminPage.styles.ts","pages/AdminPage/index.tsx","pages/DesignatedApproverPage/DesignatedApproverPage.styles.ts","pages/DesignatedApproverPage/index.tsx","pages/NotFoundPage/NotFoundPage.styles.ts","pages/NotFoundPage/index.tsx","pages/MoreMessagesPage/MoreMessages.styles.ts","pages/MoreMessagesPage/index.tsx","App.tsx","configs/theme/v8/getV8TeamsTheme.ts","index.tsx"],"names":["module","exports","SizeModeType","routes","myMessagePageInfo","title","t","ariaLabel","moreMessagePageInfo","adminPageInfo","designatedApproverPageInfo","_routePagesMap","_defineProperty","AxiosJWTDecorator","cached","arguments","length","undefined","_classCallCheck","http","this","axios","create","baseURL","headers","adapter","cacheAdapterEnhancer","defaults","_createClass","key","value","_get","_asyncToGenerator","_regeneratorRuntime","mark","_callee","url","handleError","needAuthorizationHeader","config","_args","wrap","_context","prev","next","setupAuthorizationHeader","sent","get","abrupt","t0","processError","stop","_x","apply","_delete2","_callee2","_args2","_context2","delete","_x2","_post","_callee3","data","_args3","_context3","post","_x3","_x4","_put","_callee4","_args4","_context4","put","_x5","_x6","error","_error$response","isAxiosError","console","response","hasOwnProperty","_error$response2","errorStatus","status","window","location","href","concat","_error$response3","_setupAuthorizationHeader","_callee5","_this","_context5","app","isInitialized","initialize","Promise","resolve","reject","authTokenRequest","successCallback","token","Authorization","failureCallback","state","uuid","sessionStorage","setItem","decodeURIComponent","resources","authentication","getAuthToken","_x7","apiClient","cachedApiClient","getUserPermissions","_ref","encodeURI","CacheEntry","expires","BrowserStorage","storage","localStorage","expiration","entry","JSON","parse","getItem","asCacheEntry","stringify","e","clear","fromCacheEntry","item","expDate","date","Date","setMinutes","getMinutes","isNaN","_len","args","Array","_key","getter","getStorageEntry","updateStorageEntry","removeItem","getMessageCategories","res","cache","set","getMessageStrategicFocuses","_ref2","getMessagePeriods","_ref3","getLinks","_ref4","initialState","categories","strategicFocuses","periods","loaded","links","loadMeta","createAsyncThunk","_","api","meta","_yield$Promise$all","_yield$Promise$all2","getState","all","_slicedToArray","metaSlice","createSlice","name","reducers","extraReducers","builder","addCase","fulfilled","action","payload","sizeMode","Full","initialized","containerWidth","allowedRoutes","currentUserPermissions","admin","approver","loadMyPermissions","permissions","initApp","dispatch","appSlice","setAppUIConfig","width","Mobile","Tablet","setPagesConfig","push","actions","getMyMessages","filters","getMoreMessages","getMyMessage","messageId","confirmMyMessage","model","markMyMessageIrrelevant","_ref5","feedback","getAdminMessages","_ref6","_callee6","_context6","_x8","getLeaderMessageByAdmin","_ref7","_callee7","leaderId","_context7","_x9","_x10","confirmLeaderMessageByAdmin","_ref8","_callee8","_context8","_x11","_x12","markLeaderMessageIrrelevantByAdmin","_ref9","_callee9","_context9","_x13","_x14","getApproverMessages","_ref10","_callee10","sltId","_context10","_x15","_x16","getSltMessageByApprover","_ref11","_callee11","_context11","_x17","_x18","confirmSltMessageByApprover","_ref12","_callee12","_context12","_x19","_x20","_x21","markSltMessageIrrelevantByApprover","_ref13","_callee13","_context13","_x22","_x23","_x24","parseMessages","messages","map","message","mCategories","filter","c","categoriesIds","indexOf","id","mValue","find","strategicFocusId","_objectSpread","strategicFocus","imageUrl","toFilteringParameters","_filter$messageFilter","_filter$messageFilter2","cats","messageFilters","focuses","critical","importanceLevels","text","searchBoxValue","strategicFocusesIds","endDate","selectedPeriod","endDateUTC","startDate","startDateUTC","toFilteringAdminParameters","_filter$filteredLeade","statuses","filteredLeader","skip","count","loadMyMessages","results","loadMyMoreMessages","loadMessagesForApprover","filteredSLTLeader","loadMessagesForAdmin","messagesSlice","adminMessages","loading","pending","MessageInstanceLeaderStatus","MessageInstanceStatus","MessageInteractionMode","mode","Leader","processingType","showMessageView","previewInitialized","processResult","includes","markMessageIrrelevant","_state$message","_api$getState$filters","selectedMessage","Admin","Approver","confirmCommunication","_state$message2","_api$getState$filters2","loadMyMessage","m","loadMessageByApprover","loadMessageByAdmin","leader","selectedMessageSlice","cancelMessageInteraction","setPreviewInitialized","Completed","leaderStatus","Irrelevant","ReadOnly","_selectedMessageSlice","showFiltersPanel","filtersSlice","setPanelVisibility","resetFiltersState","_action","applyMessageFilters","applyMessageAndLeaderFilters","setSearchBoxValue","setLeaderFilter","setSLTLeaderFilter","_filtersSlice$actions","store","configureStore","reducer","appReducer","metaReducer","messagesReducer","selectedMessageReducer","filtersReducer","useAppDispatch","useDispatch","useStateSelector","useSelectorUntyped","dummyTheme","teamsLightTheme","criticalCustomBackground","transparentWhite","imageBackground","customShadow1","customShadow2","criticalMessageColor","AppThemeTokens","themeToTokensObject","AppThemeV9Context","React","extendTheme","theme","interactionClass","useTileCardStyles","makeStyles","root","shorthands","padding","boxSizing","overflow","display","justifyContent","rootCompact","inner","flexDirection","gap","color","tokens","colorNeutralForeground2","backgroundColor","colorNeutralBackground1","boxShadow","shadow4Brand","maxWidth","borderRadius","border","cursor","colorNeutralForeground1Hover","colorTransparentBackgroundHover","mobile","titleWrapper","alignItems","height","fontWeight","margin","flex","colorNeutralForeground2Link","titleIcon","minWidth","description","multiLine","whiteSpace","textOverflow","WebkitLineClamp","WebkitBoxOrient","footerWrapper","image","useMessageCategoriesListStyles","category","colorNeutralBackground6","more","MessageCategoriesList","maxItems","className","styles","useTranslation","max","_jsx","mergeClasses","children","_jsxs","_Fragment","slice","cat","Text","as","useMessageStrategicFocusBadgeStyles","focus","focusTitle","imgCtn","position","opacity","objectFit","left","top","transform","MessageStrategicFocusBadge","src","alt","MessageTileCard","onClick","compact","shortPublishedDate","moment","messagePublishingDateUTC","format","criticalClass","onClickMessage","useCallback","style","flexBasis","type","size","Warning24Filled","previewText","useTileViewStyles","container","flexWrap","marginTop","paddingLeft","paddingRight","containerCompact","TileView","items","Math","floor","TileCard","usePageStyles","page","scrollable","overflowY","importanceLevelColumnId","leaderColumnId","titleColumnId","statusColumnId","messagePublishingDateUTCColumnId","columns","createTableColumn","columnId","compare","a","b","localeCompare","toString","ColumnsIds","getImportanceLevels","translation","parseCriticalToImportance","flag","useListViewStyles","table","header","row","colorNeutralBackground1Hover","cellText","firstColumn","staticWidthSmallCell","staticWidthMidCell","getMessageStatusesMap","NotStarted","InProgress","MessageAdminListView","_useTableConfiguratio","_useTableFeatures","useTableFeatures","useTableSort","getRows","_useTableFeatures$sor","sort","getSortDirection","toggleColumnSort","rows","headerSortProps","sortDirection","useTableConfiguration","Table","TableHeader","TableRow","TableHeaderCell","TableBody","TableCell","TableCellLayout","categoryColumnId","strageticFocusId","CommonMessageListView","o","join","MessagesViewType","useTabletActionsBarStyles","navigationZonesContainer","navigationMainZoneContainer","marginLeft","flexGrow","navigationSecondaryZoneContainer","columnGap","zonesContainer","paddingTop","mainZoneContainer","rowGap","mainZoneActionContainer","secondaryZoneContainer","minHeight","secondaryZoneMessageContainer","secondaryZoneMessage","useIconStyles","icon","fill","colorBrandForegroundLink","fontSize","active","colorBrandForegroundLinkHover","ViewSwitcher","onViewChange","handleSwitchView","newView","Button","appearance","Tiles","Grid24Filled","Grid24Regular","List","AppsList24Filled","AppsList24Regular","useNavBarStyles","overflowX","tagGroup","zIndex","tag","colorCompoundBrandForeground1Hover","colorBrandBackground2Hover","activeTag","colorNeutralBackground5Selected","colorNeutralForeground3BrandSelected","useOverflowMenuStyles","menu","menuButton","alignSelf","MoreHorizontal","bundleIcon","MoreHorizontalFilled","MoreHorizontalRegular","OverflowMenuItem","props","tab","useIsOverflowItemVisible","route","MenuItemLink","preventDefault","OverflowMenu","tabs","onTabSelect","_useOverflowMenu","useOverflowMenu","ref","isOverflowing","overflowCount","Menu","MenuTrigger","disableButtonEnhancement","role","MenuPopover","MenuList","NavigationBar","asTags","navigate","useNavigate","x","_React$useState","replace","origin","toLowerCase","_React$useState2","selectedRoute","setSelectedRoute","Overflow","minimumVisible","overflowAxis","TagGroup","OverflowItem","priority","Tag","shape","TabList","selectedValue","d","Tab","TabletActionsBar","additionalActionsComponent","extraFiltersComponent","filtersComponent","searchComponent","viewConfig","MessageViewSwitcher","current","onChange","useFullActionsBarStyles","mainZoneMessage","colorBrandForeground1","mainZoneMessageContainer","mainZoneActionsContainer","FullActionBar","filtersTagsComponent","useMobileActionsBarStyles","mainSubZoneContainer","paddingBottom","mainSubZoneActionContainer","MobileActionsBar","Divider","ActionsBar","useFiltersPanelStyles","filterButton","iconOnlyBtn","panel","footer","headerText","typographyStyles","title3","headerCloseBtn","rightActions","useGroupSelectStyles","gridTemplateRows","justifyItems","label","subtitle2","marginBottom","checkBoxGrid","borderColor","GroupSelect","options","selectedItems","onChanged","showDivider","selectedIds","i","Label","option","Checkbox","checked","findIndex","v","_toConsumableArray","labelPosition","AppThemeV8Context","useDropdownStyles","dropdown","DropDownPicker","optionGroups","placeholder","useGroups","onPeriodSelect","values","forEach","_values","p","parseInt","Dropdown","onOptionSelect","optionValue","selectedOptions","defaultValue","gr","OptionGroup","Option","getPredefinedPeriods","now","last28Days","setDate","last12Months","setMonth","last3Months","toJSON","useStyles","field","combobox","avatar","hidden","noResults","selected","selectedFullWidth","searchUsers","searchLeaders","searchSLTUsers","getUserPhoto","userId","_response$data","dataUri","getUsersPhotos","userAADIds","photos","Map","photoData","PeoplePicker","onSearchUsers","onSelectUser","selectedUser","noResultText","fullWidthMode","preload","comboId","useId","tempValue","setTempValue","_React$useState3","_React$useState4","suggestions","setSuggestions","_React$useState5","_React$useState6","setLoading","_React$useState7","_React$useState8","preloaded","setPreloaded","_React$useState9","_React$useState10","userPhotos","setUserPhotos","onSearchValues","searchVal","onSearchValuesDebounced","useDebouncedCallback","event","target","aadId","InteractionTag","InteractionTagPrimary","media","Avatar","photo","primaryText","secondaryText","upn","InteractionTagSecondary","Combobox","_p$aadId","expandIcon","Search16Regular","listbox","freeform","s","checkIcon","Persona","MessageFiltersPanelAction","_appliedFilters$categ","_appliedFilters$strat","applyFiltersCallback","adminMode","iconOnlyButton","themeV8","useContext","themeV9","messageStatuses","_useStateSelector","appliedFilters","showPanel","_useStateSelector2","allCategories","allStrategicFocuses","allPeriods","periodGroups","filtersConfig","setFiltersConfig","selectedLeader","setSelectedLeader","closePanel","applyChanges","cleanFilters","onRenderFooterContent","FluentProvider","onRenderHeader","Dismiss24Regular","anyFiltered","Filter16Filled","iconPosition","Panel","isOpen","isFooterAtBottom","hasCloseButton","main","postFeedback","useFeedbackDialogStyles","dialogContent","colorNeutralForeground3","btn","iconBtn","FeedbackDialogAction","_feedbackTypes$find","_t","dialogTriggerButtonProps","dialogTriggerButtonText","defaultFeedbackType","feedbackTypeFieldId","feedbackContentFieldId","feedbackTypes","_useState","useState","_useState2","feedbackType","setFeedbackType","open","setOpen","_useState3","_useState4","feedbackContent","setFeedbackContent","_useState5","_useState6","isLoading","setIsLoading","onClose","onSubmit","finish","Dialog","modalType","onOpenChange","DialogTrigger","Comment16Regular","DialogSurface","DialogBody","DialogTitle","DialogContent","Field","defaultSelectedOptions","Textarea","DialogActions","disabled","useSearchStyles","iconCtn","Search","iconAfter","searchId","sbVal","setSBVal","runSearch","Input","contentAfter","htmlFor","contentBefore","useMessageSearchboxStyles","MessageSearchBox","searchValueChangedCallback","makeResetStyles","Loader","getClass","Spinner","useLayoutStyles","useMessageContentStepStyles","leftColumn","textAlign","fullWidthSection","mainColumn","contentWrapper","messageContent","colorNeutralForeground1","useMessageInteractionActionsStyles","fullWidth","MessageInteractionActions","useMessageAdditionalInfoStyles","listStyleType","messageInfoItem","messageInfoItemTitle","messageInfoItemValue","body2","userInfo","lineHeight","lineHeightBase500","UserInfo","photoDataUri","_objectWithoutProperties","_excluded","userPhotoSrc","setUserPhotoSrc","getPublishDate","MessageAdditionalInfoSection","_message$cascadedBy","_message$cascadedBy2","isAdminView","showStatus","leaderStatuses","Cascaded","CascadedByLeader","getMessageLeaderStatusesMap","cascadedBy","instancePublishingDateUTC","useConfirmationDialogActionStyles","ConfirmationDialogAction","dialogTriggerButtonLabel","dialogTitle","isConfirmReady","onConfirm","MarkIrrelevantAction","feedbackText","setFeedbackText","onfeedbackTextChange","ev","onMarkAsIrrelevant","SubtractCircle24Regular","required","useMessageImageStyles","img","MessageImage","imageTextAlt","useMessageBannerStyles","colorPaletteMarigoldBorderActive","MessageBanner","useFindOutMoreButtonStyles","findOutMoreSection","FindOutMoreButton","actionLabel","actionLinkUrl","onFindOutMoreClick","useLeaderAnnotationStyles","annotationSection","annotationHeader","annotationText","LeaderAnnotation","_message$cascadedBy3","dangerouslySetInnerHTML","__html","MessageContentStep","onNavigationCallback","isFull","content","ArrowCircleRight24Regular","mandatory","PersonFeedback24Regular","DismissCircle24Regular","userStyles","subTitle","section","directReportSection","alreadyCommunicatedPerson","colorNeutralForegroundDisabled","personPicker","colorNeutralBackground4","colorNeutralForeground2Hover","colorSubtleBackgroundHover","loader","useDirectReportsListStyles","subTitleBold","directReportList","directReportItem","fullCol","halfCol","selectAllReports","spacingVerticalMNudge","spacingHorizontalMNudge","useReportListItemStyles","verticalAlign","ReportListItem","report","userPhotoUri","actionTakenByPhotoUri","onChangeSelection","onSelectionChanged","reportUserName","subordinate","isLeader","completed","actionTakenBy","DirectReportsList","reports","onChangeSelected","selectedDirectUsersAADIds","setSelectedDirectUsersAADIds","activeDirectReports","useEffect","userIds","reduce","acc","_item$actionTakenBy","_item$actionTakenBy2","selectAllDirectUsers","onDirectReportSelectionChanged","subordinateId","isReportSelected","some","_report$actionTakenBy","_report$actionTakenBy2","useOtherColleaguesSectionStyles","pickerCallout","getUsersWithImagesByName","users","user","OtherColleaguesSection","_t2","_t3","_t4","_t5","_t6","excludeSubordinateIds","otherColleaguesEnabled","setOtherColleaguesEnabled","colleaguesChanged","currentTarget","onFilterChanged","filterText","currentPersonas","idsToExclude","limitResults","_currentPersonas$map","excludedUsersAAdIds","Set","then","has","onUsersSelected","Switch","CompactPeoplePicker","onResolveSuggestions","pickerCalloutProps","getTextFromItem","persona","selectionAriaLabel","removeButtonAriaLabel","pickerSuggestionsProps","suggestionsHeaderText","mostRecentlyUsedHeaderText","noResultsFoundText","loadingText","suggestionsAvailableAlertText","suggestionsContainerAriaLabel","resolveDelay","AnnotationTextSection","onAnnotationChange","annotationEnabled","setAnnotationEnabled","onAddAnnotationChange","MessageCommunicationStep","otherColleagueIds","setOtherColleagueIds","selectedDirectUserIds","setSelectedSubordinateIds","setAnnotationText","usersChanged","onConfirmMessageCommunication","directReports","r","CheckmarkCircle24Regular","useMessageInteractionsViewStyles","useMessageViewHeaderStyles","flexRowItem","flexGrowItem","flexibleWidth","autoWidth","useCloseButtonStyles","closeBtnCtn","CloseButton","useMessageTitleStyles","messageTitle","subtitle1","MessageTitle","useMessagePublishDateStyles","MessagePublishDate","useMessageMetaStyles","messageMeta","flexWrapItem","MessageMeta","fullMode","MessageViewHeader","isFullMode","MessageLoader","txt","useScrollBarStyle","borderBottomRightRadius","borderBottomLeftRadius","borderTopRightRadius","borderTopLeftRadius","borderTopWidth","borderBottomWidth","borderLeftWidth","borderRightWidth","borderTopStyle","borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopColor","borderLeftColor","borderRightColor","borderBottomColor","backgroundClip","colorScrollbarOverlay","InteractionStep","MessageInteractionView","scrollBarStyle","Content","uiStep","setUiStep","Communication","PageLayout","useLayoutEffect","updateSize","innerWidth","addEventListener","removeEventListener","withPageLayout","WrappedComponent","useMessageFilterTagsStyles","useMenuItemStyles","menuItem","menuTag","removeAriaLabel","isVisible","MenuItem","dismissible","dismissIcon","onRemoveFilter","UnvisibleTagsMenu","tags","MessageFilterTags","changeFiltersCallback","onCatDismiss","onImpLevelDismiss","onStrFocusDismiss","onPeriodDismiss","onLeaderDismiss","allTags","catTags","importanceLevelsTags","strFocusTags","initId","activeView","setActiveView","loadContent","loadMessage","ActionsPanel","MessageTileView","i18n","use","Backend","initReactI18next","init","load","fallbackLng","interpolation","escapeValue","backend","queryStringParams","process","errorMessage","colorPaletteRedForeground3","ErrorPage","useParams","_useSearchParams","useSearchParams","notifySuccess","getFrameContext","dialog","update","resize","parseErrorMessage","customActions","configure","messageWrapper","managerPicker","managerPickerMobile","onSelectSLTLeader","NotFoundPage","_useStateSelector3","App","setTheme","setInitId","_context$app","context","getContext","subPageId","registerOnThemeChangeHandler","catch","log","search","locale","URLSearchParams","changeLanguage","updateLocale","v9Theme","teamsDarkTheme","teamsHighContrastTheme","getV9TeamsThemeByName","v8Theme","createV8Theme","Suspense","fallback","Provider","ThemeProvider","themeProvider","dir","Routes","Route","path","element","MyMessagesPage","MoreMessagesPage","AdminPage","DesignatedApproverPage","initializeIcons","document","getElementById","createRoot","render","BrowserRouter"],"mappings":"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","file":"static/js/main.7138929c.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"app\":\"App_app__1xtMc\",\"themeProvider\":\"App_themeProvider__2gf4i\"};","export enum SizeModeType {\r\n Mobile,\r\n Tablet,\r\n Full\r\n}","import { t } from 'i18next';\r\nimport { PageInfo } from '@models/ui/PageInfo';\r\n\r\nexport const routes = {\r\n myMessages: '/mymessages',\r\n myMessagesid: '/mymessages/:id',\r\n moreMessages: '/moremessages',\r\n errorPage: '/errorpage',\r\n errorPageid: '/errorpage/:id',\r\n admin: '/admin',\r\n designatedApprover: '/designatedapprover'\r\n};\r\n\r\nconst myMessagePageInfo: PageInfo = {\r\n title: t('MyMessagesPage.PageTitle'),\r\n ariaLabel: t('MyMessagesPage.PageAriaLabel')\r\n};\r\n\r\nconst moreMessagePageInfo: PageInfo = {\r\n title: t('MoreMessagesPage.PageTitle'),\r\n ariaLabel: t('MoreMessagesPage.PageAriaLabel')\r\n};\r\n\r\nconst adminPageInfo: PageInfo = {\r\n title: t('AdminPage.PageTitle'),\r\n ariaLabel: t('AdminPage.PageAriaLabel')\r\n};\r\n\r\nconst designatedApproverPageInfo: PageInfo = {\r\n title: t('DesignatedApproverPage.PageTitle'),\r\n ariaLabel: t('DesignatedApproverPage.PageAriaLabel')\r\n};\r\n\r\nexport const routePagesMap = {\r\n [routes.myMessages]: myMessagePageInfo,\r\n [routes.moreMessages]: moreMessagePageInfo,\r\n [routes.admin]: adminPageInfo,\r\n [routes.designatedApprover]: designatedApproverPageInfo\r\n};\r\n","// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT License.\r\n\r\nimport axios, {\r\n AxiosResponse,\r\n AxiosRequestConfig,\r\n AxiosInstance,\r\n AxiosAdapter,\r\n AxiosError\r\n} from 'axios';\r\nimport { cacheAdapterEnhancer } from 'axios-extensions';\r\n\r\nimport { app, authentication } from '@microsoft/teams-js';\r\nimport uuid from 'react-uuid';\r\nimport { storeCurrentUrl } from './navigationStorage';\r\nimport { routes } from '@configs/pages';\r\n\r\nexport class AxiosJWTDecorator {\r\n private http: AxiosInstance;\r\n\r\n constructor(cached: boolean = false) {\r\n if (cached) {\r\n this.http = axios.create({\r\n baseURL: '/',\r\n headers: { 'Cache-Control': 'no-cache' },\r\n adapter: cacheAdapterEnhancer(axios.defaults.adapter as AxiosAdapter)\r\n });\r\n } else {\r\n this.http = axios.create();\r\n }\r\n }\r\n\r\n public async get>(\r\n url: string,\r\n handleError: boolean = true,\r\n needAuthorizationHeader: boolean = true,\r\n config?: AxiosRequestConfig\r\n ): Promise {\r\n try {\r\n if (needAuthorizationHeader) {\r\n config = await this.setupAuthorizationHeader(config);\r\n }\r\n return await this.http.get(url, config);\r\n } catch (error) {\r\n this.processError(error, handleError);\r\n throw error;\r\n }\r\n }\r\n\r\n public async delete>(\r\n url: string,\r\n handleError: boolean = true,\r\n config?: AxiosRequestConfig\r\n ): Promise {\r\n try {\r\n config = await this.setupAuthorizationHeader(config);\r\n return await this.http.delete(url, config);\r\n } catch (error) {\r\n this.processError(error, handleError);\r\n throw error;\r\n }\r\n }\r\n\r\n public async post>(\r\n url: string,\r\n data?: unknown,\r\n handleError: boolean = true,\r\n config?: AxiosRequestConfig\r\n ): Promise {\r\n try {\r\n config = await this.setupAuthorizationHeader(config);\r\n config.headers!['Content-Type'] = 'application/json';\r\n return await this.http.post(url, data, config);\r\n } catch (error) {\r\n this.processError(error, handleError);\r\n throw error;\r\n }\r\n }\r\n\r\n public async put>(\r\n url: string,\r\n data?: unknown,\r\n handleError: boolean = true,\r\n config?: AxiosRequestConfig\r\n ): Promise {\r\n try {\r\n config = await this.setupAuthorizationHeader(config);\r\n return await this.http.put(url, data, config);\r\n } catch (error) {\r\n this.processError(error, handleError);\r\n throw error;\r\n }\r\n }\r\n\r\n private processError(error: unknown, handleError: boolean): void {\r\n if (axios.isAxiosError(error)) {\r\n console.error(error?.response?.data);\r\n if (handleError) {\r\n this.handleError(error);\r\n throw error;\r\n } else {\r\n throw error;\r\n }\r\n } else {\r\n console.error(error);\r\n throw error;\r\n }\r\n }\r\n\r\n private handleError(error: AxiosError): void {\r\n if (error.hasOwnProperty('response')) {\r\n const errorStatus = error?.response?.status;\r\n if (errorStatus === 403) {\r\n window.location.href = `${routes.errorPage}/403`;\r\n } else if (errorStatus === 401) {\r\n window.location.href = `/${routes.errorPage}/401`;\r\n } else if (errorStatus === 404) {\r\n window.location.href = `${routes.errorPage}?message=${error.response?.data}`;\r\n } else {\r\n window.location.href = routes.errorPage;\r\n }\r\n } else {\r\n window.location.href = routes.errorPage;\r\n }\r\n }\r\n\r\n private async setupAuthorizationHeader(\r\n config?: AxiosRequestConfig\r\n ): Promise {\r\n if (!app.isInitialized()) {\r\n await app.initialize();\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n const authTokenRequest = {\r\n successCallback: (token: string) => {\r\n if (!config) {\r\n config = this.http.defaults as AxiosRequestConfig;\r\n }\r\n config.headers!.Authorization = `Bearer ${token}`;\r\n resolve(config);\r\n },\r\n failureCallback: (error: string) => {\r\n // When the getAuthToken function returns a \"resourceRequiresConsent\" error,\r\n // it means Azure AD needs the user's consent before issuing a token to the app.\r\n // The following code redirects the user to the \"Sign in\" page where the user can grant the consent.\r\n // Right now, the app redirects to the consent page for any error.\r\n console.error('Error from getAuthToken: ', error);\r\n const state = uuid();\r\n storeCurrentUrl(state);\r\n window.location.href = `/signin?state=${decodeURIComponent(state)}`;\r\n },\r\n resources: []\r\n };\r\n authentication.getAuthToken(authTokenRequest);\r\n });\r\n }\r\n}\r\n\r\nconst apiClient = new AxiosJWTDecorator();\r\n//check later\r\nconst cachedApiClient = new AxiosJWTDecorator();\r\nexport { apiClient, cachedApiClient };\r\n","export const storeCurrentUrl = (key: string): void => {\r\n sessionStorage.setItem(key, window.location.href);\r\n};\r\n\r\nexport const getStoredCurrentUrl = (key: string): string | null => {\r\n return sessionStorage.getItem(key);\r\n};\r\n","import { apiClient } from '@api/services/client';\r\nimport { CurrentUserPermissions } from '@api/models';\r\n\r\nexport const getUserPermissions = async (): Promise => {\r\n const url = `/api/permissions/my`;\r\n const response = await apiClient.get(encodeURI(url));\r\n return response.data;\r\n};\r\n","export const CACHE_KEY = '[PLCT]';\r\n\r\ntype Nullable = T | undefined | null;\r\n\r\nexport class CacheEntry {\r\n constructor(\r\n public readonly expires: Nullable,\r\n public readonly value: Nullable\r\n ) {}\r\n}\r\n\r\nclass BrowserStorage {\r\n private storage = window.localStorage;\r\n\r\n private get key(): string {\r\n return `${CACHE_KEY}`;\r\n }\r\n\r\n private updateStorageEntry(key: string, value: T, expiration: number | Date): void {\r\n try {\r\n const entry = JSON.parse(this.storage.getItem(this.key) || '{}') as Partial<{\r\n [key: string]: unknown;\r\n }>;\r\n entry[key] = this.asCacheEntry(value, expiration);\r\n this.storage.setItem(this.key, JSON.stringify(entry));\r\n } catch (e) {\r\n this.clear();\r\n }\r\n }\r\n\r\n private getStorageEntry(key: string): Nullable {\r\n try {\r\n const entry = JSON.parse(this.storage.getItem(this.key) || '{}') as Partial<{\r\n [key: string]: unknown;\r\n }>;\r\n return this.fromCacheEntry(entry[key] as Nullable>);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n return undefined;\r\n }\r\n\r\n private asCacheEntry(item: T, expiration: number | Date = 0): CacheEntry {\r\n let expDate: Nullable;\r\n if (typeof expiration === 'number' && expiration > 0) {\r\n const date = new Date();\r\n date.setMinutes(date.getMinutes() + expiration);\r\n expDate = date;\r\n }\r\n if (expiration instanceof Date && !isNaN(+expiration)) {\r\n expDate = expiration;\r\n }\r\n return new CacheEntry(expDate, item);\r\n }\r\n\r\n /**\r\n * Safely get value from CacheEntry.\r\n * If item has expired - returns `undefined`.\r\n */\r\n private fromCacheEntry(entry: Nullable>): Nullable {\r\n if (typeof entry === 'undefined' || entry === null) {\r\n return undefined;\r\n }\r\n return entry.expires && new Date(entry.expires) <= new Date() ? undefined : entry.value;\r\n }\r\n\r\n public get(key: string): Nullable;\r\n public get(key: string, getter: () => T): T;\r\n public get(...args: [string, (() => T)?]): Nullable | T {\r\n const [key, getter] = args;\r\n const value = this.getStorageEntry(key);\r\n if (typeof value === 'undefined' && typeof getter === 'function') {\r\n return getter();\r\n }\r\n return value;\r\n }\r\n\r\n public set(key: string, item: T, expires: number | Date = 0): void {\r\n this.updateStorageEntry(key, item, expires);\r\n }\r\n public remove(key: string): void {\r\n try {\r\n const entry = JSON.parse(this.storage.getItem(this.key) || '{}') as Partial<{\r\n [key: string]: unknown;\r\n }>;\r\n delete entry[key];\r\n this.storage.setItem(this.key, JSON.stringify(entry));\r\n } catch (e) {\r\n console.error(e);\r\n this.clear();\r\n }\r\n }\r\n public clear(): void {\r\n try {\r\n this.storage.removeItem(this.key);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n}\r\n\r\nexport default new BrowserStorage();\r\n","import { apiClient } from '@api/services/client';\r\nimport cache from '@api/services/cache';\r\n\r\nimport { MessageCategoryData, MessagePeriodData, MessageStrategicFocusData } from '@api/models';\r\nimport { AppLinks } from '@api/models/AppLinks';\r\n\r\nconst CACHE_15MIN = 15;\r\nconst CACHE_1Day = 24 * 60 * 1;\r\n\r\nexport const getMessageCategories = async (): Promise => {\r\n const url = `/api/meta/categories`;\r\n const res = cache.get(url);\r\n if (!res) {\r\n const response = await apiClient.get(encodeURI(url));\r\n const data = response.data;\r\n cache.set(url, data, CACHE_15MIN);\r\n return data;\r\n } else {\r\n return res;\r\n }\r\n};\r\n\r\nexport const getMessageStrategicFocuses = async (): Promise => {\r\n const url = `/api/meta/strategicFocuses`;\r\n const res = cache.get(url);\r\n if (!res) {\r\n const response = await apiClient.get(encodeURI(url));\r\n const data = response.data;\r\n cache.set(url, data, CACHE_15MIN);\r\n return data;\r\n } else {\r\n return res;\r\n }\r\n};\r\n\r\nexport const getMessagePeriods = async (): Promise => {\r\n const url = `/api/meta/periods`;\r\n const res = cache.get(url);\r\n if (!res) {\r\n const response = await apiClient.post(\r\n encodeURI(url),\r\n JSON.stringify(new Date())\r\n );\r\n const data = response.data;\r\n cache.set(url, data, CACHE_15MIN);\r\n return data;\r\n } else {\r\n return res;\r\n }\r\n};\r\n\r\nexport const getLinks = async (): Promise => {\r\n const url = `/api/meta/Links`;\r\n const res = cache.get(url);\r\n if (!res) {\r\n const response = await apiClient.get(encodeURI(url));\r\n const data = response.data;\r\n cache.set(url, data, CACHE_1Day);\r\n return data;\r\n } else {\r\n return res;\r\n }\r\n};\r\n","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nimport { RootState } from '..';\r\nimport { MessageCategoryData, MessagePeriodData, MessageStrategicFocusData } from '@api/models';\r\nimport {\r\n getLinks,\r\n getMessageCategories,\r\n getMessagePeriods,\r\n getMessageStrategicFocuses\r\n} from '@api/services/meta';\r\nimport { AppLinks } from '@api/models/AppLinks';\r\n\r\n/* Models */\r\nexport interface IMetaState {\r\n categories: MessageCategoryData[];\r\n strategicFocuses: MessageStrategicFocusData[];\r\n periods: MessagePeriodData[];\r\n loaded: boolean;\r\n links: AppLinks | undefined;\r\n}\r\n\r\nconst initialState: IMetaState = {\r\n categories: [],\r\n strategicFocuses: [],\r\n periods: [],\r\n loaded: false,\r\n links: undefined\r\n};\r\n\r\n/* Thunks */\r\ntype AllMeta = {\r\n categories: MessageCategoryData[];\r\n strategicFocuses: MessageStrategicFocusData[];\r\n periods: MessagePeriodData[];\r\n links: AppLinks | undefined;\r\n};\r\n\r\nconst loadMeta = createAsyncThunk(\r\n 'loadMeta',\r\n async (_, api) => {\r\n const meta = api.getState().meta;\r\n\r\n if (meta.loaded) {\r\n return meta;\r\n }\r\n\r\n const [categories, strategicFocuses, periods, links] = await Promise.all([\r\n getMessageCategories(),\r\n getMessageStrategicFocuses(),\r\n getMessagePeriods(),\r\n getLinks()\r\n ]);\r\n\r\n return { categories, strategicFocuses, periods, links };\r\n }\r\n);\r\n\r\n/** Slice */\r\nexport const metaSlice = createSlice({\r\n name: 'meta',\r\n initialState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n builder.addCase(loadMeta.fulfilled, (state, action) => {\r\n state.categories = action.payload.categories;\r\n state.strategicFocuses = action.payload.strategicFocuses;\r\n state.periods = action.payload.periods;\r\n state.links = action.payload.links;\r\n state.loaded = true;\r\n });\r\n }\r\n});\r\n\r\n/** Selectors */\r\nexport { loadMeta };\r\n\r\nexport default metaSlice.reducer;\r\n","import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport { SizeModeType } from '@models/ui/SizeModeType';\r\n\r\nimport { routes } from '@configs/pages';\r\n\r\nimport { getUserPermissions } from '@api/services/permissions';\r\nimport { CurrentUserPermissions } from '@api/models';\r\nimport { loadMeta } from '../meta';\r\nimport { RootState } from '..';\r\n\r\nconst MOBILE_WIDTH_MAX = 760;\r\nconst TABLET_WIDTH_MAX = 1024;\r\n\r\n/* Models */\r\n\r\nexport interface IAppConfigState {\r\n containerWidth: number;\r\n sizeMode: SizeModeType;\r\n initialized: boolean;\r\n allowedRoutes: string[];\r\n currentUserPermissions: CurrentUserPermissions;\r\n}\r\n\r\nconst initialState: IAppConfigState = {\r\n sizeMode: SizeModeType.Full,\r\n initialized: false,\r\n containerWidth: 0,\r\n allowedRoutes: [],\r\n currentUserPermissions: {\r\n admin: false,\r\n approver: false\r\n }\r\n};\r\n\r\n/** Thunks */\r\nconst loadMyPermissions = createAsyncThunk(\r\n 'loadMyPermissions',\r\n async (_, api) => {\r\n const permissions = await getUserPermissions();\r\n return permissions;\r\n }\r\n);\r\n\r\nexport const initApp = createAsyncThunk(\r\n 'initApp',\r\n async (_, api) => {\r\n await Promise.all([api.dispatch(loadMyPermissions()), api.dispatch(loadMeta())]);\r\n }\r\n);\r\n\r\n/** Slice */\r\nexport const appSlice = createSlice({\r\n name: 'appConfig',\r\n initialState,\r\n reducers: {\r\n setAppUIConfig: (state, action: PayloadAction<{ width: number }>) => {\r\n state.containerWidth = action.payload.width;\r\n if (action.payload.width > TABLET_WIDTH_MAX) {\r\n state.sizeMode = SizeModeType.Full;\r\n } else if (action.payload.width < MOBILE_WIDTH_MAX) {\r\n state.sizeMode = SizeModeType.Mobile;\r\n } else {\r\n state.sizeMode = SizeModeType.Tablet;\r\n }\r\n },\r\n setPagesConfig: (state, action: PayloadAction) => {\r\n state.allowedRoutes = action.payload;\r\n }\r\n },\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(initApp.fulfilled, (state, action) => {\r\n state.initialized = true;\r\n })\r\n .addCase(loadMyPermissions.fulfilled, (state, action) => {\r\n //Routes configuration based on permissions\r\n const allowedRoutes: string[] = [routes.myMessages, routes.moreMessages];\r\n if (action.payload.admin) {\r\n allowedRoutes.push(routes.admin);\r\n }\r\n if (action.payload.approver) {\r\n allowedRoutes.push(routes.designatedApprover);\r\n }\r\n\r\n state.allowedRoutes = allowedRoutes;\r\n state.currentUserPermissions = action.payload;\r\n });\r\n }\r\n});\r\n\r\n/** Selectors */\r\nexport const { setAppUIConfig } = appSlice.actions;\r\n\r\nexport default appSlice.reducer;\r\n","import { apiClient } from '@api/services/client';\r\nimport { MessageInstanceBasicData } from '@api/models';\r\nimport { MessageRequestFilters } from '@api/models/MessageRequestFilters';\r\nimport { MessageInstanceFullDataModel } from '@api/models/MessageInstanceFullDataModel';\r\nimport { MessageRequestAdminFilters } from '@api/models/MessageRequestAdminFilters';\r\nimport { MessageInstanceAdminBasicData } from '@api/models/MessageInstanceAdminBasicData';\r\nimport { ConfirmCommunicationsModel } from '@api/models/ConfirmCommunicationsModel';\r\n\r\n/** LEADER endpoints */\r\n\r\nexport const getMyMessages = async (\r\n filters: MessageRequestFilters\r\n): Promise => {\r\n const url = `/api/messages/my/active`;\r\n const res = await apiClient.post(\r\n encodeURI(url),\r\n JSON.stringify(filters)\r\n );\r\n return res.data;\r\n};\r\n\r\nexport const getMoreMessages = async (\r\n filters: MessageRequestFilters\r\n): Promise => {\r\n const url = `/api/messages/my/all`;\r\n const res = await apiClient.post(\r\n encodeURI(url),\r\n JSON.stringify(filters)\r\n );\r\n return res.data;\r\n};\r\n\r\nexport const getMyMessage = async (\r\n messageId: number\r\n): Promise => {\r\n const url = `/api/messages/my/message/${messageId}`;\r\n const res = await apiClient.get(encodeURI(url));\r\n return res.data;\r\n};\r\n\r\nexport const confirmMyMessage = async (\r\n messageId: number,\r\n model: ConfirmCommunicationsModel\r\n): Promise => {\r\n const url = `/api/messages/my/message/${messageId}/confirm`;\r\n await apiClient.post(encodeURI(url), JSON.stringify(model));\r\n};\r\n\r\nexport const markMyMessageIrrelevant = async (\r\n messageId: number,\r\n feedback: string\r\n): Promise => {\r\n const url = `/api/messages/my/message/${messageId}/irrelevant`;\r\n await apiClient.post(encodeURI(url), JSON.stringify({ feedback }));\r\n};\r\n\r\n/** ADMIN endpoints */\r\n\r\nexport const getAdminMessages = async (\r\n filters: MessageRequestAdminFilters\r\n): Promise => {\r\n const url = `api/admin/messages`;\r\n const res = await apiClient.post(\r\n encodeURI(url),\r\n JSON.stringify(filters)\r\n );\r\n return res.data;\r\n};\r\n\r\nexport const getLeaderMessageByAdmin = async (\r\n messageId: number,\r\n leaderId: number\r\n): Promise => {\r\n const url = `api/admin/message/${messageId}`;\r\n const res = await apiClient.get(encodeURI(url));\r\n return res.data;\r\n};\r\n\r\nexport const confirmLeaderMessageByAdmin = async (\r\n messageId: number,\r\n model: ConfirmCommunicationsModel\r\n): Promise => {\r\n const url = `api/admin/message/${messageId}/confirm`;\r\n await apiClient.post(encodeURI(url), JSON.stringify(model));\r\n};\r\n\r\nexport const markLeaderMessageIrrelevantByAdmin = async (\r\n messageId: number,\r\n feedback: string\r\n): Promise => {\r\n const url = `api/admin/message/${messageId}/irrelevant`;\r\n await apiClient.post(encodeURI(url), JSON.stringify({ feedback }));\r\n};\r\n\r\n/** APPROVER endpoints */\r\n\r\nexport const getApproverMessages = async (\r\n filters: MessageRequestFilters,\r\n sltId: number\r\n): Promise => {\r\n const url = `/api/approver/${sltId}/messages`;\r\n const res = await apiClient.post(\r\n encodeURI(url),\r\n JSON.stringify(filters)\r\n );\r\n return res.data;\r\n};\r\n\r\nexport const getSltMessageByApprover = async (\r\n messageId: number,\r\n sltId: number\r\n): Promise => {\r\n const url = `/api/approver/${sltId}/messages/${messageId}`;\r\n const res = await apiClient.get(encodeURI(url));\r\n return res.data;\r\n};\r\n\r\nexport const confirmSltMessageByApprover = async (\r\n messageId: number,\r\n sltId: number,\r\n model: ConfirmCommunicationsModel\r\n): Promise => {\r\n const url = `/api/approver/${sltId}/messages/${messageId}/confirm`;\r\n await apiClient.post(encodeURI(url), JSON.stringify(model));\r\n};\r\n\r\nexport const markSltMessageIrrelevantByApprover = async (\r\n messageId: number,\r\n sltId: number,\r\n feedback: string\r\n): Promise => {\r\n const url = `/api/approver/${sltId}/messages/${messageId}/irrelevant`;\r\n await apiClient.post(encodeURI(url), JSON.stringify({ feedback }));\r\n};\r\n","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nimport { RootState } from '..';\r\n\r\nimport {\r\n getAdminMessages,\r\n getApproverMessages,\r\n getMoreMessages,\r\n getMyMessages\r\n} from '@api/services/messages';\r\nimport { MessageInstanceBasicContentModel } from '@models/data/MessageInstanceBasicContentModel';\r\nimport { MessageInstanceBasicData } from '@api/models';\r\nimport { IMetaState } from '@state/meta';\r\nimport { MessageRequestFilters } from '@api/models/MessageRequestFilters';\r\nimport { IFiltersState } from '@state/filters';\r\nimport { MessageRequestAdminFilters } from '@api/models/MessageRequestAdminFilters';\r\nimport { MessageInstanceAdminBasicData } from '@api/models/MessageInstanceAdminBasicData';\r\n\r\n/* Models */\r\n\r\nexport interface IMessagesState {\r\n messages: MessageInstanceBasicContentModel[];\r\n adminMessages: MessageInstanceAdminBasicData[];\r\n loading: boolean;\r\n}\r\n\r\nconst initialState: IMessagesState = {\r\n messages: [],\r\n adminMessages: [],\r\n loading: false\r\n};\r\n\r\n/* Thunks */\r\n\r\nconst parseMessages = async (\r\n meta: IMetaState,\r\n messages: MessageInstanceBasicData[]\r\n): Promise => {\r\n const categories = meta.categories;\r\n const strategicFocuses = meta.strategicFocuses;\r\n return messages.map((message) => {\r\n const mCategories = categories.filter((c) => message.categoriesIds.indexOf(c.id) !== -1);\r\n const mValue = strategicFocuses.find((value) => value.id === message.strategicFocusId);\r\n return {\r\n ...message,\r\n categories: mCategories,\r\n strategicFocus: mValue || {\r\n id: -1,\r\n title: '',\r\n imageUrl: ''\r\n }\r\n };\r\n });\r\n};\r\nconst toFilteringParameters = (filter: IFiltersState): MessageRequestFilters => {\r\n const cats = filter.messageFilters.categories.map((c) => c.id);\r\n const focuses = filter.messageFilters.strategicFocuses.map((c) => c.id);\r\n\r\n const critical =\r\n filter.messageFilters.importanceLevels.length === 1\r\n ? !!filter.messageFilters.importanceLevels[0].id\r\n : undefined;\r\n\r\n return {\r\n text: filter.searchBoxValue,\r\n categoriesIds: cats,\r\n strategicFocusesIds: focuses,\r\n critical: critical,\r\n endDate: filter.messageFilters.selectedPeriod?.endDateUTC,\r\n startDate: filter.messageFilters.selectedPeriod?.startDateUTC\r\n };\r\n};\r\n\r\nconst toFilteringAdminParameters = (filter: IFiltersState): MessageRequestAdminFilters => {\r\n const statuses = filter.messageFilters.statuses.map((c) => c.id);\r\n return {\r\n ...toFilteringParameters(filter),\r\n statuses: statuses,\r\n leaderId: filter.filteredLeader?.id,\r\n skip: 0,\r\n count: 50\r\n };\r\n};\r\n\r\nconst loadMyMessages = createAsyncThunk<\r\n MessageInstanceBasicContentModel[],\r\n void,\r\n { state: RootState }\r\n>('myMessages', async (_, api) => {\r\n const state = api.getState();\r\n const results = await getMyMessages(toFilteringParameters(state.filters));\r\n return parseMessages(state.meta, results);\r\n});\r\n\r\nconst loadMyMoreMessages = createAsyncThunk<\r\n MessageInstanceBasicContentModel[],\r\n void,\r\n { state: RootState }\r\n>('moreMessages', async (_, api) => {\r\n const state = api.getState();\r\n const results = await getMoreMessages(toFilteringParameters(state.filters));\r\n return parseMessages(state.meta, results);\r\n});\r\n\r\nconst loadMessagesForApprover = createAsyncThunk<\r\n MessageInstanceBasicContentModel[],\r\n void,\r\n { state: RootState }\r\n>('approverMessages', async (_, api) => {\r\n const state = api.getState();\r\n if (!!state.filters.filteredSLTLeader) {\r\n const results = await getApproverMessages(\r\n toFilteringParameters(state.filters),\r\n state.filters.filteredSLTLeader.id\r\n );\r\n return parseMessages(state.meta, results);\r\n } else {\r\n return [];\r\n }\r\n});\r\n\r\nconst loadMessagesForAdmin = createAsyncThunk<\r\n MessageInstanceAdminBasicData[],\r\n void,\r\n { state: RootState }\r\n>('adminMessages', async (_, api) => {\r\n const state = api.getState();\r\n return await getAdminMessages(toFilteringAdminParameters(state.filters));\r\n});\r\n\r\n/** Slice */\r\nexport const messagesSlice = createSlice({\r\n name: 'messages',\r\n initialState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadMyMessages.fulfilled, (state, action) => {\r\n state.messages = action.payload;\r\n state.loading = false;\r\n })\r\n .addCase(loadMyMessages.pending, (state) => {\r\n state.loading = true;\r\n })\r\n .addCase(loadMyMoreMessages.fulfilled, (state, action) => {\r\n state.messages = action.payload;\r\n state.loading = false;\r\n })\r\n .addCase(loadMyMoreMessages.pending, (state) => {\r\n state.loading = true;\r\n })\r\n .addCase(loadMessagesForAdmin.fulfilled, (state, action) => {\r\n state.adminMessages = action.payload;\r\n state.loading = false;\r\n })\r\n .addCase(loadMessagesForAdmin.pending, (state) => {\r\n state.loading = true;\r\n })\r\n .addCase(loadMessagesForApprover.fulfilled, (state, action) => {\r\n state.messages = action.payload;\r\n state.loading = false;\r\n })\r\n .addCase(loadMessagesForApprover.pending, (state) => {\r\n state.loading = true;\r\n });\r\n }\r\n});\r\n\r\n/** Exports */\r\nexport { loadMyMessages, loadMessagesForAdmin, loadMessagesForApprover, loadMyMoreMessages };\r\n\r\nexport default messagesSlice.reducer;\r\n","export enum MessageInstanceLeaderStatus {\r\n Cascaded = 1,\r\n CascadedByLeader = 2,\r\n Irrelevant = 3\r\n}\r\n","export enum MessageInstanceStatus {\r\n NotStarted = 1,\r\n InProgress = 2,\r\n Completed = 3\r\n}\r\n","export enum MessageInteractionMode {\r\n Leader,\r\n Admin,\r\n Approver,\r\n ReadOnly\r\n}\r\n","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nimport { type RootState } from '..';\r\n\r\nimport {\r\n getLeaderMessageByAdmin,\r\n getSltMessageByApprover,\r\n getMyMessage,\r\n markMyMessageIrrelevant,\r\n markSltMessageIrrelevantByApprover,\r\n markLeaderMessageIrrelevantByAdmin,\r\n confirmMyMessage,\r\n confirmLeaderMessageByAdmin,\r\n confirmSltMessageByApprover\r\n} from '@api/services/messages';\r\n\r\nimport { type IMetaState } from '@state/meta';\r\nimport { type MessageInstanceFullContentModel } from '@models/data/MessageInstanceFullContentModel';\r\nimport {\r\n MessageInstanceStatus,\r\n type MessageInstanceFullDataModel,\r\n MessageInstanceLeaderStatus\r\n} from '@api/models';\r\nimport { MessageInteractionMode } from '@models/data/MessageInteractionMode';\r\nimport { type MessageInstanceAdminBasicData } from '@api/models/MessageInstanceAdminBasicData';\r\nimport { ConfirmCommunicationsModel } from '@api/models/ConfirmCommunicationsModel';\r\n\r\n/* Models */\r\n\r\nexport interface ISelectedMessageState {\r\n message: MessageInstanceFullContentModel | undefined;\r\n mode: MessageInteractionMode;\r\n processingType: 'loading' | 'irrelevant' | 'confirmation' | 'none';\r\n showMessageView: boolean;\r\n previewInitialized: boolean;\r\n}\r\n\r\nconst initialState: ISelectedMessageState = {\r\n message: undefined,\r\n mode: MessageInteractionMode.Leader,\r\n processingType: 'none',\r\n showMessageView: false,\r\n previewInitialized: false\r\n};\r\n\r\n/* Thunks */\r\n\r\nconst processResult = (\r\n message: MessageInstanceFullDataModel | undefined,\r\n meta: IMetaState\r\n): MessageInstanceFullContentModel | undefined => {\r\n if (!message) {\r\n return undefined;\r\n } else {\r\n const categories = meta.categories;\r\n const strategicFocuses = meta.strategicFocuses;\r\n const mCategories = categories.filter((c) => message.categoriesIds.includes(c.id));\r\n const mValue = strategicFocuses.find((value) => value.id === message.strategicFocusId);\r\n return {\r\n ...message,\r\n categories: mCategories,\r\n strategicFocus: mValue || {\r\n id: -1,\r\n title: '',\r\n imageUrl: ''\r\n }\r\n };\r\n }\r\n};\r\n\r\nconst markMessageIrrelevant = createAsyncThunk(\r\n 'markMessageIrrelevant',\r\n async (feedback, api) => {\r\n const state = api.getState().selectedMessage;\r\n const id = state.message?.id;\r\n const mode = state.mode;\r\n if (id) {\r\n switch (mode) {\r\n case MessageInteractionMode.Leader: {\r\n await markMyMessageIrrelevant(id, feedback);\r\n break;\r\n }\r\n case MessageInteractionMode.Admin: {\r\n await markLeaderMessageIrrelevantByAdmin(id, feedback);\r\n break;\r\n }\r\n\r\n case MessageInteractionMode.Approver: {\r\n const sltId = api.getState().filters.filteredSLTLeader?.id;\r\n if (sltId) {\r\n await markSltMessageIrrelevantByApprover(id, sltId, feedback);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n);\r\n\r\nconst confirmCommunication = createAsyncThunk<\r\n void,\r\n ConfirmCommunicationsModel,\r\n { state: RootState }\r\n>('confirmCommunication', async (model, api) => {\r\n const state = api.getState().selectedMessage;\r\n const id = state.message?.id;\r\n const mode = state.mode;\r\n if (id) {\r\n switch (mode) {\r\n case MessageInteractionMode.Leader: {\r\n await confirmMyMessage(id, model);\r\n break;\r\n }\r\n case MessageInteractionMode.Admin: {\r\n await confirmLeaderMessageByAdmin(id, model);\r\n break;\r\n }\r\n\r\n case MessageInteractionMode.Approver: {\r\n const sltId = api.getState().filters.filteredSLTLeader?.id;\r\n if (sltId) {\r\n await confirmSltMessageByApprover(id, sltId, model);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n});\r\n\r\nconst loadMyMessage = createAsyncThunk<\r\n MessageInstanceFullContentModel | undefined,\r\n number,\r\n { state: RootState }\r\n>('myMessage', async (id, api) => {\r\n const m = await getMyMessage(id);\r\n return processResult(m, api.getState().meta);\r\n});\r\n\r\nconst loadMessageByApprover = createAsyncThunk<\r\n MessageInstanceFullContentModel | undefined,\r\n number,\r\n { state: RootState }\r\n>('approverMessage', async (id, api) => {\r\n const state = api.getState();\r\n if (state.filters.filteredSLTLeader) {\r\n const m = await getSltMessageByApprover(id, state.filters.filteredSLTLeader.id);\r\n return processResult(m, api.getState().meta);\r\n } else {\r\n return processResult(undefined, api.getState().meta);\r\n }\r\n});\r\n\r\nconst loadMessageByAdmin = createAsyncThunk<\r\n MessageInstanceFullContentModel | undefined,\r\n MessageInstanceAdminBasicData,\r\n { state: RootState }\r\n>('adminMessage', async (m, api) => {\r\n const res = await getLeaderMessageByAdmin(m.id, m.leader.id);\r\n return processResult(res, api.getState().meta);\r\n});\r\n\r\n/** Slice */\r\nexport const selectedMessageSlice = createSlice({\r\n name: 'selectedMessage',\r\n initialState,\r\n reducers: {\r\n cancelMessageInteraction: (state) => {\r\n state.processingType = 'none';\r\n state.showMessageView = false;\r\n state.message = undefined;\r\n },\r\n setPreviewInitialized: (state) => {\r\n state.previewInitialized = true;\r\n }\r\n },\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(loadMyMessage.fulfilled, (state, action) => {\r\n state.message = action.payload;\r\n state.mode =\r\n state.message &&\r\n state.message.status !== MessageInstanceStatus.Completed &&\r\n state.message.leaderStatus !== MessageInstanceLeaderStatus.Irrelevant\r\n ? MessageInteractionMode.Leader\r\n : MessageInteractionMode.ReadOnly;\r\n state.processingType = 'none';\r\n })\r\n .addCase(loadMyMessage.pending, (state) => {\r\n state.processingType = 'loading';\r\n state.showMessageView = true;\r\n })\r\n .addCase(loadMessageByApprover.fulfilled, (state, action) => {\r\n state.message = action.payload;\r\n\r\n state.mode =\r\n state.message &&\r\n state.message.status !== MessageInstanceStatus.Completed &&\r\n state.message.leaderStatus !== MessageInstanceLeaderStatus.Irrelevant\r\n ? MessageInteractionMode.Approver\r\n : MessageInteractionMode.ReadOnly;\r\n\r\n state.processingType = 'none';\r\n })\r\n .addCase(loadMessageByApprover.pending, (state) => {\r\n state.processingType = 'loading';\r\n state.showMessageView = true;\r\n })\r\n .addCase(loadMessageByAdmin.fulfilled, (state, action) => {\r\n state.message = action.payload;\r\n state.mode =\r\n state.message && state.message.status !== MessageInstanceStatus.Completed\r\n ? MessageInteractionMode.Admin\r\n : MessageInteractionMode.ReadOnly;\r\n state.processingType = 'none';\r\n })\r\n .addCase(loadMessageByAdmin.pending, (state) => {\r\n state.processingType = 'loading';\r\n state.showMessageView = true;\r\n })\r\n .addCase(markMessageIrrelevant.pending, (state) => {\r\n state.processingType = 'irrelevant';\r\n })\r\n .addCase(markMessageIrrelevant.fulfilled, (state) => {\r\n state.processingType = 'none';\r\n state.showMessageView = false;\r\n state.message = undefined;\r\n })\r\n .addCase(confirmCommunication.pending, (state) => {\r\n state.processingType = 'confirmation';\r\n })\r\n .addCase(confirmCommunication.fulfilled, (state) => {\r\n state.processingType = 'none';\r\n state.showMessageView = false;\r\n state.message = undefined;\r\n });\r\n }\r\n});\r\n\r\n/** Exports */\r\nexport {\r\n loadMyMessage,\r\n loadMessageByAdmin,\r\n loadMessageByApprover,\r\n markMessageIrrelevant,\r\n confirmCommunication\r\n};\r\nexport const { cancelMessageInteraction, setPreviewInitialized } = selectedMessageSlice.actions;\r\nexport default selectedMessageSlice.reducer;\r\n","import { createSlice, PayloadAction } from '@reduxjs/toolkit';\r\nimport type { MessageFilteringModel } from '@models/data/MessageMetaFilteringModel';\r\nimport type { UserBasicData } from '@api/models/UserBasicData';\r\n\r\n/* Models */\r\n\r\nexport interface IFiltersState {\r\n showFiltersPanel: boolean;\r\n messageFilters: MessageFilteringModel;\r\n //for admin mode\r\n filteredLeader: UserBasicData | undefined;\r\n filteredSLTLeader: UserBasicData | undefined;\r\n searchBoxValue: string | undefined;\r\n}\r\n\r\nconst initialState: IFiltersState = {\r\n showFiltersPanel: false,\r\n messageFilters: {\r\n categories: [],\r\n strategicFocuses: [],\r\n importanceLevels: [],\r\n statuses: [],\r\n selectedPeriod: undefined\r\n },\r\n filteredLeader: undefined,\r\n searchBoxValue: undefined,\r\n filteredSLTLeader: undefined\r\n};\r\n\r\n/** Thunks */\r\n\r\n/** Slice */\r\nexport const filtersSlice = createSlice({\r\n name: 'filters',\r\n initialState,\r\n reducers: {\r\n setPanelVisibility: (state, action: PayloadAction) => {\r\n state.showFiltersPanel = action.payload;\r\n },\r\n resetFiltersState: (state, _action: PayloadAction) => {\r\n state.showFiltersPanel = false;\r\n state.messageFilters = {\r\n categories: [],\r\n strategicFocuses: [],\r\n importanceLevels: [],\r\n statuses: [],\r\n selectedPeriod: undefined\r\n };\r\n state.filteredLeader = undefined;\r\n state.searchBoxValue = undefined;\r\n state.filteredSLTLeader = undefined;\r\n },\r\n applyMessageFilters: (state, action: PayloadAction) => {\r\n state.messageFilters = action.payload;\r\n state.showFiltersPanel = false;\r\n },\r\n applyMessageAndLeaderFilters: (\r\n state,\r\n action: PayloadAction<{\r\n filters: MessageFilteringModel;\r\n leader: UserBasicData | undefined;\r\n }>\r\n ): void => {\r\n state.messageFilters = action.payload.filters;\r\n state.filteredLeader = action.payload.leader;\r\n state.showFiltersPanel = false;\r\n },\r\n setSearchBoxValue: (state, action: PayloadAction) => {\r\n state.searchBoxValue = action.payload;\r\n },\r\n setLeaderFilter: (state, action: PayloadAction) => {\r\n state.filteredLeader = action.payload;\r\n },\r\n setSLTLeaderFilter: (state, action: PayloadAction) => {\r\n state.filteredSLTLeader = action.payload;\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n setPanelVisibility,\r\n resetFiltersState,\r\n applyMessageFilters,\r\n setSearchBoxValue,\r\n setLeaderFilter,\r\n setSLTLeaderFilter\r\n} = filtersSlice.actions;\r\n\r\nexport default filtersSlice.reducer;\r\n","//Redux\r\n\r\nimport { configureStore } from '@reduxjs/toolkit';\r\nimport { TypedUseSelectorHook, useDispatch, useSelector as useSelectorUntyped } from 'react-redux';\r\n\r\nimport appReducer from './app';\r\nimport metaReducer from './meta';\r\nimport messagesReducer from './messages';\r\nimport selectedMessageReducer from './selectedMessage';\r\nimport filtersReducer from './filters';\r\n\r\nexport const store = configureStore({\r\n reducer: {\r\n app: appReducer,\r\n meta: metaReducer,\r\n messages: messagesReducer,\r\n selectedMessage: selectedMessageReducer,\r\n filters: filtersReducer\r\n }\r\n});\r\n\r\nexport type AppDispatch = typeof store.dispatch;\r\nexport type RootState = ReturnType;\r\n\r\nexport const useAppDispatch: () => AppDispatch = () => useDispatch();\r\nexport const useStateSelector: TypedUseSelectorHook = useSelectorUntyped;\r\n","import { themeToTokensObject, teamsLightTheme } from '@fluentui/react-components';\r\nimport { AppTheme } from './AppTheme';\r\n\r\nconst dummyTheme: AppTheme = {\r\n ...teamsLightTheme,\r\n criticalCustomBackground: '',\r\n transparentWhite: '',\r\n imageBackground: '',\r\n customShadow1: '',\r\n customShadow2: '',\r\n criticalMessageColor: ''\r\n};\r\n\r\nexport const AppThemeTokens = themeToTokensObject(dummyTheme);\r\n","import * as React from 'react';\r\nimport { AppTheme } from './AppTheme';\r\nexport const AppThemeV9Context = React.createContext(undefined!);\r\n","import {\r\n Theme,\r\n teamsDarkTheme,\r\n teamsHighContrastTheme,\r\n teamsLightTheme\r\n} from '@fluentui/react-components';\r\n\r\nimport { AppTheme } from './AppTheme';\r\n\r\nconst extendTheme = (theme: Theme, mode: 'dark' | 'contrast' | 'default'): AppTheme => {\r\n switch (mode) {\r\n case 'dark':\r\n return {\r\n ...theme,\r\n criticalCustomBackground: '#4a1e04',\r\n transparentWhite: 'transparent',\r\n imageBackground: '#FFFFFF',\r\n customShadow1: '0 1px 2px rgba(0,0,0,0.10)',\r\n customShadow2: '0 3px 4px rgba(0,0,0,0.15)',\r\n criticalMessageColor: '#FFFFFF'\r\n };\r\n case 'contrast':\r\n return {\r\n ...theme,\r\n criticalCustomBackground: '#000000',\r\n transparentWhite: '#FFFFFF',\r\n imageBackground: '#FFFFFF',\r\n customShadow1: '0 1px 2px rgba(0,0,0,0.10)',\r\n customShadow2: '0 3px 4px rgba(0,0,0,0.15)',\r\n criticalMessageColor: '#1AEBFF'\r\n };\r\n default:\r\n return {\r\n ...theme,\r\n criticalCustomBackground: '#FFF4CE',\r\n transparentWhite: 'transparent',\r\n imageBackground: 'transparent',\r\n customShadow1: '0 1px 2px rgba(0,0,0,0.10)',\r\n customShadow2: '0 3px 4px rgba(0,0,0,0.15)',\r\n criticalMessageColor: '#835C00'\r\n };\r\n }\r\n};\r\n\r\nexport const getV9TeamsThemeByName = (name: string): AppTheme => {\r\n switch (name) {\r\n case 'dark':\r\n return extendTheme(teamsDarkTheme, 'dark');\r\n case 'contrast':\r\n return extendTheme(teamsHighContrastTheme, 'contrast');\r\n default:\r\n return extendTheme(teamsLightTheme, 'default');\r\n }\r\n};\r\n","import { makeStyles, tokens, shorthands } from '@configs/theme/v9';\r\n\r\nexport const interactionClass = 'ui-eff';\r\nexport const useTileCardStyles = makeStyles({\r\n root: {\r\n ...shorthands.padding('16px'),\r\n boxSizing: 'border-box',\r\n ...shorthands.overflow('hidden'),\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n rootCompact: {\r\n ...shorthands.padding('8px'),\r\n boxSizing: 'border-box',\r\n ...shorthands.overflow('hidden'),\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n inner: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'start',\r\n ...shorthands.gap('16px', '24px'),\r\n ...shorthands.padding('16px'),\r\n color: tokens.colorNeutralForeground2,\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n boxShadow: tokens.shadow4Brand,\r\n width: '100%',\r\n maxWidth: '360px',\r\n boxSizing: 'border-box',\r\n ...shorthands.borderRadius('8px'),\r\n ...shorthands.border('1px', 'solid', tokens.transparentWhite),\r\n cursor: 'pointer',\r\n ':hover': {\r\n color: tokens.colorNeutralForeground1Hover,\r\n backgroundColor: tokens.colorTransparentBackgroundHover,\r\n\r\n [`& .${interactionClass}`]: {\r\n backgroundColor: tokens.colorTransparentBackgroundHover,\r\n color: tokens.colorNeutralForeground1Hover\r\n }\r\n }\r\n },\r\n mobile: { width: '100%' },\r\n critical: {\r\n backgroundColor: tokens.criticalCustomBackground\r\n },\r\n titleWrapper: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n height: '50px',\r\n width: '100%',\r\n ...shorthands.gap('12px', '0px')\r\n },\r\n title: {\r\n fontWeight: 700,\r\n ...shorthands.margin(0),\r\n ...shorthands.flex(1),\r\n color: tokens.colorNeutralForeground2Link\r\n },\r\n titleIcon: {\r\n minWidth: '24px',\r\n width: '24px',\r\n height: '24px',\r\n color: tokens.colorNeutralForeground2Link\r\n },\r\n description: {\r\n fontWeight: 400,\r\n height: '40px',\r\n ...shorthands.margin(0)\r\n },\r\n multiLine: {\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n ...shorthands.overflow('hidden'),\r\n '@supports (-webkit-line-clamp: 2)': {\r\n whiteSpace: 'initial',\r\n display: '-webkit-box',\r\n WebkitLineClamp: 2,\r\n WebkitBoxOrient: 'vertical'\r\n }\r\n },\r\n footerWrapper: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n width: '100%'\r\n },\r\n image: {\r\n width: '32px',\r\n height: '32px',\r\n backgroundColor: tokens.imageBackground,\r\n ...shorthands.borderRadius('16px')\r\n }\r\n});\r\n","import { makeStyles, tokens, shorthands } from '@configs/theme/v9';\r\n\r\nexport const useMessageCategoriesListStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n ...shorthands.gap('12px'),\r\n maxWidth: '100%',\r\n width: 'auto'\r\n },\r\n category: {\r\n backgroundColor: tokens.colorNeutralBackground6,\r\n color: tokens.colorNeutralForeground2,\r\n ...shorthands.padding('8px', '8px'),\r\n ...shorthands.borderRadius('4px'),\r\n\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n ...shorthands.overflow('hidden')\r\n },\r\n more: {\r\n width: 'auto',\r\n ...shorthands.overflow('initial')\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { useMessageCategoriesListStyles } from './MessageCategoriesList.styles';\r\nimport { mergeClasses, Text } from '@fluentui/react-components';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { MessageCategoryData } from '@api/models';\r\n\r\nexport interface IMessageCategoriesListProps {\r\n categories: MessageCategoryData[];\r\n className?: string;\r\n maxItems?: number;\r\n}\r\n\r\nconst MessageCategoriesList = ({\r\n categories,\r\n maxItems,\r\n className\r\n}: IMessageCategoriesListProps): React.ReactElement => {\r\n const styles = useMessageCategoriesListStyles();\r\n const { t } = useTranslation();\r\n const max = maxItems || 2;\r\n return (\r\n
\r\n {categories.length > max ? (\r\n <>\r\n {categories.slice(0, max - 1).map((cat) => (\r\n \r\n {cat.title}\r\n \r\n ))}\r\n \r\n {`+ ${categories.length - max + 1} ${\r\n t('MessageCategories.MoreLabel') || 'more'\r\n }`}\r\n \r\n \r\n ) : (\r\n categories.map((cat) => (\r\n \r\n {cat.title}\r\n \r\n ))\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default MessageCategoriesList;\r\n","import { makeStyles, shorthands, tokens } from '@configs/theme/v9';\r\n\r\nexport const useMessageStrategicFocusBadgeStyles = makeStyles({\r\n focus: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n ...shorthands.gap('12px', '0px'),\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n minWidth: '120px'\r\n },\r\n focusTitle: {\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n ...shorthands.overflow('hidden'),\r\n '@supports (-webkit-line-clamp: 2)': {\r\n whiteSpace: 'initial',\r\n display: '-webkit-box',\r\n WebkitLineClamp: 2,\r\n WebkitBoxOrient: 'vertical'\r\n }\r\n },\r\n imgCtn: {\r\n position: 'relative',\r\n width: '32px',\r\n minWidth: '32px',\r\n maxWidth: '32px',\r\n height: '32px',\r\n ...shorthands.borderRadius('16px'),\r\n ...shorthands.overflow('hidden')\r\n },\r\n\r\n image: {\r\n display: 'block',\r\n opacity: '1',\r\n width: '32px',\r\n height: '32px',\r\n objectFit: 'cover',\r\n position: 'absolute',\r\n left: '50%',\r\n top: '50%',\r\n transform: 'translate(-50%, -50%)',\r\n backgroundColor: tokens.imageBackground\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { useMessageStrategicFocusBadgeStyles } from './MessageStrategicFocusBadge.styles';\r\nimport { Text, mergeClasses } from '@fluentui/react-components';\r\nimport { MessageStrategicFocusData } from '@api/models';\r\n\r\nexport interface IMessageStrategicFocusBadgeProps {\r\n strategicFocus: MessageStrategicFocusData;\r\n className?: string;\r\n}\r\n\r\nconst MessageStrategicFocusBadge = ({\r\n strategicFocus,\r\n className\r\n}: IMessageStrategicFocusBadgeProps): React.ReactElement => {\r\n const styles = useMessageStrategicFocusBadgeStyles();\r\n\r\n return (\r\n
\r\n {strategicFocus.imageUrl && (\r\n
\r\n \r\n
\r\n )}\r\n\r\n \r\n {strategicFocus.title}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default MessageStrategicFocusBadge;\r\n","import * as React from 'react';\r\nimport moment from 'moment';\r\nimport { Warning24Filled } from '@fluentui/react-icons';\r\nimport { MessageInstanceBasicContentModel } from '@models/data/MessageInstanceBasicContentModel';\r\nimport { useTileCardStyles, interactionClass } from './TileCard.styles';\r\nimport { mergeClasses, Text } from '@fluentui/react-components';\r\nimport { useCallback } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport MessageCategoriesList from '@components/controls/MessageCategoriesList';\r\nimport MessageStrategicFocusBadge from '@components/controls/MessageStrategicFocusBadge';\r\n\r\nexport interface IMessageTileCardProps {\r\n message: MessageInstanceBasicContentModel;\r\n width: number | string;\r\n onClick: (message: MessageInstanceBasicContentModel) => void;\r\n compact?: boolean;\r\n}\r\n\r\nconst MessageTileCard = ({\r\n message,\r\n width,\r\n onClick,\r\n compact\r\n}: IMessageTileCardProps): React.ReactElement => {\r\n const styles = useTileCardStyles();\r\n const { t } = useTranslation();\r\n const shortPublishedDate = moment(message.messagePublishingDateUTC).format('DD/MM/yyyy');\r\n const criticalClass = message.critical ? styles.critical : '';\r\n\r\n const onClickMessage = useCallback(() => onClick(message), [message, onClick]);\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n {message.title}\r\n \r\n {message.critical && (\r\n \r\n )}\r\n
\r\n \r\n {message.previewText}\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n {t('Common.MessageListView.CreationDateHeader')}\r\n : \r\n {shortPublishedDate}\r\n \r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default MessageTileCard;\r\n","import { makeStyles } from '@configs/theme/v9';\r\n\r\nexport const useTileViewStyles = makeStyles({\r\n container: {\r\n display: 'flex',\r\n justifyContent: 'start',\r\n flexWrap: 'wrap',\r\n marginTop: '-8px',\r\n paddingLeft: '4px',\r\n paddingRight: '4px'\r\n },\r\n containerCompact: {\r\n display: 'flex',\r\n justifyContent: 'start',\r\n flexWrap: 'wrap'\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport TileCard from './TileCard';\r\nimport { MessageInstanceBasicContentModel } from '@models/data/MessageInstanceBasicContentModel';\r\nimport { useTileViewStyles } from './MessageTileView.styles';\r\n\r\nexport interface IMessagesTileViewProps {\r\n items: MessageInstanceBasicContentModel[];\r\n containerWidth: number;\r\n onClick: (message: MessageInstanceBasicContentModel) => void;\r\n compact?: boolean;\r\n}\r\n\r\nconst TileView = ({\r\n items,\r\n containerWidth,\r\n onClick,\r\n compact\r\n}: IMessagesTileViewProps): React.ReactElement => {\r\n const styles = useTileViewStyles();\r\n\r\n let width = '100%';\r\n if (containerWidth > 1500) {\r\n width = `${100 / Math.floor(containerWidth / 320)}%`;\r\n } else if (containerWidth > 1200) {\r\n width = '25%';\r\n } else if (containerWidth > 900) {\r\n width = `${100 / 3}%`;\r\n } else if (containerWidth > 600) {\r\n width = '50%';\r\n }\r\n\r\n return (\r\n
\r\n {items.map((m) => (\r\n \r\n ))}\r\n
\r\n );\r\n};\r\n\r\nexport default TileView;\r\n","import { makeStyles } from '@fluentui/react-components';\r\n\r\nexport const usePageStyles = makeStyles({\r\n\tpage: {\r\n\t\tdisplay: 'flex',\r\n\t\tflexDirection: 'column',\r\n\t\tbackgroundColor: 'transparent',\r\n\t\theight: '100%'\r\n\t},\r\n\tscrollable: {\r\n\t\tposition: 'initial',\r\n\t\toverflowY: 'auto'\r\n\t}\r\n});\r\n","import { MessageInstanceAdminBasicData } from '@api/models/MessageInstanceAdminBasicData';\r\nimport {\r\n TableColumnDefinition,\r\n TableColumnId,\r\n TableHeaderCellProps,\r\n TableRowData,\r\n createTableColumn,\r\n useTableFeatures,\r\n useTableSort\r\n} from '@fluentui/react-components';\r\nexport type MessageInstanceAdminBasicDataKeys = keyof MessageInstanceAdminBasicData;\r\n\r\nconst importanceLevelColumnId: MessageInstanceAdminBasicDataKeys = 'critical';\r\nconst leaderColumnId: MessageInstanceAdminBasicDataKeys = 'leader';\r\nconst titleColumnId: MessageInstanceAdminBasicDataKeys = 'title';\r\nconst statusColumnId: MessageInstanceAdminBasicDataKeys = 'status';\r\nconst messagePublishingDateUTCColumnId: MessageInstanceAdminBasicDataKeys =\r\n 'messagePublishingDateUTC';\r\n\r\nconst columns: TableColumnDefinition[] = [\r\n createTableColumn({\r\n columnId: titleColumnId,\r\n compare: (a, b) => {\r\n return a.title.localeCompare(b.title);\r\n }\r\n }),\r\n createTableColumn({\r\n columnId: leaderColumnId,\r\n compare: (a, b) => {\r\n return a.leader.name.localeCompare(b.leader.name);\r\n }\r\n }),\r\n\r\n createTableColumn({\r\n columnId: statusColumnId,\r\n compare: (a, b) => {\r\n return a.status.toString().localeCompare(b.status.toString());\r\n }\r\n }),\r\n\r\n createTableColumn({\r\n columnId: importanceLevelColumnId,\r\n compare: (a, b) => {\r\n return `${b.critical}`.localeCompare(`${a.critical}`);\r\n }\r\n }),\r\n createTableColumn({\r\n columnId: messagePublishingDateUTCColumnId,\r\n compare: (a, b) => {\r\n return +(a.messagePublishingDateUTC > b.messagePublishingDateUTC);\r\n }\r\n })\r\n];\r\n\r\nconst useTableConfiguration = (\r\n items: MessageInstanceAdminBasicData[]\r\n): {\r\n rows: TableRowData[];\r\n headerSortProps: (columnId: TableColumnId) => Partial;\r\n} => {\r\n const {\r\n getRows,\r\n sort: { getSortDirection, toggleColumnSort, sort }\r\n } = useTableFeatures(\r\n {\r\n columns,\r\n items\r\n },\r\n [useTableSort({})]\r\n );\r\n\r\n const headerSortProps = (columnId: TableColumnId): Partial => ({\r\n onClick: (e: React.MouseEvent) => {\r\n toggleColumnSort(e, columnId);\r\n },\r\n\r\n sortDirection: getSortDirection(columnId)\r\n });\r\n\r\n const rows = sort(getRows());\r\n\r\n return {\r\n rows,\r\n headerSortProps\r\n };\r\n};\r\n\r\nconst ColumnsIds = {\r\n titleColumnId,\r\n leaderColumnId,\r\n messagePublishingDateUTCColumnId,\r\n statusColumnId,\r\n importanceLevelColumnId\r\n};\r\n\r\nexport { useTableConfiguration, ColumnsIds };\r\n","import { TitleValuePair } from '../models/data/TitleValuePair';\r\n\r\nexport const getImportanceLevels = (\r\n translation: (key: string) => string\r\n): TitleValuePair[] => [\r\n {\r\n id: 1,\r\n title: translation('ImportanceLevels.Critical')\r\n },\r\n {\r\n id: 0,\r\n title: translation('ImportanceLevels.NotCritical')\r\n }\r\n];\r\n\r\nexport const parseCriticalToImportance = (\r\n flag: boolean,\r\n translation: (key: string) => string\r\n): TitleValuePair => {\r\n const vals = getImportanceLevels(translation);\r\n const res = vals.find((item) => item.id === +flag);\r\n return res || { id: -1, title: '' };\r\n};\r\n","import { makeStyles, shorthands, tokens } from '@configs/theme/v9';\r\n\r\nexport const useListViewStyles = makeStyles({\r\n root: {\r\n display: 'block',\r\n ...shorthands.margin('8px', '20px', '20px')\r\n },\r\n rootCompact: {\r\n display: 'block',\r\n ...shorthands.margin('8px')\r\n },\r\n table: { minWidth: '800px' },\r\n\r\n header: {\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n cursor: 'pointer'\r\n },\r\n critical: {\r\n backgroundColor: tokens.criticalCustomBackground\r\n },\r\n row: {\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n ...shorthands.border('1px', 'solid', tokens.transparentWhite),\r\n cursor: 'pointer',\r\n ':hover': {\r\n color: tokens.colorNeutralForeground1Hover,\r\n backgroundColor: tokens.colorNeutralBackground1Hover\r\n }\r\n },\r\n cellText: {\r\n display: 'flex',\r\n flexWrap: 'wrap'\r\n },\r\n firstColumn: {\r\n width: '30px'\r\n },\r\n titleIcon: {\r\n minWidth: '24px',\r\n width: '24px',\r\n height: '24px',\r\n color: tokens.colorNeutralForeground2Link\r\n },\r\n staticWidthSmallCell: {\r\n width: '100px'\r\n },\r\n staticWidthMidCell: {\r\n width: '170px'\r\n }\r\n});\r\n","import { MessageInstanceStatus } from '@api/models';\r\nimport { TitleValuePair } from '../models/data/TitleValuePair';\r\n\r\nexport const getMessageStatuses = (\r\n translation: (key: string) => string\r\n): TitleValuePair[] => [\r\n {\r\n id: MessageInstanceStatus.NotStarted,\r\n title: translation('MessageStatus.NotStarted')\r\n },\r\n {\r\n id: MessageInstanceStatus.InProgress,\r\n title: translation('MessageStatus.InProgress')\r\n },\r\n {\r\n id: MessageInstanceStatus.Completed,\r\n title: translation('MessageStatus.Completed')\r\n }\r\n];\r\n\r\nexport const getMessageStatusesMap = (\r\n translation: (key: string) => string\r\n): { [x: number]: string } => {\r\n return {\r\n [MessageInstanceStatus.NotStarted]: translation('MessageStatus.NotStarted'),\r\n [MessageInstanceStatus.InProgress]: translation('MessageStatus.InProgress'),\r\n [MessageInstanceStatus.Completed]: translation('MessageStatus.Completed')\r\n };\r\n};\r\n","import * as React from 'react';\r\n\r\nimport {\r\n TableBody,\r\n TableCell,\r\n TableRow,\r\n Table,\r\n TableHeader,\r\n TableHeaderCell,\r\n TableCellLayout,\r\n Text,\r\n mergeClasses\r\n} from '@fluentui/react-components';\r\nimport moment from 'moment';\r\n\r\nimport { Warning24Filled } from '@fluentui/react-icons';\r\nimport { ColumnsIds, useTableConfiguration } from './adminListView.config';\r\nimport { parseCriticalToImportance } from '@configs/importanceLevels';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useListViewStyles } from './../MessageListView.styles';\r\nimport { MessageInstanceAdminBasicData } from '@api/models/MessageInstanceAdminBasicData';\r\nimport { getMessageStatusesMap } from '@configs/messageStatuses';\r\n\r\nexport interface IMesageListViewProps {\r\n items: MessageInstanceAdminBasicData[];\r\n onClick: (item: MessageInstanceAdminBasicData) => void;\r\n compact?: boolean;\r\n}\r\n\r\nexport const MessageAdminListView = ({\r\n items,\r\n compact,\r\n onClick\r\n}: IMesageListViewProps): React.ReactElement => {\r\n const { t } = useTranslation();\r\n const { headerSortProps, rows } = useTableConfiguration(items);\r\n const styles = useListViewStyles();\r\n\r\n const statuses = getMessageStatusesMap(t);\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {t('Common.MessageListView.MessageLeaderHeader')}\r\n \r\n \r\n {t('Common.MessageListView.MessageTitleHeader')}\r\n \r\n \r\n {t('Common.MessageListView.StatusHeader')}\r\n \r\n \r\n {t('Common.MessageListView.ImportanceLevelHeader')}\r\n \r\n \r\n {t('Common.MessageListView.CreationDateHeader')}\r\n \r\n \r\n \r\n \r\n {rows.map((c) => (\r\n onClick(c.item)}\r\n className={mergeClasses(\r\n styles.row,\r\n c.item.critical ? styles.critical : ''\r\n )}\r\n >\r\n \r\n \r\n \r\n {c.item.critical && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {c.item.leader.name}\r\n \r\n \r\n \r\n \r\n {c.item.title}\r\n \r\n \r\n \r\n \r\n {statuses[c.item.status]}\r\n \r\n \r\n \r\n \r\n {parseCriticalToImportance(c.item.critical, t).title}\r\n \r\n \r\n \r\n \r\n {moment(c.item.messagePublishingDateUTC).format('DD/MM/yyyy')}\r\n \r\n \r\n \r\n ))}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default MessageAdminListView;\r\n","import {\r\n TableColumnDefinition,\r\n TableColumnId,\r\n TableHeaderCellProps,\r\n TableRowData,\r\n createTableColumn,\r\n useTableFeatures,\r\n useTableSort\r\n} from '@fluentui/react-components';\r\nimport { MessageInstanceBasicContentModel } from '@models/data/MessageInstanceBasicContentModel';\r\n\r\nexport type MessageInstanceBasicContentModelKeys = keyof MessageInstanceBasicContentModel;\r\n\r\nconst titleColumnId: MessageInstanceBasicContentModelKeys = 'title';\r\nconst categoryColumnId: MessageInstanceBasicContentModelKeys = 'categories';\r\nconst messagePublishingDateUTCColumnId: MessageInstanceBasicContentModelKeys =\r\n 'messagePublishingDateUTC';\r\nconst strageticFocusId: MessageInstanceBasicContentModelKeys = 'strategicFocus';\r\nconst importanceLevelColumnId: MessageInstanceBasicContentModelKeys = 'critical';\r\n\r\nconst columns: TableColumnDefinition[] = [\r\n createTableColumn({\r\n columnId: titleColumnId,\r\n compare: (a, b) => {\r\n return a.title.localeCompare(b.title);\r\n }\r\n }),\r\n createTableColumn({\r\n columnId: categoryColumnId,\r\n compare: (a, b) => {\r\n return a.categories.length.toString().localeCompare(b.categories.length.toString());\r\n }\r\n }),\r\n\r\n createTableColumn({\r\n columnId: strageticFocusId,\r\n compare: (a, b) => {\r\n return a.strategicFocus.title.localeCompare(b.strategicFocus.title);\r\n }\r\n }),\r\n\r\n createTableColumn({\r\n columnId: importanceLevelColumnId,\r\n compare: (a, b) => {\r\n return `${b.critical}`.localeCompare(`${a.critical}`);\r\n }\r\n }),\r\n createTableColumn({\r\n columnId: messagePublishingDateUTCColumnId,\r\n compare: (a, b) => {\r\n return +(a.messagePublishingDateUTC > b.messagePublishingDateUTC);\r\n }\r\n })\r\n];\r\n\r\nconst useTableConfiguration = (\r\n items: MessageInstanceBasicContentModel[]\r\n): {\r\n rows: TableRowData[];\r\n headerSortProps: (columnId: TableColumnId) => Partial;\r\n} => {\r\n const {\r\n getRows,\r\n sort: { getSortDirection, toggleColumnSort, sort }\r\n } = useTableFeatures(\r\n {\r\n columns,\r\n items\r\n },\r\n [useTableSort({})]\r\n );\r\n\r\n const headerSortProps = (columnId: TableColumnId): Partial => ({\r\n onClick: (e: React.MouseEvent) => {\r\n toggleColumnSort(e, columnId);\r\n },\r\n\r\n sortDirection: getSortDirection(columnId)\r\n });\r\n\r\n const rows = sort(getRows());\r\n\r\n return {\r\n rows,\r\n headerSortProps\r\n };\r\n};\r\n\r\nconst ColumnsIds = {\r\n titleColumnId,\r\n categoryColumnId,\r\n messagePublishingDateUTCColumnId,\r\n strageticFocusId,\r\n importanceLevelColumnId\r\n};\r\n\r\nexport { useTableConfiguration, ColumnsIds };\r\n","import * as React from 'react';\r\nimport { MessageInstanceBasicContentModel } from '@models/data/MessageInstanceBasicContentModel';\r\n\r\nimport {\r\n TableBody,\r\n TableCell,\r\n TableRow,\r\n Table,\r\n TableHeader,\r\n TableHeaderCell,\r\n TableCellLayout,\r\n Text,\r\n mergeClasses\r\n} from '@fluentui/react-components';\r\nimport moment from 'moment';\r\n\r\nimport { Warning24Filled } from '@fluentui/react-icons';\r\nimport { ColumnsIds, useTableConfiguration } from './commonListView.config';\r\nimport { parseCriticalToImportance } from '@configs/importanceLevels';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useListViewStyles } from './../MessageListView.styles';\r\n\r\nexport interface IMesageListViewProps {\r\n items: MessageInstanceBasicContentModel[];\r\n onClick: (item: MessageInstanceBasicContentModel) => void;\r\n compact?: boolean;\r\n}\r\n\r\nexport const CommonMessageListView = ({\r\n items,\r\n onClick,\r\n compact\r\n}: IMesageListViewProps): React.ReactElement => {\r\n const { t } = useTranslation();\r\n const { headerSortProps, rows } = useTableConfiguration(items);\r\n const styles = useListViewStyles();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {t('Common.MessageListView.MessageTitleHeader')}\r\n \r\n \r\n {t('Common.MessageListView.MessagePreviewHeader')}\r\n \r\n \r\n {t('Common.MessageListView.CategoriesHeader')}\r\n \r\n \r\n {t('Common.MessageListView.StrategicFocusHeader')}\r\n \r\n \r\n {t('Common.MessageListView.ImportanceLevelHeader')}\r\n \r\n \r\n {t('Common.MessageListView.CreationDateHeader')}\r\n \r\n \r\n \r\n \r\n {rows.map((c) => (\r\n onClick(c.item)}\r\n className={mergeClasses(\r\n styles.row,\r\n c.item.critical ? styles.critical : ''\r\n )}\r\n >\r\n \r\n \r\n \r\n {c.item.critical && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {c.item.title}\r\n \r\n \r\n \r\n \r\n {c.item.previewText}\r\n \r\n \r\n \r\n \r\n {c.item.categories.map((o) => o.title).join('; ')}\r\n \r\n \r\n \r\n \r\n {c.item.strategicFocus.title}\r\n \r\n \r\n \r\n \r\n {parseCriticalToImportance(c.item.critical, t).title}\r\n \r\n \r\n \r\n \r\n {moment(c.item.messagePublishingDateUTC).format('DD/MM/yyyy')}\r\n \r\n \r\n \r\n ))}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CommonMessageListView;\r\n","export enum MessagesViewType {\r\n\tList,\r\n\tTiles\r\n}\r\n","import { makeStyles, tokens, shorthands } from '@configs/theme/v9';\r\n\r\nexport const useTabletActionsBarStyles = makeStyles({\r\n ///NAVIGATION\r\n navigationZonesContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n flexDirection: 'row',\r\n flexWrap: 'nowrap',\r\n alignItems: 'center',\r\n boxSizing: 'border-box',\r\n ...shorthands.padding('0px', '20px'),\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n height: '48px',\r\n boxShadow: tokens.customShadow1\r\n },\r\n navigationMainZoneContainer: {\r\n marginLeft: '-10px',\r\n flexGrow: '1'\r\n },\r\n navigationSecondaryZoneContainer: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexDirection: 'row',\r\n flexWrap: 'nowrap',\r\n columnGap: '8px'\r\n },\r\n ///ZONES Wrapper\r\n zonesContainer: {\r\n display: 'block',\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n paddingTop: '12px',\r\n boxShadow: tokens.customShadow2\r\n },\r\n\r\n ///MAIN ZONE\r\n mainZoneContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n flexDirection: 'column',\r\n flexWrap: 'nowrap',\r\n rowGap: '12px',\r\n alignItems: 'center',\r\n width: '100%',\r\n ...shorthands.padding('0px', '20px'),\r\n boxSizing: 'border-box'\r\n },\r\n\r\n mainZoneActionContainer: {\r\n display: 'block',\r\n width: '100%',\r\n boxSizing: 'border-box'\r\n },\r\n\r\n ///SECONDARY ZONE\r\n\r\n secondaryZoneContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n flexDirection: 'row',\r\n flexWrap: 'nowrap',\r\n columnGap: '12px',\r\n alignItems: 'center',\r\n minHeight: '48px',\r\n ...shorthands.padding('0px', '20px'),\r\n marginTop: '12px'\r\n },\r\n secondaryZoneMessageContainer: {\r\n display: 'block',\r\n ...shorthands.overflow('hidden'),\r\n textOverflow: 'ellipsis'\r\n },\r\n\r\n secondaryZoneMessage: {\r\n fontWeight: 400\r\n }\r\n});\r\n","import { makeStyles, tokens, shorthands } from '@configs/theme/v9';\r\n\r\nexport const useIconStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n justifyContent: 'start',\r\n flexWrap: 'nowrap',\r\n ...shorthands.gap('4px')\r\n },\r\n icon: {\r\n display: 'block',\r\n width: '32px',\r\n height: '32px',\r\n cursor: 'pointer',\r\n fill: tokens.colorBrandForegroundLink,\r\n fontSize: '20px'\r\n },\r\n\r\n active: {\r\n color: tokens.colorBrandForegroundLinkHover\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { MessagesViewType } from '@models/ui/MessagesViewType';\r\nimport { useIconStyles } from './MessageViewSwitcher.styles';\r\nimport {\r\n AppsList24Filled,\r\n Grid24Filled,\r\n AppsList24Regular,\r\n Grid24Regular\r\n} from '@fluentui/react-icons';\r\nimport { Button, mergeClasses } from '@fluentui/react-components';\r\n\r\nexport interface IViewSwitcherProps {\r\n active: MessagesViewType;\r\n onViewChange: (view: MessagesViewType) => void;\r\n}\r\n\r\nconst ViewSwitcher = ({ active, onViewChange }: IViewSwitcherProps): React.ReactElement => {\r\n const styles = useIconStyles();\r\n\r\n const handleSwitchView = (newView: MessagesViewType): void => {\r\n onViewChange(newView);\r\n };\r\n\r\n return (\r\n
\r\n handleSwitchView(MessagesViewType.Tiles)}\r\n icon={active === MessagesViewType.Tiles ? : }\r\n />\r\n handleSwitchView(MessagesViewType.List)}\r\n icon={\r\n active === MessagesViewType.List ? : \r\n }\r\n />\r\n
\r\n );\r\n};\r\n\r\nexport default ViewSwitcher;\r\n","import { makeStyles, tokens, shorthands } from '@configs/theme/v9';\r\n\r\nexport const useNavBarStyles = makeStyles({\r\n root: {\r\n alignItems: 'center',\r\n overflowX: 'auto',\r\n maxWidth: '100%',\r\n height: 'fit-content',\r\n minWidth: '150px',\r\n width: '100%'\r\n },\r\n tagGroup: {\r\n ...shorthands.overflow('hidden'),\r\n zIndex: 0, // stop the browser resize handle from piercing the overflow menu\r\n height: '100%',\r\n width: 'calc(100% - 0px)',\r\n maxWidth: '100%',\r\n boxSizing: 'content-box',\r\n justifyContent: 'left',\r\n display: 'flex',\r\n flexWrap: 'nowrap',\r\n alignItems: 'center'\r\n },\r\n tag: {\r\n cursor: 'pointer',\r\n ':hover': {\r\n color: tokens.colorCompoundBrandForeground1Hover,\r\n backgroundColor: tokens.colorBrandBackground2Hover\r\n }\r\n },\r\n activeTag: {\r\n backgroundColor: tokens.colorNeutralBackground5Selected,\r\n color: tokens.colorNeutralForeground3BrandSelected\r\n }\r\n});\r\n\r\nexport const useOverflowMenuStyles = makeStyles({\r\n menu: {\r\n backgroundColor: tokens.colorNeutralBackground1\r\n },\r\n menuButton: {\r\n alignSelf: 'center'\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport {\r\n Button,\r\n Menu,\r\n MenuItemLink,\r\n MenuList,\r\n MenuPopover,\r\n MenuTrigger,\r\n Overflow,\r\n OverflowItem,\r\n Tab,\r\n TabList,\r\n Tag,\r\n TagGroup,\r\n mergeClasses,\r\n useIsOverflowItemVisible,\r\n useOverflowMenu\r\n} from '@fluentui/react-components';\r\nimport { bundleIcon, MoreHorizontalFilled, MoreHorizontalRegular } from '@fluentui/react-icons';\r\n\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useNavigate } from 'react-router-dom';\r\n\r\nimport { useNavBarStyles, useOverflowMenuStyles } from './NavigationBar.styles';\r\nimport { useAppDispatch, useStateSelector } from '@state';\r\nimport { routes } from '@configs/pages';\r\nimport { resetFiltersState } from '@state/filters';\r\n\r\nconst MoreHorizontal = bundleIcon(MoreHorizontalFilled, MoreHorizontalRegular);\r\n\r\nconst getRoute = (): string =>\r\n window.location.href.replace(window.location.origin, '').toLowerCase();\r\n\r\ntype Tab = {\r\n title: string;\r\n route: string;\r\n};\r\n\r\ntype OverflowMenuItemProps = {\r\n tab: Tab;\r\n onClick: (tabId: string) => void;\r\n};\r\n\r\ntype OverflowMenuProps = {\r\n tabs: Tab[];\r\n onTabSelect: (tabId: string) => void;\r\n};\r\n\r\nconst OverflowMenuItem = (props: OverflowMenuItemProps): React.ReactElement | null => {\r\n const { tab, onClick } = props;\r\n const isVisible = useIsOverflowItemVisible(tab.route);\r\n if (isVisible) {\r\n return null;\r\n }\r\n\r\n const onClickLink: React.MouseEventHandler | undefined = (e) => {\r\n e.preventDefault();\r\n onClick(tab.route);\r\n };\r\n\r\n return (\r\n \r\n
{tab.title}
\r\n
\r\n );\r\n};\r\n\r\nconst OverflowMenu = ({ tabs, onTabSelect }: OverflowMenuProps): React.ReactElement | null => {\r\n const { ref, isOverflowing, overflowCount } = useOverflowMenu();\r\n\r\n const styles = useOverflowMenuStyles();\r\n\r\n if (!isOverflowing) {\r\n return null;\r\n }\r\n return (\r\n \r\n \r\n }\r\n aria-label={`${overflowCount} more tabs`}\r\n role=\"tab\"\r\n />\r\n \r\n \r\n \r\n {tabs.map((tab) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport interface INavigationBarProps {\r\n asTags?: boolean;\r\n}\r\n\r\nexport const NavigationBar = ({ asTags }: INavigationBarProps): React.ReactElement => {\r\n const styles = useNavBarStyles();\r\n const { t } = useTranslation();\r\n const navigate = useNavigate();\r\n const dispatch = useAppDispatch();\r\n const currentUserPermissions = useStateSelector((x) => x.app.currentUserPermissions);\r\n\r\n const [selectedRoute, setSelectedRoute] = React.useState(getRoute());\r\n\r\n const onTabSelect = React.useCallback(\r\n (route: string) => {\r\n setSelectedRoute(route);\r\n dispatch(resetFiltersState());\r\n navigate(route);\r\n },\r\n [navigate, dispatch]\r\n );\r\n\r\n const tabs: Tab[] = [\r\n {\r\n route: routes.myMessages,\r\n title: t('MyMessagesPage.PageTitle')\r\n },\r\n {\r\n route: routes.moreMessages,\r\n title: t('MoreMessagesPage.PageTitle')\r\n }\r\n ];\r\n\r\n if (currentUserPermissions.admin) {\r\n tabs.push({\r\n route: routes.admin,\r\n title: t('AdminPage.PageTitle')\r\n });\r\n }\r\n\r\n if (currentUserPermissions.approver) {\r\n tabs.push({\r\n route: routes.designatedApprover,\r\n title: t('DesignatedApproverPage.PageTitle')\r\n });\r\n }\r\n\r\n return (\r\n
\r\n \r\n {asTags ? (\r\n \r\n {tabs.map((tab) => (\r\n \r\n onTabSelect(tab.route)}\r\n appearance={selectedRoute === tab.route ? 'outline' : 'filled'}\r\n >\r\n {tab.title}\r\n \r\n \r\n ))}\r\n \r\n \r\n ) : (\r\n onTabSelect(d.value as string)}\r\n >\r\n {tabs.map((tab) => (\r\n \r\n {tab.title}\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 { useTabletActionsBarStyles } from './TabletActionBar.styles';\r\nimport { Text, mergeClasses } from '@fluentui/react-components';\r\nimport { MessagesViewType } from '@models/ui/MessagesViewType';\r\nimport MessageViewSwitcher from '@components/MessageViewSwitcher';\r\nimport { NavigationBar } from '@components/NavigationBar';\r\n\r\nexport interface ITabletActionsBarProps {\r\n mainZoneMessage?: string;\r\n secondaryZoneMessage?: string;\r\n searchComponent?: React.ReactElement;\r\n additionalActionsComponent?: React.ReactElement;\r\n filtersComponent?: React.ReactElement;\r\n extraFiltersComponent?: React.ReactElement;\r\n filtersTagsComponent?: React.ReactElement;\r\n viewConfig?: {\r\n current: MessagesViewType;\r\n onChange: (view: MessagesViewType) => void;\r\n };\r\n}\r\n\r\nconst TabletActionsBar = ({\r\n additionalActionsComponent,\r\n extraFiltersComponent,\r\n filtersComponent,\r\n searchComponent,\r\n secondaryZoneMessage,\r\n viewConfig\r\n}: ITabletActionsBarProps): React.ReactElement => {\r\n const styles = useTabletActionsBarStyles();\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n {(!!filtersComponent && filtersComponent) || <>}\r\n {(!!additionalActionsComponent && additionalActionsComponent) || <>}\r\n
\r\n
\r\n\r\n
\r\n
\r\n {!!extraFiltersComponent && (\r\n
\r\n {extraFiltersComponent}\r\n
\r\n )}\r\n {!!searchComponent && (\r\n
{searchComponent}
\r\n )}\r\n
\r\n
\r\n
\r\n {!!secondaryZoneMessage && (\r\n \r\n {secondaryZoneMessage}\r\n \r\n )}\r\n
\r\n {!!viewConfig && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default TabletActionsBar;\r\n","import { makeStyles, tokens, shorthands } from '@configs/theme/v9';\r\nexport const useFullActionsBarStyles = makeStyles({\r\n ///NAVIGATION\r\n navigationZonesContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n flexDirection: 'row',\r\n flexWrap: 'nowrap',\r\n alignItems: 'center',\r\n boxSizing: 'border-box',\r\n ...shorthands.padding('0px', '20px'),\r\n height: '48px'\r\n },\r\n navigationMainZoneContainer: {\r\n marginLeft: '-10px',\r\n flexGrow: '1'\r\n },\r\n\r\n ///ZONES Wrapper\r\n zonesContainer: {\r\n display: 'block',\r\n width: '100%',\r\n boxSizing: 'border-box',\r\n boxShadow: tokens.customShadow2\r\n },\r\n ///MAIN ZONE\r\n mainZoneContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n flexDirection: 'row',\r\n flexWrap: 'nowrap',\r\n columnGap: '2px',\r\n alignItems: 'center',\r\n boxSizing: 'border-box',\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n height: '48px',\r\n ...shorthands.padding('0px', '20px'),\r\n boxShadow: tokens.customShadow1\r\n },\r\n mainZoneMessage: {\r\n fontWeight: 600,\r\n color: tokens.colorBrandForeground1\r\n },\r\n mainZoneMessageContainer: {\r\n display: 'flex',\r\n ...shorthands.overflow('hidden'),\r\n textOverflow: 'ellipsis',\r\n ...shorthands.flex(1)\r\n },\r\n\r\n mainZoneActionsContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexWrap: 'nowrap',\r\n ...shorthands.gap('12px'),\r\n ...shorthands.overflow('hidden')\r\n },\r\n\r\n ///SECONDARY ZONE\r\n\r\n secondaryZoneContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n flexDirection: 'row',\r\n flexWrap: 'nowrap',\r\n columnGap: '12px',\r\n alignItems: 'center',\r\n minHeight: '48px',\r\n ...shorthands.padding('0px', '20px')\r\n },\r\n secondaryZoneMessageContainer: {\r\n display: 'block',\r\n ...shorthands.overflow('hidden'),\r\n textOverflow: 'ellipsis'\r\n },\r\n\r\n secondaryZoneMessage: {\r\n fontWeight: 400\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { useFullActionsBarStyles } from './FullActionsBar.styles';\r\nimport { Text } from '@fluentui/react-components';\r\nimport { MessagesViewType } from '@models/ui/MessagesViewType';\r\nimport MessageViewSwitcher from '@components/MessageViewSwitcher';\r\nimport { NavigationBar } from '@components/NavigationBar';\r\n\r\nexport interface IFullActionsBarProps {\r\n mainZoneMessage?: string;\r\n secondaryZoneMessage?: string;\r\n searchComponent?: React.ReactElement;\r\n additionalActionsComponent?: React.ReactElement;\r\n filtersComponent?: React.ReactElement;\r\n extraFiltersComponent?: React.ReactElement;\r\n filtersTagsComponent?: React.ReactElement;\r\n viewConfig?: {\r\n current: MessagesViewType;\r\n onChange: (view: MessagesViewType) => void;\r\n };\r\n}\r\n\r\nconst FullActionBar = ({\r\n additionalActionsComponent,\r\n extraFiltersComponent,\r\n filtersComponent,\r\n filtersTagsComponent,\r\n mainZoneMessage,\r\n searchComponent,\r\n secondaryZoneMessage,\r\n viewConfig\r\n}: IFullActionsBarProps): React.ReactElement => {\r\n const styles = useFullActionsBarStyles();\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {!!mainZoneMessage && (\r\n \r\n {mainZoneMessage}\r\n \r\n )}\r\n
\r\n
\r\n {!!filtersTagsComponent &&
{filtersTagsComponent}
}\r\n {!!extraFiltersComponent &&
{extraFiltersComponent}
}\r\n {!!filtersComponent &&
{filtersComponent}
}\r\n {!!searchComponent &&
{searchComponent}
}\r\n {!!additionalActionsComponent &&
{additionalActionsComponent}
}\r\n
\r\n
\r\n
\r\n
\r\n {!!secondaryZoneMessage && (\r\n \r\n {secondaryZoneMessage}\r\n \r\n )}\r\n
\r\n {!!viewConfig && (\r\n \r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default FullActionBar;\r\n","import { makeStyles, tokens, shorthands } from '@configs/theme/v9';\r\n\r\nexport const useMobileActionsBarStyles = makeStyles({\r\n ///NAVIGATION\r\n navigationZonesContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n flexDirection: 'row',\r\n flexWrap: 'nowrap',\r\n alignItems: 'center',\r\n boxSizing: 'border-box',\r\n ...shorthands.padding('0px', '8px'),\r\n height: '42px'\r\n },\r\n navigationMainZoneContainer: {\r\n flexGrow: '1',\r\n maxWidth: '100%'\r\n },\r\n navigationSecondaryZoneContainer: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n flexDirection: 'row',\r\n flexWrap: 'nowrap',\r\n columnGap: '8px'\r\n },\r\n ///ZONES Wrapper\r\n zonesContainer: {\r\n display: 'block',\r\n width: '100%',\r\n boxSizing: 'border-box'\r\n },\r\n\r\n ///MAIN ZONE\r\n mainZoneContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n flexDirection: 'row',\r\n flexWrap: 'nowrap',\r\n columnGap: '2px',\r\n alignItems: 'center',\r\n boxSizing: 'border-box',\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n height: '48px',\r\n ...shorthands.padding('0px', '8px')\r\n },\r\n mainZoneActionContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexWrap: 'nowrap',\r\n ...shorthands.gap('12px'),\r\n ...shorthands.overflow('hidden')\r\n },\r\n mainSubZoneContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n flexDirection: 'column',\r\n flexWrap: 'nowrap',\r\n rowGap: '12px',\r\n alignItems: 'center',\r\n width: '100%',\r\n ...shorthands.padding('0px', '8px'),\r\n boxSizing: 'border-box',\r\n marginTop: '12px',\r\n paddingBottom: '12px',\r\n boxShadow: tokens.customShadow1\r\n },\r\n\r\n mainSubZoneActionContainer: {\r\n display: 'block',\r\n width: '100%',\r\n boxSizing: 'border-box'\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { useMobileActionsBarStyles } from './MobileActionsBar.styles';\r\nimport { MessagesViewType } from '@models/ui/MessagesViewType';\r\nimport MessageViewSwitcher from '@components/MessageViewSwitcher';\r\nimport { NavigationBar } from '@components/NavigationBar';\r\nimport { Divider } from '@fluentui/react-components';\r\n\r\nexport interface IMobileActionsBarProps {\r\n mainZoneMessage?: string;\r\n searchComponent?: React.ReactElement;\r\n additionalActionsComponent?: React.ReactElement;\r\n filtersComponent?: React.ReactElement;\r\n extraFiltersComponent?: React.ReactElement;\r\n filtersTagsComponent?: React.ReactElement;\r\n viewConfig?: {\r\n current: MessagesViewType;\r\n onChange: (view: MessagesViewType) => void;\r\n };\r\n}\r\n\r\nconst MobileActionsBar = ({\r\n additionalActionsComponent,\r\n extraFiltersComponent,\r\n filtersComponent,\r\n searchComponent,\r\n viewConfig\r\n}: IMobileActionsBarProps): React.ReactElement => {\r\n const styles = useMobileActionsBarStyles();\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 {!!viewConfig && (\r\n \r\n )}\r\n
\r\n
\r\n {!!filtersComponent && filtersComponent}\r\n {!!additionalActionsComponent && additionalActionsComponent}\r\n
\r\n
\r\n \r\n
\r\n {!!extraFiltersComponent && (\r\n
\r\n {extraFiltersComponent}\r\n
\r\n )}\r\n {!!searchComponent && (\r\n
{searchComponent}
\r\n )}\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default MobileActionsBar;\r\n","import * as React from 'react';\r\nimport { MessagesViewType } from '@models/ui/MessagesViewType';\r\nimport { SizeModeType } from '@models/ui/SizeModeType';\r\nimport TabletActionsBar from './TabletActionBar';\r\nimport FullActionBar from './FullActionBar';\r\nimport MobileActionsBar from './MobileActionBar';\r\n\r\nexport interface IActionsBarProps {\r\n mainZoneMessage?: string;\r\n secondaryZoneMessage?: string;\r\n searchComponent?: React.ReactElement;\r\n additionalActionsComponent?: React.ReactElement;\r\n filtersComponent?: React.ReactElement;\r\n extraFiltersComponent?: React.ReactElement;\r\n filtersTagsComponent?: React.ReactElement;\r\n viewConfig?: {\r\n current: MessagesViewType;\r\n onChange: (view: MessagesViewType) => void;\r\n };\r\n sizeMode: SizeModeType;\r\n}\r\n\r\nconst ActionsBar = (props: IActionsBarProps): React.ReactElement => {\r\n switch (props.sizeMode) {\r\n case SizeModeType.Full: {\r\n return ;\r\n }\r\n case SizeModeType.Tablet: {\r\n return ;\r\n }\r\n default: {\r\n return ;\r\n }\r\n }\r\n};\r\n\r\nexport default ActionsBar;\r\n","import { makeStyles, tokens, shorthands, typographyStyles } from '@configs/theme/v9';\r\n\r\nexport const useFiltersPanelStyles = makeStyles({\r\n filterButton: {\r\n backgroundColor: tokens.colorNeutralBackground6\r\n },\r\n iconOnlyBtn: {\r\n width: '36px',\r\n maxWidth: '36px',\r\n height: '32px'\r\n },\r\n panel: {\r\n width: '100%',\r\n maxWidth: '320px'\r\n },\r\n root: {\r\n display: 'flex',\r\n ...shorthands.gap('12px'),\r\n ...shorthands.padding('0px'),\r\n flexDirection: 'column',\r\n boxSizing: 'border-box',\r\n overflowX: 'hidden',\r\n overflowY: 'hidden'\r\n },\r\n footer: {\r\n display: 'flex',\r\n width: '100%',\r\n justifyContent: 'space-between'\r\n },\r\n header: {\r\n display: 'flex',\r\n width: '100%',\r\n justifyContent: 'space-between',\r\n flexWrap: 'nowrap',\r\n ...shorthands.gap('12px'),\r\n ...shorthands.padding('12px', '24px'),\r\n boxSizing: 'border-box'\r\n },\r\n headerText: {\r\n ...typographyStyles.title3,\r\n ...shorthands.margin('0px')\r\n },\r\n headerCloseBtn: {\r\n flexWrap: 'nowrap',\r\n whiteSpace: 'nowrap'\r\n },\r\n rightActions: {\r\n ...shorthands.gap('12px'),\r\n flexWrap: 'nowrap',\r\n display: 'flex'\r\n }\r\n});\r\n","import { makeStyles, tokens, shorthands, typographyStyles } from '@configs/theme/v9';\r\n\r\nexport const useGroupSelectStyles = makeStyles({\r\n root: {\r\n display: 'grid',\r\n gridTemplateRows: 'repeat(1fr)',\r\n justifyItems: 'start'\r\n },\r\n label: {\r\n ...typographyStyles.subtitle2,\r\n marginBottom: '12px'\r\n },\r\n checkBoxGrid: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n width: '100%',\r\n marginLeft: '0px',\r\n '>label': {\r\n paddingLeft: '0px'\r\n },\r\n ':hover': {\r\n color: tokens.colorNeutralForeground1Hover,\r\n backgroundColor: tokens.colorNeutralBackground1Hover,\r\n '> .fui-Checkbox__indicator': {\r\n ...shorthands.borderColor(tokens.colorNeutralForeground1Hover)\r\n }\r\n }\r\n }\r\n});\r\n","import { Checkbox, CheckboxOnChangeData, Divider, Label } from '@fluentui/react-components';\r\nimport * as React from 'react';\r\nimport { useGroupSelectStyles } from './GroupSelect.styles';\r\nimport { TitleValuePair } from '@models/data/TitleValuePair';\r\n\r\nexport interface IGroupSelectProps {\r\n options: TitleValuePair[];\r\n selectedItems?: TitleValuePair[];\r\n showDivider?: boolean;\r\n label?: string;\r\n onChanged: (selected: TitleValuePair[]) => void;\r\n}\r\n\r\nconst GroupSelect = ({\r\n label,\r\n options,\r\n selectedItems,\r\n onChanged,\r\n showDivider\r\n}: IGroupSelectProps): React.ReactElement => {\r\n const styles = useGroupSelectStyles();\r\n\r\n const selectedIds = selectedItems?.map((i) => i.id) || [];\r\n\r\n const onChange = (\r\n _ev: React.ChangeEvent,\r\n data: CheckboxOnChangeData,\r\n item: TitleValuePair\r\n ): void => {\r\n const value = data.checked as boolean;\r\n if (value) {\r\n if (selectedIds.findIndex((i) => i === item.id) < 0) {\r\n onChanged([...(selectedItems || []), item]);\r\n }\r\n } else {\r\n const idx = selectedIds.findIndex((i) => i === item.id);\r\n if (idx >= 0) {\r\n onChanged((selectedItems || []).filter((c) => c.id !== item.id));\r\n }\r\n }\r\n };\r\n\r\n return (\r\n
\r\n {!!label && (\r\n \r\n )}\r\n {options.map((option) => (\r\n x === option.id) !== -1}\r\n onChange={(e, v) => onChange(e, v, option)}\r\n label={option.title}\r\n labelPosition=\"before\"\r\n as=\"input\"\r\n className={styles.checkBoxGrid}\r\n />\r\n ))}\r\n {!!showDivider && }\r\n
\r\n );\r\n};\r\n\r\nexport default GroupSelect;\r\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\r\nimport * as React from 'react';\r\nimport { ITheme } from '@fluentui/react';\r\nexport const AppThemeV8Context = React.createContext(undefined!);","import { makeStyles, typographyStyles } from '@configs/theme/v9';\r\n\r\nexport const useDropdownStyles = makeStyles({\r\n root: {\r\n display: 'grid',\r\n gridTemplateRows: 'repeat(1fr)',\r\n justifyItems: 'start',\r\n maxWidth: '100%',\r\n width: '100%'\r\n },\r\n label: {\r\n ...typographyStyles.subtitle2,\r\n marginBottom: '12px'\r\n },\r\n dropdown: {\r\n maxWidth: '100%',\r\n display: 'block',\r\n width: '100%'\r\n }\r\n});\r\n","import { Dropdown, Option, Label, OptionGroup } from '@fluentui/react-components';\r\nimport * as React from 'react';\r\nimport { useDropdownStyles } from './Dropdown.styles';\r\nimport { CustomOptionDataModel } from '@models/data/CustomOptionDataModel';\r\n\r\nexport interface IDropdownOptions {\r\n options?: CustomOptionDataModel[];\r\n optionGroups?: { label: string; options: CustomOptionDataModel[] }[];\r\n selectedValue?: CustomOptionDataModel;\r\n label?: string;\r\n placeholder?: string;\r\n ariaLabel?: string;\r\n showAll?: boolean;\r\n onChanged: (selected: CustomOptionDataModel | undefined) => void;\r\n}\r\n\r\nconst DropDownPicker = ({\r\n label,\r\n options,\r\n selectedValue,\r\n onChanged,\r\n optionGroups,\r\n ariaLabel,\r\n placeholder\r\n}: IDropdownOptions): React.ReactElement => {\r\n const styles = useDropdownStyles();\r\n\r\n const useGroups = !!optionGroups;\r\n\r\n const onPeriodSelect = React.useCallback(\r\n (key: string | undefined) => {\r\n if (!!key) {\r\n let values: CustomOptionDataModel[] = [];\r\n if (!!optionGroups) {\r\n optionGroups.forEach((c) => {\r\n values.push(...c.options);\r\n });\r\n } else if (!!options) {\r\n values = options;\r\n }\r\n\r\n const p = values.find((c) => c.id === parseInt(key!));\r\n onChanged(p);\r\n } else {\r\n onChanged(undefined);\r\n }\r\n },\r\n [options, onChanged, optionGroups]\r\n );\r\n\r\n return (\r\n
\r\n {!!label && (\r\n \r\n )}\r\n onPeriodSelect(data.optionValue)}\r\n aria-label={ariaLabel}\r\n placeholder={placeholder}\r\n appearance=\"filled-darker\"\r\n selectedOptions={!!selectedValue ? [selectedValue.id.toString()] : []}\r\n defaultValue={selectedValue?.title}\r\n >\r\n {useGroups\r\n ? optionGroups.map((gr, i) => (\r\n \r\n {gr.options.map((p) => (\r\n \r\n {p.title}\r\n \r\n ))}\r\n \r\n ))\r\n : (options || []).map((p) => (\r\n \r\n {p.title}\r\n \r\n ))}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default DropDownPicker;\r\n","import { MessagePeriodData } from '@api/models';\r\n\r\nexport const getPredefinedPeriods = (translation: (key: string) => string): MessagePeriodData[] => {\r\n const now = new Date();\r\n const last28Days = new Date(new Date().setDate(-28));\r\n const last12Months = new Date(new Date().setMonth(-12));\r\n const last3Months = new Date(new Date().setMonth(-3));\r\n\r\n return [\r\n {\r\n id: -100,\r\n title: translation('Periods.Last4Weeks'),\r\n endDateUTC: now.toJSON(),\r\n startDateUTC: last28Days.toJSON()\r\n },\r\n {\r\n id: -200,\r\n title: translation('Periods.Last3Months'),\r\n endDateUTC: now.toJSON(),\r\n startDateUTC: last3Months.toJSON()\r\n },\r\n {\r\n id: -300,\r\n title: translation('Periods.Last12Months'),\r\n endDateUTC: now.toJSON(),\r\n startDateUTC: last12Months.toJSON()\r\n }\r\n ];\r\n};\r\n\r\nexport const getPeriodsFilterConfig = (\r\n translation: (key: string) => string,\r\n loaded: MessagePeriodData[]\r\n): { label: string; options: MessagePeriodData[] }[] => {\r\n return [\r\n {\r\n label: translation('Periods.PeriodsGroups'),\r\n options: loaded\r\n },\r\n {\r\n label: translation('Periods.CalendarGroups'),\r\n options: getPredefinedPeriods(translation)\r\n }\r\n ];\r\n};\r\n","import { makeStyles, shorthands, typographyStyles } from '@configs/theme/v9';\r\n\r\nexport const useStyles = makeStyles({\r\n root: {\r\n display: 'grid',\r\n gridTemplateRows: 'repeat(1fr)',\r\n justifyItems: 'start',\r\n maxWidth: '400px',\r\n width: '100%'\r\n },\r\n field: {\r\n display: 'grid',\r\n justifyItems: 'start',\r\n ...shorthands.gap('2px')\r\n },\r\n combobox: {\r\n width: '100%',\r\n maxWidth: '100%'\r\n },\r\n label: {\r\n ...typographyStyles.subtitle2,\r\n marginBottom: '12px'\r\n },\r\n option: {\r\n maxWidth: '100%',\r\n width: '100%',\r\n overflowX: 'hidden',\r\n overflowY: 'unset',\r\n '>span:not(.fui-Avatar)': {\r\n overflowX: 'hidden',\r\n textOverflow: 'ellipsis',\r\n width: '100%'\r\n }\r\n },\r\n avatar: {\r\n width: '32px'\r\n },\r\n hidden: {\r\n display: 'none'\r\n },\r\n noResults: {\r\n width: '100%'\r\n },\r\n selected: {\r\n maxWidth: '100%',\r\n width: '100%'\r\n },\r\n selectedFullWidth: {\r\n maxWidth: '100%',\r\n width: 'auto'\r\n }\r\n});\r\n","import { apiClient, cachedApiClient } from '@api/services/client';\r\nimport { UserBasicData } from '@api/models/UserBasicData';\r\nimport { UserPhotoModel } from '@api/models/UserPhotoModel';\r\n\r\nexport const searchUsers = async (text: string | undefined): Promise => {\r\n const url = `/api/users/search/all?searchText=${text}`;\r\n const response = await apiClient.get(encodeURI(url));\r\n return response.data;\r\n};\r\n\r\nexport const searchLeaders = async (text: string | undefined): Promise => {\r\n const url = `/api/users/search/leaders?searchText=${text}`;\r\n const response = await apiClient.get(encodeURI(url));\r\n return response.data;\r\n};\r\n\r\nexport const searchSLTUsers = async (text: string | undefined): Promise => {\r\n const url = `/api/users/search/slt?searchText=${text}`;\r\n const response = await apiClient.get(encodeURI(url));\r\n return response.data;\r\n};\r\n\r\nexport const getUserPhoto = async (userId: string): Promise => {\r\n const url = `/api/users/${userId}/photo/base64`;\r\n const response = await cachedApiClient.get(encodeURI(url), false);\r\n return response.data?.dataUri;\r\n};\r\n\r\nexport const getUsersPhotos = async (userAADIds: string[]): Promise> => {\r\n const url = `/api/users/photos/base64`;\r\n const photos = new Map();\r\n\r\n if (userAADIds.length) {\r\n const response = await apiClient.post(\r\n encodeURI(url),\r\n JSON.stringify({ userAADIds }),\r\n false\r\n );\r\n\r\n if (response.data) {\r\n response.data.forEach((photoData) => {\r\n photos.set(photoData.userId, photoData.dataUri);\r\n });\r\n }\r\n }\r\n\r\n return photos;\r\n};\r\n","import * as React from 'react';\r\nimport {\r\n Combobox,\r\n Option,\r\n useId,\r\n Persona,\r\n Label,\r\n InteractionTag,\r\n InteractionTagPrimary,\r\n InteractionTagSecondary,\r\n Avatar,\r\n mergeClasses\r\n} from '@fluentui/react-components';\r\nimport type { ComboboxProps } from '@fluentui/react-components';\r\nimport { useStyles } from './PeoplePicker.styles';\r\nimport { UserBasicData } from '@api/models/UserBasicData';\r\nimport { useDebouncedCallback } from 'use-debounce';\r\nimport { Search16Regular } from '@fluentui/react-icons';\r\nimport { getUsersPhotos } from '@api/services/users';\r\n\r\nexport interface IPeoplePickerProps {\r\n onSearchUsers: (text: string | undefined) => Promise;\r\n onSelectUser: (user: UserBasicData | undefined) => void;\r\n label?: string | undefined;\r\n placeholder?: string | undefined;\r\n selectedUser?: UserBasicData;\r\n noResultText?: string | undefined;\r\n className?: string | undefined;\r\n fullWidthMode?: boolean;\r\n preload?: boolean;\r\n}\r\n\r\nexport const PeoplePicker = ({\r\n onSearchUsers,\r\n label,\r\n onSelectUser,\r\n selectedUser,\r\n placeholder,\r\n className,\r\n noResultText,\r\n fullWidthMode,\r\n preload\r\n}: IPeoplePickerProps): React.ReactElement => {\r\n const comboId = useId('combo-peoplePicker');\r\n const styles = useStyles();\r\n\r\n const [tempValue, setTempValue] = React.useState(selectedUser?.name);\r\n const [suggestions, setSuggestions] = React.useState([]);\r\n const [loading, setLoading] = React.useState(false);\r\n const [preloaded, setPreloaded] = React.useState(false);\r\n const [userPhotos, setUserPhotos] = React.useState>(new Map());\r\n\r\n const onSearchValues = React.useCallback(\r\n async (searchVal: string | undefined) => {\r\n const res = await onSearchUsers(searchVal);\r\n setSuggestions(res);\r\n setLoading(false);\r\n setPreloaded(true);\r\n },\r\n [onSearchUsers]\r\n );\r\n const onSearchValuesDebounced = useDebouncedCallback(onSearchValues, 600);\r\n\r\n const onChange: ComboboxProps['onChange'] = React.useCallback(\r\n (event: React.ChangeEvent) => {\r\n setLoading(true);\r\n const value = event.target.value;\r\n setTempValue(value);\r\n onSearchValuesDebounced(value);\r\n },\r\n [onSearchValuesDebounced]\r\n );\r\n\r\n const onOptionSelect: ComboboxProps['onOptionSelect'] = (event, data) => {\r\n const key = data.optionValue;\r\n if (!!key) {\r\n const p = suggestions.find((c) => c.id === parseInt(key));\r\n if (p) {\r\n p.photo = userPhotos.get(p?.aadId ?? '');\r\n }\r\n onSelectUser(p);\r\n }\r\n };\r\n\r\n const onResetUser = (): void => {\r\n setTempValue(undefined);\r\n onSelectUser(undefined);\r\n };\r\n\r\n React.useEffect(() => {\r\n (async () => {\r\n const photos = await getUsersPhotos(suggestions.map((x) => x.aadId));\r\n setUserPhotos(photos);\r\n })();\r\n }, [suggestions]);\r\n\r\n React.useEffect(() => {\r\n setTempValue(selectedUser?.name);\r\n }, [selectedUser]);\r\n\r\n React.useEffect(() => {\r\n if (preload && !preloaded) {\r\n onSearchValues(tempValue || '');\r\n }\r\n });\r\n\r\n if (preload && !preloaded) {\r\n return <>;\r\n }\r\n\r\n return (\r\n
\r\n {!!label && (\r\n \r\n )}\r\n {selectedUser ? (\r\n \r\n \r\n }\r\n primaryText={selectedUser.name}\r\n secondaryText={selectedUser.upn}\r\n >\r\n \r\n \r\n ) : (\r\n }\r\n listbox={{\r\n // className: loading || (!tempValue && !preload) ? styles.hidden : ''\r\n className: loading || (!tempValue && !preload) ? styles.hidden : ''\r\n }}\r\n freeform\r\n >\r\n {suggestions.map((s, i) => (\r\n }\r\n >\r\n \r\n \r\n ))}\r\n {!!noResultText && suggestions.length === 0 ? (\r\n \r\n ) : null}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { Button, FluentProvider, Text, mergeClasses } from '@fluentui/react-components';\r\nimport { Panel } from '@fluentui/react';\r\nimport { useAppDispatch, useStateSelector } from '@state';\r\nimport { applyMessageFilters, setPanelVisibility, setLeaderFilter } from '@state/filters';\r\nimport { useFiltersPanelStyles } from './MessageFiltersPanel.styles';\r\nimport { useTranslation } from 'react-i18next';\r\nimport GroupSelect from '@components/controls/common/GroupSelect';\r\nimport { Filter16Filled, Dismiss24Regular } from '@fluentui/react-icons';\r\nimport { useAppV8Theme } from '@configs/theme/v8';\r\nimport { useAppV9Theme } from '@configs/theme/v9';\r\nimport { getImportanceLevels } from '@configs/importanceLevels';\r\nimport DropDownPicker from '@components/controls/common/Dropdown';\r\nimport { getPeriodsFilterConfig } from '@configs/predefinedPeriods';\r\nimport { PeoplePicker } from '@components/controls/common/PeoplePicker';\r\nimport { searchLeaders } from '@api/services/users';\r\nimport { getMessageStatuses } from '@configs/messageStatuses';\r\n\r\nexport interface IMessageFiltersPanelActionProps {\r\n applyFiltersCallback(): void;\r\n adminMode?: boolean;\r\n iconOnlyButton?: boolean;\r\n}\r\n\r\nexport const MessageFiltersPanelAction = ({\r\n applyFiltersCallback,\r\n adminMode,\r\n iconOnlyButton\r\n}: IMessageFiltersPanelActionProps): React.ReactElement => {\r\n const { t } = useTranslation();\r\n const styles = useFiltersPanelStyles();\r\n const themeV8 = useAppV8Theme();\r\n const themeV9 = useAppV9Theme();\r\n\r\n const importanceLevels = React.useMemo(() => getImportanceLevels(t), [t]);\r\n const messageStatuses = React.useMemo(() => getMessageStatuses(t), [t]);\r\n\r\n const dispatch = useAppDispatch();\r\n const {\r\n messageFilters: appliedFilters,\r\n filteredLeader,\r\n showFiltersPanel: showPanel\r\n } = useStateSelector((x) => x.filters);\r\n\r\n const {\r\n categories: allCategories,\r\n strategicFocuses: allStrategicFocuses,\r\n periods: allPeriods\r\n } = useStateSelector((x) => x.meta);\r\n\r\n const [periodGroups] = React.useState(getPeriodsFilterConfig(t, allPeriods));\r\n\r\n const [filtersConfig, setFiltersConfig] = React.useState(appliedFilters);\r\n const [selectedLeader, setSelectedLeader] = React.useState(filteredLeader);\r\n\r\n const closePanel: () => void = React.useCallback(() => {\r\n setFiltersConfig(appliedFilters);\r\n if (adminMode) {\r\n setSelectedLeader(filteredLeader);\r\n }\r\n dispatch(setPanelVisibility(false));\r\n }, [dispatch, adminMode, appliedFilters, filteredLeader]);\r\n\r\n const applyChanges: () => void = React.useCallback(() => {\r\n dispatch(applyMessageFilters(filtersConfig));\r\n dispatch(setLeaderFilter(selectedLeader));\r\n applyFiltersCallback();\r\n }, [filtersConfig, dispatch, applyFiltersCallback, selectedLeader]);\r\n\r\n const cleanFilters = React.useCallback(() => {\r\n setFiltersConfig({\r\n categories: [],\r\n strategicFocuses: [],\r\n importanceLevels: [],\r\n selectedPeriod: undefined,\r\n statuses: []\r\n });\r\n if (adminMode) {\r\n setSelectedLeader(undefined);\r\n }\r\n }, [adminMode]);\r\n\r\n const onRenderFooterContent = React.useCallback(\r\n () => (\r\n \r\n
\r\n
\r\n \r\n {t('Common.FiltersPanel.ClearAllLabel')}\r\n \r\n
\r\n
\r\n \r\n \r\n {t('Common.FiltersPanel.ApplyLabel')}\r\n \r\n
\r\n
\r\n
\r\n ),\r\n [themeV9, applyChanges, closePanel, cleanFilters, t, styles.footer, styles.rightActions]\r\n );\r\n\r\n const onRenderHeader = React.useCallback(\r\n () => (\r\n \r\n
\r\n \r\n {t('Common.FiltersPanel.Label')}\r\n \r\n }\r\n className={styles.headerCloseBtn}\r\n onClick={() => dispatch(setPanelVisibility(false))}\r\n />\r\n
\r\n
\r\n ),\r\n [themeV9, dispatch, t, styles.header, styles.headerText, styles.headerCloseBtn]\r\n );\r\n\r\n React.useEffect(() => {\r\n setFiltersConfig(appliedFilters);\r\n }, [appliedFilters]);\r\n\r\n React.useEffect(() => {\r\n setSelectedLeader(filteredLeader);\r\n }, [filteredLeader]);\r\n\r\n const anyFiltered =\r\n appliedFilters.categories?.length > 0 ||\r\n appliedFilters.strategicFocuses?.length > 0 ||\r\n !!appliedFilters.selectedPeriod ||\r\n appliedFilters.importanceLevels.length > 0 ||\r\n (!!adminMode && !!filteredLeader);\r\n\r\n return (\r\n <>\r\n
\r\n }\r\n iconPosition=\"before\"\r\n className={mergeClasses(\r\n anyFiltered ? '' : styles.filterButton,\r\n iconOnlyButton ? styles.iconOnlyBtn : ''\r\n )}\r\n onClick={() => dispatch(setPanelVisibility(true))}\r\n >\r\n {!iconOnlyButton ? t('Common.FiltersPanel.FilterButtonLabel') || '' : undefined}\r\n \r\n \r\n \r\n
\r\n {adminMode && (\r\n \r\n )}\r\n \r\n setFiltersConfig({\r\n ...filtersConfig,\r\n selectedPeriod: selected\r\n })\r\n }\r\n optionGroups={periodGroups}\r\n selectedValue={filtersConfig.selectedPeriod}\r\n label={t('Common.FiltersPanel.PeriodLabel') || ''}\r\n />\r\n {adminMode && (\r\n \r\n setFiltersConfig({\r\n ...filtersConfig,\r\n statuses: selected\r\n })\r\n }\r\n options={messageStatuses}\r\n key={'messageStatuses'}\r\n label={t('Common.FiltersPanel.StatusesLabel') || ''}\r\n selectedItems={filtersConfig.statuses}\r\n showDivider={true}\r\n />\r\n )}\r\n \r\n setFiltersConfig({\r\n ...filtersConfig,\r\n categories: selected\r\n })\r\n }\r\n options={allCategories}\r\n key={'categories'}\r\n label={t('Common.FiltersPanel.CategoriesLabel') || ''}\r\n selectedItems={filtersConfig.categories}\r\n showDivider={true}\r\n />\r\n \r\n setFiltersConfig({\r\n ...filtersConfig,\r\n strategicFocuses: selected\r\n })\r\n }\r\n options={allStrategicFocuses}\r\n key={'StrategicFocuses'}\r\n label={t('Common.FiltersPanel.StrategicFocus') || ''}\r\n selectedItems={filtersConfig.strategicFocuses}\r\n showDivider={true}\r\n />\r\n \r\n setFiltersConfig({\r\n ...filtersConfig,\r\n importanceLevels: selected\r\n })\r\n }\r\n options={importanceLevels}\r\n key={'importanceLevels'}\r\n label={t('Common.FiltersPanel.ImportanceLevelsLabel') || ''}\r\n selectedItems={filtersConfig.importanceLevels}\r\n showDivider={false}\r\n />\r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n};\r\n","import { useContext } from 'react';\r\nimport { AppThemeV8Context } from './context';\r\nimport { ITheme } from '@fluentui/react';\r\n\r\nexport function useAppV8Theme(): ITheme {\r\n return useContext(AppThemeV8Context) as ITheme;\r\n}","import { useContext } from 'react';\r\nimport { AppThemeV9Context } from './context';\r\nimport { AppTheme } from './AppTheme';\r\n\r\nexport function useAppV9Theme(): AppTheme {\r\n return useContext(AppThemeV9Context);\r\n}\r\n","import { apiClient } from '@api/services/client';\r\nimport { FeedbackData } from '@api/models/FeedbackData';\r\n\r\nexport const postFeedback = async (feedback: FeedbackData): Promise => {\r\n const url = '/api/feedback';\r\n await apiClient.post(encodeURI(url), JSON.stringify(feedback));\r\n};\r\n","import { makeStyles, tokens, shorthands } from '@configs/theme/v9';\r\n\r\nexport const useFeedbackDialogStyles = makeStyles({\r\n dialogContent: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n color: tokens.colorNeutralForeground3\r\n },\r\n field: {\r\n '>label': {\r\n color: tokens.colorNeutralForeground3\r\n }\r\n },\r\n btn: { whiteSpace: 'nowrap', height: '32px' },\r\n iconBtn: {\r\n whiteSpace: 'nowrap',\r\n height: '32px',\r\n width: '36px',\r\n maxWidth: '36px',\r\n backgroundColor: tokens.colorNeutralBackground6\r\n },\r\n text: {\r\n ...shorthands.margin(0)\r\n }\r\n});\r\n","import React, { useState } from 'react';\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogBody,\r\n DialogContent,\r\n DialogSurface,\r\n DialogTitle,\r\n DialogTrigger,\r\n Dropdown,\r\n Field,\r\n Option,\r\n Textarea,\r\n Text,\r\n TextareaOnChangeData,\r\n useId,\r\n TextareaProps,\r\n DropdownProps,\r\n ButtonProps\r\n} from '@fluentui/react-components';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { postFeedback } from '@api/services/feedback';\r\nimport { useFeedbackDialogStyles } from './FeedbackDialogAction.styles';\r\nimport { getfeedbackTypes } from '@configs/feedbackTypes';\r\nimport { TitleValuePair } from '@models/data/TitleValuePair';\r\nimport { Dismiss24Regular, Comment16Regular } from '@fluentui/react-icons';\r\n\r\nexport interface IFeedbackDialogActionProps {\r\n iconOnlyButton?: boolean;\r\n dialogTriggerButtonProps?: ButtonProps;\r\n dialogTriggerButtonText?: string | null;\r\n defaultFeedbackType?: string;\r\n}\r\n\r\nexport const FeedbackDialogAction = ({\r\n iconOnlyButton,\r\n dialogTriggerButtonProps,\r\n dialogTriggerButtonText,\r\n defaultFeedbackType\r\n}: IFeedbackDialogActionProps): React.ReactElement => {\r\n const feedbackTypeFieldId = useId('feedback-type');\r\n const feedbackContentFieldId = useId('feedback-content');\r\n\r\n const styles = useFeedbackDialogStyles();\r\n const { t } = useTranslation();\r\n const feedbackTypes = getfeedbackTypes(t);\r\n\r\n const [feedbackType, setFeedbackType] = useState | undefined>(\r\n feedbackTypes.find((x) => x.id === defaultFeedbackType) ?? feedbackTypes[0]\r\n );\r\n const [open, setOpen] = React.useState(false);\r\n const [feedbackContent, setFeedbackContent] = useState('');\r\n const [isLoading, setIsLoading] = useState(false);\r\n\r\n const onTextChange: TextareaProps['onChange'] = (_, data: TextareaOnChangeData) => {\r\n setFeedbackContent(data.value);\r\n };\r\n\r\n const onOptionSelect: DropdownProps['onOptionSelect'] = (_, data) => {\r\n const key = data.optionValue;\r\n setFeedbackType(feedbackTypes.find((c) => c.id === key));\r\n };\r\n\r\n const onClose = (): void => {\r\n setOpen(false);\r\n setIsLoading(false);\r\n setFeedbackContent('');\r\n setFeedbackType(feedbackTypes[0]);\r\n };\r\n\r\n const onSubmit = async (): Promise => {\r\n try {\r\n setIsLoading(true);\r\n await postFeedback({ feedbackType: feedbackType!.id, feedbackContent });\r\n onClose();\r\n } catch {\r\n console.error('Error when submitting a feedback form!');\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n return (\r\n setOpen(data.open)}>\r\n \r\n {iconOnlyButton ? (\r\n }\r\n iconPosition=\"before\"\r\n >\r\n ) : (\r\n \r\n {dialogTriggerButtonText ?? t('Common.Feedback.ProvideFeedbackLabel')}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n }\r\n >\r\n {t('Common.Feedback.Dialog.Title')}\r\n \r\n \r\n \r\n {t('Common.Feedback.Dialog.SubText1')}\r\n \r\n \r\n {t('Common.Feedback.Dialog.SubText2')}\r\n \r\n \r\n {t('Common.Feedback.Dialog.SubText3')}\r\n \r\n \r\n \r\n {feedbackTypes.map((option) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {t('Common.Feedback.Dialog.Submit')}\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 { TitleValuePair } from '@models/data/TitleValuePair';\r\n\r\nexport const getfeedbackTypes = (\r\n translation: (key: string) => string\r\n): TitleValuePair[] => {\r\n return [\r\n {\r\n id: 'Tool feedback',\r\n title: translation('Common.Feedback.Dialog.FeedbackType.AppFeedbackOption')\r\n },\r\n {\r\n id: 'Message feedback',\r\n title: translation('Common.Feedback.Dialog.FeedbackType.MessageContentOption')\r\n }\r\n ];\r\n};\r\n","import { makeStyles } from '@configs/theme/v9';\r\n\r\nexport const useSearchStyles = makeStyles({\r\n icon: {\r\n cursor: 'pointer'\r\n },\r\n iconCtn: {\r\n display: 'flex'\r\n }\r\n});\r\n","import { Input, InputOnChangeData, useId } from '@fluentui/react-components';\r\nimport { Search16Regular } from '@fluentui/react-icons';\r\nimport * as React from 'react';\r\nimport { useDebouncedCallback } from 'use-debounce';\r\nimport { useSearchStyles } from './Search.styles';\r\n\r\nexport interface ISearchProps {\r\n placeholder: string;\r\n value: string | undefined;\r\n ariaLabel?: string | undefined;\r\n onChanged: (value: string) => void;\r\n iconBefore?: boolean;\r\n iconAfter?: boolean;\r\n dark?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst Search = ({\r\n placeholder,\r\n value,\r\n onChanged,\r\n ariaLabel,\r\n className,\r\n iconAfter\r\n}: ISearchProps): React.ReactElement => {\r\n const searchId = useId('content-after');\r\n const [sbVal, setSBVal] = React.useState(value);\r\n\r\n const styles = useSearchStyles();\r\n\r\n const runSearch = useDebouncedCallback(\r\n React.useCallback(async () => {\r\n onChanged(sbVal || '');\r\n }, [onChanged, sbVal]),\r\n 700\r\n );\r\n\r\n const onChange = (_: React.ChangeEvent, data: InputOnChangeData): void => {\r\n setSBVal(data.value);\r\n runSearch();\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n ) : undefined\r\n }\r\n contentBefore={\r\n !iconAfter ? (\r\n \r\n ) : undefined\r\n }\r\n id={searchId}\r\n />\r\n );\r\n};\r\n\r\nexport default Search;\r\n","import { makeStyles, tokens } from '@configs/theme/v9';\r\n\r\nexport const useMessageSearchboxStyles = makeStyles({\r\n mobile: {\r\n backgroundColor: tokens.colorNeutralBackground6,\r\n width: '100%'\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport Search from '@components/controls/common/Search';\r\nimport { useAppDispatch, useStateSelector } from '@state';\r\nimport { setSearchBoxValue } from '@state/filters';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { SizeModeType } from '@models/ui/SizeModeType';\r\nimport { useMessageSearchboxStyles } from './MessageSearchBox.styles';\r\n\r\nexport interface IMessageSearchBoxProps {\r\n searchValueChangedCallback: () => void;\r\n}\r\n\r\nexport const MessageSearchBox = ({\r\n searchValueChangedCallback\r\n}: IMessageSearchBoxProps): React.ReactElement => {\r\n const dispatch = useAppDispatch();\r\n const { t } = useTranslation();\r\n const value = useStateSelector((x) => x.filters.searchBoxValue);\r\n const sizeMode = useStateSelector((x) => x.app.sizeMode);\r\n\r\n const onChanged = React.useCallback(\r\n (v: string) => {\r\n dispatch(setSearchBoxValue(v));\r\n searchValueChangedCallback();\r\n },\r\n [dispatch, searchValueChangedCallback]\r\n );\r\n\r\n const styles = useMessageSearchboxStyles();\r\n\r\n return sizeMode === SizeModeType.Full ? (\r\n \r\n ) : (\r\n \r\n );\r\n};\r\n","import { makeResetStyles } from \"@configs/theme/v9\";\r\n\r\nexport default makeResetStyles({\r\n flex: 1,\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '100%'\r\n});","import * as React from 'react';\r\nimport getClass from './Loader.styles';\r\n\r\nimport { Spinner } from '@fluentui/react-components';\r\n\r\nexport interface ILoaderProps {\r\n message: string;\r\n}\r\n\r\nconst Loader = ({ message }: ILoaderProps): React.ReactElement => (\r\n\r\n
\r\n \r\n
\r\n);\r\n\r\nexport default React.memo(Loader);\r\n","import { makeStyles } from '@fluentui/react-components';\r\n\r\nexport const useLayoutStyles = makeStyles({\r\n container: {\r\n height: 'inherit',\r\n overflowY: 'hidden'\r\n },\r\n // navWrapper: {\r\n // height: '45px'\r\n // },\r\n page: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: 'transparent',\r\n height: '100%'\r\n }\r\n});\r\n","import { makeStyles, tokens, shorthands } from '@configs/theme/v9';\r\n\r\nexport const useMessageContentStepStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n ...shorthands.gap('24px'),\r\n ...shorthands.padding('24px'),\r\n flexDirection: 'row',\r\n boxSizing: 'border-box'\r\n },\r\n leftColumn: {\r\n maxWidth: '400px',\r\n width: '100%',\r\n textAlign: 'center'\r\n },\r\n fullWidthSection: {\r\n maxWidth: '100%',\r\n width: '100%',\r\n textAlign: 'center'\r\n },\r\n mainColumn: {\r\n rowGap: '16px',\r\n ...shorthands.flex(1),\r\n flexDirection: 'column',\r\n display: 'flex'\r\n },\r\n contentWrapper: {\r\n rowGap: '16px',\r\n ...shorthands.flex(1),\r\n flexDirection: 'column',\r\n display: 'flex'\r\n },\r\n messageContent: {\r\n backgroundColor: `${tokens.colorNeutralBackground1} !important`,\r\n color: `${tokens.colorNeutralForeground1} !important`,\r\n '& *': {\r\n backgroundColor: `inherit !important`,\r\n color: 'inherit !important'\r\n }\r\n }\r\n});\r\n","import { makeStyles, shorthands } from '@configs/theme/v9';\r\n\r\nexport const useMessageInteractionActionsStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n flexWrap: 'wrap',\r\n ...shorthands.gap('12px'),\r\n flexDirection: 'row',\r\n boxSizing: 'border-box'\r\n },\r\n fullWidth: {\r\n '& button': {\r\n minWidth: '100%',\r\n maxWidth: '100%'\r\n }\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { useMessageInteractionActionsStyles } from './MessageInteractionActions.styles';\r\nimport { mergeClasses } from '@fluentui/react-components';\r\n\r\nexport interface MessageInteractionActionProps {\r\n fullWidth?: boolean;\r\n}\r\nconst MessageInteractionActions: React.FC<\r\n React.PropsWithChildren\r\n> = ({ fullWidth, children }) => {\r\n const styles = useMessageInteractionActionsStyles();\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nexport default MessageInteractionActions;\r\n","import { makeStyles, shorthands, tokens, typographyStyles } from '@configs/theme/v9';\r\n\r\nexport const useMessageAdditionalInfoStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n listStyleType: 'none',\r\n textAlign: 'left',\r\n ...shorthands.padding(0)\r\n },\r\n messageInfoItem: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'start',\r\n flexWrap: 'wrap',\r\n ...shorthands.gap('8px'),\r\n ...shorthands.padding('8px', 0)\r\n },\r\n messageInfoItemTitle: {\r\n ...typographyStyles.subtitle2\r\n },\r\n messageInfoItemValue: {\r\n ...typographyStyles.body2\r\n },\r\n userInfo: {\r\n '& .fui-Persona__primaryText': {\r\n ...typographyStyles.body2,\r\n lineHeight: tokens.lineHeightBase500\r\n }\r\n }\r\n});\r\n","import { getUserPhoto } from '@api/services/users';\r\nimport { Persona, PersonaProps } from '@fluentui/react-components';\r\nimport * as React from 'react';\r\n\r\nexport interface IUserInfoProps extends PersonaProps {\r\n userId?: string;\r\n photoDataUri?: string;\r\n}\r\n\r\nconst UserInfo: React.FC = ({ userId, photoDataUri, ...props }) => {\r\n const [userPhotoSrc, setUserPhotoSrc] = React.useState();\r\n\r\n React.useEffect(() => {\r\n (async () => {\r\n if (userId) {\r\n const response = await getUserPhoto(userId);\r\n if (response) {\r\n setUserPhotoSrc(response);\r\n }\r\n }\r\n })();\r\n }, [userId]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default UserInfo;\r\n","import React from 'react';\r\nimport { Text } from '@fluentui/react-components';\r\nimport { useMessageAdditionalInfoStyles } from './MessageAdditionalInfoSection.styles';\r\nimport UserInfo from '@components/UserInfo';\r\nimport moment from 'moment';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { getMessageStatusesMap } from '@configs/messageStatuses';\r\nimport { MessageInstanceFullContentModel } from '@models/data/MessageInstanceFullContentModel';\r\nimport { MessageInstanceLeaderStatus, MessageInstanceStatus } from '@api/models';\r\nimport { getMessageLeaderStatusesMap } from '@configs/messageLeaderStatuses';\r\n\r\ninterface MessageAdditionalInfoSectionProps {\r\n message: MessageInstanceFullContentModel;\r\n isAdminView?: boolean;\r\n}\r\n\r\nconst getPublishDate = (date?: Date): string =>\r\n date ? moment(new Date(date)).format('DD/MM/yyyy') : '';\r\n\r\nexport const MessageAdditionalInfoSection: React.FC = ({\r\n message,\r\n isAdminView\r\n}) => {\r\n const styles = useMessageAdditionalInfoStyles();\r\n const { t } = useTranslation();\r\n const showStatus = isAdminView || message.status === MessageInstanceStatus.Completed;\r\n const statuses = showStatus ? getMessageStatusesMap(t) : {};\r\n const leaderStatuses = isAdminView ? getMessageLeaderStatusesMap(t) : {};\r\n return (\r\n
    \r\n {isAdminView && (\r\n <>\r\n
  • \r\n \r\n {t('MessageInteraction.MessageAdditionalInfoSection.Manager')}:\r\n \r\n \r\n
  • \r\n
  • \r\n \r\n {t('MessageInteraction.MessageAdditionalInfoSection.ManagerStatus')}:\r\n \r\n\r\n \r\n {leaderStatuses[message.leaderStatus]}{' '}\r\n \r\n {message.cascadedBy &&\r\n message.leaderStatus ===\r\n MessageInstanceLeaderStatus.CascadedByLeader && (\r\n \r\n )}\r\n
  • \r\n \r\n )}\r\n
  • \r\n \r\n {t('MessageInteraction.MessageAdditionalInfoSection.Created')}:\r\n \r\n \r\n {getPublishDate(message.messagePublishingDateUTC)}\r\n \r\n
  • \r\n
  • \r\n \r\n {isAdminView\r\n ? t('MessageInteraction.MessageAdditionalInfoSection.ManagerDateReceived')\r\n : t('MessageInteraction.MessageAdditionalInfoSection.YouDateReceived')}\r\n :\r\n \r\n \r\n {getPublishDate(message.instancePublishingDateUTC)}\r\n \r\n
  • \r\n {showStatus && (\r\n
  • \r\n \r\n {t('MessageInteraction.MessageAdditionalInfoSection.Status')}:\r\n \r\n\r\n \r\n {statuses[message.status]}\r\n \r\n
  • \r\n )}\r\n
\r\n );\r\n};\r\n","import { MessageInstanceLeaderStatus } from '@api/models';\r\nimport { TitleValuePair } from '../models/data/TitleValuePair';\r\n\r\nexport const getMessageLeaderStatuses = (\r\n translation: (key: string) => string\r\n): TitleValuePair[] => [\r\n {\r\n id: MessageInstanceLeaderStatus.Cascaded,\r\n title: translation('MessageInstanceLeaderStatus.Cascaded')\r\n },\r\n {\r\n id: MessageInstanceLeaderStatus.CascadedByLeader,\r\n title: translation('MessageInstanceLeaderStatus.CascadedByLeader')\r\n },\r\n {\r\n id: MessageInstanceLeaderStatus.Irrelevant,\r\n title: translation('MessageInstanceLeaderStatus.Irrelevant')\r\n }\r\n];\r\n\r\nexport const getMessageLeaderStatusesMap = (\r\n translation: (key: string) => string\r\n): { [x: number]: string } => {\r\n return {\r\n [MessageInstanceLeaderStatus.Cascaded]: translation('MessageInstanceLeaderStatus.Cascaded'),\r\n [MessageInstanceLeaderStatus.CascadedByLeader]: translation(\r\n 'MessageInstanceLeaderStatus.CascadedByLeader'\r\n ),\r\n [MessageInstanceLeaderStatus.Irrelevant]: translation(\r\n 'MessageInstanceLeaderStatus.Irrelevant'\r\n )\r\n };\r\n};\r\n","import { makeStyles, tokens } from '@configs/theme/v9';\r\n\r\nexport const useConfirmationDialogActionStyles = makeStyles({\r\n dialogContent: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n color: tokens.colorNeutralForeground3\r\n }\r\n});\r\n","import {\r\n Button,\r\n ButtonProps,\r\n Dialog,\r\n DialogActions,\r\n DialogBody,\r\n DialogContent,\r\n DialogSurface,\r\n DialogTitle,\r\n DialogTrigger\r\n} from '@fluentui/react-components';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useConfirmationDialogActionStyles } from './ConfirmationDialogAction.styles';\r\n\r\ninterface IConfirmationDialogButtonProps extends React.PropsWithChildren {\r\n dialogTriggerButtonProps?: ButtonProps;\r\n dialogTriggerButtonLabel?: string | null;\r\n dialogTitle: string;\r\n isConfirmReady?: () => boolean;\r\n onConfirm?: () => void;\r\n}\r\n\r\nexport const ConfirmationDialogAction: React.FC = ({\r\n dialogTriggerButtonProps,\r\n dialogTriggerButtonLabel,\r\n dialogTitle,\r\n isConfirmReady,\r\n onConfirm,\r\n children\r\n}) => {\r\n const styles = useConfirmationDialogActionStyles();\r\n const [open, setOpen] = React.useState(false);\r\n const { t } = useTranslation();\r\n return (\r\n setOpen(data.open)}>\r\n \r\n \r\n \r\n \r\n \r\n {dialogTitle}\r\n {children}\r\n \r\n \r\n \r\n {t('Common.ConfirmationDialog.ConfirmButton')}\r\n \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 { SubtractCircle24Regular } from '@fluentui/react-icons';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Text, Textarea, TextareaOnChangeData, TextareaProps } from '@fluentui/react-components';\r\nimport { useAppDispatch } from '@state';\r\nimport { ConfirmationDialogAction } from '@components/ConfirmationDialogAction';\r\nimport { markMessageIrrelevant } from '@state/selectedMessage';\r\n\r\nconst MarkIrrelevantAction = (): React.ReactElement => {\r\n const dispatch = useAppDispatch();\r\n const { t } = useTranslation();\r\n\r\n const [feedbackText, setFeedbackText] = React.useState('');\r\n\r\n const onfeedbackTextChange: TextareaProps['onChange'] = React.useCallback(\r\n (ev: React.ChangeEvent, data: TextareaOnChangeData) => {\r\n setFeedbackText(data.value);\r\n },\r\n []\r\n );\r\n\r\n const onMarkAsIrrelevant = React.useCallback(async (): Promise => {\r\n dispatch(markMessageIrrelevant(feedbackText));\r\n }, [dispatch, feedbackText]);\r\n\r\n return (\r\n \r\n }}\r\n isConfirmReady={() => !!feedbackText}\r\n onConfirm={onMarkAsIrrelevant}\r\n >\r\n {t('ConfirmationDialog.IrrelevantDetailsLabel')}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default MarkIrrelevantAction;\r\n","import { makeStyles } from '@configs/theme/v9';\r\n\r\nexport const useMessageImageStyles = makeStyles({\r\n imgCtn: { position: 'relative', width: '100%', paddingTop: '100%' },\r\n\r\n img: {\r\n display: 'block',\r\n opacity: '1',\r\n width: '100%',\r\n height: '100%',\r\n objectFit: 'cover',\r\n position: 'absolute',\r\n left: '50%',\r\n top: '50%',\r\n transform: 'translate(-50%, -50%)'\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { useMessageImageStyles } from './MessageImage.styles';\r\n\r\nexport interface IMessageImageProps {\r\n imageUrl?: string;\r\n imageTextAlt?: string;\r\n}\r\n\r\nconst MessageImage = ({ imageUrl: url, imageTextAlt }: IMessageImageProps): React.ReactElement => {\r\n const styles = useMessageImageStyles();\r\n\r\n return !!url ? (\r\n
\r\n {imageTextAlt}\r\n
\r\n ) : (\r\n <>\r\n );\r\n};\r\n\r\nexport default MessageImage;\r\n","import { makeStyles, tokens, shorthands, typographyStyles } from '@configs/theme/v9';\r\n\r\nexport const useMessageBannerStyles = makeStyles({\r\n critical: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n color: tokens.criticalMessageColor,\r\n backgroundColor: tokens.criticalCustomBackground,\r\n ...shorthands.borderRadius('4px'),\r\n ...shorthands.border('1px', 'solid', tokens.colorPaletteMarigoldBorderActive),\r\n ...typographyStyles.subtitle2,\r\n fontWeight: 600,\r\n ...shorthands.padding('12px', '16px'),\r\n '&>span': {\r\n ...shorthands.padding('0', '8px'),\r\n fontWeight: '600'\r\n }\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { useMessageBannerStyles } from './MessageBanner.styles';\r\nimport { Warning24Filled } from '@fluentui/react-icons';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Text } from '@fluentui/react-components';\r\n\r\nexport interface IMessageContentStepProps {\r\n critical: boolean;\r\n}\r\n\r\nexport const MessageBanner = ({ critical }: IMessageContentStepProps): React.ReactElement => {\r\n const styles = useMessageBannerStyles();\r\n const { t } = useTranslation();\r\n\r\n return critical ? (\r\n
\r\n \r\n \r\n {t('MessageInteraction.CriticalMessage')}\r\n \r\n
\r\n ) : (\r\n <>\r\n );\r\n};\r\n","import { makeStyles } from '@configs/theme/v9';\r\n\r\nexport const useFindOutMoreButtonStyles = makeStyles({\r\n findOutMoreSection: {\r\n width: '100%'\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { useFindOutMoreButtonStyles } from './FindOutMoreButton.styles';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Button, mergeClasses } from '@fluentui/react-components';\r\nimport { SizeModeType } from '@models/ui/SizeModeType';\r\n\r\nexport interface IFindOutMoreButton {\r\n className?: string;\r\n actionLinkUrl?: string;\r\n actionLabel?: string;\r\n sizeMode: SizeModeType;\r\n}\r\nexport const FindOutMoreButton = ({\r\n actionLabel,\r\n actionLinkUrl,\r\n className,\r\n sizeMode\r\n}: IFindOutMoreButton): React.ReactElement => {\r\n const styles = useFindOutMoreButtonStyles();\r\n const { t } = useTranslation();\r\n const onFindOutMoreClick = React.useCallback((url: string): void => {\r\n if (!!url) {\r\n window.open(url, '_blank');\r\n }\r\n }, []);\r\n\r\n return (\r\n
\r\n {!!actionLinkUrl && (\r\n onFindOutMoreClick(actionLinkUrl)}\r\n >\r\n {actionLabel ?? t('MessageInteraction.ContentStep.FindoutMoreButton')}\r\n \r\n )}\r\n
\r\n );\r\n};\r\n","import { makeStyles, shorthands, tokens, typographyStyles } from '@configs/theme/v9';\r\nexport const useLeaderAnnotationStyles = makeStyles({\r\n annotationSection: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%'\r\n },\r\n\r\n annotationHeader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'start',\r\n flexWrap: 'wrap'\r\n },\r\n annotationText: {\r\n ...shorthands.padding('8px', 0),\r\n ...typographyStyles.body2\r\n },\r\n userInfo: {\r\n '& .fui-Persona__primaryText': {\r\n ...typographyStyles.body2,\r\n lineHeight: tokens.lineHeightBase500\r\n }\r\n },\r\n text: {\r\n ...shorthands.padding(0, '8px'),\r\n ...typographyStyles.subtitle2,\r\n lineHeight: tokens.lineHeightBase500\r\n }\r\n});\r\n","import { MessageInstanceFullContentModel } from '@models/data/MessageInstanceFullContentModel';\r\nimport * as React from 'react';\r\nimport { useLeaderAnnotationStyles } from './LeaderAnnotation.styles';\r\nimport { Text, mergeClasses } from '@fluentui/react-components';\r\nimport UserInfo from '@components/UserInfo';\r\n\r\nexport interface ILeaderAnnotationProps {\r\n message: MessageInstanceFullContentModel;\r\n}\r\n\r\nexport const LeaderAnnotation = ({ message }: ILeaderAnnotationProps): React.ReactElement => {\r\n const styles = useLeaderAnnotationStyles();\r\n return !!message.annotationText && message.cascadedBy?.aadId ? (\r\n
\r\n \r\n \r\n \r\n added the following:\r\n \r\n \r\n \r\n
\r\n ) : (\r\n <>\r\n );\r\n};\r\n","import { MessageInstanceFullContentModel } from '@models/data/MessageInstanceFullContentModel';\r\nimport * as React from 'react';\r\nimport { useMessageContentStepStyles } from './MessageContentStep.styles';\r\nimport {\r\n ArrowCircleRight24Regular,\r\n DismissCircle24Regular,\r\n PersonFeedback24Regular\r\n} from '@fluentui/react-icons';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Button } from '@fluentui/react-components';\r\nimport MessageInteractionActions from '../MessageInteractionActions';\r\nimport { useAppDispatch } from '@state';\r\nimport { cancelMessageInteraction } from '@state/selectedMessage';\r\nimport { FeedbackDialogAction } from '@components/FeedbackDialogAction';\r\nimport { MessageAdditionalInfoSection } from './MessageAdditionalInfo';\r\nimport { MessageInteractionMode } from '@models/data/MessageInteractionMode';\r\nimport { SizeModeType } from '@models/ui/SizeModeType';\r\nimport MarkIrrelevantAction from './MarkIrrelevantAction';\r\nimport MessageImage from './MessageImage';\r\nimport { MessageBanner } from '../MessageBanner';\r\nimport { FindOutMoreButton } from './FindOutMoreButton';\r\nimport { LeaderAnnotation } from './LeaderAnnotation';\r\nimport { MessageInstanceLeaderStatus } from '@api/models';\r\n\r\nexport interface IMessageContentStepProps {\r\n message: MessageInstanceFullContentModel;\r\n onNavigationCallback?: () => void;\r\n mode: MessageInteractionMode;\r\n sizeMode: SizeModeType;\r\n}\r\n\r\nconst MessageContentStep = ({\r\n mode,\r\n message,\r\n onNavigationCallback,\r\n sizeMode\r\n}: IMessageContentStepProps): React.ReactElement => {\r\n const dispatch = useAppDispatch();\r\n const styles = useMessageContentStepStyles();\r\n const { t } = useTranslation();\r\n\r\n const isAdminView = mode === MessageInteractionMode.Admin;\r\n const isFull = sizeMode === SizeModeType.Full;\r\n\r\n const onClose = React.useCallback(() => dispatch(cancelMessageInteraction()), [dispatch]);\r\n\r\n return (\r\n
\r\n {!!message.imageUrl && isFull && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n \r\n \r\n\r\n {(!message.imageUrl || !isFull) && (\r\n
\r\n \r\n \r\n
\r\n )}\r\n \r\n \r\n
\r\n \r\n {mode !== MessageInteractionMode.ReadOnly && (\r\n <>\r\n }\r\n >\r\n {isAdminView\r\n ? t('MessageInteraction.ContentStep.AdminActionBtnLabel')\r\n : t('MessageInteraction.ContentStep.ConfirmCommsBtnLabel')}\r\n \r\n {!message.mandatory &&\r\n message.leaderStatus !== MessageInstanceLeaderStatus.Irrelevant && (\r\n \r\n )}\r\n {!isAdminView && (\r\n \r\n }}\r\n defaultFeedbackType=\"Message feedback\"\r\n />\r\n )}\r\n \r\n )}\r\n }\r\n >\r\n {t('MessageInteraction.ContentStep.CancelButton')}\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default MessageContentStep;\r\n","import { makeStyles, tokens, shorthands, typographyStyles } from '@configs/theme/v9';\r\n\r\nexport const userStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n ...shorthands.flex(1),\r\n ...shorthands.gap('12px'),\r\n ...shorthands.padding(0, '24px', '24px')\r\n },\r\n subTitle: {\r\n ...shorthands.margin(0, 0)\r\n },\r\n section: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n maxWidth: '1200px',\r\n ...shorthands.flex(1),\r\n '&>p': {\r\n ...shorthands.margin(0)\r\n }\r\n },\r\n directReportSection: {\r\n maxWidth: '100%'\r\n },\r\n alreadyCommunicatedPerson: {\r\n '&>span': {\r\n color: tokens.colorNeutralForegroundDisabled\r\n }\r\n },\r\n personPicker: {\r\n '& div.ms-PickerPersona-container': {\r\n backgroundColor: tokens.colorNeutralBackground4\r\n },\r\n '& .ms-Persona-primaryText': {\r\n color: tokens.colorNeutralForeground2\r\n },\r\n '& .ms-Button': {\r\n color: tokens.colorNeutralForeground2\r\n },\r\n '& .ms-Button:hover': {\r\n color: tokens.colorNeutralForeground2Hover,\r\n backgroundColor: tokens.colorSubtleBackgroundHover\r\n }\r\n },\r\n loader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n width: '100%',\r\n height: '100%',\r\n position: 'fixed',\r\n top: 0,\r\n left: 0\r\n }\r\n});\r\n","import { makeStyles, shorthands, tokens, typographyStyles } from '@configs/theme/v9';\r\n\r\nexport const useDirectReportsListStyles = makeStyles({\r\n subTitleBold: {\r\n ...shorthands.margin('12px', 0, 0),\r\n ...typographyStyles.subtitle2\r\n },\r\n directReportList: {\r\n display: 'flex',\r\n ...shorthands.padding(0),\r\n ...shorthands.gap('16px', '8px'),\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n maxWidth: '100%',\r\n width: '100% ',\r\n ...shorthands.margin('12px', 0)\r\n },\r\n directReportItem: {\r\n listStyleType: 'none'\r\n },\r\n fullCol: {\r\n flexBasis: '100%'\r\n },\r\n halfCol: {\r\n flexBasis: 'calc(50% - 12px)'\r\n },\r\n selectAllReports: {\r\n '& .fui-Checkbox__indicator': {\r\n height: '20px',\r\n width: '20px',\r\n ...shorthands.margin(tokens.spacingVerticalMNudge, tokens.spacingHorizontalMNudge),\r\n '& svg': {\r\n width: '16px',\r\n height: '16px'\r\n }\r\n },\r\n '& .fui-Persona__primaryText': {\r\n lineHeight: tokens.lineHeightBase500\r\n },\r\n ...shorthands.margin('12px', 0, 0)\r\n }\r\n});\r\n","import { makeStyles, shorthands, tokens } from '@fluentui/react-components';\r\n\r\nexport const useReportListItemStyles = makeStyles({\r\n root: {\r\n '& .fui-Checkbox__indicator': {\r\n height: '20px',\r\n width: '20px',\r\n ...shorthands.margin(tokens.spacingVerticalMNudge, tokens.spacingHorizontalMNudge),\r\n '& svg': {\r\n width: '16px',\r\n height: '16px'\r\n }\r\n },\r\n '& .fui-Persona__primaryText': {\r\n lineHeight: tokens.lineHeightBase500\r\n }\r\n },\r\n label: {\r\n display: 'inline-block',\r\n lineHeight: '28px',\r\n '& > *': {\r\n verticalAlign: 'middle'\r\n }\r\n }\r\n});\r\n","import React from 'react';\r\nimport { DirectReportWithUserDataModel } from '@api/models/DirectReportWithUserDataModel';\r\nimport { Checkbox, CheckboxOnChangeData } from '@fluentui/react-components';\r\nimport UserInfo from '@components/UserInfo';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useReportListItemStyles } from './DirectReportItem.styles';\r\n\r\nexport interface IReportListItemProps {\r\n report: DirectReportWithUserDataModel;\r\n selected: boolean;\r\n userPhotoUri?: string;\r\n actionTakenByPhotoUri?: string;\r\n onSelectionChanged?: (subordinateId: number, checked: boolean) => void;\r\n}\r\n\r\nconst ReportListItem: React.FC = ({\r\n report,\r\n selected,\r\n userPhotoUri,\r\n actionTakenByPhotoUri,\r\n onSelectionChanged: onChangeSelection\r\n}) => {\r\n const { t } = useTranslation();\r\n const styles = useReportListItemStyles();\r\n\r\n const reportUserName = `${report.subordinate.name}${\r\n report.isLeader ? ` ${t('MessageInteraction.CommsStep.PeaopleLeader')}` : ''\r\n }`;\r\n\r\n const onChange = React.useCallback(\r\n (ev: React.ChangeEvent, data: CheckboxOnChangeData) => {\r\n if (onChangeSelection) {\r\n onChangeSelection(report.subordinate.id, data.checked === true);\r\n }\r\n },\r\n [report.subordinate.id, onChangeSelection]\r\n );\r\n\r\n return (\r\n \r\n \r\n {report.actionTakenBy && (\r\n <>\r\n {` — ${t(\r\n 'MessageInteraction.CommsStep.HasAlreadyBeenCommunicatedBy'\r\n )}`}\r\n \r\n \r\n )}\r\n \r\n }\r\n />\r\n );\r\n};\r\n\r\nexport default ReportListItem;\r\n","import React from 'react';\r\nimport { Checkbox, Text, mergeClasses } from '@fluentui/react-components';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDirectReportsListStyles } from './DirectReportsList.styles';\r\nimport { DirectReportWithUserDataModel } from '@api/models/DirectReportWithUserDataModel';\r\nimport ReportListItem from './DirectReportItem';\r\nimport { SizeModeType } from '@models/ui/SizeModeType';\r\nimport { getUsersPhotos } from '@api/services/users';\r\n\r\ninterface IDirectReportsListProps {\r\n reports: DirectReportWithUserDataModel[];\r\n onChangeSelected: (selectedItems: number[]) => void;\r\n sizeMode: SizeModeType;\r\n className?: string;\r\n}\r\n\r\nconst DirectReportsList: React.FC = ({\r\n reports,\r\n onChangeSelected,\r\n sizeMode,\r\n className\r\n}) => {\r\n const { t } = useTranslation();\r\n const styles = useDirectReportsListStyles();\r\n\r\n const [selectedDirectUsersAADIds, setSelectedDirectUsersAADIds] = React.useState([]);\r\n const [userPhotos, setUserPhotos] = React.useState>(new Map());\r\n const activeDirectReports = reports.filter((x) => !x.completed);\r\n\r\n React.useEffect(() => {\r\n (async () => {\r\n const userIds = reports.reduce(\r\n (acc, item) => [\r\n ...acc,\r\n item.subordinate.aadId,\r\n ...(item.actionTakenBy?.aadId ? [item.actionTakenBy?.aadId] : [])\r\n ],\r\n [] as string[]\r\n );\r\n const photos = await getUsersPhotos(userIds);\r\n\r\n setUserPhotos(photos);\r\n })();\r\n }, [reports]);\r\n\r\n React.useEffect(() => {\r\n onChangeSelected(selectedDirectUsersAADIds);\r\n }, [onChangeSelected, selectedDirectUsersAADIds]);\r\n\r\n const selectAllDirectUsers = React.useCallback(() => {\r\n if (selectedDirectUsersAADIds?.length === activeDirectReports.length) {\r\n setSelectedDirectUsersAADIds([]);\r\n } else {\r\n setSelectedDirectUsersAADIds(\r\n reports.filter((x) => !x.actionTakenBy && !x.completed).map((x) => x.subordinate.id)\r\n );\r\n }\r\n }, [activeDirectReports.length, reports, selectedDirectUsersAADIds?.length]);\r\n\r\n const onDirectReportSelectionChanged = React.useCallback(\r\n (subordinateId: number, checked: boolean) => {\r\n let selected: number[] = [];\r\n if (checked) {\r\n selected = [...selectedDirectUsersAADIds, subordinateId];\r\n } else {\r\n selected = selectedDirectUsersAADIds.filter((c) => c !== subordinateId);\r\n }\r\n setSelectedDirectUsersAADIds(selected);\r\n },\r\n [selectedDirectUsersAADIds]\r\n );\r\n\r\n const isReportSelected = React.useCallback(\r\n (report: DirectReportWithUserDataModel) =>\r\n report.completed ||\r\n selectedDirectUsersAADIds.some((x) => x === report.subordinate.id) ||\r\n !!report.actionTakenBy,\r\n [selectedDirectUsersAADIds]\r\n );\r\n\r\n return (\r\n
\r\n \r\n {t('MessageInteraction.CommsStep.DirectReportListLabel')}\r\n \r\n \r\n
    \r\n {reports.map((report) => (\r\n \r\n \r\n \r\n ))}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default DirectReportsList;\r\n","import { makeStyles, tokens } from '@configs/theme/v9';\r\n\r\nexport const useOtherColleaguesSectionStyles = makeStyles({\r\n personPicker: {\r\n '& div.ms-PickerPersona-container': {\r\n backgroundColor: tokens.colorNeutralBackground4\r\n },\r\n '& .ms-Persona-primaryText': {\r\n color: tokens.colorNeutralForeground2\r\n },\r\n '& .ms-Button': {\r\n color: tokens.colorNeutralForeground2\r\n },\r\n '& .ms-Button:hover': {\r\n color: tokens.colorNeutralForeground2Hover,\r\n backgroundColor: tokens.colorSubtleBackgroundHover\r\n }\r\n },\r\n pickerCallout: {\r\n '& .ms-Suggestions-spinner': {\r\n flexDirection: 'row'\r\n },\r\n '& .ms-Spinner-circle': {\r\n width: '20px',\r\n height: '20px'\r\n }\r\n }\r\n});\r\n","import React from 'react';\r\nimport { CompactPeoplePicker, IPersonaProps, PeoplePickerItemSuggestion } from '@fluentui/react';\r\nimport { Field, Switch } from '@fluentui/react-components';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useOtherColleaguesSectionStyles } from './OtherColleaguesSection.styles';\r\nimport { getUsersPhotos, searchUsers } from '@api/services/users';\r\n\r\ninterface IOtherColleaguesSectionProps {\r\n excludeSubordinateIds: number[];\r\n onSelectionChanged: (userIds: number[]) => void;\r\n className?: string;\r\n}\r\n\r\nconst getUsersWithImagesByName: (name: string) => Promise = async (\r\n name: string\r\n) => {\r\n const users = await searchUsers(name);\r\n const userIds = users.map((x) => x.aadId);\r\n const photos = await getUsersPhotos(userIds);\r\n\r\n return users.map(\r\n (user) =>\r\n ({\r\n text: user.name,\r\n key: user.id,\r\n imageUrl: photos.get(user.aadId)\r\n }) as IPersonaProps\r\n );\r\n};\r\n\r\nconst OtherColleaguesSection: React.FC = ({\r\n excludeSubordinateIds,\r\n onSelectionChanged,\r\n className\r\n}) => {\r\n const { t } = useTranslation();\r\n const styles = useOtherColleaguesSectionStyles();\r\n const [otherColleaguesEnabled, setOtherColleaguesEnabled] = React.useState(false);\r\n\r\n const colleaguesChanged = React.useCallback(\r\n (ev: { currentTarget: { checked: boolean | ((prevState: boolean) => boolean) } }) => {\r\n setOtherColleaguesEnabled(ev.currentTarget.checked);\r\n },\r\n []\r\n );\r\n\r\n const onFilterChanged = React.useCallback(\r\n (\r\n filterText: string,\r\n currentPersonas?: IPersonaProps[],\r\n idsToExclude?: number[],\r\n limitResults?: number\r\n ): IPersonaProps[] | Promise => {\r\n if (filterText) {\r\n const excludedUsersAAdIds = new Set([\r\n ...(currentPersonas?.map((x) => x.key) ?? []),\r\n ...(idsToExclude ?? [])\r\n ]);\r\n return getUsersWithImagesByName(filterText).then((users) =>\r\n users.filter((x) => !excludedUsersAAdIds.has(x.key))\r\n );\r\n } else {\r\n return [];\r\n }\r\n },\r\n []\r\n );\r\n\r\n const onUsersSelected = React.useCallback(\r\n (items: IPersonaProps[] | undefined) => {\r\n onSelectionChanged(!!items ? items.map((x) => parseInt(x.key as string)) : []);\r\n },\r\n [onSelectionChanged]\r\n );\r\n\r\n return (\r\n
\r\n \r\n {otherColleaguesEnabled && (\r\n \r\n \r\n onFilterChanged(...args, excludeSubordinateIds)\r\n }\r\n pickerCalloutProps={{\r\n className: styles.pickerCallout\r\n }}\r\n getTextFromItem={(persona: IPersonaProps) => persona.text as string}\r\n className={styles.personPicker}\r\n selectionAriaLabel={'Selected contacts'}\r\n removeButtonAriaLabel={'Remove'}\r\n pickerSuggestionsProps={{\r\n suggestionsHeaderText: t('PeoplePicker.SuggestionsHeaderText') ?? '',\r\n mostRecentlyUsedHeaderText:\r\n t('PeoplePicker.MostRecentlyUsedHeaderText') ?? '',\r\n noResultsFoundText: t('PeoplePicker.NoResultsFoundText') ?? '',\r\n loadingText: t('PeoplePicker.LoadingText') ?? '',\r\n suggestionsAvailableAlertText:\r\n t('PeoplePicker.SuggestionsAvailableAlertText') ?? '',\r\n suggestionsContainerAriaLabel:\r\n t('PeoplePicker.SuggestionsContainerAriaLabel') ?? ''\r\n }}\r\n onChange={onUsersSelected}\r\n resolveDelay={600}\r\n />\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default OtherColleaguesSection;\r\n","import React from 'react';\r\nimport { Field, Switch, Textarea, TextareaOnChangeData } from '@fluentui/react-components';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\ninterface IAnnotationTextSectionProps {\r\n onAnnotationChange: (\r\n ev: React.ChangeEvent,\r\n data: TextareaOnChangeData\r\n ) => void;\r\n className?: string;\r\n}\r\n\r\nconst AnnotationTextSection: React.FC = ({\r\n onAnnotationChange,\r\n className\r\n}) => {\r\n const { t } = useTranslation();\r\n const [annotationEnabled, setAnnotationEnabled] = React.useState(false);\r\n\r\n const onAddAnnotationChange = React.useCallback(\r\n (ev: { currentTarget: { checked: boolean | ((prevState: boolean) => boolean) } }) => {\r\n setAnnotationEnabled(ev.currentTarget.checked);\r\n },\r\n []\r\n );\r\n return (\r\n
\r\n \r\n {annotationEnabled && (\r\n \r\n \r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default AnnotationTextSection;\r\n","import { MessageInstanceFullContentModel } from '@models/data/MessageInstanceFullContentModel';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {\r\n Text,\r\n TextareaOnChangeData,\r\n TextareaProps,\r\n Button,\r\n mergeClasses\r\n} from '@fluentui/react-components';\r\nimport { userStyles } from './MessageCommunicationStep.styles';\r\nimport { CheckmarkCircle24Regular, DismissCircle24Regular } from '@fluentui/react-icons';\r\nimport MessageInteractionActions from '../MessageInteractionActions';\r\nimport { useAppDispatch } from '@state';\r\nimport { cancelMessageInteraction, confirmCommunication } from '@state/selectedMessage';\r\nimport { ConfirmationDialogAction } from '@components/ConfirmationDialogAction';\r\nimport { SizeModeType } from '@models/ui/SizeModeType';\r\nimport { MessageBanner } from '../MessageBanner';\r\nimport DirectReportsList from './DirectReportsList';\r\nimport OtherColleaguesSection from './OtherColleaguesSection';\r\nimport AnnotationTextSection from './AnnotationTextSection';\r\n\r\nexport interface IMessageCommunicationStepProps {\r\n message: MessageInstanceFullContentModel;\r\n sizeMode: SizeModeType;\r\n}\r\n\r\nconst MessageCommunicationStep: React.FC = ({\r\n message,\r\n sizeMode\r\n}) => {\r\n const dispatch = useAppDispatch();\r\n const styles = userStyles();\r\n const { t } = useTranslation();\r\n\r\n const [otherColleagueIds, setOtherColleagueIds] = React.useState([]);\r\n const [selectedDirectUserIds, setSelectedSubordinateIds] = React.useState([]);\r\n const [annotationText, setAnnotationText] = React.useState('');\r\n\r\n const onAnnotationChange: TextareaProps['onChange'] = React.useCallback(\r\n (ev: React.ChangeEvent, data: TextareaOnChangeData) => {\r\n setAnnotationText(data.value);\r\n },\r\n []\r\n );\r\n\r\n const usersChanged = React.useCallback(\r\n (): boolean => !!selectedDirectUserIds.length || !!otherColleagueIds.length,\r\n [otherColleagueIds.length, selectedDirectUserIds.length]\r\n );\r\n\r\n const onClose = React.useCallback(() => dispatch(cancelMessageInteraction()), [dispatch]);\r\n const onConfirmMessageCommunication = React.useCallback(async (): Promise => {\r\n dispatch(\r\n confirmCommunication({\r\n annotationText: annotationText,\r\n userIds: [...selectedDirectUserIds, ...otherColleagueIds]\r\n })\r\n );\r\n }, [annotationText, selectedDirectUserIds, otherColleagueIds, dispatch]);\r\n\r\n return (\r\n
\r\n \r\n {t('MessageInteraction.CommsStep.StepTitle1')}\r\n \r\n \r\n {t('MessageInteraction.CommsStep.StepTitle2')}\r\n \r\n \r\n {t('MessageInteraction.CommsStep.StepTitle3')}\r\n \r\n \r\n {t('MessageInteraction.CommsStep.StepTitle4')}\r\n \r\n \r\n \r\n r.subordinate.id)}\r\n onSelectionChanged={setOtherColleagueIds}\r\n />\r\n \r\n\r\n \r\n \r\n }}\r\n onConfirm={onConfirmMessageCommunication}\r\n >\r\n {t('ConfirmationDialog.ConfirmMessagePublishText')}\r\n \r\n\r\n {usersChanged() ? (\r\n \r\n }}\r\n onConfirm={onConfirmMessageCommunication}\r\n >\r\n \r\n {t('ConfirmationDialog.ConfirmCancelationToPublishText')}\r\n \r\n \r\n ) : (\r\n }\r\n size=\"medium\"\r\n onClick={onClose}\r\n >\r\n {t('MessageInteraction.CommsStep.CancelButton')}\r\n \r\n )}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default MessageCommunicationStep;\r\n","import { makeStyles, tokens, shorthands } from '@configs/theme/v9';\r\n\r\nexport const useMessageInteractionsViewStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n maxWidth: '100%',\r\n width: '100%',\r\n ...shorthands.overflow('hidden', 'hidden'),\r\n boxSizing: 'border-box'\r\n },\r\n scrollable: {\r\n position: 'initial',\r\n width: '100%',\r\n maxWidth: '100%',\r\n ...shorthands.overflow('hidden', 'auto'),\r\n height: 'calc(100% - 0px)'\r\n },\r\n inner: {\r\n backgroundColor: tokens.colorNeutralBackground1,\r\n boxShadow: tokens.shadow4Brand,\r\n maxWidth: '1600px',\r\n ...shorthands.margin('0', 'auto'),\r\n width: '100%',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '100%',\r\n ...shorthands.overflow('hidden', 'hidden'),\r\n paddingBottom: '20px'\r\n }\r\n});\r\n","import { makeStyles, shorthands } from '@configs/theme/v9';\r\n\r\nexport const useMessageViewHeaderStyles = makeStyles({\r\n header: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: '100%',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between',\r\n flexWrap: 'nowrap',\r\n ...shorthands.gap('12px'),\r\n ...shorthands.padding('12px', '24px'),\r\n boxSizing: 'border-box'\r\n },\r\n flexRowItem: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: '100%',\r\n justifyContent: 'space-between',\r\n flexWrap: 'nowrap',\r\n ...shorthands.gap('12px'),\r\n boxSizing: 'border-box'\r\n },\r\n flexGrowItem: {\r\n flexGrow: '1'\r\n },\r\n flexibleWidth: {\r\n width: 'auto',\r\n flexWrap: 'wrap'\r\n },\r\n autoWidth: {\r\n width: 'auto'\r\n }\r\n});\r\n","import { makeStyles } from '@configs/theme/v9';\r\n\r\nexport const useCloseButtonStyles = makeStyles({\r\n headerCloseBtn: {\r\n flexWrap: 'nowrap',\r\n whiteSpace: 'nowrap'\r\n },\r\n closeBtnCtn: {\r\n width: '30px'\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { useAppDispatch } from '@state';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { cancelMessageInteraction } from '@state/selectedMessage';\r\nimport { Dismiss24Regular } from '@fluentui/react-icons';\r\nimport { Button } from '@fluentui/react-components';\r\nimport { useCloseButtonStyles } from './CloseButton.styles';\r\n\r\nexport const CloseButton = (): React.ReactElement => {\r\n const styles = useCloseButtonStyles();\r\n const { t } = useTranslation();\r\n const dispatch = useAppDispatch();\r\n\r\n return (\r\n
\r\n }\r\n className={styles.headerCloseBtn}\r\n onClick={() => dispatch(cancelMessageInteraction())}\r\n />\r\n
\r\n );\r\n};\r\n","import { makeStyles, shorthands, typographyStyles } from '@configs/theme/v9';\r\n\r\nexport const useMessageTitleStyles = makeStyles({\r\n messageTitle: {\r\n ...typographyStyles.subtitle1,\r\n ...shorthands.margin('0px'),\r\n minHeight: '30px'\r\n }\r\n});\r\n","import { Text } from '@fluentui/react-components';\r\nimport { useMessageTitleStyles } from './MessageTitle.styles';\r\nimport * as React from 'react';\r\n\r\nexport interface IMessageTitleProps {\r\n title: string;\r\n}\r\n\r\nexport const MessageTitle = ({ title }: IMessageTitleProps): React.ReactElement => {\r\n const styles = useMessageTitleStyles();\r\n\r\n return (\r\n \r\n {title}\r\n \r\n );\r\n};\r\n","import { makeStyles } from '@configs/theme/v9';\r\n\r\nexport const useMessagePublishDateStyles = makeStyles({\r\n root: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n date: {\r\n paddingLeft: '5px'\r\n }\r\n});\r\n","import { Text } from '@fluentui/react-components';\r\nimport * as React from 'react';\r\nimport moment from 'moment';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useMessagePublishDateStyles } from './MessagePublishDate.styles';\r\n\r\nexport interface IMessagePublishDateProps {\r\n date?: Date;\r\n}\r\n\r\nexport const MessagePublishDate = ({ date }: IMessagePublishDateProps): React.ReactElement => {\r\n const styles = useMessagePublishDateStyles();\r\n const { t } = useTranslation();\r\n const shortPublishedDate = date ? moment(new Date(date)).format('DD/MM/yyyy') : '';\r\n\r\n return (\r\n
\r\n {t('Common.MessageListView.CreationDateHeader')}\r\n : \r\n \r\n {shortPublishedDate}\r\n \r\n
\r\n );\r\n};\r\n","import { makeStyles, shorthands } from '@configs/theme/v9';\r\n\r\nexport const useMessageMetaStyles = makeStyles({\r\n messageMeta: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n justifyContent: 'start',\r\n flexWrap: 'nowrap',\r\n ...shorthands.gap('20px'),\r\n boxSizing: 'border-box',\r\n alignItems: 'center'\r\n },\r\n\r\n flexWrapItem: {\r\n flexWrap: 'wrap'\r\n },\r\n flexibleWidth: {\r\n width: 'auto',\r\n flexWrap: 'wrap'\r\n }\r\n});\r\n","import { mergeClasses } from '@fluentui/react-components';\r\nimport { useMessageMetaStyles } from './MessageMeta.styles';\r\nimport { MessageInstanceFullContentModel } from '@models/data/MessageInstanceFullContentModel';\r\nimport * as React from 'react';\r\nimport MessageCategoriesList from '@components/controls/MessageCategoriesList';\r\nimport MessageStrategicFocusBadge from '@components/controls/MessageStrategicFocusBadge';\r\nimport { MessagePublishDate } from '../MessagePublishDate';\r\n\r\nexport interface IMessageMetaProps {\r\n message: MessageInstanceFullContentModel;\r\n fullMode: boolean;\r\n}\r\n\r\nexport const MessageMeta = ({ message, fullMode }: IMessageMetaProps): React.ReactElement => {\r\n const styles = useMessageMetaStyles();\r\n\r\n return (\r\n
\r\n \r\n \r\n {fullMode && }\r\n
\r\n );\r\n};\r\n","import { mergeClasses } from '@fluentui/react-components';\r\nimport { useMessageViewHeaderStyles } from './MessageViewHeader.styles';\r\nimport { MessageInstanceFullContentModel } from '@models/data/MessageInstanceFullContentModel';\r\nimport * as React from 'react';\r\nimport { SizeModeType } from '@models/ui/SizeModeType';\r\nimport { CloseButton } from './CloseButton';\r\nimport { MessageTitle } from './MessageTitle';\r\nimport { MessagePublishDate } from './MessagePublishDate';\r\nimport { MessageMeta } from './MessageMeta';\r\n\r\nexport interface IMessageViewHeaderProps {\r\n message: MessageInstanceFullContentModel;\r\n sizeMode: SizeModeType;\r\n}\r\n\r\nconst MessageViewHeader = ({ message, sizeMode }: IMessageViewHeaderProps): React.ReactElement => {\r\n const styles = useMessageViewHeaderStyles();\r\n\r\n const isFullMode = sizeMode === SizeModeType.Full;\r\n\r\n return (\r\n
\r\n {isFullMode ? (\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n ) : (\r\n <>\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default MessageViewHeader;\r\n","import Loader from '@components/controls/common/Loader';\r\nimport * as React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport interface IProcessingLoaderProps {\r\n processingType: 'confirmation' | 'irrelevant' | 'loading' | 'none';\r\n}\r\n\r\nexport const MessageLoader = ({ processingType }: IProcessingLoaderProps): React.ReactElement => {\r\n let txt = '';\r\n const { t } = useTranslation();\r\n\r\n if (processingType === 'none') {\r\n return <>;\r\n }\r\n\r\n switch (processingType) {\r\n case 'confirmation': {\r\n txt = t('MessageInteraction.CommunicationOperationMessage');\r\n break;\r\n }\r\n case 'irrelevant': {\r\n txt = t('MessageInteraction.IrrelevantOperationMessage');\r\n break;\r\n }\r\n default: {\r\n txt = t('MessageInteraction.LoadingOperationMessage');\r\n break;\r\n }\r\n }\r\n\r\n return ;\r\n};\r\n","import { makeResetStyles, tokens } from '@configs/theme/v9';\r\n\r\nexport const useScrollBarStyle = makeResetStyles({\r\n '::-webkit-scrollbar': {\r\n height: '1.6rem',\r\n width: '1.6rem'\r\n },\r\n\r\n '::-webkit-scrollbar:disabled': {\r\n display: 'none'\r\n },\r\n '::-webkit-scrollbar-thumb': {\r\n borderBottomRightRadius: '0.9rem',\r\n borderBottomLeftRadius: '0.9rem',\r\n borderTopRightRadius: '0.9rem',\r\n borderTopLeftRadius: '0.9rem',\r\n borderTopWidth: '0.4rem',\r\n borderBottomWidth: '0.4rem',\r\n borderLeftWidth: '0.4rem',\r\n borderRightWidth: '0.4rem',\r\n borderTopStyle: 'solid',\r\n borderLeftStyle: 'solid',\r\n borderRightStyle: 'solid',\r\n borderBottomStyle: 'solid',\r\n borderTopColor: 'transparent',\r\n borderLeftColor: 'transparent',\r\n borderRightColor: 'transparent',\r\n borderBottomColor: 'transparent',\r\n backgroundClip: 'content-box',\r\n backgroundColor: tokens.colorScrollbarOverlay\r\n },\r\n '::-webkit-scrollbar-thumb:hover': {\r\n backgroundColor: tokens.colorScrollbarOverlay,\r\n borderTopWidth: '0.2rem',\r\n borderBottomWidth: '0.2rem',\r\n borderLeftWidth: '0.2rem',\r\n borderRightWidth: '0.2rem',\r\n borderTopStyle: 'solid',\r\n borderLeftStyle: 'solid',\r\n borderRightStyle: 'solid',\r\n borderBottomStyle: 'solid',\r\n borderTopColor: 'transparent',\r\n borderLeftColor: 'transparent',\r\n borderRightColor: 'transparent',\r\n borderBottomColor: 'transparent'\r\n },\r\n '::-webkit-scrollbar-track': {\r\n backgroundColor: 'transparent'\r\n },\r\n '::-webkit-scrollbar-corner': {\r\n backgroundColor: 'transparent'\r\n }\r\n});\r\n","import { useStateSelector } from '@state';\r\nimport * as React from 'react';\r\nimport MessageContentStep from './MessageContentStep';\r\nimport MessageCommunicationStep from './MessageCommunicationStep';\r\nimport { useMessageInteractionsViewStyles } from './MessageInteractionsView.styles';\r\nimport MessageViewHeader from './MessageViewHeader';\r\nimport { MessageLoader } from './MessageLoader';\r\nimport { mergeClasses } from '@fluentui/react-components';\r\nimport { useScrollBarStyle } from '@components/controls/common/scrollbar.styles';\r\n\r\nenum InteractionStep {\r\n Content,\r\n Communication\r\n}\r\n\r\nconst MessageInteractionView = (): React.ReactElement => {\r\n const { processingType, message, showMessageView, mode } = useStateSelector(\r\n (c) => c.selectedMessage\r\n );\r\n const sizeMode = useStateSelector((c) => c.app.sizeMode);\r\n const styles = useMessageInteractionsViewStyles();\r\n const scrollBarStyle = useScrollBarStyle();\r\n\r\n const [uiStep, setUiStep] = React.useState(InteractionStep.Content);\r\n if (!showMessageView) {\r\n return <>;\r\n }\r\n\r\n return (\r\n
\r\n {processingType === 'none' && !!message ? (\r\n
\r\n \r\n
\r\n {uiStep === InteractionStep.Content && (\r\n \r\n setUiStep(InteractionStep.Communication)\r\n }\r\n message={message}\r\n mode={mode}\r\n sizeMode={sizeMode}\r\n />\r\n )}\r\n {uiStep === InteractionStep.Communication && (\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 MessageInteractionView;\r\n","import * as React from 'react';\r\nimport { useEffect, useLayoutEffect } from 'react';\r\nimport { useAppDispatch, useStateSelector } from '@state';\r\nimport Loader from '@components/controls/common/Loader';\r\nimport { useLayoutStyles } from './Layout.styles';\r\nimport { initApp, setAppUIConfig } from '@state/app';\r\nimport { useTranslation } from 'react-i18next';\r\nimport MessageInteractionView from '@components/MessageInteractionsView';\r\n\r\nexport const PageLayout: React.FC = (props: React.PropsWithChildren) => {\r\n const initialized = useStateSelector((c) => c.app.initialized);\r\n const showMessageView = useStateSelector((c) => c.selectedMessage.showMessageView);\r\n\r\n const dispatch = useAppDispatch();\r\n const { t } = useTranslation();\r\n const styles = useLayoutStyles();\r\n useEffect(() => {\r\n dispatch(initApp());\r\n }, [dispatch]);\r\n\r\n useLayoutEffect(() => {\r\n const updateSize = (): void => {\r\n dispatch(setAppUIConfig({ width: window.innerWidth }));\r\n };\r\n window.addEventListener('resize', updateSize);\r\n updateSize();\r\n return () => window.removeEventListener('resize', updateSize);\r\n }, [dispatch]);\r\n\r\n return (\r\n
\r\n {initialized ? (\r\n showMessageView ? (\r\n \r\n ) : (\r\n <>\r\n
{props.children}
\r\n \r\n )\r\n ) : (\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport const withPageLayout = (\r\n WrappedComponent: React.FC\r\n): ((props: T & {}) => React.ReactElement>) =>\r\n function InLayout(props: T & {}): React.ReactElement {\r\n return (\r\n \r\n \r\n \r\n );\r\n };\r\n\r\nexport default PageLayout;\r\n","import { makeStyles, shorthands, tokens } from '@configs/theme/v9';\r\n\r\nexport const useMessageFilterTagsStyles = makeStyles({\r\n container: {\r\n ...shorthands.overflow('hidden'),\r\n zIndex: 0, // stop the browser resize handle from piercing the overflow menu\r\n height: '100%',\r\n minWidth: '150px',\r\n maxWidth: '300px',\r\n boxSizing: 'content-box',\r\n justifyContent: 'right',\r\n display: 'flex',\r\n flexWrap: 'nowrap',\r\n alignItems: 'center'\r\n },\r\n tagGroup: {\r\n display: 'flex' // TagGroup is inline-flex by default, but we want it to be same width as the container\r\n },\r\n tag: {\r\n ':hover': {\r\n color: tokens.colorCompoundBrandForeground1Hover,\r\n backgroundColor: tokens.colorBrandBackground2Hover\r\n }\r\n }\r\n});\r\n\r\nexport const useMenuItemStyles = makeStyles({\r\n menuItem: {\r\n backgroundColor: 'transparent',\r\n cursor: 'pointer',\r\n ':hover': {\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n menuTag: {\r\n ':hover': {\r\n color: tokens.colorCompoundBrandForeground1Hover,\r\n backgroundColor: tokens.colorBrandBackground2Hover\r\n }\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport {\r\n TagGroup,\r\n Overflow,\r\n OverflowItem,\r\n mergeClasses,\r\n InteractionTag,\r\n Menu,\r\n MenuTrigger,\r\n InteractionTagPrimary,\r\n useOverflowMenu,\r\n MenuPopover,\r\n MenuList,\r\n MenuItem,\r\n useIsOverflowItemVisible,\r\n Tag\r\n} from '@fluentui/react-components';\r\nimport { useMenuItemStyles, useMessageFilterTagsStyles } from './MessageFilterTags.styles';\r\n\r\nimport { applyMessageFilters, setLeaderFilter } from '@state/filters';\r\nimport { useAppDispatch, useStateSelector } from '@state';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\ntype TagData = { id: string; title: string; onRemoveFilter: () => void };\r\n\r\ninterface ITagProps {\r\n tag: TagData;\r\n removeAriaLabel: string;\r\n}\r\n\r\nconst OverflowMenuItem = ({ tag, removeAriaLabel }: ITagProps): React.ReactElement | null => {\r\n const isVisible = useIsOverflowItemVisible(tag.id!);\r\n\r\n const styles = useMenuItemStyles();\r\n\r\n if (isVisible) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n {tag.title}\r\n \r\n {/* \r\n {tag.title}\r\n \r\n */}\r\n \r\n );\r\n};\r\n\r\nexport interface ITagsProps {\r\n tags: TagData[];\r\n removeAriaLabel: string;\r\n}\r\n\r\nconst UnvisibleTagsMenu = ({ tags, removeAriaLabel }: ITagsProps): React.ReactElement | null => {\r\n const { ref, isOverflowing, overflowCount } = useOverflowMenu();\r\n\r\n if (!isOverflowing) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {`+${overflowCount}`}\r\n \r\n \r\n \r\n \r\n {tags.map((item) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport interface IMessageFilterTagsProps {\r\n changeFiltersCallback: () => void;\r\n}\r\n\r\nconst MessageFilterTags = ({\r\n changeFiltersCallback\r\n}: IMessageFilterTagsProps): React.ReactElement => {\r\n const styles = useMessageFilterTagsStyles();\r\n const dispatch = useAppDispatch();\r\n const { t } = useTranslation();\r\n\r\n const { messageFilters, filteredLeader } = useStateSelector((c) => c.filters);\r\n\r\n const onCatDismiss = React.useCallback(\r\n (id: number) => {\r\n dispatch(\r\n applyMessageFilters({\r\n ...messageFilters,\r\n categories: messageFilters.categories.filter((c) => c.id !== id)\r\n })\r\n );\r\n changeFiltersCallback();\r\n },\r\n [dispatch, messageFilters, changeFiltersCallback]\r\n );\r\n\r\n const onImpLevelDismiss = React.useCallback(\r\n (id: number) => {\r\n dispatch(\r\n applyMessageFilters({\r\n ...messageFilters,\r\n importanceLevels: messageFilters.importanceLevels.filter((c) => c.id !== id)\r\n })\r\n );\r\n changeFiltersCallback();\r\n },\r\n [dispatch, messageFilters, changeFiltersCallback]\r\n );\r\n\r\n const onStrFocusDismiss = React.useCallback(\r\n (id: number) => {\r\n dispatch(\r\n applyMessageFilters({\r\n ...messageFilters,\r\n strategicFocuses: messageFilters.strategicFocuses.filter((c) => c.id !== id)\r\n })\r\n );\r\n changeFiltersCallback();\r\n },\r\n [dispatch, messageFilters, changeFiltersCallback]\r\n );\r\n\r\n const onPeriodDismiss = React.useCallback(() => {\r\n dispatch(\r\n applyMessageFilters({\r\n ...messageFilters,\r\n selectedPeriod: undefined\r\n })\r\n );\r\n changeFiltersCallback();\r\n }, [dispatch, messageFilters, changeFiltersCallback]);\r\n\r\n const onLeaderDismiss = React.useCallback(() => {\r\n dispatch(setLeaderFilter(undefined));\r\n changeFiltersCallback();\r\n }, [dispatch, changeFiltersCallback]);\r\n\r\n const allTags: { id: string; title: string; onRemoveFilter: () => void; className?: string }[] =\r\n [];\r\n\r\n if (filteredLeader) {\r\n allTags.push({\r\n id: `leader_${filteredLeader.id}`,\r\n onRemoveFilter: onLeaderDismiss,\r\n title: filteredLeader.name\r\n });\r\n }\r\n\r\n if (messageFilters.selectedPeriod) {\r\n allTags.push({\r\n id: `period-${messageFilters.selectedPeriod.id}`,\r\n onRemoveFilter: onPeriodDismiss,\r\n title: messageFilters.selectedPeriod.title\r\n });\r\n }\r\n\r\n const catTags = messageFilters.categories.map((c) => ({\r\n id: `cat_${c.id}`,\r\n onRemoveFilter: () => onCatDismiss(c.id),\r\n title: c.title\r\n }));\r\n\r\n allTags.push(...catTags);\r\n\r\n const importanceLevelsTags = messageFilters.importanceLevels.map((c) => ({\r\n id: `imp_${c.id}`,\r\n onRemoveFilter: () => onImpLevelDismiss(c.id),\r\n title: c.title\r\n }));\r\n\r\n allTags.push(...importanceLevelsTags);\r\n\r\n const strFocusTags = messageFilters.strategicFocuses.map((c) => ({\r\n id: `str_${c.id}`,\r\n onRemoveFilter: () => onStrFocusDismiss(c.id),\r\n title: c.title\r\n }));\r\n allTags.push(...strFocusTags);\r\n\r\n return (\r\n \r\n \r\n {allTags.map((item) => (\r\n \r\n {/* \r\n \r\n {item.title}\r\n \r\n \r\n */}\r\n \r\n {item.title}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MessageFilterTags;\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\nimport MessageTileView from '@components/MessageTileView';\r\nimport { usePageStyles } from './MyMessages.styles';\r\n\r\nimport { CommonMessageListView } from '@components/MessageListView';\r\nimport { MessagesViewType } from '@models/ui/MessagesViewType';\r\nimport { useAppDispatch, useStateSelector } from '@state';\r\n\r\nimport { loadMyMessages } from '@state/messages';\r\nimport ActionsPanel from '@components/ActionsBar';\r\n\r\nimport { SizeModeType } from '@models/ui/SizeModeType';\r\nimport { MessageFiltersPanelAction } from '@components/MessageFiltersPanelAction';\r\nimport { FeedbackDialogAction } from '@components/FeedbackDialogAction';\r\nimport { MessageSearchBox } from '@components/controls/MessageSearchBox';\r\n\r\nimport { useTranslation } from 'react-i18next';\r\nimport { withPageLayout } from '../PageLayout';\r\nimport { loadMyMessage, setPreviewInitialized } from '@state/selectedMessage';\r\nimport { MessageInstanceBasicContentModel } from '@models/data/MessageInstanceBasicContentModel';\r\nimport Loader from '@components/controls/common/Loader';\r\nimport MessageFilterTags from '@components/MessageFilterTags';\r\nimport { mergeClasses } from '@fluentui/react-components';\r\nimport { useScrollBarStyle } from '@components/controls/common/scrollbar.styles';\r\n\r\nexport interface IMyMessagePageProps {\r\n initId?: number;\r\n}\r\nconst MyMessages: React.FunctionComponent = ({\r\n initId\r\n}: IMyMessagePageProps) => {\r\n const dispatch = useAppDispatch();\r\n const { t } = useTranslation();\r\n const styles = usePageStyles();\r\n const scrollBarStyle = useScrollBarStyle();\r\n\r\n const { sizeMode, containerWidth } = useStateSelector((c) => c.app);\r\n const previewInitialized = useStateSelector((c) => c.selectedMessage.previewInitialized);\r\n const { messages, loading } = useStateSelector((x) => x.messages);\r\n\r\n const [activeView, setActiveView] = React.useState(MessagesViewType.Tiles);\r\n\r\n const loadContent = React.useCallback(() => dispatch(loadMyMessages()), [dispatch]);\r\n const loadMessage = React.useCallback(\r\n (m: MessageInstanceBasicContentModel) => dispatch(loadMyMessage(m.id)),\r\n [dispatch]\r\n );\r\n\r\n useEffect(() => {\r\n if (initId && !previewInitialized) {\r\n dispatch(setPreviewInitialized());\r\n dispatch(loadMyMessage(initId));\r\n }\r\n }, [previewInitialized, initId, dispatch]);\r\n\r\n useEffect(() => {\r\n loadContent();\r\n }, [loadContent]);\r\n\r\n const filtersComponent = (\r\n \r\n );\r\n const filtersTagsComponent = ;\r\n const searchComponent = ;\r\n const additionalActionsComponent = (\r\n \r\n );\r\n\r\n return (\r\n
\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n
\r\n {activeView === MessagesViewType.Tiles ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default withPageLayout(MyMessages);\r\n","import i18n from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport Backend from 'i18next-http-backend';\r\nimport moment from 'moment';\r\nimport 'moment/min/locales.min';\r\n\r\nexport const defaultLocale = (): string => {\r\n return 'en-US';\r\n};\r\n\r\ni18n\r\n // load translation using http -> see /public/locales (i.e. https://github.com/i18next/react-i18next/tree/master/example/react/public/locales)\r\n // learn more: https://github.com/i18next/i18next-http-backend\r\n .use(Backend)\r\n // pass the i18n instance to react-i18next.\r\n .use(initReactI18next)\r\n // init i18next\r\n // for all options read: https://www.i18next.com/overview/configuration-options\r\n .init({\r\n load: 'currentOnly',\r\n fallbackLng: defaultLocale(),\r\n interpolation: {\r\n escapeValue: false // not needed for react as it escapes by default\r\n },\r\n backend: {\r\n queryStringParams: { v: process.env.COMMIT_HASH }\r\n }\r\n });\r\n\r\nexport const updateLocale = (): void => {\r\n const search = window.location.search;\r\n const params = new URLSearchParams(search);\r\n const locale = params.get('locale') || defaultLocale();\r\n i18n.changeLanguage(locale);\r\n moment.locale(locale);\r\n};\r\n\r\nexport const formatDate = (date: string | Date): string => {\r\n if (!date) return date;\r\n return moment(date).format('DD/MM HH:mm');\r\n};\r\n\r\nexport const formatDateUtc = (date: string | Date): string => {\r\n if (!date) return date;\r\n return moment.utc(date).format('DD/MM HH:mm');\r\n};\r\n\r\nexport const formatNumber = (number: number): string => {\r\n const search = window.location.search;\r\n const params = new URLSearchParams(search);\r\n const locale = params.get('locale') || defaultLocale();\r\n return Number(number).toLocaleString(locale);\r\n};\r\n\r\nexport const formatDuration = (startDate: string, endDate: string): string => {\r\n let result = '';\r\n const search = window.location.search;\r\n const params = new URLSearchParams(search);\r\n const locale = params.get('locale') || defaultLocale();\r\n if (startDate && endDate) {\r\n const difference = moment(endDate).diff(moment(startDate));\r\n const totalDuration = moment.duration(difference);\r\n // Handling the scenario of duration being more than 24 hrs as it is not done by moment.js.\r\n const hh = ('0' + Math.floor(totalDuration.asHours())).slice(-2);\r\n result =\r\n formatNumber(parseInt(hh)) +\r\n moment.utc(totalDuration.asMilliseconds()).locale(locale).format(':mm:ss');\r\n }\r\n return result;\r\n};\r\n\r\nexport default i18n;\r\n","import { makeStyles, tokens, shorthands } from '@configs/theme/v9';\r\n\r\nexport const useStyles = makeStyles({\r\n errorMessage: {\r\n ...shorthands.margin('1rem'),\r\n display: 'flex',\r\n flexGrow: 1,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: tokens.colorPaletteRedForeground3\r\n }\r\n});","import React, { useEffect } from 'react';\r\nimport { useParams, useSearchParams } from 'react-router-dom';\r\nimport { Text } from '@fluentui/react-components';\r\nimport { app, dialog } from '@microsoft/teams-js';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useStyles } from './ErrorPage.styles';\r\n\r\nconst ErrorPage = (): React.ReactElement => {\r\n const { t } = useTranslation();\r\n const styles = useStyles();\r\n const { id } = useParams();\r\n const [searchParams] = useSearchParams();\r\n const message = searchParams.get('message');\r\n useEffect(() => {\r\n app.notifySuccess();\r\n if (app.getFrameContext() && app.getFrameContext() !== 'settings') {\r\n dialog.update.resize({\r\n height: 100,\r\n width: 500\r\n });\r\n }\r\n }, []);\r\n\r\n function parseErrorMessage(): string {\r\n if (!!message) {\r\n return t(message) ?? message;\r\n } else if (id === '401') {\r\n return t('UnauthorizedErrorMessage');\r\n } else if (id === '403') {\r\n return t('ForbiddenErrorMessage');\r\n }\r\n\r\n return t('GeneralErrorMessage');\r\n }\r\n\r\n return {parseErrorMessage()};\r\n};\r\n\r\nexport default ErrorPage;\r\n","import { makeStyles, shorthands } from '@configs/theme/v9';\r\n\r\nexport const usePageStyles = makeStyles({\r\n page: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: 'transparent',\r\n height: '100%'\r\n },\r\n scrollable: {\r\n position: 'initial',\r\n overflowY: 'auto'\r\n },\r\n customActions: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n ...shorthands.gap('12px'),\r\n flexWrap: 'nowrap'\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\nimport { usePageStyles } from './AdminPage.styles';\r\nimport { MessageAdminListView } from '@components/MessageListView';\r\nimport { useAppDispatch, useStateSelector } from '@state';\r\n\r\nimport { loadMessagesForAdmin } from '@state/messages';\r\nimport ActionsPanel from '@components/ActionsBar';\r\nimport { MessageFiltersPanelAction } from '@components/MessageFiltersPanelAction';\r\nimport { MessageSearchBox } from '@components/controls/MessageSearchBox';\r\n\r\nimport { useTranslation } from 'react-i18next';\r\nimport { withPageLayout } from '../PageLayout';\r\nimport { loadMessageByAdmin } from '@state/selectedMessage';\r\nimport { Button, mergeClasses } from '@fluentui/react-components';\r\nimport Loader from '@components/controls/common/Loader';\r\nimport MessageFilterTags from '@components/MessageFilterTags';\r\nimport { SizeModeType } from '@models/ui/SizeModeType';\r\nimport { MessageInstanceAdminBasicData } from '@api/models/MessageInstanceAdminBasicData';\r\nimport { useScrollBarStyle } from '@components/controls/common/scrollbar.styles';\r\n\r\nconst AdminPage: React.FunctionComponent = () => {\r\n const dispatch = useAppDispatch();\r\n const { t } = useTranslation();\r\n const styles = usePageStyles();\r\n const scrollBarStyle = useScrollBarStyle();\r\n\r\n const sizeMode = useStateSelector((c) => c.app.sizeMode);\r\n const adminMessages = useStateSelector((x) => x.messages.adminMessages);\r\n const loading = useStateSelector((x) => x.messages.loading);\r\n const links = useStateSelector((x) => x.meta.links);\r\n\r\n const loadContent = React.useCallback(() => dispatch(loadMessagesForAdmin()), [dispatch]);\r\n const loadMessage = React.useCallback(\r\n (m: MessageInstanceAdminBasicData) => {\r\n dispatch(loadMessageByAdmin(m));\r\n },\r\n [dispatch]\r\n );\r\n\r\n useEffect(() => {\r\n loadContent();\r\n }, [loadContent]);\r\n\r\n const additionalActionsComponent =\r\n sizeMode === SizeModeType.Full ? (\r\n
\r\n \r\n \r\n \r\n
\r\n ) : (\r\n <>\r\n );\r\n const filtersComponent = (\r\n \r\n );\r\n const filtersTagsComponent = ;\r\n const searchComponent = ;\r\n\r\n return (\r\n
\r\n \r\n\r\n {loading ? (\r\n \r\n ) : (\r\n
\r\n \r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default withPageLayout(AdminPage);\r\n","import { makeStyles, shorthands, typographyStyles, tokens } from '@fluentui/react-components';\r\n\r\nexport const usePageStyles = makeStyles({\r\n page: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: 'transparent',\r\n height: '100%'\r\n },\r\n scrollable: {\r\n position: 'initial',\r\n overflowY: 'auto'\r\n },\r\n messageWrapper: {\r\n ...shorthands.flex(1),\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n height: '100%',\r\n '>*': {\r\n ...typographyStyles.title3,\r\n ...shorthands.padding('0px', '32px'),\r\n textAlign: 'center'\r\n }\r\n },\r\n managerPicker: {\r\n width: '265px'\r\n },\r\n managerPickerMobile: {\r\n width: '100%',\r\n maxWidth: '100%',\r\n '> *': {\r\n backgroundColor: tokens.colorNeutralBackground6\r\n },\r\n '& button': {\r\n backgroundColor: 'inherit'\r\n }\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\nimport MessageTileView from '@components/MessageTileView';\r\nimport { usePageStyles } from './DesignatedApproverPage.styles';\r\nimport { CommonMessageListView } from '@components/MessageListView';\r\nimport { MessagesViewType } from '@models/ui/MessagesViewType';\r\nimport { useAppDispatch, useStateSelector } from '@state';\r\nimport { loadMessagesForApprover } from '@state/messages';\r\nimport ActionsPanel from '@components/ActionsBar';\r\nimport { SizeModeType } from '@models/ui/SizeModeType';\r\nimport { MessageFiltersPanelAction } from '@components/MessageFiltersPanelAction';\r\nimport { FeedbackDialogAction } from '@components/FeedbackDialogAction';\r\nimport { MessageSearchBox } from '@components/controls/MessageSearchBox';\r\n\r\nimport { useTranslation } from 'react-i18next';\r\nimport { withPageLayout } from '../PageLayout';\r\nimport { loadMessageByApprover } from '@state/selectedMessage';\r\nimport { PeoplePicker } from '@components/controls/common/PeoplePicker';\r\nimport { setSLTLeaderFilter } from '@state/filters';\r\nimport { UserBasicData } from '@api/models/UserBasicData';\r\nimport { searchSLTUsers } from '@api/services/users';\r\nimport Loader from '@components/controls/common/Loader';\r\nimport { Text, mergeClasses } from '@fluentui/react-components';\r\nimport MessageFilterTags from '@components/MessageFilterTags';\r\nimport { MessageInstanceBasicContentModel } from '@models/data/MessageInstanceBasicContentModel';\r\nimport { useScrollBarStyle } from '@components/controls/common/scrollbar.styles';\r\n\r\nconst DesignatedApprover: React.FunctionComponent = () => {\r\n const dispatch = useAppDispatch();\r\n const { t } = useTranslation();\r\n const styles = usePageStyles();\r\n const scrollBarStyle = useScrollBarStyle();\r\n\r\n const { sizeMode, containerWidth } = useStateSelector((c) => c.app);\r\n const filteredSLTLeader = useStateSelector((c) => c.filters.filteredSLTLeader);\r\n const { messages, loading } = useStateSelector((x) => x.messages);\r\n\r\n const loadContent = React.useCallback(() => dispatch(loadMessagesForApprover()), [dispatch]);\r\n const onSelectSLTLeader = React.useCallback(\r\n (leader: UserBasicData | undefined) => {\r\n dispatch(setSLTLeaderFilter(leader));\r\n loadContent();\r\n },\r\n [dispatch, loadContent]\r\n );\r\n\r\n const loadMessage = React.useCallback(\r\n (m: MessageInstanceBasicContentModel) => {\r\n dispatch(loadMessageByApprover(m.id));\r\n },\r\n [dispatch]\r\n );\r\n\r\n const [activeView, setActiveView] = React.useState(MessagesViewType.Tiles);\r\n\r\n useEffect(() => {\r\n loadContent();\r\n }, [loadContent]);\r\n\r\n const filtersComponent = (\r\n \r\n );\r\n\r\n const filtersTagsComponent = ;\r\n const searchComponent = ;\r\n const additionalActionsComponent = (\r\n \r\n );\r\n\r\n const extraFiltersComponent = (\r\n \r\n );\r\n\r\n return (\r\n
\r\n \r\n {filteredSLTLeader &&\r\n (loading ? (\r\n \r\n ) : (\r\n
\r\n {activeView === MessagesViewType.Tiles ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n ))}\r\n\r\n {!filteredSLTLeader && (\r\n
\r\n {t('DesignatedApproverPage.NoSLTSelected')}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default withPageLayout(DesignatedApprover);\r\n","import { makeStyles, tokens } from '@fluentui/react-components';\r\nexport const useStyles = makeStyles({\r\n errorMessage: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: tokens.colorPaletteRedForeground3\r\n }\r\n});\r\n","import React, { useEffect } from 'react';\r\nimport { app, dialog } from '@microsoft/teams-js';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Text } from '@fluentui/react-components';\r\nimport { useStyles } from './NotFoundPage.styles';\r\n\r\nconst NotFoundPage = (): React.ReactElement => {\r\n const { t } = useTranslation();\r\n const styles = useStyles();\r\n useEffect(() => {\r\n app.notifySuccess();\r\n if (app.getFrameContext() && app.getFrameContext() !== 'settings') {\r\n dialog.update.resize({\r\n height: 100,\r\n width: 300\r\n });\r\n }\r\n }, []);\r\n\r\n return {t('PageNotFound')};\r\n};\r\n\r\nexport default NotFoundPage;\r\n","import { makeStyles } from \"@fluentui/react-components\";\r\n\r\nexport const usePageStyles = makeStyles({\r\n page: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n backgroundColor: 'transparent',\r\n height: '100%'\r\n },\r\n scrollable: {\r\n position: 'initial',\r\n overflowY: 'auto'\r\n }\r\n});\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\nimport MessageTileView from '@components/MessageTileView';\r\nimport { usePageStyles } from './MoreMessages.styles';\r\n\r\nimport { CommonMessageListView } from '@components/MessageListView';\r\nimport { MessagesViewType } from '@models/ui/MessagesViewType';\r\nimport { useAppDispatch, useStateSelector } from '@state';\r\n\r\nimport { loadMyMoreMessages } from '@state/messages';\r\nimport ActionsPanel from '@components/ActionsBar';\r\n\r\nimport { SizeModeType } from '@models/ui/SizeModeType';\r\nimport { MessageFiltersPanelAction } from '@components/MessageFiltersPanelAction';\r\nimport { FeedbackDialogAction } from '@components/FeedbackDialogAction';\r\nimport { MessageSearchBox } from '@components/controls/MessageSearchBox';\r\n\r\nimport { useTranslation } from 'react-i18next';\r\nimport { withPageLayout } from '../PageLayout';\r\nimport { loadMyMessage } from '@state/selectedMessage';\r\nimport Loader from '@components/controls/common/Loader';\r\nimport MessageFilterTags from '@components/MessageFilterTags';\r\nimport { MessageInstanceBasicContentModel } from '@models/data/MessageInstanceBasicContentModel';\r\nimport { mergeClasses } from '@fluentui/react-components';\r\nimport { useScrollBarStyle } from '@components/controls/common/scrollbar.styles';\r\n\r\nconst MyMessages: React.FunctionComponent = () => {\r\n const dispatch = useAppDispatch();\r\n const { t } = useTranslation();\r\n const styles = usePageStyles();\r\n const scrollBarStyle = useScrollBarStyle();\r\n\r\n const [sizeMode, containerWidth] = useStateSelector((c) => [\r\n c.app.sizeMode,\r\n c.app.containerWidth\r\n ]);\r\n\r\n const { messages, loading } = useStateSelector((x) => x.messages);\r\n const [activeView, setActiveView] = React.useState(MessagesViewType.Tiles);\r\n\r\n const loadContent = React.useCallback(() => dispatch(loadMyMoreMessages()), [dispatch]);\r\n const loadMessage = React.useCallback(\r\n (m: MessageInstanceBasicContentModel) => {\r\n dispatch(loadMyMessage(m.id));\r\n },\r\n [dispatch]\r\n );\r\n\r\n useEffect(() => {\r\n loadContent();\r\n }, [loadContent]);\r\n\r\n const filtersComponent = (\r\n \r\n );\r\n const filtersTagsComponent = ;\r\n const searchComponent = ;\r\n const additionalActionsComponent = (\r\n \r\n );\r\n\r\n return (\r\n
\r\n \r\n {loading ? (\r\n \r\n ) : (\r\n
\r\n {activeView === MessagesViewType.Tiles ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n )}\r\n
\r\n );\r\n};\r\n\r\nexport default withPageLayout(MyMessages);\r\n","import * as React from 'react';\r\nimport { Route, Routes } from 'react-router-dom';\r\nimport { Suspense, useEffect, useState } from 'react';\r\n\r\nimport MyMessagesPage from './pages/MyMessagesPage';\r\n\r\nimport { routes } from './configs/pages';\r\nimport styles from './App.module.scss';\r\nimport { ThemeProvider } from '@fluentui/react';\r\nimport { FluentProvider } from '@fluentui/react-components';\r\nimport { app } from '@microsoft/teams-js';\r\nimport i18n, { updateLocale } from './i18n';\r\nimport { AppThemeV8Context, getV8TeamsTheme } from '@configs/theme/v8';\r\nimport { AppThemeV9Context, getV9TeamsThemeByName } from '@configs/theme/v9';\r\nimport ErrorPage from './pages/ErrorPage';\r\nimport AdminPage from './pages/AdminPage';\r\nimport DesignatedApproverPage from './pages/DesignatedApproverPage';\r\nimport NotFoundPage from './pages/NotFoundPage';\r\nimport MoreMessagesPage from './pages/MoreMessagesPage';\r\n\r\nexport const App = (): React.ReactElement => {\r\n const [theme, setTheme] = useState(undefined);\r\n const [initId, setInitId] = useState(undefined);\r\n useEffect(() => {\r\n const init = async (): Promise => {\r\n if (!app.isInitialized()) {\r\n await app.initialize();\r\n }\r\n const context = await app.getContext();\r\n if (context.page.subPageId) {\r\n setInitId(parseInt(context.page.subPageId));\r\n }\r\n app.registerOnThemeChangeHandler((t) => {\r\n setTheme(t);\r\n });\r\n setTheme(context.app?.theme);\r\n };\r\n\r\n init().catch(console.log);\r\n\r\n updateLocale();\r\n }, []);\r\n\r\n if (!theme) return <>;\r\n\r\n const v9Theme = getV9TeamsThemeByName(theme);\r\n const v8Theme = getV8TeamsTheme(v9Theme);\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\nexport default App;\r\n","import { Theme } from \"@fluentui/react-components\";\r\nimport { Theme as ThemeV8 } from \"@fluentui/react\";\r\nimport { createV8Theme } from \"@fluentui/react-migration-v8-v9\";\r\n\r\nexport const getV8TeamsTheme = (themeV9: Theme): ThemeV8 => {\r\n const brandTeams = {\r\n 10: `#2b2b40`,\r\n 20: `#2f2f4a`,\r\n 30: `#333357`,\r\n 40: `#383966`,\r\n 50: `#3d3e78`,\r\n 60: `#444791`,\r\n 70: `#4f52b2`,\r\n 80: `#5b5fc7`,\r\n 90: `#7579eb`,\r\n 100: `#7f85f5`,\r\n 110: `#9299f7`,\r\n 120: `#aab1fa`,\r\n 130: `#b6bcfa`,\r\n 140: `#c5cbfa`,\r\n 150: `#dce0fa`,\r\n 160: `#e8ebfa`\r\n };\r\n\r\n return createV8Theme(brandTeams, themeV9, false);\r\n}\r\n","import * as React from 'react';\r\nimport { createRoot } from 'react-dom/client';\r\nimport { Provider } from 'react-redux';\r\nimport { store } from './state';\r\nimport App from './App';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport { initializeIcons } from '@fluentui/react';\r\n\r\n// Get the application-wide store instance, prepopulating with state from the server where available.\r\n\r\ninitializeIcons(); // Initialize Fluent UI icons\r\n\r\nconst container = document.getElementById('root');\r\nif (container) {\r\n const root = createRoot(container); // createRoot(container!) if you use TypeScript\r\n root.render(\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n"],"sourceRoot":""}