{"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/InstalcoNet.jpeg","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/enums/proposals.enum.ts","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/dataGridPremium.tsx","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/useLocalStorage.ts","shared/enums/localStorageKeys.enum.ts","shared/helpers/hooks/useFetchBusinessAreas.tsx","shared/enums/companyType.enum.ts","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/tagType.enum.ts","shared/helpers/hooks/useFetchApproverUsers.tsx","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","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","transform","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","ProposalStatusEnum","ProposalStatusColorEnum","ProposalEffortEnum","ProposalDeployEnum","GroupSchema","createdByUserId","permissionGroupTags","groupColorValues","businessAreasItags","Itags","EditGroupPage","ImprovementAPI","MarkActionAsDone","NewImprovementSchema","ProposalForm","CustomToolbar","GridToolbarContainer","GridToolbarColumnsButton","nonce","onResize","onResizeCapture","GridToolbarFilterButton","GridToolbarDensitySelector","GridToolbarExport","csvOptions","allColumns","fileName","excelOptions","includeHeaders","includeHiddenColumns","CustomLoadingOverlay","DataGridPremium","dataGridOptions","totalRows","checkboxSelection","onPageChange","onPageSizeChange","onSortModelChange","disableSelectionOnClick","onRowClick","apiRef","useGridApiRef","borderTop","density","rowCount","rowsPerPageOptions","paginationMode","newPageSize","filterMode","sortingMode","disableColumnFilter","pagination","localeText","columnsPanelTextFieldPlaceholder","columnsPanelTextFieldLabel","columnsPanelShowAllButton","columnsPanelHideAllButton","toolbarColumns","toolbarDensity","toolbarDensityLabel","toolbarDensityCompact","toolbarDensityStandard","toolbarDensityComfortable","toolbarExport","toolbarExportPrint","toolbarExportExcel","toolbarExportCSV","toolbarFilters","columnMenuSortAsc","columnMenuSortDesc","columnMenuHideColumn","columnMenuShowColumns","columnMenuLabel","columnMenuFilter","columnMenuUnsort","noRowsLabel","LoadingOverlay","outline","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","CustomActionCell","hasPermission","PersonRounded","contactActionButtons","disableColumnMenu","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","itemId","itemName","PeopleAltRounded","companyActionButtons","segment","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","inputValue","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","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","getStorageValue","defaultValue","saved","getItem","LocalStorageKeysEnum","useLocalStorage","localStorageKey","currentValue","CompanyTypeEnum","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","valueGetter","area","businessAreaId","locationName","locationTagId","changed","projectStatus","registrationDate","projectEndDate","approvalDate","typeOfCompany","Teknikkonsult","Installation","Industri","invoicedAmount","projectDescription","climateBenefitDescription","sustainabilitySolutionTechDescription","statusData","SustainabilityFilter","locationTag","setLocations","businessArea","setBusinessArea","projectStatusFilter","setProjectStatusFilter","year","setYear","yearArray","startYear","currentYear","getFullYear","years","y","generateYears","columnGap","disableElevation","SustainabilityReportProject","refetchList","setTotalItems","SustainabilityReportProjectBusinessArea","SustainabilityReportProjectTagsResponse","setLocationTag","SustainabilityReportProjectProjectStatusFilter","businessAreaID","All","fetchSustainabilityReports","SustainabilityReportDetailsPage","SustainabilityCertifiedProject","SustainabilityReportProjectYear","filterDate","SustainabilityEditFab","isSuberAdmin","SustainabilityReportListPage","ModalSustainabilityTemplate","reason","TagTypeEnum","useFetchEmployeesByCompanyId","employeesData","setEmployeesDataData","employeesDataError","setEmployeesDataError","employeesDataLoading","setEmployeesDataLoading","fetchEmployees","useFetchApproverUsers","aosData","setAosData","aosDataError","setAosDataError","aosDataLoading","setAosDataLoading","fetchApproverUsers","FormErrorSummary","translationNamespace","Alert","severity","role","AlertTitle","fieldName","as","SustainabilityReportCreateSchema","project","projectNumber","when","is","parent","customer","checkboxApplyForCertificate","oneOf","checkboxCriteriaConsent","checkboxSafeCoworker","checkboxClimateBenefit","checkboxDeliveryPlan","checkboxWasteSorting","checkboxCodeOfConduct","checkboxServicePlan","checkboxMeetingPlan","checkboxSustainabilitySolutionTech","checkboxSustainabilityEvaluationTech","checkboxProjectSize100TSEK","checkboxProjectSize1MSEK","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","ControlledAutocompleteDropdown","nameProp","labelColor","fullwidth","translateOptionLabel","selectedValue","setSelectedValue","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","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","updateDisabled","showDisabledTooltip","onClickUpdate","SustainabilityEditForm","refetchAfterUpdate","submitLoading","setSubmitLoading","deleteLoading","setDeleteLoading","aosSearchText","setAosSearchText","disableOnEngineer","customerSurvey","disableOnEngineerWithMeetingplan","disableOnIndustry","savedData","useGetSavedFormState","deleteReport","updateReport","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","companyTabs","ArrowBack","goBack","ErrorOutlineOutlined","ContentPageSustainabilitySchema","SustainabilityEditReportListPage","getSustainabilityItem","PageRoutes","path","exact","NewsPageListCreate","NewsPageList","CreateDocumentListPage","LoginPage","expired","UnauthorizeRoutes","Login","MainRoutes","getUserDetails","SilentRenewPage","processSilentRenew","CallbackPage","successCallback","initialRoute","errorCallback","LicenseInfo","setLicenseKey","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.dc4787a1.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 __webpack_public_path__ + \"static/media/InstalcoNet.89523b6f.jpeg\";","import { AppBar, Toolbar } from '@mui/material';\nimport { Colors } from 'src/shared/components/styles';\nimport InstalcoLogSmall from 'src/assets/images/InstalcoNet.jpeg';\n// import 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\nimport InstalcoLogSmall from 'src/assets/images/InstalcoNet.jpeg';\n// import 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, 1539, 179]; // id 739 finns inte längre\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","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 * 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 DataGridPremium as DataGrid,\n GridColDef,\n GridSortModel,\n GridCallbackDetails,\n GridToolbarContainer,\n GridRowParams,\n GridToolbarExport,\n useGridApiRef,\n GridToolbarColumnsButton,\n GridToolbarFilterButton,\n GridToolbarDensitySelector,\n} from '@mui/x-data-grid-premium';\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};\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\n/* function CustomMobileToolbar() {\n return (\n \n // \n // \n \n );\n} */\n\nfunction CustomToolbar() {\n return (\n \n {/* Standardfunktioner */}\n \n \n \n {/* Exportfunktioner */}\n \n \n );\n}\n\nfunction CustomLoadingOverlay() {\n return (\n \n \n \n );\n}\n\nexport const DataGridPremium = (props: DataGridProps) => {\n const {\n columns,\n rows,\n page,\n pageSize,\n dataGridOptions: { loading, totalRows },\n checkboxSelection,\n onPageChange,\n onPageSizeChange,\n onSortModelChange,\n disableSelectionOnClick,\n onRowClick,\n } = props;\n\n const apiRef = useGridApiRef();\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 pagination\n disableSelectionOnClick={disableSelectionOnClick}\n onRowClick={onRowClick}\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 toolbarExportExcel: t('datagrid.toolbarExportExcel'),\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: CustomToolbar,\n }}\n // componentsProps={{\n // loadingOverlay: CustomLoadingOverlay,\n // toolbar: CustomToolbar, // isMobile ? CustomMobileToolbar : GridToolbar,\n // }}\n sx={{\n // '& .MuiDataGrid-row:hover': {\n // cursor: 'pointer',\n // },\n '& .MuiDataGrid-cell:focus': {\n outline: 'none',\n },\n '& .MuiDataGrid-row.Mui-selected': {\n backgroundColor: 'inherit',\n },\n }}\n />\n \n );\n};\n\nDataGridPremium.defaultProps = {\n disableSelectionOnClick: false,\n onRowClick: undefined,\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-premium';\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 // 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';\nimport {\n DataGridPremium,\n DataGridOptions,\n} from 'src/shared/components/organisms/dataGridPremium';\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 { Box, IconButton, useMediaQuery } from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\nimport { Add, PersonRounded, Close } from '@mui/icons-material';\nimport {\n GridColumns,\n GridRenderCellParams,\n GridSortModel,\n} from '@mui/x-data-grid-premium';\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';\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';\nimport {\n DataGridPremium,\n DataGridOptions,\n} from 'src/shared/components/organisms/dataGridPremium';\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 CustomActionCell = useCallback((params: GridRenderCellParams) => {\n const hasPermission = GetAdminPermission(0, 'contacts');\n return (\n \n {hasPermission && (\n <>\n {\n setContactItem(params.row as ContactResponse);\n setIsContactModalOpen(true);\n }}\n >\n \n \n {\n setContactItem(params.row as ContactResponse);\n setShowDeleteDialog(true);\n }}\n >\n \n \n \n )}\n {!hasPermission && (\n {\n setContactItem(params.row as ContactResponse);\n setIsContactModalOpen(true);\n }}\n >\n \n \n )}\n \n );\n }, []);\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 renderCell: (params: GridRenderCellParams) => CustomActionCell(params),\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, IconButton, Box } 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 GridColumns,\n GridRenderCellParams,\n GridSortModel,\n} from '@mui/x-data-grid-premium';\n// Components\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';\nimport {\n DataGridPremium,\n DataGridOptions,\n} from 'src/shared/components/organisms/dataGridPremium';\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 function CustomActionCell(params: GridRenderCellParams) {\n return (\n \n \n \n \n onEditCompanyClick(params.row as CompanyResponse)}\n >\n \n \n {\n setitemdToBeDeleted(params.row as CompanyResponse);\n setOpenDialog(true);\n }}\n >\n \n \n \n );\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.2,\n type: 'actions',\n align: 'right',\n disableColumnMenu: true,\n renderCell: (params: GridRenderCellParams) => CustomActionCell(params),\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 inputValue?: 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 inputValue,\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 filterOptions={(options) => options}\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 inputValue={inputValue}\n renderInput={(params) => {\n return (\n \n );\n }}\n />\n \n );\n};\n\nAutoCompleteForFilter.defaultProps = {\n multiple: undefined,\n rows: undefined,\n inputValue: 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 GridColumns,\n GridRenderCellParams,\n GridSortModel,\n} from '@mui/x-data-grid-premium';\nimport {\n Add,\n CloseRounded,\n EditRounded,\n GroupsRounded,\n PersonRounded,\n} from '@mui/icons-material';\nimport {\n Box,\n Button,\n FormControlLabel,\n IconButton,\n LinearProgress,\n Switch,\n Typography,\n useMediaQuery,\n} from '@mui/material';\nimport { useTheme } from '@mui/material/styles';\n// Components\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';\nimport {\n DataGridPremium,\n DataGridOptions,\n} from 'src/shared/components/organisms/dataGridPremium';\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 CustomActionCell = useCallback(\n (params: GridRenderCellParams) => {\n const currentPermissions = userDetails?.permissionGroup.permissions;\n return (\n \n {\n setEmployeeItem(params.row);\n setIsEmployeeModalOpen(true);\n }}\n // label={t('Show')}\n >\n \n \n {currentPermissions &&\n currentPermissions.some(\n (item) => item.name === 'EMPLOYEE_UPDATE',\n ) && (\n {\n setEmployeeItem(params.row as EmployeeResponse);\n setIsEditEmployeeModalOpen(true);\n }}\n // label={t('Edit')}\n >\n \n \n )}\n\n {currentPermissions &&\n currentPermissions.some(\n (item) => item.name === 'EMPLOYEE_DELETE',\n ) && (\n {\n setOpenDialog(true);\n setUserToBeDeleted(params.row);\n }}\n // label={t('Edit')}\n >\n \n \n )}\n \n );\n },\n [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.2,\n type: 'actions',\n align: 'right',\n disableColumnMenu: true,\n renderCell: (params: GridRenderCellParams) => CustomActionCell(params),\n },\n ],\n [CustomActionCell, 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 onRowClick={(params) => {\n setEmployeeItem(params.row);\n setIsEmployeeModalOpen(true);\n }}\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 React, { useState } from 'react';\nimport ConsoleHelper from '../consoleHelper';\n\nfunction getStorageValue(key: string, defaultValue: T): T {\n if (typeof window !== 'undefined' && window.localStorage) {\n const saved = localStorage.getItem(key);\n if (saved !== null && saved !== 'undefined') {\n try {\n return JSON.parse(saved) as T;\n } catch (error) {\n ConsoleHelper.log(`Error parsing localStorage key \"${key}\":`, error);\n }\n } else if (saved === 'undefined') {\n ConsoleHelper.log(\n `localStorage key \"${key}\" contains an invalid value: \"undefined\". Resetting to default.`,\n );\n }\n }\n return defaultValue;\n}\n\nexport const useLocalStorage = (\n localStorageKey: string,\n defaultValue: T,\n): [T, React.Dispatch>] => {\n const [value, setValue] = useState(() => {\n return getStorageValue(localStorageKey, defaultValue);\n });\n\n React.useEffect(() => {\n const currentValue = getStorageValue(localStorageKey, defaultValue);\n if (value !== currentValue) {\n try {\n localStorage.setItem(localStorageKey, JSON.stringify(value));\n } catch (error) {\n ConsoleHelper.log(\n `Failed to set localStorage key \"${localStorageKey}\" with value:`,\n error,\n );\n }\n }\n }, [defaultValue, localStorageKey, value]);\n\n return [value, setValue];\n};\n","export enum LocalStorageKeysEnum {\n SustainabilityReportProjectBusinessArea = 'SustainabilityReportProjectBusinessArea',\n SustainabilityReportProjectTagsResponse = 'SustainabilityReportProjectTagsResponse',\n SustainabilityReportProjectProjectStatusFilter = 'SustainabilityReportProjectProjectStatusFilter',\n SustainabilityReportProjectYear = 'SustainabilityReportProjectYear',\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","export enum CompanyTypeEnum {\n Installation,\n Teknikkonsult,\n Industri,\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 GridColDef,\n GridRowParams,\n GridSortModel,\n} from '@mui/x-data-grid-premium';\nimport { useEffect, useState } from 'react';\nimport dayjs from 'dayjs';\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 {\n DataGridPremium,\n DataGridOptions,\n} from 'src/shared/components/organisms/dataGridPremium';\nimport { ProjectStatusEnum } from 'src/shared/enums/projectStatus.enum';\nimport { CompanyTypeEnum } from 'src/shared/enums/companyType.enum';\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: GridColDef[] = [\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 valueGetter: (params) => {\n const businessArea = businessAreasData?.find(\n (area) => area.id === params.row.businessAreaId,\n )?.name;\n return businessArea;\n },\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 valueGetter: (params) => {\n const location = tagData?.find(\n (locationName) => locationName.id === params.row.locationTagId,\n )?.name;\n return location;\n },\n renderCell: (params) => {\n const location = tagData?.find(\n (locationName) => locationName.id === params.row.locationTagId,\n )?.name;\n return location;\n },\n },\n {\n field: 'changed',\n headerName: t('updated'),\n hide: true,\n flex: 1,\n valueGetter: (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 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 valueGetter: (params) => {\n switch (params.row.projectStatus) {\n case ProjectStatusEnum.Approved:\n return t('approved');\n case ProjectStatusEnum.Created:\n return t('reported');\n case ProjectStatusEnum.ReadyForApproval:\n return t('readyForApproval');\n case ProjectStatusEnum.SupplementRequested:\n return t('supplementRequested');\n case ProjectStatusEnum.Denied:\n return t('denied');\n default:\n return '';\n }\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: 'approverUser',\n headerName: t('approverUser'),\n valueGetter: (params) => params.row.approverUser.personName,\n hide: true,\n },\n {\n field: 'created',\n headerName: t('created'),\n hide: isMobileSm,\n flex: 1,\n valueGetter: (params) => dayjs(params.row.created).format('D MMM YYYY'),\n renderCell: (params) => dayjs(params.row.created).format('D MMM YYYY'),\n },\n {\n field: 'registrationDate',\n headerName: t('registrationDate'),\n hide: true,\n valueGetter: (params) =>\n dayjs(params.row.registrationDate).format('D MMM YYYY'),\n renderCell: (params) =>\n dayjs(params.row.registrationDate).format('D MMM YYYY'),\n },\n {\n field: 'projectEndDate',\n headerName: t('projectEndDate'),\n hide: true,\n valueGetter: (params) =>\n params.row.projectEndDate\n ? dayjs(params.row.projectEndDate).format('D MMM YYYY')\n : '',\n renderCell: (params) =>\n params.row.projectEndDate\n ? dayjs(params.row.projectEndDate).format('D MMM YYYY')\n : '',\n },\n {\n field: 'approvalDate',\n headerName: t('approved'),\n hide: true,\n valueGetter: (params) =>\n dayjs(params.row.approvalDate).format('D MMM YYYY'),\n renderCell: (params) =>\n dayjs(params.row.approvalDate).format('D MMM YYYY'),\n },\n {\n field: 'typeOfCompany',\n headerName: t('typeOfCompany'),\n valueGetter: (params) => {\n switch (params.row.typeOfCompany) {\n case CompanyTypeEnum.Teknikkonsult:\n return t('sustainabilityReportTypeOfCompany.technicalConsult');\n case CompanyTypeEnum.Installation:\n return t('sustainabilityReportTypeOfCompany.installation');\n case CompanyTypeEnum.Industri:\n return t('sustainabilityReportTypeOfCompany.industry');\n default:\n return '';\n }\n },\n renderCell: (params) => {\n switch (params.row.typeOfCompany) {\n case CompanyTypeEnum.Teknikkonsult:\n return t('sustainabilityReportTypeOfCompany.technicalConsult');\n case CompanyTypeEnum.Installation:\n return t('sustainabilityReportTypeOfCompany.installation');\n case CompanyTypeEnum.Industri:\n return t('sustainabilityReportTypeOfCompany.industry');\n default:\n return '';\n }\n },\n hide: true,\n },\n {\n field: 'invoicedAmount',\n headerName: t('invoicedAmount'),\n valueGetter: (params) => params.row.invoicedAmount,\n hide: true,\n },\n {\n field: 'projectDescription',\n headerName: t('projectDescription'),\n valueGetter: (params) => params.row.projectDescription,\n hide: true,\n },\n {\n field: 'climateBenefitDescription',\n headerName: t('climateBenefitDescription'),\n valueGetter: (params) => params.row.climateBenefitDescription,\n hide: true,\n },\n {\n field: 'sustainabilitySolutionTechDescription',\n headerName: t('sustainabilitySolutionTechDescription'),\n valueGetter: (params) => params.row.sustainabilitySolutionTechDescription,\n hide: true,\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 { Button, 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 locationTag?: TagsResponse | undefined;\n setLocations?: (arg: TagsResponse | undefined) => void;\n businessArea?: BusinessAreaResponse | undefined;\n setBusinessArea?: (arg: BusinessAreaResponse | undefined) => void;\n projectStatusFilter?: ProjectStatusFilter | undefined;\n setProjectStatusFilter?: (arg: ProjectStatusFilter | undefined) => void;\n year?: ProjectStatusFilter | undefined;\n setYear?: (arg: ProjectStatusFilter | undefined) => void;\n};\n\nexport const SustainabilityFilter = (props: SustainabilityFilterProps) => {\n const {\n locationTag,\n setLocations,\n businessArea,\n setBusinessArea,\n projectStatusFilter,\n setProjectStatusFilter,\n year,\n setYear,\n } = props;\n const { t } = useTranslation();\n\n // FETCH DATA\n const { businessAreasData } = useFetchBusinessAreas();\n const { tagData } = useFetchTags('Location');\n\n const generateYears = (startYear: number): ProjectStatusFilter[] => {\n const currentYear = new Date().getFullYear();\n const years: ProjectStatusFilter[] = [];\n\n for (let y = startYear; y <= currentYear; y += 1) {\n years.push({ id: y, name: y.toString() });\n }\n\n return years;\n };\n\n const yearArray = generateYears(2024);\n\n return (\n \n {setBusinessArea && (\n \n \n \n )}\n {setLocations && (\n \n \n \n )}\n {setProjectStatusFilter && (\n \n \n \n )}\n {setYear && (\n \n \n \n )}\n \n {\n if (setLocations) setLocations(undefined);\n if (setBusinessArea) setBusinessArea(undefined);\n if (setProjectStatusFilter) setProjectStatusFilter(undefined);\n if (setYear) setYear(undefined);\n }}\n >\n {t('reset')}\n \n \n \n );\n};\n\nSustainabilityFilter.defaultProps = {\n setLocations: undefined,\n setBusinessArea: undefined,\n setProjectStatusFilter: undefined,\n locationTag: undefined,\n businessArea: undefined,\n projectStatusFilter: undefined,\n year: undefined,\n setYear: undefined,\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { GridRowParams, GridSortModel } from '@mui/x-data-grid-premium';\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 { useLocalStorage } from 'src/shared/helpers/hooks/useLocalStorage';\nimport { LocalStorageKeysEnum } from 'src/shared/enums/localStorageKeys.enum';\nimport dayjs from 'dayjs';\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\n const [businessArea, setBusinessArea] = useLocalStorage<\n BusinessAreaResponse | undefined\n >(LocalStorageKeysEnum.SustainabilityReportProjectBusinessArea, undefined);\n const [locationTag, setLocationTag] = useLocalStorage<\n TagsResponse | undefined\n >(LocalStorageKeysEnum.SustainabilityReportProjectTagsResponse, undefined);\n const [projectStatusFilter, setProjectStatusFilter] = useLocalStorage<\n ProjectStatusFilter | undefined\n >(\n LocalStorageKeysEnum.SustainabilityReportProjectProjectStatusFilter,\n undefined,\n );\n\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,\n projectStatus: [\n ProjectStatusEnum.Created,\n ProjectStatusEnum.ReadyForApproval,\n ProjectStatusEnum.Denied,\n ProjectStatusEnum.SupplementRequested,\n ],\n projectStatusFilter: projectStatusFilter?.id ?? ProjectStatusEnum.All,\n });\n\n // Fetch sustainability reports\n const fetchSustainabilityReports = useCallback(async () => {\n setLoading(true);\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 }\n } catch (error: any) {\n ConsoleHelper.log('Error fetching reports:', error);\n if (error.status === 404) {\n setData([]);\n setTotalItems(0);\n }\n } finally {\n if (isMounted()) {\n setLoading(false);\n }\n }\n }, [isMounted, requestOptions]);\n\n // Sync requestOptions when local storage changes\n useEffect(() => {\n setRequestOptions((prev) => ({\n ...prev,\n locationTagId: locationTag?.id,\n businessAreaID: businessArea?.id,\n projectStatusFilter: projectStatusFilter?.id ?? ProjectStatusEnum.All,\n }));\n }, [businessArea?.id, locationTag?.id, projectStatusFilter?.id]);\n\n // Trigger fetch on requestOptions change or refetch\n useEffect(() => {\n fetchSustainabilityReports();\n }, [fetchSustainabilityReports, refetchList]);\n\n // Handle page change\n const onPageChange = (newPage: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageIndex: newPage,\n }));\n };\n\n // Handle page size change\n const onPageSizeChange = (size: number) => {\n setRequestOptions((prev) => ({\n ...prev,\n pageSize: size,\n }));\n };\n\n // Handle sort model change\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\n // Handle row click\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-premium';\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 { LocalStorageKeysEnum } from 'src/shared/enums/localStorageKeys.enum';\nimport { useLocalStorage } from 'src/shared/helpers/hooks/useLocalStorage';\nimport dayjs from 'dayjs';\nimport { SustainabilityDataGrid } from './sustainabilityDataGrid';\nimport {\n ProjectStatusFilter,\n SustainabilityFilter,\n} 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] = useLocalStorage<\n BusinessAreaResponse | undefined\n >(LocalStorageKeysEnum.SustainabilityReportProjectBusinessArea, undefined);\n const [locationTag, setLocationTag] = useLocalStorage<\n TagsResponse | undefined\n >(LocalStorageKeysEnum.SustainabilityReportProjectTagsResponse, undefined);\n const [year, setYear] = useLocalStorage(\n LocalStorageKeysEnum.SustainabilityReportProjectYear,\n {\n id: dayjs(new Date()).year(),\n name: dayjs(new Date()).year().toString(),\n },\n );\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 filterDate: year && `${year.name}-01-01`,\n });\n\n const fetchSustainabilityReports = useCallback(async () => {\n setLoading(true);\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 // Sync requestOptions when local storage changes\n useEffect(() => {\n setRequestOptions((prev) => ({\n ...prev,\n locationTagId: locationTag?.id,\n businessAreaID: businessArea?.id,\n filterDate: year && `${year.name}-01-01`,\n }));\n }, [businessArea?.id, locationTag?.id, year]);\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 TagTypeEnum {\n Competence = 'Competence',\n Role = 'Role',\n Location = 'Location',\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","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 { useLocalStorage } from 'src/shared/helpers/hooks/useLocalStorage';\nimport { LocalStorageKeysEnum } from 'src/shared/enums/localStorageKeys.enum';\nimport dayjs from 'dayjs';\nimport { SustainabilityStatisticsSumCard } from './sustainabilityStatisticsSumCard';\nimport { SustainabilityStatisticsLeaderboard } from './sustainabilityStatisticsLeaderboard';\nimport { SustainabilityStatisticsDashboardSkeleton } from './sustainabilityStatisticsDashboardSkeleton';\nimport {\n ProjectStatusFilter,\n SustainabilityFilter,\n} from './sustainabilityFilter';\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 const [year, setYear] = useLocalStorage(\n LocalStorageKeysEnum.SustainabilityReportProjectYear,\n {\n id: dayjs(new Date()).year(),\n name: dayjs(new Date()).year().toString(),\n },\n );\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 filterDate: year?.name ? `${year?.name}-01-01` : undefined,\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, year?.name]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n if (loading) {\n return ;\n }\n return data ? (\n \n \n {t('sustainabilityStatisticInfo')}\n \n \n \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';\nimport { Colors } from 'src/shared/components/styles';\nimport { ProjectStatusEnum } from 'src/shared/enums/projectStatus.enum';\n\ntype SustainabilitySubmitButtonProps = {\n status: number;\n disabled: boolean;\n updateDisabled: boolean;\n showDisabledTooltip: boolean;\n onClickDelete: () => void;\n onClickUpdate: () => void;\n};\n\nexport const SustainabilitySubmitButton = (\n props: SustainabilitySubmitButtonProps,\n) => {\n const {\n status,\n disabled,\n updateDisabled,\n showDisabledTooltip,\n onClickDelete,\n onClickUpdate,\n } = props;\n const { t } = useTranslation();\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 onClickUpdate()}\n >\n {t('saveChanges')}\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 {\n isSustainabilityReporterUserOrAdmin,\n // UserTypeEnum,\n} 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 isSuperAdmin =\n // userDetails?.permissionGroup.id === UserTypeEnum.SuperAdmin;\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 getValues,\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 const updateReport = async () => {\n const data = getValues(); // Hämta formulärvärden utan att trigga submit\n // ConsoleHelper.log('Uppdatera rapport', item?.id);\n\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: data.projectStatus,\n };\n\n ConsoleHelper.log('dataToPut', dataToPut);\n\n try {\n const api = new SustainabilityAPI();\n setSubmitLoading(true);\n if (item?.id) {\n await api.Update(item.id, dataToPut);\n toast.success(t('Updated!'), {\n theme: 'colored',\n });\n refetchAfterUpdate();\n }\n } catch (error) {\n toast.error(t('SomethingWentWrong'));\n } finally {\n setSubmitLoading(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 onClickUpdate={() => updateReport()}\n updateDisabled={\n !isSustainabilityReporterUserOrAdmin(userDetails, item) ||\n item.projectStatus !== ProjectStatusEnum.Created\n }\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 {`${\n log.actionKey\n ? t(`common:sustainabilityLog.actionKey.${log.actionKey}`)\n : t('modifiedBy')\n } ${t('common:sustainabilityLog.by{name}', {\n name: log.employee.personName,\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, useMemo, 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: 'tabs.SustainabilityReport' },\n {\n value: 'sustainabilityLog',\n label: 'tabs.SustainabilityLog',\n },\n ],\n },\n {\n companyType: CompanyTypeEnum.Teknikkonsult,\n tabs: [\n { value: 'sustainabilityReport', label: 'tabs.SustainabilityReport' },\n { value: 'meetingPlan', label: 'tabs.MeetingPlan' },\n { value: 'customerSurvey', label: 'tabs.CustomerSurvey' },\n { value: 'sustainabilityLog', label: 'tabs.SustainabilityLog' },\n ],\n },\n {\n companyType: CompanyTypeEnum.Industri,\n tabs: [\n { value: 'sustainabilityReport', label: 'tabs.SustainabilityReport' },\n { value: 'customerSurvey', label: 'tabs.CustomerSurvey' },\n { value: 'sustainabilityLog', label: 'tabs.SustainabilityLog' },\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 // Memoize TabByType with translated labels\n const translatedTabs = useMemo(() => {\n return TabByType.map((item) => ({\n companyType: item.companyType,\n tabs: item.tabs.map((tab) => ({\n ...tab,\n label: t(tab.label), // Translate the label here\n })),\n }));\n }, [t]);\n\n // Get tabs for the current company type\n const companyTabs =\n translatedTabs.find((item) => item.companyType === companyType)?.tabs || [];\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 {companyTabs.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 { LicenseInfo } from '@mui/x-license-pro';\nimport { RoutesEnum } from './shared/enums/routes.enum';\nimport userManager from './shared/services/identity/userManager';\nimport ConsoleHelper from './shared/helpers/consoleHelper';\n\nLicenseInfo.setLicenseKey(\n '3588807af2d4682d5f0a7bf865e50917Tz0xMDU0MzYsRT0xNzY4MDg5NTk5MDAwLFM9cHJlbWl1bSxMTT1zdWJzY3JpcHRpb24sUFY9aW5pdGlhbCxLVj0y',\n);\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":""}