{"version":3,"sources":["i18n.ts","serviceWorkerRegistration.ts","shared/components/styles/colors.ts","serviceWorkerWrapper.tsx","shared/components/skeletons/skeletonCards.tsx","shared/enums/contentType.enum.ts","shared/components/navigations/actionMenuPages.tsx","shared/components/organisms/boxSaveCancelButtons.tsx","shared/components/atoms/actionButtons.tsx","shared/templates/modalTemplate.tsx","shared/components/form/controlledTextInput.tsx","shared/components/form/controlledPushNoticeCheckbox.tsx","shared/components/molecules/infoTooltip.tsx","shared/components/organisms/labelWithToolTip.tsx","shared/helpers/consoleHelper.ts","shared/services/redux/constants/userTypes.ts","shared/services/redux/reducers/authReducer.ts","shared/services/redux/constants/tagsTypes.ts","shared/services/redux/reducers/tagsReducer.ts","shared/services/redux/constants/businessAreaTypes.ts","shared/services/redux/reducers/businessAreaReducer.ts","shared/services/redux/constants/permissionTypes.ts","shared/services/redux/reducers/permissionsReducer.ts","shared/services/redux/constants/menuListTypes.ts","shared/services/redux/reducers/menuListReducer.ts","shared/services/redux/constants/noticesTypes.ts","shared/services/redux/reducers/notificationReducer.ts","shared/services/redux/reducers/index.ts","shared/services/identity/userManager.tsx","shared/services/redux/store.ts","shared/services/api/axiosInstanceService.ts","shared/services/api/baseAPI.ts","shared/services/api/tagsAPI.ts","shared/services/redux/actions/tagsActions.ts","shared/services/api/businessAreasAPI.ts","shared/services/redux/actions/businessAreasAction.ts","shared/components/form/businessAreaControlledSelect.tsx","shared/helpers/filteredTags.ts","shared/helpers/permissionHelper.ts","shared/helpers/companyHelper.ts","shared/components/atoms/globalTagIcon.tsx","shared/components/form/tagsControlledSelected.tsx","shared/components/form/segmentLocationRoleTags.tsx","shared/services/api/notificationAPI.ts","modules/home/components/createNoticeModal.tsx","shared/components/navigations/menuListItem.tsx","shared/services/api/navigationAPI.ts","shared/services/redux/actions/getMenuList.ts","shared/components/navigations/menuList.tsx","shared/components/navigations/drawerNavigation.tsx","shared/components/atoms/notificationListItem.tsx","shared/services/redux/actions/notificationActions.ts","shared/components/organisms/notificationFeed.tsx","shared/services/utils/url.ts","shared/components/atoms/userAvatar.tsx","shared/services/api/companyAPI.ts","shared/components/molecules/companySelect.tsx","shared/components/atoms/confirmDialog.tsx","shared/enums/routes.enum.ts","shared/services/api/employeeApi.ts","shared/services/redux/actions/authAction.ts","shared/services/api/documentAPI.ts","shared/helpers/idGenerator.ts","shared/components/organisms/profileFeed.tsx","modules/groups/components/groupItemSimple.tsx","shared/services/api/groupAPI.ts","shared/components/organisms/groupListFeed.tsx","shared/components/atoms/scrollToTop.tsx","shared/templates/appTemplate.tsx","assets/images/Instalco@2.png","shared/components/organisms/authHeader.tsx","shared/components/organisms/pageHeader.tsx","shared/helpers/useInterval.ts","modules/notfound/pages/notfoundPage.tsx","shared/components/atoms/generateActionButtonsIcons.tsx","shared/services/api/contentPageAPI.ts","shared/components/atoms/mainPageTags.tsx","modules/news/components/newsModal.tsx","modules/home/components/feedNewsItem.tsx","modules/home/components/feedFilter.tsx","shared/components/organisms/emptyDataComponent.tsx","shared/components/atoms/actionMenu.tsx","shared/components/form/controlledCommentInput.tsx","shared/helpers/createFormData.ts","shared/services/api/replyAPI.ts","modules/groups/components/actionButtonsContent.tsx","modules/groups/components/postImageModal.tsx","shared/components/atoms/validTypes.ts","shared/components/styles/cardCorner.tsx","modules/groups/components/actionContentFiles.tsx","modules/groups/components/editReplyItem.tsx","modules/groups/components/likeReplyButton.tsx","modules/groups/components/replyItem.tsx","shared/services/api/postAPI.ts","modules/groups/components/likePostButton.tsx","modules/groups/components/editPostItem.tsx","modules/home/components/feedGroupItem.tsx","modules/home/components/pinnedPageCardMasonry.tsx","shared/services/api/feedAPI.ts","modules/home/pages/homePage.tsx","shared/components/atoms/mainContentHeader.tsx","shared/components/atoms/mainContentText.tsx","shared/components/atoms/mainContentImage.tsx","shared/templates/pageTemplate.tsx","modules/menu/pages/menuPage.tsx","shared/components/atoms/search.tsx","shared/components/atoms/useDebounce.tsx","shared/enums/sorting.enum.ts","modules/news/components/newsItem.tsx","modules/news/pages/newsListPage.tsx","shared/components/form/controlledDatePicker.tsx","shared/components/form/controlledEditorInput.tsx","shared/components/form/imageDropZone.tsx","shared/schemas/contentPageNewsSchema.ts","shared/components/form/controlledSwitchNorway.tsx","modules/news/pages/createNewsPage.tsx","modules/news/pages/newsPage.tsx","shared/components/skeletons/skeletonList.tsx","modules/document/components/documentItem.tsx","modules/document/pages/documentListPage.tsx","modules/gallery/pages/galleryListPage.tsx","assets/images/image-holder.jpeg","modules/gallery/components/galleryItemCard.tsx","modules/gallery/components/galleryThumbs.tsx","modules/gallery/components/galleryCarousel.tsx","modules/gallery/pages/galleryPage.tsx","modules/groups/components/groupItem.tsx","shared/enums/parentCompany.enum.ts","modules/groups/pages/groupListPage.tsx","modules/groups/components/postCard.tsx","modules/groups/components/newContentInGroup.tsx","modules/groups/components/groupMemberListModal.tsx","modules/groups/components/groupTagsListModal.tsx","shared/components/form/employeeControlledSelected.tsx","shared/services/api/groupMemberAPI.ts","modules/groups/components/addGroupMembersModal.tsx","modules/groups/pages/groupPage.tsx","shared/services/utils/reactHelpers.tsx","shared/components/form/controlledSwitch.tsx","shared/components/form/controlledRadioColors.tsx","shared/schemas/groupSchema.ts","modules/groups/pages/createGroupPage.tsx","modules/groups/pages/editGroupPage.tsx","shared/services/api/improvementAPI.ts","modules/proposals/components/proposalForm.tsx","shared/components/organisms/dataGrid.tsx","shared/enums/proposals.enum.ts","modules/proposals/components/proposalDataGrid.tsx","modules/proposals/pages/proposalListPage.tsx","shared/components/form/controlledSelect.tsx","modules/proposals/components/proposalProcess.tsx","modules/proposals/components/proposalOverview.tsx","modules/proposals/components/proposalLog.tsx","modules/proposals/components/proposalNewNote.tsx","modules/proposals/components/proposalNotes.tsx","modules/proposals/pages/proposalPage.tsx","modules/contact/components/contactModal.tsx","shared/services/api/contactAPI.ts","shared/schemas/contactSchema.ts","modules/contact/components/createContactModal.tsx","modules/contact/pages/contactListPage.tsx","modules/contact/pages/contactPage.tsx","modules/company/components/companyEditModal.tsx","modules/company/components/companyCreateModal.tsx","modules/company/pages/companyListPage.tsx","modules/company/pages/companyPage.tsx","modules/employee/components/employeeModal.tsx","shared/components/form/controlledCompanySelect.tsx","shared/components/form/permissionsControlledSelect.tsx","shared/schemas/userSchema.ts","modules/employee/components/createEmployeeModal.tsx","modules/employee/components/editEmployeeModal.tsx","modules/employee/components/tagListItem.tsx","shared/schemas/tagSchema.ts","modules/employee/components/tagModal.tsx","shared/services/api/permissionsAPI.ts","modules/employee/components/autoCompleteForFilter.tsx","modules/employee/components/filterAccordion.tsx","shared/helpers/hooks/useIsMounted.ts","modules/employee/pages/employeeListPage.tsx","shared/services/redux/actions/permissionsAction.ts","modules/news/pages/editNewsPage.tsx","shared/schemas/contentPageSchema.ts","modules/news/pages/createNewsListPage.tsx","shared/components/form/controlledCanHaveChildren.tsx","modules/menu/pages/createMenuPage.tsx","modules/news/pages/editNewsListPage.tsx","modules/menu/pages/editMenuPage.tsx","shared/components/form/fileDropZone.tsx","shared/enums/sustainabilityTab.enum.ts","modules/gallery/pages/createGalleryPage.tsx","modules/document/pages/editDocumentListPage.tsx","modules/document/pages/createDocumentListPage.tsx","modules/gallery/pages/editGalleryPage.tsx","modules/directMessages/pages/directMessagePage.tsx","shared/services/api/baseAPIV2.ts","shared/enums/projectStatus.enum.ts","shared/services/api/sustainabilityAPI.ts","shared/helpers/hooks/useFetchBusinessAreas.tsx","shared/helpers/hooks/useFetchTags.tsx","shared/helpers/hooks/useMobile.ts","modules/SustainabilityReport/hooks/useStatusInfo.tsx","modules/SustainabilityReport/components/SustainabilityStatusBadge.tsx","modules/SustainabilityReport/components/sustainabilityDataGrid.tsx","modules/SustainabilityReport/components/sustainabilityFilter.tsx","modules/SustainabilityReport/components/sustainabilityReportProject.tsx","modules/SustainabilityReport/components/sustainabilityCertifiedProject.tsx","modules/SustainabilityReport/components/sustainabilityEditFab.tsx","shared/templates/modalSustainabilityTemplate.tsx","shared/helpers/hooks/useFetchEmployeesByCompanyId.tsx","shared/enums/companyType.enum.ts","shared/helpers/hooks/useFetchApproverUsers.tsx","shared/enums/tagType.enum.ts","shared/components/form/formErrorSummary.tsx","shared/schemas/sustainabilityReportCreateSchema.ts","shared/services/api/options/companyOptions.ts","shared/components/form/controlledCompanySelectHook.tsx","shared/helpers/hooks/useFetchCompanies.tsx","shared/helpers/getNestedFormErrors.ts","modules/SustainabilityReport/form/controlledCheckBox.tsx","modules/SustainabilityReport/components/sustainabilityFormTexts.tsx","modules/SustainabilityReport/form/controlledAutocompleteDropdown.tsx","modules/SustainabilityReport/form/controlledDatePickerDense.tsx","modules/SustainabilityReport/form/controlledTextInputDense.tsx","modules/SustainabilityReport/components/sustainabilityCreateForm.tsx","shared/enums/meetingPlan.enum.ts","shared/schemas/meetingPlanSchema.ts","shared/services/api/meetingPlanAPI.ts","modules/SustainabilityReport/form/controlledRadioButtons.tsx","modules/SustainabilityReport/form/models/sustainabilityMeetingPlanOptions.ts","modules/SustainabilityReport/components/sustainabilityMeetingPlanForm.tsx","modules/SustainabilityReport/components/sustainabilityCreateModal.tsx","shared/services/api/statisticsAPI.ts","modules/SustainabilityReport/components/sustainabilityStatisticsSumCard.tsx","modules/SustainabilityReport/components/sustainabilityStatisticsLeaderboardRow.tsx","modules/SustainabilityReport/components/sustainabilityStatisticsLeaderboard.tsx","modules/SustainabilityReport/components/sustainabilityStatisticsDashboardSkeleton.tsx","modules/SustainabilityReport/components/sustainabilityStatisticsDashboard.tsx","modules/SustainabilityReport/pages/sustainabilityReportListPage.tsx","shared/helpers/hooks/useFetchContentPageById.tsx","shared/helpers/hooks/useClearFormState.ts","shared/components/form/typeOfCompanyControlledSelected.tsx","shared/schemas/sustainabilityReportEditSchema.ts","modules/SustainabilityReport/components/sustainabilityDialogModal.tsx","shared/enums/customerSurvey.enum.ts","modules/SustainabilityReport/components/sustainabilityEditActionButtons.tsx","modules/SustainabilityReport/components/sustainabilityCheckboxesInstallation.tsx","modules/SustainabilityReport/components/sustainabilityCheckboxesEngineering.tsx","modules/SustainabilityReport/components/sustainabilityCheckboxesIndustry.tsx","modules/SustainabilityReport/components/sustainabilityEditCheckboxes.tsx","modules/SustainabilityReport/components/sustainabilitySubmitButton.tsx","modules/SustainabilityReport/components/sustainabilityEditForm.tsx","shared/helpers/hooks/useSaveFormState.ts","shared/helpers/hooks/useGetSavedFormState.ts","shared/schemas/customerSurvey.ts","shared/services/api/customerSurveysAPI.ts","modules/SustainabilityReport/form/models/sustainnabilityCustomerSurveyOptions.ts","shared/enums/sustainabilityLogStatus.enum.ts","modules/SustainabilityReport/components/sustainabilityCustomerSurveyForm.tsx","modules/SustainabilityReport/components/sustainabilityLogCard.tsx","modules/SustainabilityReport/components/sustainabilityLog.tsx","modules/SustainabilityReport/pages/sustainabilityReportDetailsPage.tsx","modules/SustainabilityReport/hooks/useFetchSustainabilityReportById.tsx","shared/schemas/contentPageSustainabilitySchema.ts","modules/SustainabilityReport/pages/sustainabilityEditReportListPage.tsx","shared/routes/pageRoutes.tsx","modules/auth/pages/loginPage.tsx","shared/routes/unauthorizeRoutes.tsx","shared/routes/mainRoutes.tsx","modules/auth/pages/silentRenewPage.tsx","modules/auth/pages/callbackPage .tsx","App.tsx","reportWebVitals.ts","modules/offline/offline.tsx","index.tsx"],"names":["resources","en","common","se","no","fi","i18n","use","initReactI18next","init","ns","defaultNS","lng","interpolation","escapeValue","isLocalhost","Boolean","window","location","hostname","match","registerValidSW","swUrl","config","navigator","serviceWorker","register","then","registration","onupdatefound","installingWorker","installing","onstatechange","state","controller","console","log","onUpdate","onSuccess","catch","error","URL","process","href","origin","addEventListener","fetch","headers","response","contentType","get","status","indexOf","ready","unregister","reload","onOffline","checkValidServiceWorker","PETROL","PETROL_SOFT","GRAY_DARK","GRAY_MEDIUM","GRAY_LIGHT","GRAY_FAIR","WHITE","YELLOW","ORANGE","BLUE","RED","GREEN_SOFT","PURPLE","GROUP_PETROL","GROUP_ORANGE","GROUP_GREEN","GROUP_PURPLE","GROUP_BEIGE","GROUP_GRAPHITE","GROUP_DAWN","GROUP_YELLOW","GROUP_MAROON","COMPANY_PETROL","COMPANY_GREEN","COMPANY_BLUE","COMPANY_ORANGE_SOFT","COMPANY_RED","BADGE_RED","BADGE_ORANGE","BADGE_YELLOW","BADGE_BLUE","BADGE_GREEN","ServiceWorkerWrapper","t","useTranslation","React","useState","showReload","setShowReload","setAppOffline","setWaitingWorker","onSWUpdate","waiting","useEffect","Paper","sx","position","top","left","right","zIndex","p","backdropFilter","backgroundColor","alpha","Colors","color","fontWeight","textAlign","square","elevation","IconButton","size","borderColor","ml","onClick","Close","SkeletonCards","rows","cols","cardHeight","rowArray","Array","from","keys","colArray","columnTemplate","split","slice","join","Box","width","map","rowItem","display","gridTemplateColumns","gridGap","colItem","Typography","variant","Skeleton","height","my","borderRadius","defaultProps","ContentTypeEnum","ActionMenuPages","props","type","menuItem","showActions","anchorEl","handleClose","showHomePageNote","getIcon","iconToShow","InfoOutlined","DescriptionOutlined","ReceiptLongOutlined","PhotoAlbum","InsertDriveFileOutlined","Menu","open","onClose","MenuListProps","anchorOrigin","vertical","horizontal","transformOrigin","px","title","m","NewsListPage","MenuItem","component","Link","to","id","e","BoxSaveCancelButtons","onCancel","linkTo","saveDisabled","onDelete","showDeleteButton","mt","flexDirection","xs","md","justifyContent","Button","mr","disabled","undefined","ActionButtons","items","theme","useTheme","isMobile","useMediaQuery","breakpoints","down","bottom","flex","alignItems","mx","item","isButton","Fab","iconColor","icon","ID","ModalTemplate","content","secondaryAction","isOpen","Modal","transform","bgcolor","boxShadow","maxHeight","overflow","pb","CloseRounded","ControlledTextInput","name","label","helperText","multiline","fullWidth","placeholder","control","useFormContext","errors","useFormState","isError","errorMessage","Object","prototype","hasOwnProperty","call","message","render","field","TextField","margin","ControlledPushNoticeCheckbox","Grid","direction","container","FormLabel","FormControl","FormControlLabel","value","Checkbox","checked","onChange","target","InfoTooltip","infoContent","setOpen","handleTooltipClose","ClickAwayListener","onClickAway","Tooltip","PopperProps","disablePortal","disableFocusListener","disableHoverListener","disableTouchListener","LabelWithTooltip","pt","ConsoleHelper","warn","table","tabularData","properties","USER_LOGIN_REQUEST","USER_LOGIN_FAIL","USER_LOGIN_SUCCESS","USER_LOGOUT","GET_USER_DETAILS","CHANGE_USER_COMPANY","initialState","loading","isLoggedIn","authDetails","userDetails","userCompany","authReducer","action","payload","GET_ALL_TAGS_SUCCES","GET_ALL_TAGS_FAILED","GET_ALL_REQUEST","tags","getTagsLoading","TagsReducer","GET_BUSINESS_AREA_SUCCES","GET_BUSINESS_AREA_FAILED","businessAreas","getBusinessAreasLoading","BusinessAreaReducer","GET_PERMISSION_GROUP_SUCCES","GET_PERMISSION_GROUP_FAILED","GET_PERMISSION_GROUP_REQUEST","permissions","getPermissionsLoading","PermissionsReducer","GET_MENU_LIST_SUCCES","GET_MENU_LIST_FAILED","GET_MENU_LIST_REQUEST","menuList","getMenuLoading","MenuListReducer","GET_ALL_NOTICES_SUCCESS","GET_ALL_NOTICES_FAILED","GET_ALL_NOTICES_UNREAD_LENGTH","notifications","unreadNotificationsLength","getNotificationsLoading","NotificationReducer","rootReducer","combineReducers","oidc","oidcReducer","authState","tagsReducer","notificationReducer","businessAreaReducer","permissionsReducer","hostDomain","protocol","port","userManagerConfig","client_id","redirect_uri","response_type","scope","authority","post_logout_redirect_uri","silent_redirect_uri","automaticSilentRenew","filterProtocolClaims","loadUserInfo","max_age","userManager","createUserManager","persistConfig","key","storage","whitelist","persistedReducer","persistReducer","composedEnhancers","composeWithDevTools","store","createStore","applyMiddleware","thunk","loadUser","persistor","persistStore","AxiosInstance","axios","create","baseURL","timeout","defaults","paramsSerializer","params","qs","stringify","interceptors","data","request","a","getState","user","access_token","Authorization","Promise","reject","res","err","originalRequest","retry","post","put","delete","patch","BaseAPI","controllerPath","Get","GetAll","options","Create","req","CreateList","Update","updateNewsWithID","Delete","deleteItemWithQueryID","this","TagAPI","getTagsAction","companyID","dispatch","tagsAPI","sortDir","sortCol","pageSize","companyId","results","BusinessAreaAPI","getBusinessAreasAction","businessAreaAPI","BusinessAreaControlledSelect","Iprops","multiple","selectItems","formLabel","isSustainabilityForm","fontSize","readOnly","useErrorSummary","opacity","Autocomplete","forcePopupIcon","autoHighlight","getOptionLabel","option","isOptionEqualToValue","event","selectedOptions","renderOption","renderInput","border","inputProps","autoComplete","toString","style","cursor","locationsTags","filter","tag","rolesTags","competencesTags","getBusinessAreas","getPermissionsGroups","permissionGroups","sort","b","localeCompare","UserTypeEnum","GetAdminPermission","itemCompanyId","useSelector","isApproved","setIsApproved","userType","permissionGroup","userCompanyId","isSustainabilityApproverUserOrAdmin","employee","report","approverUser","isSustainabilityReporterUserOrAdmin","reporterUser","isParentCompany","isParent","GlobalTagIcon","PublicOutlined","TagsControlledSelected","useErrorSummery","optProps","SegmentLocationRoleTags","useDispatch","superAdminPermission","NotificationAPI","SetIsRead","SetAllRead","CreateNoticeModal","createNoticeModalSchema","yup","shape","required","max","sendNotice","sendEmail","businessAreaTags","of","locations","roles","formMethods","useForm","resolver","yupResolver","defaultValues","handleSubmit","reset","formState","formSubmit","tagIds","forEach","element","push","bTagIds","x","sendPush","api","toast","success","gutterBottom","onSubmit","MenuListItem","isFirst","index","activeIndex","renderForwardArrow","closeMobileMenu","setShowActions","showHomePageNoteModal","setShowHomePageNoteModal","setAnchorEl","hasCreatePermission","ListItem","disablePadding","canHaveChildren","edge","currentTarget","MoreVert","ListItemButton","pr","pl","minHeight","palette","primary","main","borderLeftWidth","borderLeftStyle","borderLeftColor","renderBorderColor","noWrap","length","lineHeight","wordBreak","ListItemIcon","minWidth","ArrowForward","stopPropagation","handleCloseActionMenu","arg","Divider","NavigationAPI","getMenuListAction","extraMenu","compId","requestOptions","isExternalUser","internalMenuIds","navapi","sortIndex","filteredMenu","includes","parentContentPageId","MenuList","selectedId","setSelectedId","menuToRender","setMenuToRender","currentParent","setCurrentParent","latestFoundNode","setLatestFoundNode","useRouteMatch","matchCreateEdit","matchGroup","matchProposal","matchSustainabilityReport","findNode","useCallback","array","returnValue","node","childItems","child","Number","foundNode","menuToShow","filteredResult","foundParentNode","PlayArrowOutlined","Contacts","ChatBubbleOutlineOutlined","WbIncandescentOutlined","BusinessRounded","ImportContactsRounded","GroupRounded","ChangeCircleOutlined","List","py","ArrowBackIos","ListItemText","primaryTypographyProps","country_CountryCode","HelpOutline","marginRight","DrawerNavigation","lg","dayjs","extend","relativeTime","NotificationListItem","fetchNotifications","setShowNotificationFeed","onClickItem","notificationApi","isRead","idForType","divider","AssessmentOutlined","secondary","secondaryTypographyProps","textOverflow","getNotificationsAction","unreadItems","unreadNumber","NotificationFeed","markAllNotificationsAsRead","fileUrl","token","UserAvatar","imageId","initials","Avatar","src","CompanyAPI","CompanySelect","selectedCompany","onChangeCompany","companyList","setCompanyList","fetchCompanyList","companyApi","companyOptions","pageIndex","disableClearable","selectedOption","propps","ConfirmDialogModal","dialogTitle","dialogText","confirmTextButton","cancelTextButton","confirmButtonClick","fullScreen","Dialog","DialogTitle","DialogContent","DialogContentText","DialogActions","autoFocus","RoutesEnum","EmployeeAPI","GetEmployeeMe","getEmployeeMe","employeeApi","result","company","DocumentAPI","GetDocumentImage","deleteDocumentWithQureryID","CreateFormData","lastId","getId","prefix","ProfileFeed","setShowProfileFeed","history","useHistory","inputId","employeeMe","showDialog","setShowDialog","temporaryCompany","setTemporaryCompany","setSelectedCompany","onModalConfirm","Start","lang","toLowerCase","changeLanguage","localStorage","setItem","JSON","changeCompanyPermission","updateEmployeeWithImageId","updatedEmployeeData","personName","notes","email","address","phone","profileImageDocumentId","resEmp","postProfileImage","file","documentApi","documentFile","FormData","append","resDocs","changeHandler","preventDefault","files","Container","mb","charAt","htmlFor","accept","startIcon","EditRounded","flexWrap","RestartAlt","signoutRedirect","Logout","GroupItemSimple","group","setShowGroup","groupColor","GroupAPI","DisableNotifications","groupId","EnableNotifications","GroupListFeed","setShowGroupList","setLoading","myGroups","setMyGroups","fetchGroups","groupApi","employeeId","ScrollToTop","pathname","useLocation","scrollTo","configure","autoClose","hideProgressBar","closeOnClick","pauseOnHover","draggable","AppTemplate","mainNavigation","mainContent","showNotificationFeed","showProfileFeed","showGroupList","showMenu","useMemo","createTheme","text","warning","info","background","paper","default","typography","h4","h5","h6","subtitle1","subtitle2","body2","button","textTransform","fontFamily","components","MuiCssBaseline","styleOverrides","body","svSE","ThemeProvider","CssBaseline","sm","maxWidth","alignContent","CircularProgress","AuthHeader","AppBar","Toolbar","InstalcoLogSmall","srcSet","padding","objectFit","alt","PageHeader","setShowMenu","setImageError","callback","interval","savedCallback","useRef","current","setInterval","clearInterval","useInterval","textDecoration","logo_DocumentId","onError","Badge","badgeContent","overlap","NotificationsNoneOutlined","AccountCircleOutlined","Collapse","in","PageNotfound","login","currentPath","signinRedirect","align","marginTop","GenerateActionButtonIcons","createLink","editLink","pinnedAction","isPinned","iconButtons","Add","buttonSize","Edit","ContentPageAPI","MainPageTags","show","Stack","spacing","btag","Chip","ltag","rtag","NewsModal","modalOpen","setModalOpen","imageError","newsLoading","setNewsLoading","newsItem","setNewsItem","getNewsData","newsapi","actionButtonPermission","CardHeader","avatar","subheader","publishDate","format","LinearProgress","Card","borderEndStartRadius","CardMedia","alignSelf","image","featuredImageDocumentId","featuredImageText","CardContent","parse","FeedNewsItem","parserOptions","replace","domNode","Element","featuredImageId","className","CardActions","disableSpacing","flexGrow","host","shareLink","clipboard","writeText","FeedFilter","showLocalNewsOption","instalcoNews","localNews","groupNews","setInstalcoNews","setLocalNews","setGroupNews","EmptyDataComponent","hideIcon","ActionMenu","children","ControlledCommentInput","InputProps","disableUnderline","createFormData","formData","entries","isArray","every","File","ReplyAPI","CreateReplyFormData","LikeReply","ActionButtonsContent","onAttachFile","validateFiles","newFiles","i","fileToAdd","AttachFile","CloseOutlined","KeyboardReturn","PostImageModal","onCloseModal","disableAutoFocus","CheckIfIsImage","CardCorner","unit","cornerColor","cornerSize","borderStyle","borderWidth","ActionContentFiles","currentFiles","removeCurrentFile","removeNewFile","showDelete","showModal","setShowModal","imageItem","setImageItem","mimeType","url","letterSpacing","createObjectURL","EditReplyItem","fetchPosts","setCurrentFiles","setNewFiles","ContentSchema","postId","documentList","documents","documentListId","updatedData","replyApi","remainFiles","onFileChangeDocumentsList","addedFiles","LikeReplyButton","reply","likeReply","setTimeout","like","ThumbUpAltOutlined","likes","ReplySchema","documentFileList","optional","ReplyItem","selectedReply","setSelectedReply","isReplyInputOpen","setIsReplyInputOpen","isReplyListOpen","setIsReplyListOpen","isReplyEditingOpen","setIsReplyEditingOpen","showDeleteDialog","setShowDeleteDialog","attachFileLoading","setAttachFileLoading","removeFile","deleteReply","number","Date","getTime","companyColor","companyName","wordWrap","whiteSpace","handleClickShowActionMenu","PostAPI","CreatePostFormData","LikePost","LikePostButton","likePost","postApi","EditPostItem","addedFiled","FeedGroupItem","isPostEditingOpen","setIsPostEditingOpen","deletePost","groupItem","sharePost","ShareOutlined","replies","PinnedPageCardMasonry","FeedAPI","HomePage","feedData","setFeedData","pinnedData","setPinnedData","showLocalNews","showParentCompanyNews","showGroupPosts","setRequestOptions","prev","fetchFeedData","feedApi","feedRes","fetchPinnedContentPages","contentPageApi","pinnedArray","robinsBloggRes","pageId","pinnedRes","groupName","contentParentId","contentParentTitle","PushPinOutlined","Masonry","columns","MainContentHeader","toolTipText","MainContentText","MainContentImage","onImageError","PageTemplate","showTags","header","featuredImage","headerContent","MenuPage","useParams","selectedImage","setSelectedImage","getContentPageById","contentApi","Search","bgColor","onTextChange","onClearText","startAdornment","InputAdornment","SortingEnum","useDebounce","delay","debouncedValue","setDebouncedValue","handler","clearTimeout","NewsItem","setPageIndex","searchText","setSearchText","loadingMore","setLoadingMore","setData","parentContentPage","setParentContentPage","debouncedSearchTerm","totalPages","setTotalPages","getData","newsAPI","Desc","getParentContentPageDetails","TransitionGroup","paddingTop","prePageIndex","ControlledDatePicker","noTooltip","LocalizationProvider","dateAdapter","AdapterDayjs","locale","sv","MobileDatePicker","inputFormat","mask","minDate","DesktopDatePicker","ControlledEditorInput","otherProps","relative_urls","convert_urls","remove_script_host","statusbar","language","menubar","content_css","paste_data_images","automatic_uploads","file_picker_types","images_file_types","file_picker_callback","cb","imgvalue","meta","input","document","createElement","setAttribute","onchange","reader","FileReader","onload","readAsDataURL","click","images_upload_handler","blobInfo","failure","blob","base64","plugins","toolbar","onEditorChange","ImageDropZone","onFilesChange","initialFile","validFile","setValidFile","setInvalidFile","validateAndAddFile","deleteFile","formatSize","c","d","Math","floor","parseFloat","toFixed","renderImage","originalFilename","onDragOver","onDragEnter","onDragLeave","onDrop","dataTransfer","CloudUpload","borderLeft","memo","ContentPageNewsSchema","companyId2","nullable","imageText","hideInMenu","ControlledSwitchNorway","setValue","handleChange","Switch","CreateNewsPage","NewsPage","onFeaturedImageChange","tagIDs","businessAreaTagIDs","contentString","hasAdminPermissions","replaceAll","SkeletonList","DocumentItemComponent","onDownloadFileClicked","DocumentListPage","userNotAllowed","setUserNotAllowed","fileLoading","setFileLoading","searchedData","setSearchedData","itemToBeDeleted","setiIemToBeDeleted","getDocumentPageById","initialLoading","page","userTags","pageTags","matchingTags","some","u","controlTagsForUser","responseType","newUrl","Blob","link","appendChild","download","deleteDocument","allNewData","fontStyle","newData","newItem","toLocaleLowerCase","handleSearch","newDataItem","GalleryListPage","GalleryItemCard","ImageListItem","ImageHolder","onImageFail","ImageListItemBar","actionPosition","actionIcon","Info","GalleryThumbs","activeStep","setActiveStep","ImageList","rowHeight","gap","AutoPlaySwipeableViews","autoPlay","SwipeableViews","GalleryCarousel","indexToOpen","maxSteps","currentFile","setCurrentFile","autoSwiperPlay","setAutoSwiperPlay","showThumbs","setShowThumbs","handleStepChange","step","currentItem","handleOnClose","onDownloadImageClicked","DownloadRounded","Pause","PlayArrowRounded","BorderAllRounded","axis","autoplay","onChangeIndex","containerStyle","slideStyle","MobileStepper","steps","nextButton","KeyboardArrowRight","backButton","KeyboardArrowLeft","GalleryPage","setIndexToOpen","getPageById","idParam","galleryItem","prevState","newState","filteredDocuments","handleImageError","GroupItem","deleteGroup","private","LockOutlined","ParentCompanyEnum","GroupListPage","debouncedSearchText","groups","setGroups","CreateGroupPage","PostCard","NewContentInGroup","showInput","setShowInput","newfiles","AddRounded","GroupMemberListModal","members","showMembers","setShowMembers","setShowAddMembers","removeMember","memberList","setMemberList","member","setMember","memberArray","memberItem","Fragment","GroupTagsListModal","setShowTags","matchingMembers","totalMatchingMembers","endIcon","KeyboardArrowUpRounded","KeyboardArrowDownRounded","Pagination","count","newPage","EmployeeControlledSelected","setSearchEmployee","filterOptions","onInputChange","GroupMemberAPI","PostMemberList","MemberSchema","employees","AddGroupMembersModal","fetchMembers","showList","setShowList","employeeList","setEmployeeList","employeeNameFilter","includeDeleted","excludePermissionGroupIds","reqOptionsEmployee","setReqOptionsEmployee","groupMemberApi","employeeData","fetchEmployeeList","filteredRes","find","GroupPage","query","search","URLSearchParams","useQuery","loadingPage","setLoadingPage","loadingPosts","setLoadingPosts","loadingMembers","setLoadingMembers","setGroup","postData","setPostData","setMatchingMembers","setTotalMatchingMembers","showAddMembers","refs","fetchMatchingMembers","areaIDs","InstalcoSE","InstalcoNO","totalItems","fetchGroup","refetchGroup","fetchMemberList","onPressNotificationSetting","notificationsEnabled","scrollId","ref","scrollIntoView","behavior","block","NotificationsOffOutlined","NotificationsActiveOutlined","description","numberId","visibility","ControlledSwitch","ControlledRadioColors","row","colorValues","RadioGroup","Radio","GroupSchema","createdByUserId","permissionGroupTags","groupColorValues","businessAreasItags","Itags","EditGroupPage","ImprovementAPI","MarkActionAsDone","NewImprovementSchema","ProposalForm","CustomMobileToolbar","CustomLoadingOverlay","ProposalStatusEnum","ProposalStatusColorEnum","ProposalEffortEnum","ProposalDeployEnum","DataGrid","dataGridOptions","totalRows","checkboxSelection","onPageChange","onPageSizeChange","onSortModelChange","disableSelectionOnClick","onRowClick","borderTop","density","rowCount","rowsPerPageOptions","paginationMode","newPageSize","filterMode","sortingMode","disableColumnFilter","localeText","columnsPanelTextFieldPlaceholder","columnsPanelTextFieldLabel","columnsPanelShowAllButton","columnsPanelHideAllButton","toolbarColumns","toolbarDensity","toolbarDensityLabel","toolbarDensityCompact","toolbarDensityStandard","toolbarDensityComfortable","toolbarExport","toolbarExportPrint","toolbarExportCSV","toolbarFilters","columnMenuSortAsc","columnMenuSortDesc","columnMenuHideColumn","columnMenuShowColumns","columnMenuLabel","columnMenuFilter","columnMenuUnsort","noRowsLabel","LoadingOverlay","GridToolbar","ProposalDataGrid","currentTab","setCurrentTab","headerName","renderCell","hide","ownerEmployee","nextActionEmployee","FiberManualRecord","effortLevel","onSortModelChanged","model","tabs","TabContext","Tabs","newValue","textColor","orientation","indicatorColor","tab","Tab","TabPanel","ProposalListPage","useImprovement","ControlledSelect","Select","FormHelperText","ProposalProcess","employeesAction","searchEmployeeOwner","searchEmployeeAction","showConfirmGlobalDialog","setShowConfirmGlobalDialog","showConfirmLocalDialog","setShowConfirmLocalDialog","ownerEmployeeId","nextActionDate","nextActionEmployeeID","nextActionDescription","statusEnum","effortEnum","onConfirmGlobalImprovement","onConfirmLocalImprovement","markFollowupAsDone","isDirty","ProposalOverview","ProposalLog","loggy","created","actionKey","ProposalNewNote","alert","ProposalNotes","ProposalPage","setEmployees","setEmployeesAction","searchTextOwner","setSearchTextOwner","searchTextAction","setSearchTextAction","reqOptionsEmployeeAction","setReqOptionsEmployeeAction","debouncedSearchOwner","debouncedSearchAction","getEmployeeList","getEmployeeListAction","onDeleteImprovement","improvementApi","ContactModal","getLabel","TableContainer","Table","TableBody","TableRow","TableCell","ContactAPI","ContactSchema","CreateContactModal","fetchContactList","onCreateSuccess","onCreateFailed","dataToBeSent","contactApi","ContactListPage","isCreateModalOpen","setIsCreateModalOpen","contactItem","setContactItem","isContactModalOpen","setIsContactModalOpen","contactActionButtons","disableColumnMenu","getActions","PersonRounded","showInMenu","setDataGridOptions","getContactsList","nameFilter","removeContact","contactAPI","contentText","ContactPage","countryCodes","CompanySchema","defaultNewsListPage_ContentPageId","parentCompany_CompanyId","min","CompanyEditModal","segments","logoImageFile","setLogoImageFile","selectedFile","setSelectedFile","openDialog","setOpenDialog","getFeaturedImageFile","imageID","docRes","toUpperCase","resDoc","companyAPI","CompanyCreateModal","companyData","CompanyListPage","isCompanyModalOpen","setCompanyModalOpen","createCompanyModalOpen","setCreateCompanyModalOpen","companyItem","setCompanyItem","itemdToBeDeleted","setitemdToBeDeleted","companyActionButtons","segment","PeopleAltRounded","itemId","itemName","getCompanies","deleteCompany","CompanyPage","EmployeeModal","setEmployee","getEmployeeDetails","ControlledCompanySelect","PermissionsControlledSelect","EmployeeSchema","password","competences","CreateEmployeeModal","companies","isSuperAdmin","setPermissionGroups","watch","getValues","subscription","unsubscribe","allnewItags","filteredRoles","EditEmployeeModal","onUpdateSuccess","onUpdateFailed","TagListItem","TagSchema","TagModal","showRoles","setShowRoles","showCompetences","setShowCompetences","deleteTag","tagApi","tagData","PermissionsAPI","AutoCompleteForFilter","FilterAccordion","setRoleTags","setLocationsTags","setCompetenceTags","setBusinessAreaTags","Accordion","AccordionSummary","expandIcon","ExpandMore","AccordionDetails","useIsMounted","isMounted","EmployeeListPage","filteredCompanyId","filteredCompanyname","setCompanies","userToBedeleted","setUserToBeDeleted","employeeItem","setEmployeeItem","isTagModalOpen","setIsTagModalOpen","isEmployeeModalOpen","setIsEmployeeModalOpen","isCreateEmployeeModalOpen","setIsCreateEmployeeModalOpen","isEditEmployeeModalOpen","setIsEditEmployeeModalOpen","showAllEmployees","setShowAllEmployees","showDeletedEmployees","setShowDeletedEmployees","showExternalUsers","setShowExternalUsers","roleTags","locationTags","setLocationTags","compentenceTags","setCompentenceTags","getColumnActionButtons","currentPermissions","permissionsAPI","roleTagIDs","r","locationTagIDs","l","competenceTagIDs","areaTagIDs","deleteEmployee","userId","filteredPermissions","authorizedPermissions","permission","memoizedColumns","hasPermissionToSwitchEmployeeList","buttons","GroupsRounded","getEmployeeFabButtons","EditNewsPage","featuredImageFile","setFeaturedImageFile","pageToEdit","setPageToEdit","getNewsItem","removeNews","ContentPageSchema","CreateNewsListPage","ControlledCanHaveChildren","FormGroup","CreateMenuPage","getLinkToParent","newsData","EditNewsListPage","getNewsListPageDetails","go","EditMenuPage","getPageToEdit","removeMenuPage","FileDropZone","onlyAllowedTypes","validTypes","initialFiles","validFiles","setValidFiles","itemTobeDeleted","setItemTobeDeleted","setInvalidFiles","newFile","prevArray","documentAPI","validFileIndex","findIndex","splice","showImage","renderList","dense","overflowY","idx","showDeleteModal","SustainabilityTabEnum","CreateGalleryPage","selectedFiles","setSelectedFiles","galleyAPI","onFileChangeFeaturedDocuments","galleyData","EditDocumentListPage","documentFiles","setDocumentFiles","removeDocumentListPage","CreateDodumentListPage","EditGalleryPage","deleteGalleryPage","DirectMessagePage","fetchNotification","ProjectStatusEnum","BaseAPIV2","SustainabilityAPI","UpdateStatus","GetApprovers","useFetchBusinessAreas","businessAreasData","setBusinessAreasData","businessAreasError","setBusinessAreasError","businessAreasLoading","setBusinessAreasLoading","fetchBusinessAreas","useFetchTags","tagType","setTagDataData","tagDataError","setTagDataError","tagDataLoading","setTagDataLoading","fetchTags","tagsToReturn","useMobile","isMobileLg","isMobileMd","isMobileSm","isMobileXs","useStatusInfo","statusId","Approved","Created","ReadyForApproval","SupplementRequested","Denied","DoNotDisturb","SustainabilityStatusBadge","coloredIcon","cloneElement","describeChild","arrow","SustainabilityDataGrid","sortable","area","businessAreaId","locationName","locationTagId","changed","projectStatus","valueGetter","statusData","SustainabilityFilter","setLocations","setBusinessArea","setProjectStatusFilter","columnGap","SustainabilityReportProject","refetchList","setTotalItems","businessArea","locationTag","setLocationTag","projectStatusFilter","businessAreaID","All","fetchSustainabilityReports","SustainabilityReportDetailsPage","SustainabilityCertifiedProject","SustainabilityEditFab","isSuberAdmin","SustainabilityReportListPage","ModalSustainabilityTemplate","reason","CompanyTypeEnum","useFetchEmployeesByCompanyId","employeesData","setEmployeesDataData","employeesDataError","setEmployeesDataError","employeesDataLoading","setEmployeesDataLoading","fetchEmployees","useFetchApproverUsers","aosData","setAosData","aosDataError","setAosDataError","aosDataLoading","setAosDataLoading","fetchApproverUsers","TagTypeEnum","FormErrorSummary","translationNamespace","Alert","severity","role","AlertTitle","fieldName","as","SustainabilityReportCreateSchema","typeOfCompany","project","projectNumber","projectDescription","climateBenefitDescription","when","is","sustainabilitySolutionTechDescription","parent","Installation","customer","invoicedAmount","checkboxApplyForCertificate","oneOf","checkboxCriteriaConsent","checkboxSafeCoworker","checkboxClimateBenefit","checkboxDeliveryPlan","Teknikkonsult","checkboxWasteSorting","checkboxCodeOfConduct","checkboxServicePlan","checkboxMeetingPlan","checkboxSustainabilitySolutionTech","checkboxSustainabilityEvaluationTech","checkboxProjectSize100TSEK","checkboxProjectSize1MSEK","registrationDate","CompanyOptions","ControlledCompanySelectHook","defaultCompany","companiesData","setCompaniesData","companiesError","setCompaniesError","companiesLoading","setCompaniesLoading","useFetchCompanies","getNestedFormErrors","fieldErrors","nameParts","currentError","reduce","acc","part","ControlledCheckBox","labelPlacement","italic","pointerEvents","checkedIcon","Check","SustainabilityFormTexts","listStyleType","Industri","ControlledAutocompleteDropdown","nameProp","labelColor","fullwidth","translateOptionLabel","selectedValue","setSelectedValue","inputValue","setInputValue","componentId","now","random","substring","newInputValue","InputLabelProps","shrink","ControlledDatePickerDense","disableOpenPicker","ControlledTextInputDense","InternalMeetingFrequency","InternalMeetingType","ExternalMeetingFrequency","ExternalMeetingType","PhysicalMeetingTransportation","companyTypeItems","SustainabilityCreateForm","setReportId","closeModalOnSubmit","setSearchApprover","setTypeOfCompany","Location","dataToPost","reporterUserId","approverUserId","projectEndDate","prevActiveStep","noValidate","MeetingPlanSchema","meetingPreparationPlan","meetingPreparationPlanComment","internalMeetingFrequency","integer","internalMeetingFrequencyComment","Other","internalMeetingType","internalMeetingTypeComment","externalMeetingFrequency","externalMeetingFrequencyComment","externalMeetingType","externalMeetingTypeComment","physicalMeetingTransportation","physicalMeetingTransportationComment","OtherTransportation","MeetingPlansAPI","ControlledRadioButtons","values","setLocaleValue","setLocaleBooleanString","Icon","RadioButtonUncheckedOutlined","meetingPreparationPlaOptions","internalMeetingFrequencyOptions","EveryOtherWeek","OnceAWeek","TwiceAWeek","internalMeetingTypeOptions","TeamsOrOnline","OnSiteSameLocation","OnSiteDifferentLocations","externalMeetingFrequencyOptions","externalMeetingTypeOptions","OnSiteSamePlace","OnSiteDifferentPlace","OffSite","physicalMeetingTransportationOptions","WillBike","WillTakeTrain","WillTakeBus","WillDriveCar","WillCarpool","NotApplicablePhysical","SustainabilityMeetingPlanForm","refetchCallback","meetingPlan","sustainabilityId","isReadOnly","meetingPreparationPlanValue","setMeetingPreparationPlanValue","internalMeetingFrequencyValue","setInternalMeetingFrequencyValue","internalMeetingTypeValue","setInternalMeetingTypeValue","externalMeetingFrequencyValue","setExternalMeetingFrequencyValue","externalMeetingTypeValue","setExternalMeetingTypeValue","physicalMeetingTransportationValue","setPhysicalMeetingTransportationValue","submitHandler","dataToCreate","SustainabilityCreateModal","onSubmitClose","reportId","StatisticsAPI","GetStatisticsSustainability","SustainabilityStatisticsSumCard","projectStatusId","quantity","quantityUserCompany","SustainabilityStatisticsLeaderboardRow","leaderboardPosition","SustainabilityStatisticsLeaderboard","leaderboard","leaderboardTitle","SustainabilityStatisticsDashboardSkeleton","animation","SustainabilityStatisticsDashboard","fetchData","statusBadges","reportStatus","quantityTotal","quantityCompany","leaderboardCompany","leaderboardDiscipline","leaderboardLocationTag","contentData","setContentData","contentError","setContentError","contentLoading","setContentLoading","contentSelectedImage","setContentSelectedImage","fetchContentPageById","useFetchContentPageById","setRefetchList","ReportProject","tabValue","setTabValue","openCreateModal","setOpenCreateModal","borderBottom","TabList","CertifiedProjects","Statistics","useClearLocalStorage","clearLocalStorage","removeItem","TypeOfCompanyControlledSelected","SustainabilityReportEditSchema","v","isNaN","SurveyMethod","SatisfactionLevel","ContributionToSustainability","LikelihoodToWorkAgain","SustainabilityDialogModal","defaultMessage","putDataOnSubmit","StatusUpdateSchema","closeHandler","SustainabilityEditActionButtons","refetchReportAfterUpdate","onClickDelete","setProjectStatus","modalTitle","setModalTitle","setDialogText","modalDefaultText","setModalDefaultText","onClickHandler","newStatus","putData","dataToPut","SustainabilityCheckboxesInstallation","isDisabled","SustainabilityCheckboxesEngineering","SustainabilityCheckboxesIndustry","SustainabilityEditCheckboxes","SustainabilitySubmitButton","showDisabledTooltip","SustainabilityEditForm","refetchAfterUpdate","localStorageKey","submitLoading","setSubmitLoading","deleteLoading","setDeleteLoading","aosSearchText","setAosSearchText","disableOnEngineer","customerSurvey","disableOnEngineerWithMeetingplan","disableOnIndustry","savedData","getItem","useGetSavedFormState","deleteReport","CustomerSurveySchema","surveyMethod","customerName","satisfactionLevel","satisfactionComment","contributionToSustainability","contributionToSustainabilityComment","likelihoodToWorkAgain","likelihoodToWorkAgainComment","CustomerSurveysAPI","SustainabilityLogReportStatusEnum","surveyMethodOptions","PhysicalMeeting","ViaTeams","ViaPhone","satisfactionLevelOptions","NotSatisfied","FairlySatisfied","Satisfied","VerySatisfied","CouldntBeHappier","contributionToSustainabilityOptions","Yes","No","Unsure","likelihoodToWorkAgainOptions","SustainabilityCustomerSurveyForm","satisfactionLevelComment","SustainabilityLogCard","SustainabilityLog","logData","TabByType","companyType","reportData","setReportData","reportError","setReportError","reportLoading","setReportLoading","fetchSustainabilityReport","refetchReport","useFetchSustainabilityReportById","refetchHandler","ArrowBack","goBack","ErrorOutlineOutlined","ContentPageSustainabilitySchema","SustainabilityEditReportListPage","getSustainabilityItem","PageRoutes","path","exact","NewsPageListCreate","NewsPageList","CreateDocumentListPage","LoginPage","expired","UnauthorizeRoutes","Login","MainRoutes","getUserDetails","SilentRenewPage","processSilentRenew","CallbackPage","successCallback","initialRoute","errorCallback","App","trySilentSigning","signinSilent","silentResult","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","Offline","isOnline","setOnlineStatus","setStatus","removeEventListener","ReactDOM","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.bc8180ac.chunk.js","sourcesContent":["import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport translationEN from 'src/shared/services/locales/en/common.json';\nimport translationSE from 'src/shared/services/locales/se/common.json';\nimport translationNO from 'src/shared/services/locales/no/common.json';\nimport translationFI from 'src/shared/services/locales/fi/common.json';\n\n// the translations\nconst resources = {\n en: {\n common: translationEN,\n },\n se: {\n common: translationSE,\n },\n no: {\n common: translationNO,\n },\n fi: {\n common: translationFI,\n },\n};\n\ni18n\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n resources,\n ns: ['common'], // Add new ones here (same name as in resource object)\n defaultNS: 'common', // The NS that is always loaded\n lng: 'se',\n\n interpolation: {\n escapeValue: false, // react already safes from xss\n },\n });\n\nexport default i18n;\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-console */\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\n ),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n onOffline?: () => void;\n};\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://cra.link/PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n // eslint-disable-next-line max-len\n // console.log('No internet connection found. App is running in offline mode.');\n if (config && config.onOffline) {\n config.onOffline();\n }\n });\n}\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://cra.link/PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","export const PETROL = '#00818C';\nexport const PETROL_SOFT = '#7BA8AC';\nexport const GRAY_DARK = '#404040';\nexport const GRAY_MEDIUM = '#A6A6A6';\nexport const GRAY_LIGHT = '#CCCCCC';\nexport const GRAY_FAIR = '#F3F3F3';\nexport const WHITE = '#FFFFFF';\nexport const YELLOW = '#FFD300';\nexport const ORANGE = '#EE733C';\nexport const BLUE = '#18659A';\nexport const RED = '#BF0D0D';\nexport const GREEN_SOFT = '#81c784';\nexport const PURPLE = '#AB56A0';\n\nexport const GROUP_PETROL = '#00818C';\nexport const GROUP_ORANGE = '#FF4610';\nexport const GROUP_GREEN = '#8EA604';\nexport const GROUP_PURPLE = '#AB56A0';\nexport const GROUP_BEIGE = '#ADA296';\nexport const GROUP_GRAPHITE = '#50514F';\nexport const GROUP_DAWN = '#465775';\nexport const GROUP_YELLOW = '#FCAF58';\nexport const GROUP_MAROON = '#BF1363';\n\n// Instalcos nuvarande föpretagsfärger\n// export const COMPANY_PETROL = '#00818c';\nexport const COMPANY_PETROL = '#008085';\nexport const COMPANY_GREEN = '#2EAD6F';\nexport const COMPANY_BLUE = '#18659A';\n// export const COMPANY_ORANGE = '#ff4611';\nexport const COMPANY_ORANGE_SOFT = '#EE733C';\nexport const COMPANY_RED = '#CA151C';\n\nexport const BADGE_RED = '#FF8E8E';\nexport const BADGE_ORANGE = '#EE733C';\nexport const BADGE_YELLOW = '#FDD960';\nexport const BADGE_BLUE = '#008186';\nexport const BADGE_GREEN = '#91DB80';\n\n// REFAKTORISERA TILL NEDAN?\n// Colors.Group.PETROL\n// export const Colors = {\n// PageBackground: '#f1f4f5',\n// Blue: '#015093',\n// Orange: {\n// Light: '#f49600',\n// Main: '#ff9800',\n// Dark: '#e68a00',\n// },\n// };\n","/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { IconButton, Paper } from '@mui/material';\nimport { Close } from '@mui/icons-material';\nimport React, { useEffect } from 'react';\nimport * as serviceWorker from 'src/serviceWorkerRegistration';\nimport { alpha } from '@mui/material/styles';\nimport { useTranslation } from 'react-i18next';\nimport { Colors } from './shared/components/styles';\n\nexport const ServiceWorkerWrapper = () => {\n const { t } = useTranslation();\n const [showReload, setShowReload] = React.useState(false);\n const [appOffline, setAppOffline] = React.useState(false);\n const [waitingWorker, setWaitingWorker] =\n React.useState(null);\n\n const onSWUpdate = (registration: ServiceWorkerRegistration) => {\n setShowReload(true);\n setWaitingWorker(registration.waiting);\n };\n\n const onSuccess = (registration: ServiceWorkerRegistration) => {\n // console.log('success', registration);\n };\n const onOffline = () => {\n // console.log('app is in offline mode');\n setAppOffline(true);\n };\n\n useEffect(() => {\n serviceWorker.register({\n onUpdate: onSWUpdate,\n onSuccess,\n onOffline,\n });\n }, []);\n\n const reloadPage = () => {\n // TODO: Updating app works inconsitently between browser, easiest is to prompt user to close all instances\n // waitingWorker?.postMessage({ type: 'SKIP_WAITING' });\n setShowReload(false);\n // const form = document.createElement('form');\n // form.method = 'POST';\n // form.action = window.location.href;\n // document.body.appendChild(form);\n // form.submit();\n };\n\n return (\n <>\n {/* {!appOffline && test} */}\n {showReload && (\n \n {t('thereIsNewVersionText')}\n \n \n \n \n )}\n \n );\n};\n","import { Box, Skeleton, Typography } from '@mui/material';\n\ntype SkeletobCardProps = {\n rows?: number;\n cols?: 1 | 2 | 3 | 4 | 5;\n cardHeight?: number;\n};\nconst SkeletonCards = ({ rows, cols, cardHeight }: SkeletobCardProps) => {\n const rowArray = Array.from(Array(rows).keys());\n const colArray = Array.from(Array(cols).keys());\n const columnTemplate = '1fr 1fr 1fr 1fr 1fr'\n .split(' ')\n .slice(0, cols)\n .join(' ');\n return (\n \n {/* \n \n */}\n {rowArray.map((rowItem) => {\n return (\n \n {colArray.map((colItem) => {\n return (\n \n \n \n );\n })}\n \n );\n })}\n \n );\n};\n\nSkeletonCards.defaultProps = {\n rows: 5,\n cols: 1,\n cardHeight: 200,\n};\n\nexport default SkeletonCards;\n","export enum ContentTypeEnum {\n NewsListPage = 'NewsListPage',\n NewsPage = 'NewsPage',\n DocumentListPage = 'DocumentListPage',\n MenuPage = 'MenuPage',\n GalleryPage = 'GalleryPage',\n ProposalListPage = 'ProposalListPage',\n ProposalPage = 'ProposalPage',\n GroupListPage = 'GroupListPage',\n GroupPage = 'GroupPage',\n CompanyPage = 'CompanyPage',\n ContactPage = 'ContactPage',\n EmployeePage = 'EmployeePage',\n SustainabilityReportListPage = 'SustainabilityReportListPage',\n}\n","import {\n DescriptionOutlined,\n InfoOutlined,\n PhotoAlbum,\n InsertDriveFileOutlined,\n ReceiptLongOutlined,\n} from '@mui/icons-material';\nimport { Menu, Box, MenuItem, Typography } from '@mui/material';\nimport { Link } from 'react-router-dom';\n// import ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { NavigationResponse } from 'src/shared/services/api/response/navigationResponse';\nimport { useTranslation } from 'react-i18next';\nimport { ContentTypeEnum } from 'src/shared/enums/contentType.enum';\n\ntype ActionMenuType = {\n menuItem: NavigationResponse;\n showActions: boolean;\n anchorEl: HTMLElement | null;\n handleClose: (e: React.MouseEvent) => void;\n showHomePageNote: (arg: boolean) => void;\n};\n\nconst ActionMenuPages = (props: ActionMenuType) => {\n const { menuItem, showActions, anchorEl, handleClose, showHomePageNote } =\n props;\n\n const { t } = useTranslation();\n\n const getIcon = (type: string) => {\n let iconToShow = ;\n if (type === 'DocumentListPage') iconToShow = ;\n if (type === 'HomePageNote') iconToShow = ;\n if (type === 'NewsListPage') iconToShow = ;\n if (type === 'NewsPage') iconToShow = ;\n if (type === 'GalleryPage') iconToShow = ;\n if (type === 'MenuPage') iconToShow = ;\n return iconToShow;\n };\n\n // Get create choices for contentType\n const getMenuChildren = (type: string) => {\n let childComponents: JSX.Element | JSX.Element[] = [];\n if (type === ContentTypeEnum.NewsListPage) {\n childComponents = (\n <>\n \n {getIcon('NewsPage')}\n {t('News')}\n \n \n );\n } else if (type === 'Start') {\n childComponents = (\n <>\n ) => {\n handleClose(e);\n showHomePageNote(true);\n }}\n >\n {getIcon('HomePageNote')}\n {t('Notice')}\n \n \n {getIcon('MenuPage')}\n {t('Page')}\n \n \n {getIcon('DocumentListPage')}\n {t('DocumentList')}\n \n \n {getIcon('GalleryPage')}\n {t('Gallery')}\n \n \n {getIcon('NewsListPage')}\n {t('NewsList')}\n \n \n );\n } else {\n childComponents = (\n <>\n \n {getIcon('MenuPage')}\n {t('Page')}\n \n \n {getIcon('DocumentListPage')}\n {t('DocumentList')}\n \n \n {getIcon('GalleryPage')}\n {t('Gallery')}\n \n \n );\n }\n return childComponents;\n };\n\n return (\n \n \n {t('CreateUnder')} {menuItem?.title}\n \n {getMenuChildren(menuItem?.contentType)}\n \n );\n};\n\nexport default ActionMenuPages;\n","import { Box, Button } from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\n\ntype SaveCancelType = {\n onCancel: () => void;\n linkTo?: string;\n saveDisabled?: boolean;\n onDelete?: () => void;\n showDeleteButton?: boolean;\n};\n\nexport const BoxSaveCancelButtons = (props: SaveCancelType) => {\n const { onCancel, linkTo, saveDisabled, onDelete, showDeleteButton } = props;\n const { t } = useTranslation();\n\n return (\n \n \n {t('Cancel')}\n \n {showDeleteButton && (\n \n {t('Delete')}\n \n )}\n \n {t('Save')}\n \n \n );\n};\n\nBoxSaveCancelButtons.defaultProps = {\n linkTo: null,\n saveDisabled: false,\n showDeleteButton: false,\n onDelete: undefined,\n};\n","/* eslint-disable no-nested-ternary */\nimport { Box, Fab, useMediaQuery, useTheme } from '@mui/material';\nimport { Link } from 'react-router-dom';\n\nexport interface IActionButton {\n ID: number;\n icon: JSX.Element;\n iconColor: string;\n backgroundColor: string;\n buttonSize: string;\n linkTo?: string;\n isButton?: boolean;\n onClick?: () => void;\n}\n\ntype ActionButtonsProps = {\n items: IActionButton[];\n // isButton?: boolean;\n onClick?: () => void;\n};\n\nexport const ActionButtons = ({\n items,\n // isButton,\n onClick,\n}: ActionButtonsProps) => {\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n return (\n \n {items?.map((item: IActionButton) => {\n return item.isButton ? (\n \n {item.icon}\n \n ) : item.linkTo ? (\n \n {item.icon}\n \n ) : (\n \n {item.icon}\n \n );\n })}\n \n );\n};\nActionButtons.defaultProps = {\n onClick: undefined,\n // isButton: false,\n // linkTo: '',\n};\n","import { Modal, Box, IconButton } from '@mui/material';\nimport { CloseRounded } from '@mui/icons-material';\nimport {\n ActionButtons,\n IActionButton,\n} from '../components/atoms/actionButtons';\n\ninterface ModalProps {\n title: JSX.Element;\n content: JSX.Element;\n secondaryAction?: JSX.Element;\n isOpen: boolean;\n onClose: () => void;\n items?: IActionButton[];\n}\n\nconst ModalTemplate = (props: ModalProps) => {\n const { title, content, secondaryAction, isOpen, onClose, items } = props;\n return (\n \n \n \n <>{title}\n \n \n \n \n <>{content}\n \n {secondaryAction}\n \n {items && }\n \n \n );\n};\n\nModalTemplate.defaultProps = {\n secondaryAction: undefined,\n items: undefined,\n};\n\nexport default ModalTemplate;\n","import { Controller, useFormContext, useFormState } from 'react-hook-form';\nimport { TextField } from '@mui/material';\n\ntype IformInputProps = {\n name: string;\n label?: string;\n helperText?: string | undefined;\n type: string;\n multiline?: boolean;\n rows?: number;\n fullWidth?: boolean;\n placeholder?: string;\n sx?: any;\n disabled?: boolean;\n};\n\nconst ControlledTextInput = (props: IformInputProps) => {\n const {\n name,\n label,\n helperText,\n multiline,\n rows,\n type,\n fullWidth,\n placeholder,\n sx,\n disabled,\n } = props;\n\n // Control och errors hämtas genom hooks, ska inte skcikas med som props\n // För att detta ska funka behöver vi ha FormProvider runt formulären\n const { control } = useFormContext();\n const { errors } = useFormState();\n\n let isError = false;\n let errorMessage = '';\n if (errors && Object.prototype.hasOwnProperty.call(errors, name)) {\n isError = true;\n errorMessage = errors[name].message;\n }\n\n return (\n (\n \n )}\n />\n );\n};\n\nControlledTextInput.defaultProps = {\n multiline: false,\n rows: 5,\n fullWidth: true,\n placeholder: '',\n helperText: '',\n label: '',\n sx: {},\n disabled: false,\n};\n\nexport default ControlledTextInput;\n","import { Controller } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport {\n FormControl,\n FormLabel,\n FormControlLabel,\n Checkbox,\n Typography,\n Grid,\n} from '@mui/material';\n\ntype IformInputProps = {\n control?: any;\n};\n\nconst ControlledPushNoticeCheckbox = (props: IformInputProps) => {\n const { control } = props;\n const { t } = useTranslation();\n\n const items = [\n { id: 1, name: 'sendNotice', label: `${t('SendPush')}` },\n {\n id: 2,\n name: 'sendEmail',\n label: `${t('SendEmail')}`,\n },\n ];\n\n return (\n \n \n \n {t('sendMessageWhenSave')}\n \n \n {items.map((item: any) => {\n return (\n {\n return (\n \n field.onChange(e.target.checked)}\n sx={{\n color: 'primary.main',\n '&.Mui-checked': {\n color: 'primary.main',\n },\n }}\n />\n }\n />\n \n );\n }}\n />\n );\n })}\n \n );\n};\nControlledPushNoticeCheckbox.defaultProps = {\n control: undefined,\n};\n\nexport default ControlledPushNoticeCheckbox;\n","import * as React from 'react';\nimport { IconButton, Tooltip, ClickAwayListener } from '@mui/material';\nimport HelpOutlineRoundedIcon from '@mui/icons-material/HelpOutlineRounded';\n\ntype InfoTooltipType = {\n infoContent: string | JSX.Element;\n};\n\nconst InfoTooltip = (props: InfoTooltipType) => {\n const { infoContent } = props;\n\n const [open, setOpen] = React.useState(false);\n\n const handleTooltipClose = () => {\n setOpen(false);\n };\n\n const handleTooltipOpen = () => {\n setOpen(true);\n };\n\n return (\n
\n \n
\n \n \n \n \n \n
\n
\n
\n );\n};\n\nexport default InfoTooltip;\n","import { Typography, Box } from '@mui/material';\nimport InfoTooltip from 'src/shared/components/molecules/infoTooltip';\n\ntype InfoTooltipType = {\n label: string | JSX.Element;\n infoContent: string | JSX.Element;\n};\n\nconst LabelWithTooltip = (props: InfoTooltipType) => {\n const { label, infoContent } = props;\n\n return (\n \n {label}\n \n \n );\n};\n\nexport default LabelWithTooltip;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-console */\nexport default class ConsoleHelper {\n static log = (message?: any, ...optionalParams: any[]) => {\n if (process.env.NODE_ENV === 'production') return;\n console.log(message, ...optionalParams);\n };\n\n static warn = (message?: any, ...optionalParams: any[]) => {\n if (process.env.NODE_ENV === 'production') return;\n console.warn(message, ...optionalParams);\n };\n\n static error = (message?: any, ...optionalParams: any[]) => {\n if (process.env.NODE_ENV === 'production') return;\n console.error(message, ...optionalParams);\n };\n\n static table = (tabularData: any, properties?: ReadonlyArray) => {\n if (process.env.NODE_ENV === 'production') return;\n console.table(tabularData, properties);\n };\n}\n","export const USER_LOGIN_REQUEST = 'USER_LOGIN_REQUEST';\nexport const USER_LOGIN_FAIL = 'USER_LOGIN_FAIL';\nexport const USER_LOGIN_SUCCESS = 'USER_LOGIN_SUCCESS';\nexport const USER_LOGOUT = 'USER_LOGOUT';\nexport const GET_USER_DETAILS = 'GET_USER_DETAILS';\nexport const CHANGE_USER_COMPANY = 'CHANGE_USER_COMPANY';\n","// import ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { AuthActionDispatchType } from 'src/shared/services/redux/actions/authAction';\nimport {\n USER_LOGIN_REQUEST,\n USER_LOGIN_FAIL,\n USER_LOGIN_SUCCESS,\n USER_LOGOUT,\n GET_USER_DETAILS,\n CHANGE_USER_COMPANY,\n} from 'src/shared/services/redux/constants/userTypes';\nimport { CompanyResponse } from '../../api/response/companyResponse';\nimport { EmployeeMeResponse } from '../../api/response/employeeResponse';\n\ninterface AuthStateType {\n loading: boolean;\n isLoggedIn: boolean;\n authDetails?: IdentityAuthModel;\n userDetails?: EmployeeMeResponse;\n userCompany?: CompanyResponse;\n}\n\nexport interface IdentityAuthModel {\n accessToken?: string;\n accessTokenExpirationDate?: string;\n authorizeAdditionalParameters?: any;\n idToken?: string;\n refreshToken?: string;\n scopes?: Array;\n tokenType?: string;\n firstName: string;\n lastName: string;\n email: string;\n isLoggedIn?: boolean;\n}\n\nconst initialState: AuthStateType = {\n loading: false,\n isLoggedIn: false,\n authDetails: undefined,\n userDetails: undefined,\n userCompany: undefined,\n};\nconst authReducer = (\n state: AuthStateType = initialState,\n action: AuthActionDispatchType,\n): AuthStateType => {\n // ConsoleHelper.log('state.userCompany', state.userCompany);\n // ConsoleHelper.log('state.userDetails', state.userDetails);\n switch (action.type) {\n case GET_USER_DETAILS:\n return {\n ...state,\n userDetails: action.payload,\n };\n case CHANGE_USER_COMPANY:\n return {\n ...state,\n userCompany: action.payload,\n };\n case USER_LOGIN_REQUEST:\n return { ...state, loading: true };\n case USER_LOGIN_SUCCESS:\n return {\n ...state,\n loading: false,\n isLoggedIn: true,\n authDetails: action.payload,\n };\n case USER_LOGIN_FAIL:\n case USER_LOGOUT:\n return {\n ...initialState,\n isLoggedIn: false,\n authDetails: undefined,\n userDetails: undefined,\n userCompany: undefined,\n };\n default:\n return state;\n }\n};\nexport default authReducer;\n","export const GET_ALL_TAGS_SUCCES = 'GET_ALL_TAGS_SUCCESS';\nexport const GET_ALL_TAGS_FAILED = 'GET_ALL_TAGS_FAILED';\nexport const GET_ALL_REQUEST = 'GET_ALL_REQUEST';\n","import { TagsDispatchType } from 'src/shared/services/redux/actions/tagsActions';\nimport { TagsResponse } from '../../api/response/tagsResponse';\n\nimport {\n GET_ALL_TAGS_FAILED,\n GET_ALL_TAGS_SUCCES,\n GET_ALL_REQUEST,\n} from '../constants/tagsTypes';\n\ninterface TagsType {\n tags: TagsResponse[] | undefined;\n getTagsLoading?: boolean;\n}\n\nconst initialState: TagsType = {\n tags: [],\n getTagsLoading: false,\n};\nconst TagsReducer = (\n state: TagsType = initialState,\n action: TagsDispatchType,\n): TagsType => {\n switch (action.type) {\n case GET_ALL_REQUEST:\n return { ...state, getTagsLoading: true };\n case GET_ALL_TAGS_SUCCES:\n return { ...state, tags: action.payload, getTagsLoading: false };\n case GET_ALL_TAGS_FAILED:\n return { ...state, tags: [], getTagsLoading: false };\n default:\n return state;\n }\n};\nexport default TagsReducer;\n","export const GET_BUSINESS_AREA_SUCCES = 'GET_BUSINESS_AREA_SUCCESS';\nexport const GET_BUSINESS_AREA_FAILED = 'GET_BUSINESS_AREA_FAILED';\nexport const GET_ALL_REQUEST = 'GET_ALL_REQUEST';\n","import { BusinessAreaResponse } from '../../api/response/businessAreasResponse';\nimport { BusinessAreasDispatchType } from '../actions/businessAreasAction';\nimport {\n GET_BUSINESS_AREA_SUCCES,\n GET_BUSINESS_AREA_FAILED,\n GET_ALL_REQUEST,\n} from '../constants/businessAreaTypes';\n\ninterface BusinessAreaType {\n businessAreas: BusinessAreaResponse[] | undefined;\n getBusinessAreasLoading?: boolean;\n}\n\nconst initialState: BusinessAreaType = {\n businessAreas: [],\n getBusinessAreasLoading: false,\n};\nconst BusinessAreaReducer = (\n state: BusinessAreaType = initialState,\n action: BusinessAreasDispatchType,\n): BusinessAreaType => {\n switch (action.type) {\n case GET_ALL_REQUEST:\n return { ...state, getBusinessAreasLoading: true };\n case GET_BUSINESS_AREA_SUCCES:\n return {\n ...state,\n businessAreas: action.payload,\n getBusinessAreasLoading: false,\n };\n case GET_BUSINESS_AREA_FAILED:\n return { ...state, businessAreas: [], getBusinessAreasLoading: false };\n default:\n return state;\n }\n};\nexport default BusinessAreaReducer;\n","export const GET_PERMISSION_GROUP_SUCCES = 'GET_PERMISSION_GROUP_SUCCESS';\nexport const GET_PERMISSION_GROUP_FAILED = 'GET_PERMISSION_GROUP_FAILED';\nexport const GET_PERMISSION_GROUP_REQUEST = 'GET_PERMISSION_GROUP_REQUEST';\n","import { PermissionGroupResponse } from '../../api/response/permissionsResponse';\nimport { PermissionsDispatchType } from '../actions/permissionsAction';\nimport {\n GET_PERMISSION_GROUP_SUCCES,\n GET_PERMISSION_GROUP_FAILED,\n GET_PERMISSION_GROUP_REQUEST,\n} from '../constants/permissionTypes';\n\ninterface PernissionsType {\n permissions: PermissionGroupResponse[] | undefined;\n getPermissionsLoading?: boolean;\n}\n\nconst initialState: PernissionsType = {\n permissions: [],\n getPermissionsLoading: false,\n};\nconst PermissionsReducer = (\n state: PernissionsType = initialState,\n action: PermissionsDispatchType,\n): PernissionsType => {\n switch (action.type) {\n case GET_PERMISSION_GROUP_REQUEST:\n return { ...state, getPermissionsLoading: true };\n case GET_PERMISSION_GROUP_SUCCES:\n return {\n ...state,\n permissions: action.payload,\n getPermissionsLoading: false,\n };\n case GET_PERMISSION_GROUP_FAILED:\n return { ...state, permissions: [], getPermissionsLoading: false };\n default:\n return state;\n }\n};\nexport default PermissionsReducer;\n","export const GET_MENU_LIST_SUCCES = 'GET_MENU_LIST_SUCCESS';\nexport const GET_MENU_LIST_FAILED = 'GET_MENU_LIST_FAILED';\nexport const GET_MENU_LIST_REQUEST = 'GET_MENU_LIST_REQUEST';\n","import { NavigationResponse } from '../../api/response/navigationResponse';\nimport { MenuListDispatchType } from '../actions/getMenuList';\nimport {\n GET_MENU_LIST_SUCCES,\n GET_MENU_LIST_FAILED,\n GET_MENU_LIST_REQUEST,\n} from '../constants/menuListTypes';\n\ninterface MenuListType {\n menuList: NavigationResponse[] | undefined;\n getMenuLoading?: boolean;\n}\n\nconst initialState: MenuListType = {\n menuList: [],\n getMenuLoading: false,\n};\nconst MenuListReducer = (\n state: MenuListType = initialState,\n action: MenuListDispatchType,\n): MenuListType => {\n switch (action.type) {\n case GET_MENU_LIST_REQUEST:\n return { ...state, getMenuLoading: true };\n case GET_MENU_LIST_SUCCES:\n return {\n ...state,\n menuList: action.payload,\n getMenuLoading: false,\n };\n case GET_MENU_LIST_FAILED:\n return { ...state, menuList: [], getMenuLoading: false };\n default:\n return state;\n }\n};\nexport default MenuListReducer;\n","export const GET_ALL_NOTICES_SUCCESS = 'GET_ALL_NOTICES_SUCCESS';\nexport const GET_ALL_NOTICES_FAILED = 'GET_ALL_NOTICES_FAILED';\nexport const GET_ALL_REQUEST = 'GET_ALL_REQUEST';\nexport const GET_ALL_NOTICES_UNREAD_LENGTH = 'GET_ALL_NOTICES_UNREAD_LENGTH';\n","import {\n GET_ALL_NOTICES_FAILED,\n GET_ALL_NOTICES_SUCCESS,\n GET_ALL_REQUEST,\n GET_ALL_NOTICES_UNREAD_LENGTH,\n} from 'src/shared/services/redux/constants/noticesTypes';\nimport { NotificationResponse } from 'src/shared/services/api/response/notificationResponse';\nimport { NoticeDispatchType } from 'src/shared/services/redux/actions/notificationActions';\n\ninterface NotificationTypes {\n notifications: NotificationResponse[] | undefined;\n unreadNotificationsLength: number;\n getNotificationsLoading?: boolean;\n}\n\nconst initialState: NotificationTypes = {\n notifications: [],\n unreadNotificationsLength: 0,\n getNotificationsLoading: false,\n};\nconst NotificationReducer = (\n state: NotificationTypes = initialState,\n action: NoticeDispatchType,\n): NotificationTypes => {\n switch (action.type) {\n case GET_ALL_REQUEST:\n return { ...state, getNotificationsLoading: true };\n case GET_ALL_NOTICES_SUCCESS:\n return {\n ...state,\n notifications: action.payload,\n getNotificationsLoading: false,\n };\n case GET_ALL_NOTICES_UNREAD_LENGTH:\n return {\n ...state,\n unreadNotificationsLength: action.payload,\n };\n case GET_ALL_NOTICES_FAILED:\n return { ...state, notifications: [], getNotificationsLoading: false };\n default:\n return state;\n }\n};\nexport default NotificationReducer;\n","import { combineReducers } from 'redux';\nimport { reducer as oidcReducer } from 'redux-oidc';\nimport authReducer from './authReducer';\nimport TagsReducer from './tagsReducer';\nimport BusinessAreaReducer from './businessAreaReducer';\nimport PermissionsReducer from './permissionsReducer';\nimport MenuListReducer from './menuListReducer';\nimport NotificationReducer from './notificationReducer';\n\nconst rootReducer = combineReducers({\n oidc: oidcReducer,\n authState: authReducer,\n tagsReducer: TagsReducer,\n notificationReducer: NotificationReducer,\n businessAreaReducer: BusinessAreaReducer,\n permissionsReducer: PermissionsReducer,\n MenuListReducer,\n});\nexport default rootReducer;\n\nexport type RootStateType = ReturnType;\n","import { createUserManager } from 'redux-oidc';\n\nimport { UserManagerSettings } from 'oidc-client';\n\nconst hostDomain = `${window.location.protocol}//${window.location.hostname}${\n window.location.port ? `:${window.location.port}` : ''\n}`;\n\nconst userManagerConfig: UserManagerSettings = {\n client_id: process.env.REACT_APP_IDENTITY_CLIENT_ID,\n redirect_uri: `${hostDomain}${process.env.REACT_APP_IDENTITY_REDIRECT_PAGE}`,\n response_type: process.env.REACT_APP_IDENTITY_RESPONSE_TYPE,\n scope: process.env.REACT_APP_IDENTITY_SCOPE,\n authority: process.env.REACT_APP_IDENTITY_AUTHORITY,\n post_logout_redirect_uri: `${hostDomain}${process.env.REACT_APP_IDENTITY_POST_LOGOUT_REDIRECT_PAGE}`,\n silent_redirect_uri: `${hostDomain}${process.env.REACT_APP_IDENTITY_SILENT_REDIRECT_PAGE}`,\n automaticSilentRenew: true,\n filterProtocolClaims: true,\n loadUserInfo: true,\n max_age: 604800, // Ändrat till 7 dygn av Sofie 2023-12-22 - ska vi ta bort denna helt? Då ska identitys settings styra\n};\n\nconst userManager = createUserManager(userManagerConfig);\n\nexport default userManager;\n","import { applyMiddleware, createStore } from 'redux';\nimport { persistReducer, persistStore } from 'redux-persist';\nimport rootReducer, { RootStateType } from 'src/shared/services/redux/reducers';\nimport storage from 'redux-persist/lib/storage';\nimport thunk from 'redux-thunk';\nimport { loadUser } from 'redux-oidc';\nimport { composeWithDevTools } from 'redux-devtools-extension';\n// import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2';\nimport userManager from '../identity/userManager';\n\n// Middleware: Redux Persist Config\nconst persistConfig = {\n // Root\n key: 'root',\n // Override default 5000ms delay om rehydrating?\n // timeout: 0,\n // Storage Method (React Native)\n storage,\n // Whitelist (Save Specific Reducers)\n whitelist: ['authState, oidc'],\n // stateReconciler: autoMergeLevel2,\n};\n// Middleware: Redux Persist Persisted Reducer\nconst persistedReducer = persistReducer(\n persistConfig,\n rootReducer,\n);\n\nconst composedEnhancers = composeWithDevTools({});\nconst store = createStore(\n persistedReducer,\n composedEnhancers(applyMiddleware(thunk)),\n);\n\nloadUser(store, userManager);\n// Middleware: Redux Persist Persister\nconst persistor = persistStore(store);\n// Exports\nexport { store, persistor };\n","/* eslint-disable no-param-reassign */\nimport axios, { AxiosResponse } from 'axios';\nimport qs from 'qs';\nimport { store } from 'src/shared/services/redux/store';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\n\ndeclare module 'axios' {\n // eslint-disable-next-line @typescript-eslint/no-empty-interface\n interface AxiosResponse extends Promise {}\n}\n\n// const getAppLanguage = (): string => {\n// return 'SE';\n// };\n\n// AXIOS CREATE INSTANCE\nconst AxiosInstance = axios.create({\n baseURL: process.env.REACT_APP_API_URL,\n timeout: 20000,\n headers: {\n 'Content-Type': 'application/json',\n },\n});\n\n// AXIOS PARAMS\nAxiosInstance.defaults.paramsSerializer = (params) => {\n // ConsoleHelper.log('paramsSerializer', params);\n const formatted = qs.stringify(params);\n return formatted;\n};\n\n// AXIOS - Destruct data from response - returnerar res.data\nconst handleResponse = ({ data }: AxiosResponse) => {\n return data;\n};\nAxiosInstance.interceptors.response.use(handleResponse);\n\n// AXIOS REQUEST\nAxiosInstance.interceptors.request.use(\n async (config) => {\n // ConsoleHelper.log('intercetor request: ', config);\n const { oidc } = store.getState();\n // config.headers['X-Language'] = getAppLanguage() ?? 'EN';\n // config.headers['X-Version'] = '2.0.0|10146|2021-02-26';\n if (oidc && oidc?.user?.access_token) {\n // ConsoleHelper.log('oidc?.user?.access_token::', oidc?.user?.access_token);\n config.headers.Authorization = `Bearer ${oidc?.user?.access_token}`;\n } else {\n config.headers.Authorization = `Bearer ${oidc?.user?.access_token}`;\n }\n return config;\n },\n (error) => Promise.reject(error),\n);\n\n// AXIOS RESPONSE QUEUE\n// let isRefreshing = false;\n// let failedQueue = [];\n\n// const processQueue = (error, token = null) => {\n// // ConsoleHelper.log('PROCESS QUEUE');\n// failedQueue.forEach((prom) => {\n// if (error) {\n// prom.reject(error);\n// } else {\n// prom.resolve(token);\n// }\n// });\n// // ConsoleHelper.log('FAILED QUEUE', failedQueue);\n// failedQueue = [];\n// };\n\n// AXIOS RESPONSE\nAxiosInstance.interceptors.response.use(\n (res) => {\n // ConsoleHelper.log('axios-interceptors response::', res);\n return res;\n },\n async (err) => {\n const originalRequest = err.config;\n\n if (err?.response?.status === 401 && !originalRequest.retry) {\n originalRequest.retry = true;\n\n // TODO: Behöver byggas om för att hantera unahorized och kanske även regresh tokens ??\n }\n return Promise.reject(err.response);\n\n // Med kö::\n // const originalRequest = err.config;\n // const { authState } = store.getState();\n\n // if (err.response.status === 401 && !originalRequest.retry) {\n // if (isRefreshing) {\n // // ConsoleHelper.log('IS REFRESHING TOKEN')\n // return new Promise((resolve: any, reject: any) => {\n // failedQueue.push({ resolve, reject });\n // })\n // .then((token) => {\n // originalRequest.headers.Authorization = `Bearer ${token}`;\n // return AxiosInstance(originalRequest);\n // })\n // .catch((error) => {\n // return Promise.reject(error);\n // });\n // }\n\n // originalRequest.retry = true;\n // isRefreshing = true;\n\n // // Refresh config\n // const refreshConfig: RefreshConfiguration = {\n // refreshToken: authState.authDetails.refreshToken,\n // };\n\n // return new Promise((resolve: any, reject: any) => {\n // refresh(config, refreshConfig)\n // .then((res) => {\n // // ConsoleHelper.log('RES REFRESH SUCCEDED', res);\n // store.dispatch({ type: AUTH_SUCCESS, payload: res });\n // originalRequest.headers.Authorization = 'Bearer ' + res.accessToken;\n // processQueue(null, res.accessToken);\n // resolve(AxiosInstance(originalRequest));\n // })\n // .catch((err) => {\n // // ConsoleHelper.log('ERROR REFRESH SUCCEDED', err);\n // processQueue(err, null);\n // // Alert.alert(\n // // 'Du har blivit utloggad',\n // // 'Av säkehetsskäl måste du identifiera dig igen.',\n // // [\n // // {\n // // text: `OK`,\n // // style: 'cancel',\n // // onPress: () => store.dispatch({ type: AUTH_FAIL }),\n // // },\n // // ]);\n // reject(err);\n // })\n // .then(() => {\n // isRefreshing = false;\n // });\n // });\n // }\n // return Promise.reject(err);\n },\n);\n\nexport default {\n get: AxiosInstance.get,\n post: AxiosInstance.post,\n put: AxiosInstance.put,\n delete: AxiosInstance.delete,\n patch: AxiosInstance.patch,\n};\n","import { PagedResult, SingleResult } from 'src/shared/services/api/baseResults';\nimport AxiosInstance from './axiosInstanceService';\n\nexport abstract class BaseAPI {\n protected readonly controllerPath: string;\n\n constructor(controllerPath: string) {\n this.controllerPath = `v1/${controllerPath}`;\n }\n\n public Get = (id: string | number) =>\n AxiosInstance.get>(\n `${this.controllerPath}/${id}`,\n {},\n );\n\n public GetAll = (options: IOptions) =>\n AxiosInstance.get>(`${this.controllerPath}`, {\n params: options,\n });\n\n public Create = (req: IRequest) =>\n AxiosInstance.post(`${this.controllerPath}`, req);\n\n public CreateList = (req: Array) =>\n AxiosInstance.post(`${this.controllerPath}`, req);\n\n public Update = (id: number | string, req: IRequest) =>\n AxiosInstance.put(`${this.controllerPath}/${id}`, req);\n\n public updateNewsWithID = (id: string, req: IRequest) =>\n AxiosInstance.put(`${this.controllerPath}/${id}`, req);\n\n public Delete = (id: IOptions) =>\n AxiosInstance.delete(`${this.controllerPath}`, {\n params: id,\n });\n\n public deleteItemWithQueryID = (id: number) =>\n AxiosInstance.delete(`${this.controllerPath}?id=${id}`);\n}\n","import { BaseAPI } from './baseAPI';\nimport { TagsOptions } from './options/tagsOptions';\nimport { TagsRequest } from './request/tagsRequest';\nimport { TagsResponse } from './response/tagsResponse';\n\nexport class TagAPI extends BaseAPI {\n constructor() {\n super('Tag');\n }\n}\n","import { Dispatch } from 'react';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { TagsResponse } from '../../api/response/tagsResponse';\nimport { TagAPI } from '../../api/tagsAPI';\nimport {\n GET_ALL_TAGS_FAILED,\n GET_ALL_TAGS_SUCCES,\n GET_ALL_REQUEST,\n} from '../constants/tagsTypes';\n\nexport interface GetAllTags {\n type: typeof GET_ALL_TAGS_SUCCES;\n payload: TagsResponse[] | undefined;\n}\nexport interface GetAllTagsFailed {\n type: typeof GET_ALL_TAGS_FAILED;\n payload: [];\n}\nexport interface GetAllTagsRequest {\n type: typeof GET_ALL_REQUEST;\n}\nexport type TagsDispatchType =\n | GetAllTags\n | GetAllTagsFailed\n | GetAllTagsRequest;\n\nexport const getTagsAction = (companyID: number | undefined) => {\n return async (dispatch: Dispatch) => {\n dispatch({ type: GET_ALL_REQUEST });\n try {\n const tagsAPI = new TagAPI();\n const res = await tagsAPI.GetAll({\n sortDir: 'asc',\n sortCol: 'name',\n pageSize: 300,\n companyId: companyID ?? undefined,\n });\n dispatch({\n type: GET_ALL_TAGS_SUCCES,\n payload: res?.results,\n });\n } catch (error) {\n ConsoleHelper.log('ERROR getAll tags::', error);\n dispatch({\n type: GET_ALL_TAGS_FAILED,\n payload: [],\n });\n }\n };\n};\n","import { BaseAPI } from './baseAPI';\nimport { BusinessAreasOptions } from './options/businessAreastOptions';\nimport { BusinessAreasRequest } from './request/businessAreasRequest';\nimport { BusinessAreaResponse } from './response/businessAreasResponse';\n\nexport class BusinessAreaAPI extends BaseAPI<\n BusinessAreaResponse,\n BusinessAreasOptions,\n BusinessAreasRequest\n> {\n constructor() {\n super('BusinessAreaTag');\n }\n}\n","import { Dispatch } from 'react';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { BusinessAreaAPI } from '../../api/businessAreasAPI';\nimport { BusinessAreaResponse } from '../../api/response/businessAreasResponse';\nimport {\n GET_BUSINESS_AREA_SUCCES,\n GET_BUSINESS_AREA_FAILED,\n GET_ALL_REQUEST,\n} from '../constants/businessAreaTypes';\n\nexport interface GetAllBusinessAreas {\n type: typeof GET_BUSINESS_AREA_SUCCES;\n payload: BusinessAreaResponse[] | undefined;\n}\nexport interface GetAllBusinessAreasFailed {\n type: typeof GET_BUSINESS_AREA_FAILED;\n payload: [];\n}\nexport interface GetAllBusinessAreasRequest {\n type: typeof GET_ALL_REQUEST;\n}\nexport type BusinessAreasDispatchType =\n | GetAllBusinessAreas\n | GetAllBusinessAreasFailed\n | GetAllBusinessAreasRequest;\n\nexport const getBusinessAreasAction = () => {\n return async (dispatch: Dispatch) => {\n dispatch({ type: GET_ALL_REQUEST });\n try {\n const businessAreaAPI = new BusinessAreaAPI();\n const res = await businessAreaAPI.GetAll({\n sortDir: 'asc',\n pageSize: 50,\n });\n dispatch({\n type: GET_BUSINESS_AREA_SUCCES,\n payload: res?.results,\n });\n } catch (error) {\n ConsoleHelper.log('businessAreas error from action', error);\n dispatch({\n type: GET_BUSINESS_AREA_FAILED,\n payload: [],\n });\n }\n };\n};\n","import { Controller } from 'react-hook-form';\nimport { TextField, Autocomplete, Box, FormLabel } from '@mui/material';\n// import { useTranslation } from 'react-i18next';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { GlobalTagIcon } from '../atoms/globalTagIcon';\n\ntype IformInputProps = {\n name: string;\n label?: string;\n selectItems: BusinessAreaResponse[];\n helperText?: string | undefined;\n type: string;\n multiple?: boolean;\n rows?: number;\n fullWidth?: boolean;\n placeholder?: string;\n control?: any;\n errors?: any;\n formLabel?: string;\n isSustainabilityForm?: boolean;\n size?: 'small' | 'medium';\n disabled?: boolean;\n fontSize?: number;\n readOnly?: boolean;\n useErrorSummary?: boolean;\n};\n\nconst BusinessAreaControlledSelect = (Iprops: IformInputProps) => {\n const {\n helperText,\n multiple,\n rows,\n type,\n fullWidth,\n placeholder,\n name,\n control,\n errors,\n label,\n selectItems,\n formLabel,\n isSustainabilityForm,\n size,\n disabled,\n fontSize,\n readOnly,\n useErrorSummary,\n } = Iprops;\n // const { t } = useTranslation();\n\n let isError = false;\n let errorMessage = '';\n if (errors && Object.prototype.hasOwnProperty.call(errors, name)) {\n isError = true;\n errorMessage = errors[name].message;\n }\n\n return (\n <>\n {formLabel && (\n \n {formLabel}\n \n )}\n {\n return (\n option.name}\n isOptionEqualToValue={(option, item) => option.id === item.id}\n onChange={(event, selectedOptions) => {\n onChange(selectedOptions);\n }}\n // autoSelect\n renderOption={(props, option) => (\n \n {option.name}\n \n )}\n renderInput={(params) => {\n return (\n \n );\n }}\n />\n );\n }}\n />\n \n );\n};\n\nBusinessAreaControlledSelect.defaultProps = {\n size: 'medium',\n fontSize: null,\n readOnly: false,\n useErrorSummary: false,\n multiple: false,\n};\n\nexport default BusinessAreaControlledSelect;\n","import { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { PermissionGroupResponse } from '../services/api/response/permissionsResponse';\n\n// Geografiskt affärsområde\nexport const locationsTags = (tags: TagsResponse[] | undefined) => {\n return tags?.filter((tag) => tag.type === 'Location') ?? [];\n};\n// Rolltaggar\nexport const rolesTags = (tags: TagsResponse[] | undefined) => {\n return tags?.filter((tag) => tag.type === 'Role') ?? [];\n};\n// Kompetenstaggar\nexport const competencesTags = (tags: TagsResponse[] | undefined) => {\n return tags?.filter((tag) => tag.type === 'Competence') ?? [];\n};\n// Segment (VS, Teknik etc)\nexport const getBusinessAreas = (\n businessAreas: BusinessAreaResponse[] | undefined,\n) => {\n return businessAreas ?? [];\n};\n// Behörighetsgrupp\nexport const getPermissionsGroups = (\n permissionGroups: PermissionGroupResponse[] | undefined,\n) => {\n return permissionGroups?.sort((a, b) => b.name.localeCompare(a.name)) ?? [];\n};\n","import { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { useState, useEffect } from 'react';\nimport { EmployeeMeResponse } from '../services/api/response/employeeResponse';\nimport { SustainabilityReportResponse } from '../services/api/response/sustainabilityReportResponse';\n// import ConsoleHelper from './consoleHelper';\n\nexport const UserTypeEnum = {\n SuperAdmin: 5, // Får göra allt\n LocalAdmin: 4, // Får hantera content & användare lokalt & se proposallist (men får inte skapa nya företag) // KOMMER INTE ANVÄNDAS\n Manager: 6, // Manager får hantera content & användare lokalt\n Editor: 1, // Editor får hantera content lokalt\n User: 7, // Får bara läsa från sitt eget company\n ExternalUser: 8, // Får bara läsa sidor som hens är taggade med (döljer övriga hårdkodade menyval också)\n};\n\n// TODO: Har förbättringspotential - hur göra smartare?\nexport const GetAdminPermission = (\n itemCompanyId: number | undefined,\n type?: string,\n) => {\n const { userDetails, userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n const [isApproved, setIsApproved] = useState(false);\n\n useEffect(() => {\n // Get userType for user asking for permisson\n const userType = userDetails?.permissionGroup?.id;\n // Get companyId for user asking for permission\n const userCompanyId = userCompany?.id;\n\n // Check is user has permission to edit or create this item\n // Needs to have correct userType, match companyId & have permission for the type of item\n if (\n userType === UserTypeEnum.SuperAdmin &&\n (itemCompanyId === 0 || itemCompanyId === userCompanyId)\n ) {\n setIsApproved(true);\n } else if (\n // LocalAdmin ska bort\n userType === UserTypeEnum.LocalAdmin &&\n type !== 'company' &&\n type !== 'SuperAdmin' &&\n (itemCompanyId === 0 || itemCompanyId === userCompanyId)\n ) {\n setIsApproved(true);\n } else if (\n userType === UserTypeEnum.Manager &&\n type !== 'company' &&\n type !== 'contacts' &&\n type !== 'SuperAdmin' &&\n (itemCompanyId === 0 || itemCompanyId === userCompanyId)\n ) {\n setIsApproved(true);\n } else if (\n userType === UserTypeEnum.Editor &&\n type !== 'proposals' &&\n type !== 'groups' &&\n type !== 'company' &&\n type !== 'employees' &&\n type !== 'contacts' &&\n type !== 'changeCompany' &&\n type !== 'SuperAdmin' &&\n type !== 'tags' &&\n (itemCompanyId === 0 || itemCompanyId === userCompanyId)\n ) {\n setIsApproved(true);\n } else {\n setIsApproved(false);\n }\n }, [itemCompanyId, userDetails, userCompany, type]);\n\n return isApproved;\n};\n\n// Validera behörighet på hållbarhetsmodul\nexport const isSustainabilityApproverUserOrAdmin = (\n employee: EmployeeMeResponse | undefined,\n report: SustainabilityReportResponse,\n): boolean => {\n // Kontrollera om employee är undefined\n if (!employee) {\n return false;\n }\n return (\n employee.id === report.approverUser.id ||\n (employee.permissionGroup && employee.permissionGroup.id === 5)\n );\n};\n\nexport const isSustainabilityReporterUserOrAdmin = (\n employee: EmployeeMeResponse | undefined,\n report: SustainabilityReportResponse,\n): boolean => {\n // Kontrollera om employee är undefined\n if (!employee) {\n return false;\n }\n return (\n employee.id === report.reporterUser.id ||\n (employee.permissionGroup && employee.permissionGroup.id === 5)\n );\n};\n","export const isParentCompany = (id: number | undefined) => {\n let isParent = false;\n if (id && (id === 1 || id === 32)) {\n isParent = true;\n }\n return isParent;\n};\n","// Mui\nimport { PublicOutlined } from '@mui/icons-material';\nimport { Tooltip } from '@mui/material';\nimport { isParentCompany } from 'src/shared/helpers/companyHelper';\n// Styles\nimport { Colors } from 'src/shared/components/styles';\n// Services\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\n\ntype GlobalTagIconProps = {\n options: TagsResponse;\n};\n\nexport const GlobalTagIcon = ({ options }: GlobalTagIconProps) => {\n return (\n <>\n {(isParentCompany(options.companyId) || options.companyId === 0) &&\n options?.type !== 'Location' ? (\n \n \n \n ) : null}\n \n );\n};\n","import { Controller } from 'react-hook-form';\nimport { TextField, Autocomplete, Box, FormLabel } from '@mui/material';\n// import { useTheme } from '@mui/material/styles';\n// import { useTranslation } from 'react-i18next';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { GlobalTagIcon } from 'src/shared/components/atoms/globalTagIcon';\n\ntype TagsControlledSelectedType = {\n name: string;\n label?: string;\n formLabel?: string;\n selectItems: TagsResponse[];\n helperText?: string | undefined;\n type: string;\n multiple?: boolean;\n rows?: number;\n fullWidth?: boolean;\n placeholder?: string;\n control?: any;\n errors?: any;\n size?: 'small' | 'medium';\n disabled?: boolean;\n fontSize?: number;\n readOnly?: boolean;\n useErrorSummery?: boolean;\n};\n\nexport const TagsControlledSelected = (props: TagsControlledSelectedType) => {\n const {\n // helperText,\n multiple,\n rows,\n type,\n fullWidth,\n placeholder,\n name,\n control,\n errors,\n label,\n formLabel,\n selectItems,\n size,\n disabled,\n fontSize,\n readOnly,\n useErrorSummery,\n } = props;\n // const { t } = useTranslation();\n // const theme = useTheme();\n\n let isError = false;\n let errorMessage = '';\n if (errors && Object.prototype.hasOwnProperty.call(errors, name)) {\n isError = true;\n errorMessage = errors[name].message;\n }\n\n return (\n <>\n {formLabel && (\n \n {formLabel}\n \n )}\n {\n return (\n option.name}\n isOptionEqualToValue={(option, item) => option.id === item.id}\n onChange={(event, selectedOptions) => {\n onChange(selectedOptions);\n }}\n renderOption={(optProps, option) => (\n \n {option.name}\n \n \n )}\n renderInput={(params) => {\n return (\n \n );\n }}\n />\n );\n }}\n />\n \n );\n};\nTagsControlledSelected.defaultProps = {\n helperText: undefined,\n multiple: false,\n rows: undefined,\n fullWidth: undefined,\n placeholder: undefined,\n control: undefined,\n errors: undefined,\n size: 'medium',\n label: undefined,\n formLabel: undefined,\n disabled: false,\n fontSize: null,\n readOnly: false,\n useErrorSummery: false,\n};\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n// Services\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { getTagsAction } from 'src/shared/services/redux/actions/tagsActions';\nimport { getBusinessAreasAction } from 'src/shared/services/redux/actions/businessAreasAction';\nimport BusinessAreaControlledSelect from 'src/shared/components/form/businessAreaControlledSelect';\nimport {\n getBusinessAreas,\n locationsTags,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { TagsControlledSelected } from './tagsControlledSelected';\n// import { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\n\ntype IformInputProps = {\n companyId: number;\n control: any;\n errors: any;\n};\n\nconst SegmentLocationRoleTags = (Iprops: IformInputProps) => {\n const { companyId, control, errors } = Iprops;\n const { t } = useTranslation();\n const dispatch = useDispatch();\n\n // Global states\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n const { tags } = useSelector((state: RootStateType) => state.tagsReducer);\n const { businessAreas } = useSelector(\n (state: RootStateType) => state.businessAreaReducer,\n );\n\n useEffect(() => {\n dispatch(getTagsAction(userCompany?.id ?? undefined));\n dispatch(getBusinessAreasAction());\n }, [dispatch, userCompany]);\n\n const superAdminPermission = GetAdminPermission(companyId, 'SuperAdmin');\n\n return (\n <>\n {superAdminPermission && (\n <>\n \n \n \n )}\n \n \n );\n};\n\nexport default SegmentLocationRoleTags;\n","import { BaseAPI } from './baseAPI';\nimport { NotificationResponse } from './response/notificationResponse';\nimport { NotificationRequest } from './request/notificationRequest';\nimport { NotificationOptions } from './options/notificationOptions';\nimport AxiosInstance from './axiosInstanceService';\n\nexport class NotificationAPI extends BaseAPI<\n NotificationResponse,\n NotificationOptions,\n NotificationRequest\n> {\n constructor() {\n super('Notification');\n }\n\n public SetIsRead = (id: string | number) =>\n AxiosInstance.put(`${this.controllerPath}/${id}/Read`);\n\n public SetAllRead = () =>\n AxiosInstance.post(`${this.controllerPath}/readAll`);\n}\n","import { useEffect } from 'react';\nimport { Typography } from '@mui/material';\nimport { useForm, SubmitHandler, FormProvider } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport * as yup from 'yup';\nimport { SchemaOf } from 'yup';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { toast } from 'react-toastify';\n// Components\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledPushNoticeCheckbox from 'src/shared/components/form/controlledPushNoticeCheckbox';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\n// Services\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { NotificationRequest } from 'src/shared/services/api/request/notificationRequest';\nimport { NotificationAPI } from 'src/shared/services/api/notificationAPI';\n\ninterface INoticeModalFormInputs {\n message: string;\n title: string;\n sendNotice: boolean;\n sendEmail: boolean;\n businessAreaTags?: BusinessAreaResponse[];\n locations?: TagsResponse[] | undefined;\n roles?: TagsResponse[];\n contentType: string | undefined;\n companyId: string | number | undefined;\n}\n\ntype CreateNoticeModalType = {\n isOpen: boolean;\n onClose: () => void;\n};\n\nexport const CreateNoticeModal = (props: CreateNoticeModalType) => {\n // const [loading, setLoading] = useState(false);\n const { t } = useTranslation();\n const { isOpen, onClose } = props;\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n const createNoticeModalSchema: SchemaOf = yup\n .object()\n .shape({\n message: yup.string().required(t('ErrorTypeBeforePost')).max(1000),\n title: yup.string().required().max(50),\n sendNotice: yup.boolean().required(),\n sendEmail: yup.boolean().required(),\n businessAreaTags: yup.array().of(yup.mixed()),\n locations: yup.array().of(yup.mixed()),\n roles: yup.array().of(yup.mixed()),\n contentType: yup.string(),\n companyId: yup.string() || yup.number(),\n });\n\n const formMethods = useForm({\n resolver: yupResolver(createNoticeModalSchema),\n defaultValues: {\n message: '',\n title: '',\n sendNotice: false,\n sendEmail: false,\n businessAreaTags: [],\n locations: [],\n roles: [],\n contentType: 'HomePageNote',\n companyId: userCompany?.id,\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n const formSubmit: SubmitHandler = async (data) => {\n const tagIds: number[] = [];\n if (data?.locations) {\n data.locations.forEach((element) => {\n if (element.id) {\n tagIds.push(element.id);\n }\n });\n }\n if (data?.roles) {\n data.roles.forEach((element) => {\n if (element.id) {\n tagIds.push(element.id);\n }\n });\n }\n const bTagIds = data.businessAreaTags?.map((x) => x.id) ?? [];\n\n const request: NotificationRequest = {\n id: 0,\n companyID: data.companyId as number,\n message: data.message,\n title: data.title,\n sendEmail: data.sendEmail,\n sendPush: data.sendNotice,\n tags: tagIds,\n businessAreaTags: bTagIds,\n };\n\n const api = new NotificationAPI();\n try {\n const res = await api.Create(request);\n ConsoleHelper.log('success creating notification', res);\n reset();\n toast.success(t('Done!'));\n onClose();\n } catch (e) {\n ConsoleHelper.log('error creating notification', e);\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n useEffect(() => {\n reset();\n }, [reset]);\n\n return (\n \n {t('CreateNotification')}\n \n }\n content={\n <>\n \n {t('CreateNotificationInfo')}\n \n \n
\n \n \n \n \n \n {\n onClose();\n }}\n />\n \n
\n \n }\n />\n );\n};\n","import { useState } from 'react';\nimport { ArrowForward, MoreVert } from '@mui/icons-material';\nimport {\n ListItem,\n ListItemButton,\n ListItemIcon,\n IconButton,\n alpha,\n Typography,\n Divider,\n} from '@mui/material';\nimport { Theme } from '@mui/material/styles';\nimport { Colors } from 'src/shared/components/styles';\nimport { Link } from 'react-router-dom';\nimport { NavigationResponse } from 'src/shared/services/api/response/navigationResponse';\nimport ActionMenuPages from 'src/shared/components/navigations/actionMenuPages';\nimport { CreateNoticeModal } from 'src/modules/home/components/createNoticeModal';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { isParentCompany } from 'src/shared/helpers/companyHelper';\n\ntype MenuListItemProps = {\n isFirst?: boolean;\n menuItem: NavigationResponse;\n index: number;\n activeIndex: number;\n icon?: JSX.Element;\n renderForwardArrow: boolean;\n closeMobileMenu?: (event: React.MouseEvent | React.KeyboardEvent) => void;\n};\n\nconst MenuListItem = (props: MenuListItemProps) => {\n const {\n isFirst,\n menuItem,\n icon,\n index,\n activeIndex,\n renderForwardArrow,\n closeMobileMenu,\n } = props;\n\n // Local states\n const [showActions, setShowActions] = useState(false);\n const [showHomePageNoteModal, setShowHomePageNoteModal] =\n useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n\n const handleClickShowActionMenu = (\n event: React.MouseEvent,\n ) => {\n setAnchorEl(event.currentTarget);\n setShowActions(true);\n };\n\n const handleCloseActionMenu = (e: React.MouseEvent) => {\n e.stopPropagation();\n setAnchorEl(null);\n setShowActions(false);\n if (closeMobileMenu) closeMobileMenu(e);\n };\n\n const renderBorderColor = (item: NavigationResponse) => {\n let color = 'transparent';\n if (\n item.contentType === 'Start' ||\n item.contentType === 'GroupListPage' ||\n item.contentType === 'CompanyListPage' ||\n item.contentType === 'EmployeeListPage' ||\n item.contentType === 'ContactListPage'\n ) {\n color = 'transparent';\n } else if (isParentCompany(menuItem?.companyId) && !isFirst) {\n color = Colors.PETROL;\n }\n return color;\n };\n\n const hasCreatePermission = GetAdminPermission(menuItem?.companyId);\n\n return (\n <>\n \n \n \n )\n }\n >\n \n activeIndex === index\n ? `${alpha(\n isParentCompany(menuItem?.companyId)\n ? Colors.PETROL\n : theme.palette.primary.main,\n 0.04,\n )} !important`\n : 'white',\n borderLeftWidth: isFirst ? 0 : 10,\n borderLeftStyle: 'solid',\n borderLeftColor: renderBorderColor(menuItem),\n boxShadow: isFirst ? '0 2px 2px rgb(0, 0, 0, 0.2)' : 'none',\n position: 'relative',\n '&:focus, &:hover': {\n backgroundColor: (theme: Theme) =>\n `${alpha(\n isParentCompany(menuItem?.companyId)\n ? Colors.PETROL\n : theme.palette.primary.main,\n 0.04,\n )} !important`,\n },\n }}\n onClick={\n closeMobileMenu\n ? (event: React.MouseEvent | React.KeyboardEvent) =>\n closeMobileMenu(event)\n : undefined\n }\n component={Link}\n to={\n menuItem.contentType === 'Start'\n ? '/'\n : `/${menuItem.contentType}/${menuItem.id}`\n }\n >\n {icon !== undefined && icon}\n \n {menuItem?.title}\n \n {renderForwardArrow && (\n \n \n \n )}\n ) =>\n handleCloseActionMenu(e)\n }\n showHomePageNote={(arg: boolean) => setShowHomePageNoteModal(arg)}\n />\n \n \n \n setShowHomePageNoteModal(false)}\n />\n \n );\n};\n\nMenuListItem.defaultProps = {\n isFirst: false,\n icon: undefined,\n closeMobileMenu: undefined,\n};\n\nexport default MenuListItem;\n","import { NavigationResponse } from './response/navigationResponse';\n// import AxiosInstance from './axiosInstanceService';\nimport { BaseAPI } from './baseAPI';\nimport { NavigationRequest } from './request/navigationRequest';\nimport { NavigationOptions } from './options/navigationOptions';\n// export class NavigationAPI {\n// public GetAll = () =>\n// AxiosInstance.get(`/Navigation`, {});\n// }\n\nexport class NavigationAPI extends BaseAPI<\n NavigationResponse,\n NavigationOptions,\n NavigationRequest\n> {\n constructor() {\n super('Navigation');\n }\n}\n","import { Dispatch } from 'react';\nimport { UserTypeEnum } from 'src/shared/helpers/permissionHelper';\nimport { NavigationAPI } from '../../api/navigationAPI';\nimport { NavigationResponse } from '../../api/response/navigationResponse';\nimport {\n GET_MENU_LIST_SUCCES,\n GET_MENU_LIST_FAILED,\n GET_MENU_LIST_REQUEST,\n} from '../constants/menuListTypes';\nimport { RootStateType } from '../reducers';\n\nexport interface GetAllMenuList {\n type: typeof GET_MENU_LIST_SUCCES;\n payload: NavigationResponse[] | undefined;\n}\nexport interface GetAllMenuListFailed {\n type: typeof GET_MENU_LIST_FAILED;\n payload: [];\n}\nexport interface GetAllMenuListRequest {\n type: typeof GET_MENU_LIST_REQUEST;\n}\nexport type MenuListDispatchType =\n | GetAllMenuList\n | GetAllMenuListFailed\n | GetAllMenuListRequest;\n\nexport const getMenuListAction = (\n extraMenu: NavigationResponse[],\n compId: number | undefined,\n) => {\n return async (\n dispatch: Dispatch,\n getState: () => RootStateType,\n ) => {\n dispatch({ type: GET_MENU_LIST_REQUEST });\n const requestOptions = {\n sortCol: 'sortIndex',\n sortDir: 'asc',\n companyId: compId,\n };\n try {\n const { userDetails } = getState().authState;\n const isExternalUser =\n userDetails?.permissionGroup.id === UserTypeEnum.ExternalUser;\n const internalMenuIds = [20000, 30000, 40000, 50000, 60000];\n const navapi = new NavigationAPI();\n const res = await navapi.GetAll(requestOptions);\n if (res?.results) {\n // Tar bort sidor av typen HomePageNote\n const menuResult = res?.results?.filter(\n (item) => item.contentType !== 'HomePageNote',\n );\n // Pushar in hämtade sidor till extraMenu (hårdkodad meny)\n menuResult.forEach((element) => {\n extraMenu.push(element);\n });\n // Sorterar sidor utifrån sortIndex\n extraMenu.sort((a, b) => {\n return a?.sortIndex - b?.sortIndex;\n });\n // Filtrera bort hårdkodade menyval om external user\n const filteredMenu = isExternalUser\n ? extraMenu.filter((item) => !internalMenuIds.includes(item.id))\n : extraMenu;\n // Dispatcha menyn till globalt state\n dispatch({\n type: GET_MENU_LIST_SUCCES,\n payload: filteredMenu,\n });\n }\n } catch (error) {\n // ConsoleHelper.log('get all menu List error from action', error);\n dispatch({\n type: GET_MENU_LIST_FAILED,\n payload: [],\n });\n }\n };\n};\n","import React, { useState, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Link, useRouteMatch } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\n// MUI\nimport {\n ChatBubbleOutlineOutlined,\n InfoOutlined,\n InsertDriveFileOutlined,\n PlayArrowOutlined,\n ArrowBackIos,\n Contacts,\n PhotoAlbum,\n DescriptionOutlined,\n BusinessRounded,\n ImportContactsRounded,\n GroupRounded,\n WbIncandescentOutlined,\n HelpOutline,\n ChangeCircleOutlined,\n} from '@mui/icons-material';\nimport {\n alpha,\n Box,\n Divider,\n List,\n ListItem,\n ListItemButton,\n ListItemIcon,\n ListItemText,\n Typography,\n} from '@mui/material';\nimport { Theme } from '@mui/material/styles';\n// Components\nimport { Colors } from 'src/shared/components/styles';\nimport SkeletonCards from 'src/shared/components/skeletons/skeletonCards';\nimport MenuListItem from 'src/shared/components/navigations/menuListItem';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\n// Services\nimport { IParams } from 'src/shared/interfaces/params';\nimport { NavigationResponse } from 'src/shared/services/api/response/navigationResponse';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { getMenuListAction } from 'src/shared/services/redux/actions/getMenuList';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\n\nexport const extraMenu = (t: (s: string) => void) => {\n return [\n {\n id: 0,\n title: `${t('start')}`,\n contentType: 'Start',\n parentContentPageId: 0,\n companyId: 0,\n canHaveChildren: true,\n sortIndex: 0,\n },\n {\n id: 30000,\n title: `${t('groups')}`,\n contentType: 'GroupListPage',\n parentContentPageId: 0,\n companyId: 0,\n canHaveChildren: false,\n sortIndex: 0,\n },\n {\n id: 20000,\n title: `${t('ImprovementProposal')}`,\n contentType: 'ProposalListPage',\n parentContentPageId: 0,\n companyId: 0,\n canHaveChildren: false,\n sortIndex: 0,\n },\n {\n id: 40000,\n title: `${t('Company')}`,\n contentType: 'CompanyListPage',\n parentContentPageId: 0,\n companyId: 0,\n canHaveChildren: false,\n sortIndex: 6000,\n },\n {\n id: 60000,\n title: `${t('Employees')}`,\n contentType: 'EmployeeListPage',\n parentContentPageId: 0,\n companyId: 0,\n canHaveChildren: false,\n sortIndex: 7000,\n },\n {\n id: 50000,\n title: `${t('contactTitle')}`,\n contentType: 'ContactListPage',\n parentContentPageId: 0,\n companyId: 0,\n canHaveChildren: false,\n sortIndex: 8000,\n },\n ];\n};\n\ntype MenuListProps = {\n closeMobileMenu?: (event: React.MouseEvent | React.KeyboardEvent) => void;\n};\n\nconst MenuList = ({ closeMobileMenu }: MenuListProps) => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n // Global states\n const { menuList, getMenuLoading } = useSelector(\n (state: RootStateType) => state.MenuListReducer,\n );\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n // Loval states\n const [selectedId, setSelectedId] = useState(0);\n const [menuToRender, setMenuToRender] = useState<\n NavigationResponse[] | undefined\n >();\n const [currentParent, setCurrentParent] = useState<\n NavigationResponse | undefined\n >(undefined);\n const [latestFoundNode, setLatestFoundNode] = useState<\n NavigationResponse | undefined\n >(undefined);\n\n // Matcha sidors id med rutt för att rendera rätt i menyn\n const match = useRouteMatch('/*/:id');\n const matchCreateEdit = useRouteMatch('/*/:id/*');\n // Gruppsidor och förbättringsförslag kan ha samma id som en vanlig ContentPage och måste därför jämföras separat\n const matchGroup = useRouteMatch('/GroupPage/:id');\n const matchProposal = useRouteMatch('/ProposalPage/:id');\n const matchSustainabilityReport = useRouteMatch(\n '/SustainabilityReportDetailsPage/:id',\n );\n\n useEffect(() => {\n if (userCompany?.id) {\n // ConsoleHelper.log('userCompany?.id', userCompany?.id);\n dispatch(getMenuListAction(extraMenu(t), userCompany?.id));\n }\n }, [userCompany?.id, dispatch, t]);\n\n const findNode = useCallback(\n (\n id: number,\n array: NavigationResponse[],\n ): NavigationResponse | undefined | null => {\n let returnValue;\n // eslint-disable-next-line no-restricted-syntax\n for (const node of array) {\n if (node.id === id) returnValue = node;\n if (node.childItems) {\n const child = findNode(id, node.childItems);\n if (child) returnValue = child;\n }\n }\n return returnValue;\n },\n [],\n );\n\n useEffect(() => {\n const id = matchCreateEdit?.params?.id || match?.params?.id;\n if (menuList && menuList.length > 0 && id) {\n setSelectedId(Number(id));\n const foundNode = findNode(Number(id), menuList);\n // Separat hantering för specialsidor\n if (matchGroup) {\n // Grupper\n setSelectedId(30000);\n setCurrentParent(undefined);\n setMenuToRender(menuList);\n } else if (matchProposal) {\n // Förbättringsförslag\n setSelectedId(20000);\n setCurrentParent(undefined);\n // setMenuToRender(menuList);\n } else if (matchSustainabilityReport) {\n // Hållbarhetsrapporter\n const menuToShow = latestFoundNode?.childItems;\n setCurrentParent(latestFoundNode);\n setMenuToRender(menuToShow ?? menuList);\n } else if (foundNode) {\n // Övriga contentPages\n // ConsoleHelper.log('foundNode', foundNode);\n setLatestFoundNode(foundNode);\n // Hittade ContentPage sida i menyn\n if (foundNode.childItems && foundNode.childItems.length > 0) {\n // node level with children\n const filteredResult = foundNode.childItems;\n setCurrentParent(foundNode);\n setMenuToRender(filteredResult);\n } else if (\n foundNode?.parentContentPageId &&\n foundNode.parentContentPageId > 0\n ) {\n const foundParentNode = findNode(\n foundNode.parentContentPageId,\n menuList,\n );\n if (\n foundParentNode &&\n foundParentNode.childItems &&\n foundParentNode.childItems.length > 0\n ) {\n // bottom of node tree render parents children\n setCurrentParent(foundParentNode);\n setMenuToRender(foundParentNode?.childItems);\n }\n } else {\n // root node..\n setCurrentParent(undefined);\n setMenuToRender(menuList);\n }\n } else {\n ConsoleHelper.log('Node not found for match', match);\n setMenuToRender(menuList);\n }\n } else {\n // no url id render menu..\n setSelectedId(0);\n setCurrentParent(undefined);\n setMenuToRender(menuList);\n }\n }, [findNode, match, menuList]);\n\n // Visa ikon för respektive sidtyp\n const getIcon = (type: string) => {\n let iconToShow = ;\n if (type === 'Start') iconToShow = ;\n if (type === 'DocumentListPage') iconToShow = ;\n if (type === 'ContactPage') iconToShow = ;\n if (type === 'GroupListPage') iconToShow = ;\n if (type === 'ProposalListPage')\n iconToShow = (\n \n );\n if (type === 'NewsListPage') iconToShow = ;\n if (type === 'GalleryListPage') iconToShow = ;\n if (type === 'GalleryPage') iconToShow = ;\n if (type === 'MenuPage') iconToShow = ;\n if (type === 'CompanyListPage') iconToShow = ;\n if (type === 'ContactListPage') iconToShow = ;\n if (type === 'EmployeeListPage') iconToShow = ;\n if (type === 'SustainabilityReportListPage')\n iconToShow = ;\n if (type === 'SustainabilityReportDetailsPage')\n iconToShow = ;\n return iconToShow;\n };\n\n return getMenuLoading ? (\n \n ) : (\n \n {currentParent && (\n <>\n \n `${alpha(theme.palette.primary.main, 0.04)} !important`,\n },\n '&:after': {\n content: '\" \"',\n position: 'absolute',\n bottom: '-1px',\n backgroundColor: (theme: Theme) =>\n alpha(theme.palette.primary.main, 0.15),\n width: '100%',\n height: '1px',\n left: 0,\n zIndex: 20,\n },\n }}\n component={Link}\n to={\n currentParent.parentContentPageId === 0\n ? '/'\n : `/${currentParent.contentType}/${currentParent.parentContentPageId}`\n }\n >\n \n \n \n \n \n \n {getIcon(currentParent.contentType)}\n \n }\n renderForwardArrow={false}\n closeMobileMenu={closeMobileMenu}\n />\n \n )}\n {menuToRender?.map((item: NavigationResponse) => {\n return (\n \n {getIcon(item.contentType)}\n \n }\n renderForwardArrow={\n !!(item.childItems && item.childItems.length > 0)\n }\n closeMobileMenu={closeMobileMenu}\n />\n );\n })}\n\n \n \n `${alpha(theme.palette.primary.main, 0.04)} !important`,\n },\n }}\n onClick={\n closeMobileMenu\n ? (event: React.MouseEvent | React.KeyboardEvent) =>\n closeMobileMenu(event)\n : undefined\n }\n component={Link}\n to={\n userCompany?.country_CountryCode === 'SE'\n ? '/DocumentListPage/2906'\n : '/DocumentListPage/2907'\n }\n >\n \n \n \n \n {t('Help')} - {t('intranet')}\n \n \n \n \n\n \n \n \n \n );\n};\n\nMenuList.defaultProps = {\n closeMobileMenu: undefined,\n};\nexport default MenuList;\n","import { Grid } from '@mui/material';\nimport MenuList from 'src/shared/components/navigations/menuList';\nimport { Colors } from 'src/shared/components/styles';\n\nconst DrawerNavigation = () => {\n return (\n \n \n \n \n );\n};\n\nexport default DrawerNavigation;\n","import { Link } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport dayjs from 'dayjs';\nimport relativeTime from 'dayjs/plugin/relativeTime';\n// MUI\nimport { ListItemIcon, ListItemButton, ListItemText } from '@mui/material';\nimport {\n AssessmentOutlined,\n InfoOutlined,\n InsertDriveFileOutlined,\n PhotoAlbum,\n DescriptionOutlined,\n GroupRounded,\n} from '@mui/icons-material';\n// Components\nimport { Colors } from 'src/shared/components/styles';\n// Services\nimport { NotificationResponse } from 'src/shared/services/api/response/notificationResponse';\nimport { NotificationAPI } from 'src/shared/services/api/notificationAPI';\n\ndayjs.extend(relativeTime);\n\ntype ItemType = {\n item: NotificationResponse;\n fetchNotifications: () => void;\n setShowNotificationFeed: (arg: boolean) => void;\n};\nconst NotificationListItem = (props: ItemType) => {\n const { item, fetchNotifications, setShowNotificationFeed } = props;\n\n const { t } = useTranslation();\n\n const onClickItem = async () => {\n const notificationApi = new NotificationAPI();\n if (item?.isRead === false) {\n try {\n await notificationApi.SetIsRead(item?.id);\n fetchNotifications();\n setShowNotificationFeed(false);\n } catch (error) {\n setShowNotificationFeed(false);\n }\n } else {\n setShowNotificationFeed(false);\n }\n };\n\n const getIcon = (type: string) => {\n let iconToShow = ;\n if (type === 'NewsListPage')\n iconToShow = ;\n if (type === 'GroupPage') iconToShow = ;\n if (type === 'DocumentListPage')\n iconToShow = ;\n if (type === 'ProposalListPage')\n iconToShow = ;\n if (type === 'GalleryListPage')\n iconToShow = ;\n if (type === 'GalleryPage') iconToShow = ;\n if (type === 'MenuPage')\n iconToShow = ;\n return iconToShow;\n };\n\n return (\n \n \n {getIcon(item.type)}\n {/* */}\n \n \n \n );\n};\n\nexport default NotificationListItem;\n","import { Dispatch } from 'react';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport {\n GET_ALL_NOTICES_FAILED,\n GET_ALL_NOTICES_SUCCESS,\n GET_ALL_REQUEST,\n GET_ALL_NOTICES_UNREAD_LENGTH,\n} from 'src/shared/services/redux/constants/noticesTypes';\nimport { NotificationResponse } from 'src/shared/services/api/response/notificationResponse';\nimport { NotificationAPI } from 'src/shared/services/api/notificationAPI';\n\nexport interface GetAllNotificationsUnreadLength {\n type: typeof GET_ALL_NOTICES_UNREAD_LENGTH;\n payload: number;\n}\nexport interface GetAllNotifications {\n type: typeof GET_ALL_NOTICES_SUCCESS;\n payload: NotificationResponse[] | undefined;\n}\nexport interface GetAllNotificationsFailed {\n type: typeof GET_ALL_NOTICES_FAILED;\n payload: [];\n}\nexport interface GetAllNotificationsRequest {\n type: typeof GET_ALL_REQUEST;\n}\nexport type NoticeDispatchType =\n | GetAllNotificationsUnreadLength\n | GetAllNotifications\n | GetAllNotificationsFailed\n | GetAllNotificationsRequest;\n\nexport const getNotificationsAction = () => {\n return async (dispatch: Dispatch) => {\n dispatch({ type: GET_ALL_REQUEST });\n try {\n const notificationApi = new NotificationAPI();\n const res = await notificationApi.GetAll({\n sortDir: 'desc',\n });\n if (res) {\n if (res.results) {\n // Sätt notifications datat till array\n dispatch({\n type: GET_ALL_NOTICES_SUCCESS,\n payload: res?.results,\n });\n // Sätt antalet olästa notifikationer\n let unreadNumber = 0;\n const unreadItems = res.results.filter(\n (item) => item.isRead === false,\n );\n unreadNumber = unreadItems?.length;\n dispatch({\n type: GET_ALL_NOTICES_UNREAD_LENGTH,\n payload: unreadNumber,\n });\n }\n }\n } catch (error) {\n ConsoleHelper.log('tags error from action', error);\n dispatch({\n type: GET_ALL_NOTICES_FAILED,\n payload: [],\n });\n }\n };\n};\n","import { Box, Button, Grid, List, Typography } from '@mui/material';\nimport SkeletonCards from 'src/shared/components/skeletons/skeletonCards';\nimport NotificationListItem from 'src/shared/components/atoms/notificationListItem';\nimport { useTranslation } from 'react-i18next';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { getNotificationsAction } from 'src/shared/services/redux/actions/notificationActions';\nimport { NotificationAPI } from 'src/shared/services/api/notificationAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport InfoTooltip from 'src/shared/components/molecules/infoTooltip';\n\ntype FeedProps = {\n setShowNotificationFeed: (arg: boolean) => void;\n};\n\nconst NotificationFeed = (props: FeedProps) => {\n const { setShowNotificationFeed } = props;\n\n const { t } = useTranslation();\n const dispatch = useDispatch();\n\n // Globala states\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const { notifications, getNotificationsLoading } = useSelector(\n (state: RootStateType) => state.notificationReducer,\n );\n\n // Hämta om notifikationer efter markerad som läst\n const fetchNotifications = () => {\n dispatch(getNotificationsAction());\n };\n const markAllNotificationsAsRead = async () => {\n try {\n const api = new NotificationAPI();\n await api.SetAllRead();\n fetchNotifications();\n } catch (error) {\n fetchNotifications();\n ConsoleHelper.log('Error setting notification read..');\n }\n };\n\n return (\n \n \n \n \n \n {getNotificationsLoading && }\n \n {!getNotificationsLoading &&\n notifications &&\n notifications?.map((item) => {\n return (\n \n );\n })}\n {!getNotificationsLoading && notifications?.length === 0 && (\n {t('NoNotifications')}\n )}\n \n \n );\n};\n\nexport default NotificationFeed;\n","export const fileUrl = (\n id: string | number | undefined,\n token: string | undefined,\n) =>\n `${process.env.REACT_APP_API_URL}/v1/Document/${id}/Download?access_token=${token}`;\n","import { Avatar, Typography } from '@mui/material';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport { Colors } from '../styles';\n\ntype UserAvatarType = {\n imageId?: number | undefined;\n size: number;\n initials?: string;\n color?: string;\n};\n\nconst UserAvatar = (props: UserAvatarType) => {\n const { imageId, size, initials, color } = props;\n const { user } = useSelector((state: RootStateType) => state.oidc);\n return (\n <>\n {imageId && imageId !== 0 ? (\n \n ) : (\n \n \n {initials}\n \n \n )}\n \n );\n};\n\nUserAvatar.defaultProps = {\n imageId: undefined,\n initials: '',\n color: 'primary.main',\n};\n\nexport default UserAvatar;\n","import { BaseAPI } from './baseAPI';\nimport { CompanyOptions } from './options/companyOptions';\nimport { CompanyRequest } from './request/companyRequest';\nimport { CompanyResponse } from './response/companyResponse';\n\nexport class CompanyAPI extends BaseAPI<\n CompanyResponse,\n CompanyOptions,\n CompanyRequest\n> {\n constructor() {\n super('Company');\n }\n}\n","import { useState, useCallback, useEffect } from 'react';\n// MUI\nimport {\n Autocomplete,\n Box,\n TextField,\n AutocompleteRenderInputParams,\n} from '@mui/material';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { CompanyAPI } from 'src/shared/services/api/companyAPI';\nimport { CompanyResponse } from 'src/shared/services/api/response/companyResponse';\n\ntype CompanySelectType = {\n label: string;\n selectedCompany: CompanyResponse | undefined;\n onChangeCompany: (arg: CompanyResponse | undefined) => void;\n};\n\nconst CompanySelect = (props: CompanySelectType) => {\n const { label, selectedCompany, onChangeCompany } = props;\n\n // Local states\n const [companyList, setCompanyList] = useState([]);\n\n const fetchCompanyList = useCallback(async () => {\n const companyApi = new CompanyAPI();\n const companyOptions = {\n pageIndex: 0,\n pageSize: 500,\n sortCol: undefined,\n sortDir: 'asc',\n };\n try {\n const res = await companyApi.GetAll(companyOptions);\n setCompanyList(res.results ?? []);\n } catch (error) {\n ConsoleHelper.log(error ?? 'getCompanies: unkown error');\n setCompanyList([]);\n }\n }, []);\n\n useEffect(() => {\n fetchCompanyList();\n }, [fetchCompanyList]);\n\n return (\n onChangeCompany(selectedOption)}\n isOptionEqualToValue={(option, item) => option.id === item.id}\n getOptionLabel={(option: CompanyResponse) =>\n `${option.name} (${option.country_CountryCode})`\n }\n renderOption={(propps, option) => (\n \n {option.name} ({option.country_CountryCode})\n \n )}\n renderInput={(params: AutocompleteRenderInputParams) => {\n return (\n \n );\n }}\n />\n );\n};\n\nexport default CompanySelect;\n","import Button from '@mui/material/Button';\nimport Dialog from '@mui/material/Dialog';\nimport DialogActions from '@mui/material/DialogActions';\nimport DialogContent from '@mui/material/DialogContent';\nimport DialogContentText from '@mui/material/DialogContentText';\nimport DialogTitle from '@mui/material/DialogTitle';\nimport useMediaQuery from '@mui/material/useMediaQuery';\nimport { useTheme } from '@mui/material/styles';\n\ninterface IConfirmModal {\n open: boolean;\n dialogText: string;\n dialogTitle: string;\n handleClose: () => void;\n confirmButtonClick: () => void;\n confirmTextButton: string;\n cancelTextButton: string;\n}\nconst ConfirmDialogModal = (Iprops: IConfirmModal) => {\n const {\n open,\n dialogTitle,\n dialogText,\n handleClose,\n confirmTextButton,\n cancelTextButton,\n confirmButtonClick,\n } = Iprops;\n const theme = useTheme();\n const fullScreen = useMediaQuery(theme.breakpoints.down('md'));\n\n return (\n
\n \n {dialogTitle}\n \n \n {dialogText}\n \n \n \n \n \n \n \n
\n );\n};\nConfirmDialogModal.defaultProps = {\n open: false,\n};\nexport default ConfirmDialogModal;\n","export enum RoutesEnum {\n Default = '/NotFound',\n Login = '/',\n DocumentListPage = '/DocumentListPage/:id',\n EmployeeListPage = '/EmployeeListPage/:id',\n SustainabilityReportListPage = '/SustainabilityReportListPage',\n SustainabilityReportDetailsPage = '/SustainabilityReportDetailsPage',\n Documents = '/Documents', // Behåller denna ifall vi ska ha global dokumentsida\n CreateDocumentListPage = '/DocumentListPage/:id/create',\n EditDocumentListPage = '/DocumentListPage/:id/edit',\n Start = '/',\n Start2 = '/start2/:id',\n MenuPage = '/MenuPage/:id',\n CreateMenuPage = '/MenuPage/:id/create',\n EditMenuPage = '/MenuPage/:id/edit',\n NewsPageList = '/NewsListPage/:id',\n NewsPageListCreate = '/NewsListPage/:id/create',\n EditNewsListPage = '/NewsListPage/:id/edit',\n NewsPage = '/NewsPage/:id',\n CreateNewsPage = '/NewsPage/:id/create',\n EditNewsPage = '/NewsPage/:id/:itemId/edit',\n ProposalListPage = '/ProposalListPage/:id',\n ProposalPage = '/ProposalPage/:id',\n GalleryListPage = '/GalleryListPage/:id',\n GalleryPage = '/GalleryPage/:id',\n CreateGalleryPage = '/GalleryPage/:id/create',\n EditGalleryPage = '/GalleryPage/:id/edit',\n GroupListPage = '/GroupListPage/:id',\n GroupPage = '/GroupPage/:id',\n CreateGroupPage = '/GroupPage/Create',\n EditGroupPage = '/GroupPage/:id/edit',\n ContactListPage = '/ContactListPage/:id',\n ContactPage = '/Contact/:id',\n CompanyListPage = '/CompanyListPage/:id',\n CompanyPage = '/CompanyPage/:id',\n DirectMessagePage = '/DirectMessage/:id',\n CallbackPage = '/callback',\n SilentRenewPage = '/silentrenew',\n}\n","import { BaseAPI } from './baseAPI';\nimport { EmployeeOptions } from './options/employeeOptions';\nimport { EmployeeRequest } from './request/employeeRequest';\nimport { EmployeeResponse } from './response/employeeResponse';\nimport AxiosInstance from './axiosInstanceService';\n\nexport class EmployeeAPI extends BaseAPI<\n EmployeeResponse,\n EmployeeOptions,\n EmployeeRequest\n> {\n constructor() {\n super('Employee');\n }\n\n public GetEmployeeMe = () => AxiosInstance.get(`${this.controllerPath}/me`);\n}\n","import { Dispatch } from 'react';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { IUser } from 'src/shared/interfaces/userInterface';\nimport { EmployeeAPI } from 'src/shared/services/api/employeeApi';\nimport {\n USER_LOGIN_REQUEST,\n USER_LOGIN_FAIL,\n USER_LOGIN_SUCCESS,\n USER_LOGOUT,\n GET_USER_DETAILS,\n CHANGE_USER_COMPANY,\n} from 'src/shared/services/redux/constants/userTypes';\nimport { CompanyResponse } from '../../api/response/companyResponse';\nimport { EmployeeMeResponse } from '../../api/response/employeeResponse';\nimport { IdentityAuthModel } from '../reducers/authReducer';\n\nexport interface AuthSuccess {\n type: typeof USER_LOGIN_SUCCESS;\n payload: IdentityAuthModel;\n}\n\nexport interface UserDetailsSuccess {\n type: typeof GET_USER_DETAILS;\n payload: EmployeeMeResponse | undefined;\n}\nexport interface ChangeUserCompany {\n type: typeof CHANGE_USER_COMPANY;\n payload: CompanyResponse | undefined;\n}\nexport interface AuthFail {\n type: typeof USER_LOGIN_FAIL;\n}\nexport interface UserLogout {\n type: typeof USER_LOGOUT;\n}\nexport interface AuthLoading {\n type: typeof USER_LOGIN_REQUEST;\n}\n\nexport type AuthActionDispatchType =\n | AuthSuccess\n | AuthFail\n | AuthLoading\n | UserLogout\n | UserDetailsSuccess\n | ChangeUserCompany;\n\nexport const getEmployeeMe = () => {\n return async (dispatch: Dispatch) => {\n const employeeApi = new EmployeeAPI();\n const res = await employeeApi.GetEmployeeMe();\n try {\n dispatch({\n type: GET_USER_DETAILS,\n payload: res.result,\n });\n // const existedCompany = window.localStorage.getItem('userCompany');\n dispatch({\n type: CHANGE_USER_COMPANY,\n payload: res.result.company,\n });\n } catch (err) {\n ConsoleHelper.log('GET USER DETAILS ERROR', err);\n dispatch({\n type: GET_USER_DETAILS,\n payload: undefined,\n });\n }\n };\n};\n\nexport const changeCompany = (item: CompanyResponse) => {\n return async (dispatch: Dispatch) => {\n window.localStorage.setItem('userCompany', JSON.stringify(item));\n dispatch({\n type: CHANGE_USER_COMPANY,\n payload: item,\n });\n };\n};\n\n// Logga in - används ej\nexport const login = (data: IUser) => {\n return async (dispatch: Dispatch) => {\n dispatch({ type: USER_LOGIN_REQUEST });\n try {\n dispatch({\n type: USER_LOGIN_SUCCESS,\n payload: {\n firstName: 'John',\n lastName: 'Smith',\n email: data.email,\n isLoggedIn: true,\n },\n });\n } catch (err) {\n ConsoleHelper.log('LOGIN ERROR', err);\n dispatch({ type: USER_LOGIN_FAIL });\n }\n };\n};\n\n// Logga ut - används ej\nexport const logout = () => {\n return async (\n dispatch: Dispatch,\n getState: () => {\n (): any;\n new (): any;\n authState: { (): any; new (): any; authDetails: any };\n },\n ) => {\n const { authDetails } = getState().authState;\n try {\n dispatch({ type: USER_LOGOUT });\n } catch (err) {\n ConsoleHelper.log('LOGOUT ERROR', err);\n dispatch({ type: USER_LOGOUT });\n }\n };\n};\n","import { BaseAPI } from './baseAPI';\nimport { DocumentOptions } from './options/documentOptions';\nimport { DocumentRequest } from './request/documentRequest';\nimport { DocumentResponse } from './response/documentResponse';\nimport AxiosInstance from './axiosInstanceService';\n\nexport class DocumentAPI extends BaseAPI<\n DocumentResponse,\n DocumentOptions,\n DocumentRequest\n> {\n constructor() {\n super('Document');\n }\n\n public GetDocumentImage = (\n id: number | undefined,\n token: string | undefined,\n ) =>\n AxiosInstance.get(\n `${this.controllerPath}/${id}/Download?access_token=${token}`,\n );\n\n public deleteDocumentWithQureryID = (id: string | number | undefined) =>\n AxiosInstance.delete(`${this.controllerPath}?id=${id}`);\n\n public CreateFormData = (req: FormData) =>\n AxiosInstance.post(`${this.controllerPath}`, req);\n}\n","let lastId = 0;\n\nfunction getId(prefix = 'id') {\n lastId += 1;\n return `${prefix}${lastId}`;\n}\n\nexport default getId;\n","import { useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\n// MUI\nimport { Button, Box, Container, Grid, Typography } from '@mui/material';\nimport { Logout, EditRounded, RestartAlt } from '@mui/icons-material';\n// Components\nimport { Colors } from 'src/shared/components/styles';\nimport UserAvatar from 'src/shared/components/atoms/userAvatar';\nimport CompanySelect from 'src/shared/components/molecules/companySelect';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\n// Services\nimport { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport userManager from 'src/shared/services/identity/userManager';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { CompanyResponse } from 'src/shared/services/api/response/companyResponse';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport {\n changeCompany,\n getEmployeeMe,\n} from 'src/shared/services/redux/actions/authAction';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { DocumentAPI } from 'src/shared/services/api/documentAPI';\nimport { EmployeeAPI } from 'src/shared/services/api/employeeApi';\nimport getId from 'src/shared/helpers/idGenerator';\nimport { toast } from 'react-toastify';\nimport InfoTooltip from '../molecules/infoTooltip';\n\ntype FeedProps = {\n setShowProfileFeed: (arg: boolean) => void;\n};\n\nconst ProfileFeed = ({ setShowProfileFeed }: FeedProps) => {\n const { t, i18n } = useTranslation();\n const dispatch = useDispatch();\n const history = useHistory();\n const [inputId] = useState(() => getId('fileInput-'));\n\n // Global state\n const employeeMe = useSelector(\n (state: RootStateType) => state.authState.userDetails,\n );\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // Local states\n const [showDialog, setShowDialog] = useState(false);\n const [temporaryCompany, setTemporaryCompany] = useState<\n CompanyResponse | undefined\n >();\n const [selectedCompany, setSelectedCompany] = useState<\n CompanyResponse | undefined\n >(userCompany);\n\n // Uppdatera språk när userCompany uppdateras\n const changeLanguage = (item: CompanyResponse) => {\n const lang = item.country_CountryCode\n ? item.country_CountryCode.toLowerCase()\n : 'se';\n i18n.changeLanguage(lang);\n ConsoleHelper.log('LANGAGE TO USE', lang);\n };\n\n const onClickLogout = () => {\n setShowProfileFeed(false);\n userManager.signoutRedirect();\n };\n\n const onSelectchange = (item: CompanyResponse | undefined) => {\n ConsoleHelper.log('Company to set in redux', item);\n setTemporaryCompany(item);\n setShowDialog(true);\n };\n\n const onModalConfirm = () => {\n setSelectedCompany(temporaryCompany);\n history.push(RoutesEnum.Start);\n if (temporaryCompany) {\n changeLanguage(temporaryCompany);\n dispatch(changeCompany(temporaryCompany));\n }\n setShowDialog(false);\n };\n\n const changeCompanyPermission = GetAdminPermission(0, 'changeCompany');\n const restePassword = () => {\n window.open('https://identity.instalco.se/Identity/Account/ForgotPassword');\n };\n\n const updateEmployeeWithImageId = async (imageId: number | string) => {\n const updatedEmployeeData = {\n personName: employeeMe?.personName,\n notes: employeeMe?.notes,\n email: employeeMe?.email,\n address: employeeMe?.address,\n phone: employeeMe?.phone,\n companyId: employeeMe?.companyId,\n tags: employeeMe?.tags,\n permissionGroup: employeeMe?.permissionGroup,\n profileImageDocumentId: imageId,\n };\n ConsoleHelper.log('updatedEmployeeData', updatedEmployeeData);\n try {\n const employeeApi = new EmployeeAPI();\n const resEmp = await employeeApi.Update(\n employeeMe?.id ?? 0,\n updatedEmployeeData,\n );\n ConsoleHelper.log('RES update employee', resEmp);\n dispatch(getEmployeeMe());\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n } catch (error) {\n ConsoleHelper.log('ERROR update employee', error);\n }\n };\n\n // Posta profilebild mot /Documents\n const postProfileImage = async (file: File) => {\n const documentApi = new DocumentAPI();\n const documentFile = new FormData();\n documentFile.append('iD', '1');\n documentFile.append('description', `${employeeMe?.personName}`);\n documentFile.append('fileData', file);\n try {\n const resDocs = await documentApi.CreateFormData(documentFile);\n if (resDocs) {\n updateEmployeeWithImageId(resDocs.id ?? 0);\n }\n } catch (error) {\n ConsoleHelper.log('ERROR fil på profil', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n };\n\n const changeHandler = async (e: React.ChangeEvent) => {\n e.preventDefault();\n const { files } = e.target;\n if (files) postProfileImage(files[0]);\n e.target.value = ''; // Hack to reset input element (if you select the same file after removing it wont work otherwise)\n };\n\n return (\n \n \n \n \n {employeeMe?.personName ?? 'Din profil'}\n \n \n \n {employeeMe?.permissionGroup?.name ?? 'Ingen behörighet angiven'}\n \n \n \n \n \n \n {/* }\n // eslint-disable-next-line no-alert\n onClick={() => alert('Work in progress - lanseras inom kort!')}\n >\n {t('ChangeProfileImage')}\n */}\n {employeeMe?.email ?? 'Ingen email'}\n {employeeMe?.phone ?? 'Inget nummer angivet'}\n \n {employeeMe?.company?.name ?? 'Företagsnamn saknas'}\n \n \n {employeeMe?.businessAreas?.map((item, index) => (\n \n {item.name}\n {index + 1 !== employeeMe?.businessAreas?.length ? ' | ' : ''}\n \n ))}\n \n \n {changeCompanyPermission && (\n \n \n onSelectchange(e)\n }\n />\n \n \n )}\n\n \n \n \n \n \n \n \n \n setShowDialog(false)}\n confirmButtonClick={() => onModalConfirm()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n );\n};\n\nexport default ProfileFeed;\n","import { ListItemButton, ListItemIcon, ListItemText } from '@mui/material';\nimport { Link } from 'react-router-dom';\nimport { Colors } from 'src/shared/components/styles';\nimport UserAvatar from 'src/shared/components/atoms/userAvatar';\nimport { GroupResponse } from 'src/shared/services/api/response/groupResponse';\n\ntype GroupItemType = {\n group: GroupResponse;\n setShowGroup?: () => void;\n};\nconst GroupItemSimple = (props: GroupItemType) => {\n const { group, setShowGroup } = props;\n return (\n \n \n \n \n \n \n );\n};\nGroupItemSimple.defaultProps = {\n setShowGroup: undefined,\n};\nexport default GroupItemSimple;\n","import { BaseAPI } from './baseAPI';\nimport { GroupOptions } from './options/groupOptions';\nimport { GroupRequest } from './request/groupRequest';\nimport { GroupResponse } from './response/groupResponse';\nimport AxiosInstance from './axiosInstanceService';\n\nexport class GroupAPI extends BaseAPI<\n GroupResponse,\n GroupOptions,\n GroupRequest\n> {\n constructor() {\n super('Group');\n }\n\n public DisableNotifications = (groupId: string | number) =>\n AxiosInstance.put(`${this.controllerPath}/${groupId}/DisableNotifications`);\n\n public EnableNotifications = (groupId: string | number) =>\n AxiosInstance.put(`${this.controllerPath}/${groupId}/EnableNotifications`);\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { Grid, List, Typography } from '@mui/material';\nimport GroupItemSimple from 'src/modules/groups/components/groupItemSimple';\nimport SkeletonCards from 'src/shared/components/skeletons/skeletonCards';\nimport { GroupAPI } from 'src/shared/services/api/groupAPI';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { GroupResponse } from 'src/shared/services/api/response/groupResponse';\n\ntype FeedProps = {\n setShowGroupList?: () => void;\n};\n\nconst GroupListFeed = (props: FeedProps) => {\n const { setShowGroupList } = props;\n const { t } = useTranslation();\n\n // Local states\n const [loading, setLoading] = useState();\n const [myGroups, setMyGroups] = useState();\n\n // Global states\n const { userDetails } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // Här ska vi hämta de grupper jag är medlem i för att enkelt kunna navigera till dem\n const fetchGroups = useCallback(async () => {\n setLoading(true);\n try {\n const groupApi = new GroupAPI();\n const options = { employeeId: userDetails?.id, sortDir: 'asc' };\n const res = await groupApi.GetAll(options);\n if (res) {\n setMyGroups(res?.results);\n setLoading(false);\n }\n } catch (error) {\n setLoading(false);\n }\n }, [userDetails]);\n\n useEffect(() => {\n fetchGroups();\n }, [fetchGroups]);\n\n return (\n \n {loading && }\n \n {!loading &&\n myGroups &&\n myGroups.length > 0 &&\n myGroups.map((group) => {\n return (\n \n );\n })}\n {!loading && myGroups && myGroups?.length === 0 && (\n {t('NoGroups')}\n )}\n \n \n );\n};\nGroupListFeed.defaultProps = {\n setShowGroupList: undefined,\n};\nexport default GroupListFeed;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nexport const ScrollToTop = () => {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return null;\n};\n","import React, { useMemo } from 'react';\nimport { alpha, Box, Container, Grid } from '@mui/material';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport CssBaseline from '@mui/material/CssBaseline';\nimport DrawerNavigation from 'src/shared/components/navigations/drawerNavigation';\nimport NotificationFeed from 'src/shared/components/organisms/notificationFeed';\nimport ProfileFeed from 'src/shared/components/organisms/profileFeed';\nimport GroupListFeed from 'src/shared/components/organisms/groupListFeed';\nimport { ScrollToTop } from 'src/shared/components/atoms/scrollToTop';\nimport { ToastContainer, toast } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\n// Theming\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { ThemeProvider, createTheme } from '@mui/material/styles';\nimport { Colors } from 'src/shared/components/styles';\nimport { svSE } from '@mui/material/locale';\n\ninterface AppTemplateProps {\n mainNavigation: JSX.Element;\n mainContent: JSX.Element;\n showNotificationFeed: boolean;\n setShowNotificationFeed: (arg: boolean) => void;\n showProfileFeed: boolean;\n setShowProfileFeed: (arg: boolean) => void;\n showGroupList: boolean;\n setShowGroupList: (arg: boolean) => void;\n showMenu: boolean;\n}\ntoast.configure({\n position: 'top-right',\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n});\nexport const AppTemplate = (props: AppTemplateProps) => {\n const {\n mainNavigation,\n mainContent,\n showNotificationFeed,\n setShowNotificationFeed,\n showProfileFeed,\n setShowProfileFeed,\n showGroupList,\n setShowGroupList,\n showMenu,\n } = props;\n\n // Globala states\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n const theme = useMemo(\n () =>\n createTheme(\n {\n palette: {\n text: {\n primary: Colors.GRAY_DARK,\n secondary: userCompany?.color ?? Colors.PETROL,\n },\n primary: {\n main: userCompany?.color ?? Colors.PETROL,\n },\n secondary: {\n main: userCompany?.color\n ? alpha(userCompany?.color, 0.6)\n : Colors.PETROL_SOFT,\n },\n error: {\n main: Colors.RED,\n },\n warning: {\n main: Colors.ORANGE,\n },\n info: {\n main: Colors.YELLOW,\n },\n success: {\n main: Colors.GREEN_SOFT,\n },\n background: {\n paper: Colors.WHITE,\n default: Colors.GRAY_FAIR,\n },\n },\n typography: {\n h4: {\n fontSize: 19,\n color: Colors.GRAY_DARK,\n fontWeight: 500,\n },\n h5: {\n fontSize: 17,\n fontWeight: 500,\n },\n h6: {\n fontSize: 15,\n fontWeight: 600,\n },\n subtitle1: {\n fontSize: 13,\n color: Colors.GRAY_DARK,\n fontWeight: 500,\n },\n subtitle2: {\n fontSize: 14,\n color: userCompany?.color ?? Colors.PETROL,\n fontWeight: 500,\n },\n body2: {\n fontSize: 14,\n lineHeight: 1.5,\n },\n button: {\n textTransform: 'none',\n },\n fontFamily: [\n 'Open Sans',\n '-apple-system',\n 'BlinkMacSystemFont',\n '\"Segoe UI\"',\n 'Roboto',\n '\"Helvetica Neue\"',\n 'Arial',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n ].join(','),\n },\n components: {\n MuiCssBaseline: {\n styleOverrides: {\n body: {\n // scrollbarColor: 'red blue',\n '&::-webkit-scrollbar, & *::-webkit-scrollbar': {\n backgroundColor: 'transparent',\n width: '8px',\n },\n '&::-webkit-scrollbar-thumb, & *::-webkit-scrollbar-thumb': {\n borderRadius: 8,\n backgroundColor: 'rgba(0, 0 ,0 , 0.3)',\n minHeight: 24,\n width: '8px',\n },\n '&::-webkit-scrollbar-thumb:focus, & *::-webkit-scrollbar-thumb:focus':\n {\n backgroundColor: 'rgba(0, 0 ,0 , 0.5)',\n },\n '&::-webkit-scrollbar-thumb:active, & *::-webkit-scrollbar-thumb:active':\n {\n backgroundColor: 'rgba(0, 0 ,0 , 0.5)',\n },\n '&::-webkit-scrollbar-thumb:hover, & *::-webkit-scrollbar-thumb:hover':\n {\n backgroundColor: 'rgba(0, 0 ,0 , 0.5)',\n },\n '&::-webkit-scrollbar-corner, & *::-webkit-scrollbar-corner':\n {\n backgroundColor: 'transparent',\n },\n '& .MuiBackdrop-root': {\n backgroundColor: 'rgba(0, 0, 0, 0.8)',\n },\n },\n },\n },\n },\n },\n svSE,\n ),\n [userCompany],\n );\n\n const [loading, setLoading] = React.useState(false);\n\n return (\n \n \n \n \n {mainNavigation}\n \n \n \n \n \n \n \n {loading ? (\n \n \n \n ) : (\n mainContent\n )}\n \n \n \n {(showGroupList || showProfileFeed || showNotificationFeed) && (\n \n {showNotificationFeed && (\n \n )}\n {showProfileFeed && (\n \n )}\n {showGroupList && (\n setShowGroupList(false)} />\n )}\n \n )}\n \n \n );\n};\n","export default \"data:image/png;base64,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\"","import { AppBar, Toolbar } from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\n// import InstalcoLogSmall from 'src/assets/images/InstalcoNet.jpeg';\nimport InstalcoLogSmall from 'src/assets/images/Instalco@2.png';\n\nconst AuthHeader = () => {\n return (\n \n \n \n \n \n );\n};\n\nexport default AuthHeader;\n","import { useState, useEffect } from 'react';\nimport { Link } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\n// MUI\nimport {\n AppBar,\n Container,\n Divider,\n IconButton,\n Toolbar,\n Typography,\n Collapse,\n Box,\n useMediaQuery,\n Badge,\n} from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport {\n ChatBubbleOutlineOutlined,\n Menu,\n NotificationsNoneOutlined,\n AccountCircleOutlined,\n} from '@mui/icons-material/';\n// Components\n// import InstalcoLogSmall from 'src/assets/images/InstalcoNet.jpeg';\nimport InstalcoLogSmall from 'src/assets/images/Instalco@2.png';\nimport { Colors } from 'src/shared/components/styles';\nimport MenuList from 'src/shared/components/navigations/menuList';\n// Services\nimport { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { getNotificationsAction } from 'src/shared/services/redux/actions/notificationActions';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport { isParentCompany } from 'src/shared/helpers/companyHelper';\nimport { useInterval } from 'src/shared/helpers/useInterval';\n\ntype PageHeaderProps = {\n showNotificationFeed: boolean;\n setShowNotificationFeed: (arg: boolean) => void;\n showProfileFeed: boolean;\n setShowProfileFeed: (arg: boolean) => void;\n showGroupList: boolean;\n setShowGroupList: (arg: boolean) => void;\n showMenu: boolean;\n setShowMenu: (arg: boolean) => void;\n};\nconst PageHeader = (props: PageHeaderProps) => {\n const {\n showNotificationFeed,\n setShowNotificationFeed,\n showProfileFeed,\n setShowProfileFeed,\n setShowGroupList,\n showGroupList,\n showMenu,\n setShowMenu,\n } = props;\n\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const dispatch = useDispatch();\n\n const [imageError, setImageError] = useState(false);\n\n // Globala states\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n const { unreadNotificationsLength } = useSelector(\n (state: RootStateType) => state.notificationReducer,\n );\n\n // Fetch notifications every 30 secs\n useInterval(() => {\n if (user) dispatch(getNotificationsAction());\n }, 30000);\n\n // Fetch notifications for user to show in notification feed\n useEffect(() => {\n if (user) dispatch(getNotificationsAction());\n }, [user]);\n\n return (\n \n \n \n \n {!isParentCompany(userCompany?.id) && (\n \n )}\n {userCompany?.logo_DocumentId && (\n {\n setImageError(true);\n }}\n />\n )}\n \n\n {/* Knappar i pageHeader för notiser, grupper, profil & mobilmeny */}\n \n {\n setShowNotificationFeed(!showNotificationFeed);\n setShowProfileFeed(false);\n setShowGroupList(false);\n setShowMenu(false);\n }}\n >\n \n \n \n \n {\n setShowGroupList(!showGroupList);\n setShowNotificationFeed(false);\n setShowProfileFeed(false);\n setShowMenu(false);\n }}\n >\n \n \n {\n setShowProfileFeed(!showProfileFeed);\n setShowNotificationFeed(false);\n setShowGroupList(false);\n setShowMenu(false);\n }}\n >\n \n \n {/* Knapp öppna mobilmeny */}\n {\n setShowMenu(!showMenu);\n setShowProfileFeed(false);\n setShowNotificationFeed(false);\n setShowGroupList(false);\n }}\n >\n \n \n \n \n \n \n \n \n setShowMenu(false)} />\n \n \n \n );\n};\nexport default PageHeader;\n","import { useEffect, useRef } from 'react';\n\ninterface IUseInterval {\n (callback: () => void, interval: number): void;\n}\n\nexport const useInterval: IUseInterval = (callback, interval) => {\n const savedCallback = useRef<(() => void) | null>(null);\n // After every render, save the latest callback into our ref.\n useEffect(() => {\n savedCallback.current = callback;\n });\n\n useEffect(() => {\n function tick() {\n if (savedCallback.current) {\n savedCallback.current();\n }\n }\n\n const id = setInterval(tick, interval);\n return () => clearInterval(id);\n }, [interval]);\n};\n","import { useLocation } from 'react-router-dom';\nimport WarningRoundedIcon from '@mui/icons-material/WarningRounded';\nimport { Box, Typography, Button } from '@mui/material';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { Colors } from 'src/shared/components/styles';\nimport userManager from 'src/shared/services/identity/userManager';\n\nexport const PageNotfound = () => {\n const { t } = useTranslation();\n const { pathname } = useLocation();\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const location = useLocation();\n\n const login = async () => {\n const currentPath = location.pathname;\n localStorage.setItem('initialRoute', currentPath ?? '/');\n userManager.signinRedirect();\n };\n return user && user.access_token ? (\n \n \n Oops! Sidan saknas\n \n \n Sökvägen {pathname} hittades inte\n \n \n \n \n \n ) : (\n \n \n Oops! Du har blivit utloggad.\n \n \n {t('SignIn')}\n \n {/* \n \n */}\n \n );\n};\n","import { Add, Edit, PushPinOutlined } from '@mui/icons-material';\nimport { Colors } from '../styles';\n\nexport const GenerateActionButtonIcons = (\n createLink?: string,\n editLink?: string,\n pinnedAction?: () => void,\n isPinned?: boolean,\n) => {\n const iconButtons = [];\n if (createLink) {\n iconButtons.push({\n ID: 1,\n icon: ,\n backgroundColor: 'primary.main',\n iconColor: 'white',\n buttonSize: 'medium',\n linkTo: createLink,\n });\n }\n if (editLink) {\n iconButtons.push({\n ID: 2,\n icon: ,\n backgroundColor: 'primary.main',\n iconColor: 'white',\n buttonSize: 'medium',\n linkTo: editLink,\n });\n }\n // if (pinnedAction) {\n // // TODO: Döljer denna då API saknar funktion för detta nu\n // iconButtons.push({\n // ID: 3,\n // icon: ,\n // backgroundColor: isPinned ? 'oarimary.main' : Colors.GRAY_LIGHT,\n // iconColor: 'white',\n // buttonSize: 'medium',\n // isButton: true,\n // onClick: pinnedAction,\n // });\n // }\n return iconButtons;\n};\n\nGenerateActionButtonIcons.defaultProps = {\n pinnedAction: undefined,\n editLink: undefined,\n createLink: undefined,\n isPinned: false,\n};\n","import { BaseAPI } from './baseAPI';\nimport { ContentPageOptions } from './options/contentPageOptions';\nimport { ContentPageRequest } from './request/contentPageRequest';\nimport { ContentPageResponse } from './response/contentPageResponse';\nimport AxiosInstance from './axiosInstanceService';\n\nexport class ContentPageAPI extends BaseAPI<\n ContentPageResponse,\n ContentPageOptions,\n ContentPageRequest\n> {\n constructor() {\n super('ContentPage');\n }\n\n public CreateFormData = (req: FormData) =>\n AxiosInstance.post(`${this.controllerPath}`, req);\n}\n","import { Box, Typography, Chip, Stack } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport { locationsTags, rolesTags } from 'src/shared/helpers/filteredTags';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\n\ninterface PageTagsProps {\n show?: boolean;\n tags?: TagsResponse[];\n businessAreaTags?: BusinessAreaResponse[];\n}\nexport const MainPageTags = (props: PageTagsProps) => {\n const { show, tags, businessAreaTags } = props;\n const { t } = useTranslation();\n\n return (\n <>\n {show && (\n \n \n {t('VisibleFor')}{' '}\n {(!tags || tags?.length === 0) &&\n (!businessAreaTags || businessAreaTags?.length === 0)\n ? t('all')\n : ''}\n \n {businessAreaTags && businessAreaTags?.length > 0 && (\n \n {/* \n Segment:\n */}\n {businessAreaTags.map((btag) => {\n return (\n \n );\n })}\n \n )}\n {tags && locationsTags(tags) && locationsTags(tags).length > 0 && (\n \n {/* \n AO:\n */}\n {locationsTags(tags).map((ltag) => {\n return (\n \n );\n })}\n \n )}\n {tags && rolesTags(tags) && rolesTags(tags).length > 0 && (\n \n {/* \n Roll:\n */}\n {rolesTags(tags).map((rtag) => {\n return (\n \n );\n })}\n \n )}\n \n )}\n \n );\n};\n\nMainPageTags.defaultProps = {\n show: true,\n tags: undefined,\n businessAreaTags: undefined,\n};\n","import { useCallback, useState, useEffect } from 'react';\nimport {\n Card,\n CardContent,\n CardHeader,\n CardMedia,\n LinearProgress,\n Typography,\n Box,\n} from '@mui/material';\nimport dayjs from 'dayjs';\nimport parse from 'html-react-parser';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\nimport UserAvatar from 'src/shared/components/atoms/userAvatar';\nimport { ActionButtons } from 'src/shared/components/atoms/actionButtons';\nimport { GenerateActionButtonIcons } from 'src/shared/components/atoms/generateActionButtonsIcons';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { Colors } from 'src/shared/components/styles';\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { MainPageTags } from 'src/shared/components/atoms/mainPageTags';\nimport { isParentCompany } from 'src/shared/helpers/companyHelper';\n\ntype ModalType = {\n id: string | number | undefined;\n modalOpen: boolean;\n setModalOpen: (arg: boolean) => void;\n};\nconst NewsModal = (props: ModalType) => {\n const { modalOpen, setModalOpen, id } = props;\n // Global states\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n // Local states\n const [imageError, setImageError] = useState(false);\n const [newsLoading, setNewsLoading] = useState(false);\n const [newsItem, setNewsItem] = useState();\n\n const getNewsData = useCallback(async () => {\n setNewsLoading(true);\n try {\n const newsapi = new ContentPageAPI();\n const res = await newsapi.Get(id ?? 0);\n if (res) {\n setNewsItem(res?.result);\n setNewsLoading(false);\n }\n } catch (error) {\n setNewsLoading(false);\n }\n }, [id]);\n\n useEffect(() => {\n getNewsData();\n }, [getNewsData]);\n\n const actionButtonPermission = GetAdminPermission(newsItem?.companyId);\n\n return (\n setModalOpen(false)}\n title={\n \n \n }\n title={\n \n {isParentCompany(newsItem?.companyId)\n ? 'Instalco'\n : userCompany?.name}\n \n }\n subheader={\n \n {dayjs(newsItem?.publishDate).format('YYYY-MM-DD')}\n \n }\n />\n \n \n }\n content={\n <>\n {newsLoading ? (\n \n ) : (\n \n {!imageError && (\n {\n setImageError(true);\n }}\n />\n )}\n \n {newsItem?.featuredImageText ?? ''}\n \n \n {newsItem?.title}\n \n {parse(newsItem?.content ?? '')}\n \n \n ConsoleHelper.log('Pin item', id)\n : undefined,\n )}\n />\n {/* \n \n */}\n \n )}\n \n }\n />\n );\n};\nexport default NewsModal;\n","import { useState } from 'react';\nimport {\n Box,\n Card,\n CardActions,\n CardContent,\n CardHeader,\n CardMedia,\n Typography,\n Button,\n} from '@mui/material';\nimport dayjs from 'dayjs';\nimport parse, { HTMLReactParserOptions, Element } from 'html-react-parser';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport { FeedResponse } from 'src/shared/services/api/response/feedResponse';\nimport NewsModal from 'src/modules/news/components/newsModal';\nimport { Colors } from 'src/shared/components/styles';\nimport { isParentCompany } from 'src/shared/helpers/companyHelper';\nimport { toast } from 'react-toastify';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\n\ntype FeedNewsItemType = {\n item: FeedResponse;\n};\n\nconst FeedNewsItem = (props: FeedNewsItemType) => {\n const { item } = props;\n const { t } = useTranslation();\n const { user } = useSelector((state: RootStateType) => state.oidc);\n\n const [imageError, setImageError] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n\n const handleShare = () => {\n const host = `${window.location.protocol}//${window.location.host}`;\n const shareLink = `${host}/NewsPage/${item?.newsItem?.id}`;\n navigator.clipboard\n .writeText(shareLink)\n .then(() => {\n toast.success(t('LinkIsCopied'), {\n theme: 'colored',\n });\n })\n .catch(() => {\n toast.error(t('LinkNotCopied'), {\n theme: 'colored',\n });\n });\n };\n\n const parserOptions: HTMLReactParserOptions = {\n replace: (domNode) => {\n if (\n domNode instanceof Element &&\n domNode.type === 'tag' &&\n domNode.name === 'img'\n ) {\n return <>;\n }\n return domNode;\n },\n };\n\n return (\n <>\n \n \n \n {item?.newsItem?.title}\n \n }\n subheader={\n \n {dayjs(item?.newsItem?.publishDate).format('YYYY-MM-DD')}\n \n }\n />\n {!imageError && (\n {\n setImageError(true);\n }}\n />\n )}\n \n \n {parse(item?.newsItem?.content ?? '', parserOptions)}\n \n \n \n setModalOpen(true)}\n >\n {t('ReadMore')}...\n \n {GetAdminPermission(0, 'SuperAdmin') && (\n \n {t('Share')}\n \n )}\n \n \n {!imageError && (\n {\n setImageError(true);\n }}\n />\n )}\n \n {modalOpen && (\n setModalOpen(arg)}\n />\n )}\n \n );\n};\n\nexport default FeedNewsItem;\n","import { Box, FormControl, FormControlLabel, Checkbox } from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\nimport { useTranslation } from 'react-i18next';\n\ntype PropTypes = {\n showLocalNewsOption: boolean;\n instalcoNews: boolean;\n setInstalcoNews: (arg: boolean) => void;\n localNews: boolean;\n setLocalNews: (arg: boolean) => void;\n groupNews: boolean;\n setGroupNews: (arg: boolean) => void;\n};\n\nexport const FeedFilter = (props: PropTypes) => {\n const {\n showLocalNewsOption,\n instalcoNews,\n localNews,\n groupNews,\n setInstalcoNews,\n setLocalNews,\n setGroupNews,\n } = props;\n\n const { t } = useTranslation();\n\n return (\n \n \n setInstalcoNews(!instalcoNews)}\n control={\n \n }\n />\n {showLocalNewsOption && (\n setLocalNews(!localNews)}\n control={\n \n }\n />\n )}\n setGroupNews(!groupNews)}\n control={\n \n }\n />\n \n \n );\n};\n","import { Box, Typography } from '@mui/material';\nimport ChangeHistoryRoundedIcon from '@mui/icons-material/ChangeHistoryRounded';\nimport { Colors } from 'src/shared/components/styles';\n\ntype EmptyDataComponentProps = {\n text?: string;\n hideIcon?: boolean;\n};\n\nconst EmptyDataComponent = ({ text, hideIcon }: EmptyDataComponentProps) => {\n return (\n \n \n {text}\n \n {!hideIcon && (\n \n \n \n )}\n \n );\n};\n\nEmptyDataComponent.defaultProps = {\n text: 'Här var det tomt!',\n hideIcon: false,\n};\n\nexport default EmptyDataComponent;\n","import { Menu } from '@mui/material';\n\ntype ActionMenuType = {\n children: JSX.Element | JSX.Element[];\n showActions: boolean;\n anchorEl: HTMLElement | null;\n handleClose: (arg: string) => void;\n};\n\nconst ActionMenu = (props: ActionMenuType) => {\n const { children, showActions, anchorEl, handleClose } = props;\n return (\n \n {children}\n \n );\n};\n\nexport default ActionMenu;\n","import { TextField } from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\nimport { Controller, useFormContext, useFormState } from 'react-hook-form';\n\ntype ControlledCommentInputType = {\n name: string;\n helperText?: string | undefined;\n};\nexport const ControlledCommentInput = (props: ControlledCommentInputType) => {\n const { control } = useFormContext();\n const { errors } = useFormState();\n\n const { name, helperText } = props;\n\n let isError = false;\n let errorMessage = '';\n if (errors && Object.prototype.hasOwnProperty.call(errors, name)) {\n isError = true;\n errorMessage = errors[name].message;\n }\n\n return (\n (\n \n )}\n />\n );\n};\n\nControlledCommentInput.defaultProps = {\n helperText: '',\n};\n","export const createFormData = (data: T) => {\n const formData = new FormData();\n Object.entries(data).forEach(([key, value]) => {\n if (Array.isArray(value) && value.every((x) => x instanceof File)) {\n value.forEach((x) => {\n formData.append(key, x);\n });\n } else {\n formData.append(key, value);\n }\n });\n return formData;\n};\n","import { BaseAPI } from './baseAPI';\nimport { ReplyOptions } from './options/replyOptions';\nimport { ReplyRequest } from './request/replyRequest';\nimport { ReplyResponse } from './response/replyResponse';\nimport AxiosInstance from './axiosInstanceService';\n\nexport class ReplyAPI extends BaseAPI<\n ReplyResponse,\n ReplyOptions,\n ReplyRequest\n> {\n constructor() {\n super('Reply');\n }\n\n // ska användas när api:et är klart;\n public CreateReplyFormData = (req: FormData) =>\n AxiosInstance.post(`${this.controllerPath}`, req);\n\n public LikeReply = (id: string | number) =>\n AxiosInstance.put(`${this.controllerPath}/${id}/Like`);\n}\n","import { useState } from 'react';\nimport { KeyboardReturn, CloseOutlined, AttachFile } from '@mui/icons-material';\nimport { Button, Box } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport getId from 'src/shared/helpers/idGenerator';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\n\ninterface IProps {\n onCancel: () => void;\n onAttachFile: (arg: File[]) => void;\n loading: boolean;\n}\n\ninterface FileExtended extends File {\n originalFilename?: string | undefined;\n id?: string | number | undefined;\n}\n\nexport const ActionButtonsContent = ({\n onCancel,\n onAttachFile,\n loading,\n}: IProps) => {\n const { t } = useTranslation();\n const [inputId] = useState(() => getId('fileInput-'));\n\n const validateFiles = (files: FileList) => {\n const newFiles: FileExtended[] = [];\n for (let i = 0; i < files.length; i += 1) {\n const fileToAdd = files[i];\n newFiles.push(fileToAdd);\n onAttachFile(newFiles);\n ConsoleHelper.log('newFiles', newFiles);\n }\n };\n\n const changeHandler = async (e: React.ChangeEvent) => {\n e.preventDefault();\n const { files } = e.target;\n if (files) validateFiles(files);\n e.target.value = ''; // Hack to reset input element (if you select the same file after removing it wont work otherwise)\n };\n\n return (\n <>\n \n \n \n \n\n \n }\n onClick={() => onCancel()}\n >\n {t('Cancel')}\n \n }\n >\n {t('Send')}\n \n \n \n \n );\n};\n","import { useState, useEffect } from 'react';\nimport { Box, CardMedia, IconButton, Modal } from '@mui/material';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport { IDocument } from 'src/shared/services/api/response/postResponse';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { CloseRounded } from '@mui/icons-material';\n\ntype ModalType = {\n item: IDocument | undefined;\n modalOpen: boolean;\n onCloseModal: () => void;\n};\nconst PostImageModal = ({ item, modalOpen, onCloseModal }: ModalType) => {\n const { user } = useSelector((state: RootStateType) => state.oidc);\n // Local states\n const [imageError, setImageError] = useState(false);\n\n useEffect(() => {\n ConsoleHelper.log(item);\n }, [item]);\n\n return (\n \n \n \n \n \n \n \n {!imageError && (\n {\n setImageError(true);\n }}\n />\n )}\n \n \n );\n};\nexport default PostImageModal;\n","export const AllValidTypes = () => {\n return [\n 'image/',\n 'image/jpg',\n 'image/jpeg',\n 'image/png',\n 'image/gif',\n 'image/tiff',\n 'text/plain',\n 'application/pdf',\n 'application/mspowerpoint',\n 'application/word',\n 'application/msword',\n 'application/xls',\n 'application/xlm',\n 'application/xlsx',\n 'application/vnd.ms-excel',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // .docx\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', // .dotx\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'application/vnd.ms-excel.sheet.macroenabled.12', // .xlsm\n 'application/vnd.ms-word.document.macroenabled.12', // .docm\n 'application/vnd.ms-word.template.macroEnabled.12', // .dotm\n 'application/octet-stream',\n 'application/zip',\n 'application/x-zip-compressed',\n 'application/x-rar-compressed',\n 'application/x-7z-compressed',\n ];\n};\n\nexport const ImageValidTypes = () => {\n return ['image/', 'image/jpg', 'image/jpeg', 'image/png', 'image/gif'];\n};\nexport const CheckIfIsImage = (type: string) => {\n if (type === 'image/jpeg' || type === 'image/png' || type === 'image/jpg') {\n return true;\n }\n return false;\n};\nexport const GetFileExtension = (filename: string) => {\n return /[.]/.exec(filename)\n ? /[^.]+$/.exec(filename?.toUpperCase())\n : undefined;\n};\n","import { Box } from '@mui/material';\n\ntype CardCornerType = {\n size: number;\n unit?: string;\n cornerColor?: string;\n backgroundColor?: string;\n};\nconst CardCorner = (props: CardCornerType) => {\n const { size, unit, cornerColor, backgroundColor } = props;\n const cornerSize = `${size}${unit}`;\n return (\n \n );\n};\nCardCorner.defaultProps = {\n unit: 'px',\n cornerColor: '#ccc',\n backgroundColor: '#fff',\n};\nexport default CardCorner;\n","import { useSelector } from 'react-redux';\nimport {\n Stack,\n Box,\n Card,\n CardMedia,\n IconButton,\n Typography,\n LinearProgress,\n} from '@mui/material';\nimport { Delete } from '@mui/icons-material';\nimport PostImageModal from 'src/modules/groups/components/postImageModal';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport { useState } from 'react';\nimport {\n CheckIfIsImage,\n // GetFileExtension,\n} from 'src/shared/components/atoms/validTypes';\nimport { IDocument } from 'src/shared/services/api/response/postResponse';\nimport CardCorner from 'src/shared/components/styles/cardCorner';\n// import ConsoleHelper from 'src/shared/helpers/consoleHelper';\n\ninterface IProps {\n currentFiles: IDocument[] | undefined;\n newFiles: File[] | undefined;\n loading: boolean;\n removeCurrentFile: (id: number) => void;\n removeNewFile: (name: string) => void;\n showDelete?: boolean;\n}\nexport const ActionContentFiles = ({\n currentFiles,\n newFiles,\n loading,\n removeCurrentFile,\n removeNewFile,\n showDelete,\n}: IProps) => {\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const [showModal, setShowModal] = useState(false);\n const [imageItem, setImageItem] = useState();\n\n const onImageClicked = (itemImage: IDocument | undefined) => {\n setImageItem(itemImage);\n setShowModal(true);\n };\n\n const onFileClicked = (url: string) => {\n window.open(url);\n };\n\n return (\n <>\n {loading && }\n \n {currentFiles?.map((item: IDocument) => {\n // Filer som redan är uppladdade på inlägget\n return (\n \n {!CheckIfIsImage(item?.mimeType) && (\n \n )}\n {showDelete && (\n removeCurrentFile(item?.id)}\n >\n \n \n )}\n {!CheckIfIsImage(item?.mimeType) ? (\n \n onFileClicked(fileUrl(item?.id, user?.access_token))\n }\n sx={{\n p: 0.5,\n display: 'flex',\n alignItems: 'center',\n cursor: 'pointer',\n letterSpacing: '-1px',\n }}\n >\n \n {item?.name}\n \n \n ) : (\n onImageClicked(item)}\n src={fileUrl(item?.id, user?.access_token)}\n component='img'\n sx={{ objectFit: 'contain', cursor: 'pointer' }}\n />\n )}\n \n );\n })}\n {newFiles?.map((item: File, index: number) => {\n // Nya filer som ska laddas upp vid editering\n return (\n \n {!CheckIfIsImage(item?.type) && (\n \n )}\n {showDelete && (\n removeNewFile(item?.name)}\n >\n \n \n )}\n {!CheckIfIsImage(item.type) ? (\n \n \n {/* {GetFileExtension(item.name)} */}\n {item?.name ?? 'File'}\n \n \n ) : (\n \n )}\n \n );\n })}\n \n {\n setImageItem(undefined);\n setShowModal(false);\n }}\n />\n \n );\n};\nActionContentFiles.defaultProps = {\n showDelete: true,\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useForm, SubmitHandler, FormProvider } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as yup from 'yup';\nimport { SchemaOf } from 'yup';\nimport { toast } from 'react-toastify';\nimport { Divider } from '@mui/material';\nimport { ControlledCommentInput } from 'src/shared/components/form/controlledCommentInput';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { ReplyAPI } from 'src/shared/services/api/replyAPI';\nimport { ReplyResponse } from 'src/shared/services/api/response/replyResponse';\nimport { IDocument } from 'src/shared/services/api/response/postResponse';\nimport { DocumentAPI } from 'src/shared/services/api/documentAPI';\nimport { ActionButtonsContent } from './actionButtonsContent';\nimport { ActionContentFiles } from './actionContentFiles';\n\ninterface IContentText {\n message: string;\n postId: number | string;\n}\ninterface IGroupProps {\n item: ReplyResponse | undefined;\n fetchPosts: () => void;\n onCancel: () => void;\n}\n\nconst EditReplyItem = (props: IGroupProps) => {\n const { item, fetchPosts, onCancel } = props;\n const { t } = useTranslation();\n const [loading, setLoading] = useState(false);\n const [currentFiles, setCurrentFiles] = useState([]);\n const [newFiles, setNewFiles] = useState([]);\n const ContentSchema: SchemaOf = yup.object().shape({\n message: yup.string().required(t('ErrorTypeBeforePost')),\n postId: yup.string().required() || yup.number().required(),\n });\n\n const formMethods = useForm({\n resolver: yupResolver(ContentSchema),\n defaultValues: {\n message: item?.message ?? '',\n postId: item?.postId ?? 0,\n },\n });\n\n const { handleSubmit, reset } = formMethods;\n\n useEffect(() => {\n setLoading(true);\n if (item && item?.documentList?.documents) {\n setCurrentFiles(item?.documentList?.documents);\n }\n setLoading(false);\n }, [item]);\n\n const formSubmit: SubmitHandler = async (\n data: IContentText,\n ) => {\n // ConsoleHelper.log('PUT content', data);\n setLoading(true);\n const documentApi = new DocumentAPI();\n setLoading(true);\n // Lägg till nya filer mot inläggets documentListId\n if (newFiles.length > 0) {\n newFiles.forEach(async (element) => {\n const documentFile = new FormData();\n documentFile.append('iD', '1');\n documentFile.append('description', '');\n documentFile.append('fileData', element);\n documentFile.append(\n 'documentListId',\n item?.documentListId?.toString() ?? '',\n );\n try {\n const resDocs = await documentApi.CreateFormData(documentFile);\n if (resDocs) {\n ConsoleHelper.log('RES Filer på reply är sparade', resDocs);\n }\n } catch (error) {\n ConsoleHelper.log('ERROR filer på reply', error);\n }\n });\n }\n const updatedData = {\n postId: data.postId,\n message: data.message,\n documentListId: item?.documentListId,\n // documentFileList: item?.documentList,\n };\n try {\n const replyApi = new ReplyAPI();\n if (item?.id) {\n const res = await replyApi.Update(item?.id, updatedData);\n if (res) {\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n await fetchPosts();\n reset();\n setNewFiles([]);\n onCancel();\n }\n }\n } catch (error) {\n ConsoleHelper.log('error update reply::', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n setLoading(false);\n };\n\n const removeCurrentFile = async (id: number) => {\n const documentApi = new DocumentAPI();\n try {\n await documentApi.deleteDocumentWithQureryID(id);\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n fetchPosts();\n onCancel();\n } catch (err) {\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n };\n const removeNewFile = async (name: string) => {\n const remainFiles = newFiles.filter((e) => e.name !== name);\n setNewFiles(remainFiles);\n };\n\n const onFileChangeDocumentsList = useCallback(\n (files: File[]) => {\n if (files.length > 0) {\n const addedFiles: File[] = newFiles;\n files.forEach((element) => {\n addedFiles.push(element);\n });\n\n setNewFiles(addedFiles);\n }\n },\n [newFiles],\n );\n return (\n \n
\n \n removeCurrentFile(id)}\n removeNewFile={(name) => removeNewFile(name)}\n />\n {\n reset();\n onCancel();\n }}\n onAttachFile={async (files: File[]) => {\n setLoading(true);\n await onFileChangeDocumentsList(files);\n setLoading(false);\n }}\n />\n \n \n
\n );\n};\n\nexport default EditReplyItem;\n","import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\nimport { IconButton, Box, Typography, CircularProgress } from '@mui/material';\nimport { ThumbUpAltOutlined } from '@mui/icons-material';\n// Components\nimport { Colors } from 'src/shared/components/styles';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { ReplyAPI } from 'src/shared/services/api/replyAPI';\nimport { ReplyResponse } from 'src/shared/services/api/response/replyResponse';\n\ntype ReplyItemType = {\n reply: ReplyResponse;\n fetchPosts: () => void;\n};\n\nconst LikeReplyButton = (props: ReplyItemType) => {\n const { reply, fetchPosts } = props;\n const { t } = useTranslation();\n const [loading, setLoading] = useState(false);\n\n const likeReply = async () => {\n setLoading(true);\n try {\n const replyApi = new ReplyAPI();\n if (reply) {\n await replyApi.LikeReply(reply.id);\n await fetchPosts();\n }\n } catch (error) {\n ConsoleHelper.log('error like post::', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n setTimeout(() => setLoading(false), 500);\n };\n\n return (\n \n \n \n \n {!loading && reply?.likes > 0 && (\n \n {reply?.likes}\n \n )}\n {loading && }\n \n );\n};\n\nexport default LikeReplyButton;\n","import { useState, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { toast } from 'react-toastify';\nimport dayjs from 'dayjs';\nimport { useForm, SubmitHandler, FormProvider } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as yup from 'yup';\nimport { SchemaOf } from 'yup';\nimport { IconButton, Button, Box, Typography, MenuItem } from '@mui/material';\nimport { KeyboardReturn, MoreVert } from '@mui/icons-material';\n// Components\nimport { Colors } from 'src/shared/components/styles';\nimport { ControlledCommentInput } from 'src/shared/components/form/controlledCommentInput';\nimport UserAvatar from 'src/shared/components/atoms/userAvatar';\nimport ActionMenu from 'src/shared/components/atoms/actionMenu';\nimport { createFormData } from 'src/shared/helpers/createFormData';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport EditReplyItem from 'src/modules/groups/components/editReplyItem';\nimport LikeReplyButton from 'src/modules/groups/components/likeReplyButton';\nimport { ActionButtonsContent } from 'src/modules/groups/components/actionButtonsContent';\nimport { ActionContentFiles } from 'src/modules/groups/components/actionContentFiles';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { ReplyAPI } from 'src/shared/services/api/replyAPI';\nimport { ReplyResponse } from 'src/shared/services/api/response/replyResponse';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { UserTypeEnum } from 'src/shared/helpers/permissionHelper';\n\ntype ReplyItemType = {\n postId: string | number;\n items: ReplyResponse[];\n fetchPosts: () => void;\n};\n\ninterface IReplyText {\n postId: string | number;\n message: string;\n documentFileList: any[];\n}\n\nexport const ReplySchema: SchemaOf = yup.object().shape({\n message: yup.string().required('Skriv något innan du kan svara'),\n postId: yup.string().required() || yup.number().required(),\n documentFileList: yup.mixed().optional(),\n});\n\nconst ReplyItem = (props: ReplyItemType) => {\n const { postId, items, fetchPosts } = props;\n const { t } = useTranslation();\n // Global state\n const { userDetails } = useSelector(\n (state: RootStateType) => state.authState,\n );\n // Local states\n const [loading, setLoading] = useState(false);\n const [selectedReply, setSelectedReply] = useState<\n ReplyResponse | undefined\n >();\n const [isReplyInputOpen, setIsReplyInputOpen] = useState(false);\n const [isReplyListOpen, setIsReplyListOpen] = useState(false);\n const [isReplyEditingOpen, setIsReplyEditingOpen] = useState(false);\n const [showActions, setShowActions] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const [newFiles, setNewFiles] = useState([]);\n const [attachFileLoading, setAttachFileLoading] = useState(false);\n\n const onFileChangeDocumentsList = useCallback(\n (files: File[]) => {\n if (files.length > 0) {\n const addedFiles: File[] = newFiles;\n files.forEach((element) => {\n addedFiles.push(element);\n });\n setNewFiles(addedFiles);\n }\n },\n [newFiles],\n );\n\n const removeFile = useCallback(\n async (name: string | undefined) => {\n const remainFiles = newFiles.filter((e) => e.name !== name);\n setNewFiles(remainFiles);\n },\n [newFiles],\n );\n\n const deleteReply = async () => {\n setLoading(true);\n try {\n const replyApi = new ReplyAPI();\n if (selectedReply) {\n await replyApi.Delete({ id: selectedReply.id });\n await fetchPosts();\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n }\n } catch (error) {\n ConsoleHelper.log('error delete post::', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n setLoading(false);\n setShowDeleteDialog(false);\n };\n\n // Ska öppna för den item man klickar på (knappen ska endast vara synlig om man är admin eller själv har skrivit inlägget)\n const handleClickShowActionMenu = (\n event: React.MouseEvent,\n item: ReplyResponse,\n ) => {\n setAnchorEl(event.currentTarget);\n setIsReplyEditingOpen(false);\n setSelectedReply(item);\n setShowActions(true);\n };\n\n const handleCloseActionMenu = (value: string) => {\n setAnchorEl(null);\n setShowActions(false);\n if (value === 'delete') {\n setShowDeleteDialog(true);\n }\n if (value === 'edit') {\n setIsReplyEditingOpen(true);\n }\n };\n\n const formMethods = useForm({\n resolver: yupResolver(ReplySchema),\n defaultValues: {\n postId,\n message: '',\n },\n });\n\n const { handleSubmit, reset } = formMethods;\n\n const formSubmit: SubmitHandler = async (data: IReplyText) => {\n setLoading(true);\n try {\n const formData = createFormData(data);\n formData.append('message', data.message);\n formData.append('postId', data.postId?.toString());\n if (newFiles.length > 0) {\n newFiles.forEach(async (element) => {\n formData.append('documentFileList', element);\n });\n }\n const replyApi = new ReplyAPI();\n const res = await replyApi.CreateReplyFormData(formData);\n if (res) {\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n setNewFiles([]);\n await fetchPosts();\n }\n } catch (error) {\n ConsoleHelper.log('error post reply::', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n setLoading(false);\n reset();\n setIsReplyInputOpen(false);\n };\n return (\n <>\n \n {items && items.length > 0 && (\n {\n setIsReplyListOpen(!isReplyListOpen);\n }}\n >\n {isReplyListOpen\n ? t('Hide{number}replies', { number: items?.length })\n : t('Show{number}replies', { number: items?.length })}\n \n )}\n {isReplyListOpen && (\n <>\n {items &&\n items\n ?.sort(\n (a: ReplyResponse, b: ReplyResponse) =>\n new Date(a?.publishDate).getTime() -\n new Date(b?.publishDate).getTime(),\n )\n .map((reply: ReplyResponse) => {\n return (\n \n \n \n \n {reply.user?.name ?? t('DeletedUser')} (\n {reply.user?.companyName ?? t('Unknown')})\n \n \n {dayjs(reply.publishDate).format('YYYY-MM-DD HH:mm')}\n \n {isReplyEditingOpen &&\n selectedReply?.id === reply.id ? (\n setIsReplyEditingOpen(false)}\n fetchPosts={fetchPosts}\n />\n ) : (\n <>\n \n {reply.message}\n \n {reply?.documentList?.documents?.length > 0 && (\n \n ConsoleHelper.log('Nothing')\n } // Ska inte kunna radera i visning\n removeNewFile={() =>\n ConsoleHelper.log('Nothing')\n } // Ska inte kunna radera i visning\n loading={false}\n />\n )}\n \n )}\n\n \n \n {(userDetails?.id === reply?.user?.id ||\n userDetails?.permissionGroup?.id ===\n UserTypeEnum.SuperAdmin) && (\n ,\n ) => handleClickShowActionMenu(event, reply)}\n >\n \n \n )}\n \n );\n })}\n \n )}\n \n {isReplyInputOpen && (\n \n
\n \n ConsoleHelper.log('Nothing')}\n removeNewFile={(name: string) => removeFile(name)}\n />\n {\n reset();\n setIsReplyInputOpen(false);\n setNewFiles([]);\n }}\n onAttachFile={async (files: File[]) => {\n // ConsoleHelper.log('from replyitem', files);\n setAttachFileLoading(true);\n await onFileChangeDocumentsList(files);\n setAttachFileLoading(false);\n }}\n />\n \n
\n )}\n {!isReplyInputOpen && (\n }\n onClick={() => setIsReplyInputOpen(true)}\n >\n {t('Reply')}\n \n )}\n \n handleCloseActionMenu('edit')}>\n {t('Edit')}\n \n handleCloseActionMenu('delete')}>\n {t('Delete')}\n \n \n setShowDeleteDialog(false)}\n confirmButtonClick={() => deleteReply()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n );\n};\n\nexport default ReplyItem;\n","import { BaseAPI } from './baseAPI';\nimport { PostOptions } from './options/postOptions';\nimport { PostRequest } from './request/postRequest';\nimport { PostResponse } from './response/postResponse';\nimport AxiosInstance from './axiosInstanceService';\n\nexport class PostAPI extends BaseAPI {\n constructor() {\n super('Post');\n }\n\n public CreatePostFormData = (req: FormData) =>\n AxiosInstance.post(`${this.controllerPath}`, req);\n\n public LikePost = (id: string | number) =>\n AxiosInstance.put(`${this.controllerPath}/${id}/Like`);\n}\n","import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\nimport { IconButton, Box, Typography, CircularProgress } from '@mui/material';\nimport { ThumbUpAltOutlined } from '@mui/icons-material';\n// Components\nimport { Colors } from 'src/shared/components/styles';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { PostAPI } from 'src/shared/services/api/postAPI';\nimport { PostResponse } from 'src/shared/services/api/response/postResponse';\nimport { GroupItemResponse } from 'src/shared/services/api/response/feedResponse';\n\ntype PostItemType = {\n post: PostResponse | GroupItemResponse | undefined;\n fetchPosts: () => void;\n};\n\nconst LikePostButton = (props: PostItemType) => {\n const { post, fetchPosts } = props;\n const { t } = useTranslation();\n const [loading, setLoading] = useState(false);\n\n const likePost = async () => {\n setLoading(true);\n try {\n const postApi = new PostAPI();\n if (post) {\n await postApi.LikePost(post.id);\n await fetchPosts();\n }\n } catch (error) {\n ConsoleHelper.log('error like post::', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n setTimeout(() => setLoading(false), 500);\n };\n\n return (\n \n \n \n \n {!loading && post && post?.likes > 0 && (\n \n {post?.likes}\n \n )}\n {loading && }\n \n );\n};\n\nexport default LikePostButton;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useForm, SubmitHandler, FormProvider } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as yup from 'yup';\nimport { SchemaOf } from 'yup';\nimport { toast } from 'react-toastify';\nimport { Divider } from '@mui/material';\nimport { ControlledCommentInput } from 'src/shared/components/form/controlledCommentInput';\nimport { ActionButtonsContent } from 'src/modules/groups/components/actionButtonsContent';\nimport { ActionContentFiles } from 'src/modules/groups/components/actionContentFiles';\n// SERVICES\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { PostAPI } from 'src/shared/services/api/postAPI';\nimport { PostResponse } from 'src/shared/services/api/response/postResponse';\nimport {\n GroupItemResponse,\n IDocument,\n} from 'src/shared/services/api/response/feedResponse';\nimport { PostRequest } from 'src/shared/services/api/request/postRequest';\nimport { DocumentAPI } from 'src/shared/services/api/documentAPI';\n\ninterface IGroupProps {\n item: PostResponse | GroupItemResponse | undefined;\n fetchPosts: () => void;\n onCancel: () => void;\n}\n\nconst EditPostItem = (props: IGroupProps) => {\n const { item, fetchPosts, onCancel } = props;\n const { t } = useTranslation();\n const [loading, setLoading] = useState(false);\n const [currentFiles, setCurrentFiles] = useState([]);\n const [newFiles, setNewFiles] = useState([]);\n\n const ContentSchema: SchemaOf = yup.object().shape({\n message: yup.string().required(t('ErrorTypeBeforePost')),\n groupId: yup.string().required() || yup.number().required(),\n documentFileList: yup.mixed().optional(),\n documentListId: yup.string().optional() || yup.number().optional(),\n });\n\n const formMethods = useForm({\n resolver: yupResolver(ContentSchema),\n defaultValues: {\n message: item?.message ?? '',\n groupId: item?.groupId ?? 0,\n documentFileList: [],\n documentListId: item?.documentListId,\n },\n });\n\n useEffect(() => {\n setLoading(true);\n if (item && item?.documentList?.documents) {\n setCurrentFiles(item?.documentList?.documents);\n }\n setLoading(false);\n }, [item]);\n\n const { handleSubmit, reset } = formMethods;\n\n const formSubmit: SubmitHandler = async (data: PostRequest) => {\n // ConsoleHelper.log('PUT content', data, 'for item', item);\n const documentApi = new DocumentAPI();\n setLoading(true);\n // Lägg till nya filer mot inläggets documentListId\n if (newFiles.length > 0) {\n newFiles.forEach(async (element) => {\n const documentFile = new FormData();\n documentFile.append('iD', '1');\n documentFile.append('description', '');\n documentFile.append('fileData', element);\n documentFile.append(\n 'documentListId',\n item?.documentListId?.toString() ?? '',\n );\n try {\n const resDocs = await documentApi.CreateFormData(documentFile);\n if (resDocs) {\n ConsoleHelper.log('RES Filer på gruppinlägget är sparade', resDocs);\n }\n } catch (error) {\n ConsoleHelper.log('ERROR filer på gruppinlägg', error);\n }\n });\n }\n const updatedData = {\n groupId: data.groupId,\n message: data.message,\n documentListId: item?.documentListId,\n };\n try {\n const postApi = new PostAPI();\n const res = await postApi.Update(item?.id ?? 0, updatedData);\n if (res) {\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n reset();\n setNewFiles([]);\n onCancel();\n await fetchPosts();\n }\n } catch (error) {\n ConsoleHelper.log('error update post::', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n setLoading(false);\n };\n\n const removeCurrentFile = async (id: number) => {\n const documentApi = new DocumentAPI();\n try {\n await documentApi.deleteDocumentWithQureryID(id);\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n fetchPosts();\n } catch (err) {\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n };\n\n const removeNewFile = async (name: string) => {\n const remainFiles = newFiles.filter((e) => e.name !== name);\n setNewFiles(remainFiles);\n };\n\n const onFileChangeDocumentsList = useCallback(\n (files: File[]) => {\n if (files.length > 0) {\n const addedFiled: File[] = newFiles;\n files.forEach((element) => {\n addedFiled.push(element);\n });\n setNewFiles(addedFiled);\n }\n },\n [newFiles],\n );\n return (\n \n
\n \n removeCurrentFile(id)}\n removeNewFile={(name) => removeNewFile(name)}\n />\n {\n reset();\n setNewFiles([]);\n onCancel();\n }}\n onAttachFile={async (files: File[]) => {\n setLoading(true);\n await onFileChangeDocumentsList(files);\n setLoading(false);\n }}\n />\n \n \n
\n );\n};\n\nexport default EditPostItem;\n","import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { toast } from 'react-toastify';\nimport dayjs from 'dayjs';\nimport {\n IconButton,\n Card,\n CardActions,\n CardContent,\n CardHeader,\n Typography,\n MenuItem,\n} from '@mui/material';\nimport { MoreVert, ShareOutlined } from '@mui/icons-material';\n// Components\nimport { Colors } from 'src/shared/components/styles';\nimport UserAvatar from 'src/shared/components/atoms/userAvatar';\nimport ActionMenu from 'src/shared/components/atoms/actionMenu';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport ReplyItem from 'src/modules/groups/components/replyItem';\nimport LikePostButton from 'src/modules/groups/components/likePostButton';\nimport EditPostItem from 'src/modules/groups/components/editPostItem';\nimport { ActionContentFiles } from 'src/modules/groups/components/actionContentFiles';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { PostAPI } from 'src/shared/services/api/postAPI';\nimport { FeedResponse } from 'src/shared/services/api/response/feedResponse';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { UserTypeEnum } from 'src/shared/helpers/permissionHelper';\n\ntype PostCardType = {\n item: FeedResponse;\n fetchPosts: () => void;\n};\n\nconst FeedGroupItem = (props: PostCardType) => {\n const { item, fetchPosts } = props;\n const { t } = useTranslation();\n // Global state\n const { userDetails } = useSelector(\n (state: RootStateType) => state.authState,\n );\n // Local states\n const [loading, setLoading] = useState(false);\n const [isPostEditingOpen, setIsPostEditingOpen] = useState(false);\n const [showActions, setShowActions] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n\n const deletePost = async () => {\n setLoading(true);\n try {\n const postApi = new PostAPI();\n await postApi.Delete({ id: item?.groupItem?.id });\n if (fetchPosts) await fetchPosts();\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n } catch (error) {\n ConsoleHelper.log('error delete post::', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n setLoading(false);\n setShowDeleteDialog(false);\n };\n\n // Dela inlägget\n const sharePost = () => {\n const shareLink = `${window.location.host}/GroupPage/${item?.groupItem?.groupId}?scrollTo=${item.groupItem?.id}`;\n navigator.clipboard.writeText(shareLink);\n toast.success(`${t('LinkIsCopied')}:\n ${shareLink}`);\n };\n\n // Ska öppna för den item man klickar på (knappen ska endast vara synlig om man är admin eller själv har skrivit inlägget)\n const handleClickShowActionMenu = (\n event: React.MouseEvent,\n ) => {\n setAnchorEl(event.currentTarget);\n setShowActions(true);\n };\n\n const handleCloseActionMenu = (value: string) => {\n setAnchorEl(null);\n setShowActions(false);\n if (value === 'delete') setShowDeleteDialog(true);\n if (value === 'edit') setIsPostEditingOpen(true);\n if (value === 'share') sharePost();\n };\n\n return (\n \n \n }\n title={\n \n {item?.groupItem?.user?.name ?? t('DeletedUser')} (\n {item?.groupItem?.user?.companyName ?? t('Unknown')})\n \n }\n subheader={\n \n {dayjs(item?.groupItem?.publishDate).format('YYYY-MM-DD HH:mm')}\n \n }\n action={\n userDetails?.id === item?.groupItem?.user?.id ||\n userDetails?.permissionGroup?.id === UserTypeEnum.SuperAdmin ? (\n \n \n \n ) : (\n sharePost()}>\n \n \n )\n }\n />\n \n {isPostEditingOpen ? (\n setIsPostEditingOpen(false)}\n fetchPosts={fetchPosts}\n />\n ) : (\n <>\n \n {item?.groupItem?.message}\n \n {item?.groupItem?.documentList?.documents &&\n item?.groupItem?.documentList?.documents?.length > 0 ? (\n ConsoleHelper.log('Nothing')}\n removeNewFile={() => ConsoleHelper.log('Nothing')}\n loading={false}\n />\n ) : null}\n \n )}\n \n \n \n {item?.groupItem && (\n \n )}\n \n \n handleCloseActionMenu('edit')}>\n {t('Edit')}\n \n handleCloseActionMenu('delete')}>\n {t('Delete')}\n \n handleCloseActionMenu('share')}>\n {t('Share')}\n \n \n setShowDeleteDialog(false)}\n confirmButtonClick={() => deletePost()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n );\n};\n\nexport default FeedGroupItem;\n","import { useState } from 'react';\nimport {\n Paper,\n Card,\n CardMedia,\n CardActions,\n CardHeader,\n Typography,\n Button,\n} from '@mui/material';\nimport { Link } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport NewsModal from 'src/modules/news/components/newsModal';\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\n\ntype PinnedPageCardType = {\n item: ContentPageResponse;\n};\n\nconst PinnedPageCardMasonry = ({ item }: PinnedPageCardType) => {\n const { t } = useTranslation();\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const [imageError, setImageError] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n\n return (\n \n \n {!imageError && (\n {\n setImageError(true);\n }}\n />\n )}\n \n {item?.title}\n \n }\n />\n \n setModalOpen(true)\n : undefined\n }\n >\n {t('ReadMore')}...\n \n \n \n {modalOpen && (\n setModalOpen(arg)}\n />\n )}\n \n );\n};\n\nexport default PinnedPageCardMasonry;\n","import { BaseAPI } from './baseAPI';\nimport { FeedOptions } from './options/feedOptions';\nimport { FeedRequest } from './request/feedRequest';\nimport { FeedResponse } from './response/feedResponse';\n\nexport class FeedAPI extends BaseAPI {\n constructor() {\n super('Feed');\n }\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport { Link } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\n// MUI\nimport {\n PushPinOutlined,\n ChatBubbleOutlineOutlined,\n InfoOutlined,\n} from '@mui/icons-material';\nimport {\n Grid,\n Box,\n Typography,\n LinearProgress,\n Button,\n // ImageList,\n // ImageListItem,\n} from '@mui/material';\nimport Masonry from '@mui/lab/Masonry';\n// Components\nimport FeedNewsItem from 'src/modules/home/components/feedNewsItem';\nimport { FeedFilter } from 'src/modules/home/components/feedFilter';\nimport EmptyDataComponent from 'src/shared/components/organisms/emptyDataComponent';\nimport FeedGroupItem from 'src/modules/home/components/feedGroupItem';\nimport PinnedPageCardMasonry from 'src/modules/home/components/pinnedPageCardMasonry';\n// Services\nimport { FeedAPI } from 'src/shared/services/api/feedAPI';\nimport { FeedResponse } from 'src/shared/services/api/response/feedResponse';\nimport { FeedOptions } from 'src/shared/services/api/options/feedOptions';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { isParentCompany } from 'src/shared/helpers/companyHelper';\nimport InfoTooltip from 'src/shared/components/molecules/infoTooltip';\n\nconst HomePage = () => {\n const { t } = useTranslation();\n // Global states\n const { userCompany, userDetails } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n const isExternalUser = userDetails?.permissionGroup?.id === 8;\n // Local states\n const [loading, setLoading] = useState(false);\n const [feedData, setFeedData] = useState | undefined>([]);\n const [pinnedData, setPinnedData] = useState<\n Array | undefined\n >([]);\n const [requestOptions, setRequestOptions] = useState({\n showLocalNews: false,\n showParentCompanyNews: true,\n showGroupPosts: true,\n pageIndex: 0,\n pageSize: 15,\n sortCol: undefined,\n sortDir: 'desc',\n });\n\n useEffect(() => {\n if (userCompany && userCompany?.id !== 1) {\n setRequestOptions((prev) => ({\n ...prev,\n showLocalNews: true,\n }));\n }\n }, [userCompany]);\n\n const fetchFeedData = useCallback(async () => {\n const feedApi = new FeedAPI();\n setLoading(true);\n try {\n const feedRes = await feedApi.GetAll(requestOptions);\n setFeedData(feedRes.results);\n setLoading(false);\n } catch (err) {\n ConsoleHelper.log('ERR feeds::', JSON.stringify(err));\n setFeedData([]);\n setLoading(false);\n }\n }, [requestOptions]);\n\n useEffect(() => {\n fetchFeedData();\n }, [fetchFeedData]);\n\n // Temporär lösning för pinnade sidor\n const fetchPinnedContentPages = useCallback(async () => {\n const contentPageApi = new ContentPageAPI();\n const pinnedArray: ContentPageResponse[] = [];\n // Hämta senste sidan från Robins blogg\n try {\n const robinsBloggRes = await contentPageApi.GetAll({\n parentContentPageId: 4,\n pageSize: 1,\n sortCol: 'publishDate',\n sortDir: 'desc',\n });\n if (robinsBloggRes.results && robinsBloggRes.results?.length > 0) {\n pinnedArray.push(robinsBloggRes.results[0]);\n }\n } catch (error) {\n ConsoleHelper.log('ERROR get latest blogg', error);\n }\n // Hämta övriga sidor som ska vara pinnade\n const pinnedIdsToFetch: number[] = [494, 739, 1539, 179];\n pinnedIdsToFetch.forEach(async (pageId) => {\n try {\n const pinnedRes = await contentPageApi.Get(pageId);\n if (pinnedRes?.result) pinnedArray.push(pinnedRes?.result);\n } catch (err) {\n ConsoleHelper.log('ERR pinnedPages::', JSON.stringify(err));\n }\n });\n setPinnedData(pinnedArray);\n }, []);\n\n useEffect(() => {\n fetchPinnedContentPages();\n }, [fetchPinnedContentPages]);\n\n return (\n \n \n \n \n Instalconätet\n \n \n \n \n setRequestOptions((prev) => ({\n ...prev,\n showParentCompanyNews: !prev.showParentCompanyNews,\n }))\n }\n setLocalNews={() =>\n setRequestOptions((prev) => ({\n ...prev,\n showLocalNews: !prev.showLocalNews,\n }))\n }\n setGroupNews={() =>\n setRequestOptions((prev) => ({\n ...prev,\n showGroupPosts: !prev.showGroupPosts,\n }))\n }\n />\n \n {loading ? :
}\n {feedData && feedData?.length > 0 ? (\n feedData.map((item) => {\n return (\n \n {item.groupItem && (\n <>\n \n }\n >\n \n {item.groupItem?.groupName?.length > 0\n ? item.groupItem.groupName\n : t('Group')}\n \n \n \n \n )}\n {item.newsItem && (\n <>\n \n }\n >\n \n {item.newsItem?.contentParentTitle ?? t('News')}\n \n \n \n \n )}\n \n );\n })\n ) : (\n <>\n {!loading && !isExternalUser && (\n \n )}\n {!loading && isExternalUser && (\n \n )}\n \n )}\n {pinnedData && pinnedData?.length > 0 && (\n \n \n \n {t('PinnedPages')}\n \n \n <>\n {pinnedData.map((item) => {\n return ;\n })}\n \n \n \n )}\n {/* \n \n \n <>\n {feedData &&\n feedData?.length > 0 &&\n feedData\n .filter((item) => item.newsItem)\n .map((item) => {\n return (\n \n \n \n );\n })}\n \n \n */}\n \n );\n};\n\nexport default HomePage;\n","import { Box, Typography } from '@mui/material';\nimport InfoTooltip from '../molecules/infoTooltip';\n\ninterface MainContentHeaderProps {\n text: string;\n toolTipText?: string;\n}\n\nexport const MainContentHeader = ({\n text,\n toolTipText,\n}: MainContentHeaderProps) => {\n return (\n \n \n {text}\n \n {toolTipText && }\n \n );\n};\n\nMainContentHeader.defaultProps = {\n toolTipText: undefined,\n};\n","import { Grid, Typography } from '@mui/material';\nimport parse from 'html-react-parser';\n\ninterface MainContentTextProps {\n text: string;\n}\n\nexport const MainContentText = ({ text }: MainContentTextProps) => {\n return (\n \n \n {parse(text)}\n \n \n );\n};\n","import { Grid, Card, CardMedia, Typography } from '@mui/material';\n\ninterface MainContentTextProps {\n image: string;\n featuredImageText: string;\n onImageError: () => void;\n maxHeight?: string;\n}\n\nexport const MainContentImage = ({\n image,\n featuredImageText,\n onImageError,\n maxHeight,\n}: MainContentTextProps) => {\n return (\n \n \n \n {featuredImageText?.length > 0 && (\n {featuredImageText}\n )}\n \n \n );\n};\n\nMainContentImage.defaultProps = {\n maxHeight: undefined,\n};\n","import { MainContentHeader } from 'src/shared/components/atoms/mainContentHeader';\nimport { MainContentText } from 'src/shared//components/atoms/mainContentText';\nimport { MainContentImage } from 'src/shared/components/atoms/mainContentImage';\nimport { Box } from '@mui/material';\nimport { MainPageTags } from '../components/atoms/mainPageTags';\nimport { TagsResponse } from '../services/api/response/tagsResponse';\nimport { BusinessAreaResponse } from '../services/api/response/businessAreasResponse';\n\ninterface PageTemplateProps {\n showTags?: boolean;\n header?: string;\n toolTipText?: string;\n featuredImage?: string | undefined;\n featuredImageText?: string;\n onImageError?: () => void | undefined;\n headerContent?: string;\n content: JSX.Element;\n bgcolor?: string | undefined;\n tags?: TagsResponse[];\n businessAreaTags?: BusinessAreaResponse[];\n}\n\nexport const PageTemplate = (props: PageTemplateProps) => {\n const {\n showTags,\n header,\n toolTipText,\n onImageError,\n featuredImage,\n featuredImageText,\n headerContent,\n content,\n bgcolor,\n tags,\n businessAreaTags,\n } = props;\n return (\n <>\n \n \n {header && (\n \n )}\n \n \n {featuredImage && onImageError && (\n \n )}\n \n {content}\n \n \n );\n};\n\nPageTemplate.defaultProps = {\n showTags: false,\n headerContent: '',\n toolTipText: undefined,\n featuredImage: undefined,\n featuredImageText: '',\n onImageError: undefined,\n tags: undefined,\n businessAreaTags: undefined,\n bgcolor: 'white',\n header: undefined,\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { Box, Grid, Typography } from '@mui/material';\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport SkeletonCards from 'src/shared/components/skeletons/skeletonCards';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ActionButtons } from 'src/shared/components/atoms/actionButtons';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport { GenerateActionButtonIcons } from 'src/shared/components/atoms/generateActionButtonsIcons';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { useTranslation } from 'react-i18next';\n\nconst MenuPage = () => {\n const { id } = useParams();\n const { t } = useTranslation();\n // Global states\n const { user } = useSelector((state: RootStateType) => state.oidc);\n\n // Local states\n const [loading, setLoading] = useState(true);\n const [item, setItem] = useState();\n const [selectedImage, setSelectedImage] = useState();\n\n const getContentPageById = useCallback(async () => {\n setLoading(true);\n try {\n const contentApi = new ContentPageAPI();\n const res = await contentApi.Get(id);\n if (res) {\n setItem(res?.result);\n await setSelectedImage(\n fileUrl(res?.result?.featuredImageDocumentId, user?.access_token),\n );\n setLoading(false);\n }\n } catch (error) {\n setLoading(false);\n }\n }, [id, user?.access_token]);\n\n useEffect(() => {\n getContentPageById();\n }, [getContentPageById]);\n\n return (\n setSelectedImage(undefined)}\n headerContent={item?.content ?? ''}\n showTags\n tags={item?.tags}\n businessAreaTags={item?.businessAreaTags}\n content={\n <>\n {loading && }\n {!loading && item && (\n \n \n {item?.childItems && item?.childItems?.length > 0 && (\n \n {t('ChildItemsInfo')}\n \n )}\n {/* {item?.childItems &&\n item?.childItems.map((newItem: ContentPageResponse) => {\n return (\n \n {newItem.title ?? 'unkown'}\n \n );\n })} */}\n \n \n )}\n ConsoleHelper.log('Pin item', id)\n : undefined,\n )}\n />\n \n }\n />\n );\n};\n\nexport default MenuPage;\n","import { IconButton, InputAdornment, TextField } from '@mui/material';\nimport SearchOutlinedIcon from '@mui/icons-material/SearchOutlined';\nimport { Close } from '@mui/icons-material';\nimport { Colors } from 'src/shared/components/styles';\n\ntype SearchType = {\n placeholder: string;\n value: string | undefined;\n bgColor?: string;\n onTextChange: (event: React.ChangeEvent) => void;\n onClearText?: () => void;\n};\nexport const Search = ({\n placeholder,\n value,\n bgColor,\n onTextChange,\n onClearText,\n}: SearchType) => {\n return (\n \n \n {value && value.length > 0 ? : }\n \n \n ),\n }}\n />\n );\n};\nSearch.defaultProps = {\n bgColor: null,\n onClearText: undefined,\n};\n","import { useEffect, useState } from 'react';\n\nconst useDebounce = (value: string, delay: number) => {\n const [debouncedValue, setDebouncedValue] = useState(value);\n useEffect(\n () => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n return () => {\n clearTimeout(handler);\n };\n },\n [value, delay], // Only re-call effect if value or delay changes\n );\n return debouncedValue;\n};\n\nexport default useDebounce;\n","export enum SortingEnum {\n Desc = 'desc',\n}\n","import { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport dayjs from 'dayjs';\nimport parse, { HTMLReactParserOptions, Element } from 'html-react-parser';\n// MUI\nimport {\n Box,\n Card,\n CardActions,\n CardContent,\n CardHeader,\n CardMedia,\n Typography,\n Button,\n} from '@mui/material';\n// Components\nimport { Colors } from 'src/shared/components/styles';\nimport NewsModal from 'src/modules/news/components/newsModal';\n// Services\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport { isParentCompany } from 'src/shared/helpers/companyHelper';\nimport { toast } from 'react-toastify';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\n\ntype NewsItemType = {\n item: ContentPageResponse;\n};\n\nconst NewsItem = ({ item }: NewsItemType) => {\n const { t } = useTranslation();\n\n const { user } = useSelector((state: RootStateType) => state.oidc);\n\n const [imageError, setImageError] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n\n const handleShare = () => {\n const host = `${window.location.protocol}//${window.location.host}`;\n const shareLink = `${host}/NewsPage/${item.id}`;\n navigator.clipboard\n .writeText(shareLink)\n .then(() => {\n toast.success(t('LinkIsCopied'), {\n theme: 'colored',\n });\n })\n .catch(() => {\n toast.error(t('LinkNotCopied'), {\n theme: 'colored',\n });\n });\n };\n\n const parserOptions: HTMLReactParserOptions = {\n replace: (domNode) => {\n if (\n domNode instanceof Element &&\n domNode.type === 'tag' &&\n domNode.name === 'img'\n ) {\n return <>;\n }\n return domNode;\n },\n };\n\n return (\n <>\n \n \n \n {item?.title}\n \n }\n subheader={\n \n {dayjs(item?.publishDate).format('YYYY-MM-DD')}\n \n }\n />\n {!imageError && (\n {\n setImageError(true);\n }}\n />\n )}\n \n \n {parse(item?.content ?? '', parserOptions)}\n \n \n \n setModalOpen(true)}\n >\n {t('ReadMore')}...\n \n {GetAdminPermission(0, 'SuperAdmin') && (\n \n {t('Share')}\n \n )}\n \n \n {!imageError && (\n {\n setImageError(true);\n }}\n />\n )}\n \n {modalOpen && (\n setModalOpen(arg)}\n />\n )}\n \n );\n};\n\nexport default NewsItem;\n","import { useState, useEffect, useCallback } from 'react';\nimport { Box, Divider, Button, Collapse, LinearProgress } from '@mui/material';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { useParams } from 'react-router-dom';\nimport { Search } from 'src/shared/components/atoms/search';\nimport { useTranslation } from 'react-i18next';\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport useDebounce from 'src/shared/components/atoms/useDebounce';\nimport NewsItem from 'src/modules/news/components/newsItem';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { ContentPageOptions } from 'src/shared/services/api/options/contentPageOptions';\nimport { TransitionGroup } from 'react-transition-group';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { ActionButtons } from 'src/shared/components/atoms/actionButtons';\nimport { SortingEnum } from 'src/shared/enums/sorting.enum';\nimport { GenerateActionButtonIcons } from 'src/shared/components/atoms/generateActionButtonsIcons';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { Colors } from 'src/shared/components/styles';\n\nconst NewsListPage = () => {\n const { t } = useTranslation();\n const { id } = useParams();\n const pageSize = 10;\n // States\n const [pageIndex, setPageIndex] = useState(0);\n const [searchText, setSearchText] = useState('');\n const [newsLoading, setNewsLoading] = useState(false);\n const [loadingMore, setLoadingMore] = useState(false);\n const [data, setData] = useState([]);\n const [parentContentPage, setParentContentPage] =\n useState();\n const debouncedSearchTerm = useDebounce(searchText, 500);\n const [totalPages, setTotalPages] = useState(0);\n\n const getData = useCallback(async (params: ContentPageOptions) => {\n setNewsLoading(true);\n const newsAPI = new ContentPageAPI();\n try {\n setNewsLoading(true);\n const res = await newsAPI.GetAll(params);\n const array = res?.results ?? [];\n setTotalPages(res.totalPages ?? 0);\n if (params.pageIndex === 0) setData(array);\n else setData((prev) => [...prev, ...array]);\n setNewsLoading(false);\n setLoadingMore(false);\n } catch (error) {\n setNewsLoading(false);\n setLoadingMore(false);\n setData([]);\n ConsoleHelper.log(error ?? 'getAllNewsChildrens: unkown error.');\n }\n }, []);\n\n useEffect(() => {\n getData({\n pageIndex,\n pageSize,\n parentContentPageId: id,\n sortDir: SortingEnum.Desc,\n sortCol: 'publishDate',\n title: debouncedSearchTerm.length > 0 ? debouncedSearchTerm : undefined,\n });\n }, [getData, pageIndex, pageSize, id, debouncedSearchTerm]);\n\n // här vill hämta ContentPage för att visa ContentPage titel och Content\n // eftersom de props kommer inte med när vi hämtar nyhter childItems med \"parentContentPageId\"\n const getParentContentPageDetails = useCallback(async () => {\n try {\n const newsAPI = new ContentPageAPI();\n const res = await newsAPI.Get(id);\n setParentContentPage(res?.result);\n } catch (error) {\n ConsoleHelper.log(error ?? 'Unkown error: getparentContentPageDetails');\n }\n }, [id]);\n\n const handleLoadMore = () => {\n setLoadingMore(true);\n setPageIndex((prePageIndex) => prePageIndex + 1);\n };\n\n useEffect(() => {\n getParentContentPageDetails();\n }, [getParentContentPageDetails]);\n\n useEffect(() => {\n setPageIndex(0);\n getData({\n pageIndex: 0,\n pageSize: 10,\n parentContentPageId: id,\n sortDir: SortingEnum.Desc,\n sortCol: 'publishDate',\n });\n }, [getData, id]);\n\n useEffect(() => {\n setPageIndex(0);\n }, [debouncedSearchTerm]);\n return (\n \n setSearchText(e.target.value)}\n onClearText={() => setSearchText('')}\n />\n \n <>\n \n {data?.map((item: ContentPageResponse) => {\n return (\n \n \n \n \n {/* */}\n \n );\n })}\n \n {loadingMore && }\n {!(pageIndex + 1 === totalPages) && (\n \n \n {t('MoreNews')}\n \n \n )}\n \n \n \n }\n />\n );\n};\n\nexport default NewsListPage;\n","import { Controller, useFormContext } from 'react-hook-form';\nimport {\n DesktopDatePicker,\n MobileDatePicker,\n LocalizationProvider,\n} from '@mui/lab';\nimport AdapterDayjs from '@mui/lab/AdapterDayjs';\nimport { useTheme } from '@mui/material/styles';\nimport { useTranslation } from 'react-i18next';\nimport {\n FormLabel,\n TextField,\n FormControlLabel,\n useMediaQuery,\n} from '@mui/material';\nimport dayjs from 'dayjs';\nimport sv from 'dayjs/locale/sv';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\n\ntype IformInputProps = {\n name: string;\n label?: string;\n infoContent?: string;\n noTooltip?: boolean;\n};\n\nconst ControlledDatePicker = (props: IformInputProps) => {\n const { t } = useTranslation();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const { control } = useFormContext();\n const { name, label, infoContent, noTooltip } = props;\n return (\n <>\n {noTooltip ? (\n {label}\n ) : (\n \n \n \n )}\n (\n \n {isMobile ? (\n field.onChange(e)}\n value={field.value}\n renderInput={(params) => (\n \n )}\n />\n ) : (\n field.onChange(e)}\n value={field.value}\n renderInput={(params) => (\n \n )}\n />\n )}\n \n }\n key={label}\n label=''\n />\n )}\n />\n \n );\n};\nControlledDatePicker.defaultProps = {\n label: undefined,\n infoContent: undefined,\n noTooltip: undefined,\n};\n\nexport default ControlledDatePicker;\n","import { Controller, useFormContext, useFormState } from 'react-hook-form';\nimport { Typography } from '@mui/material';\nimport { Editor, IAllProps } from '@tinymce/tinymce-react';\nimport { useTranslation } from 'react-i18next';\n\ninterface IformInputProps extends IAllProps {\n name: string;\n label?: string;\n}\nconst ControlledEditorInput = (props: IformInputProps) => {\n const { i18n } = useTranslation();\n const { name, label, ...otherProps } = props;\n\n const { control } = useFormContext();\n const { errors } = useFormState();\n\n let isError = false;\n let errorMessage = '';\n if (errors && Object.prototype.hasOwnProperty.call(errors, name)) {\n isError = true;\n errorMessage = errors[name].message;\n }\n\n return (\n {\n return (\n <>\n \n {label}\n \n {\n const input = document.createElement(\n 'input',\n ) as HTMLInputElement;\n input.setAttribute('type', 'file');\n input.setAttribute('accept', 'image/*');\n input.onchange = () => {\n const file = input && input.files && input.files[0];\n const reader = new FileReader();\n reader.onload = (e) => {\n if (e && e.target) {\n cb(e.target.result, {\n alt: file?.name,\n });\n }\n };\n reader.readAsDataURL(file as Blob);\n };\n input.click();\n },\n images_upload_handler: (blobInfo, success, failure) => {\n // no upload, just return the blobInfo.blob() as base64 data\n success(\n `data:${blobInfo.blob().type};base64,${blobInfo.base64()}`,\n );\n },\n plugins: [\n 'advlist autolink lists link image',\n 'charmap print preview anchor help',\n 'searchreplace visualblocks code',\n 'insertdatetime media table paste wordcount',\n ],\n // plugins: ['lists link image table paste'],\n toolbar:\n 'insertfile undo redo | styleselect | bold italic | forecolor backcolor| alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image',\n }}\n onEditorChange={(content) => {\n onChange(content);\n }}\n />\n {isError && (\n \n {errorMessage}\n \n )}\n \n );\n }}\n />\n );\n};\n\nControlledEditorInput.defaultProps = {\n label: '',\n};\nexport default ControlledEditorInput;\n","import React, { DragEvent, useState, useCallback, useEffect } from 'react';\nimport {\n Button,\n CardMedia,\n Grid,\n IconButton,\n Box,\n Paper,\n Typography,\n} from '@mui/material';\nimport getId from 'src/shared/helpers/idGenerator';\nimport { Close, CloudUpload } from '@mui/icons-material';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { useSelector } from 'react-redux';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\n// import { DocumentAPI } from 'src/shared/services/api/documentAPI';\nimport ConfirmDialogModal from '../atoms/confirmDialog';\nimport { ImageValidTypes } from '../atoms/validTypes';\n\ntype ImageDropZoneProps = {\n onFilesChange: (files: File | undefined) => void;\n initialFile?: File | undefined;\n};\n\nexport interface FileExtended extends File {\n originalFilename?: string | undefined;\n id?: string | number | undefined;\n mimeType?: string | undefined;\n}\nconst ImageDropZone = (props: ImageDropZoneProps) => {\n const { t } = useTranslation(['common']);\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const { onFilesChange, initialFile } = props;\n const [validFile, setValidFile] = useState();\n // const [itemTobeDeleted, setItemTobeDeleted] = useState<\n // FileExtended | undefined\n // >();\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const [invalidFiles, setInvalidFile] = useState(); // if we want to show a file list with invalid files..\n const [inputId] = useState(() => getId('fileInput-'));\n\n // Sätter initalt state med befintlig bild\n useEffect(() => {\n setValidFile(initialFile);\n }, [initialFile]);\n\n // Sätter state i parent om bild-array ändras\n useEffect(() => {\n onFilesChange(validFile);\n }, [onFilesChange, validFile]);\n\n // Validerar fil\n const validateFile = (newFile: FileExtended) => {\n if (ImageValidTypes().indexOf(newFile.type) === -1) {\n return false;\n }\n return true;\n };\n\n // Validerar & sätter states för bild\n const validateAndAddFile = (file: File) => {\n if (validateFile(file)) {\n // add local image so we can display the name of file\n setValidFile(file);\n } else {\n setInvalidFile(file);\n toast.warn(`${t('common:InvalidFile')}: ${file.name}`);\n }\n };\n\n // Metoder för drag & drop\n const fileDrop = (e: DragEvent) => {\n e.preventDefault();\n const { files } = e.dataTransfer;\n validateAndAddFile(files[0]);\n };\n const dragOver = (e: DragEvent) => {\n e.preventDefault();\n };\n const dragEnter = (e: DragEvent) => {\n e.preventDefault();\n };\n const dragLeave = (e: DragEvent) => {\n e.preventDefault();\n };\n\n // On change i input elemement\n const changeHandler = async (e: React.ChangeEvent) => {\n e.preventDefault();\n const { files } = e.target;\n if (files) validateAndAddFile(files[0]);\n e.target.value = ''; // Hack to reset input element (if you select the same file after removing it wont work otherwise)\n };\n\n // Onclick radera fil\n const showDeleteModal = (file: FileExtended) => {\n // setItemTobeDeleted(file);\n setShowDeleteDialog(true);\n };\n\n // Raderar lokal fil (ej uppladdad än)\n const removeFile = () => {\n setValidFile(undefined);\n };\n\n // Raderar fil mot API & lokal bild om success\n // Får inte radera mot API när sidan har bildens ID kopplad fortfarande\n // const deleteDocument = async (item: FileExtended) => {\n // ConsoleHelper.log('Item to delete', item);\n // try {\n // const documentAPI = new DocumentAPI();\n // await documentAPI.deleteItemWithQueryID(Number(item.id));\n // removeFile();\n // } catch (error) {\n // ConsoleHelper.log('Error deltete file', error);\n // toast.warn(`${t('Kunde inte radera fil')}: ${item.name}`);\n // }\n // };\n\n // Anropa metoder efter confirm delete\n const deleteFile = async () => {\n removeFile();\n // if (itemTobeDeleted && itemTobeDeleted.id) {\n // await deleteDocument(itemTobeDeleted);\n // } else if (itemTobeDeleted?.name) {\n // removeFile();\n // }\n setShowDeleteDialog(false);\n };\n\n // Visa storlek på bild\n const formatSize = (a: number, b = 2) => {\n if (a === 0) return '0 Bytes';\n const c = b < 0 ? 0 : b;\n const d = Math.floor(Math.log(a) / Math.log(1024));\n return `${parseFloat((a / 1024 ** d).toFixed(c))} ${\n ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'][d]\n }`;\n };\n\n // Renderar bild\n const renderImage = useCallback(() => {\n return (\n \n {validFile && (\n <>\n ConsoleHelper.log('error')}\n title={validFile.name}\n component='img'\n />\n \n \n {validFile.name}\n \n \n ({formatSize(validFile.size)})\n \n showDeleteModal(validFile)}\n >\n \n \n \n \n )}\n \n );\n }, [user?.access_token, validFile]);\n\n return (\n <>\n \n \n \n \n \n \n {renderImage()}\n \n \n setShowDeleteDialog(false)}\n confirmButtonClick={() => deleteFile()}\n confirmTextButton={t('common:OK')}\n cancelTextButton={t('common:Cancel')}\n />\n \n \n );\n};\n\nImageDropZone.defaultProps = {\n initialFile: undefined,\n};\n\nexport default React.memo(ImageDropZone);\n","import * as yup from 'yup';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\n\nexport const ContentPageNewsSchema = (\n t: (n: string) => void,\n): yup.SchemaOf => {\n return yup.object().shape({\n ID: yup.number() || yup.string(),\n title: yup.string().required(`${t('titleRequired')}`),\n content: yup.string().required(`${t('contentRequired')}`), // På en nyhet är content required\n featuredImageText: yup.string(),\n companyId: yup.number() || yup.string(),\n companyId2: yup.number().nullable(true),\n parentContentPageId: yup.number() || yup.string(),\n contentType: yup.string(),\n businessAreas: yup.array().of(yup.mixed()),\n businessAreaTags: yup.array().of(yup.mixed()),\n locations: yup.array().of(yup.mixed()),\n roles: yup.array().of(yup.mixed()),\n sendNotice: yup.boolean().required(),\n sendEmail: yup.boolean().required(),\n publishDate: yup.string().required(`${t('publishDateRequired')}`),\n canHaveChildren: yup.boolean(),\n sortIndex: yup.string() || yup.number(),\n featuredImageDocumentId: yup.string(),\n documentListId: yup.number(),\n imageText: yup.string(),\n hideInMenu: yup.boolean(),\n tags: yup.array().of(yup.number()),\n documentFileList: yup.array().of(yup.string()),\n });\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Switch, FormControlLabel } from '@mui/material';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { useTranslation } from 'react-i18next';\n\ntype IformInputProps = {\n name: string;\n};\n\nconst ControlledSwitchNorway = (props: IformInputProps) => {\n const { control, setValue } = useFormContext();\n const { t } = useTranslation();\n const { name } = props;\n\n // Global states\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n const handleChange = (e: React.ChangeEvent) => {\n const { checked } = e.target;\n setValue(name, checked ? 32 : 0);\n };\n\n if (userCompany?.id !== 1) return null;\n\n return (\n (\n \n }\n label={t('PublishToInstalcoNO')}\n />\n )}\n />\n );\n};\n\nexport default ControlledSwitchNorway;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { Box, Grid, LinearProgress } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport dayjs from 'dayjs';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { toast } from 'react-toastify';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledDatePicker from 'src/shared/components/form/controlledDatePicker';\nimport ControlledPushNoticeCheckbox from 'src/shared/components/form/controlledPushNoticeCheckbox';\nimport ControlledEditorInput from 'src/shared/components/form/controlledEditorInput';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\nimport ImageDropZone from 'src/shared/components/form/imageDropZone';\n// Services\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { ContentTypeEnum } from 'src/shared/enums/contentType.enum';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\nimport { ContentPageNewsSchema } from 'src/shared/schemas/contentPageNewsSchema';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport ControlledSwitchNorway from 'src/shared/components/form/controlledSwitchNorway';\n\nconst CreateNewsPage = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const { id } = useParams();\n\n // Global states\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n // Local states\n const [selectedImage, setSelectedImage] = useState();\n const [parentContentPage, setParentContentPage] =\n useState();\n const [loading, setLoading] = useState(false);\n\n const formMethods = useForm({\n resolver: yupResolver(ContentPageNewsSchema(t)),\n defaultValues: {\n title: '',\n content: '',\n featuredImageText: '',\n companyId: userCompany?.id,\n companyId2: userCompany?.id === 1 ? 32 : null,\n parentContentPageId: parentContentPage?.id ?? Number(id),\n contentType: ContentTypeEnum.NewsPage,\n featuredImageDocumentId: undefined,\n businessAreaTags: [],\n locations: [],\n roles: [],\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs().format('YYYY-MM-DD'),\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n const getParentContentPageDetails = useCallback(async () => {\n try {\n const newsAPI = new ContentPageAPI();\n setLoading(true);\n const res = await newsAPI.Get(id);\n setParentContentPage(res?.result);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n ConsoleHelper.log(error ?? 'Unkown error: getparentContentPageDetails');\n }\n }, [id]);\n\n // Ändring av featured image\n const onFeaturedImageChange = useCallback((file: File | undefined) => {\n if (file) {\n ConsoleHelper.log('file for featuredImage', file);\n setSelectedImage(file);\n } else setSelectedImage(undefined);\n }, []);\n\n useEffect(() => {\n getParentContentPageDetails();\n }, [getParentContentPageDetails]);\n\n const formSubmit: SubmitHandler = async (\n data: IContentPage,\n ) => {\n setLoading(true);\n const formData = new FormData();\n\n // Om featured image vald\n if (selectedImage) {\n formData.append('featuredDocument', selectedImage);\n }\n const tagIDs: string[] = [];\n const businessAreaTagIDs: string[] = [];\n if (data?.locations) {\n data.locations.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id.toString());\n }\n });\n }\n if (data?.roles) {\n data.roles.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id.toString());\n }\n });\n }\n if (data.businessAreaTags) {\n data.businessAreaTags.forEach((tag: TagsResponse) => {\n if (tag.id) {\n businessAreaTagIDs.push(tag.id.toString());\n }\n });\n }\n formData.append('iD', '1');\n formData.append('title', data.title);\n formData.append('content', data.content ?? '');\n formData.append('featuredImageText', data.featuredImageText ?? '');\n if (userCompany?.id) {\n formData.append('companyId', userCompany?.id?.toString());\n }\n // Publicera till norska bolag från Instalco SE\n if (data.companyId2 === 32) {\n formData.append('companyId2', '32');\n }\n tagIDs.forEach((element) => {\n formData.append('tags', element);\n });\n businessAreaTagIDs.forEach((element) => {\n formData.append('businessAreaTags', element);\n });\n formData.append('hideInMenu', 'true');\n formData.append('sendNotice', data.sendNotice.toString());\n formData.append('sendEmail', data.sendEmail.toString());\n formData.append('contentType', data.contentType ?? 'NewsPage');\n formData.append(\n 'parentContentPageId',\n data.parentContentPageId?.toString() ?? '0',\n );\n formData.append(\n 'publishDate',\n dayjs(data.publishDate).format('YYYY-MM-DD'),\n );\n\n try {\n const newsAPI = new ContentPageAPI();\n await newsAPI.CreateFormData(formData);\n setLoading(false);\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n reset();\n history.push(`/NewsListPage/${id}`);\n } catch (error) {\n ConsoleHelper.log('error in saving', error);\n setLoading(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n return (\n \n {loading && }\n \n
\n \n \n \n \n \n \n \n \n \n \n \n reset()}\n linkTo={`/NewsListPage/${id}`}\n saveDisabled={loading}\n showDeleteButton={false}\n />\n \n \n
\n \n }\n />\n );\n};\n\nexport default CreateNewsPage;\n","import { useCallback, useEffect, useState } from 'react';\nimport dayjs from 'dayjs';\nimport parse from 'html-react-parser';\nimport { useSelector } from 'react-redux';\nimport { Link, useParams } from 'react-router-dom';\n// MUI\nimport {\n Box,\n Card,\n CardContent,\n CardMedia,\n Grid,\n IconButton,\n Typography,\n} from '@mui/material';\n// Components\nimport SkeletonCards from 'src/shared/components/skeletons/skeletonCards';\nimport { GenerateActionButtonIcons } from 'src/shared/components/atoms/generateActionButtonsIcons';\nimport { ActionButtons } from 'src/shared/components/atoms/actionButtons';\n// Services\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\n\nconst NewsPage = () => {\n const { id } = useParams();\n // Global states\n const { user } = useSelector((state: RootStateType) => state.oidc);\n // Local states\n const [imageError, setImageError] = useState(false);\n const [newsLoading, setNewsLoading] = useState(false);\n const [newsItem, setNewsItem] = useState();\n\n const getNewsData = useCallback(async () => {\n setNewsLoading(true);\n try {\n const newsapi = new ContentPageAPI();\n const res = await newsapi.Get(id);\n if (res) {\n setNewsItem(res?.result);\n setNewsLoading(false);\n }\n } catch (error) {\n setNewsLoading(false);\n }\n }, [id]);\n\n useEffect(() => {\n getNewsData();\n }, [getNewsData]);\n\n const convertUrls = (contentString: string) => {\n const replacedString = contentString\n .replaceAll(\n 'https://[intranetUrl]/News/',\n 'https://app.instalco.se/NewsPage/',\n )\n .replaceAll(\n 'https://[intranetUrl]/DocumentList/',\n 'https://app.instalco.se/DocumentListPage/',\n )\n .replaceAll(\n 'https://[intranetUrl]/NewsList/',\n 'https://app.instalco.se/NewsListPage/',\n )\n .replaceAll(\n 'https://[intranetUrl]/Page/',\n 'https://app.instalco.se/MenuPage/',\n )\n .replaceAll(\n 'https://[intranetUrl]/Gallery/',\n 'https://app.instalco.se/GalleryPage/',\n );\n return replacedString;\n };\n\n const hasAdminPermissions = GetAdminPermission(newsItem?.companyId);\n\n return (\n \n \n \n Tillbaka\n \n \n {newsLoading ? (\n \n ) : (\n \n \n \n {newsItem?.title}\n \n {dayjs(newsItem?.publishDate).format('YYYY-MM-DD')}\n \n \n {!imageError && (\n {\n setImageError(true);\n }}\n />\n )}\n \n \n {parse(newsItem?.content ? convertUrls(newsItem?.content) : '')}\n \n \n ConsoleHelper.log('Pin item', id)\n : undefined,\n )}\n />\n \n \n )}\n \n );\n};\n\nexport default NewsPage;\n","import { Box, Skeleton, Typography } from '@mui/material';\n\ntype SkeletonListProps = {\n rows?: number;\n};\nconst SkeletonList = ({ rows }: SkeletonListProps) => {\n const rowArray = Array.from(Array(rows).keys());\n const columnTemplates = '1fr';\n const columnTemplate = columnTemplates;\n return (\n \n {rowArray.map((rowItem) => {\n return (\n \n \n \n \n \n );\n })}\n \n );\n};\n\nSkeletonList.defaultProps = {\n rows: 10,\n};\n\nexport default SkeletonList;\n","import { Colors } from 'src/shared/components/styles';\nimport { MoreVert } from '@mui/icons-material';\nimport {\n ListItem,\n ListItemButton,\n ListItemText,\n IconButton,\n} from '@mui/material';\nimport { DocumentResponse } from 'src/shared/services/api/response/documentResponse';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\n\ntype DocumentItemProps = {\n item: DocumentResponse;\n companyId: number;\n handleClickShowActionMenu: (\n event: React.MouseEvent,\n ) => void;\n onDownloadFileClicked: (item: DocumentResponse) => void;\n};\n\nexport const DocumentItemComponent = ({\n item,\n companyId,\n handleClickShowActionMenu,\n onDownloadFileClicked,\n}: DocumentItemProps) => {\n return (\n \n \n \n ) : (\n <>\n )\n }\n >\n onDownloadFileClicked(item)}\n >\n \n \n \n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport {\n Divider,\n LinearProgress,\n List,\n MenuItem,\n Typography,\n} from '@mui/material';\nimport { toast } from 'react-toastify';\nimport axios from 'axios';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport { Search } from 'src/shared/components/atoms/search';\nimport SkeletonList from 'src/shared/components/skeletons/skeletonList';\nimport EmptyDataComponent from 'src/shared/components/organisms/emptyDataComponent';\nimport { DocumentItemComponent } from 'src/modules/document/components/documentItem';\nimport ActionMenu from 'src/shared/components/atoms/actionMenu';\nimport { ActionButtons } from 'src/shared/components/atoms/actionButtons';\nimport { GenerateActionButtonIcons } from 'src/shared/components/atoms/generateActionButtonsIcons';\n// Services\nimport { IParams } from 'src/shared/interfaces/params';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport { DocumentAPI } from 'src/shared/services/api/documentAPI';\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { DocumentResponse } from 'src/shared/services/api/response/documentResponse';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\n// import FileDropZone from 'src/shared/components/form/fileDropZone';\n\nconst DocumentListPage = () => {\n const { id } = useParams();\n const { t } = useTranslation();\n const history = useHistory();\n\n // Local states\n const [searchText, setSearchText] = useState('');\n const [userNotAllowed, setUserNotAllowed] = useState(false);\n const [loading, setLoading] = useState(true);\n const [fileLoading, setFileLoading] = useState(false);\n const [showActions, setShowActions] = useState(false);\n const [searchedData, setSearchedData] = useState();\n const [itemToBeDeleted, setiIemToBeDeleted] = useState();\n const [item, setItem] = useState();\n const [anchorEl, setAnchorEl] = useState(null);\n const [selectedImage, setSelectedImage] = useState();\n // Global states\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const { userDetails } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n const getDocumentPageById = useCallback(async () => {\n try {\n const contentApi = new ContentPageAPI();\n const res = await contentApi.Get(id);\n if (res) {\n // controlTagsForUser(res?.result);\n setItem(res?.result);\n await setSelectedImage(\n fileUrl(res?.result?.featuredImageDocumentId, user?.access_token),\n );\n }\n } catch (error) {\n setLoading(false);\n }\n }, [id]);\n\n useEffect(() => {\n setLoading(true);\n getDocumentPageById();\n const initialLoading = setTimeout(() => {\n setLoading(false);\n }, 1500);\n return () => clearTimeout(initialLoading);\n }, [getDocumentPageById, history]);\n\n // Så länge inte Get /ContentPage/{id} returnerar 403 om användaren inte matchar sidans taggar gör vi denna koll\n // Kollar endast om någon av användarens taggar matchar sidans taggar, om taggar finns på sidan: pageTags?.length > 0\n // SuperAdmin får se allt därav: userDetails?.permissionGroup?.id !== 5\n // Kollar inte kombinationer role + location etc\n // Tar bort det mest kritiska att vanliga användare inte ska se VD-sidor t ex\n useEffect(() => {\n const controlTagsForUser = (page: any) => {\n setUserNotAllowed(false);\n const userTags = userDetails?.tags ?? [];\n const pageTags = page?.tags ?? [];\n if (pageTags?.length > 0 && userDetails?.permissionGroup?.id !== 5) {\n const matchingTags = pageTags?.filter((p: any) =>\n userTags.some((u: any) => u.id === p.id),\n );\n if (matchingTags?.length === 0) {\n setUserNotAllowed(true);\n } else {\n setUserNotAllowed(false);\n }\n }\n };\n controlTagsForUser(item);\n }, [item, userDetails]);\n\n const handleSearch = (e: React.ChangeEvent) => {\n setSearchText(e.target.value);\n const newData = item?.documentList?.documents?.filter(\n (newItem: DocumentResponse) => {\n return (\n newItem?.name\n ?.toLocaleLowerCase()\n .indexOf(e.target.value.toLowerCase()) !== -1\n );\n },\n );\n setSearchedData(newData);\n };\n\n const onDownloadFileClicked = async (file: DocumentResponse) => {\n setFileLoading(true);\n try {\n const res = await axios.get(fileUrl(file?.id, user?.access_token), {\n responseType: 'blob',\n });\n if (res) {\n const newUrl = window.URL.createObjectURL(\n new Blob([res?.data], {\n type: res.headers['content-type'],\n }),\n );\n const link = document.createElement('a');\n link.href = newUrl;\n link.setAttribute('dowload', file.name ?? 'Dokument');\n document.body.appendChild(link);\n link.download = file.name ?? 'Dokument';\n link.click();\n setFileLoading(false);\n toast.success(`${t('DownloadDone')}:\n ${file.name}`);\n }\n } catch (error) {\n setFileLoading(false);\n toast.error(`${t('DownloadFailed')}:\n ${file.name}`);\n }\n };\n\n // const onSingleFileChangeFeaturedDocument = useCallback((files: File[]) => {\n // if (files.length > 0) {\n // setSelectedFile(files[0]);\n // } else setSelectedFile(undefined);\n // }, []);\n\n const handleClickShowActionMenu = (\n event: React.MouseEvent,\n itemToDelete: DocumentResponse,\n ) => {\n setiIemToBeDeleted(itemToDelete);\n setAnchorEl(event.currentTarget);\n setShowActions(true);\n };\n\n const handleCloseActionMenu = () => {\n setAnchorEl(null);\n setShowActions(false);\n };\n\n const deleteDocument = async () => {\n try {\n const documentApi = new DocumentAPI();\n await documentApi.deleteDocumentWithQureryID(itemToBeDeleted?.id);\n getDocumentPageById();\n handleCloseActionMenu();\n toast.success(t('Deleted!'), {\n theme: 'colored',\n });\n } catch (error) {\n handleCloseActionMenu();\n toast.error(t('SomethingWentWrong'));\n }\n };\n const allNewData =\n searchText.length > 0 ? searchedData : item?.documentList?.documents;\n return (\n setSelectedImage(undefined)}\n headerContent={userNotAllowed ? '' : item?.content ?? ''}\n showTags\n tags={item?.tags}\n businessAreaTags={item?.businessAreaTags}\n content={\n <>\n {userNotAllowed ? (\n \n {t('NoAccessToContent')}\n \n ) : (\n <>\n handleSearch(e)}\n onClearText={() => setSearchText('')}\n />\n \n {loading ? (\n \n ) : (\n <>\n \n {fileLoading && (\n \n \n
\n )}\n {allNewData && allNewData?.length > 0 ? (\n allNewData\n .sort((a: any, b: any) => a.name.localeCompare(b.name))\n .map((newDataItem: DocumentResponse) => (\n \n handleClickShowActionMenu(e, newDataItem)\n }\n key={newDataItem.id}\n item={newDataItem as DocumentResponse}\n companyId={item?.companyId ?? 0}\n onDownloadFileClicked={() =>\n onDownloadFileClicked(newDataItem)\n }\n />\n ))\n ) : (\n \n )}\n {allNewData && allNewData.length > 0 && (\n \n {t('Total{number}Documents', {\n number: allNewData?.length,\n })}\n \n )}\n \n {item?.childItems && item?.childItems?.length > 0 && (\n \n {t('ChildItemsInfo')}\n \n )}\n \n )}\n \n )}\n \n {t('deleteFile')}\n \n ConsoleHelper.log('Pin item', id)\n : undefined,\n )}\n />\n \n }\n />\n );\n};\nexport default DocumentListPage;\n","const GalleryListPage = () => {\n return (\n
\n
Gallery List Page
\n
\n );\n};\n\nexport default GalleryListPage;\n","export default __webpack_public_path__ + \"static/media/image-holder.368b8954.jpeg\";","import React, { useState } from 'react';\nimport { Button, ImageListItem, ImageListItemBar } from '@mui/material';\nimport { Info } from '@mui/icons-material';\nimport { useTranslation } from 'react-i18next';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport { DocumentResponse } from 'src/shared/services/api/response/documentResponse';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport ImageHolder from 'src/assets/images/image-holder.jpeg';\n\ntype GalleryItemCardType = {\n item: DocumentResponse;\n setShowModal: (arg: boolean) => void;\n onImageFail: (imageId?: string | number) => void;\n};\n\nconst GalleryItemCard = (props: GalleryItemCardType) => {\n const { item, setShowModal } = props;\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const [imageError, setImageError] = useState(false);\n const { t } = useTranslation();\n\n return (\n \n {/* ConsoleHelper.log('RADERA ITEM', item.id)}\n >\n \n */}\n {\n props.onImageFail(item.id);\n setImageError(true);\n }}\n />\n setShowModal(true)}\n startIcon={}\n >\n {t('Öppna i bildspel')}\n \n }\n />\n \n );\n};\n\nexport default React.memo(GalleryItemCard);\n","import { useState } from 'react';\nimport { Box, ImageList, ImageListItem, ImageListItemBar } from '@mui/material';\nimport { DocumentResponse } from 'src/shared/services/api/response/documentResponse';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport ImageHolder from 'src/assets/images/image-holder.jpeg';\n\ntype GalleryItemCardType = {\n data: DocumentResponse[];\n activeStep: number;\n setActiveStep: (arg: number) => void;\n};\n\nconst GalleryThumbs = (props: GalleryItemCardType) => {\n const { data, activeStep, setActiveStep } = props;\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const [imageError, setImageError] = useState(false);\n return (\n \n \n {data?.map((item: DocumentResponse, index: number) => (\n setActiveStep(index)}\n sx={{\n '&:hover': {\n cursor: 'pointer',\n },\n pr: 0.5,\n }}\n >\n {\n setImageError(true);\n }}\n />\n {activeStep === index && (\n \n )}\n \n ))}\n \n \n );\n};\nexport default GalleryThumbs;\n","import { useState, useEffect } from 'react';\nimport { toast } from 'react-toastify';\nimport axios from 'axios';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport SwipeableViews from 'react-swipeable-views';\nimport { autoPlay } from 'react-swipeable-views-utils';\nimport {\n Modal,\n Box,\n Button,\n MobileStepper,\n CardMedia,\n useMediaQuery,\n Grid,\n} from '@mui/material';\nimport {\n KeyboardArrowLeft,\n KeyboardArrowRight,\n Close,\n BorderAllRounded,\n PlayArrowRounded,\n Pause,\n DownloadRounded,\n} from '@mui/icons-material';\nimport { useTheme } from '@mui/material/styles';\n// Components\nimport ImageHolder from 'src/assets/images/image-holder.jpeg';\nimport { Colors } from 'src/shared/components/styles';\nimport GalleryThumbs from 'src/modules/gallery/components/galleryThumbs';\n// Services\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { DocumentResponse } from 'src/shared/services/api/response/documentResponse';\nimport { fileUrl } from 'src/shared/services/utils/url';\n// import ConsoleHelper from 'src/shared/helpers/consoleHelper';\n\ntype GalleryCarouselType = {\n data: DocumentResponse[];\n indexToOpen: number;\n showModal: boolean;\n setShowModal: (arg: boolean) => void;\n};\n\nconst AutoPlaySwipeableViews = autoPlay(SwipeableViews);\n\nconst GalleryCarousel = (props: GalleryCarouselType) => {\n const { t } = useTranslation();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const { data, showModal, setShowModal, indexToOpen } = props;\n const maxSteps = data?.length;\n\n // Global states\n const { user } = useSelector((state: RootStateType) => state.oidc);\n\n // Local states\n const [imageError, setImageError] = useState(false);\n const [activeStep, setActiveStep] = useState(0);\n const [currentFile, setCurrentFile] = useState();\n const [autoSwiperPlay, setAutoSwiperPlay] = useState(false);\n const [showThumbs, setShowThumbs] = useState(false);\n\n const handleStepChange = (step: number) => {\n setActiveStep(step);\n const currentItem = data[step];\n setCurrentFile(currentItem);\n };\n\n const handleNext = (currentStep: number) => {\n handleStepChange(currentStep + 1);\n };\n\n const handleBack = (currentStep: number) => {\n handleStepChange(currentStep - 1);\n };\n\n useEffect(() => {\n setImageError(false);\n handleStepChange(indexToOpen);\n // setActiveStep(indexToOpen);\n }, [data, indexToOpen]);\n\n const handleOnClose = () => {\n setAutoSwiperPlay(false);\n setShowThumbs(false);\n setShowModal(false);\n };\n\n // const onDownloadImageClicked = async () => {\n // setAutoSwiperPlay(false);\n // await downloadFile(currentFile);\n // setAutoSwiperPlay(true);\n // };\n\n const onDownloadImageClicked = async () => {\n setAutoSwiperPlay(false);\n try {\n const res = await axios.get(\n fileUrl(currentFile?.id, user?.access_token),\n {\n responseType: 'blob',\n },\n );\n if (res) {\n const newUrl = window.URL.createObjectURL(\n new Blob([res?.data], {\n type: res.headers['content-type'],\n }),\n );\n const link = document.createElement('a');\n link.href = newUrl;\n link.setAttribute('dowload', currentFile?.name ?? 'Dokument');\n document.body.appendChild(link);\n link.download = currentFile?.name ?? 'Dokument';\n link.click();\n toast.success(`${t('DownloadDone')}:\n ${currentFile?.name}`);\n }\n } catch (error) {\n toast.error(`${t('DownloadFailed')}:\n ${currentFile?.name}`);\n }\n };\n\n return (\n \n \n \n {/* Buttons for download, play, thumbs, close */}\n \n onDownloadImageClicked()}\n sx={{ color: 'white' }}\n >\n \n \n setAutoSwiperPlay(!autoSwiperPlay)}\n sx={{ color: 'white' }}\n >\n {autoSwiperPlay ? : }\n \n {!isMobile && (\n setShowThumbs(!showThumbs)}\n sx={{ color: showThumbs ? 'primary.main' : Colors.WHITE }}\n >\n \n \n )}\n \n \n\n {/* Bildspel med mappning av sidans bilder */}\n \n {data?.map((step) => (\n {\n setImageError(true);\n }}\n />\n ))}\n \n\n {/* Stepper med pilar */}\n handleNext(activeStep)}\n disabled={activeStep === maxSteps - 1}\n sx={{ color: 'white' }}\n >\n \n \n }\n backButton={\n handleBack(activeStep)}\n disabled={activeStep === 0}\n sx={{ color: 'white' }}\n >\n \n \n }\n />\n \n\n {/* Thumbs öppnas/Stängs via knappar högst upp - endast desktop */}\n {showThumbs && (\n \n \n \n )}\n {/* {downloadComponent} */}\n \n \n );\n};\n\nexport default GalleryCarousel;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { Divider, ImageList, useMediaQuery } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\n// import EmptyDataComponent from 'src/shared/components/organisms/emptyDataComponent';\nimport GalleryItemCard from 'src/modules/gallery/components/galleryItemCard';\nimport SkeletonCards from 'src/shared/components/skeletons/skeletonCards';\nimport { ActionButtons } from 'src/shared/components/atoms/actionButtons';\n// import FileDropZone from 'src/shared/components/form/fileDropZone';\nimport { GenerateActionButtonIcons } from 'src/shared/components/atoms/generateActionButtonsIcons';\nimport GalleryCarousel from 'src/modules/gallery/components/galleryCarousel';\n// Services\nimport { IParams } from 'src/shared/interfaces/params';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { DocumentResponse } from 'src/shared/services/api/response/documentResponse';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport EmptyDataComponent from 'src/shared/components/organisms/emptyDataComponent';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { useTranslation } from 'react-i18next';\n\nconst GalleryPage = () => {\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n const { id } = useParams();\n const { t } = useTranslation();\n\n // Local states\n const [loading, setLoading] = useState(false);\n const [showModal, setShowModal] = useState(false);\n const [item, setItem] = useState();\n const [indexToOpen, setIndexToOpen] = useState(0);\n\n const getPageById = useCallback(async (idParam: string) => {\n const contentApi = new ContentPageAPI();\n setLoading(true);\n try {\n const response = await contentApi.Get(idParam);\n if (response) {\n setItem(response.result);\n }\n setLoading(false);\n } catch (err) {\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n setLoading(true);\n setItem(undefined);\n getPageById(id);\n }, [getPageById, id]);\n\n useEffect(() => {\n return () => {\n setItem(undefined);\n };\n }, []);\n\n const handleImageError = (imageId?: string | number) => {\n setItem((prevState) => {\n const newState = { ...prevState } as ContentPageResponse;\n\n if (newState.documentList?.documents) {\n const filteredDocuments = newState.documentList.documents.filter(\n (document: DocumentResponse) => document.id !== imageId,\n );\n newState.documentList.documents = filteredDocuments;\n }\n return newState;\n });\n };\n\n return (\n \n \n {/* {loading ? (\n \n ) : ( */}\n \n {item &&\n item.documentList &&\n item.documentList.documents?.length > 0 ? (\n item.documentList.documents.map(\n (galleryItem: DocumentResponse, index: number) => {\n return (\n handleImageError(imageId)}\n setShowModal={(arg: boolean) => {\n setIndexToOpen(index);\n setShowModal(arg);\n }}\n />\n );\n },\n )\n ) : (\n \n )}\n \n {/* )} */}\n \n ConsoleHelper.log('Pin item', id)\n : undefined,\n )}\n />\n \n }\n />\n );\n};\nexport default GalleryPage;\n","import {\n ListItemButton,\n ListItemIcon,\n ListItemText,\n IconButton,\n Tooltip,\n MenuItem,\n ListItem,\n} from '@mui/material';\nimport { Link, useHistory } from 'react-router-dom';\nimport { useState } from 'react';\nimport { Colors } from 'src/shared/components/styles';\nimport { MoreVert, LockOutlined } from '@mui/icons-material';\nimport UserAvatar from 'src/shared/components/atoms/userAvatar';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\n// import ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport ActionMenu from 'src/shared/components/atoms/actionMenu';\nimport { useTranslation } from 'react-i18next';\nimport { GroupResponse } from 'src/shared/services/api/response/groupResponse';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\n// import { GroupResponse } from 'src/shared/services/api/response/groupResponse';\n// import { GroupAPI } from 'src/shared/services/api/groupAPI';\n\ntype GroupItemType = {\n group: GroupResponse;\n deleteGroup: (arg: string | number) => void;\n closeMobileMenu?: (event: React.MouseEvent | React.KeyboardEvent) => void;\n};\nconst GroupItem = (props: GroupItemType) => {\n const { t } = useTranslation();\n const history = useHistory();\n const { group, closeMobileMenu, deleteGroup } = props;\n const [showActions, setShowActions] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n\n const handleClickShowActionMenu = (\n event: React.MouseEvent,\n ) => {\n setAnchorEl(event.currentTarget);\n setShowActions(true);\n };\n\n const handleCloseActionMenu = (value: string) => {\n setAnchorEl(null);\n setShowActions(false);\n if (value === 'delete') setShowDeleteDialog(true);\n if (value === 'edit') history.push(`/GroupPage/${group?.id}/edit`);\n };\n\n return (\n <>\n \n \n \n )\n }\n >\n \n \n \n \n \n {group?.private && (\n \n \n \n \n \n )}\n \n \n \n handleCloseActionMenu('edit')}>\n {t('EditGroup')}\n \n handleCloseActionMenu('delete')}>\n {t('DeleteGroup')}\n \n \n setShowDeleteDialog(false)}\n confirmButtonClick={() => {\n setShowDeleteDialog(false);\n deleteGroup(group?.id);\n }}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n );\n};\nGroupItem.defaultProps = {\n closeMobileMenu: undefined,\n};\nexport default GroupItem;\n","export enum ParentCompanyEnum {\n InstalcoSE = 1,\n InstalcoNO = 32,\n InstalcoMother = 1 || 32,\n // InstalcoFI = 0;\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\nimport { Divider, List } from '@mui/material';\n// Components\nimport { Search } from 'src/shared/components/atoms/search';\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport GroupItem from 'src/modules/groups/components/groupItem';\nimport SkeletonList from 'src/shared/components/skeletons/skeletonList';\nimport EmptyDataComponent from 'src/shared/components/organisms/emptyDataComponent';\nimport { ActionButtons } from 'src/shared/components/atoms/actionButtons';\nimport { GenerateActionButtonIcons } from 'src/shared/components/atoms/generateActionButtonsIcons';\nimport InfoTooltip from 'src/shared/components/molecules/infoTooltip';\n// Services\nimport { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport { GroupAPI } from 'src/shared/services/api/groupAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { GroupResponse } from 'src/shared/services/api/response/groupResponse';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { GroupOptions } from '../../../shared/services/api/options/groupOptions';\nimport useDebounce from '../../../shared/components/atoms/useDebounce';\n\nconst GroupListPage = () => {\n const { t } = useTranslation();\n // Local states\n const [loading, setLoading] = useState(false);\n const [searchText, setSearchText] = useState('');\n const debouncedSearchText = useDebounce(searchText, 500);\n const [groups, setGroups] = useState();\n\n const fetchGroups = useCallback(async (filter: string) => {\n setLoading(true);\n try {\n const groupApi = new GroupAPI();\n const options: GroupOptions = { sortDir: 'asc', filter };\n const res = await groupApi.GetAll(options);\n if (res) {\n setGroups(res?.results);\n setLoading(false);\n }\n } catch (error) {\n setGroups([]);\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n fetchGroups(debouncedSearchText);\n }, [fetchGroups, debouncedSearchText]);\n\n // Radera grupp mot API\n const deleteGroup = async (id: string | number) => {\n setLoading(true);\n const groupApi = new GroupAPI();\n try {\n await groupApi.Delete({ id });\n await fetchGroups(debouncedSearchText);\n setLoading(false);\n toast.success(t('Deleted!'), {\n theme: 'colored',\n });\n } catch (error) {\n ConsoleHelper.log('ERROR deleteGroup', error);\n setLoading(false);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n };\n\n return (\n \n setSearchText(e.target.value)}\n onClearText={() => setSearchText('')}\n />\n \n {loading ? (\n \n ) : (\n \n {groups && groups?.length > 0 ? (\n groups.map((group) => {\n return (\n deleteGroup(arg)}\n />\n );\n })\n ) : (\n \n )}\n \n )}\n \n \n }\n />\n );\n};\nexport default GroupListPage;\n","import { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { toast } from 'react-toastify';\nimport dayjs from 'dayjs';\nimport {\n IconButton,\n Card,\n CardActions,\n CardContent,\n CardHeader,\n Typography,\n MenuItem,\n} from '@mui/material';\nimport { MoreVert, ShareOutlined } from '@mui/icons-material';\n// Components\nimport { Colors } from 'src/shared/components/styles';\nimport UserAvatar from 'src/shared/components/atoms/userAvatar';\nimport ActionMenu from 'src/shared/components/atoms/actionMenu';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport ReplyItem from 'src/modules/groups/components/replyItem';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { PostResponse } from 'src/shared/services/api/response/postResponse';\nimport { PostAPI } from 'src/shared/services/api/postAPI';\nimport EditPostItem from 'src/modules/groups/components/editPostItem';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { UserTypeEnum } from 'src/shared/helpers/permissionHelper';\nimport LikePostButton from './likePostButton';\nimport { ActionContentFiles } from './actionContentFiles';\n\ntype PostCardType = {\n item: PostResponse;\n fetchPosts: () => void;\n bgColor: string;\n};\n\nconst PostCard = (props: PostCardType) => {\n const { item, fetchPosts, bgColor } = props;\n const { t } = useTranslation();\n // Global state\n const { userDetails } = useSelector(\n (state: RootStateType) => state.authState,\n );\n // Local state\n const [loading, setLoading] = useState(false);\n const [isPostEditingOpen, setIsPostEditingOpen] = useState(false);\n const [showActions, setShowActions] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n\n const deletePost = async () => {\n setLoading(true);\n try {\n const postApi = new PostAPI();\n await postApi.Delete({ id: item.id });\n if (fetchPosts) await fetchPosts();\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n } catch (error) {\n ConsoleHelper.log('error delete post::', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n setLoading(false);\n setShowDeleteDialog(false);\n };\n\n // Dela inlägget\n const sharePost = () => {\n const shareLink = `${window.location.host}/GroupPage/${item?.groupId}?scrollTo=${item.id}`;\n navigator.clipboard.writeText(shareLink);\n toast.success(`${t('LinkIsCopied')}:\n ${shareLink}`);\n };\n\n // Ska öppna för den item man klickar på (knappen ska endast vara synlig om man är admin eller själv har skrivit inlägget)\n const handleClickShowActionMenu = (\n event: React.MouseEvent,\n ) => {\n setAnchorEl(event.currentTarget);\n setShowActions(true);\n };\n\n const handleCloseActionMenu = (value: string) => {\n setAnchorEl(null);\n setShowActions(false);\n if (value === 'delete') setShowDeleteDialog(true);\n if (value === 'edit') setIsPostEditingOpen(true);\n if (value === 'share') sharePost();\n };\n\n return (\n \n \n }\n title={\n \n {item?.user?.name ?? t('DeletedUser')} (\n {item?.user?.companyName ?? t('Unknown')})\n \n }\n subheader={\n \n {dayjs(item.publishDate).format('YYYY-MM-DD HH:mm')}\n \n }\n action={\n userDetails?.id === item?.user?.id ||\n userDetails?.permissionGroup?.id === UserTypeEnum.SuperAdmin ? (\n \n \n \n ) : (\n sharePost()}>\n \n \n )\n }\n />\n \n {isPostEditingOpen ? (\n setIsPostEditingOpen(false)}\n fetchPosts={fetchPosts}\n />\n ) : (\n <>\n \n {item.message}\n \n {item?.documentList?.documents?.length > 0 ? (\n ConsoleHelper.log('Nothing')} // Ska inte kunna radera i visning\n removeNewFile={() => ConsoleHelper.log('Nothing')} // Ska inte kunna radera i visning\n loading={false}\n />\n ) : null}\n \n )}\n \n \n \n \n \n \n handleCloseActionMenu('edit')}>\n {t('Edit')}\n \n handleCloseActionMenu('delete')}>\n {t('Delete')}\n \n handleCloseActionMenu('share')}>\n {t('Share')}\n \n \n setShowDeleteDialog(false)}\n confirmButtonClick={() => deletePost()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n );\n};\n\nexport default PostCard;\n","import { useState, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useForm, SubmitHandler, FormProvider } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as yup from 'yup';\nimport { SchemaOf } from 'yup';\nimport { toast } from 'react-toastify';\nimport { Button, Box } from '@mui/material';\nimport { AddRounded } from '@mui/icons-material';\nimport { ControlledCommentInput } from 'src/shared/components/form/controlledCommentInput';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { PostAPI } from 'src/shared/services/api/postAPI';\nimport { Colors } from 'src/shared/components/styles';\n// import { createFormData } from 'src/shared/helpers/createFormData';\nimport { PostRequest } from 'src/shared/services/api/request/postRequest';\nimport { ActionButtonsContent } from './actionButtonsContent';\nimport { ActionContentFiles } from './actionContentFiles';\n\ninterface IGroupProps {\n groupId: number;\n fetchPosts: () => void;\n}\n\nconst NewContentInGroup = (props: IGroupProps) => {\n const { groupId, fetchPosts } = props;\n const { t } = useTranslation();\n const [showInput, setShowInput] = useState(false);\n const [attachFileLoading, setAttachFileLoading] = useState(false);\n const [loading, setLoading] = useState(false);\n const [newFiles, setNewFiles] = useState([]);\n\n const ContentSchema: SchemaOf = yup.object().shape({\n message: yup.string().required(t('ErrorTypeBeforePost')),\n groupId: yup.number().required(),\n documentFileList: yup.mixed().optional(),\n documentListId: yup.string().optional() || yup.number().optional(),\n });\n const onFileChangeDocumentsList = useCallback(\n (files: File[]) => {\n if (files.length > 0) {\n const newfiles: File[] = newFiles;\n files.forEach((element) => {\n newfiles.push(element);\n });\n\n setNewFiles(newfiles);\n }\n },\n [newFiles],\n );\n const formMethods = useForm({\n resolver: yupResolver(ContentSchema),\n defaultValues: {\n message: '',\n groupId: 0,\n documentFileList: [],\n documentListId: 0,\n },\n });\n\n const { handleSubmit, reset } = formMethods;\n\n useEffect(() => {\n reset({\n message: '',\n groupId,\n });\n }, [groupId, reset]);\n\n const formSubmit: SubmitHandler = async (data: PostRequest) => {\n setLoading(true);\n const formData = new FormData();\n if (newFiles.length > 0) {\n newFiles.forEach(async (element) => {\n formData.append('documentFileList', element);\n });\n }\n formData.append('message', data.message);\n formData.append('groupId', data.groupId?.toString());\n // ConsoleHelper.log('res post post formData::', formData);\n try {\n const postApi = new PostAPI();\n const res = await postApi.CreatePostFormData(formData);\n // ConsoleHelper.log('res post post::', res);\n if (res) {\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n setNewFiles([]);\n await fetchPosts();\n }\n setLoading(false);\n } catch (error) {\n ConsoleHelper.log('error post post::', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n setLoading(false);\n reset();\n setShowInput(false);\n };\n const removeFile = useCallback(\n async (name: string | undefined) => {\n const remainFiles = newFiles.filter((e) => e.name !== name);\n setNewFiles(remainFiles);\n },\n\n [newFiles],\n );\n return (\n \n {!showInput && (\n setShowInput(true)}\n startIcon={}\n >\n {t('NewPost')}\n \n )}\n {showInput && (\n \n
\n \n ConsoleHelper.log('Nothing')}\n removeNewFile={(name) => removeFile(name)}\n />\n {\n reset();\n setShowInput(false);\n setNewFiles([]);\n }}\n onAttachFile={async (files: File[]) => {\n setAttachFileLoading(true);\n await onFileChangeDocumentsList(files);\n setAttachFileLoading(false);\n }}\n />\n \n
\n )}\n \n );\n};\n\nexport default NewContentInGroup;\n","import {\n List,\n ListItem,\n ListItemIcon,\n ListItemText,\n IconButton,\n Button,\n Typography,\n MenuItem,\n LinearProgress,\n} from '@mui/material';\nimport React, { useState, useEffect } from 'react';\nimport { Colors } from 'src/shared/components/styles';\nimport { MoreVert, Add } from '@mui/icons-material';\nimport UserAvatar from 'src/shared/components/atoms/userAvatar';\nimport { useTranslation } from 'react-i18next';\nimport ActionMenu from 'src/shared/components/atoms/actionMenu';\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\nimport { GroupMemberResponse } from 'src/shared/services/api/response/groupMemberResponse';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\n\ntype GroupMemberListType = {\n loading: boolean;\n members: GroupMemberResponse[];\n showMembers: boolean;\n showDeleteDialog: boolean;\n setShowMembers: (arg: boolean) => void;\n setShowAddMembers: (arg: boolean) => void;\n removeMember: (member: GroupMemberResponse | undefined) => void;\n setShowDeleteDialog: (arg: boolean) => void;\n};\n\nconst GroupMemberListModal = (props: GroupMemberListType) => {\n const { t } = useTranslation();\n const {\n loading,\n members,\n showMembers,\n setShowMembers,\n setShowAddMembers,\n showDeleteDialog,\n setShowDeleteDialog,\n removeMember,\n } = props;\n\n // States\n const [memberList, setMemberList] = useState<\n GroupMemberResponse[] | undefined\n >([]);\n const [member, setMember] = useState();\n const [showActions, setShowActions] = useState(false);\n const [anchorEl, setAnchorEl] = useState(null);\n\n const handleClickShowActionMenu = (\n event: React.MouseEvent,\n value: GroupMemberResponse,\n ) => {\n setMember(value);\n setAnchorEl(event.currentTarget);\n setShowActions(true);\n };\n\n const handleCloseActionMenu = () => {\n setAnchorEl(null);\n setShowActions(false);\n setShowDeleteDialog(false);\n };\n const handleCloseActionMenuAndDelete = () => {\n setAnchorEl(null);\n setShowActions(false);\n setShowDeleteDialog(true);\n };\n\n useEffect(() => {\n let memberArray = members;\n memberArray = memberArray.sort((a: any, b: any) =>\n a.employee.personName > b.employee.personName ? 1 : -1,\n );\n setMemberList(memberArray);\n }, [members]);\n\n return (\n setShowMembers(false)}\n title={\n \n {t('Members')}\n \n }\n secondaryAction={\n GetAdminPermission(0, 'groups') ? (\n {\n setShowAddMembers(true);\n setShowMembers(false);\n }}\n startIcon={}\n variant='text'\n sx={{ color: 'primary.main' }}\n >\n {t('Add')}\n \n ) : (\n <>\n )\n }\n content={\n <>\n {loading ? :
}\n \n {memberList &&\n memberList.map((memberItem: GroupMemberResponse) => {\n return (\n \n \n \n \n \n \n \n handleClickShowActionMenu(event, memberItem)\n }\n >\n \n \n \n \n );\n })}\n {members?.length === 0 && (\n {t('GroupHasNoMembers')}\n )}\n \n \n \n {t('RemoveFromGroup')}\n \n {/* handleCloseActionMenu('delete')}>\n {t('SetAsAdmin')}\n */}\n \n setShowDeleteDialog(false)}\n confirmButtonClick={() => removeMember(member)}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n }\n />\n );\n};\n\nexport default GroupMemberListModal;\n","import React from 'react';\nimport {\n List,\n ListItem,\n ListItemText,\n Button,\n Typography,\n LinearProgress,\n ListItemIcon,\n Collapse,\n Pagination,\n} from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\nimport {\n EditRounded,\n KeyboardArrowDownRounded,\n KeyboardArrowUpRounded,\n} from '@mui/icons-material';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { EmployeeResponse } from 'src/shared/services/api/response/employeeResponse';\nimport UserAvatar from 'src/shared/components/atoms/userAvatar';\n\ntype GroupMemberListType = {\n loading: boolean;\n locationsTags: TagsResponse[];\n rolesTags: TagsResponse[];\n businessAreaTags: BusinessAreaResponse[];\n showTags: boolean;\n link: string;\n setShowTags: (arg: boolean) => void;\n matchingMembers: EmployeeResponse[] | undefined;\n totalMatchingMembers: number;\n pageIndex: number;\n totalPages: number;\n setPageIndex: (index: number) => void;\n};\n\nconst GroupTagsListModal = (props: GroupMemberListType) => {\n const { t } = useTranslation();\n const history = useHistory();\n const {\n loading,\n showTags,\n setShowTags,\n locationsTags,\n rolesTags,\n businessAreaTags,\n link,\n matchingMembers,\n totalMatchingMembers,\n pageIndex,\n totalPages,\n setPageIndex,\n } = props;\n\n const [showMembers, setShowMembers] = React.useState(false);\n\n const pageSize = 10;\n\n const handleChangePage = (\n event: React.ChangeEvent,\n newPage: number,\n ) => {\n setPageIndex(newPage);\n };\n\n return (\n setShowTags(false)}\n title={\n \n {t('Permissions')}\n \n }\n secondaryAction={\n GetAdminPermission(1) ? (\n {\n setShowTags(false);\n history.push(link);\n }}\n startIcon={}\n variant='text'\n sx={{ color: 'primary.main' }}\n >\n {t('Edit')}\n \n ) : (\n <>\n )\n }\n content={\n <>\n {loading ? :
}\n \n \n {t('BusinessAreas')}\n \n {locationsTags?.length > 0 ? (\n locationsTags?.map((item: TagsResponse) => {\n return (\n \n \n \n \n \n );\n })\n ) : (\n \n {t('All')} {t('BusinessAreas').toLowerCase()}\n \n )}\n \n \n {t('Roles')}\n {rolesTags?.length > 0 ? (\n rolesTags?.map((item: TagsResponse) => {\n return (\n \n \n \n \n \n );\n })\n ) : (\n \n {t('All')} {t('Roles').toLowerCase()}\n \n )}\n \n \n {t('Segment')}\n {businessAreaTags?.length > 0 ? (\n businessAreaTags?.map((item: BusinessAreaResponse) => {\n return (\n \n \n \n \n \n );\n })\n ) : (\n \n {t('All')} {t('Segment').toLowerCase()}\n \n )}\n \n setShowMembers(!showMembers)}\n fullWidth={false}\n sx={{ ml: -1 }}\n endIcon={\n showMembers ? (\n \n ) : (\n \n )\n }\n >\n {t('ShowMatchingMembers')} ({totalMatchingMembers})\n \n \n <>\n {matchingMembers &&\n matchingMembers.map((member: EmployeeResponse) => {\n return (\n \n \n \n \n \n \n \n \n );\n })}\n \n \n Visar {(pageIndex - 1) * pageSize} -{' '}\n {matchingMembers &&\n (pageIndex - 1) * pageSize + matchingMembers?.length}{' '}\n av {totalMatchingMembers}\n \n {matchingMembers?.length === 0 && (\n {t('GroupHasNoMembers')}\n )}\n \n \n \n }\n />\n );\n};\n\nexport default GroupTagsListModal;\n","import { Controller } from 'react-hook-form';\nimport { TextField, Autocomplete, Box, FormLabel } from '@mui/material';\nimport { EmployeeResponse } from 'src/shared/services/api/response/employeeResponse';\n\ntype IformInputProps = {\n name: string;\n label?: string;\n formLabel?: string;\n selectItems: EmployeeResponse[];\n setSearchEmployee: (event: any) => void;\n helperText?: string | undefined;\n type: string;\n multiple?: boolean;\n rows?: number;\n fullWidth?: boolean;\n placeholder?: string;\n control?: any;\n errors?: any;\n size?: 'small' | 'medium';\n disabled?: boolean;\n fontSize?: number;\n readOnly?: boolean;\n useErrorSummery?: boolean;\n};\n\nconst EmployeeControlledSelected = (Iprops: IformInputProps) => {\n const {\n setSearchEmployee,\n helperText,\n multiple,\n rows,\n type,\n fullWidth,\n placeholder,\n name,\n control,\n errors,\n label,\n formLabel,\n selectItems,\n size,\n disabled,\n fontSize,\n readOnly,\n useErrorSummery,\n } = Iprops;\n\n let isError = false;\n let errorMessage = '';\n if (errors && Object.prototype.hasOwnProperty.call(errors, name)) {\n isError = true;\n errorMessage = errors[name].message;\n }\n\n return (\n <>\n {formLabel && (\n \n {formLabel}\n \n )}\n {\n return (\n option.id === item.id}\n getOptionLabel={(option) => option.personName}\n onChange={(event, selectedOptions) => {\n onChange(selectedOptions);\n }}\n filterOptions={(x) => x}\n onInputChange={(event) => {\n setSearchEmployee(event);\n }}\n renderOption={(props, option) => (\n \n {option.personName} ({option.company?.name ?? ' - '}{' '}\n {option.company?.country_CountryCode})\n \n )}\n renderInput={(params) => {\n return (\n \n );\n }}\n />\n );\n }}\n />\n \n );\n};\n\nexport default EmployeeControlledSelected;\n","import { BaseAPI } from './baseAPI';\nimport { GroupMemberOptions } from './options/groupMemberOptions';\nimport { GroupMemberRequest } from './request/groupMemberRequest';\nimport { GroupMemberResponse } from './response/groupMemberResponse';\nimport AxiosInstance from './axiosInstanceService';\n\nexport class GroupMemberAPI extends BaseAPI<\n GroupMemberResponse,\n GroupMemberOptions,\n GroupMemberRequest\n> {\n constructor() {\n super('GroupMember');\n }\n\n public PostMemberList = (req: GroupMemberRequest) =>\n AxiosInstance.post(`${this.controllerPath}/list`, req);\n}\n","import { useState, useCallback, useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useForm, SubmitHandler, FormProvider } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as yup from 'yup';\nimport { toast } from 'react-toastify';\n// MUI\nimport {\n Autocomplete,\n Box,\n Collapse,\n Button,\n TextField,\n Typography,\n AutocompleteRenderInputParams,\n} from '@mui/material';\nimport {\n KeyboardArrowDownRounded,\n KeyboardArrowUpRounded,\n} from '@mui/icons-material';\n// Components\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\n// import { Colors } from 'src/shared/components/styles';\nimport EmployeeControlledSelected from 'src/shared/components/form/employeeControlledSelected';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\n// Services\nimport { GroupResponse } from 'src/shared/services/api/response/groupResponse';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { GroupMemberResponse } from 'src/shared/services/api/response/groupMemberResponse';\nimport { EmployeeAPI } from 'src/shared/services/api/employeeApi';\nimport { EmployeeResponse } from 'src/shared/services/api/response/employeeResponse';\nimport { GroupMemberAPI } from 'src/shared/services/api/groupMemberAPI';\nimport useDebounce from 'src/shared/components/atoms/useDebounce';\nimport { CompanyAPI } from 'src/shared/services/api/companyAPI';\nimport { CompanyResponse } from 'src/shared/services/api/response/companyResponse';\nimport { EmployeeOptions } from 'src/shared/services/api/options/employeeOptions';\nimport { UserTypeEnum } from 'src/shared/helpers/permissionHelper';\n\ntype AddGroupMembersModalType = {\n group: GroupResponse | undefined;\n members: GroupMemberResponse[];\n modalOpen: boolean;\n setShowModal: (arg: boolean) => void;\n fetchMembers: () => void;\n};\n\ntype GroupMemberish = {\n id?: number;\n groupId: number | string;\n employeeId: number;\n employees?: EmployeeResponse[];\n};\n\nconst MemberSchema: yup.SchemaOf = yup.object().shape({\n id: yup.number(),\n groupId: yup.number().required() || yup.string().required(),\n employeeId: yup.number().required(),\n employees: yup.array().of(yup.mixed()),\n});\n\nconst AddGroupMembersModal = (props: AddGroupMembersModalType) => {\n const { t } = useTranslation();\n const { group, members, fetchMembers, modalOpen, setShowModal } = props;\n\n // Local states\n const [loading, setLoading] = useState(false);\n const [showList, setShowList] = useState(false);\n const [searchText, setSearchText] = useState('');\n const [companyList, setCompanyList] = useState([]);\n const [selectedCompany, setSelectedCompany] =\n useState(null);\n const [employeeList, setEmployeeList] = useState([]);\n const [reqOptionsEmployee, setReqOptionsEmployee] = useState(\n {\n employeeNameFilter: undefined,\n companyId: undefined,\n pageIndex: 0,\n pageSize: 100,\n sortCol: undefined,\n sortDir: 'asc',\n includeDeleted: false,\n excludePermissionGroupIds: [UserTypeEnum.ExternalUser],\n },\n );\n\n const debouncedSearchTerm = useDebounce(searchText, 500);\n\n // Sök användare mot API\n useEffect(() => {\n setReqOptionsEmployee((prev: EmployeeOptions) => ({\n ...prev,\n employeeNameFilter:\n debouncedSearchTerm.length > 0 ? debouncedSearchTerm : undefined,\n }));\n }, [debouncedSearchTerm]);\n\n // Filtrera användarlistan på companyId\n useEffect(() => {\n setReqOptionsEmployee((prev: EmployeeOptions) => ({\n ...prev,\n companyId: selectedCompany?.id,\n }));\n }, [selectedCompany]);\n\n const formMethods = useForm({\n resolver: yupResolver(MemberSchema),\n defaultValues: {\n groupId: group?.id ?? 0,\n employeeId: 0,\n employees: [],\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n // ConsoleHelper.log('errors', errors);\n\n const formSubmit: SubmitHandler = async (\n data: GroupMemberResponse,\n ) => {\n const groupMemberApi = new GroupMemberAPI();\n ConsoleHelper.log('data', data);\n const employeeData: any = [];\n setLoading(true);\n if (data.employees) {\n data.employees.forEach(async (item) => {\n employeeData.push({ employeeId: item.id, groupId: data.groupId });\n });\n }\n try {\n await groupMemberApi.PostMemberList(employeeData);\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n setLoading(false);\n reset();\n fetchMembers();\n setShowModal(false);\n } catch (error) {\n ConsoleHelper.log('error post member::', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n setLoading(false);\n // reset();\n }\n };\n\n const fetchCompanyList = useCallback(async () => {\n const companyApi = new CompanyAPI();\n const companyOptions = {\n pageIndex: 0,\n pageSize: 300,\n sortCol: undefined,\n sortDir: 'asc',\n };\n try {\n const res = await companyApi.GetAll(companyOptions);\n setCompanyList(res.results ?? []);\n } catch (error) {\n ConsoleHelper.log(error ?? 'getCompanies: unkown error');\n setCompanyList([]);\n }\n }, []);\n\n const fetchEmployeeList = useCallback(async () => {\n setLoading(true);\n try {\n const employeeApi = new EmployeeAPI();\n const res = await employeeApi.GetAll(reqOptionsEmployee);\n if (res) {\n // Filtrerar bort existerande medlemmar - tar every id från employees som inte matchar en members employeeId\n const filteredRes = res?.results?.filter((e) => {\n return !members.find((m) => m.employeeId === e.id);\n });\n setEmployeeList(filteredRes ?? []);\n setLoading(false);\n }\n } catch (error) {\n ConsoleHelper.log('ERROR fetchEmployeeList::', error);\n setEmployeeList([]);\n setLoading(false);\n }\n }, [reqOptionsEmployee, members]);\n\n useEffect(() => {\n fetchCompanyList();\n fetchEmployeeList();\n }, [fetchCompanyList, fetchEmployeeList]);\n\n return (\n setShowModal(false)}\n title={\n \n {t('Add')} {t('members')}\n \n }\n content={\n <>\n {members?.length > 0 && (\n <>\n \n ) : (\n \n )\n }\n onClick={() => setShowList(!showList)}\n >\n {t('Show')} {t('members')}\n \n\n \n \n {members.map((m) => (\n \n {m.employee?.personName} ({m.employee?.company?.name})\n \n ))}\n \n \n \n )}\n \n setSelectedCompany(selectedOptions ?? null)\n }\n isOptionEqualToValue={(option, item) => option.id === item.id}\n getOptionLabel={(option: CompanyResponse) => option.name}\n renderOption={(propps, option) => (\n \n {option.name}\n \n )}\n renderInput={(params: AutocompleteRenderInputParams) => {\n return (\n \n );\n }}\n />\n \n
\n setSearchText(e.target.value)}\n />\n {\n setSelectedCompany(null);\n reset();\n setShowModal(false);\n }}\n saveDisabled={loading}\n showDeleteButton={false}\n />\n \n
\n \n }\n />\n );\n};\n\nexport default AddGroupMembersModal;\n","import { useState, useEffect, useCallback, useRef } from 'react';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\n// MUI\nimport {\n Divider,\n Grid,\n Box,\n Button,\n Typography,\n LinearProgress,\n} from '@mui/material';\nimport {\n GroupRounded,\n NotificationsOffOutlined,\n NotificationsActiveOutlined,\n} from '@mui/icons-material';\n// Components\nimport { Colors } from 'src/shared/components/styles';\nimport { Search } from 'src/shared/components/atoms/search';\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport PostCard from 'src/modules/groups/components/postCard';\nimport EmptyDataComponent from 'src/shared/components/organisms/emptyDataComponent';\nimport SkeletonCards from 'src/shared/components/skeletons/skeletonCards';\nimport { ActionButtons } from 'src/shared/components/atoms/actionButtons';\nimport { GenerateActionButtonIcons } from 'src/shared/components/atoms/generateActionButtonsIcons';\nimport NewContentInGroup from 'src/modules/groups/components/newContentInGroup';\nimport GroupMemberListModal from 'src/modules/groups/components/groupMemberListModal';\nimport GroupTagsListModal from 'src/modules/groups/components/groupTagsListModal';\nimport AppGroupMembersModal from 'src/modules/groups/components/addGroupMembersModal';\n// Services\nimport { IParams } from 'src/shared/interfaces/params';\nimport { GroupAPI } from 'src/shared/services/api/groupAPI';\nimport { PostAPI } from 'src/shared/services/api/postAPI';\nimport { PostResponse } from 'src/shared/services/api/response/postResponse';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { GroupMemberAPI } from 'src/shared/services/api/groupMemberAPI';\nimport { GroupMemberResponse } from 'src/shared/services/api/response/groupMemberResponse';\nimport { GroupResponse } from 'src/shared/services/api/response/groupResponse';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { PostOptions } from 'src/shared/services/api/options/postOptions';\nimport { useQuery } from 'src/shared/services/utils/reactHelpers';\nimport {\n getBusinessAreas,\n locationsTags,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\nimport useDebounce from 'src/shared/components/atoms/useDebounce';\nimport { EmployeeAPI } from 'src/shared/services/api/employeeApi';\nimport { EmployeeResponse } from 'src/shared/services/api/response/employeeResponse';\nimport { ParentCompanyEnum } from 'src/shared/enums/parentCompany.enum';\n\nconst GroupPage = () => {\n const { t } = useTranslation();\n const { id } = useParams();\n\n const query = useQuery();\n const history = useHistory();\n\n const [loadingPage, setLoadingPage] = useState(false);\n const [loadingPosts, setLoadingPosts] = useState(false);\n const [loadingMembers, setLoadingMembers] = useState(false);\n const [searchText, setSearchText] = useState('');\n const [group, setGroup] = useState();\n const [postData, setPostData] = useState([]);\n const [memberList, setMemberList] = useState<\n GroupMemberResponse[] | undefined\n >([]);\n const [matchingMembers, setMatchingMembers] = useState<\n EmployeeResponse[] | undefined\n >([]);\n const [totalMatchingMembers, setTotalMatchingMembers] = useState(0);\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const [showMembers, setShowMembers] = useState(false);\n const [showTags, setShowTags] = useState(false);\n const [showAddMembers, setShowAddMembers] = useState(false);\n const refs = useRef<(HTMLDivElement | null)[]>([]);\n\n // Paging\n const [pageIndex, setPageIndex] = useState(1);\n const [totalPages, setTotalPages] = useState();\n\n const debouncedSearchTerm = useDebounce(searchText, 500);\n\n const handleSearch = (e: React.ChangeEvent) => {\n setSearchText(e.target.value);\n };\n\n const fetchMatchingMembers = useCallback(async () => {\n setLoadingMembers(true);\n const tagIDs = group?.tags?.map((tag) => tag.id);\n const areaIDs = group?.businessAreaTags?.map((tag) => tag.id);\n try {\n const employeeApi = new EmployeeAPI();\n const requestOptions = {\n pageIndex: pageIndex - 1,\n pageSize: 10,\n companyId:\n group?.companyId === ParentCompanyEnum.InstalcoSE ||\n group?.companyId === ParentCompanyEnum.InstalcoNO\n ? undefined\n : group?.companyId,\n sortDir: 'desc',\n tags: tagIDs ?? undefined,\n businessAreaTags: areaIDs ?? undefined,\n includeDeleted: false,\n };\n const res = await employeeApi.GetAll(requestOptions);\n if (res?.results) {\n setMatchingMembers(res?.results ?? []);\n setTotalMatchingMembers(res?.totalItems ?? 0);\n setTotalPages(res?.totalPages);\n ConsoleHelper.log('RES matching members::', res.results);\n setLoadingMembers(false);\n }\n } catch (error) {\n ConsoleHelper.log('ERROR matching members::', error);\n setMatchingMembers([]);\n setTotalMatchingMembers(0);\n setLoadingMembers(false);\n }\n }, [group, pageIndex]);\n\n const fetchGroup = useCallback(async () => {\n setLoadingPage(true);\n try {\n const groupApi = new GroupAPI();\n const res = await groupApi.Get(id);\n if (res) {\n setGroup(res?.result);\n setLoadingPage(false);\n }\n } catch (error) {\n setLoadingPage(false);\n }\n }, [id]);\n\n const refetchGroup = async () => {\n try {\n const groupApi = new GroupAPI();\n const res = await groupApi.Get(id);\n if (res) {\n setGroup(res?.result);\n }\n } catch (error) {\n ConsoleHelper.log('ERROR refetch', error);\n }\n };\n\n const fetchPosts = useCallback(async () => {\n setLoadingPosts(true);\n try {\n const postApi = new PostAPI();\n const requestOptions: PostOptions = {\n filter: debouncedSearchTerm,\n sortDir: 'desc',\n sortCol: 'publishDate',\n groupId: id,\n pageSize: 3000,\n };\n const res = await postApi.GetAll(requestOptions);\n if (res) {\n setPostData(res?.results ?? []);\n setLoadingPosts(false);\n }\n } catch (error) {\n setPostData([]);\n setLoadingPosts(false);\n }\n }, [id, debouncedSearchTerm]);\n\n const fetchMemberList = useCallback(async () => {\n setLoadingMembers(true);\n try {\n const groupMemberApi = new GroupMemberAPI();\n const requestOptions = {\n sortDir: 'desc',\n groupId: id,\n };\n const res = await groupMemberApi.GetAll(requestOptions);\n if (res?.results) {\n setMemberList(res?.results ?? []);\n setLoadingMembers(false);\n }\n } catch (error) {\n ConsoleHelper.log('ERROR memberList::', error);\n setMemberList([]);\n setLoadingMembers(false);\n }\n }, [id]);\n\n useEffect(() => {\n fetchGroup();\n fetchPosts();\n fetchMemberList();\n }, [fetchGroup, fetchMemberList, fetchPosts]);\n\n useEffect(() => {\n fetchMatchingMembers();\n }, [fetchMatchingMembers, pageIndex]);\n\n const removeMember = async (value: GroupMemberResponse | undefined) => {\n ConsoleHelper.log('member to delete', value);\n const groupMemberApi = new GroupMemberAPI();\n setShowDeleteDialog(false);\n setLoadingMembers(true);\n try {\n await groupMemberApi.Delete({ id: value?.id });\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n await fetchMemberList();\n setLoadingMembers(false);\n } catch (err) {\n ConsoleHelper.log('ERR delete member', err);\n toast.error(t('SomethingWentWrong'));\n await fetchMemberList();\n setLoadingMembers(false);\n }\n };\n\n // Slå på/av notiser för gruppen\n const onPressNotificationSetting = async () => {\n const groupApi = new GroupAPI();\n if (group?.notificationsEnabled) {\n // Turn off notiser mot /Group/{id}/DisableNotifications\n try {\n await groupApi.DisableNotifications(group?.id);\n refetchGroup();\n } catch (err) {\n ConsoleHelper.log('ERROR disable notice', err);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n } else {\n // Turn on notiser mot /Group/{id}/EnableNotifications\n try {\n await groupApi.EnableNotifications(group?.id ?? 0);\n refetchGroup();\n } catch (err) {\n ConsoleHelper.log('ERROR enable notice', err);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n }\n };\n\n // Metod för att dela inlägg\n // Vid delning av inlägg skapar vi en länk .../GroupPage/{groupId}?scrollTo={postId}\n // Nedan letar upp referens för postId, scrollar dit och markerar inlägget med grå bakgrund 3 sek\n const scrollTo = query.get('scrollTo');\n if (scrollTo) {\n const scrollId = Number(scrollTo);\n const ref = refs.current[scrollId];\n if (ref) {\n ref.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n setTimeout(() => {\n history.replace({ search: '' });\n }, 3000);\n }\n }\n\n return (\n \n {loadingPage ? (\n \n ) : (\n <>\n \n \n {group?.private ? (\n setShowMembers(!showMembers)}\n startIcon={}\n variant='text'\n sx={{\n color: 'primary.main',\n justifyContent: 'flex-start',\n }}\n >\n {t('Show')} {t('members')}\n \n ) : (\n setShowTags(!showTags)}\n startIcon={}\n variant='text'\n sx={{\n color: 'primary.main',\n justifyContent: 'flex-start',\n }}\n >\n {t('Show')} {t('Permissions').toLowerCase()}\n \n )}\n {group?.notificationsEnabled ? (\n onPressNotificationSetting()}\n startIcon={}\n variant='text'\n sx={{\n color: 'primary.main',\n justifyContent: 'flex-start',\n }}\n >\n {t('TurnOffNotifications')}\n \n ) : (\n onPressNotificationSetting()}\n startIcon={}\n variant='text'\n sx={{\n color: 'primary.main',\n justifyContent: 'flex-start',\n }}\n >\n {t('TurnOnNotifications')}\n \n )}\n \n\n \n {group && group.description}\n \n \n handleSearch(e)}\n onClearText={() => setSearchText('')}\n />\n \n \n )}\n\n {loadingPosts && }\n <>\n \n {postData && postData.length > 0 ? (\n postData.map((item: PostResponse) => {\n const numberId = Number(item.id);\n return (\n \n {\n refs.current[numberId] = ref;\n }}\n sx={{\n position: 'absolute',\n top: '-80px',\n visibility: 'hidden',\n }}\n />\n \n \n );\n })\n ) : (\n \n )}\n \n\n \n {showMembers && (\n setShowDeleteDialog(arg)}\n setShowMembers={setShowMembers}\n setShowAddMembers={setShowAddMembers}\n removeMember={(member: GroupMemberResponse | undefined) =>\n removeMember(member)\n }\n loading={loadingMembers}\n />\n )}\n \n {showAddMembers && (\n fetchMemberList()}\n />\n )}\n \n }\n />\n );\n};\nexport default GroupPage;\n","// A custom hook that builds on useLocation to parse\n// the query string for you.\nimport React from 'react';\nimport { useLocation } from 'react-router-dom';\n\nexport const useQuery = () => {\n const { search } = useLocation();\n\n return React.useMemo(() => new URLSearchParams(search), [search]);\n};\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { Switch, FormControlLabel } from '@mui/material';\n\ntype IformInputProps = {\n name: string;\n label: string;\n};\n\nconst ControlledSwitch = (props: IformInputProps) => {\n const { control } = useFormContext();\n const { name, label } = props;\n return (\n (\n }\n key={label}\n label={label}\n />\n )}\n />\n );\n};\n\nexport default ControlledSwitch;\n","import { Controller, useFormContext } from 'react-hook-form';\nimport { FormLabel, RadioGroup, Radio, Tooltip } from '@mui/material';\n\ntype IformInputProps = {\n name: string;\n label: string;\n colorValues: string[];\n row?: boolean;\n};\n\nconst ControlledRadioColors = (props: IformInputProps) => {\n const { control } = useFormContext();\n const { name, label, row, colorValues } = props;\n return (\n <>\n {label}\n (\n \n {colorValues.map((value) => (\n \n \n \n ))}\n \n )}\n />\n \n );\n};\n\nControlledRadioColors.defaultProps = {\n row: true,\n};\n\nexport default ControlledRadioColors;\n","import * as yup from 'yup';\nimport { IGroup } from 'src/shared//interfaces/groups';\n\nexport const GroupSchema = (t: (n: string) => void): yup.SchemaOf => {\n return yup.object().shape({\n id: yup.number().required(),\n name: yup.string().required(`${t('titleRequired')}`),\n private: yup.boolean().required(),\n groupColor: yup.string().required(),\n createdByUserId: yup.string().required() || yup.number().required(),\n companyId: yup.string().required() || yup.number().required(),\n businessAreas: yup.array().of(yup.mixed()),\n locations: yup.array().of(yup.mixed()),\n roles: yup.array().of(yup.mixed()),\n description: yup.string(),\n businessAreaTags: yup.array().of(yup.mixed()),\n permissionGroupTags: yup.array().of(yup.mixed()),\n tags: yup.array().of(yup.number()) || yup.array().of(yup.mixed()),\n });\n};\n","import { useState } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { useForm, SubmitHandler, FormProvider } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { toast } from 'react-toastify';\nimport { Grid, Box } from '@mui/material';\n// Components\nimport { Colors } from 'src/shared/components/styles';\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledSwitch from 'src/shared/components/form/controlledSwitch';\nimport ControlledRadioColors from 'src/shared/components/form/controlledRadioColors';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\nimport InfoTooltip from 'src/shared/components/molecules/infoTooltip';\n// Services\nimport { RootStateType } from 'src/shared/services/redux/reducers/index';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport { GroupAPI } from 'src/shared/services/api/groupAPI';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { GroupSchema } from 'src/shared/schemas/groupSchema';\nimport { IGroup } from 'src/shared/interfaces/groups';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\n\nconst CreateGroupPage = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const { id } = useParams();\n\n // Global states\n const { userDetails, userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // Local states\n const [loading, setLoading] = useState(false);\n\n const groupColorValues = [\n Colors.GROUP_GRAPHITE,\n Colors.GROUP_ORANGE,\n Colors.GROUP_BEIGE,\n Colors.GROUP_DAWN,\n Colors.GROUP_YELLOW,\n Colors.GROUP_GREEN,\n Colors.GROUP_PURPLE,\n Colors.GROUP_MAROON,\n Colors.GROUP_PETROL,\n ];\n\n const formMethods = useForm({\n resolver: yupResolver(GroupSchema(t)),\n defaultValues: {\n id: 1,\n createdByUserId: userDetails?.id ?? 0,\n companyId: userCompany?.id ?? 0,\n name: '',\n description: '',\n private: false,\n groupColor: Colors.GROUP_GRAPHITE,\n businessAreaTags: [],\n locations: [],\n roles: [],\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n const formSubmit: SubmitHandler = async (data: IGroup) => {\n const groupApi = new GroupAPI();\n const newData = data;\n const businessAreasItags: BusinessAreaResponse[] = [];\n const Itags: TagsResponse[] = [];\n if (data?.locations) {\n data.locations.forEach((element) => {\n if (element) {\n Itags.push(element);\n }\n });\n }\n if (data?.roles) {\n data.roles.forEach((element) => {\n if (element) {\n Itags.push(element);\n }\n });\n }\n if (data?.businessAreaTags) {\n data.businessAreaTags.forEach((element) => {\n if (element) {\n businessAreasItags.push(element);\n }\n });\n }\n\n newData.tags = Itags;\n newData.businessAreaTags = businessAreasItags;\n setLoading(true);\n try {\n await groupApi.Create(newData);\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n setLoading(false);\n reset();\n history.push(`/GroupListPage/${id}`);\n } catch (error) {\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n setLoading(false);\n reset();\n ConsoleHelper.log('error create group::', error);\n }\n reset();\n };\n\n return (\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n reset()}\n linkTo={RoutesEnum.GroupListPage}\n saveDisabled={loading}\n showDeleteButton={false}\n />\n \n \n
\n
\n \n }\n />\n );\n};\nexport default CreateGroupPage;\n","import { useState, useEffect, useCallback } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\n// import { useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { useForm, SubmitHandler, FormProvider } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { toast } from 'react-toastify';\nimport { Grid, Box } from '@mui/material';\n// Components\nimport { Colors } from 'src/shared/components/styles';\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledSwitch from 'src/shared/components/form/controlledSwitch';\nimport ControlledRadioColors from 'src/shared/components/form/controlledRadioColors';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\nimport InfoTooltip from 'src/shared/components/molecules/infoTooltip';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport { GroupAPI } from 'src/shared/services/api/groupAPI';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { GroupResponse } from 'src/shared/services/api/response/groupResponse';\nimport {\n getBusinessAreas,\n // getBusinessAreas,\n locationsTags,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\nimport { IGroup } from 'src/shared/interfaces/groups';\nimport { GroupSchema } from 'src/shared/schemas/groupSchema';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\n// import { RootStateType } from 'src/shared/services/redux/reducers';\n\nconst EditGroupPage = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const { id } = useParams();\n\n // Global states\n // const { userDetails, userCompany } = useSelector(\n // (state: RootStateType) => state.authState,\n // );\n\n // Local states\n const [loading, setLoading] = useState(false);\n const [group, setGroup] = useState();\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n\n const formMethods = useForm({\n resolver: yupResolver(GroupSchema(t)),\n defaultValues: {\n name: '',\n description: '',\n private: false,\n groupColor: Colors.GROUP_GRAPHITE,\n createdByUserId: 0,\n companyId: 0,\n businessAreaTags: [],\n locations: [],\n roles: [],\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n const groupColorValues = [\n Colors.GROUP_GRAPHITE,\n Colors.GROUP_ORANGE,\n Colors.GROUP_BEIGE,\n Colors.GROUP_DAWN,\n Colors.GROUP_YELLOW,\n Colors.GROUP_GREEN,\n Colors.GROUP_PURPLE,\n Colors.GROUP_MAROON,\n Colors.GROUP_PETROL,\n ];\n\n const fetchGroup = useCallback(async () => {\n try {\n setLoading(true);\n const groupApi = new GroupAPI();\n const res = await groupApi.Get(id);\n setGroup(res?.result);\n reset({\n id: res?.result?.id,\n name: res?.result?.name,\n description: res?.result?.description,\n private: res?.result?.private,\n groupColor: res?.result?.groupColor,\n createdByUserId: res?.result?.createdByUserId,\n companyId: res?.result?.companyId,\n businessAreaTags: getBusinessAreas(res?.result?.businessAreaTags) ?? [],\n locations: locationsTags(res?.result?.tags ?? []),\n roles: rolesTags(res?.result?.tags ?? []),\n });\n setLoading(false);\n } catch (error) {\n setLoading(false);\n ConsoleHelper.log(error ?? 'Unkown error: fetchGroup');\n }\n }, [id, reset]);\n\n useEffect(() => {\n fetchGroup();\n }, [fetchGroup]);\n\n // Radera grupp mot API\n const deleteGroup = async (ID: string | number) => {\n setLoading(true);\n const groupApi = new GroupAPI();\n try {\n await groupApi.Delete({ id: ID });\n setLoading(false);\n setShowDeleteDialog(false);\n toast.success(t('Deleted!'), {\n theme: 'colored',\n });\n history.push(`/GroupListPage/30000`);\n } catch (error) {\n ConsoleHelper.log('ERROR deleteGroup', error);\n setShowDeleteDialog(false);\n setLoading(false);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n };\n\n const formSubmit: SubmitHandler = async (data: IGroup) => {\n const groupApi = new GroupAPI();\n ConsoleHelper.log('data', data);\n setLoading(true);\n const newData = data;\n const businessAreasItags: BusinessAreaResponse[] = [];\n const Itags: TagsResponse[] = [];\n if (data?.locations) {\n data.locations.forEach((element) => {\n if (element) {\n Itags.push(element);\n }\n });\n }\n if (data?.businessAreaTags) {\n data.businessAreaTags.forEach((element) => {\n if (element) {\n businessAreasItags.push(element);\n }\n });\n }\n if (data?.roles) {\n data.roles.forEach((element) => {\n if (element) {\n Itags.push(element);\n }\n });\n }\n newData.tags = Itags;\n newData.businessAreaTags = businessAreasItags;\n ConsoleHelper.log('newdata group', newData);\n try {\n await groupApi.Update(group?.id ?? '', newData);\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n setLoading(false);\n reset();\n history.push(`/GroupListPage/${id}`);\n } catch (error) {\n ConsoleHelper.log('error create group::', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n setLoading(false);\n reset();\n }\n reset();\n };\n\n return (\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n reset()}\n linkTo={RoutesEnum.GroupListPage}\n saveDisabled={loading}\n showDeleteButton\n onDelete={() => setShowDeleteDialog(true)}\n />\n \n \n
\n setShowDeleteDialog(true)}\n confirmButtonClick={() => deleteGroup(id)}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n
\n \n }\n />\n );\n};\nexport default EditGroupPage;\n","import { BaseAPI } from './baseAPI';\nimport { ImprovementOptions } from './options/improvementOptions';\nimport { ImprovementRequest } from './request/improvementRequest';\nimport { ImprovementResponse } from './response/improvementReponse';\nimport AxiosInstance from './axiosInstanceService';\n\nexport class ImprovementAPI extends BaseAPI<\n ImprovementResponse,\n ImprovementOptions,\n ImprovementRequest\n> {\n constructor() {\n super('Improvement');\n }\n\n public MarkActionAsDone = (id: number) =>\n AxiosInstance.put(`${this.controllerPath}/${id}/done`);\n}\n","import { Box, Button, Typography } from '@mui/material';\nimport { useForm, SubmitHandler, FormProvider } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport { useTranslation } from 'react-i18next';\nimport * as yup from 'yup';\nimport { SchemaOf } from 'yup';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { ImprovementAPI } from 'src/shared/services/api/improvementAPI';\nimport { toast } from 'react-toastify';\n\ninterface IProposal {\n name: string;\n description?: string;\n}\n\nexport const NewImprovementSchema: SchemaOf = yup.object().shape({\n name: yup.string().required('Rubrik måste anges'),\n description: yup.string().required('Beksrivning måste anges'),\n});\n\nexport const ProposalForm = () => {\n const { t } = useTranslation();\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n const formMethods = useForm({\n resolver: yupResolver(NewImprovementSchema),\n defaultValues: {\n name: '',\n description: '',\n },\n });\n\n const { handleSubmit, reset } = formMethods;\n\n const formSubmit: SubmitHandler = async (data: IProposal) => {\n const formData = {\n name: data.name,\n description: data.description,\n status: 0,\n private: true,\n companyId: userCompany?.id ?? 1,\n };\n ConsoleHelper.log('form data:', formData);\n const api = new ImprovementAPI();\n try {\n const res = await api.Create(formData);\n if (res) {\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n reset();\n }\n } catch (error) {\n ConsoleHelper.log('ERR', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n };\n\n return (\n \n \n
\n \n \n\n \n \n {t('ProposalFormHelperText')}\n \n \n {t('SendInProposal')}\n \n \n \n
\n
\n );\n};\n","import {\n DataGrid as MUIDataGrid,\n GridToolbar,\n GridColDef,\n GridSortModel,\n GridCallbackDetails,\n GridOverlay,\n GridToolbarContainer,\n GridToolbarColumnsButton,\n GridToolbarFilterButton,\n GridRowParams,\n} from '@mui/x-data-grid';\nimport { Box, CircularProgress, Paper, useMediaQuery } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport { useTranslation } from 'react-i18next';\nimport { Colors } from '../styles';\n\nexport type DataGridOptions = {\n loading: boolean;\n rowsPerPageOptions?: number[];\n totalRows: number;\n};\nexport type DataGridProps = {\n columns: GridColDef[];\n rows: T[];\n page: number;\n pageSize: number;\n dataGridOptions: DataGridOptions;\n checkboxSelection: boolean;\n onPageChange: (pageIndex: number) => void;\n onPageSizeChange: (pageSize: number) => void;\n onSortModelChange: (\n model: GridSortModel,\n details: GridCallbackDetails,\n ) => void | undefined;\n disableSelectionOnClick?: boolean;\n onRowClick?: (params: GridRowParams) => void;\n};\n\nfunction CustomMobileToolbar() {\n return (\n \n \n \n \n );\n}\nfunction CustomLoadingOverlay() {\n return (\n \n \n \n \n \n );\n}\n\nexport const DataGrid = (props: DataGridProps) => {\n const {\n columns,\n rows,\n page,\n pageSize,\n dataGridOptions: { loading, totalRows }, // rowsPerPageOptions not used\n checkboxSelection,\n onPageChange,\n onPageSizeChange,\n onSortModelChange,\n disableSelectionOnClick,\n onRowClick,\n } = props;\n\n const { t } = useTranslation();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n\n return (\n \n onPageChange(newPage)}\n onPageSizeChange={(newPageSize) => onPageSizeChange(newPageSize)}\n onSortModelChange={onSortModelChange}\n filterMode='server'\n sortingMode='server'\n disableColumnFilter\n disableSelectionOnClick={disableSelectionOnClick}\n onRowClick={onRowClick}\n // onFilterModelChange={(model, details) => {\n // ConsoleHelper.log('onFilterModelChange', model, details);\n // }}\n // isRowSelectable={() => false}\n localeText={{\n columnsPanelTextFieldPlaceholder: t('datagrid.columnsPanelTextField'),\n columnsPanelTextFieldLabel: t('datagrid.columnsPanelTextFieldLabel'),\n columnsPanelShowAllButton: t('datagrid.columnsPanelShowAllButton'),\n columnsPanelHideAllButton: t('datagrid.columnsPanelHideAllButton'),\n toolbarColumns: t('datagrid.toolbarColumns'),\n toolbarDensity: t('datagrid.toolbarDensity'),\n toolbarDensityLabel: t('datagrid.toolbarDensityLabel'),\n toolbarDensityCompact: t('datagrid.toolbarDensityCompact'),\n toolbarDensityStandard: t('datagrid.toolbarDensityStandard'),\n toolbarDensityComfortable: t('datagrid.toolbarDensityComfortable'),\n toolbarExport: t('datagrid.toolbarExport'),\n toolbarExportPrint: t('datagrid.toolbarExportPrint'),\n toolbarExportCSV: t('datagrid.toolbarExportCSV'),\n toolbarFilters: t('datagrid.toolbarFilters'),\n columnMenuSortAsc: t('datagrid.columnMenuSortAsc'),\n columnMenuSortDesc: t('datagrid.columnMenuSortDesc'),\n columnMenuHideColumn: t('datagrid.columnMenuHideColumn'),\n columnMenuShowColumns: t('datagrid.columnMenuShowColumns'),\n columnMenuLabel: t('datagrid.columnMenuLabel'),\n columnMenuFilter: t('datagrid.columnMenuFilter'),\n columnMenuUnsort: t('datagrid.columnMenuUnsort'),\n noRowsLabel: t('datagrid.noRowsLabel'),\n }}\n components={{\n LoadingOverlay: CustomLoadingOverlay,\n Toolbar: isMobile ? CustomMobileToolbar : GridToolbar,\n }}\n />\n \n );\n};\n\nDataGrid.defaultProps = {\n disableSelectionOnClick: false,\n onRowClick: undefined,\n};\n","export enum ProposalStatusEnum {\n New = 0,\n Approved = 10,\n Assigned = 20,\n Done = 30,\n Rejected = 40,\n}\n\nexport enum ProposalStatusColorEnum {\n DarkGray = 'New',\n Orange = 'Approved',\n Purple = 'Assigned',\n Green = 'Done',\n Red = 'Rejected',\n // DarkGray = 0,\n // Orange = 10,\n // Purple = 20,\n // Green = 30,\n // Red = 40,\n}\n\nexport enum ProposalEffortEnum {\n NotSet = 0,\n Low = 10,\n Medium = 20,\n High = 30,\n}\n\n// Not used now\nexport enum ProposalDeployEnum {\n NotSet = 0,\n No = 1,\n Yes = 2,\n Partially = 3,\n Unsure = 4,\n}\n","import { useState, useEffect, useCallback } from 'react';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { Colors } from 'src/shared/components/styles';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from 'react-router-dom';\nimport { useSelector } from 'react-redux';\n// MUI\nimport {\n // GridCallbackDetails,\n GridColDef,\n GridSortModel,\n} from '@mui/x-data-grid';\nimport { Box, Tab, Tabs, Typography, useMediaQuery } from '@mui/material';\nimport { TabContext, TabPanel } from '@mui/lab';\nimport { FiberManualRecord, PublicOutlined } from '@mui/icons-material';\nimport { useTheme } from '@mui/material/styles';\n// COMPONTENTS && SERVICES\n// import { Search } from 'src/shared/components/atoms/search';\n// import useDebounce from 'src/shared/components/atoms/useDebounce';\nimport {\n DataGrid,\n DataGridOptions,\n} from 'src/shared/components/organisms/dataGrid';\nimport {\n // ProposalEffortEnum,\n ProposalStatusColorEnum,\n // ProposalStatusEnum,\n} from 'src/shared/enums/proposals.enum';\nimport { ImprovementAPI } from 'src/shared/services/api/improvementAPI';\nimport { ImprovementResponse } from 'src/shared/services/api/response/improvementReponse';\nimport { ImprovementOptions } from 'src/shared/services/api/options/improvementOptions';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\n// import { RoutesEnum } from 'src/shared/enums/routes.enum';\n\ninterface ITab {\n ID: string;\n title: string;\n}\n\nconst ProposalDataGrid = () => {\n const { t } = useTranslation();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n\n const { userCompany, userDetails } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // const [searchText, setSearchText] = useState('');\n const [currentTab, setCurrentTab] = useState('1');\n const [data, setData] = useState(\n undefined,\n );\n\n const [requestOptions, setRequestOptions] = useState({\n pageIndex: 0,\n pageSize: 100,\n sortDir: 'asc',\n sortCol: 'id',\n private: true,\n includeDeleted: false,\n companyId:\n userDetails?.permissionGroup.id === 5 ? undefined : userCompany?.id,\n });\n\n // TODO: Sökfilter när det finns i API\n // const debouncedSearchTerm = useDebounce(searchText, 500);\n\n const columns: GridColDef[] = [\n {\n field: 'name',\n headerName: t('Proposal'),\n flex: isMobile ? 0.7 : 0.25,\n renderCell: (params) => (\n \n {params.row.name}\n \n ),\n },\n {\n field: 'company',\n headerName: t('Company'),\n flex: 0.2,\n hide: isMobile,\n renderCell: (params) => (\n \n {params.row.company?.name}\n \n ),\n },\n // {\n // field: 'createdByEmployee',\n // headerName: t('CreatedBy'),\n // flex: 0.2,\n // hide: isMobile,\n // renderCell: (params) => (\n // \n // {params.row.createdByEmployee?.personName}\n // \n // ),\n // },\n {\n field: 'ownerEmployee',\n headerName: t('Owner'),\n flex: 0.2,\n hide: isMobile,\n renderCell: (params) => (\n \n {params.row.ownerEmployee?.personName}\n \n ),\n },\n {\n field: 'nextActionEmployee',\n headerName: t('NextFollowup'),\n flex: 0.2,\n hide: isMobile,\n renderCell: (params) => (\n \n {params.row.nextActionEmployee?.personName}\n \n ),\n },\n {\n field: 'status',\n headerName: 'Status',\n flex: 0.2,\n renderCell: (params) => (\n <>\n {isMobile ? (\n value === params.row.status,\n ),\n }}\n />\n ) : (\n value === params.row.status,\n ),\n }}\n >\n {/* {t(ProposalStatusEnum[params.row.status])} */}\n {t(params.row.status)}\n \n )}\n \n ),\n },\n {\n field: 'effortLevel',\n headerName: t('Effort'),\n flex: 0.1,\n hide: isMobile,\n renderCell: (params) => (\n \n {/* {t(ProposalEffortEnum[params.row.estimatedEffort])} */}\n {t(params.row.effortLevel)}\n \n ),\n },\n {\n field: 'private',\n headerName: 'Global',\n flex: 0.1,\n hide: isMobile,\n renderCell: (params) => (\n <>{!params.row.private && }\n ),\n },\n ];\n\n const [dataGridOptions, setDataGridOptions] = useState({\n loading: false,\n rowsPerPageOptions: undefined,\n totalRows: 0,\n });\n\n const getData = useCallback(async () => {\n const api = new ImprovementAPI();\n try {\n const res = await api.GetAll(requestOptions);\n if (res) {\n setData(res.results);\n }\n } catch (error) {\n ConsoleHelper.log('ERR', error);\n }\n }, [requestOptions]);\n\n useEffect(() => {\n getData();\n }, [getData]);\n\n useEffect(() => {\n ConsoleHelper.log('requestOptions changed', requestOptions);\n }, [requestOptions]);\n\n // useEffect(() => {\n // // TODO: Filter måste fixas ifrån apiet..\n // setRequestOptions((prev) => ({\n // ...prev,\n // nameFilter:\n // debouncedSearchTerm.length > 0 ? debouncedSearchTerm : undefined,\n // }));\n // }, [debouncedSearchTerm]);\n\n // Byt sida\n const onPageChange = (newPage: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageIndex: newPage,\n }));\n };\n\n // Ändra antal per sida\n const onPageSizeChange = (size: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageSize: size,\n }));\n };\n\n const onSortModelChanged = (\n model: GridSortModel,\n // details: GridCallbackDetails,\n ) => {\n if (model.length > 0)\n setRequestOptions((prev) => ({\n ...prev,\n sortDir: model[0].sort as string,\n }));\n };\n\n const tabs = [\n {\n ID: '1',\n title:\n userDetails?.permissionGroup.id === 5\n ? t('LocalProposals')\n : `${t('Proposal')} ${userCompany?.name}`,\n },\n {\n ID: '2',\n title: `${t('Proposal')} Instalco group`,\n },\n ];\n\n // Toggla mellan lokala (private) och gobala (not private) förslag\n const handleChangeTab = (event: React.SyntheticEvent, newValue: string) => {\n setCurrentTab(newValue);\n setRequestOptions((prev) => ({\n ...prev,\n private: newValue === '1', // Tab 1 = lokala\n }));\n };\n\n return (\n <>\n {/* setSearchText(e.target.value)}\n onClearText={() => setSearchText('')}\n /> */}\n \n \n \n {tabs?.map((tab: ITab) => {\n return (\n \n );\n })}\n \n \n \n \n columns={columns}\n rows={data ?? []}\n dataGridOptions={dataGridOptions}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n onSortModelChange={onSortModelChanged}\n checkboxSelection={false}\n page={requestOptions.pageIndex ?? 0}\n pageSize={requestOptions.pageSize ?? 10}\n />\n \n \n \n columns={columns}\n rows={data ?? []}\n dataGridOptions={dataGridOptions}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n onSortModelChange={onSortModelChanged}\n checkboxSelection={false}\n page={requestOptions.pageIndex ?? 0}\n pageSize={requestOptions.pageSize ?? 10}\n />\n \n \n \n );\n};\n\nexport default ProposalDataGrid;\n","import { Grid, Box, Typography, Divider } from '@mui/material';\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport { useTranslation } from 'react-i18next';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\nimport { ProposalForm } from '../components/proposalForm';\nimport ProposalDataGrid from '../components/proposalDataGrid';\n\nconst ProposalListPage = () => {\n const { t } = useTranslation();\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n return (\n \n {t('ProposalInfoText')}\n \n {userCompany?.useImprovement === false ? (\n \n {t('InfoImprovementsDisabled')}\n \n ) : (\n \n )}\n \n {GetAdminPermission(0, 'proposals') && (\n \n \n \n \n \n )}\n \n }\n />\n );\n};\n\nexport default ProposalListPage;\n","import { Controller, useFormContext, useFormState } from 'react-hook-form';\nimport {\n FormLabel,\n Select,\n MenuItem,\n FormHelperText,\n useMediaQuery,\n} from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\n\nexport type ISelectItem = {\n value: number | string;\n label: string;\n};\n\ntype IformInputProps = {\n name: string;\n label?: string;\n placeholder?: string;\n selectItems: ISelectItem[];\n};\n\nconst ControlledSelect = (props: IformInputProps) => {\n const { control } = useFormContext();\n const { errors } = useFormState();\n const { name, label, selectItems, placeholder } = props;\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n\n let isError = false;\n let errorMessage = '';\n if (errors && Object.prototype.hasOwnProperty.call(errors, name)) {\n isError = true;\n errorMessage = errors[name].message;\n }\n\n return (\n <>\n {label && (\n {label}\n )}\n (\n <>\n field.onChange(item)}\n value={field.value ?? 0}\n size={isMobile ? 'small' : 'medium'}\n >\n {selectItems.map((item) => (\n \n {item.label}\n \n ))}\n \n \n {isError ? errorMessage : ''}\n \n \n )}\n />\n \n );\n};\nControlledSelect.defaultProps = {\n label: null,\n placeholder: null,\n};\nexport default ControlledSelect;\n","import { useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { toast } from 'react-toastify';\nimport dayjs from 'dayjs';\n// import dayjs from 'dayjs';\nimport { useForm, SubmitHandler, FormProvider } from 'react-hook-form';\n// import { yupResolver } from '@hookform/resolvers/yup';\nimport { useTranslation } from 'react-i18next';\n// import * as yup from 'yup';\n// import { SchemaOf } from 'yup';\n// Components\nimport { Box, Button } from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledSelect from 'src/shared/components/form/controlledSelect';\nimport ControlledDatePicker from 'src/shared/components/form/controlledDatePicker';\n// import ControlledSwitch from 'src/shared/components/form/controlledSwitch';\nimport EmployeeControlledSelected from 'src/shared/components/form/employeeControlledSelected';\nimport InfoTooltip from 'src/shared/components/molecules/infoTooltip';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { ImprovementResponse } from 'src/shared/services/api/response/improvementReponse';\nimport { EmployeeResponse } from 'src/shared/services/api/response/employeeResponse';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\n// import { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { ImprovementAPI } from 'src/shared/services/api/improvementAPI';\nimport {\n ProposalEffortEnum,\n ProposalStatusEnum,\n} from 'src/shared/enums/proposals.enum';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\n\n// TODO: Fixa schemat, fick inte till det //Sofie\n// export const ProposalSchema: SchemaOf = yup.object().shape({\n// status: yup.string().required('Status måste anges'),\n// ownerEmployee: yup.mixed(),\n// ownerEmployeeId: yup.number(),\n// // type: yup.string().required('Typ måste anges'),\n// effortLevel: yup.string(),\n// nextActionDate: yup.date() || yup.string(),\n// nextActionEmployee: yup.mixed(),\n// nextActionEmployeeID: yup.number(),\n// nextActionDescription: yup.string(),\n// private: yup.boolean(),\n// });\n\ninterface IProposal {\n name: string;\n description: string;\n status: string | number;\n ownerEmployee: EmployeeResponse | null;\n ownerEmployeeId: number | undefined;\n // type?: string;\n effortLevel: string | number;\n nextActionDate: string | Date | undefined;\n nextActionEmployee: EmployeeResponse | null;\n nextActionEmployeeID: number | undefined;\n nextActionDescription: string | undefined;\n private: boolean;\n}\n\ntype ProposalProps = {\n item: ImprovementResponse;\n employees: EmployeeResponse[] | undefined;\n employeesAction: EmployeeResponse[] | undefined;\n searchEmployeeOwner: (text: string) => void;\n searchEmployeeAction: (text: string) => void;\n getData: () => void;\n};\n\nexport const ProposalProcess = (props: ProposalProps) => {\n const {\n item,\n employees,\n employeesAction,\n searchEmployeeOwner,\n searchEmployeeAction,\n getData,\n } = props;\n const { t } = useTranslation();\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n const [showConfirmGlobalDialog, setShowConfirmGlobalDialog] = useState(false);\n const [showConfirmLocalDialog, setShowConfirmLocalDialog] = useState(false);\n\n const formMethods = useForm({\n // resolver: yupResolver(ProposalSchema),\n defaultValues: {\n name: '',\n description: '',\n status: 'New',\n ownerEmployee: null,\n ownerEmployeeId: 0,\n // type: item?.type ?? '',\n effortLevel: 'NotSet',\n nextActionDate: '',\n nextActionEmployee: null,\n nextActionEmployeeID: 0,\n nextActionDescription: '',\n private: true,\n },\n });\n\n const { handleSubmit, reset, control, formState } = formMethods;\n\n const formSubmit: SubmitHandler = async (data: IProposal) => {\n // TODO: Fixa Enum-tjafset nedan\n const statusEnum = Object.entries(ProposalStatusEnum).filter(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ([key, value]) => key === data.status,\n );\n const effortEnum = Object.entries(ProposalEffortEnum).filter(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ([key, value]) => key === data.effortLevel,\n );\n const updatedData = {\n name: data.name,\n description: data?.description,\n status: statusEnum[0][1],\n ownerEmployeeId: data.ownerEmployee?.id,\n effortLevel: effortEnum[0][1],\n nextActionDate: data.nextActionDate\n ? dayjs(data.nextActionDate).format('YYYY-MM-DD')\n : undefined,\n nextActionEmployeeID: data.nextActionEmployee?.id,\n nextActionDescription: data.nextActionDescription,\n private: data.private,\n companyId: userCompany?.id ?? 1,\n };\n ConsoleHelper.log('form data:', updatedData);\n const api = new ImprovementAPI();\n try {\n const res = await api.Update(item.id, updatedData);\n if (res) {\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n await getData();\n }\n } catch (error) {\n ConsoleHelper.log('ERR', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n reset();\n }\n };\n\n useEffect(() => {\n if (item) {\n reset({\n name: item?.name ?? '',\n description: item?.description ?? '',\n status: item?.status ?? 'New',\n ownerEmployee: item?.ownerEmployee ?? null,\n ownerEmployeeId: item?.ownerEmployeeId ?? 0,\n // type: item?.type ?? '',\n effortLevel: item?.effortLevel ?? 'Medium',\n nextActionDate: item?.nextActionDate ?? '',\n nextActionEmployee: item?.nextActionEmployee ?? null,\n nextActionEmployeeID: item?.nextActionEmployeeID ?? 0,\n nextActionDescription: item?.nextActionDescription ?? '',\n private: item?.private ?? true,\n });\n }\n }, [reset, getData]); // Tar jag bort \"item\" som dependency här slutar selects att strula\n\n // Visa dialog för att bekräfta lyfta globalt\n const handleMakeGlobal = () => {\n setShowConfirmGlobalDialog(true);\n };\n // Tar en kopia på det lokala förslaget och lägger i den globala listan\n const onConfirmGlobalImprovement = async () => {\n setShowConfirmGlobalDialog(false);\n const formData = {\n name: item.name,\n description: item.description,\n status: 0,\n private: false, // private false = globalt\n companyId: userCompany?.id ?? 1,\n };\n ConsoleHelper.log('form data:', formData);\n const api = new ImprovementAPI();\n try {\n const res = await api.Create(formData);\n if (res) {\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n reset();\n }\n } catch (error) {\n ConsoleHelper.log('ERR', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n };\n\n // Visa dialog för att bekräfta lyfta lokalt\n const handleMakeLocal = () => {\n setShowConfirmLocalDialog(true);\n };\n // Tar en kopia på det globala förslaget och lägger i användarens lokala lista\n const onConfirmLocalImprovement = async () => {\n setShowConfirmLocalDialog(false);\n const formData = {\n name: item.name,\n description: item.description,\n status: 0,\n private: true, // private true = lokalt\n companyId: userCompany?.id ?? 1,\n };\n ConsoleHelper.log('form data:', formData);\n const api = new ImprovementAPI();\n try {\n const res = await api.Create(formData);\n if (res) {\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n reset();\n }\n } catch (error) {\n ConsoleHelper.log('ERR', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n };\n\n const markFollowupAsDone = async () => {\n const api = new ImprovementAPI();\n try {\n await api.MarkActionAsDone(item.id);\n getData();\n reset();\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n } catch (err: any) {\n ConsoleHelper.log('ERR', err);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n };\n\n // const superAdminPermission = GetAdminPermission(\n // userCompany?.id,\n // 'SuperAdmin',\n // );\n\n return (\n \n \n
\n \n \n \n \n searchEmployeeOwner(e?.target?.value)}\n />\n {/* */}\n \n {/* {superAdminPermission && (\n \n \n \n \n )} */}\n {item?.private && (\n \n \n \n \n )}\n {!item?.private && (\n \n \n \n \n )}\n \n searchEmployeeAction(e?.target?.value)}\n />\n \n markFollowupAsDone()}\n variant='contained'\n disabled={!item?.nextActionEmployee}\n sx={{\n backgroundColor: Colors.ORANGE,\n color: 'white',\n marginTop: 2,\n }}\n >\n {t('SetActionAsDone')}\n \n \n {t('SaveChanges')}\n \n \n \n
\n setShowConfirmGlobalDialog(false)}\n confirmButtonClick={() => onConfirmGlobalImprovement()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n setShowConfirmLocalDialog(false)}\n confirmButtonClick={() => onConfirmLocalImprovement()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n
\n );\n};\n","import { Box, Typography } from '@mui/material';\nimport { PublicOutlined } from '@mui/icons-material';\nimport { useTranslation } from 'react-i18next';\nimport { ImprovementResponse } from 'src/shared/services/api/response/improvementReponse';\n\ntype ProposalProps = {\n item: ImprovementResponse;\n};\n\nexport const ProposalOverview = (props: ProposalProps) => {\n const { item } = props;\n const { t } = useTranslation();\n\n return (\n \n {t('Proposal')}\n \n {/* {item?.name} */}\n {item?.name} {!item?.private && }\n \n {t('Description')}\n \n {item?.description}\n \n {/* {t('CreatedBy')}\n \n {item?.createdByEmployee?.personName ?? '-'}\n */}\n {t('Company')}\n \n {item?.company?.name ?? '-'}\n \n \n );\n};\n","import React from 'react';\nimport { Box, Typography } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport dayjs from 'dayjs';\nimport { ImprovementResponse } from 'src/shared/services/api/response/improvementReponse';\n\ntype ProposalProps = {\n item: ImprovementResponse;\n};\n\nexport const ProposalLog = (props: ProposalProps) => {\n const { item } = props;\n const { t } = useTranslation();\n\n return (\n \n \n {t('LogInformation')}\n \n {item?.log?.map((loggy) => (\n \n \n {dayjs(loggy.created).format('YYYY-MM-DD HH:mm')}\n \n \n {t(loggy.actionKey)} {loggy?.employee.personName}\n \n \n ))}\n \n );\n};\n","import { useState } from 'react';\nimport { Button, Box, Divider } from '@mui/material';\nimport { AddRounded, KeyboardReturn, CloseOutlined } from '@mui/icons-material';\n// import { Colors } from 'src/shared/components/styles';\nimport { ControlledCommentInput } from 'src/shared/components/form/controlledCommentInput';\nimport { useForm, SubmitHandler, FormProvider } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as yup from 'yup';\nimport { SchemaOf } from 'yup';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { useTranslation } from 'react-i18next';\nimport { ImprovementResponse } from 'src/shared/services/api/response/improvementReponse';\n\ninterface IContentText {\n text: string;\n}\ntype ProposalProps = {\n item: ImprovementResponse;\n};\n\nconst ProposalNewNote = (props: ProposalProps) => {\n const { item } = props;\n\n const { t } = useTranslation();\n const [showInput, setShowInput] = useState(false);\n\n const ContentSchema: SchemaOf = yup.object().shape({\n text: yup.string().required(t('ErrorTypeBeforePost')),\n });\n\n const formMethods = useForm({\n resolver: yupResolver(ContentSchema),\n defaultValues: {\n text: '',\n },\n });\n\n const { handleSubmit, reset } = formMethods;\n\n const formSubmit: SubmitHandler = (data: IContentText) => {\n ConsoleHelper.log('POST content', data, item);\n // eslint-disable-next-line no-alert\n alert('Work i progress');\n reset();\n setShowInput(false);\n };\n\n return (\n \n {!showInput && (\n setShowInput(true)}\n startIcon={}\n >\n {t('NewNote')}\n \n )}\n {showInput && (\n \n
\n \n \n }\n >\n {t('Send')}\n \n }\n onClick={() => {\n reset();\n setShowInput(false);\n }}\n >\n {t('Cancel')}\n \n \n \n \n
\n )}\n \n );\n};\n\nexport default ProposalNewNote;\n","import { Box } from '@mui/material';\nimport ProposalNoteItem from 'src/modules/proposals/components/proposalNoteItem';\nimport ProposalNewNote from 'src/modules/proposals/components/proposalNewNote';\nimport { ImprovementResponse } from 'src/shared/services/api/response/improvementReponse';\n\ntype ProposalProps = {\n item: ImprovementResponse;\n};\n\nexport const ProposalNotes = (props: ProposalProps) => {\n const { item } = props;\n\n return (\n \n \n {/* {item?.notes?.map((note) => (\n \n ))} */}\n \n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { Link, useParams, useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { useTheme } from '@mui/material/styles';\nimport { Grid, Box, Tabs, Tab, useMediaQuery, Button } from '@mui/material';\nimport { TabContext, TabPanel } from '@mui/lab';\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { ProposalProcess } from 'src/modules/proposals/components/proposalProcess';\nimport { ProposalOverview } from 'src/modules/proposals/components/proposalOverview';\nimport { ProposalLog } from 'src/modules/proposals/components/proposalLog';\nimport { ProposalNotes } from 'src/modules/proposals/components/proposalNotes';\nimport { ImprovementResponse } from 'src/shared/services/api/response/improvementReponse';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { ImprovementAPI } from 'src/shared/services/api/improvementAPI';\nimport { EmployeeResponse } from 'src/shared/services/api/response/employeeResponse';\nimport { EmployeeAPI } from 'src/shared/services/api/employeeApi';\nimport { EmployeeOptions } from 'src/shared/services/api/options/employeeOptions';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport useDebounce from 'src/shared/components/atoms/useDebounce';\nimport { Colors } from 'src/shared/components/styles';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport { toast } from 'react-toastify';\nimport { UserTypeEnum } from 'src/shared/helpers/permissionHelper';\n\ninterface ITab {\n ID: string;\n title: string;\n}\n\nconst ProposalPage = () => {\n const { t } = useTranslation();\n const { id } = useParams();\n const history = useHistory();\n\n // Theme\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n // States\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n const [currentTab, setCurrentTab] = useState('1');\n const [item, setItem] = useState(undefined);\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n // Söksträng, options och data för employee controlled select x2\n const [employees, setEmployees] = useState(\n undefined,\n );\n const [employeesAction, setEmployeesAction] = useState<\n EmployeeResponse[] | undefined\n >(undefined);\n const [searchTextOwner, setSearchTextOwner] = useState('');\n const [searchTextAction, setSearchTextAction] = useState('');\n const [reqOptionsEmployee, setReqOptionsEmployee] = useState(\n {\n pageIndex: 0,\n pageSize: 100,\n sortDir: 'asc',\n sortCol: 'personName',\n companyId: item?.private ? userCompany?.id : undefined, // TODO: Ska vi skicka med filter för companyId bara om förslaget är lokalt?\n employeeNameFilter: undefined,\n includeDeleted: false,\n excludePermissionGroupIds: [UserTypeEnum.ExternalUser],\n },\n );\n const [reqOptionsEmployeeAction, setReqOptionsEmployeeAction] =\n useState({\n pageIndex: 0,\n pageSize: 100,\n sortDir: 'asc',\n sortCol: 'personName',\n companyId: item?.private ? userCompany?.id : undefined, // TODO: Ska vi skicka med filter för companyId bara om förslaget är lokalt?\n employeeNameFilter: undefined,\n includeDeleted: false,\n excludePermissionGroupIds: [UserTypeEnum.ExternalUser],\n });\n\n const debouncedSearchOwner = useDebounce(searchTextOwner, 300);\n const debouncedSearchAction = useDebounce(searchTextAction, 300);\n\n // Sök användare mot API\n useEffect(() => {\n setReqOptionsEmployee((prev: EmployeeOptions) => ({\n ...prev,\n employeeNameFilter:\n debouncedSearchOwner?.length > 0 ? debouncedSearchOwner : undefined,\n }));\n }, [debouncedSearchOwner]);\n useEffect(() => {\n setReqOptionsEmployeeAction((prev: EmployeeOptions) => ({\n ...prev,\n employeeNameFilter:\n debouncedSearchAction?.length > 0 ? debouncedSearchAction : undefined,\n }));\n }, [debouncedSearchAction]);\n\n const tabs = [\n {\n ID: '1',\n title: t('Overview'),\n },\n {\n ID: '2',\n title: t('Process'),\n },\n // {\n // ID: '3',\n // title: t('Notes'),\n // },\n {\n ID: '4',\n title: t('Log'),\n },\n ];\n\n const handleChange = (event: React.SyntheticEvent, newValue: string) => {\n setCurrentTab(newValue);\n };\n\n const getData = useCallback(async () => {\n const api = new ImprovementAPI();\n try {\n const res = await api.Get(id);\n if (res) {\n setItem(res.result);\n }\n } catch (error) {\n ConsoleHelper.log('ERR', error);\n }\n }, [id]);\n\n const getEmployeeList = useCallback(async () => {\n const employeeApi = new EmployeeAPI();\n try {\n const res = await employeeApi.GetAll(reqOptionsEmployee);\n if (res.results) {\n setEmployees(res.results);\n }\n } catch (error) {\n ConsoleHelper.log(error ?? 'getEmployees: unkown error');\n setEmployees([]);\n }\n }, [reqOptionsEmployee]);\n\n const getEmployeeListAction = useCallback(async () => {\n const employeeApi = new EmployeeAPI();\n try {\n const res = await employeeApi.GetAll(reqOptionsEmployeeAction);\n if (res.results) {\n setEmployeesAction(res.results);\n }\n } catch (error) {\n ConsoleHelper.log(error ?? 'getEmployees: unkown error');\n setEmployeesAction([]);\n }\n }, [reqOptionsEmployeeAction]);\n\n useEffect(() => {\n getData();\n getEmployeeList();\n getEmployeeListAction();\n }, [getData, getEmployeeList, getEmployeeListAction]);\n\n const onDeleteImprovement = async () => {\n ConsoleHelper.log('Radera förslag');\n const improvementApi = new ImprovementAPI();\n try {\n await improvementApi.deleteItemWithQueryID(item?.id ?? 0);\n setShowDeleteDialog(false);\n toast.success(t('Deleted!'), {\n theme: 'colored',\n });\n history.push(`/ProposalListpage/20000`);\n } catch (err) {\n setShowDeleteDialog(false);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n ConsoleHelper.log('ERROR Radera förslag', err);\n }\n };\n\n return (\n \n \n \n {item && (\n <>\n \n \n {tabs?.map((tab: ITab) => {\n return (\n \n );\n })}\n \n \n \n \n \n \n \n setSearchTextOwner(text)\n }\n searchEmployeeAction={(text: string) =>\n setSearchTextAction(text)\n }\n getData={getData}\n />\n \n \n \n \n \n \n \n \n )}\n \n \n \n \n {t('Cancel')}\n \n setShowDeleteDialog(true)}\n variant='contained'\n component='button'\n sx={{\n backgroundColor: Colors.ORANGE,\n color: Colors.WHITE,\n mr: { xs: 0, md: 1 },\n my: { xs: 1, md: 0 },\n width: { xs: '100%', md: 150 },\n }}\n >\n {t('Delete')}\n \n \n setShowDeleteDialog(false)}\n confirmButtonClick={() => onDeleteImprovement()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n }\n />\n );\n};\n\nexport default ProposalPage;\n","import {\n Table,\n TableBody,\n TableCell,\n TableContainer,\n // TableHead,\n TableRow,\n Typography,\n} from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\nimport { useTranslation } from 'react-i18next';\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\n\nimport { ContactResponse } from 'src/shared/services/api/response/contactResponse';\n\ntype ContactModalType = {\n item: ContactResponse | undefined;\n isOpen: boolean;\n onClose: () => void;\n};\n\nexport const ContactModal = (props: ContactModalType) => {\n const { t } = useTranslation();\n const { item, isOpen, onClose } = props;\n\n const getLabel = (key: string) => {\n let label = '';\n if (key === 'personName') label = 'Name';\n if (key === 'notes') label = 'notes';\n if (key === 'email') label = 'Email';\n if (key === 'address') label = 'Address';\n if (key === 'phone') label = 'Phone';\n if (key === 'businessAreas') label = 'Segment';\n if (key === 'company') label = 'Company';\n return t(label);\n };\n\n return (\n \n {t('contact')}\n \n }\n content={\n <>\n \n \n \n {item &&\n Object.entries(item).map(([key, value]) => {\n if (key === 'id' || key === 'companyId' || !value)\n return null;\n return (\n \n \n \n {getLabel(key)}\n \n \n {value}\n \n \n \n \n {value}\n \n \n \n );\n })}\n \n \n \n \n }\n />\n );\n};\n","import { BaseAPI } from './baseAPI';\nimport { ContactOptions } from './options/contactOptions';\nimport { ContactRequest } from './request/contactRequest';\nimport { ContactResponse } from './response/contactResponse';\n\nexport class ContactAPI extends BaseAPI<\n ContactResponse,\n ContactOptions,\n ContactRequest\n> {\n constructor() {\n super('Contact');\n }\n}\n","import * as yup from 'yup';\nimport { IContact } from '../interfaces/contact';\n\nexport const ContactSchema = (\n t: (n: string) => void,\n): yup.SchemaOf => {\n return yup.object().shape({\n companyId: yup.number() || yup.string(),\n personName: yup.string().required(`${t('NameRequired')}`),\n notes: yup.string(),\n email: yup.string(),\n address: yup.string(),\n phone: yup.string(),\n companyName: yup.string(),\n });\n};\n","import { useState } from 'react';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { Box, Typography } from '@mui/material';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\n// Components\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\nimport { ContactAPI } from 'src/shared/services/api/contactAPI';\nimport { ContactSchema } from 'src/shared/schemas/contactSchema';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\n// import { CompanyResponse } from 'src/shared/services/api/response/companyResponse';\n\ninterface IContactInputs {\n personName: string;\n notes: string;\n email: string;\n address: string;\n phone: string;\n companyName: string;\n}\ninterface Params {\n isOpen: boolean;\n onClose: () => void;\n fetchContactList: () => void;\n onCreateSuccess: () => void;\n onCreateFailed: () => void;\n}\nconst CreateContactModal = (props: Params) => {\n const { isOpen, onClose, fetchContactList, onCreateSuccess, onCreateFailed } =\n props;\n\n const { t } = useTranslation();\n\n // Global states\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n // Local states\n const [loading, setLoading] = useState(false);\n\n const formMethods = useForm({\n resolver: yupResolver(ContactSchema(t)),\n defaultValues: {\n personName: '',\n notes: '',\n email: '',\n address: '',\n phone: '',\n companyName: '',\n },\n });\n const { handleSubmit, reset } = formMethods;\n\n const formSubmit: SubmitHandler = async (\n data: IContactInputs,\n ) => {\n ConsoleHelper.log('form data', data);\n const dataToBeSent = {\n companyId: userCompany?.id?.toString(),\n company: data.companyName,\n personName: data.personName,\n notes: data.notes,\n email: data.email,\n address: data.address,\n phone: data.phone,\n };\n setLoading(true);\n try {\n const contactApi = new ContactAPI();\n await contactApi.Create(dataToBeSent);\n setLoading(false);\n fetchContactList();\n onClose();\n onCreateSuccess();\n reset();\n } catch (error) {\n setLoading(false);\n // onClose();\n onCreateFailed();\n // reset();\n ConsoleHelper.log('error create contact::', error);\n }\n };\n\n return (\n \n {t('newContact')}\n \n }\n content={\n <>\n \n \n
\n \n \n \n \n \n \n \n {\n reset();\n onClose();\n }}\n />\n \n \n
\n
\n \n }\n />\n );\n};\n\nexport default CreateContactModal;\n","import { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport { useState, useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\nimport { useMediaQuery } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport { Add, PersonRounded, Close } from '@mui/icons-material';\nimport {\n GridActionsCellItem,\n GridColumns,\n GridRowParams,\n GridSortModel,\n} from '@mui/x-data-grid';\n// Components\nimport { Search } from 'src/shared/components/atoms/search';\nimport { ActionButtons } from 'src/shared/components/atoms/actionButtons';\n// import { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport useDebounce from 'src/shared/components/atoms/useDebounce';\nimport { ContactModal } from 'src/modules/contact/components/contactModal';\nimport CreateContactModal from 'src/modules/contact/components/createContactModal';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport {\n DataGrid,\n DataGridOptions,\n} from 'src/shared/components/organisms/dataGrid';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { ContactAPI } from 'src/shared/services/api/contactAPI';\nimport { ContactResponse } from 'src/shared/services/api/response/contactResponse';\nimport { ContactOptions } from 'src/shared/services/api/options/contactOptions';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\n\nconst ContactListPage = () => {\n const { t } = useTranslation();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n // Local states\n const [data, setData] = useState([]);\n const [searchText, setSearchText] = useState('');\n const [isCreateModalOpen, setIsCreateModalOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n const [contactItem, setContactItem] = useState();\n const [isContactModalOpen, setIsContactModalOpen] = useState(false);\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const debouncedSearchTerm = useDebounce(searchText, 500);\n\n const contactActionButtons = [\n {\n ID: 1,\n icon: ,\n backgroundColor: 'primary.main',\n iconColor: 'white',\n buttonSize: 'small',\n // linkTo: RoutesEnum.ContactListPage,\n isButton: true,\n onClick: () => setIsCreateModalOpen(true),\n },\n ];\n\n const columns: GridColumns = [\n {\n field: 'company',\n headerName: t('Company'),\n flex: 0.3,\n hide: isMobile,\n },\n {\n field: 'personName',\n headerName: t('Name'),\n flex: isMobile ? 0.7 : 0.25,\n },\n { field: 'email', headerName: t('Email'), flex: 0.3, hide: isMobile },\n {\n field: 'phone',\n headerName: t('Phone'),\n flex: 0.2,\n hide: isMobile,\n },\n // {\n // field: 'competences',\n // headerName: t('Competences'),\n // flex: 0.2,\n // hide: isMobile,\n // },\n {\n field: 'actions',\n flex: 0.1,\n type: 'actions',\n align: 'right',\n disableColumnMenu: true,\n getActions: (params: GridRowParams) =>\n GetAdminPermission(0, 'contacts')\n ? [\n }\n onClick={() => {\n setContactItem(params.row as ContactResponse);\n setIsContactModalOpen(true);\n }}\n label={t('Show')}\n showInMenu\n />,\n }\n onClick={() => {\n setContactItem(params.row as ContactResponse);\n setShowDeleteDialog(true);\n }}\n label={t('Delete')}\n showInMenu\n />,\n ]\n : [\n }\n onClick={() => {\n setContactItem(params.row as ContactResponse);\n setIsContactModalOpen(true);\n }}\n label={t('Show')}\n showInMenu\n />,\n ],\n },\n ];\n // Toasts\n const onCreateSuccess = (contentText: string) => {\n toast.success(contentText, {\n theme: 'colored',\n });\n };\n\n const onCreateFailed = (contentText: string) => {\n toast.error(contentText, {\n theme: 'colored',\n });\n };\n const [requestOptions, setRequestOptions] = useState({\n pageIndex: 0,\n pageSize: 100,\n sortCol: 'company',\n sortDir: 'asc',\n });\n\n const [dataGridOptions, setDataGridOptions] = useState({\n loading: false,\n rowsPerPageOptions: undefined,\n totalRows: 0,\n });\n\n const getContactsList = useCallback(async () => {\n setDataGridOptions((prev) => ({\n ...prev,\n loading: true,\n }));\n const contactApi = new ContactAPI();\n try {\n const res = await contactApi.GetAll(requestOptions);\n setData(res.results ?? []);\n setDataGridOptions((prev) => ({\n ...prev,\n loading: false,\n totalRows: res.totalItems ?? 0,\n }));\n } catch (error) {\n ConsoleHelper.log(error ?? 'getContacts: unkown error');\n setData([]);\n setDataGridOptions((prev) => ({\n ...prev,\n loading: false,\n totalRows: 0,\n }));\n }\n }, [requestOptions]);\n\n useEffect(() => {\n getContactsList();\n }, [getContactsList]);\n\n useEffect(() => {\n ConsoleHelper.log('requestOptions changed', requestOptions);\n }, [requestOptions]);\n\n useEffect(() => {\n setRequestOptions((prev) => ({\n ...prev,\n nameFilter:\n debouncedSearchTerm.length > 0 ? debouncedSearchTerm : undefined,\n }));\n }, [debouncedSearchTerm]);\n\n // Byt sida\n const onPageChange = (newPage: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageIndex: newPage,\n }));\n };\n\n // Ändra antal per sida\n const onPageSizeChange = (size: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageSize: size,\n }));\n };\n\n // TODO: apiet accepterar inte sortCol: model[0].field,\n const onSortModelChanged = (model: GridSortModel) => {\n if (model.length > 0)\n setRequestOptions((prev) => ({\n ...prev,\n sortDir: model[0].sort as string,\n }));\n };\n\n // Radera nyhet mot API\n const removeContact = async () => {\n setLoading(true);\n try {\n const contactAPI = new ContactAPI();\n if (contactItem?.id !== undefined) {\n await contactAPI.deleteItemWithQueryID(Number(contactItem?.id));\n setLoading(false);\n setShowDeleteDialog(false);\n toast.success(t('Deleted!'), {\n theme: 'colored',\n });\n getContactsList();\n }\n } catch (error) {\n setLoading(false);\n setShowDeleteDialog(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n return (\n \n setSearchText(e.target.value)}\n onClearText={() => setSearchText('')}\n />\n <>\n \n columns={columns}\n rows={data}\n dataGridOptions={dataGridOptions}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n onSortModelChange={onSortModelChanged}\n checkboxSelection={false}\n page={requestOptions.pageIndex ?? 0}\n pageSize={requestOptions.pageSize ?? 10}\n />\n \n {GetAdminPermission(0, 'contacts') && (\n \n )}\n setIsCreateModalOpen(false)}\n fetchContactList={getContactsList}\n onCreateSuccess={() => onCreateSuccess(t('Done!'))}\n onCreateFailed={() => onCreateFailed(t('SomethingWentWrong'))}\n />\n setIsContactModalOpen(false)}\n item={contactItem}\n />\n setShowDeleteDialog(false)}\n confirmButtonClick={() => removeContact()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n }\n />\n );\n};\n\nexport default ContactListPage;\n","const ContactPage = () => {\n return (\n
\n
Contact Page - modal?
\n
\n );\n};\n\nexport default ContactPage;\n","import { useCallback, useEffect, useState } from 'react';\nimport { Box, Typography } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\nimport { useSelector } from 'react-redux';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as yup from 'yup';\n// Components\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\nimport { Colors } from 'src/shared/components/styles';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledSelect from 'src/shared/components/form/controlledSelect';\nimport ControlledRadioColors from 'src/shared/components/form/controlledRadioColors';\nimport BusinessAreaControlledSelect from 'src/shared/components/form/businessAreaControlledSelect';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport ControlledSwitch from 'src/shared/components/form/controlledSwitch';\nimport InfoTooltip from 'src/shared/components/molecules/infoTooltip';\n// Services\nimport { CompanyRequest } from 'src/shared/services/api/request/companyRequest';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { CompanyAPI } from 'src/shared/services/api/companyAPI';\nimport { DocumentAPI } from 'src/shared/services/api/documentAPI';\nimport { CompanyResponse } from 'src/shared/services/api/response/companyResponse';\nimport { locationsTags } from 'src/shared/helpers/filteredTags';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport ImageDropZone, {\n FileExtended,\n} from 'src/shared/components/form/imageDropZone';\nimport { TagsControlledSelected } from 'src/shared/components/form/tagsControlledSelected';\n\nconst countryCodes = [\n { value: 'SE', label: 'SE' },\n { value: 'NO', label: 'NO' },\n { value: 'FI', label: 'FI' },\n];\n\nconst groupColorValues = [\n Colors.COMPANY_PETROL,\n Colors.COMPANY_GREEN,\n Colors.COMPANY_BLUE,\n Colors.COMPANY_ORANGE_SOFT,\n Colors.COMPANY_RED,\n];\n\n// const CompanySchema: yup.SchemaOf = yup.object().shape({\nconst CompanySchema = yup.object().shape({\n name: yup.string().required('Namn måste anges'),\n color: yup.string().required('Färg måste anges'),\n country_CountryCode: yup.string() || yup.number(),\n defaultNewsListPage_ContentPageId: yup.string() || yup.number(),\n logo_DocumentId: yup.string().nullable() || yup.number().nullable(),\n parentCompany_CompanyId: yup.string() || yup.number(),\n businessAreaTags: yup.array().required().min(1, 'Välj minst ett segment'),\n tags: yup.array().required().min(1, 'Välj minst ett affärsområde'),\n useImprovement: yup.boolean().required(),\n});\ninterface ContentProps {\n item: CompanyResponse | undefined;\n isOpen: boolean;\n onClose: () => void;\n token: string | undefined;\n segments: BusinessAreaResponse[];\n}\nconst CompanyEditModal = (props: ContentProps) => {\n const { item, isOpen, onClose, segments } = props;\n const [loading, setLoading] = useState(false);\n const [logoImageFile, setLogoImageFile] = useState(); // Befintlig logga\n const [selectedFile, setSelectedFile] = useState(); // Logga som laddas upp\n const [openDialog, setOpenDialog] = useState(false);\n const { t } = useTranslation();\n const { tags } = useSelector((state: RootStateType) => state.tagsReducer);\n\n const formMethods = useForm({\n resolver: yupResolver(CompanySchema),\n defaultValues: {\n name: '',\n color: Colors.COMPANY_PETROL,\n businessAreaTags: [],\n logo_DocumentId: '',\n defaultNewsListPage_ContentPageId: 1,\n country_CountryCode: 'SE',\n parentCompany_CompanyId: 1,\n useImprovement: true,\n tags: [],\n },\n });\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n const getFeaturedImageFile = async (imageID: number | string) => {\n const documentApi = new DocumentAPI();\n try {\n const docRes = await documentApi.Get(imageID);\n if (docRes) {\n setLogoImageFile(docRes.result as File);\n }\n } catch (err) {\n ConsoleHelper.log('Error get doc', err);\n }\n };\n\n useEffect(() => {\n if (item) {\n ConsoleHelper.log('Company to edit', item);\n reset({\n name: item.name,\n color: item.color?.toUpperCase(),\n businessAreaTags: item.businessAreaTags,\n logo_DocumentId: item.logo_DocumentId,\n defaultNewsListPage_ContentPageId:\n item.defaultNewsListPage_ContentPageId,\n country_CountryCode: item.country_CountryCode,\n parentCompany_CompanyId: item.parentCompany_CompanyId,\n useImprovement: item?.useImprovement ?? true,\n tags: locationsTags(item?.tags),\n });\n if (item?.logo_DocumentId && item?.logo_DocumentId !== 0) {\n getFeaturedImageFile(item?.logo_DocumentId);\n }\n }\n }, [reset, item]);\n\n const formSubmit: SubmitHandler = async (\n data: CompanyRequest,\n ) => {\n // ConsoleHelper.log('company data on save', data, selectedFile);\n setLoading(true);\n const documentApi = new DocumentAPI();\n const newData = data;\n if (newData.country_CountryCode === 'SE') {\n // Företag med landskod SE ska ha Instalco SE (1) som moderbolag\n newData.parentCompany_CompanyId = 1;\n } else if (newData.country_CountryCode === 'NO') {\n // Företag med landskod NO ska ha Instalco NO (32) som moderbolag\n newData.parentCompany_CompanyId = 32;\n } else if (newData.country_CountryCode === 'FI') {\n // Företag med landskod FI ska ha Instalco SE (1) som moderbolag tillsvidare, eget moderbolag kommer senare\n newData.parentCompany_CompanyId = 1;\n }\n // Featured image\n if (!selectedFile) {\n newData.logo_DocumentId = undefined;\n } else if (selectedFile && !logoImageFile) {\n try {\n const formData = new FormData();\n formData.append('iD', '1');\n formData.append('description', '');\n formData.append('fileData', selectedFile);\n const resDoc = await documentApi.CreateFormData(formData);\n if (resDoc !== undefined || resDoc !== null) {\n newData.logo_DocumentId = resDoc?.id;\n }\n } catch (err) {\n ConsoleHelper.log('Error save featured image', err);\n }\n } else {\n ConsoleHelper.log('Logo image oförändrad');\n }\n try {\n const companyAPI = new CompanyAPI();\n await companyAPI.Update(Number(item?.id), newData);\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n setLoading(false);\n onClose();\n reset();\n } catch (error) {\n ConsoleHelper.log('ERR update company', error);\n toast.error(t('SomethingWentWrong'));\n setLoading(false);\n onClose();\n }\n };\n\n // Ändring av featured image\n const onFeaturedImageChange = useCallback(\n (file: FileExtended | undefined) => {\n if (!file?.id) setLogoImageFile(undefined); // Om filen som lagts tll inte har id är det en ny fil som ska sparas och initial fil tas bort\n if (file) {\n setSelectedFile(file);\n } else setSelectedFile(undefined);\n },\n [],\n );\n\n return (\n \n {t('editCompany')}\n \n }\n content={\n \n
\n \n \n\n \n \n \n \n \n \n \n \n\n \n {t('logotype')}\n \n \n \n \n {\n reset();\n onClose();\n }}\n />\n \n \n setOpenDialog(false)}\n confirmButtonClick={() => {\n setOpenDialog(false);\n }}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n
\n }\n />\n );\n};\n\nexport default CompanyEditModal;\n","/* eslint-disable camelcase */\nimport { useCallback, useState } from 'react';\nimport { Box, Typography } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\nimport { useSelector } from 'react-redux';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport * as yup from 'yup';\n// Components\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\nimport { Colors } from 'src/shared/components/styles';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledSelect from 'src/shared/components/form/controlledSelect';\nimport ControlledRadioColors from 'src/shared/components/form/controlledRadioColors';\nimport BusinessAreaControlledSelect from 'src/shared/components/form/businessAreaControlledSelect';\nimport ControlledSwitch from 'src/shared/components/form/controlledSwitch';\nimport InfoTooltip from 'src/shared/components/molecules/infoTooltip';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { CompanyRequest } from 'src/shared/services/api/request/companyRequest';\nimport { DocumentAPI } from 'src/shared/services/api/documentAPI';\nimport { CompanyAPI } from 'src/shared/services/api/companyAPI';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { locationsTags } from 'src/shared/helpers/filteredTags';\nimport ImageDropZone from 'src/shared/components/form/imageDropZone';\nimport { TagsControlledSelected } from 'src/shared/components/form/tagsControlledSelected';\n\nconst countryCodes = [\n { value: 'SE', label: 'SE' },\n { value: 'NO', label: 'NO' },\n { value: 'FI', label: 'FI' },\n];\n\nconst groupColorValues = [\n Colors.COMPANY_PETROL,\n Colors.COMPANY_GREEN,\n Colors.COMPANY_BLUE,\n Colors.COMPANY_ORANGE_SOFT,\n Colors.COMPANY_RED,\n];\n\n// Hur typa CompanyRequest rätt för att funka med schemat?\n// const CompanySchema: yup.SchemaOf = yup.object().shape({\nconst CompanySchema = yup.object().shape({\n name: yup.string().required('Namn måste anges'),\n color: yup.string().required('Färg måste anges'),\n country_CountryCode: yup.string() || yup.number(),\n defaultNewsListPage_ContentPageId: yup.string() || yup.number(),\n logo_DocumentId: yup.string() || yup.number(),\n parentCompany_CompanyId: yup.string() || yup.number(),\n businessAreaTags: yup.array().required().min(1, 'Välj minst ett segment'),\n tags: yup.array().required().min(1, 'Välj minst ett affärsområde'),\n useImprovement: yup.boolean().required(),\n});\n\ninterface ContentProps {\n isOpen: boolean;\n onClose: () => void;\n segments: BusinessAreaResponse[];\n}\nconst CompanyCreateModal = (props: ContentProps) => {\n const { isOpen, onClose, segments } = props;\n const { t } = useTranslation();\n\n // Global states\n const { tags } = useSelector((state: RootStateType) => state.tagsReducer);\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // Local states\n const [loading, setLoading] = useState(false);\n const [selectedFile, setSelectedFile] = useState();\n\n const formMethods = useForm({\n resolver: yupResolver(CompanySchema),\n defaultValues: {\n name: '',\n color: Colors.COMPANY_PETROL,\n businessAreaTags: [],\n logo_DocumentId: '',\n defaultNewsListPage_ContentPageId: 1, // TODO: Vad ska det vara för id?\n country_CountryCode: 'SE',\n parentCompany_CompanyId: userCompany?.parentCompany_CompanyId\n ? userCompany?.parentCompany_CompanyId.toString()\n : '1',\n useImprovement: true,\n tags: [],\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n const formSubmit: SubmitHandler = async (\n data: CompanyRequest,\n ) => {\n setLoading(true);\n const companyData = data;\n if (companyData.country_CountryCode === 'SE') {\n // Företag med landskod SE ska ha Instalco SE (1) som moderbolag\n companyData.parentCompany_CompanyId = 1;\n } else if (companyData.country_CountryCode === 'NO') {\n // Företag med landskod NO ska ha Instalco NO (32) som moderbolag\n companyData.parentCompany_CompanyId = 32;\n } else if (companyData.country_CountryCode === 'FI') {\n // Företag med landskod FI ska ha Instalco SE (1) som moderbolag tillsvidare, eget moderbolag kommer senare\n companyData.parentCompany_CompanyId = 1;\n }\n if (selectedFile) {\n try {\n const formData = new FormData();\n formData.append('iD', '0');\n formData.append('description', '');\n formData.append('documentListId', '1');\n formData.append('fileData', selectedFile);\n const documentApi = new DocumentAPI();\n const resDoc = await documentApi.CreateFormData(formData);\n if (resDoc) {\n companyData.logo_DocumentId = resDoc?.id;\n }\n } catch (err) {\n ConsoleHelper.log('error Createlogo_DocumentId mot DocumentAPI', err);\n }\n }\n try {\n const companyAPI = new CompanyAPI();\n await companyAPI.Create(companyData);\n reset();\n onClose();\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n } catch (error) {\n ConsoleHelper.log('error CreateFormData mot DocumentAPI', error);\n onClose();\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n // Ändring av featured image\n const onFeaturedImageChange = useCallback((file: File | undefined) => {\n if (file) {\n setSelectedFile(file);\n } else setSelectedFile(undefined);\n }, []);\n\n return (\n \n {t('CreateCompany')}\n \n }\n content={\n \n
\n \n \n\n \n \n \n \n \n \n \n \n \n {t('logotype')}\n \n \n \n \n {\n reset();\n onClose();\n }}\n />\n \n \n
\n }\n />\n );\n};\n\nexport default CompanyCreateModal;\n","import { useState, useEffect, useCallback } from 'react';\nimport { Link } from 'react-router-dom';\nimport { toast } from 'react-toastify';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\n// MUI\nimport { useMediaQuery, Typography } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport {\n PeopleAltRounded,\n EditRounded,\n CloseRounded,\n Add,\n} from '@mui/icons-material';\nimport {\n GridActionsCellItem,\n GridColumns,\n GridRowParams,\n GridSortModel,\n} from '@mui/x-data-grid';\n// Components\nimport {\n DataGrid,\n DataGridOptions,\n} from 'src/shared/components/organisms/dataGrid';\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport { Search } from 'src/shared/components/atoms/search';\nimport { ActionButtons } from 'src/shared/components/atoms/actionButtons';\nimport useDebounce from 'src/shared/components/atoms/useDebounce';\nimport CompanyEditModal from 'src/modules/company/components/companyEditModal';\nimport CompanyCreateModal from 'src/modules/company/components/companyCreateModal';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\n// Services\nimport { CompanyOptions } from 'src/shared/services/api/options/companyOptions';\nimport { CompanyResponse } from 'src/shared/services/api/response/companyResponse';\nimport { CompanyAPI } from 'src/shared/services/api/companyAPI';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport {\n getBusinessAreas,\n locationsTags,\n} from 'src/shared/helpers/filteredTags';\nimport { getBusinessAreasAction } from 'src/shared/services/redux/actions/businessAreasAction';\nimport { getTagsAction } from 'src/shared/services/redux/actions/tagsActions';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { GetAdminPermission } from 'src/shared/helpers/permissionHelper';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\n\ninterface IGridColumns extends GridColumns {\n onChange?: () => void;\n}\nconst CompanyListPage = () => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n\n // Global states\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n const { businessAreas } = useSelector(\n (state: RootStateType) => state.businessAreaReducer,\n );\n\n // Local states\n const [searchText, setSearchText] = useState('');\n const [isCompanyModalOpen, setCompanyModalOpen] = useState(false);\n const [openDialog, setOpenDialog] = useState(false);\n const [createCompanyModalOpen, setCreateCompanyModalOpen] = useState(false);\n const [companyItem, setCompanyItem] = useState();\n const [data, setData] = useState([]);\n const [itemdToBeDeleted, setitemdToBeDeleted] = useState<\n CompanyResponse | undefined\n >();\n const [dataGridOptions, setDataGridOptions] = useState({\n loading: false,\n rowsPerPageOptions: undefined,\n totalRows: 0,\n });\n const [requestOptions, setRequestOptions] = useState({\n nameFilter: undefined,\n pageIndex: 0,\n pageSize: 100,\n sortCol: 'name',\n sortDir: 'asc',\n });\n const debouncedSearchTerm = useDebounce(searchText, 500);\n\n const onEditCompanyClick = (item: CompanyResponse) => {\n setCompanyItem(item);\n setCompanyModalOpen(true);\n };\n\n const companyActionButtons = [\n {\n ID: 1,\n icon: ,\n backgroundColor: 'primary.main',\n iconColor: 'white',\n buttonSize: 'small',\n isButton: true,\n onClick: () => setCreateCompanyModalOpen(true),\n },\n ];\n\n const columns: IGridColumns = [\n {\n field: 'name',\n headerName: t('Name'),\n flex: isMobile ? 0.7 : 0.4,\n },\n {\n field: 'country_CountryCode',\n headerName: t('CountryCode'),\n flex: 0.15,\n hide: isMobile,\n },\n {\n field: 'businessAreas',\n headerName: t('Segment'),\n flex: 0.4,\n hide: isMobile,\n renderCell: (params) => (\n <>\n {params.row.businessAreaTags &&\n params.row.businessAreaTags.map(\n (segment: BusinessAreaResponse, index: number) => {\n return (\n \n {segment.name}\n {index + 1 !== params.row.businessAreaTags?.length\n ? ' | '\n : ''}\n \n );\n },\n )}\n \n ),\n },\n {\n field: 'tags',\n headerName: t('Areas'),\n flex: 0.4,\n hide: isMobile,\n renderCell: (params) => (\n <>\n {locationsTags(params.row.tags).map(\n (tag: TagsResponse, index: number) => {\n return (\n \n {tag.name}\n {index + 1 !== locationsTags(params.row.tags)?.length\n ? ' | '\n : ''}\n \n );\n },\n )}\n \n ),\n },\n {\n field: 'actions',\n flex: 0.1,\n type: 'actions',\n align: 'right',\n disableColumnMenu: true,\n getActions: (params: GridRowParams) =>\n GetAdminPermission(0, 'company')\n ? [\n }\n label={t('Users')}\n component={Link}\n // to={`/EmployeeListPage/${params.row.id}`}\n to={{\n pathname: `/EmployeeListPage/60000`,\n state: { itemId: params.row.id, itemName: params.row.name },\n }}\n showInMenu\n />,\n }\n onClick={() =>\n onEditCompanyClick(params.row as CompanyResponse)\n }\n label={t('Edit')}\n showInMenu\n />,\n }\n onClick={() => {\n setitemdToBeDeleted(params.row as CompanyResponse);\n setOpenDialog(true);\n }}\n label={t('Delete')}\n showInMenu\n />,\n ]\n : [],\n },\n ];\n\n const getCompanies = useCallback(async () => {\n setDataGridOptions((prev) => ({\n ...prev,\n loading: true,\n }));\n const companyApi = new CompanyAPI();\n try {\n const res = await companyApi.GetAll(requestOptions);\n setData(res.results ?? []);\n setDataGridOptions((prev) => ({\n ...prev,\n loading: false,\n totalRows: res.totalItems ?? 0,\n }));\n } catch (error) {\n ConsoleHelper.log(error ?? 'getCompanies: unkown error');\n setData([]);\n setDataGridOptions((prev) => ({\n ...prev,\n loading: false,\n totalRows: 0,\n }));\n }\n }, [requestOptions]);\n // Radera nyhet mot API\n const deleteCompany = async () => {\n try {\n const companyApi = new CompanyAPI();\n await companyApi.deleteItemWithQueryID(Number(itemdToBeDeleted?.id));\n setOpenDialog(false);\n toast.success(t('Deleted!'), {\n theme: 'colored',\n });\n getCompanies();\n } catch (error) {\n setOpenDialog(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n useEffect(() => {\n dispatch(getBusinessAreasAction());\n dispatch(getTagsAction(userCompany?.id ?? undefined));\n getCompanies();\n }, [dispatch, getCompanies, userCompany]);\n\n useEffect(() => {\n ConsoleHelper.log('requestOptions changed', requestOptions);\n }, [requestOptions]);\n\n // Uppdatera requestOptions vid ökning\n useEffect(() => {\n setRequestOptions((prev) => ({\n ...prev,\n nameFilter:\n debouncedSearchTerm.length > 0 ? debouncedSearchTerm : undefined,\n }));\n }, [debouncedSearchTerm]);\n\n // Byt sida\n const onPageChange = (newPage: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageIndex: newPage,\n }));\n };\n\n // Ändra antal per sida\n const onPageSizeChange = (size: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageSize: size,\n }));\n };\n\n const onSortModelChanged = (\n model: GridSortModel,\n // details: GridCallbackDetails,\n ) => {\n if (model.length > 0)\n setRequestOptions((prev) => ({\n ...prev,\n sortCol: model[0].field,\n sortDir: model[0].sort as string,\n }));\n };\n const actionButtonPermission = GetAdminPermission(0, 'company');\n\n return (\n \n setSearchText(e.target.value)}\n onClearText={() => setSearchText('')}\n />\n <>\n \n columns={columns}\n rows={data}\n dataGridOptions={dataGridOptions}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n onSortModelChange={onSortModelChanged}\n checkboxSelection={false}\n page={requestOptions.pageIndex ?? 0}\n pageSize={requestOptions.pageSize ?? 10}\n />\n \n {actionButtonPermission && (\n \n )}\n {\n setCompanyModalOpen(false);\n getCompanies();\n }}\n item={companyItem}\n token={user?.access_token}\n segments={getBusinessAreas(businessAreas)}\n />\n {\n setCreateCompanyModalOpen(false);\n getCompanies();\n }}\n segments={getBusinessAreas(businessAreas)}\n />\n setOpenDialog(false)}\n confirmButtonClick={() => deleteCompany()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n }\n />\n );\n};\n\nexport default CompanyListPage;\n","const CompanyPage = () => {\n return (\n
\n
Company page - modal?
\n
\n );\n};\n\nexport default CompanyPage;\n","import { useState, useCallback, useEffect } from 'react';\nimport {\n Box,\n LinearProgress,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableRow,\n Typography,\n} from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\nimport { useTranslation } from 'react-i18next';\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\nimport { EmployeeResponse } from 'src/shared/services/api/response/employeeResponse';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { EmployeeAPI } from 'src/shared/services/api/employeeApi';\nimport {\n competencesTags,\n locationsTags,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\nimport UserAvatar from 'src/shared/components/atoms/userAvatar';\n\ntype EmployeeModalType = {\n item: EmployeeResponse | undefined;\n isOpen: boolean;\n onClose: () => void;\n};\n\nexport const EmployeeModal = (props: EmployeeModalType) => {\n const { t } = useTranslation();\n const { item, isOpen, onClose } = props;\n\n const [loading, setLoading] = useState(false);\n const [employee, setEmployee] = useState(\n undefined,\n );\n\n const getEmployeeDetails = useCallback(async () => {\n try {\n const employeeApi = new EmployeeAPI();\n setLoading(true);\n const res = await employeeApi.Get(item?.id ?? 0);\n setEmployee(res?.result);\n ConsoleHelper.log('res?.result employee', res?.result);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n ConsoleHelper.log('error getEmployeeDetails in modal', error);\n }\n }, [item]);\n\n useEffect(() => {\n getEmployeeDetails();\n }, [getEmployeeDetails]);\n\n return (\n \n \n \n {employee?.personName}\n \n \n }\n content={\n <>\n {loading && }\n \n \n {employee && (\n \n {/* \n \n \n {t('Name')}\n \n \n {employee.personName}\n */}\n \n \n \n {t('Email')}\n \n \n {employee.email}\n \n \n \n \n {t('Address')}\n \n \n {employee.address}\n \n \n \n \n {t('Phone')}\n \n \n {employee.phone}\n \n \n \n \n {t('Company')}\n \n \n {employee.company?.name}\n \n \n \n \n {t('notes')}\n \n \n {employee.notes}\n \n \n \n \n {t('Permission')}\n \n \n {employee.permissionGroup?.name}\n \n \n \n \n {t('BusinessAreas')}\n \n \n \n {locationsTags(employee.tags)?.map(\n (tag) => `${tag.name}, `,\n )}\n \n \n \n \n \n {t('Roles')}\n \n \n \n {rolesTags(employee.tags)?.map((tag) => `${tag.name}, `)}\n \n \n \n \n \n {t('Competences')}\n \n \n \n {competencesTags(employee.tags)?.map(\n (tag) => `${tag.name}, `,\n )}\n \n \n \n )}\n \n \n \n }\n />\n );\n};\n","import { Controller, useFormContext, useFormState } from 'react-hook-form';\nimport { TextField, Autocomplete, Box } from '@mui/material';\nimport { CompanyResponse } from 'src/shared/services/api/response/companyResponse';\n\ntype IformInputProps = {\n name: string;\n label?: string;\n selectItems: CompanyResponse[];\n helperText?: string | undefined;\n multiple?: boolean;\n rows?: number;\n fullWidth?: boolean;\n placeholder?: string;\n};\n\nconst ControlledCompanySelect = (Iprops: IformInputProps) => {\n const {\n helperText,\n multiple,\n rows,\n fullWidth,\n placeholder,\n name,\n label,\n selectItems,\n } = Iprops;\n const { control } = useFormContext();\n const { errors } = useFormState();\n\n let isError = false;\n let errorMessage = '';\n if (errors && Object.prototype.hasOwnProperty.call(errors, name)) {\n isError = true;\n errorMessage = errors[name].message;\n }\n return (\n {\n return (\n {\n onChange(selectedOptions);\n }}\n isOptionEqualToValue={(option, item) => option.id === item.id}\n getOptionLabel={(option: CompanyResponse) =>\n `${option.name} (${option.country_CountryCode})`\n }\n renderOption={(props, option) => (\n \n {option.name} ({option.country_CountryCode})\n \n )}\n renderInput={(params) => {\n return (\n \n );\n }}\n />\n );\n }}\n />\n );\n};\nControlledCompanySelect.defaultProps = {\n label: null,\n};\nexport default ControlledCompanySelect;\n","import { Controller } from 'react-hook-form';\nimport { TextField, Autocomplete, Box } from '@mui/material';\nimport { PermissionGroupResponse } from 'src/shared/services/api/response/permissionsResponse';\n\ntype IformInputProps = {\n name: string;\n label: string;\n selectItems: PermissionGroupResponse[];\n helperText?: string | undefined;\n type: string;\n multiple?: boolean;\n rows?: number;\n fullWidth?: boolean;\n placeholder?: string;\n control?: any;\n errors?: any;\n};\n\nconst PermissionsControlledSelect = (Iprops: IformInputProps) => {\n const {\n helperText,\n multiple,\n rows,\n type,\n fullWidth,\n placeholder,\n name,\n control,\n errors,\n label,\n selectItems,\n } = Iprops;\n // const { t } = useTranslation();\n\n let isError = false;\n let errorMessage = '';\n if (errors && Object.prototype.hasOwnProperty.call(errors, name)) {\n isError = true;\n errorMessage = errors[name].message;\n }\n\n return (\n {\n return (\n option.name}\n isOptionEqualToValue={(option, item) => option.id === item.id}\n onChange={(event, selectedOptions) => {\n onChange(selectedOptions);\n }}\n // autoSelect\n renderOption={(props, option) => (\n \n {option.name}\n \n )}\n renderInput={(params) => {\n return (\n \n );\n }}\n />\n );\n }}\n />\n );\n};\n\nexport default PermissionsControlledSelect;\n","import * as yup from 'yup';\n\nexport const UserSchema = yup.object().shape({\n email: yup.string().email().required('E-post måste fyllas'),\n password: yup\n .string()\n .min(6, 'Lösenord får inte vara mindre än sex karaktarer')\n .max(8, 'Lösenord får inte vara mer än åtta karaktarer')\n .required('Lösenord måste fyllas'),\n});\n\nexport const EmployeeSchema = yup.object().shape({\n personName: yup.string().required('Namn måste fyllas i'),\n notes: yup.string(),\n email: yup.string().email().required('Mejl måste fyllas i'),\n address: yup.string(),\n phone: yup.string(),\n competences: yup.mixed(),\n companyId: yup.number(),\n company: yup.mixed().required('Företag måste väljas'),\n businessAreas: yup.mixed(),\n permissionGroup: yup.mixed(),\n});\n","import { useEffect, useState } from 'react';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { Box, LinearProgress, Typography } from '@mui/material';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useDispatch, useSelector } from 'react-redux';\n// Components\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\nimport ControlledCompanySelect from 'src/shared/components/form/controlledCompanySelect';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport PermissionsControlledSelect from 'src/shared/components/form/permissionsControlledSelect';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { EmployeeAPI } from 'src/shared/services/api/employeeApi';\nimport { CompanyResponse } from 'src/shared/services/api/response/companyResponse';\nimport { EmployeeSchema } from 'src/shared/schemas/userSchema';\nimport { getTagsAction } from 'src/shared/services/redux/actions/tagsActions';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { PermissionGroupResponse } from 'src/shared/services/api/response/permissionsResponse';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport {\n competencesTags,\n getPermissionsGroups,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\nimport InfoTooltip from 'src/shared/components/molecules/infoTooltip';\nimport { UserTypeEnum } from 'src/shared/helpers/permissionHelper';\nimport { TagsControlledSelected } from 'src/shared/components/form/tagsControlledSelected';\n\ninterface IformInputs {\n personName: string;\n notes: string;\n email: string;\n address: string;\n phone: string;\n company: CompanyResponse;\n competences: TagsResponse[];\n roles: TagsResponse[];\n tags: TagsResponse[];\n permissionGroup: PermissionGroupResponse;\n}\ninterface Params {\n isOpen: boolean;\n onClose: () => void;\n onCreateSuccess: () => void;\n onCreateFailed: () => void;\n companies: CompanyResponse[];\n permissions: PermissionGroupResponse[];\n}\nconst CreateEmployeeModal = (props: Params) => {\n const {\n isOpen,\n onClose,\n companies,\n onCreateSuccess,\n onCreateFailed,\n permissions,\n } = props;\n\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const { tags } = useSelector((state: RootStateType) => state.tagsReducer);\n const { userDetails, userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n const isSuperAdmin =\n userDetails?.permissionGroup.id === UserTypeEnum.SuperAdmin;\n\n const [loading, setLoading] = useState(false);\n const [permissionGroups, setPermissionGroups] = useState<\n PermissionGroupResponse[]\n >(getPermissionsGroups(permissions) ?? []);\n\n const formMethods = useForm({\n resolver: yupResolver(EmployeeSchema),\n defaultValues: {\n personName: '',\n notes: '',\n email: '',\n address: '',\n phone: '',\n company: companies[0] ?? null,\n competences: [],\n permissionGroup: permissions ? permissions[0] : undefined,\n roles: [],\n tags: [],\n },\n });\n\n useEffect(() => {\n dispatch(getTagsAction(userCompany?.id ?? undefined));\n }, [dispatch, userCompany]);\n\n const filteredRoles = () => {\n let roleList;\n if (userDetails?.permissionGroup?.id === 5) {\n roleList = tags;\n } else {\n // Filtrera bort roller VD, Instalco admin, Central access & AO-chef för övriga\n roleList = tags?.filter(\n (tag) =>\n tag.id !== 12 && tag.id !== 13 && tag.id !== 117 && tag.id !== 119,\n );\n }\n return roleList;\n };\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n watch,\n getValues,\n setValue,\n } = formMethods;\n\n // Initial logik för vilka permissions som ska gå att välja\n useEffect(() => {\n if (getValues('company.id') === 1 || getValues('company.id') === 32) {\n // Ska alla permission visas\n setPermissionGroups(getPermissionsGroups(permissions));\n } else {\n // Annars filtrerar vi bort External (8)\n setPermissionGroups(\n getPermissionsGroups(permissions?.filter((p) => p.id !== 8)),\n );\n }\n }, [getValues, permissions]);\n\n // Logik för vilka permissions som ska gå att välja - lyssnar på company pickern\n // Samt för att ändra vald permission om man valt External och byter till dotterbolag\n useEffect(() => {\n const subscription = watch(({ company, permissionGroup }) => {\n if (company?.id === 1 || company?.id === 32) {\n // Ska alla permission visas\n setPermissionGroups(getPermissionsGroups(permissions));\n } else {\n // Annars filtrerar vi bort External (8)\n setPermissionGroups(\n getPermissionsGroups(permissions?.filter((p) => p.id !== 8)),\n );\n if (permissionGroup.id === 8) {\n // Om External (8) är vald men man byter till dotterbolag rensar vi permission\n setValue('permissionGroup', permissions[0]);\n // ConsoleHelper.log('INTE MODERBOLAG:: Ändra till permission User');\n }\n }\n });\n return () => subscription.unsubscribe();\n }, [permissions, setValue, watch]);\n\n const formSubmit: SubmitHandler = async (data: IformInputs) => {\n // ConsoleHelper.log('form data', data);\n const allnewItags: TagsResponse[] = [];\n if (data?.roles) {\n data.roles.forEach((element) => {\n if (element) {\n allnewItags.push(element);\n }\n });\n }\n if (data?.competences) {\n data.competences.forEach((element) => {\n if (element) {\n allnewItags.push(element);\n }\n });\n }\n const dataToBeSent = {\n companyId: data.company?.id,\n personName: data.personName,\n notes: data.notes,\n email: data.email,\n address: data.address,\n phone: data.phone,\n tags: allnewItags,\n permissionGroup: {\n id: data?.permissionGroup?.id,\n name: data?.permissionGroup?.name,\n },\n };\n setLoading(true);\n ConsoleHelper.log('employee data to post::', dataToBeSent);\n try {\n const employeeApi = new EmployeeAPI();\n await employeeApi.Create(dataToBeSent);\n setLoading(false);\n reset();\n onCreateSuccess();\n onClose();\n } catch (error) {\n ConsoleHelper.log('error', error);\n setLoading(false);\n onCreateFailed();\n }\n };\n\n return (\n \n {t('newEmployee')}\n \n }\n content={\n <>\n {loading ? (\n \n ) : (\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n {\n reset();\n onClose();\n }}\n />\n \n \n
\n
\n )}\n \n }\n />\n );\n};\n\nexport default CreateEmployeeModal;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { Box, LinearProgress, Typography } from '@mui/material';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\n// Components\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\nimport ControlledCompanySelect from 'src/shared/components/form/controlledCompanySelect';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\n\nimport PermissionsControlledSelect from 'src/shared/components/form/permissionsControlledSelect';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\n// Services\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { EmployeeAPI } from 'src/shared/services/api/employeeApi';\nimport { CompanyResponse } from 'src/shared/services/api/response/companyResponse';\nimport { EmployeeSchema } from 'src/shared/schemas/userSchema';\nimport { getTagsAction } from 'src/shared/services/redux/actions/tagsActions';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { PermissionGroupResponse } from 'src/shared/services/api/response/permissionsResponse';\nimport {\n competencesTags,\n getPermissionsGroups,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\nimport InfoTooltip from 'src/shared/components/molecules/infoTooltip';\nimport { UserTypeEnum } from 'src/shared/helpers/permissionHelper';\nimport { TagsControlledSelected } from 'src/shared/components/form/tagsControlledSelected';\n\nexport interface IformInputs {\n personName: string;\n notes: string;\n email: string;\n address: string;\n phone: string;\n company: CompanyResponse | undefined;\n competences: TagsResponse[] | undefined;\n roles: TagsResponse[] | undefined;\n tags: TagsResponse[] | undefined;\n permissionGroup: PermissionGroupResponse | undefined;\n}\ninterface Params {\n isOpen: boolean;\n onClose: () => void;\n onUpdateSuccess: () => void;\n onUpdateFailed: () => void;\n companies: CompanyResponse[];\n itemId: string | number | undefined;\n permissions: PermissionGroupResponse[];\n}\n\nconst EditEmployeeModal = (props: Params) => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const {\n isOpen,\n onClose,\n companies,\n onUpdateSuccess,\n onUpdateFailed,\n itemId,\n permissions,\n } = props;\n\n const { tags } = useSelector((state: RootStateType) => state.tagsReducer);\n const { userDetails, userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n const isSuperAdmin =\n userDetails?.permissionGroup.id === UserTypeEnum.SuperAdmin;\n\n const [loading, setLoading] = useState(false);\n const [permissionGroups, setPermissionGroups] = useState<\n PermissionGroupResponse[]\n >(getPermissionsGroups(permissions) ?? []);\n\n const formMethods = useForm({\n resolver: yupResolver(EmployeeSchema),\n defaultValues: {\n personName: '',\n notes: '',\n email: '',\n address: '',\n phone: '',\n company: undefined,\n competences: [],\n roles: [],\n tags: [],\n permissionGroup: undefined,\n },\n });\n\n const filteredRoles = () => {\n let roleList;\n if (userDetails?.permissionGroup?.id === 5) {\n roleList = tags;\n } else {\n // Filtrera bort roller VD, Instalco admin, Central access & AO-chef för övriga\n roleList = tags?.filter(\n (tag) =>\n tag.id !== 12 && tag.id !== 13 && tag.id !== 117 && tag.id !== 119,\n );\n }\n return roleList;\n };\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n setValue,\n getValues,\n watch,\n } = formMethods;\n\n const getEmployeeDetails = useCallback(async () => {\n try {\n const employeeApi = new EmployeeAPI();\n setLoading(true);\n const res = await employeeApi.Get(Number(itemId));\n ConsoleHelper.log('res?.result employee', res?.result);\n reset({\n personName: res?.result?.personName ?? '',\n notes: res?.result?.notes ?? '',\n email: res?.result?.email ?? '',\n address: res?.result?.address ?? '',\n phone: res?.result?.phone ?? '',\n company: res?.result?.company,\n roles: rolesTags(res?.result?.tags),\n competences: competencesTags(res?.result?.tags),\n tags: res?.result?.tags,\n permissionGroup: res?.result?.permissionGroup,\n });\n setLoading(false);\n } catch (error) {\n setLoading(false);\n ConsoleHelper.log('error getEmployeeDetails in edit', error);\n }\n }, [itemId, reset]);\n\n useEffect(() => {\n dispatch(getTagsAction(userCompany?.id ?? undefined));\n getEmployeeDetails();\n }, [dispatch, getEmployeeDetails, userCompany]);\n\n // Initial logik för vilka permissions som ska gå att välja\n useEffect(() => {\n if (getValues('company.id') === 1 || getValues('company.id') === 32) {\n // Ska alla permission visas\n setPermissionGroups(getPermissionsGroups(permissions));\n } else {\n // Annars filtrerar vi bort External (8)\n setPermissionGroups(\n getPermissionsGroups(permissions?.filter((p) => p.id !== 8)),\n );\n }\n }, [getValues, permissions]);\n\n // Logik för vilka permissions som ska gå att välja - lyssnar på company pickern\n // Samt för att ändra vald permission om man valt External och byter till dotterbolag\n useEffect(() => {\n const subscription = watch(({ company, permissionGroup }) => {\n if (company?.id === 1 || company?.id === 32) {\n // Ska alla permission visas\n setPermissionGroups(getPermissionsGroups(permissions));\n } else {\n // Annars filtrerar vi bort External (8)\n setPermissionGroups(\n getPermissionsGroups(permissions?.filter((p) => p.id !== 8)),\n );\n if (permissionGroup?.id === 8) {\n // Om External (8) är vald men man byter till dotterbolag rensar vi permission\n setValue('permissionGroup', permissions[0]);\n // ConsoleHelper.log('INTE MODERBOLAG:: Ändra till permission User');\n }\n }\n });\n return () => subscription.unsubscribe();\n }, [permissions, setValue, watch]);\n\n const formSubmit: SubmitHandler = async (data: IformInputs) => {\n // ConsoleHelper.log('form data', data);\n const allnewItags: TagsResponse[] = [];\n if (data?.roles) {\n data.roles.forEach((element) => {\n if (element) {\n allnewItags.push(element);\n }\n });\n }\n if (data?.competences) {\n data.competences.forEach((element) => {\n if (element) {\n allnewItags.push(element);\n }\n });\n }\n const dataToBeSent = {\n companyId: data?.company?.id,\n personName: data.personName,\n notes: data.notes,\n email: data.email,\n address: data.address,\n phone: data.phone,\n tags: allnewItags,\n permissionGroup: {\n id: data?.permissionGroup?.id,\n name: data?.permissionGroup?.name,\n },\n };\n setLoading(true);\n ConsoleHelper.log('employee data to post::', dataToBeSent);\n try {\n const employeeApi = new EmployeeAPI();\n await employeeApi.Update(Number(itemId), dataToBeSent);\n setLoading(false);\n reset();\n onUpdateSuccess();\n onClose();\n } catch (error) {\n ConsoleHelper.log('error', error);\n setLoading(false);\n onUpdateFailed();\n }\n };\n\n return (\n \n {t('editEmployee')}\n \n }\n content={\n <>\n {loading ? (\n \n ) : (\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n {\n reset();\n onClose();\n }}\n />\n \n \n
\n
\n )}\n \n }\n />\n );\n};\n\nexport default EditEmployeeModal;\n","import {\n Box,\n IconButton,\n ListItem,\n ListItemText,\n Tooltip,\n Typography,\n} from '@mui/material';\nimport { Close, PublicOutlined } from '@mui/icons-material';\nimport { useTranslation } from 'react-i18next';\n// Services\nimport { useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { Colors } from 'src/shared/components/styles';\nimport { isParentCompany } from 'src/shared/helpers/companyHelper';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\n\ninterface Params {\n item: TagsResponse;\n onDelete: (arg: number) => void;\n}\nconst TagListItem = (props: Params) => {\n const { item, onDelete } = props;\n const { t } = useTranslation();\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n\n return (\n <>\n setShowDeleteDialog(true)}\n >\n \n \n ) : null\n }\n >\n \n {item.name}\n {isParentCompany(item?.companyId) || item.companyId === 0 ? (\n \n \n \n ) : null}\n \n }\n />\n \n setShowDeleteDialog(false)}\n confirmButtonClick={() => {\n setShowDeleteDialog(false);\n onDelete(item?.id);\n }}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n );\n};\n\nexport default TagListItem;\n","import * as yup from 'yup';\n\nexport const TagSchema = yup.object().shape({\n name: yup.string().required('Namn på tagg måste fyllas i'),\n type: yup.string().required('Typ av tagg måste väljas'),\n companyId: yup.number(),\n tags: yup.array().of(yup.number()) || yup.array().of(yup.mixed()),\n roles: yup.array().of(yup.number()) || yup.array().of(yup.mixed()),\n locations: yup.array().of(yup.number()) || yup.array().of(yup.mixed()),\n});\n","import { useEffect, useState } from 'react';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { Box, Button, Collapse, Divider, Typography } from '@mui/material';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\n// Components\nimport ModalTemplate from 'src/shared/templates/modalTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport SkeletonCards from 'src/shared/components/skeletons/skeletonCards';\nimport TagListItem from 'src/modules/employee/components/tagListItem';\nimport {\n competencesTags,\n // locationsTags,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\n// Services\nimport { getTagsAction } from 'src/shared/services/redux/actions/tagsActions';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { TagSchema } from 'src/shared/schemas/tagSchema';\nimport ControlledSelect from 'src/shared/components/form/controlledSelect';\nimport {\n KeyboardArrowDownRounded,\n KeyboardArrowUpRounded,\n} from '@mui/icons-material';\nimport { isParentCompany } from 'src/shared/helpers/companyHelper';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { TagAPI } from 'src/shared/services/api/tagsAPI';\n\ninterface IformInputs {\n name: string;\n type: string;\n companyId: number;\n}\ninterface Params {\n isOpen: boolean;\n onClose: () => void;\n onCreateSuccess: () => void;\n onCreateFailed: () => void;\n}\nconst TagModal = (props: Params) => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const { isOpen, onClose, onCreateSuccess, onCreateFailed } = props;\n\n // Local states\n const [loading, setLoading] = useState(false);\n const [showRoles, setShowRoles] = useState(false);\n // const [showBusinessAreas, setShowBusinessAreas] = useState(false);\n const [showCompetences, setShowCompetences] = useState(false);\n // Global states\n const { tags } = useSelector((state: RootStateType) => state.tagsReducer);\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // RoleTypes i select\n const roleTypes = () => {\n let types = [];\n if (isParentCompany(userCompany?.id)) {\n types = [\n { label: t('Role'), value: 'Role' },\n { label: t('BusinessArea'), value: 'Location' },\n { label: t('Competence'), value: 'Competence' },\n ];\n } else {\n types = [\n { label: t('Role'), value: 'Role' },\n { label: t('Competence'), value: 'Competence' },\n ];\n }\n return types;\n };\n\n const deleteTag = async (id: number) => {\n const tagApi = new TagAPI();\n try {\n await tagApi.Delete({ id });\n dispatch(getTagsAction(userCompany?.id ?? undefined));\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n } catch (err) {\n ConsoleHelper.log('ERR delete tag::', err);\n toast.error(t('DeleteTagFailed'), {\n theme: 'colored',\n });\n }\n };\n\n const formMethods = useForm({\n resolver: yupResolver(TagSchema),\n defaultValues: {\n name: '',\n type: '',\n companyId: 1,\n },\n });\n\n useEffect(() => {\n dispatch(getTagsAction(userCompany?.id ?? undefined));\n }, [dispatch, userCompany]);\n\n const { handleSubmit, reset } = formMethods;\n\n const formSubmit: SubmitHandler = async (data: IformInputs) => {\n const tagApi = new TagAPI();\n const tagData = {\n companyId: userCompany?.id,\n name: data.name,\n type: data.type,\n };\n setLoading(true);\n ConsoleHelper.log('Tag data to post::', tagData);\n try {\n // Posta nya taggen mot /Tag\n const res = await tagApi.Create(tagData);\n ConsoleHelper.log('RES create tag::', res);\n dispatch(getTagsAction(userCompany?.id ?? undefined));\n setLoading(false);\n onCreateSuccess();\n reset();\n } catch (error) {\n ConsoleHelper.log('ERROR create tag::', error);\n setLoading(false);\n onCreateFailed();\n }\n reset();\n };\n\n return (\n \n {t('HandleTags')}\n \n }\n content={\n <>\n {loading ? (\n \n ) : (\n \n \n
\n \n \n {isParentCompany(userCompany?.id) ? (\n \n {t('CreateTagPermissionGlobal')}\n \n ) : (\n {t('CreateTagPermissionLocal')}\n )}\n \n \n \n {\n reset();\n onClose();\n }}\n />\n \n \n setShowRoles(!showRoles)}\n fullWidth={false}\n endIcon={\n showRoles ? (\n \n ) : (\n \n )\n }\n >\n {t('ListWithCurrentRoles')}\n \n \n {rolesTags(tags)?.length > 0 ? (\n rolesTags(tags).map((item) => (\n \n ))\n ) : (\n {t('NoRoles')}\n )}\n \n {/* setShowBusinessAreas(!showBusinessAreas)}\n endIcon={\n showBusinessAreas ? (\n \n ) : (\n \n )\n }\n >\n {t('ListWithCurrentBusinessAreas')}\n \n \n {locationsTags(tags)?.length > 0 ? (\n locationsTags(tags).map((item) => (\n {item.name}\n ))\n ) : (\n {t('NoBusinessAreas')}\n )}\n */}\n setShowCompetences(!showCompetences)}\n endIcon={\n showCompetences ? (\n \n ) : (\n \n )\n }\n >\n {t('ListWithCurrentCompetences')}\n \n \n {competencesTags(tags)?.length > 0 ? (\n competencesTags(tags).map((item) => (\n \n ))\n ) : (\n {t('NoCompetences')}\n )}\n \n \n \n \n
\n
\n )}\n \n }\n />\n );\n};\n\nexport default TagModal;\n","import { BaseAPI } from './baseAPI';\nimport { PermissionsOptions } from './options/permissionsOptions';\nimport { PermissionsRequest } from './request/permissionsRequest';\nimport { PermissionGroupResponse } from './response/permissionsResponse';\n\nexport class PermissionsAPI extends BaseAPI<\n PermissionGroupResponse,\n PermissionsOptions,\n PermissionsRequest\n> {\n constructor() {\n super('PermissionTagGroup');\n }\n}\n","import { TextField, Autocomplete, Box, FormLabel } from '@mui/material';\nimport { ProjectStatusFilter } from 'src/modules/SustainabilityReport/components/sustainabilityFilter';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\n\ntype AutoCompleteForFilterProps = {\n name: string;\n label?: string;\n formLabel?: string;\n selectItems: TagsResponse[] | BusinessAreaResponse[] | ProjectStatusFilter[];\n type: string;\n multiple?: boolean;\n value: string;\n rows?: number;\n fullWidth?: boolean;\n placeholder?: string;\n onChange: (arg: any) => void;\n size?: 'small' | 'medium' | undefined;\n fontSize?: number;\n};\n\nconst AutoCompleteForFilter = (props: AutoCompleteForFilterProps) => {\n const {\n multiple,\n value,\n formLabel,\n rows,\n type,\n fullWidth,\n placeholder,\n name,\n label,\n selectItems,\n onChange,\n size,\n fontSize,\n } = props;\n\n return (\n <>\n {formLabel && (\n \n {formLabel}\n \n )}\n option.name}\n isOptionEqualToValue={(option, item) => option.id === item.id}\n onChange={(event, selectedOptions) => {\n onChange(selectedOptions);\n }}\n renderOption={(optProps, option) => (\n \n {option.name}\n \n )}\n renderInput={(params) => {\n return (\n \n );\n }}\n />\n \n );\n};\n\nAutoCompleteForFilter.defaultProps = {\n multiple: undefined,\n rows: undefined,\n fullWidth: undefined,\n placeholder: undefined,\n size: 'medium',\n label: undefined,\n formLabel: undefined,\n fontSize: null,\n};\n\nexport default AutoCompleteForFilter;\n","// MUI\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Grid,\n Typography,\n} from '@mui/material';\nimport { ExpandMore } from '@mui/icons-material';\n// Components\nimport AutoCompleteForFilter from 'src/modules/employee/components/autoCompleteForFilter';\n// Services\nimport { useTranslation } from 'react-i18next';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport {\n rolesTags,\n competencesTags,\n locationsTags,\n getBusinessAreas,\n} from 'src/shared/helpers/filteredTags';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\n\ntype FilterAccordionProps = {\n setRoleTags: (arg: TagsResponse[]) => void;\n setLocationsTags: (arg: TagsResponse[]) => void;\n setCompetenceTags: (arg: TagsResponse[]) => void;\n setBusinessAreaTags: (arg: BusinessAreaResponse[]) => void;\n};\n\nexport const FilterAccordion = (props: FilterAccordionProps) => {\n const {\n setRoleTags,\n setLocationsTags,\n setCompetenceTags,\n setBusinessAreaTags,\n } = props;\n const { t } = useTranslation();\n\n const { tags } = useSelector((state: RootStateType) => state.tagsReducer);\n const { businessAreas } = useSelector(\n (state: RootStateType) => state.businessAreaReducer,\n );\n\n return (\n \n }\n aria-controls='panel-content'\n id='panel-header'\n >\n {t('ExtendedSearch')}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useCallback, useEffect, useRef } from 'react';\n\nexport const useIsMounted = () => {\n const isMounted = useRef(false);\n useEffect(() => {\n isMounted.current = true;\n return () => {\n isMounted.current = false;\n };\n }, []);\n const checker = useCallback(() => {\n return isMounted.current;\n }, []);\n return checker;\n};\n","import { useState, useEffect, useCallback, useMemo } from 'react';\nimport { Link, useLocation } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\n// MUI\nimport {\n GridActionsCellItem,\n GridColumns,\n GridRowParams,\n GridSortModel,\n} from '@mui/x-data-grid';\nimport {\n Add,\n CloseRounded,\n EditRounded,\n GroupsRounded,\n PeopleAltRounded,\n} from '@mui/icons-material';\nimport {\n Box,\n Button,\n FormControlLabel,\n LinearProgress,\n Switch,\n Typography,\n useMediaQuery,\n} from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\n// Components\nimport {\n DataGrid,\n DataGridOptions,\n} from 'src/shared/components/organisms/dataGrid';\nimport { Colors } from 'src/shared/components/styles';\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport { Search } from 'src/shared/components/atoms/search';\nimport {\n ActionButtons,\n IActionButton,\n} from 'src/shared/components/atoms/actionButtons';\nimport useDebounce from 'src/shared/components/atoms/useDebounce';\nimport { EmployeeModal } from 'src/modules/employee/components/employeeModal';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport CreateEmployeeModal from 'src/modules/employee/components/createEmployeeModal';\nimport EditEmployeeModal from 'src/modules/employee/components/editEmployeeModal';\nimport TagModal from 'src/modules/employee/components/tagModal';\n// Services\nimport { EmployeeResponse } from 'src/shared/services/api/response/employeeResponse';\nimport { EmployeeAPI } from 'src/shared/services/api/employeeApi';\nimport { EmployeeOptions } from 'src/shared/services/api/options/employeeOptions';\nimport { CompanyResponse } from 'src/shared/services/api/response/companyResponse';\nimport { CompanyAPI } from 'src/shared/services/api/companyAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { getPermissionsAction } from 'src/shared/services/redux/actions/permissionsAction';\nimport {\n GetAdminPermission,\n UserTypeEnum,\n} from 'src/shared/helpers/permissionHelper';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport {\n rolesTags,\n competencesTags,\n locationsTags,\n getBusinessAreas,\n} from 'src/shared/helpers/filteredTags';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { FilterAccordion } from 'src/modules/employee/components/filterAccordion';\nimport { getBusinessAreasAction } from 'src/shared/services/redux/actions/businessAreasAction';\nimport { getTagsAction } from 'src/shared/services/redux/actions/tagsActions';\nimport { useIsMounted } from 'src/shared/helpers/hooks/useIsMounted';\n\ninterface IState {\n itemId?: string | undefined;\n itemName?: string | undefined;\n}\ninterface ILocation {\n pathname?: string | undefined;\n state: IState;\n}\nconst EmployeeListPage = () => {\n const location: ILocation = useLocation();\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const isMounted = useIsMounted();\n const filteredCompanyId = location?.state?.itemId?.toString();\n const filteredCompanyname = location?.state?.itemName;\n const theme = useTheme();\n const isMobile = useMediaQuery(theme.breakpoints.down('md'));\n\n // Global sates\n const { permissions } = useSelector(\n (state: RootStateType) => state.permissionsReducer,\n );\n const { userDetails, userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // States\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState([]);\n const [companies, setCompanies] = useState([]);\n const [userToBedeleted, setUserToBeDeleted] = useState<\n EmployeeResponse | undefined\n >();\n const [employeeItem, setEmployeeItem] = useState<\n EmployeeResponse | undefined\n >();\n // States för modaler/dialoger\n const [openDialog, setOpenDialog] = useState(false);\n const [isTagModalOpen, setIsTagModalOpen] = useState(false);\n const [isEmployeeModalOpen, setIsEmployeeModalOpen] =\n useState(false);\n const [isCreateEmployeeModalOpen, setIsCreateEmployeeModalOpen] =\n useState(false);\n const [isEditEmployeeModalOpen, setIsEditEmployeeModalOpen] =\n useState(false);\n // States för sökning/filter\n const [showAllEmployees, setShowAllEmployees] = useState(false);\n const [showDeletedEmployees, setShowDeletedEmployees] = useState(false);\n const [showExternalUsers, setShowExternalUsers] = useState(false);\n const [searchText, setSearchText] = useState('');\n const [roleTags, setRoleTags] = useState([]);\n const [locationTags, setLocationTags] = useState([]);\n const [compentenceTags, setCompentenceTags] = useState([]);\n const [businessAreaTags, setBusinessAreaTags] = useState<\n BusinessAreaResponse[]\n >([]);\n\n const debouncedSearchTerm = useDebounce(searchText, 500);\n\n const [requestOptions, setRequestOptions] = useState({\n pageIndex: 0,\n pageSize: 100,\n sortDir: 'asc',\n sortCol: 'personName',\n includeDeleted: showDeletedEmployees,\n excludePermissionGroupIds: [UserTypeEnum.ExternalUser],\n employeeNameFilter: undefined,\n companyId: showAllEmployees\n ? undefined\n : filteredCompanyId || userCompany?.id,\n tags: [], // Ska nu vara array av numbers\n businessAreaTags: [], // Ska nu vara array av numbers\n });\n\n const [dataGridOptions, setDataGridOptions] = useState({\n loading: false,\n rowsPerPageOptions: undefined,\n totalRows: 0,\n });\n\n // TODO: Får 500 när vi skickar med sortCol - kommentera in det sen & ta bort orderBy på mappning av data\n const getEmployeeList = useCallback(async () => {\n if (isMounted()) {\n setDataGridOptions((prev) => ({\n ...prev,\n loading: true,\n }));\n const employeeApi = new EmployeeAPI();\n try {\n const res = await employeeApi.GetAll(requestOptions);\n ConsoleHelper.log('RESULT FETCH EMPLOYEES', requestOptions);\n\n setData(res.results ?? []);\n setDataGridOptions((prev) => ({\n ...prev,\n loading: false,\n totalRows: res.totalItems ?? 0,\n }));\n } catch (error) {\n ConsoleHelper.log(error ?? 'getEmployees: unkown error');\n setData([]);\n setDataGridOptions((prev) => ({\n ...prev,\n loading: false,\n totalRows: 0,\n }));\n }\n }\n }, [isMounted, requestOptions]);\n\n // Hämta alla företag för att ha som val när employee skapas\n // TODO: Lägg in sökning mot API när man söker i textfältet i modalen\n const getCompanies = useCallback(async () => {\n const companyApi = new CompanyAPI();\n const companyOptions = {\n pageIndex: 0,\n pageSize: 300,\n sortDir: 'asc',\n sortCol: 'name',\n };\n try {\n const res = await companyApi.GetAll(companyOptions); // ska man hämta företag enligt inloggad behörighet\n setCompanies(res.results ?? []);\n } catch (error) {\n ConsoleHelper.log(error ?? 'getCompanies: unkown error');\n setCompanies([]);\n }\n }, []);\n\n const getColumnActionButtons = useCallback(\n (params: GridRowParams) => {\n const result: JSX.Element[] = [];\n result.push(\n }\n onClick={() => {\n setEmployeeItem(params.row);\n setIsEmployeeModalOpen(true);\n }}\n label={t('Show')}\n showInMenu\n />,\n );\n const currentPermissions = userDetails?.permissionGroup.permissions;\n if (currentPermissions) {\n if (currentPermissions.some((item) => item.name === 'EMPLOYEE_UPDATE'))\n result.push(\n }\n onClick={() => {\n setEmployeeItem(params.row as EmployeeResponse);\n setIsEditEmployeeModalOpen(true);\n }}\n label={t('Edit')}\n showInMenu\n />,\n );\n if (currentPermissions.some((item) => item.name === 'EMPLOYEE_DELETE'))\n result.push(\n }\n onClick={() => {\n setOpenDialog(true);\n setUserToBeDeleted(params.row);\n }}\n label={t('Delete')}\n showInMenu\n />,\n );\n }\n return result;\n },\n [t, userDetails?.permissionGroup.permissions],\n );\n\n const getEmployeeFabButtons = () => {\n const buttons: IActionButton[] = [];\n const currentPermissions = userDetails?.permissionGroup.permissions;\n if (currentPermissions) {\n if (currentPermissions.some((item) => item.name === 'EMPLOYEE_CREATE'))\n buttons.push({\n ID: 1,\n icon: ,\n backgroundColor: 'primary.main',\n iconColor: 'white',\n buttonSize: 'small',\n linkTo: '',\n isButton: true,\n onClick: () => setIsCreateEmployeeModalOpen(true),\n });\n if (currentPermissions.some((item) => item.name === 'TAG_CREATE'))\n buttons.push({\n ID: 2,\n icon: ,\n backgroundColor: Colors.ORANGE,\n iconColor: 'white',\n buttonSize: 'small',\n linkTo: '',\n isButton: true,\n onClick: () => setIsTagModalOpen(true),\n });\n }\n return buttons;\n };\n\n // UseEffects\n\n // Globala states som behövs i personvyer\n useEffect(() => {\n dispatch(getBusinessAreasAction());\n dispatch(getTagsAction(userCompany?.id ?? undefined));\n dispatch(getPermissionsAction());\n }, [dispatch, userCompany]);\n\n // Sökning på namn\n useEffect(() => {\n setRequestOptions((prev) => ({\n ...prev,\n employeeNameFilter:\n debouncedSearchTerm.length > 0 ? debouncedSearchTerm : undefined,\n }));\n }, [debouncedSearchTerm]);\n\n // Filter på taggar\n useEffect(() => {\n const roleTagIDs = roleTags.map((r) => r.id);\n const locationTagIDs = locationTags.map((l) => l.id);\n const competenceTagIDs = compentenceTags.map((c) => c.id);\n const areaTagIDs = businessAreaTags.map((b) => b.id);\n setRequestOptions((prev) => ({\n ...prev,\n tags: [...roleTagIDs, ...locationTagIDs, ...competenceTagIDs],\n businessAreaTags: [...areaTagIDs],\n }));\n }, [businessAreaTags, roleTags, locationTags, compentenceTags]);\n\n // Visa/dölja borttagna ellr externa användare\n useEffect(() => {\n setRequestOptions((prev) => ({\n ...prev,\n includeDeleted: showDeletedEmployees,\n excludePermissionGroupIds: showExternalUsers\n ? undefined\n : [UserTypeEnum.ExternalUser],\n }));\n }, [showDeletedEmployees, showExternalUsers]);\n\n // Requestoptions för vilket företags användare som ska listas\n useEffect(() => {\n setRequestOptions((prev) => ({\n ...prev,\n companyId: showAllEmployees\n ? undefined\n : filteredCompanyId || userCompany?.id,\n }));\n }, [showAllEmployees, filteredCompanyId, userCompany?.id]);\n\n useEffect(() => {\n getEmployeeList();\n }, [getEmployeeList]);\n\n useEffect(() => {\n getCompanies();\n }, [getCompanies]);\n\n // Toasts\n const onCreateSuccess = (contentText: string) => {\n getEmployeeList();\n toast.success(contentText, {\n theme: 'colored',\n });\n };\n const onUpdateSuccess = (contentText: string) => {\n setEmployeeItem(undefined);\n getEmployeeList();\n toast.success(contentText, {\n theme: 'colored',\n });\n };\n const onUpdateFailed = (contentText: string) => {\n toast.error(contentText, {\n theme: 'colored',\n });\n };\n const onCreateFailed = (contentText: string) => {\n toast.error(contentText, {\n theme: 'colored',\n });\n };\n\n // Radera employee mot API\n const deleteEmployee = async (userId: number) => {\n setLoading(true);\n const employeeApi = new EmployeeAPI();\n try {\n await employeeApi.Delete({ id: userId });\n await getEmployeeList();\n setLoading(false);\n onCreateSuccess(t('Deleted!'));\n } catch (error) {\n ConsoleHelper.log(error ?? 'deleteEmployees: unkown error');\n await getEmployeeList();\n setLoading(false);\n onCreateFailed(t('SomethingWentWrong'));\n }\n };\n\n // Bekrtäfta radering av användare\n const confirmButtonClick = () => {\n if (userToBedeleted?.id) {\n deleteEmployee(userToBedeleted?.id);\n }\n setOpenDialog(false);\n };\n\n // Filtrerar vilka persmissiontyper som ska visas för olika användare\n const filteredPermissions = () => {\n let permissionList;\n const authorizedPermissions = [\n UserTypeEnum.SuperAdmin,\n // UserTypeEnum.ExternalUser, // Alla får lägga till external - men det går bara att lägga till på företagen Instalco SE/NO\n ];\n if (userDetails?.permissionGroup?.id === UserTypeEnum.SuperAdmin) {\n permissionList = permissions;\n } else {\n permissionList = permissions?.filter(\n (permission) => !authorizedPermissions.includes(permission.id),\n );\n }\n return permissionList;\n };\n\n // Byt sida\n const onPageChange = (newPage: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageIndex: newPage,\n }));\n };\n\n // Ändra antal per sida\n const onPageSizeChange = (size: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageSize: size,\n }));\n };\n\n // Ändra sortering\n const onSortModelChanged = (\n model: GridSortModel,\n // details: GridCallbackDetails,\n ) => {\n if (model.length > 0)\n setRequestOptions((prev) => ({\n ...prev,\n sortDir: model[0].sort as string,\n // sortCol: model[0].field as string,\n }));\n };\n\n // Kolumner för DataGrid\n const memoizedColumns: GridColumns = useMemo(\n () => [\n {\n field: 'personName',\n headerName: t('Name'),\n flex: isMobile ? 0.5 : 0.2,\n renderCell: (params) => {\n return (\n \n {params.row.personName}\n \n );\n },\n },\n {\n field: 'company',\n headerName: t('Company'),\n flex: 0.2,\n hide: false,\n renderCell: (params) => {\n return (\n \n {params.row.company.name}\n \n );\n },\n },\n {\n field: 'email',\n headerName: t('Email'),\n flex: 0.3,\n hide: false,\n renderCell: (params) => (\n {params.row.email}\n ),\n },\n {\n field: 'phone',\n headerName: t('Phone'),\n flex: 0.3,\n hide: true,\n renderCell: (params) => (\n {params.row.phone}\n ),\n },\n {\n field: 'permissionGroup',\n headerName: t('Permission'),\n flex: 0.15,\n hide: isMobile,\n renderCell: (params) => (\n \n {params.row.permissionGroup ? params.row.permissionGroup.name : ' '}\n \n ),\n },\n {\n field: 'businessAreas',\n headerName: t('Segment'),\n flex: 0.25,\n hide: true, // isMobile,\n renderCell: (params) => (\n <>\n {getBusinessAreas(params.row.businessAreas).map(\n (tag: BusinessAreaResponse, index: number) => {\n return (\n \n {tag.name}\n\n {index + 1 !==\n getBusinessAreas(params.row.businessAreas)?.length\n ? ' | '\n : ''}\n \n );\n },\n )}\n \n ),\n },\n {\n field: 'tagsLocation',\n headerName: t('Areas'),\n flex: 0.25,\n hide: true, // isMobile,\n renderCell: (params) => (\n <>\n {locationsTags(params.row.tags).map(\n (tag: TagsResponse, index: number) => {\n return (\n \n {tag.name}\n {index + 1 !== locationsTags(params.row.tags)?.length\n ? ' | '\n : ''}\n \n );\n },\n )}\n \n ),\n },\n {\n field: 'tagsRole',\n headerName: t('Roles'),\n flex: 0.3,\n hide: isMobile,\n renderCell: (params) => (\n <>\n {rolesTags(params.row.tags).map(\n (tag: TagsResponse, index: number) => {\n return (\n \n {tag.name}\n {index + 1 !== rolesTags(params.row.tags)?.length\n ? ' | '\n : ''}\n \n );\n },\n )}\n \n ),\n },\n {\n field: 'tagsCompetence',\n headerName: t('Competences'),\n flex: 0.4,\n hide: true,\n renderCell: (params) => (\n <>\n {competencesTags(params.row.tags).map(\n (tag: TagsResponse, index: number) => {\n return (\n \n {tag.name}\n {index + 1 !== competencesTags(params.row.tags)?.length\n ? ' | '\n : ''}\n \n );\n },\n )}\n \n ),\n },\n {\n field: 'actions',\n flex: 0.1,\n type: 'actions',\n align: 'right',\n disableColumnMenu: true,\n getActions: (params: GridRowParams) => getColumnActionButtons(params),\n },\n ],\n [getColumnActionButtons, isMobile, t],\n );\n\n const hasPermissionToSwitchEmployeeList = GetAdminPermission(0, 'employees');\n\n return (\n \n \n {filteredCompanyname && (\n // Om man valt \"Visa användare\" från företagslistan\n }\n >\n {filteredCompanyname}\n \n )}\n {hasPermissionToSwitchEmployeeList && (\n // SuperAdmin och Managers kan välja att visa all personal\n <>\n setShowAllEmployees(!showAllEmployees)}\n checked={showAllEmployees}\n />\n }\n label={t('ShowAllCompanies')}\n />\n \n setShowDeletedEmployees(!showDeletedEmployees)\n }\n checked={showDeletedEmployees}\n />\n }\n label={t('ShowDeletedUsers')}\n />\n\n setShowExternalUsers(!showExternalUsers)}\n checked={showExternalUsers}\n />\n }\n label={t('ShowExternalUsers')}\n />\n \n )}\n \n setSearchText(e.target.value)}\n onClearText={() => setSearchText('')}\n />\n \n {loading ? (\n \n ) : (\n \n // Tabell med personal\n columns={memoizedColumns}\n rows={data}\n dataGridOptions={dataGridOptions}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n onSortModelChange={onSortModelChanged}\n checkboxSelection={false}\n page={requestOptions.pageIndex ?? 0}\n pageSize={requestOptions.pageSize ?? 10}\n />\n )}\n\n \n\n {isEmployeeModalOpen && (\n setIsEmployeeModalOpen(false)}\n item={employeeItem}\n />\n )}\n {isEditEmployeeModalOpen && (\n setIsEditEmployeeModalOpen(false)}\n onUpdateSuccess={() => onUpdateSuccess(t('Done!'))}\n onUpdateFailed={() => onUpdateFailed(t('SomethingWentWrong'))}\n itemId={employeeItem?.id}\n permissions={filteredPermissions() ?? []}\n />\n )}\n {isCreateEmployeeModalOpen && (\n setIsCreateEmployeeModalOpen(false)}\n onCreateSuccess={() => onCreateSuccess(t('Done!'))}\n onCreateFailed={() => onCreateFailed(t('SomethingWentWrong'))}\n permissions={filteredPermissions() ?? []}\n />\n )}\n {isTagModalOpen && (\n setIsTagModalOpen(false)}\n onCreateSuccess={() => onCreateSuccess(t('Done!'))}\n onCreateFailed={() => onCreateFailed(t('SomethingWentWrong'))}\n />\n )}\n setOpenDialog(false)}\n confirmButtonClick={confirmButtonClick}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n }\n />\n );\n};\n\nexport default EmployeeListPage;\n","import { Dispatch } from 'react';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { PermissionsAPI } from 'src/shared/services/api/permissionsAPI';\nimport { PermissionGroupResponse } from 'src/shared/services/api/response/permissionsResponse';\nimport {\n GET_PERMISSION_GROUP_SUCCES,\n GET_PERMISSION_GROUP_FAILED,\n GET_PERMISSION_GROUP_REQUEST,\n} from 'src/shared/services/redux/constants/permissionTypes';\n\nexport interface GetAllPermissions {\n type: typeof GET_PERMISSION_GROUP_SUCCES;\n payload: PermissionGroupResponse[] | undefined;\n}\nexport interface GetAllPermissionsFailed {\n type: typeof GET_PERMISSION_GROUP_FAILED;\n payload: [];\n}\nexport interface GetAllPermissionsRequest {\n type: typeof GET_PERMISSION_GROUP_REQUEST;\n}\nexport type PermissionsDispatchType =\n | GetAllPermissions\n | GetAllPermissionsFailed\n | GetAllPermissionsRequest;\n\nexport const getPermissionsAction = () => {\n return async (dispatch: Dispatch) => {\n dispatch({ type: GET_PERMISSION_GROUP_REQUEST });\n try {\n const permissionsAPI = new PermissionsAPI();\n const res = await permissionsAPI.GetAll({\n sortDir: 'asc',\n sortCol: 'name',\n pageSize: 50,\n });\n dispatch({\n type: GET_PERMISSION_GROUP_SUCCES,\n payload: res?.results,\n });\n } catch (error) {\n ConsoleHelper.log('Permissions error from action', error);\n dispatch({\n type: GET_PERMISSION_GROUP_FAILED,\n payload: [],\n });\n }\n };\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { toast } from 'react-toastify';\nimport dayjs from 'dayjs';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { Box, Grid, LinearProgress } from '@mui/material';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledDatePicker from 'src/shared/components/form/controlledDatePicker';\nimport ControlledPushNoticeCheckbox from 'src/shared/components/form/controlledPushNoticeCheckbox';\nimport ControlledEditorInput from 'src/shared/components/form/controlledEditorInput';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\nimport ImageDropZone, {\n FileExtended,\n} from 'src/shared/components/form/imageDropZone';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\n// Services\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { ContentTypeEnum } from 'src/shared/enums/contentType.enum';\nimport { DocumentAPI } from 'src/shared/services/api/documentAPI';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\nimport { ContentPageNewsSchema } from 'src/shared/schemas/contentPageNewsSchema';\nimport {\n getBusinessAreas,\n locationsTags,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport ControlledSwitchNorway from 'src/shared/components/form/controlledSwitchNorway';\n\nconst EditNewsPage = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const { id, itemId } = useParams();\n\n // Local states\n const [featuredImageFile, setFeaturedImageFile] = useState(\n undefined,\n ); // Befintlig beaturedImage som file\n const [selectedImage, setSelectedImage] = useState(); // FeaturedImage som laddas upp av user\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const [pageToEdit, setPageToEdit] = useState<\n ContentPageResponse | undefined\n >();\n const [loading, setLoading] = useState(false);\n\n const formMethods = useForm({\n resolver: yupResolver(ContentPageNewsSchema(t)),\n defaultValues: {\n title: '',\n content: '',\n featuredImageText: '',\n contentType: ContentTypeEnum.NewsPage,\n businessAreaTags: [],\n locations: [],\n roles: [],\n canHaveChildren: false,\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs().format('YYYY-MM-DDTHH:mm:ss'),\n companyId2: null,\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n // Ändring av featured image\n const onFeaturedImageChange = useCallback(\n (file: FileExtended | undefined) => {\n if (!file?.id) setFeaturedImageFile(undefined); // Om filen som lagts till inte har id är det en ny fil som ska sparas och initial fil tas bort\n if (file) {\n ConsoleHelper.log('file for featuredImage', file);\n setSelectedImage(file);\n } else setSelectedImage(undefined);\n },\n [],\n );\n\n const getFeaturedImageFile = async (imageID: number | string) => {\n const documentApi = new DocumentAPI();\n try {\n const docRes = await documentApi.Get(imageID);\n if (docRes) {\n setFeaturedImageFile(docRes.result as File);\n }\n } catch (err) {\n ConsoleHelper.log('Error get doc', err);\n }\n };\n\n // Hämta vald nyhet för att sätta form states\n const getNewsItem = useCallback(async () => {\n setLoading(true);\n try {\n const contentPageApi = new ContentPageAPI();\n const res = await contentPageApi.Get(Number(itemId));\n if (res) {\n setPageToEdit(res?.result);\n reset({\n title: res?.result?.title,\n content: res?.result?.content ?? '',\n featuredImageText: res?.result?.featuredImageText ?? '',\n featuredImageDocumentId: res?.result?.featuredImageDocumentId,\n contentType: res?.result?.contentType,\n canHaveChildren: false,\n companyId: res?.result?.companyId,\n parentContentPageId: res?.result?.parentContentPageId,\n businessAreaTags: getBusinessAreas(res.result?.businessAreaTags),\n locations: locationsTags(res?.result?.tags),\n roles: rolesTags(res?.result?.tags),\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs(res?.result?.publishDate).format('YYYY-MM-DD'),\n companyId2: res?.result?.companyId2 ?? null,\n });\n if (\n res?.result?.featuredImageDocumentId &&\n res?.result?.featuredImageDocumentId !== 0\n ) {\n getFeaturedImageFile(res?.result?.featuredImageDocumentId);\n }\n setLoading(false);\n }\n } catch (error) {\n ConsoleHelper.log('kunde inte hämta nyhet', error);\n setLoading(false);\n }\n }, [itemId, reset]);\n\n useEffect(() => {\n getNewsItem();\n }, [itemId, getNewsItem]);\n\n // Put mot API\n const formSubmit: SubmitHandler = async (\n data: IContentPage,\n ) => {\n setLoading(true);\n const contentPageApi = new ContentPageAPI();\n const documentApi = new DocumentAPI();\n const newData = data;\n // Featured image\n if (!selectedImage) {\n ConsoleHelper.log('Ingen featured image');\n newData.featuredImageDocumentId = null;\n } else if (selectedImage && !featuredImageFile) {\n ConsoleHelper.log('Ny featured image att spara');\n try {\n const formData = new FormData();\n formData.append('iD', '1');\n formData.append('description', data.featuredImageText ?? '');\n formData.append('fileData', selectedImage);\n const resDoc = await documentApi.CreateFormData(formData);\n if (resDoc !== undefined || resDoc !== null) {\n newData.featuredImageDocumentId = resDoc?.id;\n }\n } catch (err) {\n ConsoleHelper.log('Error save featured image', err);\n }\n } else {\n ConsoleHelper.log('Featured image oförändrad');\n // Om bildtexten ändras löser API:et det med featuredImageText som skickas med data på Update.\n }\n\n // Formatera data att skicka med\n const tagIDs: number[] = [];\n const businessAreaTagIDs: string[] = [];\n if (newData?.locations) {\n newData.locations.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id);\n }\n });\n }\n if (data.businessAreaTags) {\n data.businessAreaTags.forEach((tag: TagsResponse) => {\n if (tag.id) {\n businessAreaTagIDs.push(tag.id.toString());\n }\n });\n }\n if (newData?.roles) {\n newData.roles.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id);\n }\n });\n }\n newData.tags = tagIDs;\n newData.businessAreaTags = businessAreaTagIDs;\n newData.publishDate = dayjs(data.publishDate).format('YYYY-MM-DD');\n newData.companyId2 = data.companyId2; // Publicera till norska bolag från Instalco SE\n // Update på editerad nyhet\n try {\n ConsoleHelper.log('NewData NewsPage', newData);\n if (itemId !== undefined) {\n await contentPageApi.Update(itemId, newData);\n if (!featuredImageFile && pageToEdit?.featuredImageDocumentId !== 0) {\n // Radera gamla featured image efter att sidan är sparad om den är borttagen eller ersatt i lokalt state\n ConsoleHelper.log(\n 'Radera gammal bild mot API',\n pageToEdit?.featuredImageDocumentId,\n );\n await documentApi.deleteItemWithQueryID(\n Number(pageToEdit?.featuredImageDocumentId),\n );\n }\n getNewsItem();\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n reset();\n history.push(`/NewsListPage/${id}`);\n }\n } catch (e) {\n ConsoleHelper.log('error saving edited news', e);\n toast.error(t('SomethingWentWrong'));\n }\n setLoading(false);\n };\n\n // Öppna confirm dialog vid radera nyheten\n const deleteNews = () => {\n setShowDeleteDialog(true);\n };\n\n // Radera nyhet mot API\n const removeNews = async () => {\n setLoading(true);\n try {\n const newsAPI = new ContentPageAPI();\n if (itemId !== undefined) {\n await newsAPI.deleteItemWithQueryID(Number(itemId));\n getNewsItem();\n setLoading(false);\n setShowDeleteDialog(false);\n toast.success(t('Deleted!'), {\n theme: 'colored',\n });\n reset();\n history.push(`/NewsListPage/${id}`);\n }\n } catch (error) {\n setLoading(false);\n setShowDeleteDialog(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n return (\n \n {loading && }\n \n
\n \n \n \n \n \n \n \n \n \n \n \n reset()}\n linkTo={`/NewsListPage/${id}`}\n saveDisabled={loading}\n showDeleteButton={itemId !== undefined}\n onDelete={deleteNews}\n />\n \n \n
\n setShowDeleteDialog(false)}\n confirmButtonClick={() => removeNews()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n }\n />\n );\n};\n\nexport default EditNewsPage;\n","import * as yup from 'yup';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\n\nexport const ContentPageSchema = (\n t: (n: string) => void,\n): yup.SchemaOf => {\n return yup.object().shape({\n ID: yup.number() || yup.string(),\n title: yup.string().required(`${t('titleRequired')}`),\n content: yup.string(), // På \"vanliga\" ContenPages är inte content reqired, endast på nyheter\n featuredImageText: yup.string().nullable(),\n companyId: yup.number() || yup.string(),\n companyId2: yup.number().nullable(true),\n parentContentPageId: yup.number() || yup.string(),\n contentType: yup.string(),\n businessAreas: yup.array().of(yup.mixed()),\n businessAreaTags: yup.array().of(yup.mixed()),\n locations: yup.array().of(yup.mixed()),\n roles: yup.array().of(yup.mixed()),\n sendNotice: yup.boolean().required(),\n sendEmail: yup.boolean().required(),\n publishDate: yup.string().required(`${t('publishDateRequired')}`),\n canHaveChildren: yup.boolean(),\n sortIndex: yup.string() || yup.number(),\n featuredImageDocumentId: yup.string(),\n documentListId: yup.number(),\n imageText: yup.string(),\n hideInMenu: yup.boolean(),\n tags: yup.array().of(yup.number()),\n documentFileList: yup.array().of(yup.string()),\n });\n};\n","import { useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { toast } from 'react-toastify';\nimport dayjs from 'dayjs';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { Box, Grid, LinearProgress } from '@mui/material';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledDatePicker from 'src/shared/components/form/controlledDatePicker';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport ControlledPushNoticeCheckbox from 'src/shared/components/form/controlledPushNoticeCheckbox';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\nimport { extraMenu } from 'src/shared/components/navigations/menuList';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\n// Services\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\n// import { IParams } from 'src/shared/interfaces/params';\nimport { ContentTypeEnum } from 'src/shared/enums/contentType.enum';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { ContentPageSchema } from 'src/shared/schemas/contentPageSchema';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { getMenuListAction } from 'src/shared/services/redux/actions/getMenuList';\nimport ControlledSwitchNorway from 'src/shared/components/form/controlledSwitchNorway';\n\nconst CreateNewsListPage = () => {\n const { t } = useTranslation();\n const dispatch = useDispatch();\n const history = useHistory();\n // const { id } = useParams();\n\n // Global states\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n // Local states\n const [loading, setLoading] = useState(false);\n\n const formMethods = useForm({\n resolver: yupResolver(ContentPageSchema(t)),\n defaultValues: {\n ID: 1,\n title: '',\n sortIndex: '0',\n featuredImageText: '',\n companyId: userCompany?.id,\n companyId2: userCompany?.id === 1 ? 32 : null,\n parentContentPageId: 0,\n contentType: ContentTypeEnum.NewsListPage,\n businessAreaTags: [],\n locations: [],\n roles: [],\n canHaveChildren: false,\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs().format('YYYY-MM-DD'),\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n const formSubmit: SubmitHandler = async (\n data: IContentPage,\n ) => {\n ConsoleHelper.log('data in newsListPage ', data);\n setLoading(true);\n const tagIDs: TagsResponse[] = [];\n if (data?.locations) {\n data.locations.forEach((element) => {\n if (element) {\n tagIDs.push(element);\n }\n });\n }\n if (data?.roles) {\n data.roles.forEach((element) => {\n if (element) {\n tagIDs.push(element);\n }\n });\n }\n const formData = new FormData();\n tagIDs.forEach((element) => {\n formData.append('tags', element.toString());\n });\n if (data.businessAreaTags) {\n data.businessAreaTags.forEach((tag: TagsResponse) => {\n if (tag.id) {\n formData.append('businessAreaTags', tag.id.toString());\n }\n });\n }\n formData.append('title', data.title);\n formData.append('iD', data?.ID?.toString() ?? '1');\n if (userCompany?.id) {\n formData.append('companyId', userCompany?.id?.toString());\n }\n // Publicera till norska bolag från Instalco SE\n if (data.companyId2 === 32) {\n formData.append('companyId2', '32');\n }\n formData.append('hideInMenu', 'false');\n formData.append('canHaveChildren', 'true');\n formData.append('sendNotice', data.sendNotice.toString());\n formData.append('sendEmail', data.sendEmail.toString());\n formData.append('contentType', data.contentType ?? '');\n formData.append('sortIndex', data.sortIndex ?? '0');\n if (data.parentContentPageId && data.parentContentPageId !== 0) {\n formData.append(\n 'parentContentPageId',\n data.parentContentPageId?.toString(),\n );\n }\n formData.append(\n 'publishDate',\n dayjs(data.publishDate).format('YYYY-MM-DD'),\n );\n try {\n const newsAPI = new ContentPageAPI();\n await newsAPI.CreateFormData(formData);\n dispatch(getMenuListAction(extraMenu(t), userCompany?.id));\n setLoading(false);\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n reset();\n history.push(`/`);\n } catch (error) {\n setLoading(false);\n ConsoleHelper.log('error', error);\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n return (\n \n {loading && }\n \n
\n \n \n \n \n \n \n \n \n \n \n reset()}\n linkTo='/'\n saveDisabled={loading}\n />\n \n \n
\n \n }\n />\n );\n};\n\nexport default CreateNewsListPage;\n","import { Controller } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { FormGroup, FormControlLabel, Checkbox } from '@mui/material';\n\ntype IformInputProps = {\n control: any;\n};\n\nconst ControlledCanHaveChildren = (props: IformInputProps) => {\n const { control } = props;\n const { t } = useTranslation();\n\n return (\n \n {\n return (\n field.onChange(e.target.checked)}\n sx={{\n color: 'primary.main',\n '&.Mui-checked': {\n color: 'primary.main',\n },\n }}\n />\n }\n label={t('canHaveChildItems')}\n />\n );\n }}\n />\n \n );\n};\n\nexport default ControlledCanHaveChildren;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { toast } from 'react-toastify';\nimport dayjs from 'dayjs';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { Box, LinearProgress } from '@mui/material';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ImageDropZone from 'src/shared/components/form/imageDropZone';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledDatePicker from 'src/shared/components/form/controlledDatePicker';\nimport ControlledEditorInput from 'src/shared/components/form/controlledEditorInput';\nimport ControlledCanHaveChildren from 'src/shared/components/form/controlledCanHaveChildren';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport ControlledPushNoticeCheckbox from 'src/shared/components/form/controlledPushNoticeCheckbox';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\nimport { extraMenu } from 'src/shared/components/navigations/menuList';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\n// Services\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { ContentPageSchema } from 'src/shared/schemas/contentPageSchema';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\nimport { ContentTypeEnum } from 'src/shared/enums/contentType.enum';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { getMenuListAction } from 'src/shared/services/redux/actions/getMenuList';\nimport ControlledSwitchNorway from 'src/shared/components/form/controlledSwitchNorway';\n\nconst CreateMenuPage = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const { id } = useParams();\n const dispatch = useDispatch();\n\n // Global states\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // Local states\n const [selectedImage, setSelectedImage] = useState();\n const [loading, setLoading] = useState(false);\n const [parentContentPage, setParentContentPage] =\n useState();\n\n const formMethods = useForm({\n resolver: yupResolver(ContentPageSchema(t)),\n defaultValues: {\n ID: 1,\n title: '',\n content: '',\n featuredImageText: '',\n sortIndex: 0,\n companyId: parentContentPage?.companyId ?? 1, // TODO: Userns companyId?\n companyId2: userCompany?.id === 1 ? 32 : null,\n parentContentPageId: parentContentPage?.id ?? Number(id),\n contentType: ContentTypeEnum.MenuPage,\n businessAreaTags: [],\n locations: [],\n canHaveChildren: false,\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs().format('YYYY-MM-DD'),\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n const getParentContentPageDetails = useCallback(async () => {\n try {\n const newsAPI = new ContentPageAPI();\n setLoading(true);\n const res = await newsAPI.Get(id);\n setParentContentPage(res?.result);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n ConsoleHelper.log(error ?? 'Unkown error: getparentContentPageDetails');\n }\n }, [id]);\n\n useEffect(() => {\n getParentContentPageDetails();\n }, [getParentContentPageDetails, id]);\n\n const getLinkToParent = () => {\n let linkTo = '/';\n if (parentContentPage) {\n linkTo = `/${parentContentPage?.contentType}/${id}`;\n }\n return linkTo;\n };\n\n const formSubmit: SubmitHandler = async (\n data: IContentPage,\n ) => {\n const newsData = data;\n setLoading(true);\n const formData = new FormData();\n // Om featured image vald\n if (selectedImage) {\n formData.append('featuredDocument', selectedImage);\n }\n const businessAreaTagIDs: any[] = [];\n if (data.businessAreaTags) {\n data.businessAreaTags.forEach((tag: any) => {\n if (tag.id) {\n businessAreaTagIDs.push(tag.id.toString());\n }\n });\n }\n const tagIDs: string[] = [];\n if (data?.locations) {\n data.locations.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id.toString());\n }\n });\n }\n if (data?.roles) {\n data.roles.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id.toString());\n }\n });\n }\n tagIDs.forEach((element) => {\n formData.append('tags', element);\n });\n businessAreaTagIDs.forEach((element) => {\n formData.append('businessAreaTags', element);\n });\n formData.append('title', newsData.title);\n formData.append('iD', newsData?.ID?.toString() ?? '1');\n formData.append('content', newsData.content ?? '');\n formData.append('featuredImageText', newsData.featuredImageText ?? '');\n if (userCompany?.id) {\n formData.append('companyId', userCompany?.id?.toString());\n }\n // Publicera till norska bolag från Instalco SE\n if (data.companyId2 === 32) {\n formData.append('companyId2', '32');\n }\n formData.append('hideInMenu', 'false');\n formData.append('sendNotice', data.sendNotice.toString());\n formData.append('sendEmail', data.sendEmail.toString());\n formData.append('canHaveChildren', data.canHaveChildren ? 'true' : 'false');\n formData.append('contentType', newsData.contentType ?? '');\n formData.append('sortIndex', newsData.sortIndex ?? '0');\n if (parentContentPage && parentContentPage.id !== 0) {\n formData.append('parentContentPageId', parentContentPage?.id?.toString());\n }\n formData.append(\n 'publishDate',\n dayjs(newsData.publishDate).format('YYYY-MM-DD'),\n );\n try {\n const newsAPI = new ContentPageAPI();\n await newsAPI.CreateFormData(formData);\n dispatch(getMenuListAction(extraMenu(t), userCompany?.id));\n setLoading(false);\n toast.success(`${t('Done!')}`, {\n theme: 'colored',\n });\n reset();\n history.push(getLinkToParent());\n } catch (error) {\n ConsoleHelper.log('error create menupage::', error);\n setLoading(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n // Ändring av featured image\n const onFeaturedImageChange = useCallback((file: File | undefined) => {\n if (file) {\n ConsoleHelper.log('file for featuredImage', file);\n setSelectedImage(file);\n } else setSelectedImage(undefined);\n }, []);\n\n return (\n \n {loading && }\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n reset()}\n linkTo={getLinkToParent()}\n saveDisabled={loading}\n />\n \n \n
\n \n }\n />\n );\n};\n\nexport default CreateMenuPage;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { Box, LinearProgress } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport dayjs from 'dayjs';\nimport { yupResolver } from '@hookform/resolvers/yup';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledDatePicker from 'src/shared/components/form/controlledDatePicker';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport ControlledPushNoticeCheckbox from 'src/shared/components/form/controlledPushNoticeCheckbox';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport { extraMenu } from 'src/shared/components/navigations/menuList';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\n// Services\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { ContentTypeEnum } from 'src/shared/enums/contentType.enum';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\nimport { ContentPageSchema } from 'src/shared/schemas/contentPageSchema';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport {\n getBusinessAreas,\n locationsTags,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\nimport { getMenuListAction } from 'src/shared/services/redux/actions/getMenuList';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport ControlledSwitchNorway from 'src/shared/components/form/controlledSwitchNorway';\n\nconst EditNewsListPage = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const { id } = useParams();\n const dispatch = useDispatch();\n\n // Global states\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // Local states\n const [loading, setLoading] = useState(false);\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const [pageToEdit, setPageToEdit] = useState();\n\n const formMethods = useForm({\n resolver: yupResolver(ContentPageSchema(t)),\n defaultValues: {\n title: '',\n sortIndex: '',\n contentType: ContentTypeEnum.NewsListPage,\n businessAreaTags: [],\n locations: [],\n roles: [],\n canHaveChildren: true,\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs().format('YYYY-MM-DD'),\n companyId2: null,\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n // Hämta nyhetslistan som ska editeras för att sätta formstates\n const getNewsListPageDetails = useCallback(async () => {\n try {\n const newsAPI = new ContentPageAPI();\n setLoading(true);\n const res = await newsAPI.Get(id);\n setPageToEdit(res?.result);\n reset({\n title: res?.result?.title,\n sortIndex: res?.result?.sortIndex?.toString(),\n contentType: res?.result?.contentType,\n canHaveChildren: true,\n companyId: res?.result?.companyId,\n businessAreaTags: getBusinessAreas(res?.result?.businessAreaTags),\n locations: locationsTags(res?.result?.tags),\n roles: rolesTags(res?.result?.tags),\n sendNotice: false,\n publishDate: dayjs(res?.result?.publishDate).format('YYYY-MM-DD'),\n companyId2: res?.result?.companyId2 ?? null,\n });\n setLoading(false);\n } catch (error) {\n setLoading(false);\n ConsoleHelper.log(error ?? 'Unkown error: getNewsListPageDetails');\n }\n }, [id, reset]);\n\n useEffect(() => {\n getNewsListPageDetails();\n }, [getNewsListPageDetails, id]);\n\n const formSubmit: SubmitHandler = async (\n data: IContentPage,\n ) => {\n const newData = data;\n setLoading(true);\n const businessAreaTagIDs: number[] = [];\n const tagIDs: number[] = [];\n if (newData?.locations) {\n newData.locations.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id);\n }\n });\n }\n if (newData?.roles) {\n newData.roles.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id);\n }\n });\n }\n if (data.businessAreaTags) {\n data.businessAreaTags.forEach((tag: TagsResponse) => {\n if (tag.id) {\n businessAreaTagIDs.push(tag?.id);\n }\n });\n }\n newData.businessAreaTags = businessAreaTagIDs;\n newData.tags = tagIDs;\n newData.publishDate = dayjs(data.publishDate).format('YYYY-MM-DD');\n newData.canHaveChildren = data.canHaveChildren;\n newData.companyId2 = data.companyId2; // Publicera till norska bolag från Instalco SE\n newData.content = '';\n if (\n pageToEdit?.parentContentPageId &&\n pageToEdit?.parentContentPageId !== 0\n )\n newData.parentContentPageId = pageToEdit?.parentContentPageId;\n ConsoleHelper.log('newData', newData);\n try {\n const newsAPI = new ContentPageAPI();\n await newsAPI.updateNewsWithID(id, newData);\n dispatch(getMenuListAction(extraMenu(t), userCompany?.id));\n setLoading(false);\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n reset();\n history.push(`/NewsListPage/${pageToEdit?.id}`);\n } catch (error) {\n ConsoleHelper.log('error ', error);\n setLoading(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n const deleteNews = () => {\n setShowDeleteDialog(true);\n };\n\n // Radera nyhetlista mot API\n const removeNews = async () => {\n setLoading(true);\n try {\n const newsAPI = new ContentPageAPI();\n if (id !== undefined) {\n await newsAPI.deleteItemWithQueryID(Number(id));\n setLoading(false);\n setShowDeleteDialog(false);\n toast.success(t('Deleted!'), {\n theme: 'colored',\n });\n reset();\n history.go(-2);\n }\n } catch (error) {\n setLoading(false);\n setShowDeleteDialog(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n return (\n \n {loading && }\n \n
\n \n \n \n \n \n \n \n \n reset()}\n linkTo={`/NewsListPage/${id}`}\n saveDisabled={loading}\n showDeleteButton={false}\n onDelete={deleteNews}\n />\n \n \n
\n setShowDeleteDialog(false)}\n confirmButtonClick={() => removeNews()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n }\n />\n );\n};\n\nexport default EditNewsListPage;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport dayjs from 'dayjs';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { toast } from 'react-toastify';\nimport { Box, LinearProgress } from '@mui/material';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledDatePicker from 'src/shared/components/form/controlledDatePicker';\nimport ControlledEditorInput from 'src/shared/components/form/controlledEditorInput';\nimport ControlledCanHaveChildren from 'src/shared/components/form/controlledCanHaveChildren';\nimport ControlledPushNoticeCheckbox from 'src/shared/components/form/controlledPushNoticeCheckbox';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport { extraMenu } from 'src/shared/components/navigations/menuList';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport ImageDropZone, {\n FileExtended,\n} from 'src/shared/components/form/imageDropZone';\n// Services\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { ContentPageSchema } from 'src/shared/schemas/contentPageSchema';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\nimport { ContentTypeEnum } from 'src/shared/enums/contentType.enum';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { DocumentAPI } from 'src/shared/services/api/documentAPI';\nimport {\n getBusinessAreas,\n locationsTags,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\nimport { getMenuListAction } from 'src/shared/services/redux/actions/getMenuList';\nimport ControlledSwitchNorway from 'src/shared/components/form/controlledSwitchNorway';\n\nconst EditMenuPage = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const { id } = useParams();\n const dispatch = useDispatch();\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n const [featuredImageFile, setFeaturedImageFile] = useState(\n undefined,\n ); // Befintlig beaturedImage som file\n const [selectedImage, setSelectedImage] = useState(); // FeaturedImage som laddas upp av user\n const [loading, setLoading] = useState(false);\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const [pageToEdit, setPageToEdit] = useState();\n\n const formMethods = useForm({\n resolver: yupResolver(ContentPageSchema(t)),\n defaultValues: {\n title: '',\n content: '',\n featuredImageText: '',\n sortIndex: 0,\n contentType: ContentTypeEnum.MenuPage,\n businessAreaTags: [],\n locations: [],\n roles: [],\n canHaveChildren: false,\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs().format('YYYY-MM-DD'),\n companyId2: null,\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n const getFeaturedImageFile = async (imageID: number | string) => {\n const documentApi = new DocumentAPI();\n try {\n const docRes = await documentApi.Get(imageID);\n if (docRes) {\n setFeaturedImageFile(docRes.result as File);\n }\n } catch (err) {\n ConsoleHelper.log('Error get doc', err);\n }\n };\n\n const getPageToEdit = useCallback(async () => {\n try {\n const newsAPI = new ContentPageAPI();\n setLoading(true);\n const res = await newsAPI.Get(id);\n setPageToEdit(res?.result);\n reset({\n title: res?.result?.title,\n content: res?.result?.content ?? '',\n featuredImageText: res?.result?.featuredImageText ?? '',\n featuredImageDocumentId: res?.result?.featuredImageDocumentId,\n sortIndex: res?.result?.sortIndex,\n contentType: res?.result?.contentType,\n canHaveChildren: res?.result?.canHaveChildren,\n companyId: res?.result?.companyId,\n businessAreaTags: getBusinessAreas(res.result?.businessAreaTags),\n locations: locationsTags(res?.result?.tags),\n roles: rolesTags(res?.result?.tags),\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs(res?.result?.publishDate).format('YYYY-MM-DD'),\n companyId2: res?.result?.companyId2 ?? null,\n });\n if (\n res?.result?.featuredImageDocumentId &&\n res?.result?.featuredImageDocumentId !== 0\n ) {\n getFeaturedImageFile(res?.result?.featuredImageDocumentId);\n }\n setLoading(false);\n } catch (error) {\n setLoading(false);\n ConsoleHelper.log(error ?? 'Unkown error: getPageToEdit');\n }\n }, [id, reset]);\n\n useEffect(() => {\n getPageToEdit();\n }, [getPageToEdit, id]);\n\n // Ändring av featured image\n const onFeaturedImageChange = useCallback(\n (file: FileExtended | undefined) => {\n if (!file?.id) setFeaturedImageFile(undefined); // Om filen som lagts tll inte har id är det en ny fil som ska sparas och initial fil tas bort\n if (file) {\n ConsoleHelper.log('file for featuredImage', file);\n setSelectedImage(file);\n } else setSelectedImage(undefined);\n },\n [],\n );\n\n const formSubmit: SubmitHandler = async (\n data: IContentPage,\n ) => {\n const contentPageApi = new ContentPageAPI();\n const documentApi = new DocumentAPI();\n const newData = data;\n // Featured image\n if (!selectedImage) {\n ConsoleHelper.log('Ingen featured image');\n newData.featuredImageDocumentId = null;\n } else if (selectedImage && !featuredImageFile) {\n ConsoleHelper.log('Ny featured image att spara');\n try {\n const formData = new FormData();\n formData.append('iD', '1');\n formData.append('description', data.featuredImageText ?? '');\n formData.append('fileData', selectedImage);\n const resDoc = await documentApi.CreateFormData(formData);\n if (resDoc !== undefined || resDoc !== null) {\n newData.featuredImageDocumentId = resDoc?.id;\n }\n } catch (err) {\n ConsoleHelper.log('Error save featured image', err);\n }\n } else {\n ConsoleHelper.log('Featured image oförändrad');\n // Om bildtexten ändras löser API:et det med featuredImageText som skickas med data på Update.\n }\n const tagIDs: number[] = [];\n const businessAreaTagIDs: any[] = [];\n if (newData.businessAreaTags) {\n newData.businessAreaTags.forEach((tag: any) => {\n if (tag.id) {\n businessAreaTagIDs.push(tag.id.toString());\n }\n });\n }\n if (newData?.locations) {\n newData.locations.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id);\n }\n });\n }\n if (newData?.roles) {\n newData.roles.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id);\n }\n });\n }\n newData.tags = tagIDs;\n newData.businessAreaTags = businessAreaTagIDs;\n newData.publishDate = dayjs(data.publishDate).format('YYYY-MM-DD');\n newData.companyId2 = data.companyId2; // Publicera till norska bolag från Instalco SE\n if (\n pageToEdit?.parentContentPageId &&\n pageToEdit?.parentContentPageId !== 0\n )\n newData.parentContentPageId = pageToEdit?.parentContentPageId;\n ConsoleHelper.log('NewData MenuPage', newData);\n setLoading(true);\n try {\n await contentPageApi.updateNewsWithID(id, newData);\n if (!featuredImageFile && pageToEdit?.featuredImageDocumentId !== 0) {\n // Radera gamla featured image efter att sidan är sparad om den är borttagen eller ersatt i lokalt state\n ConsoleHelper.log(\n 'Radera gammal bild mot API',\n pageToEdit?.featuredImageDocumentId,\n );\n await documentApi.deleteItemWithQueryID(\n Number(pageToEdit?.featuredImageDocumentId),\n );\n }\n dispatch(getMenuListAction(extraMenu(t), userCompany?.id));\n setLoading(false);\n toast.success(`${t('Done!')}`, {\n theme: 'colored',\n });\n reset();\n history.push(`/MenuPage/${id}`);\n } catch (error) {\n ConsoleHelper.log('error', error);\n setLoading(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n // Öppna confirm dialog vid radera nyheten\n const deleteNews = () => {\n setShowDeleteDialog(true);\n };\n\n // Radera nyhet mot API\n const removeMenuPage = async () => {\n setLoading(true);\n try {\n const contentPageApi = new ContentPageAPI();\n if (id !== undefined) {\n await contentPageApi.deleteItemWithQueryID(Number(id));\n setLoading(false);\n setShowDeleteDialog(false);\n dispatch(getMenuListAction(extraMenu(t), userCompany?.id));\n toast.success(t('Deleted!'), {\n theme: 'colored',\n });\n reset();\n history.go(-2);\n }\n } catch (error) {\n setLoading(false);\n setShowDeleteDialog(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n return (\n \n {loading && }\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n reset()}\n linkTo={`/MenuPage/${id}`}\n saveDisabled={loading}\n showDeleteButton={id !== undefined}\n onDelete={deleteNews}\n />\n \n \n
\n setShowDeleteDialog(false)}\n confirmButtonClick={() => removeMenuPage()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n }\n />\n );\n};\n\nexport default EditMenuPage;\n","import React, { DragEvent, useState, useCallback, useEffect } from 'react';\nimport {\n Button,\n CardMedia,\n Grid,\n IconButton,\n List,\n ListItem,\n Paper,\n Typography,\n} from '@mui/material';\nimport getId from 'src/shared/helpers/idGenerator';\nimport {\n Close,\n CloudUpload,\n InsertDriveFileOutlined,\n} from '@mui/icons-material';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { useSelector } from 'react-redux';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { DocumentAPI } from 'src/shared/services/api/documentAPI';\nimport ConfirmDialogModal from '../atoms/confirmDialog';\n\ntype FileDropZoneProps = {\n onFilesChange: (files: File[]) => void;\n onlyAllowedTypes?: boolean;\n validTypes: string[];\n initialFiles?: File[] | undefined;\n};\n\nexport interface FileExtended extends File {\n originalFilename?: string | undefined;\n id?: string | number | undefined;\n mimeType?: string | undefined;\n}\nconst FileDropZone = (props: FileDropZoneProps) => {\n const { t } = useTranslation(['common']);\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const { onFilesChange, onlyAllowedTypes, validTypes, initialFiles } = props;\n const [validFiles, setValidFiles] = useState([]);\n const [itemTobeDeleted, setItemTobeDeleted] = useState<\n FileExtended | undefined\n >();\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const [invalidFiles, setInvalidFiles] = useState([]); // if we want to show a file list with invalid files..\n const [inputId] = useState(() => getId('fileInput-'));\n\n // Sätter initalt state med befintliga filer\n useEffect(() => {\n setValidFiles(initialFiles ?? []);\n }, [initialFiles]);\n\n // Sätter state i parent för ändrade filer\n useEffect(() => {\n onFilesChange(validFiles);\n }, [onFilesChange, validFiles]);\n\n // Validerar fil\n const validateFile = (newFile: FileExtended) => {\n if (!onlyAllowedTypes) return true;\n if (validTypes.indexOf(newFile.type) === -1) {\n return false;\n }\n return true;\n };\n\n // Validerar & sätter satet för filer\n const validateFiles = (files: FileList) => {\n for (let i = 0; i < files.length; i += 1) {\n const fileToAdd = files[i];\n if (validateFile(files[i])) {\n // add to an array so we can display the name of file\n setValidFiles((prevArray) => [...prevArray, fileToAdd]);\n } else {\n setInvalidFiles((prevArray) => [...prevArray, fileToAdd]);\n toast.warn(`${t('common:InvalidFile')}: ${fileToAdd.name}`);\n }\n }\n };\n\n // Metoder för drag & drop\n const fileDrop = (e: DragEvent) => {\n e.preventDefault();\n const { files } = e.dataTransfer;\n validateFiles(files);\n };\n const dragOver = (e: DragEvent) => {\n e.preventDefault();\n };\n const dragEnter = (e: DragEvent) => {\n e.preventDefault();\n };\n const dragLeave = (e: DragEvent) => {\n e.preventDefault();\n };\n\n // On change i input elemtn\n const changeHandler = async (e: React.ChangeEvent) => {\n e.preventDefault();\n ConsoleHelper.log('changehandler');\n const { files } = e.target;\n if (files) validateFiles(files);\n e.target.value = ''; // Hack to reset input element (if you select the same file after removing it wont work otherwise)\n };\n\n // Onclick radera fil\n const showDeleteModal = (file: FileExtended) => {\n setItemTobeDeleted(file);\n setShowDeleteDialog(true);\n };\n\n // Raderar fil mot API\n const deleteDocument = async (id: string | number | undefined) => {\n try {\n const documentAPI = new DocumentAPI();\n await documentAPI.deleteItemWithQueryID(Number(id));\n } catch (error) {\n ConsoleHelper.log('error', error);\n }\n };\n\n // Raderar fil i lokal array\n const removeFile = useCallback(\n (name: string) => {\n const validFileIndex = validFiles.findIndex((e) => e.name === name);\n validFiles.splice(validFileIndex, 1);\n setValidFiles([...validFiles]);\n },\n [validFiles],\n );\n\n // Raderar fil efter confirm\n const deleteFile = async () => {\n if (itemTobeDeleted && itemTobeDeleted.id) {\n await deleteDocument(itemTobeDeleted.id);\n removeFile(itemTobeDeleted?.name);\n } else if (itemTobeDeleted?.name) {\n removeFile(itemTobeDeleted?.name);\n }\n setShowDeleteDialog(false);\n };\n const formatSize = (a: number, b = 2) => {\n if (a === 0) return '0 Bytes';\n const c = b < 0 ? 0 : b;\n const d = Math.floor(Math.log(a) / Math.log(1024));\n return `${parseFloat((a / 1024 ** d).toFixed(c))} ${\n ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'][d]\n }`;\n };\n const showImage = (file: FileExtended) => {\n if (file.mimeType && file.mimeType.split('/')[0] === 'image') return true;\n if (file.type?.split('/')[0] === 'image') return true;\n\n return false;\n };\n\n const renderList = useCallback(() => {\n return (\n \n {validFiles.map((file, idx) => {\n return (\n showDeleteModal(file)}\n >\n \n \n }\n divider\n >\n {showImage(file) ? (\n ConsoleHelper.log('error')}\n title={file.name}\n />\n ) : (\n \n )}\n\n \n {file.name}\n \n \n ({formatSize(file.size)})\n \n \n );\n })}\n \n );\n }, [user?.access_token, validFiles]);\n\n return (\n <>\n \n \n \n \n \n \n \n {t('common:Files({count})', { count: validFiles.length })}\n \n {renderList()}\n \n \n setShowDeleteDialog(false)}\n confirmButtonClick={() => deleteFile()}\n confirmTextButton={t('common:OK')}\n cancelTextButton={t('common:Cancel')}\n />\n \n \n );\n};\n\nFileDropZone.defaultProps = {\n onlyAllowedTypes: true,\n initialFiles: undefined,\n};\n\nexport default React.memo(FileDropZone);\n","export enum SustainabilityTabEnum {\n ReportProject = 'reportProject',\n CertifiedProjects = 'certifiedProjects',\n Statistics = 'statistics',\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { Box, Grid, Typography, LinearProgress } from '@mui/material';\nimport { toast } from 'react-toastify';\nimport dayjs from 'dayjs';\nimport { yupResolver } from '@hookform/resolvers/yup';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledDatePicker from 'src/shared/components/form/controlledDatePicker';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport FileDropZone from 'src/shared/components/form/fileDropZone';\nimport ControlledPushNoticeCheckbox from 'src/shared/components/form/controlledPushNoticeCheckbox';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\nimport { extraMenu } from 'src/shared/components/navigations/menuList';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\n// Services\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { ContentTypeEnum } from 'src/shared/enums/contentType.enum';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport ControlledEditorInput from 'src/shared/components/form/controlledEditorInput';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\nimport { ContentPageSchema } from 'src/shared/schemas/contentPageSchema';\nimport { ImageValidTypes } from 'src/shared/components/atoms/validTypes';\nimport { getMenuListAction } from 'src/shared/services/redux/actions/getMenuList';\nimport ControlledSwitchNorway from 'src/shared/components/form/controlledSwitchNorway';\n\nconst CreateGalleryPage = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const dispatch = useDispatch();\n const { id } = useParams();\n\n // Global states\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // Local states\n const [isPushNoticeChecked, setIsPushNoticeChecked] =\n useState(false);\n const [selectedFiles, setSelectedFiles] = useState([]);\n const [loading, setLoading] = useState(false);\n const [parentContentPage, setParentContentPage] =\n useState();\n\n const formMethods = useForm({\n resolver: yupResolver(ContentPageSchema(t)),\n defaultValues: {\n title: '',\n content: '',\n companyId: userCompany?.id,\n companyId2: userCompany?.id === 1 ? 32 : null,\n parentContentPageId: parentContentPage?.id ?? Number(id),\n contentType: ContentTypeEnum.GalleryPage,\n canHaveChildren: false,\n sortIndex: 0,\n businessAreaTags: [],\n locations: [],\n roles: [],\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs().format('YYYY-MM-DD'),\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n const getParentContentPageDetails = useCallback(async () => {\n try {\n const galleyAPI = new ContentPageAPI();\n setLoading(true);\n const res = await galleyAPI.Get(id);\n setParentContentPage(res?.result);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n ConsoleHelper.log(error ?? 'Unkown error: getparentContentPageDetails');\n }\n }, [id]);\n\n useEffect(() => {\n getParentContentPageDetails();\n }, [getParentContentPageDetails, id]);\n\n const getLinkToParent = () => {\n let linkTo = '/';\n if (parentContentPage) {\n linkTo = `/${parentContentPage?.contentType}/${id}`;\n }\n return linkTo;\n };\n\n const onFileChangeFeaturedDocuments = useCallback((files: File[]) => {\n if (files.length > 0) {\n setSelectedFiles(files);\n } else setSelectedFiles([]);\n }, []);\n\n const formSubmit: SubmitHandler = async (\n data: IContentPage,\n ) => {\n const galleyData = data;\n setLoading(true);\n const formData = new FormData();\n // Om dokument till listan valts\n if (selectedFiles.length > 0) {\n selectedFiles.forEach(async (element: any) => {\n formData.append('documentFileList', element);\n });\n }\n // Tags\n const businessAreaTagIDs: any[] = [];\n if (data.businessAreaTags) {\n data.businessAreaTags.forEach((tag: any) => {\n if (tag.id) {\n businessAreaTagIDs.push(tag.id.toString());\n }\n });\n }\n const tagIDs: string[] = [];\n if (data?.locations) {\n data.locations.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id.toString());\n }\n });\n }\n if (data?.roles) {\n data.roles.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id.toString());\n }\n });\n }\n tagIDs.forEach((element) => {\n formData.append('tags', element);\n });\n businessAreaTagIDs.forEach((element) => {\n formData.append('businessAreaTags', element);\n });\n formData.append('title', galleyData.title);\n formData.append('content', galleyData.content ?? '');\n if (userCompany?.id) {\n formData.append('companyId', userCompany?.id?.toString());\n }\n // Publicera till norska bolag från Instalco SE\n if (data.companyId2 === 32) {\n formData.append('companyId2', '32');\n }\n formData.append('hideInMenu', 'false');\n formData.append('sendNotice', data.sendNotice.toString());\n formData.append('sendEmail', data.sendEmail.toString());\n formData.append('canHaveChildren', 'false');\n formData.append('contentType', galleyData.contentType ?? '');\n formData.append('sortIndex', galleyData.sortIndex ?? '0');\n if (parentContentPage && parentContentPage.id !== 0) {\n formData.append('parentContentPageId', parentContentPage?.id?.toString());\n }\n formData.append(\n 'publishDate',\n dayjs(galleyData.publishDate).format('YYYY-MM-DD'),\n );\n try {\n const contentPageApi = new ContentPageAPI();\n await contentPageApi.CreateFormData(formData);\n dispatch(getMenuListAction(extraMenu(t), userCompany?.id));\n setLoading(false);\n toast.success(`${t('Done!')}`, {\n theme: 'colored',\n });\n reset();\n history.push(getLinkToParent());\n } catch (error) {\n ConsoleHelper.log('error', error);\n setLoading(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n return (\n \n {loading && }\n \n
\n \n \n \n \n {t('UploadImages')}\n \n \n \n \n \n \n \n \n reset()}\n linkTo={getLinkToParent()}\n saveDisabled={loading}\n />\n \n \n
\n \n }\n />\n );\n};\n\nexport default CreateGalleryPage;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { toast } from 'react-toastify';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport dayjs from 'dayjs';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { Box, Typography, LinearProgress } from '@mui/material';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledDatePicker from 'src/shared/components/form/controlledDatePicker';\nimport ControlledPushNoticeCheckbox from 'src/shared/components/form/controlledPushNoticeCheckbox';\nimport ControlledEditorInput from 'src/shared/components/form/controlledEditorInput';\nimport ControlledCanHaveChildren from 'src/shared/components/form/controlledCanHaveChildren';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\n// Services\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { ContentTypeEnum } from 'src/shared/enums/contentType.enum';\nimport { ContentPageSchema } from 'src/shared/schemas/contentPageSchema';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\nimport { DocumentAPI } from 'src/shared/services/api/documentAPI';\nimport ImageDropZone from 'src/shared/components/form/imageDropZone';\nimport FileDropZone, {\n FileExtended,\n} from 'src/shared/components/form/fileDropZone';\nimport { AllValidTypes } from 'src/shared/components/atoms/validTypes';\nimport {\n getBusinessAreas,\n locationsTags,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\nimport { getMenuListAction } from 'src/shared/services/redux/actions/getMenuList';\nimport { extraMenu } from 'src/shared/components/navigations/menuList';\nimport ControlledSwitchNorway from 'src/shared/components/form/controlledSwitchNorway';\n\nconst EditDocumentListPage = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const dispatch = useDispatch();\n const { id } = useParams();\n\n // Global states\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n // Local states\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const [featuredImageFile, setFeaturedImageFile] = useState(\n undefined,\n ); // Befintlig beaturedImage som file\n const [selectedImage, setSelectedImage] = useState(); // FeaturedImage som laddas upp av user\n const [selectedFiles, setSelectedFiles] = useState([]); // Dokumentlista lokal array\n const [documentFiles, setDocumentFiles] = useState([]); // Befintlig dokumentlista\n const [pageToEdit, setPageToEdit] = useState(); // Sidan som ska redigeras\n const [loading, setLoading] = useState(false);\n\n const formMethods = useForm({\n resolver: yupResolver(ContentPageSchema(t)),\n defaultValues: {\n title: '',\n content: '',\n featuredImageText: '',\n sortIndex: 0,\n contentType: ContentTypeEnum.DocumentListPage,\n businessAreaTags: [],\n locations: [],\n roles: [],\n canHaveChildren: false,\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs().format('YYYY-MM-DD'),\n companyId2: null,\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n // Ändring av featured image\n const onFeaturedImageChange = useCallback(\n (file: FileExtended | undefined) => {\n if (!file?.id) setFeaturedImageFile(undefined); // Om filen som lagts tll inte har id är det en ny fil som ska sparas och initial fil tas bort\n if (file) {\n ConsoleHelper.log('file for featuredImage', file);\n setSelectedImage(file);\n } else setSelectedImage(undefined);\n },\n [],\n );\n\n // Ändring av dokument till dokumentlistan\n const onFileChangeFeaturedDocuments = useCallback((files: FileExtended[]) => {\n const newFiles = files.filter((x) => x.id === undefined);\n // ConsoleHelper.log('onFileChangeFeaturedDocuments', newFiles);\n setSelectedFiles(newFiles);\n }, []);\n\n const getFeaturedImageFile = async (imageID: number | string) => {\n const documentApi = new DocumentAPI();\n try {\n const docRes = await documentApi.Get(imageID);\n if (docRes) {\n setFeaturedImageFile(docRes.result as File);\n }\n } catch (err) {\n ConsoleHelper.log('Error get doc', err);\n }\n };\n\n const getPageToEdit = useCallback(async () => {\n try {\n const newsAPI = new ContentPageAPI();\n setLoading(true);\n const res = await newsAPI.Get(id);\n setPageToEdit(res?.result);\n if (res?.result?.documentList?.documents) {\n setDocumentFiles(res?.result?.documentList?.documents);\n }\n reset({\n title: res?.result?.title,\n content: res?.result?.content ?? '',\n featuredImageText: res?.result?.featuredImageText ?? '',\n featuredImageDocumentId: res?.result?.featuredImageDocumentId,\n sortIndex: res?.result?.sortIndex,\n contentType: res?.result?.contentType,\n canHaveChildren: res?.result?.canHaveChildren,\n companyId: res?.result?.companyId,\n businessAreaTags: getBusinessAreas(res?.result?.businessAreaTags),\n locations: locationsTags(res?.result?.tags),\n roles: rolesTags(res?.result?.tags),\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs(res?.result?.publishDate).format('YYYY-MM-DD'),\n companyId2: res?.result?.companyId2 ?? null,\n });\n\n if (\n res?.result?.featuredImageDocumentId &&\n res?.result?.featuredImageDocumentId !== 0\n ) {\n getFeaturedImageFile(res?.result?.featuredImageDocumentId);\n }\n setLoading(false);\n } catch (error) {\n setLoading(false);\n ConsoleHelper.log(error ?? 'Unkown error: getPageToEdit');\n }\n }, [id, reset]);\n\n useEffect(() => {\n getPageToEdit();\n }, [getPageToEdit]);\n\n // Spara sida\n const formSubmit: SubmitHandler = async (\n data: IContentPage,\n ) => {\n ConsoleHelper.log('data', data);\n const newData = data;\n setLoading(true);\n const contentPageApi = new ContentPageAPI();\n const documentApi = new DocumentAPI();\n // Featured image\n if (!selectedImage) {\n ConsoleHelper.log('Ingen featured image');\n newData.featuredImageDocumentId = null;\n } else if (selectedImage && !featuredImageFile) {\n ConsoleHelper.log('Ny featured image att spara');\n try {\n const formData = new FormData();\n formData.append('iD', '1');\n formData.append('description', data.featuredImageText ?? '');\n formData.append('fileData', selectedImage);\n const resDoc = await documentApi.CreateFormData(formData);\n if (resDoc !== undefined || resDoc !== null) {\n newData.featuredImageDocumentId = resDoc?.id;\n }\n } catch (err) {\n ConsoleHelper.log('Error save featured image', err);\n }\n } else {\n ConsoleHelper.log('Featured image oförändrad');\n // Om bildtexten ändras löser API:et det med featuredImageText som skickas med data på Update.\n }\n // Dokumentlista\n if (selectedFiles.length > 0) {\n selectedFiles.forEach(async (element) => {\n const documentFile = new FormData();\n documentFile.append('iD', '1');\n documentFile.append('description', '');\n documentFile.append('fileData', element);\n if (pageToEdit?.documentListId && pageToEdit?.documentListId !== 0) {\n documentFile.append(\n 'documentListId',\n pageToEdit?.documentListId?.toString(),\n );\n }\n try {\n const resDocs = await documentApi.CreateFormData(documentFile);\n if (resDocs) {\n ConsoleHelper.log('YAY! All documents saved', resDocs);\n }\n } catch (error) {\n ConsoleHelper.log('Error save document', error);\n }\n });\n }\n // Taggar\n const businessAreaTagIDs: any[] = [];\n if (newData.businessAreaTags) {\n newData.businessAreaTags.forEach((tag: any) => {\n if (tag.id) {\n businessAreaTagIDs.push(tag.id.toString());\n }\n });\n }\n const tagIDs: number[] = [];\n if (newData?.locations) {\n newData.locations.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id);\n }\n });\n }\n if (newData?.roles) {\n newData.roles.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id);\n }\n });\n }\n newData.tags = tagIDs;\n newData.businessAreaTags = businessAreaTagIDs;\n // Övrigt\n newData.publishDate = dayjs(data.publishDate).format('YYYY-MM-DD');\n newData.companyId2 = data.companyId2; // Publicera till norska bolag från Instalco SE\n if (pageToEdit?.documentListId !== 0)\n newData.documentListId = pageToEdit?.documentListId;\n if (\n pageToEdit?.parentContentPageId &&\n pageToEdit?.parentContentPageId !== 0\n )\n newData.parentContentPageId = pageToEdit?.parentContentPageId;\n try {\n await contentPageApi.updateNewsWithID(id, newData); // Uppdatera sidan\n if (!featuredImageFile && pageToEdit?.featuredImageDocumentId !== 0) {\n // Radera gamla featured image efter att sidan är sparad om den är borttagen eller ersatt i lokalt state\n ConsoleHelper.log(\n 'Radera gammal bild mot API',\n pageToEdit?.featuredImageDocumentId,\n );\n await documentApi.deleteItemWithQueryID(\n Number(pageToEdit?.featuredImageDocumentId),\n );\n }\n dispatch(getMenuListAction(extraMenu(t), userCompany?.id));\n setLoading(false);\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n reset();\n history.push(`/DocumentListPage/${pageToEdit?.id}`);\n } catch (error) {\n ConsoleHelper.log('Error save edited page::', error);\n toast.error(t('SomethingWentWrong'));\n }\n setLoading(false);\n };\n\n const onClickDeletePage = () => {\n setShowDeleteDialog(true);\n };\n\n // Radera sidan mot API\n const removeDocumentListPage = async () => {\n setLoading(true);\n try {\n const contentPageApi = new ContentPageAPI();\n if (id !== undefined) {\n await contentPageApi.deleteItemWithQueryID(Number(id));\n setLoading(false);\n setShowDeleteDialog(false);\n dispatch(getMenuListAction(extraMenu(t), userCompany?.id));\n toast.success(t('Deleted!'), {\n theme: 'colored',\n });\n reset();\n history.go(-2);\n }\n } catch (error) {\n ConsoleHelper.log('Error delete page::', error);\n setLoading(false);\n setShowDeleteDialog(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n return (\n \n {loading && }\n \n
\n \n \n \n \n \n \n \n {t('DocumentList')}\n \n \n \n \n \n \n \n \n \n\n reset()}\n linkTo={`/DocumentListPage/${id}`}\n saveDisabled={loading}\n showDeleteButton\n onDelete={onClickDeletePage}\n />\n \n \n
\n setShowDeleteDialog(false)}\n confirmButtonClick={() => removeDocumentListPage()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n }\n />\n );\n};\n\nexport default EditDocumentListPage;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useTranslation } from 'react-i18next';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport dayjs from 'dayjs';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { toast } from 'react-toastify';\nimport { Box, Typography, LinearProgress } from '@mui/material';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledDatePicker from 'src/shared/components/form/controlledDatePicker';\nimport ControlledEditorInput from 'src/shared/components/form/controlledEditorInput';\nimport ControlledCanHaveChildren from 'src/shared/components/form/controlledCanHaveChildren';\nimport ControlledPushNoticeCheckbox from 'src/shared/components/form/controlledPushNoticeCheckbox';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport ImageDropZone from 'src/shared/components/form/imageDropZone';\nimport FileDropZone from 'src/shared/components/form/fileDropZone';\nimport { extraMenu } from 'src/shared/components/navigations/menuList';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\n// Services\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { ContentTypeEnum } from 'src/shared/enums/contentType.enum';\nimport { ContentPageSchema } from 'src/shared/schemas/contentPageSchema';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\nimport { AllValidTypes } from 'src/shared/components/atoms/validTypes';\nimport { getMenuListAction } from 'src/shared/services/redux/actions/getMenuList';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport ControlledSwitchNorway from 'src/shared/components/form/controlledSwitchNorway';\n\nconst CreateDodumentListPage = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const dispatch = useDispatch();\n const { id } = useParams();\n\n // Global states\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // Local states\n const [loading, setLoading] = useState(false);\n const [selectedImage, setSelectedImage] = useState(); // FeaturedImage som laddas upp av user\n const [selectedFiles, setSelectedFiles] = useState([]); // Dokumentlista lokal array\n const [parentContentPage, setParentContentPage] = useState<\n ContentPageResponse | undefined\n >();\n\n const formMethods = useForm({\n resolver: yupResolver(ContentPageSchema(t)),\n defaultValues: {\n title: '',\n content: '',\n featuredImageText: '',\n companyId: userCompany?.id,\n companyId2: userCompany?.id === 1 ? 32 : null,\n parentContentPageId: parentContentPage?.id ?? Number(id),\n contentType: ContentTypeEnum.DocumentListPage,\n featuredImageDocumentId: undefined,\n businessAreaTags: [],\n locations: [],\n roles: [],\n sendNotice: false,\n sendEmail: false,\n sortIndex: '0',\n canHaveChildren: false,\n publishDate: dayjs().format('YYYY-MM-DD'),\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n const getLinkToParent = () => {\n let linkTo = '/';\n if (parentContentPage) {\n linkTo = `/${parentContentPage?.contentType}/${id}`;\n }\n return linkTo;\n };\n\n // Ändring av featured image\n const onFeaturedImageChange = useCallback((file: File | undefined) => {\n if (file) {\n ConsoleHelper.log('file for featuredImage', file);\n setSelectedImage(file);\n } else setSelectedImage(undefined);\n }, []);\n\n // Ändring av dokument till dokumentlistan\n const onFileChangeFeaturedDocuments = useCallback((files: File[]) => {\n ConsoleHelper.log('onFileChangeFeaturedDocuments', files);\n setSelectedFiles(files);\n }, []);\n\n const getParentContentPageDetails = useCallback(async () => {\n ConsoleHelper.log('getParentContentPageDetails runs');\n try {\n const documentAPI = new ContentPageAPI();\n setLoading(true);\n const res = await documentAPI.Get(id);\n setParentContentPage(res?.result);\n setLoading(false);\n } catch (error) {\n setLoading(false);\n ConsoleHelper.log(error ?? 'Unkown error: getparentContentPageDetails');\n }\n }, [id]);\n\n useEffect(() => {\n // window.addEventListener('focus', getParentContentPageDetails);\n getParentContentPageDetails();\n }, [getParentContentPageDetails]);\n\n const formSubmit: SubmitHandler = async (\n data: IContentPage,\n ) => {\n setLoading(true);\n ConsoleHelper.log('data', data);\n const formData = new FormData();\n // Om featued image vald\n if (selectedImage) {\n ConsoleHelper.log('selectedImage to add', selectedImage);\n formData.append('featuredDocument', selectedImage);\n // FeaturedImageText tas från data och läggs på dokumentet i API\n }\n // Om dokument till listan valts\n if (selectedFiles.length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // TODO: Typa\n selectedFiles.forEach(async (element: any) => {\n formData.append('documentFileList', element);\n });\n }\n formData.append('title', data.title);\n formData.append('content', data.content ?? '');\n if (userCompany?.id) {\n formData.append('companyId', userCompany?.id?.toString());\n }\n // Publicera till norska bolag från Instalco SE\n if (data.companyId2 === 32) {\n formData.append('companyId2', '32');\n }\n const businessAreaTagIDs: string[] = [];\n if (data.businessAreaTags) {\n data.businessAreaTags.forEach((tag: TagsResponse) => {\n if (tag.id) {\n businessAreaTagIDs.push(tag.id.toString());\n }\n });\n }\n const tagIDs: string[] = [];\n if (data?.locations) {\n data.locations.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id.toString());\n }\n });\n }\n if (data?.roles) {\n data.roles.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id.toString());\n }\n });\n }\n tagIDs.forEach((element) => {\n formData.append('tags', element);\n });\n businessAreaTagIDs.forEach((element) => {\n formData.append('businessAreaTags', element);\n });\n\n formData.append('hideInMenu', 'false');\n formData.append('sendNotice', data.sendNotice.toString());\n formData.append('sendEmail', data.sendEmail.toString());\n formData.append('canHaveChildren', data.canHaveChildren ? 'true' : 'false');\n formData.append('contentType', data.contentType ?? '');\n formData.append('sortIndex', data.sortIndex ?? '0');\n if (data.parentContentPageId && data.parentContentPageId !== 0) {\n formData.append(\n 'parentContentPageId',\n data.parentContentPageId?.toString(),\n );\n }\n\n formData.append(\n 'publishDate',\n dayjs(data.publishDate).format('YYYY-MM-DD'),\n );\n try {\n const documentAPI = new ContentPageAPI();\n await documentAPI.CreateFormData(formData);\n dispatch(getMenuListAction(extraMenu(t), userCompany?.id));\n setLoading(false);\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n reset();\n history.push(getLinkToParent());\n } catch (error) {\n ConsoleHelper.log('error save page', error);\n setLoading(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n return (\n \n {loading && }\n \n
\n \n \n \n \n \n \n \n {t('DocumentList')}\n \n \n \n \n \n \n \n \n \n reset()}\n linkTo={getLinkToParent()}\n saveDisabled={loading}\n showDeleteButton={false}\n />\n \n \n
\n \n }\n />\n );\n};\n\nexport default CreateDodumentListPage;\n","import { useCallback, useEffect, useState } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { Box, Typography, LinearProgress } from '@mui/material';\nimport { toast } from 'react-toastify';\nimport dayjs from 'dayjs';\nimport { yupResolver } from '@hookform/resolvers/yup';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledDatePicker from 'src/shared/components/form/controlledDatePicker';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport FileDropZone, {\n FileExtended,\n} from 'src/shared/components/form/fileDropZone';\nimport ControlledPushNoticeCheckbox from 'src/shared/components/form/controlledPushNoticeCheckbox';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\nimport { extraMenu } from 'src/shared/components/navigations/menuList';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\n// Services\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { ContentTypeEnum } from 'src/shared/enums/contentType.enum';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport ControlledEditorInput from 'src/shared/components/form/controlledEditorInput';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\nimport { ContentPageSchema } from 'src/shared/schemas/contentPageSchema';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport { ImageValidTypes } from 'src/shared/components/atoms/validTypes';\nimport {\n getBusinessAreas,\n locationsTags,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\nimport { getMenuListAction } from 'src/shared/services/redux/actions/getMenuList';\nimport { DocumentAPI } from 'src/shared/services/api/documentAPI';\nimport ControlledSwitchNorway from 'src/shared/components/form/controlledSwitchNorway';\n\nconst EditGalleryPage = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const dispatch = useDispatch();\n const { id } = useParams();\n\n // Global states\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // Local states\n const [pageToEdit, setPageToEdit] = useState();\n const [selectedFiles, setSelectedFiles] = useState(\n [],\n );\n const [documentFiles, setDocumentFiles] = useState([]);\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const formMethods = useForm({\n resolver: yupResolver(ContentPageSchema(t)),\n defaultValues: {\n title: '',\n content: '',\n featuredImageText: '',\n sortIndex: 0,\n contentType: ContentTypeEnum.GalleryPage,\n businessAreaTags: [],\n locations: [],\n roles: [],\n canHaveChildren: false,\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs().format('YYYY-MM-DD'),\n companyId2: null,\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n const getPageToEdit = useCallback(async () => {\n try {\n const contentPageApi = new ContentPageAPI();\n setLoading(true);\n const res = await contentPageApi.Get(id);\n setPageToEdit(res?.result);\n if (res?.result?.documentList?.documents) {\n setDocumentFiles(res?.result?.documentList?.documents);\n }\n reset({\n title: res?.result?.title,\n content: res?.result?.content ?? '',\n sortIndex: res?.result?.sortIndex,\n contentType: ContentTypeEnum.GalleryPage,\n companyId: res?.result?.companyId,\n businessAreaTags: getBusinessAreas(res?.result?.businessAreaTags),\n locations: locationsTags(res?.result?.tags),\n roles: rolesTags(res?.result?.tags),\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs(res?.result?.publishDate).format('YYYY-MM-DD'),\n companyId2: res?.result?.companyId2 ?? null,\n });\n setLoading(false);\n } catch (error) {\n setLoading(false);\n ConsoleHelper.log(error ?? 'Unkown error: getPageToEdit');\n }\n }, [id, reset]);\n\n useEffect(() => {\n // window.addEventListener('focus', getPageToEdit);\n getPageToEdit();\n }, [getPageToEdit, id]);\n\n const formSubmit: SubmitHandler = async (\n data: IContentPage,\n ) => {\n setLoading(true);\n const galleyData = data;\n const documentApi = new DocumentAPI();\n if (selectedFiles.length > 0) {\n ConsoleHelper.log('all docs to save in gallery editPage', selectedFiles);\n selectedFiles.forEach(async (element) => {\n const documentFile = new FormData();\n documentFile.append('iD', '1');\n documentFile.append('description', '');\n documentFile.append('fileData', element);\n if (pageToEdit?.documentListId && pageToEdit?.documentListId !== 0) {\n documentFile.append(\n 'documentListId',\n pageToEdit?.documentListId?.toString(),\n );\n }\n try {\n const resDocs = await documentApi.CreateFormData(documentFile);\n if (resDocs) {\n ConsoleHelper.log('all docs saved', resDocs);\n }\n } catch (error) {\n ConsoleHelper.log('error docs', error);\n }\n });\n }\n const businessAreaTagIDs: any[] = [];\n if (galleyData.businessAreaTags) {\n galleyData.businessAreaTags.forEach((tag: any) => {\n if (tag.id) {\n businessAreaTagIDs.push(tag.id.toString());\n }\n });\n }\n const tagIDs: number[] = [];\n if (galleyData?.locations) {\n galleyData.locations.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id);\n }\n });\n }\n if (galleyData?.roles) {\n galleyData.roles.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id);\n }\n });\n }\n galleyData.tags = tagIDs;\n galleyData.businessAreaTags = businessAreaTagIDs;\n galleyData.publishDate = dayjs(data.publishDate).format('YYYY-MM-DD');\n galleyData.companyId2 = data.companyId2; // Publicera till norska bolag från Instalco SE\n\n if (pageToEdit?.documentListId !== 0)\n galleyData.documentListId = pageToEdit?.documentListId;\n if (\n pageToEdit?.parentContentPageId &&\n pageToEdit?.parentContentPageId !== 0\n )\n galleyData.parentContentPageId = pageToEdit?.parentContentPageId;\n\n ConsoleHelper.log('GalleyData to put', galleyData);\n try {\n const contentPageApi = new ContentPageAPI();\n await contentPageApi.updateNewsWithID(id, galleyData);\n dispatch(getMenuListAction(extraMenu(t), userCompany?.id));\n setLoading(false);\n toast.success(`${t('Done!')}`, {\n theme: 'colored',\n });\n reset();\n history.push(`/GalleryPage/${id}`);\n } catch (error) {\n setLoading(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n // Ändring av dokument till dokumentlistan\n const onFileChangeFeaturedDocuments = useCallback((files: FileExtended[]) => {\n const newFiles = files.filter((x) => x.id === undefined);\n // ConsoleHelper.log('onFileChangeFeaturedDocuments', newFiles);\n setSelectedFiles(newFiles);\n }, []);\n\n const deleteGalleryPage = async () => {\n setLoading(true);\n try {\n const newsAPI = new ContentPageAPI();\n if (id !== undefined) {\n await newsAPI.deleteItemWithQueryID(Number(id));\n setLoading(false);\n setShowDeleteDialog(false);\n dispatch(getMenuListAction(extraMenu(t), userCompany?.id));\n toast.success(t('Deleted!'), {\n theme: 'colored',\n });\n reset();\n history.go(-2);\n }\n } catch (error) {\n setLoading(false);\n setShowDeleteDialog(false);\n toast.error(t('SomethingWentWrong'));\n }\n };\n\n return (\n \n {loading && }\n \n
\n \n \n \n \n {t('UploadImages')}\n \n \n \n \n \n \n \n \n reset()}\n linkTo={`/GalleryPage/${id}`}\n saveDisabled={loading}\n showDeleteButton\n onDelete={() => setShowDeleteDialog(true)}\n />\n \n \n
\n setShowDeleteDialog(false)}\n confirmButtonClick={deleteGalleryPage}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n }\n />\n );\n};\n\nexport default EditGalleryPage;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n// MUI\nimport { Box, Grid, Typography } from '@mui/material';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { NotificationAPI } from 'src/shared/services/api/notificationAPI';\nimport { NotificationResponse } from 'src/shared/services/api/response/notificationResponse';\n\nconst DirectMessagePage = () => {\n const { id } = useParams();\n const { t } = useTranslation();\n const [item, setItem] = useState(undefined);\n\n const fetchNotification = useCallback(async () => {\n const api = new NotificationAPI();\n try {\n const res = await api.Get(id);\n setItem(res.result);\n } catch (err: any) {\n setItem(undefined);\n }\n }, [id]);\n\n useEffect(() => {\n fetchNotification();\n }, [fetchNotification]);\n\n return (\n \n \n {item ? (\n \n {item.title}\n \n {item.message}\n \n \n ) : (\n {t('DirectMessageEmpty')}\n )}\n \n \n );\n};\n\nexport default DirectMessagePage;\n","import { PagedResult, SingleResult } from 'src/shared/services/api/baseResults';\nimport AxiosInstance from './axiosInstanceService';\n\nexport abstract class BaseAPIV2 {\n protected readonly controllerPath: string;\n\n constructor(controllerPath: string) {\n this.controllerPath = `v2/${controllerPath}`;\n }\n\n public Get = (id: string | number) =>\n AxiosInstance.get>(\n `${this.controllerPath}/${id}`,\n {},\n );\n\n public GetAll = (options: IOptions) =>\n AxiosInstance.get>(`${this.controllerPath}`, {\n params: options,\n });\n\n public Create = (req: IRequest) =>\n AxiosInstance.post(`${this.controllerPath}`, req);\n\n public CreateList = (req: Array) =>\n AxiosInstance.post(`${this.controllerPath}`, req);\n\n public Update = (id: number | string, req: IRequest) =>\n AxiosInstance.put(`${this.controllerPath}/${id}`, req);\n\n public Delete = (id: IOptions) =>\n AxiosInstance.delete(`${this.controllerPath}`, {\n params: id,\n });\n}\n","export enum ProjectStatusEnum {\n All,\n Created,\n ReadyForApproval,\n Approved,\n Denied,\n SupplementRequested,\n}\n","import { SustainabilityReportOptions } from './options/sustainabilityReportOptions';\nimport { SustainabilityReportRequest } from './request/sustainabilityReportRequest';\nimport { SustainabilityStatusUpdateRequest } from './request/sustainabilityStatusUpdateRequest';\nimport { SustainabilityReportResponse } from './response/sustainabilityReportResponse';\nimport AxiosInstance from './axiosInstanceService';\nimport { BaseAPIV2 } from './baseAPIV2';\n\nexport class SustainabilityAPI extends BaseAPIV2<\n SustainabilityReportResponse,\n SustainabilityReportOptions,\n SustainabilityReportRequest\n> {\n constructor() {\n super('Sustainability');\n }\n\n public UpdateStatus = (id: number, req: SustainabilityStatusUpdateRequest) =>\n AxiosInstance.put(`${this.controllerPath}/${id}/setStatus`, req);\n\n public GetApprovers = () =>\n AxiosInstance.get(`${this.controllerPath}/Special/ApproverUsers`);\n}\n","import { useEffect, useState } from 'react';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { BusinessAreaAPI } from 'src/shared/services/api/businessAreasAPI';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { useIsMounted } from './useIsMounted';\n\nexport const useFetchBusinessAreas = () => {\n const isMounted = useIsMounted();\n const [businessAreasData, setBusinessAreasData] =\n useState();\n const [businessAreasError, setBusinessAreasError] = useState(null);\n const [businessAreasLoading, setBusinessAreasLoading] = useState(false);\n\n useEffect(() => {\n const fetchBusinessAreas = async () => {\n const businessAreaAPI = new BusinessAreaAPI();\n try {\n const res = await businessAreaAPI.GetAll({\n sortDir: 'asc',\n pageSize: 50,\n });\n if (isMounted()) {\n if (res) {\n setBusinessAreasData(res.results);\n // ConsoleHelper.log('RES fetchBusinessAreas ', res.results);\n }\n }\n } catch (error: any) {\n if (isMounted()) {\n ConsoleHelper.log('ERROR fetchSustainabilityReports ', error);\n setBusinessAreasError(error);\n }\n } finally {\n if (isMounted()) {\n setBusinessAreasLoading(false);\n }\n }\n };\n fetchBusinessAreas();\n }, [isMounted]);\n\n return { businessAreasData, businessAreasError, businessAreasLoading };\n};\n","import { useEffect, useState } from 'react';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { TagAPI } from 'src/shared/services/api/tagsAPI';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { useSelector } from 'react-redux';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { useIsMounted } from './useIsMounted';\n\nexport const useFetchTags = (tagType: string) => {\n const isMounted = useIsMounted();\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n const [tagData, setTagDataData] = useState();\n const [tagDataError, setTagDataError] = useState(null);\n const [tagDataLoading, setTagDataLoading] = useState(false);\n\n useEffect(() => {\n const fetchTags = async () => {\n setTagDataLoading(true);\n const tagsAPI = new TagAPI();\n\n try {\n const res = await tagsAPI.GetAll({\n sortDir: 'asc',\n sortCol: 'name',\n pageSize: 300,\n companyId: userCompany?.id ?? undefined,\n });\n if (isMounted()) {\n if (res) {\n const tagsToReturn = res.results?.filter(\n (tag) => tag.type === tagType,\n );\n setTagDataData(tagsToReturn);\n // ConsoleHelper.log('RES fetchTags ', tagsToReturn);\n }\n }\n } catch (error: any) {\n if (isMounted()) {\n ConsoleHelper.log('ERROR fetchTags ', error);\n setTagDataError(error);\n }\n } finally {\n if (isMounted()) {\n setTagDataLoading(false);\n }\n }\n };\n fetchTags();\n }, [isMounted, tagType, userCompany?.id]);\n return { tagData, tagDataError, tagDataLoading };\n};\n","import { useTheme } from '@mui/material/styles';\nimport { useMediaQuery } from '@mui/material';\n\nexport const useMobile = () => {\n const theme = useTheme();\n const isMobileLg = useMediaQuery(theme.breakpoints.down('lg'));\n const isMobileMd = useMediaQuery(theme.breakpoints.down('md'));\n const isMobileSm = useMediaQuery(theme.breakpoints.down('sm'));\n const isMobileXs = useMediaQuery(theme.breakpoints.down('xs'));\n\n return { isMobileLg, isMobileMd, isMobileSm, isMobileXs };\n};\n","import { useTranslation } from 'react-i18next';\nimport CheckCircleOutlineOutlinedIcon from '@mui/icons-material/CheckCircleOutlineOutlined';\nimport LoopOutlinedIcon from '@mui/icons-material/LoopOutlined';\nimport PublishedWithChangesOutlinedIcon from '@mui/icons-material/PublishedWithChangesOutlined';\nimport FlagOutlinedIcon from '@mui/icons-material/FlagOutlined';\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\nimport { ProjectStatusEnum } from 'src/shared/enums/projectStatus.enum';\nimport { Colors } from 'src/shared/components/styles';\nimport { DoNotDisturb } from '@mui/icons-material';\n\nconst useStatusInfo = (statusId: number) => {\n const { t } = useTranslation();\n\n switch (statusId) {\n case ProjectStatusEnum.Approved:\n return {\n color: Colors.BADGE_GREEN,\n label: t('approved'),\n icon: ,\n };\n case ProjectStatusEnum.Created:\n return {\n color: Colors.BADGE_BLUE,\n label: t('reported'),\n icon: ,\n };\n case ProjectStatusEnum.ReadyForApproval:\n return {\n color: Colors.BADGE_YELLOW,\n label: t('readyForApproval'),\n icon: ,\n };\n case ProjectStatusEnum.SupplementRequested:\n return {\n color: Colors.BADGE_ORANGE,\n label: t('supplementRequested'),\n icon: ,\n };\n case ProjectStatusEnum.Denied:\n return {\n color: Colors.BADGE_RED,\n label: t('denied'),\n icon: ,\n };\n default:\n return { color: '', label: '', icon: };\n }\n};\n\nexport default useStatusInfo;\n","import { Chip, Stack, Tooltip } from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\nimport { ProjectStatusEnum } from 'src/shared/enums/projectStatus.enum';\nimport { useMobile } from 'src/shared/helpers/hooks/useMobile';\nimport React from 'react';\nimport useStatusInfo from '../hooks/useStatusInfo';\n\ntype SustainabilityStatusBadgeProps = {\n status: number;\n};\n\nexport const SustainabilityStatusBadge = (\n props: SustainabilityStatusBadgeProps,\n) => {\n const { status } = props;\n const { isMobileLg } = useMobile();\n\n const { color, label, icon } = useStatusInfo(status);\n\n const coloredIcon = React.cloneElement(icon, { sx: { color } });\n\n return (\n \n {status === ProjectStatusEnum.Created && (\n \n {isMobileLg ? (\n coloredIcon\n ) : (\n \n )}\n \n )}\n {status === ProjectStatusEnum.ReadyForApproval && (\n \n {isMobileLg ? (\n coloredIcon\n ) : (\n \n )}\n \n )}\n {status === ProjectStatusEnum.Approved && (\n \n {isMobileLg ? (\n coloredIcon\n ) : (\n \n )}\n \n )}\n {status === ProjectStatusEnum.Denied && (\n \n {isMobileLg ? (\n coloredIcon\n ) : (\n \n )}\n \n )}\n {status === ProjectStatusEnum.SupplementRequested && (\n \n {isMobileLg ? (\n coloredIcon\n ) : (\n \n )}\n \n )}\n \n );\n};\n","/* eslint-disable jsx-a11y/anchor-is-valid */\nimport {\n GridCallbackDetails,\n GridColumns,\n GridRowParams,\n GridSortModel,\n} from '@mui/x-data-grid';\nimport { useEffect, useState } from 'react';\nimport dayjs from 'dayjs';\nimport {\n DataGrid,\n DataGridOptions,\n} from 'src/shared/components/organisms/dataGrid';\nimport { SustainabilityReportResponse } from 'src/shared/services/api/response/sustainabilityReportResponse';\nimport { useTranslation } from 'react-i18next';\nimport { useFetchBusinessAreas } from 'src/shared/helpers/hooks/useFetchBusinessAreas';\nimport { useFetchTags } from 'src/shared/helpers/hooks/useFetchTags';\nimport { useMobile } from 'src/shared/helpers/hooks/useMobile';\nimport { SustainabilityStatusBadge } from './SustainabilityStatusBadge';\n\ntype SustainabilityDataGridProps = {\n data: SustainabilityReportResponse[];\n loading: boolean;\n totalRows: number;\n onPageChange: (index: number) => void;\n onPageSizeChange: (size: number) => void;\n onSortModelChanged: (\n model: GridSortModel,\n details: GridCallbackDetails,\n ) => void | undefined;\n page: number;\n size: number;\n onRowClick: (params: GridRowParams) => void;\n};\n\nexport const SustainabilityDataGrid = (props: SustainabilityDataGridProps) => {\n const {\n data,\n totalRows,\n onPageChange,\n onPageSizeChange,\n onSortModelChanged,\n page,\n size,\n onRowClick,\n loading,\n } = props;\n const { t } = useTranslation();\n\n const { isMobileSm, isMobileLg } = useMobile();\n\n const { businessAreasData } = useFetchBusinessAreas();\n const { tagData } = useFetchTags('Location');\n\n const [dataGridOptions, setDataGridOptions] = useState({\n loading,\n rowsPerPageOptions: undefined,\n totalRows,\n });\n\n const columns: GridColumns = [\n {\n field: 'project',\n headerName: t('project'),\n flex: 1.5,\n },\n {\n field: 'projectNumber',\n headerName: t('nr'),\n hide: true,\n flex: 1,\n },\n {\n field: 'companyName',\n headerName: t('company'),\n sortable: false,\n flex: 1.5,\n },\n {\n field: 'customer',\n headerName: t('customer'),\n hide: isMobileSm,\n flex: 1.5,\n },\n\n {\n field: 'businessAreaId',\n headerName: t('businessArea'),\n renderCell: (params) => {\n const businessArea = businessAreasData?.find(\n (area) => area.id === params.row.businessAreaId,\n )?.name;\n return businessArea;\n },\n },\n {\n field: 'locationTagId',\n headerName: t('BusinessArea'),\n renderCell: (params) => {\n const location = tagData?.find(\n (locationName) => locationName.id === params.row.locationTagId,\n )?.name;\n return location;\n },\n },\n\n {\n field: 'changed',\n headerName: t('updated'),\n hide: true,\n flex: 1,\n\n renderCell: (params) => {\n if (params.row.changed) {\n return dayjs(params.row.changed).format('D MMM YYYY');\n }\n return dayjs(params.row.created).format('D MMM YYYY');\n },\n },\n {\n field: 'projectStatus',\n headerName: t('status'),\n flex: isMobileLg ? 1 : 2,\n\n renderCell: (params) => {\n return ;\n },\n },\n {\n field: 'reporterUser.personName',\n valueGetter: (params) => params.row.reporterUser.personName,\n headerName: t('reportedBy'),\n sortable: false,\n flex: 1.5,\n hide: isMobileSm,\n },\n {\n field: 'created',\n headerName: t('created'),\n hide: isMobileSm,\n flex: 1,\n renderCell: (params) => dayjs(params.row.created).format('D MMM YYYY'),\n },\n ];\n\n useEffect(() => {\n setDataGridOptions((prev) => ({\n ...prev,\n loading,\n totalRows,\n }));\n }, [loading, totalRows]);\n\n return (\n <>\n \n columns={columns}\n rows={data}\n dataGridOptions={dataGridOptions}\n onPageChange={onPageChange}\n onPageSizeChange={onPageSizeChange}\n onSortModelChange={onSortModelChanged}\n checkboxSelection={false}\n page={page}\n pageSize={size}\n disableSelectionOnClick\n onRowClick={(row) => onRowClick(row)}\n />\n \n );\n};\n","import { Grid } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport AutoCompleteForFilter from 'src/modules/employee/components/autoCompleteForFilter';\nimport { useFetchBusinessAreas } from 'src/shared/helpers/hooks/useFetchBusinessAreas';\nimport { useFetchTags } from 'src/shared/helpers/hooks/useFetchTags';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\n\nexport interface ProjectStatusFilter {\n id: number;\n name: string;\n}\n\nconst statusData = (t: (n: string) => string): ProjectStatusFilter[] => [\n { id: 1, name: t('reported') },\n { id: 2, name: t('readyForApproval') },\n { id: 4, name: t('denied') },\n { id: 5, name: t('supplementRequested') },\n];\n\ntype SustainabilityFilterProps = {\n setLocations: (arg: TagsResponse) => void;\n setBusinessArea: (arg: BusinessAreaResponse) => void;\n setProjectStatusFilter?: (arg: ProjectStatusFilter) => void;\n};\n\nexport const SustainabilityFilter = (props: SustainabilityFilterProps) => {\n const { setLocations, setBusinessArea, setProjectStatusFilter } = props;\n const { t } = useTranslation();\n\n // FETCH DATA\n const { businessAreasData } = useFetchBusinessAreas();\n const { tagData } = useFetchTags('Location');\n\n return (\n \n \n \n \n \n \n \n {setProjectStatusFilter && (\n \n \n \n )}\n \n );\n};\n\nSustainabilityFilter.defaultProps = {\n setProjectStatusFilter: undefined,\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { GridRowParams, GridSortModel } from '@mui/x-data-grid';\nimport { SustainabilityReportOptions } from 'src/shared/services/api/options/sustainabilityReportOptions';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { SustainabilityAPI } from 'src/shared/services/api/sustainabilityAPI';\nimport { useIsMounted } from 'src/shared/helpers/hooks/useIsMounted';\nimport { SustainabilityReportResponse } from 'src/shared/services/api/response/sustainabilityReportResponse';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { useTranslation } from 'react-i18next';\nimport { useHistory } from 'react-router-dom';\nimport { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport { ProjectStatusEnum } from 'src/shared/enums/projectStatus.enum';\nimport { Typography } from '@mui/material';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { SustainabilityDataGrid } from './sustainabilityDataGrid';\nimport {\n ProjectStatusFilter,\n SustainabilityFilter,\n} from './sustainabilityFilter';\n\ntype SustainabilityReportProjectProps = {\n refetchList: Date | undefined;\n};\n\nexport const SustainabilityReportProject = (\n props: SustainabilityReportProjectProps,\n) => {\n const { refetchList } = props;\n const isMounted = useIsMounted();\n const history = useHistory();\n const { t } = useTranslation();\n\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState([]);\n const [totalItems, setTotalItems] = useState(0);\n const [businessArea, setBusinessArea] = useState();\n const [locationTag, setLocationTag] = useState();\n const [projectStatusFilter, setProjectStatusFilter] =\n useState();\n const [requestOptions, setRequestOptions] =\n useState({\n pageIndex: 0,\n pageSize: 100,\n sortCol: 'created',\n sortDir: 'desc',\n locationTagId: locationTag?.id,\n businessAreaID: businessArea?.id,\n companyID: userCompany?.id, // User & Manager får bara se från companyID vi passar in ,SuperAdmin och om du hör till companyID 1/32 får hämta allt (rapporter med status godkänd får alla hämta)\n projectStatus: [\n ProjectStatusEnum.Created,\n ProjectStatusEnum.ReadyForApproval,\n ProjectStatusEnum.Denied,\n ProjectStatusEnum.SupplementRequested,\n ],\n projectStatusFilter: ProjectStatusEnum.All,\n });\n\n const fetchSustainabilityReports = useCallback(async () => {\n const api = new SustainabilityAPI();\n try {\n const res = await api.GetAll(requestOptions);\n if (isMounted()) {\n setData(res.results ?? []);\n setTotalItems(res.totalItems ?? 0);\n ConsoleHelper.log('RES fetchSustainabilityReports ', res);\n }\n } catch (error: any) {\n if (error.status === 404) {\n setData([]);\n setTotalItems(0);\n }\n ConsoleHelper.log('ERROR fetchSustainabilityReports ', error);\n } finally {\n if (isMounted()) {\n setLoading(false);\n }\n }\n }, [isMounted, requestOptions]);\n\n useEffect(() => {\n setRequestOptions((prev) => ({\n ...prev,\n locationTagId: locationTag?.id,\n businessAreaID: businessArea?.id,\n projectStatusFilter: projectStatusFilter?.id,\n }));\n }, [businessArea?.id, locationTag?.id, projectStatusFilter?.id]);\n\n useEffect(() => {\n fetchSustainabilityReports();\n }, [fetchSustainabilityReports, refetchList]);\n\n // Byt sida\n const onPageChange = (newPage: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageIndex: newPage,\n }));\n };\n\n // Ändra antal per sida\n const onPageSizeChange = (size: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageSize: size,\n }));\n };\n\n // TODO: apiet accepterar inte sortCol: model[0].field,\n const onSortModelChanged = (model: GridSortModel) => {\n if (model.length > 0)\n setRequestOptions((prev) => ({\n ...prev,\n sortCol: model[0].field,\n sortDir: model[0].sort as string,\n }));\n };\n\n const onRowClickHandler = (params: GridRowParams) => {\n history.push(\n `${RoutesEnum.SustainabilityReportDetailsPage}/${params.row.id}`,\n );\n };\n\n return (\n <>\n {t('sustainabilityReportInfo')}\n \n \n \n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { SustainabilityReportOptions } from 'src/shared/services/api/options/sustainabilityReportOptions';\nimport { GridRowParams, GridSortModel } from '@mui/x-data-grid';\nimport { SustainabilityAPI } from 'src/shared/services/api/sustainabilityAPI';\nimport { useIsMounted } from 'src/shared/helpers/hooks/useIsMounted';\nimport { SustainabilityReportResponse } from 'src/shared/services/api/response/sustainabilityReportResponse';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { useHistory } from 'react-router-dom';\nimport { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport { useTranslation } from 'react-i18next';\nimport { Typography } from '@mui/material';\nimport { SustainabilityDataGrid } from './sustainabilityDataGrid';\nimport { SustainabilityFilter } from './sustainabilityFilter';\n\nexport const SustainabilityCertifiedProject = () => {\n const isMounted = useIsMounted();\n const history = useHistory();\n const { t } = useTranslation();\n\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState([]);\n const [totalItems, setTotalItems] = useState(0);\n const [businessArea, setBusinessArea] = useState();\n const [locationTag, setLocationTag] = useState();\n\n const [requestOptions, setRequestOptions] =\n useState({\n pageIndex: 0,\n pageSize: 100,\n sortCol: 'created',\n sortDir: 'asc',\n locationTagId: locationTag?.id,\n businessAreaID: businessArea?.id,\n projectStatus: [3],\n });\n\n const fetchSustainabilityReports = useCallback(async () => {\n const api = new SustainabilityAPI();\n\n try {\n const res = await api.GetAll(requestOptions);\n if (isMounted()) {\n setData(res.results ?? []);\n setTotalItems(res.totalItems ?? 0);\n ConsoleHelper.log('RES fetchSustainabilityReports ', res);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (error: any) {\n if (error.status === 404) {\n setData([]);\n setTotalItems(0);\n }\n ConsoleHelper.log('ERROR fetchSustainabilityReports ', error);\n } finally {\n if (isMounted()) {\n setLoading(false);\n }\n }\n }, [isMounted, requestOptions]);\n\n useEffect(() => {\n setRequestOptions((prev) => ({\n ...prev,\n locationTagId: locationTag?.id,\n businessAreaID: businessArea?.id,\n }));\n }, [businessArea?.id, locationTag?.id]);\n\n useEffect(() => {\n fetchSustainabilityReports();\n }, [fetchSustainabilityReports]);\n\n // Byt sida\n const onPageChange = (newPage: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageIndex: newPage,\n }));\n };\n\n // Ändra antal per sida\n const onPageSizeChange = (size: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageSize: size,\n }));\n };\n\n // TODO: apiet accepterar inte sortCol: model[0].field,\n const onSortModelChanged = (model: GridSortModel) => {\n if (model.length > 0)\n setRequestOptions((prev) => ({\n ...prev,\n sortDir: model[0].sort as string,\n }));\n };\n\n const onRowClickHandler = (params: GridRowParams) => {\n history.push(\n `${RoutesEnum.SustainabilityReportDetailsPage}/${params.row.id}`,\n );\n };\n\n return (\n <>\n {t('sustainabilityCertifiedInfo')}\n \n \n \n );\n};\n","import { Edit } from '@mui/icons-material';\nimport { Box, Fab } from '@mui/material';\nimport { useSelector } from 'react-redux';\nimport { useHistory } from 'react-router-dom';\nimport { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport { useMobile } from 'src/shared/helpers/hooks/useMobile';\nimport { UserTypeEnum } from 'src/shared/helpers/permissionHelper';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\n\ntype SustainabilityEditFabProps = {\n id: string;\n};\n\nexport const SustainabilityEditFab = (props: SustainabilityEditFabProps) => {\n const { id } = props;\n const { isMobileMd } = useMobile();\n const history = useHistory();\n const { userDetails } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n const isSuberAdmin =\n userDetails?.permissionGroup.id === UserTypeEnum.SuperAdmin;\n\n return (\n \n {isSuberAdmin && (\n \n history.push(\n `${RoutesEnum.SustainabilityReportListPage}/${id}/edit`,\n )\n }\n size={isMobileMd ? 'small' : 'medium'}\n variant='circular'\n color='primary'\n >\n \n \n )}\n \n );\n};\n","import { Modal, Box, Button } from '@mui/material';\nimport { ArrowBackIos } from '@mui/icons-material';\nimport { useTranslation } from 'react-i18next';\nimport {\n ActionButtons,\n IActionButton,\n} from '../components/atoms/actionButtons';\n\ninterface ModalSustainabilityTemplateProps {\n title: JSX.Element;\n content: JSX.Element;\n // badge: JSX.Element;\n secondaryAction?: JSX.Element;\n isOpen: boolean;\n onClose: () => void;\n items?: IActionButton[];\n}\n\nexport const ModalSustainabilityTemplate = (\n props: ModalSustainabilityTemplateProps,\n) => {\n const { title, content, secondaryAction, isOpen, onClose, items } = props;\n const { t } = useTranslation();\n\n // Prevents the modal from closing when clicking outside the modal\n const handleClose = (event?: any, reason?: string) => {\n if (reason !== 'backdropClick') {\n onClose();\n }\n };\n\n return (\n \n \n \n \n \n {t('Back')}\n \n \n {title}\n <>{content}\n \n {secondaryAction}\n \n {items && }\n \n \n );\n};\n\nModalSustainabilityTemplate.defaultProps = {\n secondaryAction: undefined,\n items: undefined,\n};\n","import { useEffect, useState } from 'react';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { useSelector } from 'react-redux';\nimport { EmployeeResponse } from 'src/shared/services/api/response/employeeResponse';\nimport { EmployeeAPI } from 'src/shared/services/api/employeeApi';\nimport { useIsMounted } from './useIsMounted';\nimport { UserTypeEnum } from '../permissionHelper';\n\nexport const useFetchEmployeesByCompanyId = (debouncedSearchTerm: string) => {\n const isMounted = useIsMounted();\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n const [employeesData, setEmployeesDataData] = useState();\n const [employeesDataError, setEmployeesDataError] = useState(null);\n const [employeesDataLoading, setEmployeesDataLoading] = useState(false);\n\n useEffect(() => {\n const fetchEmployees = async () => {\n setEmployeesDataLoading(true);\n const api = new EmployeeAPI();\n\n try {\n const res = await api.GetAll({\n employeeNameFilter: debouncedSearchTerm,\n companyId: userCompany?.id,\n pageIndex: 0,\n pageSize: 300,\n sortCol: undefined,\n sortDir: 'asc',\n includeDeleted: false,\n excludePermissionGroupIds: [UserTypeEnum.ExternalUser],\n });\n if (isMounted()) {\n if (res) {\n setEmployeesDataData(res.results);\n // ConsoleHelper.log('RES fetchEmployees ', res.results);\n }\n }\n } catch (error: any) {\n if (isMounted()) {\n ConsoleHelper.log('ERROR fetchEmployees ', error);\n setEmployeesDataError(error);\n }\n } finally {\n if (isMounted()) {\n setEmployeesDataLoading(false);\n }\n }\n };\n fetchEmployees();\n }, [debouncedSearchTerm, isMounted, userCompany?.id]);\n return { employeesData, employeesDataError, employeesDataLoading };\n};\n","export enum CompanyTypeEnum {\n Installation,\n Teknikkonsult,\n Industri,\n}\n","import { useEffect, useState } from 'react';\nimport { EmployeeResponse } from 'src/shared/services/api/response/employeeResponse';\nimport { SustainabilityAPI } from 'src/shared/services/api/sustainabilityAPI';\nimport { useIsMounted } from './useIsMounted';\n\nexport const useFetchApproverUsers = () => {\n const isMounted = useIsMounted();\n\n const [aosData, setAosData] = useState();\n const [aosDataError, setAosDataError] = useState(null);\n const [aosDataLoading, setAosDataLoading] = useState(false);\n\n useEffect(() => {\n const fetchApproverUsers = async () => {\n setAosDataLoading(true);\n const api = new SustainabilityAPI();\n try {\n const res = await api.GetApprovers();\n if (isMounted()) {\n if (res) {\n setAosData(res ?? []);\n }\n }\n } catch (error: any) {\n if (isMounted()) {\n setAosDataError(error);\n }\n } finally {\n if (isMounted()) {\n setAosDataLoading(false);\n }\n }\n };\n fetchApproverUsers();\n }, [isMounted]);\n return { aosData, aosDataError, aosDataLoading };\n};\n","export enum TagTypeEnum {\n Competence = 'Competence',\n Role = 'Role',\n Location = 'Location',\n}\n","import { ErrorMessage } from '@hookform/error-message';\nimport { FieldErrors, FieldValues } from 'react-hook-form';\nimport { Alert, AlertTitle, Typography } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport { Colors } from '../styles';\n\ntype FormErrorSummaryProps = {\n translationNamespace: string;\n errors: FieldErrors;\n};\n\nexport function FormErrorSummary({\n errors,\n translationNamespace,\n}: FormErrorSummaryProps) {\n const { t } = useTranslation();\n\n if (Object.keys(errors).length === 0) {\n return null;\n }\n\n return (\n \n {t('errorSummaryHeader')}\n \n {t('errorSummaryInfo')}\n \n
    \n {Object.keys(errors).map((fieldName) => (\n
  • \n {t(`${fieldName}`)}\n {' — '}\n \n
  • \n ))}\n
\n \n );\n}\n","import * as yup from 'yup';\nimport { ProjectStatusEnum } from '../enums/projectStatus.enum';\nimport { CompanyTypeEnum } from '../enums/companyType.enum';\n\nexport const SustainabilityReportCreateSchema = (t: (n: string) => void) =>\n yup.object().shape({\n company: yup\n .object()\n .nullable()\n .required(`${t('fieldRequired')}`),\n typeOfCompany: yup.number().required(`${t('companyTypeRequired')}`),\n project: yup.string().required(`${t('projectRequired')}`),\n projectNumber: yup.string().required(`${t('projectNumberRequired')}`),\n projectDescription: yup\n .string()\n .required(`${t('projDescriptionRequired')}`),\n projectStatus: yup.number().required(),\n climateBenefitDescription: yup.string().when('projectStatus', {\n is: (projectStatus: number) => projectStatus > ProjectStatusEnum.All,\n then: yup.string().required(`${t('descriptionRequired')}`),\n }),\n sustainabilitySolutionTechDescription: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus >= ProjectStatusEnum.Created &&\n typeOfCompany !== CompanyTypeEnum.Installation\n ) {\n return yup.string().required(`${t('descriptionRequired')}`);\n }\n return yup.string().nullable();\n }),\n customer: yup.string().required(`${t('customerRequired')}`),\n approverUser: yup\n .object()\n .nullable()\n .required(`${t('reporterRequired')}`),\n reporterUser: yup\n .object()\n .nullable()\n .required(`${t('reviewerRequired')}`),\n businessArea: yup\n .object()\n .nullable()\n .required(`${t('disciplineRequired')}`),\n locationTag: yup\n .object()\n\n .required(`${t('locationRequired')}`),\n invoicedAmount: yup.string().when('projectStatus', {\n is: (projectStatus: ProjectStatusEnum) =>\n projectStatus === ProjectStatusEnum.Created,\n then: yup.string().required(`${t('invoicedAmountRequired')}`),\n }),\n checkboxApplyForCertificate: yup\n .boolean()\n .when('projectStatus', {\n is: (projectStatus: ProjectStatusEnum) =>\n projectStatus >= ProjectStatusEnum.Created,\n then: yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`),\n })\n .required(),\n checkboxCriteriaConsent: yup\n .boolean()\n .oneOf([true], `${t('fieldMustbeChecked')}`)\n .required(),\n checkboxSafeCoworker: yup.lazy((value, { parent }) => {\n const { projectStatus } = parent;\n if (projectStatus === ProjectStatusEnum.Created) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxClimateBenefit: yup.lazy((value, { parent }) => {\n const { projectStatus } = parent;\n if (projectStatus === ProjectStatusEnum.Created) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxDeliveryPlan: yup.lazy((value, { parent }) => {\n const { projectStatus } = parent;\n const { typeOfCompany } = parent;\n\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany !== CompanyTypeEnum.Teknikkonsult\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n\n // Return a schema that always passes validation\n return yup.boolean().required();\n }),\n checkboxWasteSorting: yup.lazy((value, { parent }) => {\n const { projectStatus } = parent;\n if (projectStatus === ProjectStatusEnum.Created) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxCodeOfConduct: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany !== CompanyTypeEnum.Teknikkonsult\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxServicePlan: yup.lazy((value, { parent }) => {\n const { projectStatus } = parent;\n const { typeOfCompany } = parent;\n\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany === CompanyTypeEnum.Installation\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n\n // Return a schema that always passes validation\n return yup.boolean().required();\n }),\n checkboxMeetingPlan: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany === CompanyTypeEnum.Teknikkonsult\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxSustainabilitySolutionTech: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany === CompanyTypeEnum.Teknikkonsult\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxSustainabilityEvaluationTech: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany !== CompanyTypeEnum.Installation\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxProjectSize100TSEK: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany === CompanyTypeEnum.Teknikkonsult\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxProjectSize1MSEK: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany !== CompanyTypeEnum.Teknikkonsult\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n registrationDate: yup.date().required(`${t('registrationDateRequired')}`),\n });\n","export class CompanyOptions {\n pageIndex?: number;\n\n pageSize?: number;\n\n sortCol?: string;\n\n sortDir?: string;\n\n nameFilter?: string;\n\n constructor() {\n this.sortDir = 'Asc';\n }\n}\n","import { Controller, useFormContext, useFormState } from 'react-hook-form';\nimport { TextField, Autocomplete, Box } from '@mui/material';\nimport { CompanyResponse } from 'src/shared/services/api/response/companyResponse';\nimport { useEffect, useState } from 'react';\nimport { useFetchCompanies } from 'src/shared/helpers/hooks/useFetchCompanies';\nimport { useIsMounted } from 'src/shared/helpers/hooks/useIsMounted';\n\ntype IformInputProps = {\n defaultCompany: CompanyResponse;\n name: string;\n label?: string;\n helperText?: string | undefined;\n rows?: number;\n fullWidth?: boolean;\n placeholder?: string;\n disabled?: boolean;\n};\n\nconst ControlledCompanySelectHook = (Iprops: IformInputProps) => {\n const {\n helperText,\n rows,\n fullWidth,\n placeholder,\n name,\n label,\n disabled,\n defaultCompany,\n } = Iprops;\n const { control } = useFormContext();\n const { errors } = useFormState();\n\n let isError = false;\n let errorMessage = '';\n if (errors && Object.prototype.hasOwnProperty.call(errors, name)) {\n isError = true;\n errorMessage = errors[name].message;\n }\n\n const isMounted = useIsMounted();\n\n const { companiesData, companiesLoading } = useFetchCompanies();\n\n // Sätt värdet och håll reda på det med state\n const [selectedCompany, setSelectedCompany] =\n useState(defaultCompany);\n\n useEffect(() => {\n if (defaultCompany && isMounted()) {\n setSelectedCompany(defaultCompany);\n }\n }, [isMounted, defaultCompany]);\n\n return (\n {\n return (\n {\n onChange(selectedOption);\n setSelectedCompany(selectedOption);\n }}\n isOptionEqualToValue={(option, item) => option.id === item.id}\n getOptionLabel={(option: CompanyResponse) =>\n `${option.name} (${option.country_CountryCode})`\n }\n renderOption={(props, option) => (\n \n {option.name} ({option.country_CountryCode})\n \n )}\n renderInput={(params) => {\n return (\n \n );\n }}\n />\n );\n }}\n />\n );\n};\nControlledCompanySelectHook.defaultProps = {\n label: null,\n disabled: false,\n};\nexport default ControlledCompanySelectHook;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useEffect, useState } from 'react';\nimport { CompanyResponse } from 'src/shared/services/api/response/companyResponse';\nimport { CompanyAPI } from 'src/shared/services/api/companyAPI';\nimport { CompanyOptions } from 'src/shared/services/api/options/companyOptions';\nimport { useIsMounted } from './useIsMounted';\n\nexport const useFetchCompanies = (\n debouncedSearchTerm?: string,\n pageSize?: number,\n) => {\n const isMounted = useIsMounted();\n\n const [companiesData, setCompaniesData] = useState();\n const [companiesError, setCompaniesError] = useState(null);\n const [companiesLoading, setCompaniesLoading] = useState(false);\n\n useEffect(() => {\n const fetchApproverUsers = async () => {\n setCompaniesLoading(true);\n const options = new CompanyOptions();\n options.pageSize = pageSize ?? 300;\n options.pageIndex = 0;\n options.sortCol = 'name';\n if (debouncedSearchTerm) options.nameFilter = debouncedSearchTerm;\n\n const api = new CompanyAPI();\n try {\n const res = await api.GetAll(options);\n if (isMounted()) {\n if (res) {\n setCompaniesData(res.results ?? []);\n }\n }\n } catch (error: any) {\n if (isMounted()) {\n setCompaniesError(error);\n }\n } finally {\n if (isMounted()) {\n setCompaniesLoading(false);\n }\n }\n };\n fetchApproverUsers();\n }, [isMounted, debouncedSearchTerm]);\n return { companiesData, companiesError, companiesLoading };\n};\n","import { FieldErrors } from 'react-hook-form';\n\nexport const getNestedFormErrors = (\n fieldErrors: FieldErrors,\n fieldName: string,\n) => {\n const nameParts = fieldName.split(/[[\\].]+/).filter(Boolean);\n\n if (nameParts.length === 1) {\n return fieldErrors[nameParts[0]]?.message || null;\n }\n\n const currentError = nameParts.reduce((acc, part) => {\n if (!acc || !acc[part]) return null;\n return acc[part];\n }, fieldErrors);\n\n if (!currentError) return null;\n\n // ConsoleHelper.log('currentError.message for', fieldName, currentError.message);\n return currentError.message || null;\n};\n","import { Check } from '@mui/icons-material';\nimport { Checkbox, FormControlLabel, Typography } from '@mui/material';\nimport { Controller, useFormContext, useFormState } from 'react-hook-form';\nimport { Colors } from 'src/shared/components/styles';\nimport { getNestedFormErrors } from 'src/shared/helpers/getNestedFormErrors';\n\ntype ControlledCheckBoxProps = {\n label: string;\n name: string;\n labelPlacement: 'top' | 'bottom' | 'end' | 'start';\n disabled?: boolean;\n italic?: boolean;\n readOnly?: boolean;\n useErrorSummery?: boolean;\n};\n\nexport const ControlledCheckBox = (props: ControlledCheckBoxProps) => {\n const {\n name,\n labelPlacement,\n label,\n disabled,\n italic,\n readOnly,\n useErrorSummery,\n } = props;\n\n const { control } = useFormContext();\n const { errors } = useFormState();\n\n let isError = false;\n const errorMessage = getNestedFormErrors(errors, name ?? '');\n if (errorMessage) {\n isError = true;\n }\n return (\n <>\n (\n field.onChange(e) : undefined}\n inputProps={{\n 'aria-label': 'controlled',\n }}\n sx={{\n '& .MuiSvgIcon-root': {\n color: isError ? Colors.RED : 'primary', // Set the unchecked color here\n },\n pointerEvents: readOnly ? 'none' : 'auto',\n }}\n checkedIcon={readOnly ? : undefined}\n />\n }\n />\n )}\n />\n {isError && !useErrorSummery && (\n \n {errorMessage}\n \n )}\n \n );\n};\n\nControlledCheckBox.defaultProps = {\n disabled: false,\n italic: false,\n readOnly: false,\n useErrorSummery: false,\n};\n","import { List, ListItem, Typography } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport { CompanyTypeEnum } from 'src/shared/enums/companyType.enum';\n\ntype SustainabilityFormTextsProps = {\n typeOfCompany: string | number;\n};\n\nexport const SustainabilityFormTexts = (\n props: SustainabilityFormTextsProps,\n) => {\n const { t } = useTranslation();\n const { typeOfCompany } = props;\n return (\n \n {typeOfCompany === CompanyTypeEnum.Installation && (\n <>\n \n {t('checkboxSafeCoworker')}\n \n \n {t('checkboxCodeOfConduct')}\n \n \n {t('checkboxClimateBenefit')}\n \n \n {t('checkboxDeliveryPlan')}\n \n \n {t('checkboxWasteSorting')}\n \n \n {t('checkboxServicePlan')}\n \n \n {t('checkboxProjectSize1MSEK')}\n \n \n )}\n {typeOfCompany === CompanyTypeEnum.Teknikkonsult && (\n <>\n \n {t('checkboxSafeCoworker')}\n \n \n {t('checkboxClimateBenefit')}\n \n \n {t('checkboxWasteSortingEngineer')}\n \n \n {t('checkboxMeetingPlan')}\n \n \n {t('checkboxSustainabilitySolutionTech')}\n \n \n {t('checkboxSustainabilityEvaluationTech')}\n \n \n {t('checkboxProjectSize100TSEK')}\n \n \n )}\n {typeOfCompany === CompanyTypeEnum.Industri && (\n <>\n \n {t('checkboxSafeCoworker')}\n \n \n {t('checkboxCodeOfConduct')}\n \n \n {t('checkboxClimateBenefit')}\n \n \n {t('checkboxDeliveryPlan')}\n \n \n {t('checkboxWasteSorting')}\n \n \n {t('checkboxSustainabilityEvaluationTech')}\n \n \n {t('checkboxProjectSize1MSEK')}\n \n \n )}\n \n );\n};\n","import * as React from 'react';\n\nimport { useFormContext, useFormState } from 'react-hook-form';\nimport TextField from '@mui/material/TextField';\nimport Autocomplete from '@mui/material/Autocomplete';\nimport { getNestedFormErrors } from 'src/shared/helpers/getNestedFormErrors';\nimport { FormLabel, Typography } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\n\ntype ControlledAutocompleteDropdownProps = {\n options: Array;\n nameProp: string;\n name: string;\n placeholder?: string;\n label?: string;\n callback?: (selected: T) => void;\n formLabel?: string;\n labelColor?: string;\n fullwidth?: boolean;\n size?: 'small' | 'medium';\n translateOptionLabel?: boolean;\n};\n\nexport const ControlledAutocompleteDropdown = (\n props: ControlledAutocompleteDropdownProps,\n) => {\n const {\n options,\n nameProp,\n label,\n name,\n callback,\n placeholder,\n formLabel,\n labelColor,\n fullwidth,\n size,\n translateOptionLabel,\n } = props;\n const { t } = useTranslation();\n\n const [selectedValue, setSelectedValue] = React.useState(null);\n const [inputValue, setInputValue] = React.useState('');\n\n const { errors } = useFormState();\n const { setValue, getValues } = useFormContext();\n\n const componentId = `autocomplete-${\n Date.now().toString(36) + Math.random().toString(36).substring(2)\n }`;\n\n let isError = false;\n const errorMessage = getNestedFormErrors(errors, name);\n if (errorMessage) {\n isError = true;\n }\n\n React.useEffect(() => {\n setSelectedValue(getValues(name));\n }, [getValues, name]);\n\n return (\n <>\n {formLabel && (\n \n {formLabel}\n \n )}\n (\n \n {translateOptionLabel ? t(option?.label) : option?.label}\n \n )}\n getOptionLabel={(option: any) =>\n translateOptionLabel\n ? t(option[nameProp] || '')\n : option[nameProp] || ''\n }\n onChange={(event: any, newValue: any) => {\n setValue(name, newValue?.value);\n setSelectedValue(newValue);\n if (callback) {\n callback(newValue);\n }\n }}\n value={selectedValue || null}\n inputValue={inputValue}\n onInputChange={(event, newInputValue) => {\n setInputValue(newInputValue);\n }}\n renderInput={(params) => (\n {errorMessage} : null}\n />\n )}\n />\n \n );\n};\n\nControlledAutocompleteDropdown.defaultProps = {\n labelColor: 'text.primary',\n formLabel: undefined,\n label: undefined,\n callback: undefined,\n fullwidth: false,\n size: 'small',\n placeholder: undefined,\n translateOptionLabel: false,\n};\n","import {\n DesktopDatePicker,\n LocalizationProvider,\n MobileDatePicker,\n} from '@mui/lab';\nimport AdapterDayjs from '@mui/lab/AdapterDayjs';\nimport { FormLabel, TextField } from '@mui/material';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport sv from 'dayjs/locale/sv';\nimport dayjs from 'dayjs';\nimport { useMobile } from 'src/shared/helpers/hooks/useMobile';\n\ntype ControlledDatePickerDenseProps = {\n name: string;\n label?: string;\n formLabel?: string;\n size: 'small' | 'medium';\n fullwidth?: boolean;\n labelColor?: string;\n disabled?: boolean;\n fontSize?: number;\n readOnly?: boolean;\n useErrorSummary?: boolean;\n};\n\nexport const ControlledDatePickerDense = (\n props: ControlledDatePickerDenseProps,\n) => {\n const {\n name,\n label,\n formLabel,\n size,\n fullwidth,\n labelColor,\n disabled,\n fontSize,\n readOnly,\n useErrorSummary,\n } = props;\n\n const { control } = useFormContext();\n const { isMobileMd } = useMobile();\n\n return (\n <>\n {formLabel && (\n \n {formLabel}\n \n )}\n (\n \n {isMobileMd ? (\n field.onChange(e)}\n value={field.value}\n disableOpenPicker={readOnly}\n renderInput={(params) => (\n \n )}\n />\n ) : (\n field.onChange(e)}\n value={field.value}\n disableOpenPicker={readOnly}\n readOnly={readOnly}\n renderInput={(params) => (\n \n )}\n />\n )}\n \n )}\n />\n \n );\n};\n\nControlledDatePickerDense.defaultProps = {\n label: undefined,\n formLabel: undefined,\n fullwidth: false,\n labelColor: 'text.primary',\n disabled: false,\n fontSize: null,\n readOnly: false,\n useErrorSummary: false,\n};\n","/* eslint-disable no-nested-ternary */\nimport { FormLabel, TextField } from '@mui/material';\nimport { Controller, useFormContext, useFormState } from 'react-hook-form';\nimport { useMobile } from 'src/shared/helpers/hooks/useMobile';\n\ntype ControlledTextInputDenseProps = {\n name: string;\n label?: string;\n formLabel?: string;\n labelColor?: string;\n variant?: 'outlined' | 'filled' | 'standard';\n multiline?: boolean;\n placeholder?: string;\n rows?: number;\n type?: string;\n fullwidth?: boolean;\n disabled?: boolean;\n size: 'small' | 'medium';\n readOnly?: boolean;\n useErrorSummery?: boolean;\n fontWeight?: number;\n};\n\n// TODO: Warning: `NaN` is an invalid value for the `height` css style property.\nexport const ControlledTextInputDense = (\n props: ControlledTextInputDenseProps,\n) => {\n const {\n name,\n label,\n formLabel,\n labelColor,\n variant,\n multiline,\n placeholder,\n rows,\n type,\n fullwidth,\n disabled,\n size,\n readOnly,\n useErrorSummery,\n fontWeight,\n } = props;\n\n const { isMobileSm } = useMobile();\n\n const { control } = useFormContext();\n const { errors } = useFormState();\n\n let isError = false;\n let errorMessage = '';\n if (errors && Object.prototype.hasOwnProperty.call(errors, name)) {\n isError = true;\n errorMessage = errors[name].message;\n }\n return (\n <>\n {formLabel && (\n \n {formLabel}\n \n )}\n (\n \n )}\n />\n \n );\n};\nControlledTextInputDense.defaultProps = {\n labelColor: 'text.primary',\n variant: 'outlined',\n placeholder: undefined,\n rows: undefined,\n type: 'text',\n label: undefined,\n formLabel: undefined,\n disabled: false,\n multiline: false,\n fullwidth: false,\n readOnly: false,\n useErrorSummery: false,\n fontWeight: 600,\n};\n","import { Dispatch, SetStateAction, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useSelector } from 'react-redux';\nimport { ISelectItem } from 'src/shared/components/form/controlledSelect';\nimport { CompanyTypeEnum } from 'src/shared/enums/companyType.enum';\nimport { useIsMounted } from 'src/shared/helpers/hooks/useIsMounted';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport dayjs from 'dayjs';\nimport { SustainabilityAPI } from 'src/shared/services/api/sustainabilityAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { SustainabilityReportRequest } from 'src/shared/services/api/request/sustainabilityReportRequest';\nimport { ProjectStatusEnum } from 'src/shared/enums/projectStatus.enum';\nimport { toast } from 'react-toastify';\nimport { Button, Grid } from '@mui/material';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { EmployeeResponse } from 'src/shared/services/api/response/employeeResponse';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { FormErrorSummary } from 'src/shared/components/form/formErrorSummary';\nimport BusinessAreaControlledSelect from 'src/shared/components/form/businessAreaControlledSelect';\nimport EmployeeControlledSelected from 'src/shared/components/form/employeeControlledSelected';\nimport { TagsControlledSelected } from 'src/shared/components/form/tagsControlledSelected';\nimport { TagTypeEnum } from 'src/shared/enums/tagType.enum';\nimport { SustainabilityReportCreateSchema } from 'src/shared/schemas/sustainabilityReportCreateSchema';\n// import useDebounce from 'src/shared/components/atoms/useDebounce';\nimport ControlledCompanySelectHook from 'src/shared/components/form/controlledCompanySelectHook';\nimport { ControlledCheckBox } from '../form/controlledCheckBox';\nimport { SustainabilityFormTexts } from './sustainabilityFormTexts';\nimport { SustainabilityReportCreateInterface } from '../form/models/sustainabilityReportCreateInterface';\nimport { ControlledAutocompleteDropdown } from '../form/controlledAutocompleteDropdown';\nimport { ControlledDatePickerDense } from '../form/controlledDatePickerDense';\nimport { ControlledTextInputDense } from '../form/controlledTextInputDense';\n\nexport const companyTypeItems: ISelectItem[] = [\n {\n value: CompanyTypeEnum.Installation,\n label: 'sustainabilityReportTypeOfCompany.installation',\n },\n {\n value: CompanyTypeEnum.Teknikkonsult,\n label: 'sustainabilityReportTypeOfCompany.technicalConsult',\n },\n {\n value: CompanyTypeEnum.Industri,\n label: 'sustainabilityReportTypeOfCompany.industry',\n },\n];\n\ntype SustainabilityCreateFormProps = {\n setActiveStep?: Dispatch>;\n setReportId: Dispatch>;\n closeModalOnSubmit?: () => void;\n businessAreasData: BusinessAreaResponse[];\n employeesData: EmployeeResponse[];\n tagData: TagsResponse[];\n aosData: EmployeeResponse[];\n};\n\nexport const SustainabilityCreateForm = (\n props: SustainabilityCreateFormProps,\n) => {\n const {\n setActiveStep,\n setReportId,\n closeModalOnSubmit,\n businessAreasData,\n employeesData,\n tagData,\n aosData,\n } = props;\n const { t } = useTranslation();\n const isMounted = useIsMounted();\n\n const { userDetails, userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n // Local states\n const [loading, setLoading] = useState(false);\n const [, setSearchText] = useState(''); // Funkar inte\n const [, setSearchApprover] = useState(''); // Funkar inte\n const [typeOfCompany, setTypeOfCompany] = useState(null);\n\n // const debouncedSearchTerm = useDebounce(searchApprover, 300);\n\n const formMethods = useForm({\n resolver: yupResolver(SustainabilityReportCreateSchema(t)),\n defaultValues: {\n project: '',\n company: userCompany,\n typeOfCompany: undefined,\n projectNumber: '',\n projectDescription: '',\n sustainabilitySolutionTechDescription: '',\n climateBenefitDescription: '',\n customer: '',\n reporterUser: userDetails,\n registrationDate: dayjs(new Date()).toString(),\n approverUser: undefined,\n businessArea: userDetails?.businessAreas[0],\n locationTag: userDetails?.tags.filter(\n (tag) => tag.type === TagTypeEnum.Location,\n )[0],\n projectStatus: 0,\n invoicedAmount: '',\n checkboxApplyForCertificate: false,\n checkboxClimateBenefit: false,\n checkboxCodeOfConduct: false,\n checkboxCriteriaConsent: false,\n checkboxDeliveryPlan: false,\n checkboxMeetingPlan: false,\n checkboxProjectSize100TSEK: false,\n checkboxProjectSize1MSEK: false,\n checkboxSafeCoworker: false,\n checkboxServicePlan: false,\n checkboxSustainabilityEvaluationTech: false,\n checkboxSustainabilitySolutionTech: false,\n checkboxWasteSorting: false,\n },\n });\n\n const {\n handleSubmit,\n control,\n formState: { errors },\n } = formMethods;\n\n const formSubmit = async (data: SustainabilityReportCreateInterface) => {\n setLoading(false);\n const api = new SustainabilityAPI();\n ConsoleHelper.log('submitData', data);\n\n const dataToPost: SustainabilityReportRequest = {\n ...data,\n registrationDate: dayjs(data.registrationDate).format('YYYY-MM-DD'),\n companyId: data.company?.id ?? 0,\n projectStatus: ProjectStatusEnum.Created,\n businessAreaId: data.businessArea.id,\n locationTagId: data.locationTag.id,\n reporterUserId: data.reporterUser.id ?? 0,\n approverUserId: data.approverUser.id ?? 0,\n projectEndDate: null,\n };\n\n ConsoleHelper.log('Data SustainabilityReportRequest', dataToPost);\n\n try {\n const res = await api.Create(dataToPost);\n if (isMounted()) {\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n ConsoleHelper.log(res);\n if (\n setActiveStep &&\n typeOfCompany?.value === CompanyTypeEnum.Teknikkonsult\n ) {\n setReportId(res as unknown as number);\n setActiveStep((prevActiveStep) => prevActiveStep + 1);\n }\n if (\n closeModalOnSubmit &&\n typeOfCompany?.value !== CompanyTypeEnum.Teknikkonsult\n ) {\n closeModalOnSubmit();\n }\n }\n } catch (error) {\n if (isMounted()) {\n ConsoleHelper.log(error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n } finally {\n if (isMounted()) {\n setLoading(false);\n }\n }\n };\n\n return (\n \n
\n {/* {JSON.stringify(errors)} */}\n \n \n {userCompany && (\n \n )}\n \n \n \n options={companyTypeItems}\n translateOptionLabel\n name='typeOfCompany'\n nameProp='label'\n formLabel={t('typeOfCompany')}\n placeholder={t('chooseTypeOfCompany')}\n fullwidth\n callback={(e) => setTypeOfCompany(e)}\n />\n \n \n \n \n \n \n \n \n \n \n \n setSearchText(event)}\n fullWidth\n size='small'\n fontSize={13}\n errors={errors}\n disabled={!typeOfCompany}\n useErrorSummery\n />\n \n \n \n \n \n \n \n \n \n \n \n \n setSearchApprover(event.target.value)\n }\n fullWidth\n size='small'\n errors={errors}\n fontSize={13}\n disabled={!typeOfCompany}\n useErrorSummery\n />\n \n \n \n \n {typeOfCompany && (\n \n \n \n \n )}\n \n \n \n \n \n {typeOfCompany?.value === CompanyTypeEnum.Teknikkonsult\n ? t('Next')\n : t('createProject')}\n \n \n \n
\n
\n );\n};\n\nSustainabilityCreateForm.defaultProps = {\n setActiveStep: undefined,\n closeModalOnSubmit: undefined,\n};\n","export enum InternalMeetingFrequency {\n EveryOtherWeek = 1,\n OnceAWeek = 2,\n TwiceAWeek = 3,\n Other = 4, // Detta värde skulle då kräva en extra kommentar\n}\n\nexport enum InternalMeetingType {\n TeamsOrOnline = 1,\n OnSiteSameLocation = 2,\n OnSiteDifferentLocations = 3,\n Other = 4, // Detta värde skulle då kräva en extra kommentar\n}\n\nexport enum ExternalMeetingFrequency {\n EveryOtherWeek = 1,\n OnceAWeek = 2,\n TwiceAWeek = 3,\n Other = 4, // Detta värde skulle då kräva en extra kommentar\n}\n\nexport enum ExternalMeetingType {\n TeamsOrOnline = 1,\n OnSiteSamePlace = 2,\n OnSiteDifferentPlace = 3,\n OffSite = 4,\n Other = 5, // Detta värde skulle då kräva en extra kommentar\n}\n\nexport enum PhysicalMeetingTransportation {\n WillBike = 1,\n WillTakeTrain = 2,\n WillTakeBus = 3,\n WillDriveCar = 4,\n WillCarpool = 5,\n NotApplicablePhysical = 6, // Om inga fysiska möten är planerade\n OtherTransportation = 7, // Detta värde skulle då kräva en extra kommentar\n}\n","import * as yup from 'yup';\nimport {\n ExternalMeetingFrequency,\n ExternalMeetingType,\n InternalMeetingFrequency,\n InternalMeetingType,\n PhysicalMeetingTransportation,\n} from '../enums/meetingPlan.enum';\n\nexport const MeetingPlanSchema = (t: (n: string) => void) =>\n yup.object().shape({\n meetingPreparationPlan: yup.bool().required(`${t('fieldRequired')}`),\n meetingPreparationPlanComment: yup.lazy((value, { parent }) => {\n const { meetingPreparationPlan } = parent;\n\n if (meetingPreparationPlan) {\n return yup.string().optional();\n }\n return yup.string().required(`${t('fieldRequired')}`);\n }),\n internalMeetingFrequency: yup\n .number()\n .integer()\n .min(1, `${t('fieldRequired')}`)\n .required(),\n\n internalMeetingFrequencyComment: yup.lazy((value, { parent }) => {\n const { internalMeetingFrequency } = parent;\n\n if (internalMeetingFrequency === InternalMeetingFrequency.Other) {\n return yup\n .string()\n .min(5, `${t('commentMinValue')}`)\n .required(`${t('commentRequired')}`);\n }\n return yup.string();\n }),\n internalMeetingType: yup\n .number()\n .integer()\n .min(1, `${t('fieldRequired')}`)\n .required(),\n internalMeetingTypeComment: yup.lazy((value, { parent }) => {\n const { internalMeetingType } = parent;\n\n if (internalMeetingType === InternalMeetingType.Other) {\n return yup\n .string()\n .min(5, `${t('commentMinValue')}`)\n .required(`${t('commentRequired')}`);\n }\n return yup.string();\n }),\n externalMeetingFrequency: yup\n .number()\n .integer()\n .min(1, `${t('fieldRequired')}`)\n .required(),\n externalMeetingFrequencyComment: yup.lazy((value, { parent }) => {\n const { externalMeetingFrequency } = parent;\n\n if (externalMeetingFrequency === ExternalMeetingFrequency.Other) {\n return yup\n .string()\n .min(5, `${t('commentMinValue')}`)\n .required(`${t('commentRequired')}`);\n }\n return yup.string();\n }),\n externalMeetingType: yup\n .number()\n .integer()\n .min(1, `${t('fieldRequired')}`)\n .required(),\n externalMeetingTypeComment: yup.lazy((value, { parent }) => {\n const { externalMeetingType } = parent;\n\n if (externalMeetingType === ExternalMeetingType.Other) {\n return yup\n .string()\n .min(5, `${t('commentMinValue')}`)\n .required(`${t('commentRequired')}`);\n }\n return yup.string();\n }),\n physicalMeetingTransportation: yup\n .number()\n .integer()\n .min(1, `${t('fieldRequired')}`)\n .required(),\n physicalMeetingTransportationComment: yup.lazy((value, { parent }) => {\n const { physicalMeetingTransportation } = parent;\n\n if (\n physicalMeetingTransportation ===\n PhysicalMeetingTransportation.OtherTransportation\n ) {\n return yup\n .string()\n .min(5, `${t('commentMinValue')}`)\n .required(`${t('commentRequired')}`);\n }\n return yup.string();\n }),\n });\n","import { MeetingPlanResponse } from './response/meetingPlanResponse';\nimport { MeetingPlansOptions } from './options/meetingPlansOptions';\nimport { MeetingPlanRequest } from './request/meetingPlanRequest';\nimport { BaseAPIV2 } from './baseAPIV2';\n\nexport class MeetingPlansAPI extends BaseAPIV2<\n MeetingPlanResponse,\n MeetingPlansOptions,\n MeetingPlanRequest\n> {\n constructor() {\n super('MeetingPlan');\n }\n}\n","import {\n FormControlLabel,\n FormLabel,\n Icon,\n Radio,\n RadioGroup,\n} from '@mui/material';\nimport React from 'react';\nimport { Check, RadioButtonUncheckedOutlined } from '@mui/icons-material';\nimport { Controller, useFormContext } from 'react-hook-form';\nimport { RadioButton } from './models/radioButton';\n\ntype ControlledRadioButtonsProps = {\n name: string;\n formLabel: string;\n values: RadioButton[];\n row?: boolean;\n disabled?: boolean;\n labelColor?: string;\n readOnly?: boolean;\n setLocaleValue?: React.Dispatch>;\n setLocaleBooleanString?: React.Dispatch<\n React.SetStateAction\n >;\n};\n\nexport const ControlledRadioButtons = (props: ControlledRadioButtonsProps) => {\n const {\n name,\n formLabel,\n values,\n row,\n disabled,\n labelColor,\n setLocaleValue,\n setLocaleBooleanString,\n readOnly,\n } = props;\n const { control } = useFormContext();\n\n return (\n <>\n {formLabel && (\n \n {formLabel}\n \n )}\n (\n {\n field.onChange(e.target.value);\n if (\n e.target.value === 'false' ||\n e.target.value === 'true'\n ) {\n setLocaleBooleanString?.(e.target.value);\n }\n setLocaleValue?.(Number(e.target.value));\n }\n : undefined\n }\n >\n {values.map((value) => (\n : undefined}\n icon={\n readOnly ? : \n }\n readOnly={readOnly}\n inputProps={{\n readOnly,\n }}\n />\n }\n />\n ))}\n \n )}\n />\n \n );\n};\n\nControlledRadioButtons.defaultProps = {\n row: false,\n disabled: false,\n labelColor: 'text.primary',\n setLocaleValue: undefined,\n setLocaleBooleanString: undefined,\n readOnly: false,\n};\n","import {\n ExternalMeetingFrequency,\n ExternalMeetingType,\n InternalMeetingFrequency,\n InternalMeetingType,\n PhysicalMeetingTransportation,\n} from 'src/shared/enums/meetingPlan.enum';\nimport { RadioButton } from './radioButton';\n\nexport const meetingPreparationPlaOptions = (\n t: (n: string) => string,\n): RadioButton[] => [\n { value: true, label: t('yes') },\n { value: false, label: t('no') },\n];\n\nexport const internalMeetingFrequencyOptions = (\n t: (n: string) => string,\n): RadioButton[] => [\n {\n value: InternalMeetingFrequency.EveryOtherWeek,\n label: t('everyOtherWeek'),\n },\n {\n value: InternalMeetingFrequency.OnceAWeek,\n label: t('onceAWeek'),\n },\n {\n value: InternalMeetingFrequency.TwiceAWeek,\n label: t('twiceAWeek'),\n },\n {\n value: InternalMeetingFrequency.Other,\n label: t('other'),\n },\n];\n\nexport const internalMeetingTypeOptions = (\n t: (n: string) => string,\n): RadioButton[] => [\n {\n value: InternalMeetingType.TeamsOrOnline,\n label: t('teamsOrOnline'),\n },\n {\n value: InternalMeetingType.OnSiteSameLocation,\n label: t('onSiteSameLocation'),\n },\n {\n value: InternalMeetingType.OnSiteDifferentLocations,\n label: t('onSiteDifferentLocations'),\n },\n {\n value: InternalMeetingType.Other,\n label: t('other'),\n },\n];\n\nexport const externalMeetingFrequencyOptions = (\n t: (n: string) => string,\n): RadioButton[] => [\n {\n value: ExternalMeetingFrequency.EveryOtherWeek,\n label: t('everyOtherWeek'),\n },\n {\n value: ExternalMeetingFrequency.OnceAWeek,\n label: t('onceAWeek'),\n },\n {\n value: ExternalMeetingFrequency.TwiceAWeek,\n label: t('twiceAWeek'),\n },\n {\n value: ExternalMeetingFrequency.Other,\n label: t('other'),\n },\n];\n\nexport const externalMeetingTypeOptions = (\n t: (n: string) => string,\n): RadioButton[] => [\n {\n value: ExternalMeetingType.TeamsOrOnline,\n label: t('teamsOrOnline'),\n },\n {\n value: ExternalMeetingType.OnSiteSamePlace,\n label: t('onSiteSamePlace'),\n },\n {\n value: ExternalMeetingType.OnSiteDifferentPlace,\n label: t('onSiteDifferentPlace'),\n },\n {\n value: ExternalMeetingType.OffSite,\n label: t('offSite'),\n },\n {\n value: ExternalMeetingType.Other,\n label: t('alternativeArrangement'),\n },\n];\n\nexport const physicalMeetingTransportationOptions = (\n t: (n: string) => string,\n): RadioButton[] => [\n {\n value: PhysicalMeetingTransportation.WillBike,\n label: t('willBike'),\n },\n {\n value: PhysicalMeetingTransportation.WillTakeTrain,\n label: t('willTakeTrain'),\n },\n {\n value: PhysicalMeetingTransportation.WillTakeBus,\n label: t('willTakeBus'),\n },\n {\n value: PhysicalMeetingTransportation.WillDriveCar,\n label: t('willDriveCar'),\n },\n {\n value: PhysicalMeetingTransportation.WillCarpool,\n label: t('willCarpool'),\n },\n {\n value: PhysicalMeetingTransportation.NotApplicablePhysical,\n label: t('notApplicablePhysical'),\n },\n {\n value: PhysicalMeetingTransportation.OtherTransportation,\n label: t('otherTransportation'),\n },\n];\n","import { yupResolver } from '@hookform/resolvers/yup';\nimport { Box, Button, Grid } from '@mui/material';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { MeetingPlanSchema } from 'src/shared/schemas/meetingPlanSchema';\nimport { MeetingPlanRequest } from 'src/shared/services/api/request/meetingPlanRequest';\nimport {\n ExternalMeetingFrequency,\n ExternalMeetingType,\n InternalMeetingFrequency,\n InternalMeetingType,\n PhysicalMeetingTransportation,\n} from 'src/shared/enums/meetingPlan.enum';\nimport { useIsMounted } from 'src/shared/helpers/hooks/useIsMounted';\nimport { useEffect, useState } from 'react';\nimport { FormErrorSummary } from 'src/shared/components/form/formErrorSummary';\nimport { MeetingPlansAPI } from 'src/shared/services/api/meetingPlanAPI';\nimport { toast } from 'react-toastify';\nimport { MeetingPlanResponse } from 'src/shared/services/api/response/meetingPlanResponse';\nimport { ControlledRadioButtons } from '../form/controlledRadioButtons';\nimport { ControlledTextInputDense } from '../form/controlledTextInputDense';\nimport {\n externalMeetingFrequencyOptions,\n externalMeetingTypeOptions,\n internalMeetingFrequencyOptions,\n internalMeetingTypeOptions,\n meetingPreparationPlaOptions,\n physicalMeetingTransportationOptions,\n} from '../form/models/sustainabilityMeetingPlanOptions';\n\ntype SustainabilityMeetingPlanFormProps = {\n refetchCallback: () => void;\n meetingPlan?: MeetingPlanResponse | undefined;\n sustainabilityId: number;\n};\n\nexport const SustainabilityMeetingPlanForm = (\n props: SustainabilityMeetingPlanFormProps,\n) => {\n const { refetchCallback, meetingPlan, sustainabilityId } = props;\n const { t } = useTranslation();\n const isMounted = useIsMounted();\n\n const isReadOnly = meetingPlan !== undefined && meetingPlan !== null;\n\n const [loading, setLoading] = useState(false);\n const [meetingPreparationPlanValue, setMeetingPreparationPlanValue] =\n useState();\n const [internalMeetingFrequencyValue, setInternalMeetingFrequencyValue] =\n useState();\n const [internalMeetingTypeValue, setInternalMeetingTypeValue] =\n useState();\n const [externalMeetingFrequencyValue, setExternalMeetingFrequencyValue] =\n useState();\n const [externalMeetingTypeValue, setExternalMeetingTypeValue] =\n useState();\n const [\n physicalMeetingTransportationValue,\n setPhysicalMeetingTransportationValue,\n ] = useState();\n\n const formMethods = useForm({\n resolver: yupResolver(MeetingPlanSchema(t)),\n defaultValues: {\n meetingPreparationPlan: true,\n meetingPreparationPlanComment: '',\n internalMeetingFrequency: 0,\n internalMeetingFrequencyComment: '',\n internalMeetingType: 0,\n internalMeetingTypeComment: '',\n externalMeetingFrequency: 0,\n externalMeetingFrequencyComment: '',\n externalMeetingType: 0,\n externalMeetingTypeComment: '',\n physicalMeetingTransportation: 0,\n physicalMeetingTransportationComment: '',\n },\n });\n\n const {\n handleSubmit,\n reset,\n formState: { errors },\n } = formMethods;\n\n useEffect(() => {\n if (meetingPlan) {\n reset({\n ...(meetingPlan as unknown as MeetingPlanRequest),\n });\n }\n }, [meetingPlan, reset]);\n\n const submitHandler = async (data: MeetingPlanRequest) => {\n const dataToCreate: MeetingPlanRequest = {\n ...data,\n sustainabilityId,\n };\n ConsoleHelper.log('submitData', dataToCreate);\n\n setLoading(true);\n const api = new MeetingPlansAPI();\n\n try {\n const res = await api.Create(dataToCreate);\n if (isMounted()) {\n toast.success(t('meetingplanSuccess'));\n refetchCallback();\n }\n } catch (error) {\n if (isMounted()) {\n toast.error(t('somethingWentWrong'));\n }\n } finally {\n if (isMounted()) {\n setLoading(false);\n }\n }\n };\n ConsoleHelper.log('meetingplanform', meetingPreparationPlanValue);\n return (\n \n \n
\n \n \n \n \n {meetingPreparationPlanValue === 'false' && (\n \n \n \n )}\n \n \n \n {internalMeetingFrequencyValue ===\n InternalMeetingFrequency.Other && (\n \n \n \n )}\n\n \n \n \n {internalMeetingTypeValue === InternalMeetingType.Other && (\n \n \n \n )}\n \n \n \n {externalMeetingFrequencyValue ===\n ExternalMeetingFrequency.Other && (\n \n \n \n )}\n \n \n \n {externalMeetingTypeValue === ExternalMeetingType.Other && (\n \n \n \n )}\n \n \n \n {physicalMeetingTransportationValue ===\n PhysicalMeetingTransportation.OtherTransportation && (\n \n \n \n )}\n \n \n \n {!isReadOnly && (\n \n \n \n )}\n \n \n
\n
\n );\n};\n\nSustainabilityMeetingPlanForm.defaultProps = {\n meetingPlan: undefined,\n};\n","import { Box, Typography } from '@mui/material';\nimport { useState } from 'react';\nimport { ModalSustainabilityTemplate } from 'src/shared/templates/modalSustainabilityTemplate';\nimport { useFetchBusinessAreas } from 'src/shared/helpers/hooks/useFetchBusinessAreas';\nimport { useFetchEmployeesByCompanyId } from 'src/shared/helpers/hooks/useFetchEmployeesByCompanyId';\nimport { useFetchTags } from 'src/shared/helpers/hooks/useFetchTags';\nimport { useFetchApproverUsers } from 'src/shared/helpers/hooks/useFetchApproverUsers';\nimport { useTranslation } from 'react-i18next';\nimport { SustainabilityCreateForm } from './sustainabilityCreateForm';\nimport { SustainabilityMeetingPlanForm } from './sustainabilityMeetingPlanForm';\n\ntype SustainabilityCreateModalProps = {\n isOpen: boolean;\n onClose: () => void;\n onSubmitClose: () => void;\n};\n\nexport const SustainabilityCreateModal = (\n props: SustainabilityCreateModalProps,\n) => {\n const { isOpen, onClose, onSubmitClose } = props;\n const { t } = useTranslation();\n\n // Local states\n const [activeStep, setActiveStep] = useState(0);\n\n const [reportId, setReportId] = useState();\n\n const { businessAreasData } = useFetchBusinessAreas();\n const { employeesData } = useFetchEmployeesByCompanyId('');\n const { tagData } = useFetchTags('Location');\n const { aosData } = useFetchApproverUsers();\n\n return (\n \n {`${t('common:registerProject')}`}\n \n }\n content={\n \n {activeStep === 0 &&\n businessAreasData &&\n employeesData &&\n tagData && (\n \n )}\n {activeStep === 1 && reportId && (\n \n )}\n \n }\n />\n );\n};\n","import { BaseAPI } from './baseAPI';\nimport AxiosInstance from './axiosInstanceService';\nimport { StatisticsSustainabilityOptions } from './options/statisticsOptions';\nimport { StatisticsSustainabilityResponse } from './response/statisticsResponse';\n\nexport class StatisticsAPI extends BaseAPI<\n StatisticsSustainabilityResponse,\n StatisticsSustainabilityOptions,\n any\n> {\n constructor() {\n super('Statistics');\n }\n\n public GetStatisticsSustainability = (\n options: StatisticsSustainabilityOptions,\n ) =>\n AxiosInstance.get(\n `${this.controllerPath}/Sustainability`,\n {\n params: options,\n },\n );\n}\n","import { Grid, Typography, Avatar } from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\nimport useStatusInfo from '../hooks/useStatusInfo';\n\ntype SustainabilityStatisticsSumCardProps = {\n projectStatusId: number;\n quantity: number;\n quantityUserCompany: number;\n userCompany: string | undefined;\n};\n\nexport const SustainabilityStatisticsSumCard = (\n props: SustainabilityStatisticsSumCardProps,\n) => {\n const { projectStatusId, quantity, quantityUserCompany, userCompany } = props;\n\n const { color, label, icon } = useStatusInfo(projectStatusId);\n\n return (\n \n \n \n {label}\n \n \n {quantity}\n \n \n \n \n {icon}\n \n \n \n \n ({quantityUserCompany})\n \n \n {userCompany}\n \n \n \n );\n};\n","import { Grid, Typography, Box } from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\nimport { StatisticsSustainabilityLeaderboardRowResponse } from 'src/shared/services/api/response/statisticsResponse';\n\ntype SustainabilityStatisticsLeaderboardRowProps = {\n row: StatisticsSustainabilityLeaderboardRowResponse;\n};\n\nexport const SustainabilityStatisticsLeaderboardRow = (\n props: SustainabilityStatisticsLeaderboardRowProps,\n) => {\n const { row } = props;\n return (\n \n \n \n \n {`${row.leaderboardPosition}.`}\n \n {row.title}\n \n {`${row.quantity} st`}\n \n \n );\n};\n","import { Grid, Typography } from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\nimport { StatisticsSustainabilityLeaderboardRowResponse } from 'src/shared/services/api/response/statisticsResponse';\nimport { SustainabilityStatisticsLeaderboardRow } from './sustainabilityStatisticsLeaderboardRow';\n\ntype SustainabilityStatisticsLeaderboardProps = {\n leaderboard: StatisticsSustainabilityLeaderboardRowResponse[];\n leaderboardTitle: string;\n};\n\nexport const SustainabilityStatisticsLeaderboard = (\n props: SustainabilityStatisticsLeaderboardProps,\n) => {\n const { leaderboard, leaderboardTitle } = props;\n return (\n \n \n {leaderboardTitle}\n \n {leaderboard.map((row) => (\n \n ))}\n \n );\n};\n","import { Grid, Typography, Skeleton, Avatar } from '@mui/material';\n\nexport const SustainabilityStatisticsDashboardSkeleton = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { Grid, Typography } from '@mui/material';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { useCallback, useEffect, useState } from 'react';\nimport { StatisticsAPI } from 'src/shared/services/api/statisticsAPI';\nimport { useIsMounted } from 'src/shared/helpers/hooks/useIsMounted';\nimport { StatisticsSustainabilityResponse } from 'src/shared/services/api/response/statisticsResponse';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { useTranslation } from 'react-i18next';\nimport { SustainabilityStatisticsSumCard } from './sustainabilityStatisticsSumCard';\nimport { SustainabilityStatisticsLeaderboard } from './sustainabilityStatisticsLeaderboard';\nimport { SustainabilityStatisticsDashboardSkeleton } from './sustainabilityStatisticsDashboardSkeleton';\n\nexport const SustainabilityStatisticsDashboard = () => {\n const isMounted = useIsMounted();\n const { t } = useTranslation();\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n const [loading, setLoading] = useState(false);\n const [data, setData] = useState();\n\n const fetchData = useCallback(async () => {\n setLoading(true);\n const api = new StatisticsAPI();\n try {\n const res = await api.GetStatisticsSustainability({\n companyId: userCompany?.id,\n });\n if (isMounted()) {\n setData(res);\n ConsoleHelper.log('DashboardData:: ', res);\n }\n } catch (error) {\n if (isMounted()) {\n ConsoleHelper.log(error);\n }\n } finally {\n if (isMounted()) {\n setLoading(false);\n }\n }\n }, [isMounted, userCompany?.id]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n if (loading) {\n return ;\n }\n return data ? (\n \n \n {t('sustainabilityStatisticInfo')}\n \n {data?.statusBadges?.length > 0 &&\n data.statusBadges.map((status) => (\n \n \n \n ))}\n \n \n {t('sustainabilityStatisticApprovedInfo')}\n \n \n \n \n \n \n \n \n \n \n \n \n ) : null;\n};\n","import { Box, Button, Grid, Tab } from '@mui/material';\nimport { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from 'react-router-dom';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport { useFetchContentPageById } from 'src/shared/helpers/hooks/useFetchContentPageById';\nimport { TabContext, TabList, TabPanel } from '@mui/lab';\nimport { MainContentImage } from 'src/shared/components/atoms/mainContentImage';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { MainContentText } from 'src/shared/components/atoms/mainContentText';\nimport { SustainabilityTabEnum } from 'src/shared/enums/sustainabilityTab.enum';\nimport { Add } from '@mui/icons-material';\nimport { SustainabilityReportProject } from '../components/sustainabilityReportProject';\nimport { SustainabilityCertifiedProject } from '../components/sustainabilityCertifiedProject';\nimport { SustainabilityEditFab } from '../components/sustainabilityEditFab';\nimport { SustainabilityCreateModal } from '../components/sustainabilityCreateModal';\nimport { SustainabilityStatisticsDashboard } from '../components/sustainabilityStatisticsDashboard';\n\nconst SustainabilityReportListPage = () => {\n const { id } = useParams();\n const { t } = useTranslation();\n\n const { contentData, contentLoading, contentSelectedImage } =\n useFetchContentPageById(id);\n const [refetchList, setRefetchList] = useState(undefined);\n\n // Local states\n const [tabValue, setTabValue] = useState(SustainabilityTabEnum.ReportProject);\n const [openCreateModal, setOpenCreateModal] = useState(false);\n\n const handleTabChange = (\n event: React.SyntheticEvent,\n newValue: SustainabilityTabEnum,\n ) => {\n setTabValue(newValue);\n };\n\n return (\n \n \n \n \n \n \n {contentSelectedImage && (\n ConsoleHelper.log('image error')}\n maxHeight='200px'\n />\n )}\n \n \n setOpenCreateModal(true)}\n color='primary'\n variant='contained'\n fullWidth\n sx={{ my: 4 }}\n >\n \n \n {t('registerProject')}\n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n setOpenCreateModal(false);\n setRefetchList(new Date());\n }}\n onClose={() => setOpenCreateModal(false)}\n />\n \n }\n />\n );\n};\n\nexport default SustainabilityReportListPage;\n","import { useEffect, useState } from 'react';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { fileUrl } from 'src/shared/services/utils/url';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { useIsMounted } from './useIsMounted';\nimport ConsoleHelper from '../consoleHelper';\n\nexport const useFetchContentPageById = (id: number | string) => {\n const isMounted = useIsMounted();\n const { user } = useSelector((state: RootStateType) => state.oidc);\n\n const [contentData, setContentData] = useState();\n const [contentError, setContentError] = useState(null);\n const [contentLoading, setContentLoading] = useState(false);\n const [contentSelectedImage, setContentSelectedImage] = useState<\n string | undefined\n >();\n\n useEffect(() => {\n const fetchContentPageById = async () => {\n const api = new ContentPageAPI();\n try {\n setContentLoading(true);\n const res = await api.Get(id);\n if (isMounted()) {\n if (res) {\n setContentData(res.result);\n ConsoleHelper.log('RES getContentPageById ', res.result);\n setContentSelectedImage(\n fileUrl(res.result?.featuredImageDocumentId, user?.access_token),\n );\n }\n }\n } catch (error: any) {\n ConsoleHelper.log('ERROR getContentPageById ', error);\n setContentError(error);\n } finally {\n if (isMounted()) {\n setContentLoading(false);\n }\n }\n };\n fetchContentPageById();\n }, [id, isMounted, user?.access_token]);\n\n return { contentData, contentError, contentLoading, contentSelectedImage };\n};\n","export const useClearLocalStorage = () => {\n const clearLocalStorage = (key: string) => {\n localStorage.removeItem(key);\n };\n\n return {\n clearLocalStorage,\n };\n};\n","import { Controller } from 'react-hook-form';\nimport { TextField, Autocomplete, Box, FormLabel } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport { ISelectItem } from './controlledSelect';\n\ntype TypeOfCompanyControlledSelectedProps = {\n name: string;\n label?: string;\n formLabel?: string;\n labelColor?: string;\n size?: 'small' | 'medium';\n selectItems: ISelectItem[];\n helperText?: string | undefined;\n type: string;\n multiple?: boolean;\n rows?: number;\n fullWidth?: boolean;\n placeholder?: string;\n control?: any;\n errors?: any;\n disabled?: boolean;\n fontSize?: number;\n readOnly?: boolean;\n useErrorSummary?: boolean;\n};\n\nexport const TypeOfCompanyControlledSelected = (\n props: TypeOfCompanyControlledSelectedProps,\n) => {\n const {\n // helperText,\n // multiple,\n rows,\n type,\n fullWidth,\n placeholder,\n name,\n control,\n errors,\n label,\n formLabel,\n labelColor,\n selectItems,\n size,\n disabled,\n fontSize,\n readOnly,\n useErrorSummary,\n } = props;\n const { t } = useTranslation();\n // const theme = useTheme();\n\n let isError = false;\n let errorMessage = '';\n if (errors && Object.prototype.hasOwnProperty.call(errors, name)) {\n isError = true;\n errorMessage = errors[name].message;\n }\n\n return (\n <>\n {formLabel && (\n \n {formLabel}\n \n )}\n {\n return (\n item.value === value) || null}\n getOptionLabel={(option: ISelectItem) => t(option.label)}\n isOptionEqualToValue={(option, item) =>\n option.value === item.value\n }\n forcePopupIcon={!readOnly}\n onChange={(event, selectedOptions) => {\n onChange(selectedOptions?.value);\n }}\n renderOption={(optProps, option) => (\n \n {t(option.label)}\n \n )}\n renderInput={(params) => {\n return (\n \n );\n }}\n />\n );\n }}\n />\n \n );\n};\nTypeOfCompanyControlledSelected.defaultProps = {\n helperText: undefined,\n multiple: undefined,\n rows: undefined,\n fullWidth: undefined,\n placeholder: undefined,\n control: undefined,\n errors: undefined,\n label: undefined,\n formLabel: undefined,\n labelColor: 'text.primary',\n size: 'medium',\n disabled: false,\n fontSize: null,\n readOnly: false,\n useErrorSummary: false,\n};\n","import * as yup from 'yup';\nimport { ProjectStatusEnum } from '../enums/projectStatus.enum';\nimport { CompanyTypeEnum } from '../enums/companyType.enum';\n\nexport const SustainabilityReportEditSchema = (t: (n: string) => void) =>\n yup.object().shape({\n typeOfCompany: yup.number().required(`${t('companyTypeRequired')}`),\n project: yup.string().required(`${t('projectRequired')}`),\n projectNumber: yup.string().required(`${t('projectNumberRequired')}`),\n projectDescription: yup\n .string()\n .required(`${t('projDescriptionRequired')}`),\n projectStatus: yup.number().required(),\n climateBenefitDescription: yup.string().when('projectStatus', {\n is: (projectStatus: number) => projectStatus > ProjectStatusEnum.All,\n then: yup.string().required(`${t('descriptionRequired')}`),\n }),\n sustainabilitySolutionTechDescription: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus >= ProjectStatusEnum.Created &&\n typeOfCompany !== CompanyTypeEnum.Installation\n ) {\n return yup.string().required(`${t('descriptionRequired')}`);\n }\n return yup.string().nullable();\n }),\n customer: yup.string().required(`${t('customerRequired')}`),\n approverUser: yup\n .object()\n .nullable()\n .required(`${t('reporterRequired')}`),\n reporterUser: yup\n .object()\n .nullable()\n .required(`${t('reviewerRequired')}`),\n businessArea: yup\n .object()\n .nullable()\n .required(`${t('disciplineRequired')}`),\n locationTag: yup\n .object()\n\n .required(`${t('locationRequired')}`),\n invoicedAmount: yup.string().when('projectStatus', {\n is: (projectStatus: ProjectStatusEnum) =>\n projectStatus === ProjectStatusEnum.Created,\n then: yup.string().required(`${t('invoicedAmountRequired')}`),\n }),\n checkboxApplyForCertificate: yup\n .boolean()\n .when('projectStatus', {\n is: (projectStatus: ProjectStatusEnum) =>\n projectStatus >= ProjectStatusEnum.Created,\n then: yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`),\n })\n .required(),\n checkboxCriteriaConsent: yup\n .boolean()\n .oneOf([true], `${t('fieldMustbeChecked')}`)\n .required(),\n checkboxSafeCoworker: yup.lazy((value, { parent }) => {\n const { projectStatus } = parent;\n if (projectStatus === ProjectStatusEnum.Created) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxClimateBenefit: yup.lazy((value, { parent }) => {\n const { projectStatus } = parent;\n if (projectStatus === ProjectStatusEnum.Created) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxDeliveryPlan: yup.lazy((value, { parent }) => {\n const { projectStatus } = parent;\n const { typeOfCompany } = parent;\n\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany !== CompanyTypeEnum.Teknikkonsult\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n\n // Return a schema that always passes validation\n return yup.boolean().required();\n }),\n checkboxWasteSorting: yup.lazy((value, { parent }) => {\n const { projectStatus } = parent;\n if (projectStatus === ProjectStatusEnum.Created) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxCodeOfConduct: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany !== CompanyTypeEnum.Teknikkonsult\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxServicePlan: yup.lazy((value, { parent }) => {\n const { projectStatus } = parent;\n const { typeOfCompany } = parent;\n\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany === CompanyTypeEnum.Installation\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n\n // Return a schema that always passes validation\n return yup.boolean().required();\n }),\n checkboxMeetingPlan: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany === CompanyTypeEnum.Teknikkonsult\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxSustainabilitySolutionTech: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany === CompanyTypeEnum.Teknikkonsult\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxSustainabilityEvaluationTech: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany !== CompanyTypeEnum.Installation\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxProjectSize100TSEK: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany === CompanyTypeEnum.Teknikkonsult\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n checkboxProjectSize1MSEK: yup.lazy((value, { parent }) => {\n const { projectStatus, typeOfCompany } = parent;\n if (\n projectStatus === ProjectStatusEnum.Created &&\n typeOfCompany !== CompanyTypeEnum.Teknikkonsult\n ) {\n return yup.boolean().oneOf([true], `${t('fieldMustbeChecked')}`);\n }\n return yup.boolean().required();\n }),\n registrationDate: yup.date().required(`${t('registrationDateRequired')}`),\n projectEndDate: yup\n .date()\n .required(`${t('projectEndDateRequired')}`)\n .nullable()\n .transform((v) => (v instanceof Date && !Number.isNaN(v) ? v : null)),\n });\n","import {\n Box,\n Button,\n Dialog,\n DialogActions,\n DialogContent,\n DialogContentText,\n DialogTitle,\n} from '@mui/material';\nimport * as yup from 'yup';\nimport { useMobile } from 'src/shared/helpers/hooks/useMobile';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { useTranslation } from 'react-i18next';\nimport { useEffect } from 'react';\nimport { ControlledTextInputDense } from '../form/controlledTextInputDense';\nimport { SustainabilityStatusUpdateForm } from '../form/models/sustainabilityStatusUpdateForm';\n\ntype SustainabilityDialogModalProps = {\n open: boolean;\n dialogText: string;\n dialogTitle: string;\n defaultMessage: string;\n handleClose: () => void;\n putDataOnSubmit: (message: string) => void;\n confirmTextButton: string;\n cancelTextButton: string;\n disabled: boolean;\n};\n\nexport const SustainabilityDialogModal = (\n props: SustainabilityDialogModalProps,\n) => {\n const {\n open,\n dialogText,\n dialogTitle,\n defaultMessage,\n handleClose,\n putDataOnSubmit,\n confirmTextButton,\n cancelTextButton,\n disabled,\n } = props;\n\n const { t } = useTranslation();\n const { isMobileMd } = useMobile();\n\n const StatusUpdateSchema = yup.object().shape({\n message: yup.string().required(),\n });\n\n const formMethods = useForm({\n resolver: yupResolver(StatusUpdateSchema),\n defaultValues: {\n message: '',\n },\n });\n const { handleSubmit, reset } = formMethods;\n\n useEffect(() => {\n if (defaultMessage) {\n reset({\n message: defaultMessage,\n });\n }\n }, [defaultMessage, reset]);\n\n const submitHandler = (data: SustainabilityStatusUpdateForm) => {\n ConsoleHelper.log('SubmitData ', data);\n putDataOnSubmit(data.message);\n reset();\n };\n\n const closeHandler = () => {\n reset();\n handleClose();\n };\n return (\n \n \n
\n \n {dialogTitle}\n \n \n {dialogText}\n \n \n \n \n \n \n \n \n
\n
\n \n );\n};\n","export enum SurveyMethod {\n PhysicalMeeting = 1,\n ViaTeams = 2,\n ViaPhone = 3,\n}\n\nexport enum SatisfactionLevel {\n NotSatisfied = 1,\n FairlySatisfied = 2,\n Satisfied = 3,\n VerySatisfied = 4,\n CouldntBeHappier = 5,\n}\n\nexport enum ContributionToSustainability {\n Yes = 1,\n No = 2,\n Unsure = 3,\n}\n\nexport enum LikelihoodToWorkAgain {\n Yes = 1,\n No = 2,\n Unsure = 3,\n}\n","import { Box, Button, Tooltip } from '@mui/material';\nimport { useState } from 'react';\nimport { Colors } from 'src/shared/components/styles';\nimport { ProjectStatusEnum } from 'src/shared/enums/projectStatus.enum';\nimport { SustainabilityStatusUpdateRequest } from 'src/shared/services/api/request/sustainabilityStatusUpdateRequest';\nimport { useTranslation } from 'react-i18next';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { SustainabilityAPI } from 'src/shared/services/api/sustainabilityAPI';\nimport { useIsMounted } from 'src/shared/helpers/hooks/useIsMounted';\nimport { toast } from 'react-toastify';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport { SustainabilityReportResponse } from 'src/shared/services/api/response/sustainabilityReportResponse';\nimport { isSustainabilityApproverUserOrAdmin } from 'src/shared/helpers/permissionHelper';\nimport { SustainabilityDialogModal } from './sustainabilityDialogModal';\n\ntype SustainabilityEditActionButtonsProps = {\n status: number;\n id: number;\n report: SustainabilityReportResponse;\n refetchReportAfterUpdate: () => void;\n onClickDelete: () => void;\n};\n\nexport const SustainabilityEditActionButtons = (\n props: SustainabilityEditActionButtonsProps,\n) => {\n const { status, id, report, refetchReportAfterUpdate, onClickDelete } = props;\n const { t } = useTranslation();\n const isMounted = useIsMounted();\n\n const { userDetails } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n const [openDialog, setOpenDialog] = useState(false);\n const [projectStatus, setProjectStatus] = useState();\n const [modalTitle, setModalTitle] = useState();\n const [dialogText, setDialogText] = useState('');\n const [modalDefaultText, setModalDefaultText] = useState('');\n const [loading, setLoading] = useState(false);\n\n const onClickHandler = (newStatus: number, title: string) => {\n setProjectStatus(newStatus);\n setModalTitle(title);\n if (newStatus === ProjectStatusEnum.Approved) {\n setModalDefaultText(t('common:sustainabilityReportApprovalMessage'));\n setDialogText(t('common:sustainabilityReportMessageInfo'));\n } else if (newStatus === ProjectStatusEnum.SupplementRequested) {\n setModalDefaultText(\n t('common:sustainabilityReportSupplementRequestedMessage'),\n );\n setDialogText(t('common:sustainabilityReportMessageInfo'));\n } else {\n setModalDefaultText('');\n setDialogText('');\n }\n setOpenDialog(true);\n };\n\n // UPDATERA status på rapport\n const putData = async (message: string) => {\n const api = new SustainabilityAPI();\n setLoading(true);\n\n const dataToPut: SustainabilityStatusUpdateRequest = {\n projectStatus: projectStatus ?? 0,\n message,\n };\n ConsoleHelper.log('putData', dataToPut);\n\n try {\n await api.UpdateStatus(id, dataToPut);\n if (isMounted()) {\n toast.success(`${t('reportStatusUpdated')}`);\n }\n } catch (error) {\n if (isMounted()) {\n ConsoleHelper.log('error', error);\n toast.error(t('SomethingWentWrong'), {\n theme: 'colored',\n });\n }\n } finally {\n setLoading(false);\n setOpenDialog(false);\n refetchReportAfterUpdate();\n }\n };\n\n return (\n <>\n {status === ProjectStatusEnum.ReadyForApproval && (\n <>\n \n \n \n \n {t('Delete')}\n \n \n \n \n \n onClickHandler(ProjectStatusEnum.Denied, t('markNotApproved'))\n }\n disabled={\n loading ||\n !isSustainabilityApproverUserOrAdmin(userDetails, report)\n }\n >\n {t('markNotApproved')}\n \n \n onClickHandler(\n ProjectStatusEnum.SupplementRequested,\n t('requestSupplement'),\n )\n }\n disabled={\n loading ||\n !isSustainabilityApproverUserOrAdmin(userDetails, report)\n }\n >\n {t('requestSupplement')}\n \n \n onClickHandler(ProjectStatusEnum.Approved, t('markApproved'))\n }\n size='small'\n disabled={\n loading ||\n !isSustainabilityApproverUserOrAdmin(userDetails, report)\n }\n >\n {t('markApproved')}\n \n \n \n setOpenDialog(false)}\n confirmTextButton='Skicka'\n putDataOnSubmit={(message) => putData(message)}\n cancelTextButton='Avbryt'\n />\n \n )}\n \n );\n};\n","import { useTranslation } from 'react-i18next';\nimport { ProjectStatusEnum } from 'src/shared/enums/projectStatus.enum';\nimport { Box } from '@mui/material';\nimport { ControlledCheckBox } from '../form/controlledCheckBox';\nimport { ControlledTextInputDense } from '../form/controlledTextInputDense';\n\ntype SustainabilityCheckboxesInstallationProps = {\n projectStatus: number;\n};\n\nexport const SustainabilityCheckboxesInstallation = (\n props: SustainabilityCheckboxesInstallationProps,\n) => {\n const { projectStatus } = props;\n const { t } = useTranslation();\n\n const isDisabled =\n projectStatus !== ProjectStatusEnum.Created &&\n projectStatus !== ProjectStatusEnum.SupplementRequested;\n\n return (\n <>\n \n \n \n\n \n \n \n {/* */}\n \n \n \n \n \n \n \n \n );\n};\n","import { useTranslation } from 'react-i18next';\nimport { ProjectStatusEnum } from 'src/shared/enums/projectStatus.enum';\nimport { Box } from '@mui/material';\nimport { ControlledCheckBox } from '../form/controlledCheckBox';\nimport { ControlledTextInputDense } from '../form/controlledTextInputDense';\n\ntype SustainabilityCheckboxesEngineeringProps = {\n projectStatus: number;\n};\n\nexport const SustainabilityCheckboxesEngineering = (\n props: SustainabilityCheckboxesEngineeringProps,\n) => {\n const { projectStatus } = props;\n const { t } = useTranslation();\n\n const isDisabled =\n projectStatus !== ProjectStatusEnum.Created &&\n projectStatus !== ProjectStatusEnum.SupplementRequested;\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useTranslation } from 'react-i18next';\nimport { ProjectStatusEnum } from 'src/shared/enums/projectStatus.enum';\nimport { Box } from '@mui/material';\nimport { ControlledCheckBox } from '../form/controlledCheckBox';\nimport { ControlledTextInputDense } from '../form/controlledTextInputDense';\n\ntype SustainabilityCheckboxesIndustryProps = {\n projectStatus: number;\n};\n\nexport const SustainabilityCheckboxesIndustry = (\n props: SustainabilityCheckboxesIndustryProps,\n) => {\n const { projectStatus } = props;\n const { t } = useTranslation();\n const isDisabled =\n projectStatus !== ProjectStatusEnum.Created &&\n projectStatus !== ProjectStatusEnum.SupplementRequested;\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { Typography } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport { CompanyTypeEnum } from 'src/shared/enums/companyType.enum';\nimport { SustainabilityCheckboxesInstallation } from './sustainabilityCheckboxesInstallation';\nimport { SustainabilityCheckboxesEngineering } from './sustainabilityCheckboxesEngineering';\nimport { SustainabilityCheckboxesIndustry } from './sustainabilityCheckboxesIndustry';\n\ntype SustainabilityEditCheckboxesProps = {\n status: number;\n typeOfCompany: number;\n};\n\nexport const SustainabilityEditCheckboxes = (\n props: SustainabilityEditCheckboxesProps,\n) => {\n const { status, typeOfCompany } = props;\n const { t } = useTranslation();\n return (\n <>\n \n {t('certifyCriteria')}{' '}\n \n {typeOfCompany === CompanyTypeEnum.Installation && (\n \n )}\n {typeOfCompany === CompanyTypeEnum.Teknikkonsult && (\n \n )}\n {typeOfCompany === CompanyTypeEnum.Industri && (\n \n )}\n \n );\n};\n","import { Button, Grid, Tooltip } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\n// import { useSelector } from 'react-redux';\nimport { Colors } from 'src/shared/components/styles';\nimport { ProjectStatusEnum } from 'src/shared/enums/projectStatus.enum';\n// import { RootStateType } from 'src/shared/services/redux/reducers';\n\ntype SustainabilitySubmitButtonProps = {\n status: number;\n disabled: boolean;\n showDisabledTooltip: boolean;\n onClickDelete: () => void;\n};\n\nexport const SustainabilitySubmitButton = (\n props: SustainabilitySubmitButtonProps,\n) => {\n const { status, disabled, showDisabledTooltip, onClickDelete } = props;\n const { t } = useTranslation();\n\n // const { userDetails } = useSelector(\n // (state: RootStateType) => state.authState,\n // );\n\n return (\n <>\n {(status === ProjectStatusEnum.Created ||\n status === ProjectStatusEnum.SupplementRequested) && (\n \n \n \n \n {t('Delete')}\n \n \n \n \n \n \n {t('markAsReadyForApproval')}\n \n \n \n \n )}\n \n );\n};\n","import { Grid } from '@mui/material';\nimport { useState } from 'react';\nimport { SustainabilityReportResponse } from 'src/shared/services/api/response/sustainabilityReportResponse';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { SustainabilityReportRequest } from 'src/shared/services/api/request/sustainabilityReportRequest';\nimport BusinessAreaControlledSelect from 'src/shared/components/form/businessAreaControlledSelect';\nimport { useTranslation } from 'react-i18next';\nimport EmployeeControlledSelected from 'src/shared/components/form/employeeControlledSelected';\nimport useDebounce from 'src/shared/components/atoms/useDebounce';\nimport { TagsControlledSelected } from 'src/shared/components/form/tagsControlledSelected';\nimport { BusinessAreaResponse } from 'src/shared/services/api/response/businessAreasResponse';\nimport { EmployeeResponse } from 'src/shared/services/api/response/employeeResponse';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport { ProjectStatusEnum } from 'src/shared/enums/projectStatus.enum';\nimport { TypeOfCompanyControlledSelected } from 'src/shared/components/form/typeOfCompanyControlledSelected';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { SustainabilityAPI } from 'src/shared/services/api/sustainabilityAPI';\nimport { useIsMounted } from 'src/shared/helpers/hooks/useIsMounted';\nimport { toast } from 'react-toastify';\nimport { FormErrorSummary } from 'src/shared/components/form/formErrorSummary';\nimport { CompanyTypeEnum } from 'src/shared/enums/companyType.enum';\nimport { isSustainabilityReporterUserOrAdmin } from 'src/shared/helpers/permissionHelper';\nimport { useSelector } from 'react-redux';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport ConfirmDialogModal from 'src/shared/components/atoms/confirmDialog';\nimport { SustainabilityReportEditSchema } from 'src/shared/schemas/sustainabilityReportEditSchema';\nimport { useHistory } from 'react-router-dom';\nimport { useSaveFormState } from 'src/shared/helpers/hooks/useSaveFormState';\nimport { useGetSavedFormState } from 'src/shared/helpers/hooks/useGetSavedFormState';\nimport { useClearLocalStorage } from 'src/shared/helpers/hooks/useClearFormState';\nimport { ControlledTextInputDense } from '../form/controlledTextInputDense';\nimport { ControlledDatePickerDense } from '../form/controlledDatePickerDense';\nimport { SustainabilityEditActionButtons } from './sustainabilityEditActionButtons';\nimport { SustainabilityEditCheckboxes } from './sustainabilityEditCheckboxes';\nimport { ControlledCheckBox } from '../form/controlledCheckBox';\nimport { SustainabilitySubmitButton } from './sustainabilitySubmitButton';\nimport { companyTypeItems } from './sustainabilityCreateForm';\nimport { SustainabilityReportEditInterface } from '../form/models/sustainabilityReportEditInterface';\n\ntype SustainabilityEditFormProps = {\n item: SustainabilityReportResponse;\n businessAreasData: BusinessAreaResponse[];\n employeesData: EmployeeResponse[];\n tagData: TagsResponse[];\n aosData: EmployeeResponse[];\n refetchAfterUpdate: () => void;\n};\n\nexport const SustainabilityEditForm = (props: SustainabilityEditFormProps) => {\n const {\n item,\n businessAreasData,\n employeesData,\n tagData,\n aosData,\n refetchAfterUpdate,\n } = props;\n const { t } = useTranslation();\n const history = useHistory();\n const isMounted = useIsMounted();\n const { clearLocalStorage } = useClearLocalStorage();\n const localStorageKey = `sustainabilityReport-${item.id}`;\n\n const { userDetails } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n const [submitLoading, setSubmitLoading] = useState(false);\n const [deleteLoading, setDeleteLoading] = useState(false);\n const [searchText, setSearchText] = useState('');\n const [aosSearchText, setAosSearchText] = useState('');\n\n const [showDeleteDialog, setShowDeleteDialog] = useState(false);\n\n const debouncedSearchTerm = useDebounce(searchText, 300);\n const debouncedAosSearchTerm = useDebounce(aosSearchText, 300);\n\n const disableOnEngineer =\n item.typeOfCompany === CompanyTypeEnum.Teknikkonsult &&\n !item.meetingPlan &&\n !item.customerSurvey;\n\n const disableOnEngineerWithMeetingplan =\n item.typeOfCompany === CompanyTypeEnum.Teknikkonsult &&\n !item.customerSurvey;\n\n const disableOnIndustry =\n item.typeOfCompany === CompanyTypeEnum.Industri && !item.customerSurvey;\n\n const isDisabled =\n item.projectStatus !== ProjectStatusEnum.Created &&\n item.projectStatus !== ProjectStatusEnum.SupplementRequested;\n\n // Kolla om data finns i local-storage innan inputs fylls.\n const savedData =\n useGetSavedFormState(localStorageKey);\n const formMethods = useForm({\n resolver: yupResolver(SustainabilityReportEditSchema(t)),\n defaultValues: savedData || {\n ...item,\n businessArea: businessAreasData?.find(\n (area) => area.id === item.businessAreaId,\n ),\n locationTag: tagData?.find((tag) => tag.id === item.locationTagId),\n reporterUser: item?.reporterUser, // Inte alltid användaren finns bland urvalet som hämtas\n // reporterUser: employeesData?.find(\n // (user) => user.id === item.reporterUser.id,\n // ),\n registrationDate: item.registrationDate,\n approverUser: aosData?.find((user) => user.id === item.approverUser.id),\n },\n });\n\n const {\n handleSubmit,\n watch,\n formState: { errors },\n } = formMethods;\n\n const formSubmit = async (data: SustainabilityReportEditInterface) => {\n if (\n disableOnEngineerWithMeetingplan ||\n disableOnEngineer ||\n disableOnIndustry\n ) {\n toast.error(t('Rapporten saknar bilaga'));\n } else {\n const api = new SustainabilityAPI();\n setSubmitLoading(true);\n\n ConsoleHelper.log(data);\n const dataToPut: SustainabilityReportRequest = {\n ...data,\n approverUserId: data.approverUser.id ?? 0,\n reporterUserId: data.reporterUser.id ?? 0,\n businessAreaId: data.businessArea.id ?? 0,\n locationTagId: data.locationTag.id ?? 0,\n projectStatus: ProjectStatusEnum.ReadyForApproval,\n };\n ConsoleHelper.log(dataToPut);\n\n try {\n const res = await api.Update(item.id, dataToPut);\n if (isMounted()) {\n if (res) {\n ConsoleHelper.log(res);\n }\n }\n } catch (error: any) {\n if (isMounted()) {\n toast.error(t('somethingWentWrong'));\n ConsoleHelper.log('Put ERROR: ', error);\n }\n } finally {\n if (isMounted()) {\n setSubmitLoading(false);\n refetchAfterUpdate();\n }\n }\n }\n };\n\n const deleteReport = async () => {\n ConsoleHelper.log('Radera rapport', item?.id);\n setDeleteLoading(true);\n try {\n const api = new SustainabilityAPI();\n if (item?.id) {\n await api.Delete({ id: item.id });\n toast.success(t('Deleted!'), {\n theme: 'colored',\n });\n clearLocalStorage(localStorageKey);\n history.go(-1);\n }\n } catch (error) {\n toast.error(t('SomethingWentWrong'));\n } finally {\n setDeleteLoading(false);\n setShowDeleteDialog(false);\n }\n };\n\n // Persista react hook form state on change!\n useSaveFormState(localStorageKey, watch());\n\n return (\n <>\n \n
\n {/* {JSON.stringify(errors)} */}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n setSearchText(event)}\n fullWidth\n size='small'\n fontSize={13}\n readOnly={isDisabled}\n useErrorSummery\n />\n \n \n \n \n \n \n \n \n \n \n \n setAosSearchText(event)}\n fullWidth\n size='small'\n fontSize={13}\n readOnly={isDisabled}\n useErrorSummery\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n setShowDeleteDialog(true)}\n />\n \n \n
\n setShowDeleteDialog(true)}\n />\n setShowDeleteDialog(false)}\n confirmButtonClick={() => deleteReport()}\n confirmTextButton={t('OK')}\n cancelTextButton={t('Cancel')}\n />\n \n );\n};\n","import { useEffect } from 'react';\n\nexport function useSaveFormState(key: string, value: T) {\n useEffect(() => {\n localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n}\n","export function useGetSavedFormState(key: string): T | null {\n const data = localStorage.getItem(key);\n return data ? JSON.parse(data) : null;\n}\n","import * as yup from 'yup';\n// import { SatisfactionLevel } from '../enums/customerSurvey.enum';\n\nexport const CustomerSurveySchema = (t: (n: string) => void) =>\n yup.object().shape({\n surveyMethod: yup\n .number()\n .integer()\n .min(1, `${t('fieldRequired')}`)\n .required(),\n customerName: yup\n .string()\n .min(5, `${t('customerMinLength')}`)\n .required(`${t('fieldRequired')}`),\n companyName: yup\n .string()\n .min(5, `${t('companyMinLength')}`)\n .required(`${t('fieldRequired')}`),\n satisfactionLevel: yup\n .number()\n .integer()\n .min(1, `${t('fieldRequired')}`)\n .required(),\n satisfactionComment: yup.string().nullable(),\n contributionToSustainability: yup\n .number()\n .integer()\n .min(1, `${t('fieldRequired')}`)\n .required(),\n contributionToSustainabilityComment: yup.string().nullable(),\n likelihoodToWorkAgain: yup\n .number()\n .integer()\n .min(1, `${t('fieldRequired')}`)\n .required(),\n likelihoodToWorkAgainComment: yup.string().nullable(),\n });\n","import { CustomerSurveyResponse } from './response/customerSurveyResponse';\nimport { CustomerSurveysOptions } from './options/customerSurveysOptions';\nimport { CustomerSurveyRequest } from './request/customerSurveyRequest';\nimport { BaseAPIV2 } from './baseAPIV2';\n\nexport class CustomerSurveysAPI extends BaseAPIV2<\n CustomerSurveyResponse,\n CustomerSurveysOptions,\n CustomerSurveyRequest\n> {\n constructor() {\n super('CustomerSurvey');\n }\n}\n","import {\n ContributionToSustainability,\n LikelihoodToWorkAgain,\n SatisfactionLevel,\n SurveyMethod,\n} from 'src/shared/enums/customerSurvey.enum';\nimport { RadioButton } from './radioButton';\n\nexport const surveyMethodOptions = (\n t: (n: string) => string,\n): RadioButton[] => [\n {\n value: SurveyMethod.PhysicalMeeting,\n label: t('physicalMeeting'),\n },\n {\n value: SurveyMethod.ViaTeams,\n label: t('viaTeams'),\n },\n {\n value: SurveyMethod.ViaPhone,\n label: t('viaPhone'),\n },\n];\n\nexport const satisfactionLevelOptions = (\n t: (n: string) => string,\n): RadioButton[] => [\n {\n value: SatisfactionLevel.NotSatisfied,\n label: t('notSatisfied'),\n },\n {\n value: SatisfactionLevel.FairlySatisfied,\n label: t('fairlySatisfied'),\n },\n {\n value: SatisfactionLevel.Satisfied,\n label: t('satisfied'),\n },\n {\n value: SatisfactionLevel.VerySatisfied,\n label: t('verySatisfied'),\n },\n {\n value: SatisfactionLevel.CouldntBeHappier,\n label: t('couldntBeHappier'),\n },\n];\n\nexport const contributionToSustainabilityOptions = (\n t: (n: string) => string,\n): RadioButton[] => [\n {\n value: ContributionToSustainability.Yes,\n label: t('yes'),\n },\n {\n value: ContributionToSustainability.No,\n label: t('no'),\n },\n {\n value: ContributionToSustainability.Unsure,\n label: t('unsure'),\n },\n];\n\nexport const likelihoodToWorkAgainOptions = (\n t: (n: string) => string,\n): RadioButton[] => [\n {\n value: LikelihoodToWorkAgain.Yes,\n label: t('yes'),\n },\n {\n value: LikelihoodToWorkAgain.No,\n label: t('no'),\n },\n {\n value: LikelihoodToWorkAgain.Unsure,\n label: t('unsure'),\n },\n];\n","export enum SustainabilityLogReportStatusEnum {\n LogCreated = 1,\n LogReadyForApproval,\n LogApproved,\n LogDenied,\n LogSupplementRequested,\n LogMeetingPlanCreated,\n LogMeetingPlanChanged,\n LogCustomerSurveyCreated,\n LogCustomerSurveyChanged,\n}\n","import { yupResolver } from '@hookform/resolvers/yup';\nimport { Box, Button, Grid } from '@mui/material';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { CustomerSurveySchema } from 'src/shared/schemas/customerSurvey';\nimport { CustomerSurveyRequest } from 'src/shared/services/api/request/customerSurveyRequest';\nimport { FormErrorSummary } from 'src/shared/components/form/formErrorSummary';\nimport { CustomerSurveyResponse } from 'src/shared/services/api/response/customerSurveyResponse';\nimport { useEffect, useState } from 'react';\nimport { CustomerSurveysAPI } from 'src/shared/services/api/customerSurveysAPI';\nimport { useIsMounted } from 'src/shared/helpers/hooks/useIsMounted';\nimport { toast } from 'react-toastify';\nimport { ControlledTextInputDense } from '../form/controlledTextInputDense';\nimport { ControlledRadioButtons } from '../form/controlledRadioButtons';\nimport {\n contributionToSustainabilityOptions,\n likelihoodToWorkAgainOptions,\n satisfactionLevelOptions,\n surveyMethodOptions,\n} from '../form/models/sustainnabilityCustomerSurveyOptions';\n\ntype SustainabilityCustomerSurveyFormProps = {\n refetchCallback: () => void;\n customerSurvey: CustomerSurveyResponse | undefined;\n sustainabilityId: number;\n};\n\nexport const SustainabilityCustomerSurveyForm = (\n props: SustainabilityCustomerSurveyFormProps,\n) => {\n const { refetchCallback, customerSurvey, sustainabilityId } = props;\n const { t } = useTranslation();\n const isMounted = useIsMounted();\n\n const isReadOnly = customerSurvey !== undefined && customerSurvey !== null;\n\n const [loading, setLoading] = useState(false);\n\n const formMethods = useForm({\n resolver: yupResolver(CustomerSurveySchema(t)),\n defaultValues: {\n customerName: '',\n companyName: '',\n surveyMethod: 0,\n satisfactionLevel: 0,\n satisfactionLevelComment: '',\n contributionToSustainability: 0,\n contributionToSustainabilityComment: '',\n likelihoodToWorkAgain: 0,\n likelihoodToWorkAgainComment: '',\n },\n });\n const {\n handleSubmit,\n reset,\n formState: { errors },\n } = formMethods;\n\n useEffect(() => {\n if (customerSurvey) {\n reset({\n ...(customerSurvey as unknown as CustomerSurveyRequest),\n });\n }\n }, [customerSurvey, reset]);\n\n const submitHandler = async (data: CustomerSurveyRequest) => {\n ConsoleHelper.log('submitData', data);\n const dataToCreate: CustomerSurveyRequest = {\n ...data,\n sustainabilityId,\n };\n ConsoleHelper.log('dataToCreate', dataToCreate);\n\n setLoading(true);\n const api = new CustomerSurveysAPI();\n try {\n await api.Create(dataToCreate);\n if (isMounted()) {\n toast.success(t('customerSurveySuccess'));\n setLoading(false);\n refetchCallback();\n }\n } catch (error) {\n if (isMounted()) {\n toast.error(t('somethingWentWrong'));\n }\n } finally {\n if (isMounted()) {\n setLoading(false);\n }\n }\n };\n\n return (\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {!isReadOnly && (\n \n \n \n )}\n \n \n
\n
\n );\n};\n","import { Box, Typography } from '@mui/material';\nimport dayjs from 'dayjs';\nimport { useTranslation } from 'react-i18next';\nimport { Colors } from 'src/shared/components/styles';\nimport { SustainabilityLogReportStatusEnum } from 'src/shared/enums/sustainabilityLogStatus.enum';\nimport { SustainabilityLogResponse } from 'src/shared/services/api/response/sustainabilityLogResponse';\nimport React from 'react';\nimport useStatusInfo from '../hooks/useStatusInfo';\n\nconst getLogColor = (reportStatus: number) => {\n switch (reportStatus) {\n case SustainabilityLogReportStatusEnum.LogCreated:\n return { bgColor: Colors.BADGE_BLUE, color: Colors.WHITE };\n case SustainabilityLogReportStatusEnum.LogReadyForApproval:\n return { bgColor: Colors.BADGE_YELLOW, color: '' };\n case SustainabilityLogReportStatusEnum.LogApproved:\n return { bgColor: Colors.BADGE_GREEN, color: '' };\n case SustainabilityLogReportStatusEnum.LogDenied:\n return { bgColor: Colors.BADGE_RED, color: Colors.WHITE };\n case SustainabilityLogReportStatusEnum.LogSupplementRequested:\n return { bgColor: Colors.BADGE_ORANGE, color: Colors.WHITE };\n\n default:\n return { bgColor: Colors.GRAY_LIGHT, color: '' };\n }\n};\n\ntype SustainabilityLogCardProps = {\n log: SustainabilityLogResponse;\n};\n\nexport const SustainabilityLogCard = (props: SustainabilityLogCardProps) => {\n const { log } = props;\n const { t } = useTranslation();\n\n const { color, label, icon } = useStatusInfo(log.reportStatus);\n\n const coloredIcon = React.cloneElement(icon, { sx: { color } });\n\n return (\n \n \n \n {dayjs(log.created).format('YYYY-MM-DD HH:mm')}\n \n {coloredIcon}\n \n \n \n {`${t(`common:sustainabilityLog.actionKey.${log.actionKey}`)} ${t(\n 'common:sustainabilityLog.by{name}',\n {\n name: log.employee.personName,\n },\n )}`}\n \n \n {log.message && (\n \n {t('message')}\n {log.message}\n \n )}\n \n );\n};\n","import { Box, Typography } from '@mui/material';\nimport { useTranslation } from 'react-i18next';\nimport { SustainabilityLogResponse } from 'src/shared/services/api/response/sustainabilityLogResponse';\nimport { SustainabilityLogCard } from './sustainabilityLogCard';\n\ntype SustainabilityLogProps = {\n logData: SustainabilityLogResponse[];\n};\n\nexport const SustainabilityLog = (props: SustainabilityLogProps) => {\n const { logData } = props;\n const { t } = useTranslation();\n return (\n \n {t('common:sustainabilityLog.info')}\n \n {logData.map((log) => {\n return ;\n })}\n \n \n );\n};\n","/* eslint-disable no-nested-ternary */\nimport { Box, Button, LinearProgress, Tab, Typography } from '@mui/material';\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport { useHistory, useParams } from 'react-router-dom';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { useFetchApproverUsers } from 'src/shared/helpers/hooks/useFetchApproverUsers';\nimport { useFetchTags } from 'src/shared/helpers/hooks/useFetchTags';\nimport { useFetchEmployeesByCompanyId } from 'src/shared/helpers/hooks/useFetchEmployeesByCompanyId';\nimport { useFetchBusinessAreas } from 'src/shared/helpers/hooks/useFetchBusinessAreas';\nimport { useTranslation } from 'react-i18next';\nimport { ArrowBack, ErrorOutlineOutlined } from '@mui/icons-material';\nimport { CompanyTypeEnum } from 'src/shared/enums/companyType.enum';\nimport { TabContext, TabList, TabPanel } from '@mui/lab';\nimport { useEffect, useState } from 'react';\nimport { Colors } from 'src/shared/components/styles';\nimport { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport { useClearLocalStorage } from 'src/shared/helpers/hooks/useClearFormState';\nimport { useFetchSustainabilityReportById } from '../hooks/useFetchSustainabilityReportById';\nimport { SustainabilityEditForm } from '../components/sustainabilityEditForm';\nimport { SustainabilityStatusBadge } from '../components/SustainabilityStatusBadge';\nimport { SustainabilityMeetingPlanForm } from '../components/sustainabilityMeetingPlanForm';\nimport { SustainabilityCustomerSurveyForm } from '../components/sustainabilityCustomerSurveyForm';\nimport { SustainabilityLog } from '../components/sustainabilityLog';\n\nconst TabByType = [\n {\n companyType: CompanyTypeEnum.Installation,\n tabs: [\n { value: 'sustainabilityReport', label: 'Hållbarhetsrapport' },\n {\n value: 'sustainabilityLog',\n label: 'Logg',\n },\n ],\n },\n {\n companyType: CompanyTypeEnum.Teknikkonsult,\n tabs: [\n { value: 'sustainabilityReport', label: 'Hållbarhetsrapport' },\n { value: 'meetingPlan', label: 'Mötesplan' },\n { value: 'customerSurvey', label: 'Kundundersökning' },\n { value: 'sustainabilityLog', label: 'Logg' },\n ],\n },\n {\n companyType: CompanyTypeEnum.Industri,\n tabs: [\n { value: 'sustainabilityReport', label: 'Hållbarhetsrapport' },\n { value: 'customerSurvey', label: 'Kundundersökning' },\n { value: 'sustainabilityLog', label: 'Logg' },\n ],\n },\n];\n\nexport const SustainabilityReportDetailsPage = () => {\n const { id } = useParams();\n const { t } = useTranslation();\n const history = useHistory();\n const { clearLocalStorage } = useClearLocalStorage();\n\n const [tabValue, setTabValue] = useState('sustainabilityReport');\n\n const { reportData, refetchReport, reportLoading } =\n useFetchSustainabilityReportById(id);\n const { businessAreasData } = useFetchBusinessAreas();\n const { employeesData, employeesDataLoading } =\n useFetchEmployeesByCompanyId('');\n const { tagData } = useFetchTags('Location');\n const { aosData } = useFetchApproverUsers();\n\n const handleTabChange = (event: React.SyntheticEvent, newValue: string) => {\n setTabValue(newValue);\n };\n\n const refetchHandler = () => {\n setTabValue('sustainabilityReport');\n refetchReport();\n window.scrollTo(0, 0);\n };\n\n const refetchAfterUpdateHandler = () => {\n history.push(`${RoutesEnum.SustainabilityReportListPage}/3304`); // Local id Oliver 3258 // dev 3304\n clearLocalStorage(`sustainabilityReport-${id}`);\n };\n\n const goBackHandler = () => {\n history.goBack();\n clearLocalStorage(`sustainabilityReport-${id}`);\n clearLocalStorage(`meetingPlan-${id}`);\n clearLocalStorage(`customerSurvey-${id}`);\n };\n\n const companyType = reportData?.typeOfCompany ?? CompanyTypeEnum.Installation;\n\n // Filter the TabByType array to get tabs for the specific CompanyType\n const companyTabs = TabByType.find(\n (item) => item.companyType === companyType,\n )?.tabs;\n\n // Default to an empty array if companyTabs is not found\n const tabs = companyTabs || [];\n\n return (\n \n \n }\n onClick={goBackHandler}\n >\n {t('goBack')}\n \n \n \n \n \n {`${reportData?.project}: ${reportData?.projectNumber}`}\n \n \n \n \n \n {tabs.map((tab) => (\n \n {t(tab.label)}\n\n {tab.value === 'meetingPlan' &&\n !reportData?.meetingPlan ? (\n \n ) : tab.value === 'customerSurvey' &&\n !reportData?.customerSurvey ? (\n \n ) : null}\n \n }\n value={tab.value}\n sx={{\n fontWeight: 700,\n }}\n />\n ))}\n \n \n \n {(employeesDataLoading || reportLoading) && }\n {reportData &&\n businessAreasData &&\n tagData &&\n employeesData &&\n aosData && (\n \n )}\n \n \n {reportData && (\n \n )}\n \n \n {reportData && (\n \n )}\n \n \n {reportData && }\n \n \n \n }\n />\n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { useIsMounted } from 'src/shared/helpers/hooks/useIsMounted';\nimport { SustainabilityReportResponse } from 'src/shared/services/api/response/sustainabilityReportResponse';\nimport { SustainabilityAPI } from 'src/shared/services/api/sustainabilityAPI';\n\nexport const useFetchSustainabilityReportById = (id: number | string) => {\n const isMounted = useIsMounted();\n\n const [reportData, setReportData] = useState();\n const [reportError, setReportError] = useState(null);\n const [reportLoading, setReportLoading] = useState(false);\n\n const fetchSustainabilityReport = useCallback(async () => {\n const api = new SustainabilityAPI();\n\n try {\n setReportLoading(true);\n const res = await api.Get(id);\n if (isMounted()) {\n if (res) {\n setReportData(res.result);\n ConsoleHelper.log('RES fetchSustainabilityReports ', res);\n }\n }\n } catch (error: any) {\n ConsoleHelper.log('ERROR fetchSustainabilityReports ', error);\n setReportError(error);\n } finally {\n if (isMounted()) {\n setReportLoading(false);\n }\n }\n }, [id, isMounted]);\n\n useEffect(() => {\n fetchSustainabilityReport();\n }, [fetchSustainabilityReport]);\n\n const refetchReport = () => {\n fetchSustainabilityReport();\n };\n\n return { reportData, reportError, reportLoading, refetchReport };\n};\n","import * as yup from 'yup';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\n\nexport const ContentPageSustainabilitySchema = (\n t: (n: string) => void,\n): yup.SchemaOf => {\n return yup.object().shape({\n ID: yup.number() || yup.string(),\n title: yup.string().required(`${t('titleRequired')}`),\n content: yup.string().required(`${t('contentRequired')}`), // På en nyhet är content required\n featuredImageText: yup.string(),\n companyId: yup.number() || yup.string(),\n companyId2: yup.number().nullable(true),\n parentContentPageId: yup.number() || yup.string(),\n contentType: yup.string(),\n businessAreas: yup.array().of(yup.mixed()),\n businessAreaTags: yup.array().of(yup.mixed()),\n locations: yup.array().of(yup.mixed()),\n roles: yup.array().of(yup.mixed()),\n sendNotice: yup.boolean().required(),\n sendEmail: yup.boolean().required(),\n publishDate: yup.string().required(`${t('publishDateRequired')}`),\n canHaveChildren: yup.boolean(),\n sortIndex: yup.string() || yup.number(),\n featuredImageDocumentId: yup.string(),\n documentListId: yup.number(),\n imageText: yup.string(),\n hideInMenu: yup.boolean(),\n tags: yup.array().of(yup.number()),\n documentFileList: yup.array().of(yup.string()),\n });\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { useParams, useHistory } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { toast } from 'react-toastify';\nimport dayjs from 'dayjs';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { Box, LinearProgress } from '@mui/material';\n// Components\nimport { PageTemplate } from 'src/shared/templates/pageTemplate';\nimport ControlledTextInput from 'src/shared/components/form/controlledTextInput';\nimport ControlledDatePicker from 'src/shared/components/form/controlledDatePicker';\nimport ControlledPushNoticeCheckbox from 'src/shared/components/form/controlledPushNoticeCheckbox';\nimport ControlledEditorInput from 'src/shared/components/form/controlledEditorInput';\nimport { BoxSaveCancelButtons } from 'src/shared/components/organisms/boxSaveCancelButtons';\nimport SegmentLocationRoleTags from 'src/shared/components/form/segmentLocationRoleTags';\nimport ImageDropZone, {\n FileExtended,\n} from 'src/shared/components/form/imageDropZone';\nimport LabelWithTooltip from 'src/shared/components/organisms/labelWithToolTip';\n// Services\nimport { ContentPageResponse } from 'src/shared/services/api/response/contentPageResponse';\nimport { ContentPageAPI } from 'src/shared/services/api/contentPageAPI';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { IParams } from 'src/shared/interfaces/params';\nimport { ContentTypeEnum } from 'src/shared/enums/contentType.enum';\nimport { DocumentAPI } from 'src/shared/services/api/documentAPI';\nimport { IContentPage } from 'src/shared/interfaces/contentPageInterface';\nimport {\n getBusinessAreas,\n locationsTags,\n rolesTags,\n} from 'src/shared/helpers/filteredTags';\nimport { TagsResponse } from 'src/shared/services/api/response/tagsResponse';\nimport ControlledSwitchNorway from 'src/shared/components/form/controlledSwitchNorway';\nimport { ContentPageSustainabilitySchema } from 'src/shared/schemas/contentPageSustainabilitySchema';\n\nconst SustainabilityEditReportListPage = () => {\n const { t } = useTranslation();\n const history = useHistory();\n const { id } = useParams();\n\n // Local states\n const [featuredImageFile, setFeaturedImageFile] = useState(\n undefined,\n ); // Befintlig beaturedImage som file\n const [selectedImage, setSelectedImage] = useState(); // FeaturedImage som laddas upp av user\n const [pageToEdit, setPageToEdit] = useState<\n ContentPageResponse | undefined\n >();\n const [loading, setLoading] = useState(false);\n\n const formMethods = useForm({\n resolver: yupResolver(ContentPageSustainabilitySchema(t)),\n defaultValues: {\n title: '',\n content: '',\n featuredImageText: '',\n contentType: ContentTypeEnum.SustainabilityReportListPage,\n businessAreaTags: [],\n locations: [],\n roles: [],\n canHaveChildren: false,\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs().format('YYYY-MM-DDTHH:mm:ss'),\n companyId2: null,\n },\n });\n\n const {\n handleSubmit,\n reset,\n control,\n formState: { errors },\n } = formMethods;\n\n // Ändring av featured image\n const onFeaturedImageChange = useCallback(\n (file: FileExtended | undefined) => {\n if (!file?.id) setFeaturedImageFile(undefined); // Om filen som lagts till inte har id är det en ny fil som ska sparas och initial fil tas bort\n if (file) {\n ConsoleHelper.log('file for featuredImage', file);\n setSelectedImage(file);\n } else setSelectedImage(undefined);\n },\n [],\n );\n\n const getFeaturedImageFile = async (imageID: number | string) => {\n const documentApi = new DocumentAPI();\n try {\n const docRes = await documentApi.Get(imageID);\n if (docRes) {\n setFeaturedImageFile(docRes.result as File);\n }\n } catch (err) {\n ConsoleHelper.log('Error get doc', err);\n }\n };\n\n // Hämta vald nyhet för att sätta form states\n const getSustainabilityItem = useCallback(async () => {\n setLoading(true);\n try {\n const contentPageApi = new ContentPageAPI();\n const res = await contentPageApi.Get(Number(id));\n if (res) {\n setPageToEdit(res?.result);\n reset({\n title: res?.result?.title,\n content: res?.result?.content ?? '',\n featuredImageText: res?.result?.featuredImageText ?? '',\n featuredImageDocumentId: res?.result?.featuredImageDocumentId,\n contentType: res?.result?.contentType,\n canHaveChildren: false,\n companyId: res?.result?.companyId,\n parentContentPageId: res?.result?.parentContentPageId,\n businessAreaTags: getBusinessAreas(res.result?.businessAreaTags),\n locations: locationsTags(res?.result?.tags),\n roles: rolesTags(res?.result?.tags),\n sendNotice: false,\n sendEmail: false,\n publishDate: dayjs(res?.result?.publishDate).format('YYYY-MM-DD'),\n companyId2: res?.result?.companyId2 ?? null,\n });\n if (\n res?.result?.featuredImageDocumentId &&\n res?.result?.featuredImageDocumentId !== 0\n ) {\n getFeaturedImageFile(res?.result?.featuredImageDocumentId);\n }\n setLoading(false);\n }\n } catch (error) {\n ConsoleHelper.log('kunde inte hämta nyhet', error);\n setLoading(false);\n }\n }, [id, reset]);\n\n useEffect(() => {\n getSustainabilityItem();\n }, [id, getSustainabilityItem]);\n\n // Put mot API\n const formSubmit: SubmitHandler = async (\n data: IContentPage,\n ) => {\n setLoading(true);\n const contentPageApi = new ContentPageAPI();\n const documentApi = new DocumentAPI();\n const newData = data;\n // Featured image\n if (!selectedImage) {\n ConsoleHelper.log('Ingen featured image');\n newData.featuredImageDocumentId = null;\n } else if (selectedImage && !featuredImageFile) {\n ConsoleHelper.log('Ny featured image att spara');\n try {\n const formData = new FormData();\n formData.append('iD', '1');\n formData.append('description', data.featuredImageText ?? '');\n formData.append('fileData', selectedImage);\n const resDoc = await documentApi.CreateFormData(formData);\n if (resDoc !== undefined || resDoc !== null) {\n newData.featuredImageDocumentId = resDoc?.id;\n }\n } catch (err) {\n ConsoleHelper.log('Error save featured image', err);\n }\n } else {\n ConsoleHelper.log('Featured image oförändrad');\n // Om bildtexten ändras löser API:et det med featuredImageText som skickas med data på Update.\n }\n\n // Formatera data att skicka med\n const tagIDs: number[] = [];\n const businessAreaTagIDs: string[] = [];\n if (newData?.locations) {\n newData.locations.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id);\n }\n });\n }\n if (data.businessAreaTags) {\n data.businessAreaTags.forEach((tag: TagsResponse) => {\n if (tag.id) {\n businessAreaTagIDs.push(tag.id.toString());\n }\n });\n }\n if (newData?.roles) {\n newData.roles.forEach((element) => {\n if (element.id) {\n tagIDs.push(element.id);\n }\n });\n }\n newData.tags = tagIDs;\n newData.businessAreaTags = businessAreaTagIDs;\n newData.publishDate = dayjs(data.publishDate).format('YYYY-MM-DD');\n newData.companyId2 = data.companyId2; // Publicera till norska bolag från Instalco SE\n // Update på editerad nyhet\n try {\n ConsoleHelper.log('NewData SustainabilityReportListPage', newData);\n if (id !== undefined) {\n await contentPageApi.Update(id, newData);\n if (!featuredImageFile && pageToEdit?.featuredImageDocumentId !== 0) {\n // Radera gamla featured image efter att sidan är sparad om den är borttagen eller ersatt i lokalt state\n ConsoleHelper.log(\n 'Radera gammal bild mot API',\n pageToEdit?.featuredImageDocumentId,\n );\n await documentApi.deleteItemWithQueryID(\n Number(pageToEdit?.featuredImageDocumentId),\n );\n }\n getSustainabilityItem();\n toast.success(t('Done!'), {\n theme: 'colored',\n });\n reset();\n history.push(`/SustainabilityReportListPage/${id}`);\n }\n } catch (e) {\n ConsoleHelper.log('error saving edited SustainabilityReportListPage', e);\n toast.error(t('SomethingWentWrong'));\n }\n setLoading(false);\n };\n\n return (\n \n {loading && }\n \n
\n {/* {JSON.stringify(errors)} */}\n \n \n \n \n \n \n \n \n \n \n reset()}\n linkTo={`/SustainabilityReportListPage/${id}`}\n saveDisabled={loading}\n showDeleteButton={false}\n />\n \n \n
\n \n }\n />\n );\n};\n\nexport default SustainabilityEditReportListPage;\n","import { Route, Switch } from 'react-router-dom';\nimport { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport { PageNotfound } from 'src/modules/notfound/pages/notfoundPage';\n// import Breadcrumb from 'src/shared/components/atoms/breadcrumb';\nimport HomePage from 'src/modules/home/pages/homePage';\nimport MenuPage from 'src/modules/menu/pages/menuPage';\nimport NewsListPage from 'src/modules/news/pages/newsListPage';\nimport CreateNewsPage from 'src/modules/news/pages/createNewsPage';\nimport NewsPage from 'src/modules/news/pages/newsPage';\nimport DocumentListPage from 'src/modules/document/pages/documentListPage';\nimport GalleryListPage from 'src/modules/gallery/pages/galleryListPage';\nimport GalleryPage from 'src/modules/gallery/pages/galleryPage';\nimport GroupListPage from 'src/modules/groups/pages/groupListPage';\nimport GroupPage from 'src/modules/groups/pages/groupPage';\nimport CreateGroupPage from 'src/modules/groups/pages/createGroupPage';\nimport EditGroupPage from 'src/modules/groups/pages/editGroupPage';\nimport ProposalListPage from 'src/modules/proposals/pages/proposalListPage';\nimport ProposalPage from 'src/modules/proposals/pages/proposalPage';\nimport ContactListPage from 'src/modules/contact/pages/contactListPage';\nimport ContactPage from 'src/modules/contact/pages/contactPage';\nimport CompanyListPage from 'src/modules/company/pages/companyListPage';\nimport CompanyPage from 'src/modules/company/pages/companyPage';\nimport EmployeeListPage from 'src/modules/employee/pages/employeeListPage';\nimport EditNewsPage from 'src/modules/news/pages/editNewsPage';\nimport CreateNewsListPage from 'src/modules/news/pages/createNewsListPage';\nimport CreateMenuPage from 'src/modules/menu/pages/createMenuPage';\nimport EditNewsListPage from 'src/modules/news/pages/editNewsListPage';\nimport EditMenuPage from 'src/modules/menu/pages/editMenuPage';\nimport CreateGalleryPage from 'src/modules/gallery/pages/createGalleryPage';\nimport EditDocumentListPage from 'src/modules/document/pages/editDocumentListPage';\nimport CreateDocumentListPage from 'src/modules/document/pages/createDocumentListPage';\nimport EditGalleryPage from 'src/modules/gallery/pages/editGalleryPage';\nimport DirectMessagePage from 'src/modules/directMessages/pages/directMessagePage';\nimport SustainabilityReportListPage from 'src/modules/SustainabilityReport/pages/sustainabilityReportListPage';\nimport { SustainabilityReportDetailsPage } from 'src/modules/SustainabilityReport/pages/sustainabilityReportDetailsPage';\nimport SustainabilityEditReportListPage from 'src/modules/SustainabilityReport/pages/sustainabilityEditReportListPage';\n\nexport const PageRoutes = () => {\n return (\n <>\n {/* */}\n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n\n \n \n\n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n","import { useSelector } from 'react-redux';\nimport { Redirect } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { useForm, SubmitHandler } from 'react-hook-form';\nimport { Grid, Paper, Typography, Button } from '@mui/material';\nimport { IUser } from 'src/shared/interfaces/userInterface';\nimport { RootStateType } from 'src/shared/services/redux/reducers/index';\nimport { Colors } from 'src/shared/components/styles';\nimport userManager from '../../../shared/services/identity/userManager';\n\nconst LoginPage = () => {\n const { t } = useTranslation();\n const { user } = useSelector((state: RootStateType) => state.oidc);\n\n const { handleSubmit } = useForm();\n\n const formSubmit: SubmitHandler = () => {\n userManager.signinRedirect();\n };\n if (user && !user.expired) {\n return ;\n }\n return (\n \n \n \n Välkommen till Instalcogruppens intranät!
Klicka på "Logga\n in" för att komma vidare till säker inloggning.\n
\n
\n \n {t('SignIn')}\n \n \n \n \n © Instalco AB\n \n \n );\n};\n\nexport default LoginPage;\n","import { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport { PageNotfound } from 'src/modules/notfound/pages/notfoundPage';\nimport { Switch, Route } from 'react-router-dom';\nimport LoginPage from 'src/modules/auth/pages/loginPage';\n\nconst UnauthorizeRoutes = () => {\n return (\n \n \n \n \n );\n};\n\nexport default UnauthorizeRoutes;\n","import React, { useEffect, useCallback } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { ServiceWorkerWrapper } from 'src/serviceWorkerWrapper';\nimport { useTranslation } from 'react-i18next';\nimport { AppTemplate } from 'src/shared/templates/appTemplate';\nimport AuthHeader from 'src/shared/components/organisms/authHeader';\nimport PageHeader from 'src/shared/components/organisms/pageHeader';\nimport { PageRoutes } from 'src/shared/routes/pageRoutes';\nimport UnauthorizeRoutes from 'src/shared/routes/unauthorizeRoutes';\nimport { RootStateType } from 'src/shared/services/redux/reducers';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { getEmployeeMe } from 'src/shared/services/redux/actions/authAction';\n\nconst MainRoutes = () => {\n const dispatch = useDispatch();\n const { ready, i18n } = useTranslation();\n\n // Global states\n const { user } = useSelector((state: RootStateType) => state.oidc);\n const { userCompany } = useSelector(\n (state: RootStateType) => state.authState,\n );\n\n const [showNotificationFeed, setShowNotificationFeed] = React.useState(false);\n const [showProfileFeed, setShowProfileFeed] = React.useState(false);\n const [showGroupList, setShowGroupList] = React.useState(false);\n const [showMenu, setShowMenu] = React.useState(false);\n\n // Hämta userDetails från employee/me\n const getUserDetails = useCallback(async () => {\n if (user) {\n dispatch(getEmployeeMe());\n }\n }, [user]);\n\n // Uppdatera språk när userCompany uppdateras\n const changeLanguage = useCallback(() => {\n const lang = userCompany?.country_CountryCode\n ? userCompany?.country_CountryCode.toLowerCase()\n : 'se';\n i18n.changeLanguage(lang);\n ConsoleHelper.log('LANGAGE TO USE', lang);\n }, [i18n, userCompany?.country_CountryCode]);\n\n useEffect(() => {\n getUserDetails();\n }, [getUserDetails]);\n\n useEffect(() => {\n changeLanguage();\n }, [changeLanguage]);\n\n return (\n <>\n \n {ready && (\n <>\n {user && user.access_token ? (\n <>\n \n }\n mainContent={}\n setShowNotificationFeed={setShowNotificationFeed}\n showNotificationFeed={showNotificationFeed}\n setShowProfileFeed={setShowProfileFeed}\n showProfileFeed={showProfileFeed}\n setShowGroupList={setShowGroupList}\n showGroupList={showGroupList}\n showMenu={showMenu}\n />\n \n ) : (\n <>\n \n \n \n )}\n \n )}\n \n );\n};\n\nexport default MainRoutes;\n","import { processSilentRenew } from 'redux-oidc';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\n\nconst SilentRenewPage = () => {\n ConsoleHelper.log('silent renew happened');\n processSilentRenew();\n return
Loading...
;\n};\n\nexport default SilentRenewPage;\n","import { useHistory } from 'react-router-dom';\nimport { CallbackComponent } from 'redux-oidc';\nimport userManager from 'src/shared/services/identity/userManager';\nimport { RoutesEnum } from 'src/shared/enums/routes.enum';\nimport ConsoleHelper from 'src/shared/helpers/consoleHelper';\nimport { Box, Typography } from '@mui/material';\n\nconst CallbackPage = () => {\n ConsoleHelper.log('stand in callback page');\n const history = useHistory();\n return (\n {\n const initialRoute = localStorage.getItem('initialRoute');\n if (initialRoute) {\n history.push(initialRoute);\n localStorage.removeItem('initialRoute');\n } else history.push(RoutesEnum.Start);\n }}\n errorCallback={(error) => {\n history.push(RoutesEnum.Start);\n ConsoleHelper.error(error);\n }}\n >\n \n \n Redirecting...\n \n \n \n );\n};\n\nexport default CallbackPage;\n","import { useState, useCallback, useEffect } from 'react';\nimport { BrowserRouter as Router, Route, Switch } from 'react-router-dom';\nimport MainRoutes from 'src/shared/routes/mainRoutes';\nimport SilentRenewPage from 'src/modules/auth/pages/silentRenewPage';\nimport CallbackPage from 'src/modules/auth/pages/callbackPage ';\nimport { Box, Typography } from '@mui/material';\nimport { RoutesEnum } from './shared/enums/routes.enum';\nimport userManager from './shared/services/identity/userManager';\nimport ConsoleHelper from './shared/helpers/consoleHelper';\n\nconst App = () => {\n const [loading, setLoading] = useState(false);\n\n const trySilentSigning = useCallback(async () => {\n setLoading(true);\n try {\n const silentResult = await userManager.signinSilent();\n ConsoleHelper.log('Silent login success', silentResult);\n setLoading(false);\n } catch (error) {\n ConsoleHelper.warn('Silent login failed');\n setLoading(false);\n // Såhär kan man göra om man automatiskt skicka användaren till identity om den inte tidigare är inloggad\n // userManager.signinRedirect();\n }\n }, []);\n\n useEffect(() => {\n trySilentSigning();\n }, [trySilentSigning]);\n\n return (\n \n \n {loading && (\n \n \n Loading...\n \n \n )}\n \n \n \n \n \n );\n};\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import { alpha, Paper, Typography } from '@mui/material';\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Colors } from 'src/shared/components/styles';\n\nexport default function Offline({ children }: { children: JSX.Element }) {\n const { t } = useTranslation();\n const [isOnline, setOnlineStatus] = useState(true);\n\n useEffect(() => {\n const setStatus = (event: Event) => {\n if (event.type === 'online') {\n // TODO: pinga google eller våran egen server för att se om vi faktiskt har internet.\n\n // TODO: Fungerar detta i alla webbläsare?\n setOnlineStatus(true);\n } else if (event.type === 'offline') {\n setOnlineStatus(false);\n }\n };\n window.addEventListener('online', setStatus);\n window.addEventListener('offline', setStatus);\n\n return () => {\n window.removeEventListener('online', setStatus);\n window.removeEventListener('offline', setStatus);\n };\n }, []);\n\n return (\n <>\n {!isOnline && (\n \n \n {t('YouAreOffline')}\n \n \n )}\n {children}\n \n );\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport 'src/index.css';\nimport 'src/i18n';\nimport App from 'src/App';\n// import * as serviceWorkerRegistration from 'src/serviceWorkerRegistration';\nimport reportWebVitals from 'src/reportWebVitals';\nimport '@fontsource/open-sans/300.css';\nimport '@fontsource/open-sans/400.css';\nimport '@fontsource/open-sans/500.css';\nimport '@fontsource/open-sans/700.css';\nimport { Provider } from 'react-redux';\nimport { PersistGate } from 'redux-persist/integration/react';\nimport { store, persistor } from 'src/shared/services/redux/store';\nimport { OidcProvider } from 'redux-oidc';\nimport userManager from 'src/shared/services/identity/userManager';\nimport Offline from './modules/offline';\n\nReactDOM.render(\n \n \n \n \n \n \n \n \n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://cra.link/PWA\n// serviceWorkerRegistration.register();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}