{"version":3,"sources":["Components/AppTheme.tsx","Components/Spinner.tsx","Components/UserProfileMenu/UserMenu.tsx","Components/UserProfileMenu/CompaniesList.tsx","Components/UserProfileMenu/UserProfileMenu.tsx","Components/Header.tsx","Components/Contact.tsx","Services/ApiService/helpers.ts","Services/ApiService/urls.ts","Services/Popup.ts","Services/ApiService/interceptors.ts","Services/ApiService/instance.ts","Services/ApiService/ApiService.ts","Components/Modals/ConfirmationModal.tsx","Components/Modals/PrivacyPolicyModal.tsx","Services/AuthService.ts","Services/ConfigService.ts","Stores/constants.ts","Stores/helpers.ts","Stores/DocumentsStore.ts","Components/Introduction.tsx","Components/DataTable/columns.tsx","Components/DataTable/DataTable.tsx","Components/Search.tsx","Components/ChaptersTree.tsx","Stores/ModalStore.ts","Components/Modals/ChaptersTreeModal.tsx","Components/SearchBar.tsx","Components/NoPermissionsCard.tsx","Components/InactiveUserCard.tsx","Components/Layout.tsx","Components/Modals/DeactivationWarningModal.tsx","Components/Footer.tsx","Components/Modals/Modals.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"names":["AppTheme","props","ThemeProvider","theme","FZAGTheme","CssBaseline","children","FZAGPalette","primary","main","text","grey","alpha","lightGrey","error","dark","middleLight","light","mountain","smog","dust","blue","link","navy","boxShadow","button","card","buttonHover","paper","common","black","white","violet","createTheme","palette","secondary","disabled","background","default","typography","fontSize","fontFamily","shape","borderRadius","components","MuiAppBar","styleOverrides","root","height","backgroundColor","padding","spacing","MuiToolbar","minHeight","breakpoints","up","MuiStack","margin","MuiTypography","fontWeight","color","lineHeight","MuiButton","textTransform","MuiIconButton","MuiLink","textDecorationColor","MuiInputBase","MuiMenuItem","MuiPaper","overflow","textOverflow","MuiTooltip","tooltip","maxWidth","whiteSpace","border","filter","marginTop","useStyles","makeStyles","progressBarWrapper","display","justifyContent","alignItems","position","top","left","bottom","right","zIndex","Spinner","styles","Box","className","CircularProgress","size","thickness","disableShrink","StyledMenu","styled","Menu","elevation","anchorOrigin","vertical","horizontal","transformOrigin","minWidth","marginRight","action","selectedOpacity","CustomMenuItem","setting","id","title","isLink","icon","Title","Typography","textAlign","MenuItem","onClick","authService","logout","undefined","href","target","rel","ListItemIcon","Link","underline","UserMenu","anchorElUser","handleCloseUserMenu","configService","appConfig","profileInfo","helpPageUrl","profileButtonText","logoutButtonText","helpButtonText","settings","customerPortalUrl","anchorEl","open","Boolean","onClose","map","companies","arrowIcon","CompaniesList","observer","React","anchorElCompanies","setAnchorElCompanies","user","length","IconButton","component","event","currentTarget","Popover","company","index","userTitle","avatar","width","UserProfileMenu","name","setAnchorElUser","userName","ml","Tooltip","Stack","direction","sx","Avatar","alt","bgcolor","split","variant","logo","down","between","logoTitle","Header","applicationDisplayName","AppBar","Toolbar","disableGutters","flex","src","classes","Contact","contactInfo","Card","CardContent","gutterBottom","dangerouslySetInnerHTML","__html","api","url","replaceParams","config","params","replace","str","bracket","console","info","replaceUrlParams","replacePathParams","URLS","users","acceptDisclaimer","revokeDisclaimer","downloadHandBook","documents","sendNotifications","hierarchies","downloadFile","basicConfig","autoClose","draggable","pauseOnHover","hideProgressBar","toast","POSITION","BOTTOM_RIGHT","Popup","dismiss","message","type","toLocaleLowerCase","popup","a","response","originalRequest","getAuthToken","status","renewToken","setAuthInterceptor","headers","Authorization","Promise","resolve","reject","axios","request","then","catch","token","errorMessage","toString","notify","source","CancelToken","instance","create","baseURL","Accept","cancelToken","interceptors","use","apiService","makeAutoObservable","this","get","skipParamReplace","data","put","post","btn","textDecoration","content","ConfirmationModal","submitButtonText","cancelButtonText","Dialog","DialogTitle","DialogContent","DialogContentText","DialogActions","pb","Button","onSubmit","startIcon","PrivacyPolicyModal","onAcceptPrivacyPolicy","privacyUrl","onCancelPrivacyPolicy","ACCESS_TOKEN_ACCESSOR","AuthService","userManager","loading","setToken","currentToken","localStorage","setItem","getItem","getUserProfile","accessToken","setUser","log","clearUserData","signoutRedirect","reason","getUserData","onRevokePrivacyPolicy","setTimeout","window","location","redirectToUrl","disclaimerCancelRedirectUrl","isUserHasDocumentPermissions","hasDocumentPermissions","UserManager","getAuthSettings","Log","logger","level","INFO","getConfiguration","hasAcceptedDisclaimer","modalStore","showModal","getUser","access_token","idToken","id_token","login","signinRedirect","signinSilent","authority","client_id","clientId","redirect_uri","appRoot","includeIdTokenInSilentRenew","silent_redirect_uri","post_logout_redirect_uri","automaticRedirectAfterSignOut","response_type","scope","clientScope","removeItem","ConfigService","environment","filterInfo","dialogButtonText","dialogTitleLabel","dialogApplyButtonText","dialogCancelButtonText","introductionInfo","fileDownloads","textParagraphs","searchInfo","searchInputText","resultsCountText","documentsPerPageText","noResultsText","columnHeaderDocumentNameText","columnHeaderHierarchiesText","columnHeaderNotificationText","columnHeaderLastChangesText","hideHierarchyColumn","deactivateInfo","notificationText","deactivateButtonText","footerInfo","privacyButtonText","companyText","noDocumentPermissionsInfo","inactiveUserInfo","fetch","json","responseData","origin","updateConfig","document","DEFAULT_THROTTLE_MS","DEFAULT_DESKTOP_PAGE_SIZE","DEFAULT_MOBILE_PAGE_SIZE","DEFAULT_PAGE","downloadFileBlob","fileName","fileBlobURL","anchor","createElement","body","appendChild","download","click","remove","checkIsMobileOrTablet","devices","RegExp","isIOS","test","navigator","platform","maxTouchPoints","userAgent","renameObjectFields","arr","value","label","childNodes","DocumentsStore","pageCount","totalItemsCount","pageSize","page","searchValue","isFilterReset","isWithSendNotificationsDocs","sortModel","_handleSearch","init","all","fetchDocuments","fetchHierarchies","isInit","searchText","inHierarchies","onlyWithSendNotifications","documentsOrder","itemsPerPage","runInAction","result","totalPagesCount","onSetSortModel","model","onCheckSendNotifications","isChecked","onSearch","onFilter","filterValue","filterIds","parent","collectIds","array","forEach","item","push","it","onFilterByDocsWithSendNotifications","onHandlePageChange","onHandlePageSizeChange","onHandleDownloadHandBook","identifier","_downloadFile","onHandleDownloadDocument","pathParams","responseType","indexOf","replaceAll","fileData","blob","Blob","blobUrl","URL","createObjectURL","revokeObjectURL","resetFilter","reaction","debounce","documentsStore","marginBottom","Introduction","flexDirection","xs","sm","paragraph","displayName","getColumns","onCheck","onDownload","field","headerName","editable","sortable","renderCell","derivations","fileExtension","row","description","Fragment","infoTitle","disableFocusListener","placement","infoTooltip","infoIcon","hide","val","Checkbox","checked","onChange","e","Date","toLocaleDateString","defaultSortModel","sort","wrapper","grid","maxHeight","paddingLeft","outline","fill","verticalAlign","visibility","opacity","CustomUnsortedIcon","DataTable","useEffect","initialState","sorting","rows","columns","disableSelectionOnClick","disableColumnMenu","rowCount","rowsPerPageOptions","autoHeight","paginationMode","pagination","sortingMode","onSortModelChange","onPageChange","onPageSizeChange","localeText","noRowsLabel","noResultsOverlayLabel","MuiTablePagination","labelRowsPerPage","labelDisplayedRows","from","to","count","ColumnUnsortedIcon","block","flexBasis","marginLeft","transition","order","shortBlock","searchIconWrapper","pointerEvents","input","Search","isOnFocus","setIsOnFocus","clsx","InputBase","onFocus","onBlur","placeholder","inputProps","TransitionComponent","style","useSpring","transform","in","div","Collapse","DialogActionType","StyledTreeView","TreeView","treeItemClasses","borderBottom","iconContainer","StyledTreeItem","TreeItem","group","ChaptersTree","renderTree","nodes","nodeId","FormControlLabel","control","includes","stopPropagation","Array","isArray","node","defaultExpanded","defaultCollapseIcon","defaultExpandIcon","multiSelect","flexGrow","overflowY","hierarchy","modal","closeButton","actions","ChaptersTreeModal","searchBar","controls","treeButton","cursor","filterIconActive","filterIcon","resetButton","SearchBar","isResetButtonExist","noWrap","endIcon","Clear","box","paddingBottom","NoPermissionsCard","InactiveUserCard","Layout","Grid","container","md","isInactive","DeactivationWarningModal","footer","toolbar","appLogo","imageLinkBlock","links","flexWrap","inactivation","copyright","Footer","handleRevokePrivacyPolicy","Modal","Math","random","toFixed","Component","ModalStore","bound","modalList","isLoading","_modalPromises","operation","close","payload","promise","pop","cancel","submit","closeModal","Modals","onCancel","ModalComponent","key","App","withStyles","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.54180187.chunk.js","sourcesContent":["import { ThemeProvider, createTheme, alpha } from '@mui/material/styles';\r\nimport CssBaseline from '@mui/material/CssBaseline';\r\n\r\nexport const AppTheme: React.FC = (props) => {\r\n return (\r\n \r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport const FZAGPalette = {\r\n primary: {\r\n main: '#82d2f0',\r\n },\r\n text: {\r\n grey: alpha('#000', 0.87),\r\n lightGrey: alpha('#000', 0.5),\r\n error: '#eee',\r\n },\r\n grey: {\r\n dark: '#e4e4e4',\r\n middleLight: '#c1c1c1',\r\n light: '#f2f2f2',\r\n mountain: '#585858',\r\n smog: alpha('#000', 0.56),\r\n dust: '#aaa',\r\n },\r\n blue: {\r\n light: '#5B93A8',\r\n },\r\n link: {\r\n navy: '#0000EE',\r\n },\r\n boxShadow: {\r\n button:\r\n '0 3px 5px -1px rgb(0 0 0 / 20%), 0 6px 10px 0 rgb(0 0 0 / 14%), 0 1px 18px 0 rgb(0 0 0 / 12%)',\r\n card: '0 2px 1px -1px rgb(0 0 0 / 20%), 0 1px 1px 0 rgb(0 0 0 / 14%), 0 1px 3px 0 rgb(0 0 0 / 12%)',\r\n buttonHover:\r\n 'rgb(0 0 0 / 20%) 0px 2px 4px -1px, rgb(0 0 0 / 14%) 0px 4px 5px 0px, rgb(0 0 0 / 12%) 0px 1px 10px 0px',\r\n paper:\r\n 'rgb(255, 255, 255) 0px 0px 0px 0px, rgba(0, 0, 0, 0.05) 0px 0px 0px 1px, rgba(0, 0, 0, 0.1) 0px 10px 15px -3px, rgba(0, 0, 0, 0.05) 0px 4px 6px -2px',\r\n },\r\n common: {\r\n black: '#000',\r\n white: '#fff',\r\n violet: '#3f51b5',\r\n },\r\n};\r\n\r\nlet FZAGTheme = createTheme({\r\n palette: {\r\n primary: {\r\n main: FZAGPalette.primary.main,\r\n },\r\n text: {\r\n primary: FZAGPalette.common.black,\r\n secondary: FZAGPalette.text.grey,\r\n disabled: FZAGPalette.text.lightGrey,\r\n },\r\n background: {\r\n default: FZAGPalette.common.white,\r\n },\r\n },\r\n typography: {\r\n fontSize: 14,\r\n fontFamily: 'Open Sans, Helvetica Neue, sans-serif',\r\n },\r\n shape: {\r\n borderRadius: 4,\r\n },\r\n});\r\n\r\nFZAGTheme = createTheme(FZAGTheme, {\r\n components: {\r\n MuiAppBar: {\r\n styleOverrides: {\r\n root: {\r\n height: '56px',\r\n backgroundColor: FZAGPalette.grey.light,\r\n padding: `0 ${FZAGTheme.spacing(2)}`,\r\n boxShadow: 'none',\r\n },\r\n },\r\n },\r\n MuiToolbar: {\r\n styleOverrides: {\r\n root: {\r\n height: '56px',\r\n minHeight: '56px',\r\n [FZAGTheme.breakpoints.up('xs')]: {\r\n minHeight: '56px',\r\n },\r\n },\r\n },\r\n },\r\n MuiStack: {\r\n styleOverrides: {\r\n root: {\r\n margin: '0 !important',\r\n },\r\n },\r\n },\r\n MuiTypography: {\r\n styleOverrides: {\r\n root: {\r\n fontSize: FZAGTheme.typography.fontSize,\r\n fontWeight: 400,\r\n color: FZAGTheme.palette.text.secondary,\r\n lineHeight: '23px',\r\n },\r\n },\r\n },\r\n MuiButton: {\r\n styleOverrides: {\r\n root: {\r\n minHeight: '38px',\r\n fontSize: FZAGTheme.typography.fontSize,\r\n color: FZAGPalette.common.white,\r\n textTransform: 'none',\r\n },\r\n },\r\n },\r\n MuiIconButton: {\r\n styleOverrides: {\r\n root: {\r\n color: FZAGPalette.grey.smog,\r\n '&:hover': {\r\n background: FZAGPalette.common.white,\r\n },\r\n },\r\n },\r\n },\r\n MuiLink: {\r\n styleOverrides: {\r\n root: {\r\n color: FZAGPalette.link.navy,\r\n textDecorationColor: FZAGPalette.link.navy,\r\n },\r\n },\r\n },\r\n MuiInputBase: {\r\n styleOverrides: {\r\n root: {\r\n fontSize: FZAGTheme.typography.fontSize,\r\n color: FZAGPalette.text.grey,\r\n },\r\n },\r\n },\r\n MuiMenuItem: {\r\n styleOverrides: {\r\n root: {\r\n fontSize: FZAGTheme.typography.fontSize,\r\n color: FZAGPalette.text.grey,\r\n },\r\n },\r\n },\r\n MuiPaper: {\r\n styleOverrides: {\r\n root: {\r\n '& .MuiMenuItem-root': {\r\n padding: '0 10px',\r\n minHeight: '22px',\r\n },\r\n '& .MuiTypography-root': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n },\r\n },\r\n },\r\n },\r\n MuiTooltip: {\r\n styleOverrides: {\r\n tooltip: {\r\n maxWidth: 220,\r\n backgroundColor: FZAGTheme.palette.background.default,\r\n color: FZAGTheme.palette.text.secondary,\r\n fontSize: FZAGTheme.typography.fontSize,\r\n whiteSpace: 'pre',\r\n border: '1px solid #dadde9',\r\n filter: 'drop-shadow(rgba(0, 0, 0, 0.3) 0 2px 10px)',\r\n marginTop: '0!important',\r\n },\r\n },\r\n },\r\n },\r\n});\r\n","import * as React from 'react';\r\nimport { CircularProgress } from '@mui/material';\r\nimport Box from '@mui/material/Box';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { alpha } from '@mui/material/styles';\r\nimport { FZAGPalette } from './AppTheme';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n progressBarWrapper: {\r\n height: '100%',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n bottom: 0,\r\n right: 0,\r\n zIndex: 999,\r\n backgroundColor: alpha('#fff', 0.4),\r\n '& .MuiCircularProgress-root': {\r\n color: FZAGPalette.primary.main,\r\n },\r\n },\r\n}));\r\n\r\nexport const Spinner: React.FC = () => {\r\n const styles = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport {\r\n Typography,\r\n Menu,\r\n MenuProps,\r\n MenuItem,\r\n Link,\r\n ListItemIcon,\r\n} from '@mui/material';\r\nimport { styled, alpha } from '@mui/material/styles';\r\nimport ManageAccountsOutlinedIcon from '@mui/icons-material/ManageAccountsOutlined';\r\nimport LogoutIcon from '@mui/icons-material/Logout';\r\nimport HelpOutline from '@mui/icons-material/HelpOutline';\r\nimport { authService, configService } from '../../index';\r\nimport { FZAGPalette } from '../AppTheme';\r\n\r\ntype Setting = {\r\n id: number;\r\n title: string;\r\n isTitleBold?: boolean;\r\n icon: React.ReactNode;\r\n isLink?: boolean;\r\n link?: string;\r\n};\r\n\r\nconst StyledMenu = styled((props: MenuProps) => (\r\n \r\n))(({ theme }) => ({\r\n '& .MuiPaper-root': {\r\n borderRadius: 6,\r\n minWidth: 220,\r\n color: theme.palette.grey[300],\r\n boxShadow: FZAGPalette.boxShadow.paper,\r\n '& .MuiMenu-list': {\r\n padding: 0,\r\n },\r\n '& .MuiMenuItem-root': {\r\n height: '48px',\r\n '& .MuiSvgIcon-root': {\r\n fontSize: 24,\r\n color: theme.palette.text.secondary,\r\n marginRight: theme.spacing(3),\r\n },\r\n '& .MuiLink-root': {\r\n color: theme.palette.text.secondary,\r\n },\r\n '&:active': {\r\n backgroundColor: alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.selectedOpacity,\r\n ),\r\n },\r\n },\r\n },\r\n}));\r\n\r\ntype CustomMenuItemProps = {\r\n setting: Setting;\r\n};\r\n\r\nconst CustomMenuItem: React.FC = ({ setting }) => {\r\n const { id, title, isLink, link, icon } = setting;\r\n\r\n const Title = {title};\r\n\r\n return (\r\n (id === 2 ? authService.logout() : undefined)}>\r\n \r\n {icon}\r\n \r\n {isLink ? (\r\n \r\n {Title}\r\n \r\n ) : (\r\n <>{Title}\r\n )}\r\n \r\n );\r\n};\r\n\r\ntype UserMenuProps = {\r\n anchorElUser: null | HTMLElement;\r\n handleCloseUserMenu: () => void;\r\n};\r\n\r\nexport const UserMenu: React.FC = ({\r\n anchorElUser,\r\n handleCloseUserMenu,\r\n}) => {\r\n const { profileInfo, helpPageUrl } = configService.appConfig;\r\n const { profileButtonText, logoutButtonText, helpButtonText, customerPortalUrl } = profileInfo;\r\n\r\n const settings: Setting[] = [\r\n {\r\n id: 1,\r\n title: profileButtonText,\r\n isLink: true,\r\n link: customerPortalUrl,\r\n icon: ,\r\n },\r\n {\r\n id: 2,\r\n title: logoutButtonText,\r\n icon: ,\r\n },\r\n {\r\n id: 3,\r\n title: helpButtonText,\r\n isLink: true,\r\n link: helpPageUrl,\r\n icon: ,\r\n },\r\n ];\r\n return (\r\n \r\n {settings.map((setting) => (\r\n \r\n ))}\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { IconButton, Typography, Popover, Theme } from '@mui/material';\r\nimport { makeStyles } from '@mui/styles';\r\nimport ArrowDropDownTwoToneIcon from '@mui/icons-material/ArrowDropDownTwoTone';\r\nimport { authService } from '../../index';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n title: {\r\n minWidth: '130px',\r\n fontSize: '10px',\r\n color: theme.palette.common.black,\r\n marginTop: '3px',\r\n },\r\n companies: {\r\n '& .MuiPaper-root': {\r\n padding: '8px',\r\n '& *': {\r\n fontSize: '12px',\r\n },\r\n },\r\n },\r\n arrowIcon: {\r\n height: '15px',\r\n '&.MuiButtonBase-root': {\r\n padding: 0,\r\n '&:hover': {\r\n background: 'transparent',\r\n },\r\n },\r\n },\r\n}));\r\n\r\nexport const CompaniesList: React.FC = observer(() => {\r\n const styles = useStyles();\r\n const [anchorElCompanies, setAnchorElCompanies] =\r\n React.useState(null);\r\n\r\n const id = !!anchorElCompanies ? 'company' : undefined;\r\n const { companies } = authService?.user!;\r\n\r\n const handleOpenCompanies = (event: React.MouseEvent) => {\r\n setAnchorElCompanies(event.currentTarget);\r\n };\r\n\r\n const handleCloseCompanies = () => {\r\n setAnchorElCompanies(null);\r\n };\r\n\r\n return (\r\n <>\r\n
\r\n {companies?.[0]}\r\n {companies?.length > 1 && (\r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n {companies?.map((company, index) => (\r\n {company}\r\n ))}\r\n \r\n \r\n );\r\n});\r\n","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport {\r\n Box,\r\n IconButton,\r\n Typography,\r\n Avatar,\r\n Tooltip,\r\n Stack,\r\n Theme,\r\n} from '@mui/material';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { authService } from '../../index';\r\nimport { UserMenu } from './UserMenu';\r\nimport { CompaniesList } from './CompaniesList';\r\nimport { FZAGPalette } from '../AppTheme';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n userTitle: {\r\n color: theme.palette.common.black,\r\n '&:first-child': {\r\n minWidth: '130px',\r\n fontSize: '16px',\r\n },\r\n '&:last-child': {\r\n fontSize: '10px',\r\n marginTop: '3px',\r\n },\r\n },\r\n avatar: {\r\n '&.MuiAvatar-root': {\r\n width: '30px',\r\n height: '30px',\r\n fontSize: '14px',\r\n },\r\n },\r\n}));\r\n\r\nexport const UserProfileMenu: React.FC = observer(() => {\r\n const styles = useStyles();\r\n const [anchorElUser, setAnchorElUser] = React.useState(\r\n null,\r\n );\r\n const { userName } = authService?.user!;\r\n\r\n const handleOpenUserMenu = (event: React.MouseEvent) => {\r\n setAnchorElUser(event.currentTarget);\r\n };\r\n\r\n const handleCloseUserMenu = () => {\r\n setAnchorElUser(null);\r\n };\r\n\r\n const stringAvatar = (name: string) => {\r\n return {\r\n sx: {\r\n bgcolor: FZAGPalette.primary.main,\r\n },\r\n children: `${name.split(' ')[0][0]}${name.split(' ')[1][0]}`,\r\n };\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {userName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport AppBar from '@mui/material/AppBar';\r\nimport Toolbar from '@mui/material/Toolbar';\r\nimport Typography from '@mui/material/Typography';\r\nimport Stack from '@mui/material/Stack';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { Theme } from '@mui/material/styles';\r\nimport { UserProfileMenu } from './UserProfileMenu/UserProfileMenu';\r\nimport { configService } from '../index';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n logo: {\r\n [theme.breakpoints.down('sm')]: {\r\n height: '16px',\r\n },\r\n [theme.breakpoints.between('sm', 'md')]: {\r\n height: '20px',\r\n },\r\n [theme.breakpoints.up('md')]: {\r\n height: '27px',\r\n },\r\n },\r\n logoTitle: {\r\n display: 'none',\r\n '&.MuiTypography-root': {\r\n fontSize: '16px',\r\n fontWeight: 600,\r\n [theme.breakpoints.up('sm')]: {\r\n display: 'inline-block',\r\n },\r\n [theme.breakpoints.up('md')]: {\r\n fontSize: '18px',\r\n },\r\n },\r\n },\r\n}));\r\n\r\nexport const Header: React.FC = observer(() => {\r\n const styles = useStyles();\r\n const { applicationDisplayName } = configService.appConfig;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n |\r\n \r\n \r\n {applicationDisplayName}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n","import * as React from 'react';\r\nimport { Typography, Card, CardContent } from '@mui/material';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { Theme } from '@mui/material/styles';\r\nimport { configService } from '../index';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n card: {\r\n height: '100%',\r\n '& .MuiTypography-root:first-child': {\r\n fontWeight: 600,\r\n margin: '16px 0 28px',\r\n },\r\n },\r\n text: {\r\n '&.MuiTypography-root:last-of-type': {\r\n marginTop: '16px',\r\n },\r\n },\r\n}));\r\n\r\nexport const Contact: React.FC = () => {\r\n const styles = useStyles();\r\n const { contactInfo } = configService.appConfig;\r\n const { title, text } = contactInfo;\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n","import qs from 'qs';\r\nimport { RequestConfig } from '../types';\r\n\r\nexport function api(url: string): string {\r\n return `/api/${url}`;\r\n}\r\n\r\nexport function replaceParams(url: string, config: RequestConfig = {}): string {\r\n return config ? replaceUrlParams(url, config.replacePathParams) : url;\r\n}\r\n\r\nexport function replaceUrlParams(url: string, params: any = {}): string {\r\n return url.replace(/:(\\w+)/gi, (str, bracket) => {\r\n if (bracket in params) {\r\n return params[bracket] || '';\r\n } else {\r\n console.info(\"url param doesn't exist\");\r\n\r\n return '';\r\n }\r\n });\r\n}\r\n\r\nexport function arrayParamsSerializer(requestParams: any): string {\r\n return qs.stringify(requestParams, { indices: false, arrayFormat: 'comma' });\r\n}\r\n","export const URLS = {\r\n config: '/api/configuration',\r\n users: 'authentication/users',\r\n acceptDisclaimer: 'users/accept-disclaimer',\r\n revokeDisclaimer: 'users/revoke-disclaimer',\r\n\r\n logout: 'authentication/logout',\r\n\r\n downloadHandBook: 'files/:identifier',\r\n documents: 'documents/search',\r\n sendNotifications: 'documents/:id',\r\n hierarchies: 'hierarchies/full',\r\n downloadFile: 'documents/:id',\r\n};\r\n","import { toast } from 'react-toastify';\r\n\r\nexport type TOAST_TYPES = keyof typeof toast.TYPE;\r\n\r\nconst basicConfig = {\r\n autoClose: 6000,\r\n draggable: false,\r\n pauseOnHover: false,\r\n hideProgressBar: true,\r\n position: toast.POSITION.BOTTOM_RIGHT,\r\n};\r\n\r\nclass Popup {\r\n dismiss() {\r\n toast.dismiss();\r\n }\r\n\r\n notify(message: string, type: TOAST_TYPES = 'ERROR', config = basicConfig) {\r\n // @ts-ignore\r\n toast[type.toLocaleLowerCase()](message, config);\r\n }\r\n}\r\n\r\nexport const popup = new Popup();\r\n","import axios, { AxiosError } from 'axios';\r\nimport { authService } from '../../index';\r\nimport { api } from './helpers';\r\nimport { URLS } from './urls';\r\nimport { popup } from '../Popup';\r\n\r\nexport async function updateAuthInterceptor(error: AxiosError | any) {\r\n const { response } = error;\r\n const originalRequest = error.config;\r\n const token = authService.getAuthToken();\r\n\r\n if (token && response && response.status === 401) {\r\n try {\r\n await authService.renewToken();\r\n setAuthInterceptor(response.config);\r\n\r\n originalRequest.headers.Authorization =\r\n 'Bearer ' + authService.getAuthToken();\r\n\r\n if (originalRequest.url !== api(URLS.users)) {\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .request(originalRequest)\r\n .then((response) => {\r\n resolve(response);\r\n })\r\n .catch((error) => {\r\n reject(error);\r\n });\r\n });\r\n }\r\n } catch (error) {\r\n return Promise.reject(error);\r\n }\r\n }\r\n return Promise.reject(error);\r\n}\r\n\r\nexport async function setAuthInterceptor(config: any) {\r\n const token = authService.getAuthToken();\r\n\r\n if (token) {\r\n config.headers.Authorization = `Bearer ${token}`;\r\n } else {\r\n delete config.headers.Authorization;\r\n }\r\n\r\n return config;\r\n}\r\n\r\nexport function unauthorizedInterceptor(error: AxiosError) {\r\n const { response } = error;\r\n\r\n if (!authService.getAuthToken() && response && response.status === 401) {\r\n authService.logout();\r\n } else {\r\n return Promise.reject(error);\r\n }\r\n}\r\n\r\nexport async function httpErrorHandler(error: AxiosError) {\r\n let errorMessage = `${error?.message.toString()}`;\r\n\r\n if (error.response!.status === 404) {\r\n errorMessage = `Error ${\r\n error.response!.status\r\n }: Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.`;\r\n }\r\n if (error.response!.status >= 500) {\r\n errorMessage = `Error ${\r\n error.response!.status\r\n }: Es tut uns sehr leid. Es gibt ein internes Serverproblem. Versuchen Sie es später erneut.`;\r\n }\r\n if (error.response!.status !== 401) {\r\n popup.notify(errorMessage);\r\n }\r\n\r\n return Promise.reject(error);\r\n}\r\n","import axios from 'axios';\r\nimport {\r\n httpErrorHandler,\r\n setAuthInterceptor,\r\n unauthorizedInterceptor,\r\n updateAuthInterceptor,\r\n} from './interceptors';\r\n\r\nconst CancelToken = axios.CancelToken;\r\nconst source = CancelToken.source();\r\n\r\nconst instance = axios.create({\r\n baseURL: '/',\r\n headers: {\r\n Accept: 'application/json',\r\n 'Content-type': 'application/json',\r\n },\r\n cancelToken: source.token,\r\n});\r\n\r\ninstance.interceptors.request.use(setAuthInterceptor);\r\ninstance.interceptors.response.use(undefined, updateAuthInterceptor);\r\ninstance.interceptors.response.use(undefined, unauthorizedInterceptor);\r\ninstance.interceptors.response.use(undefined, httpErrorHandler);\r\n\r\nexport { instance, source };\r\n","import { AxiosPromise } from 'axios';\r\nimport { makeAutoObservable } from 'mobx';\r\nimport { instance } from './instance';\r\nimport { replaceParams } from './helpers';\r\nimport { RequestConfig } from '../types';\r\n\r\nclass ApiService {\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n public get(url: string, config?: RequestConfig): AxiosPromise {\r\n return instance.get(\r\n config && config.skipParamReplace ? url : replaceParams(url, config),\r\n config,\r\n );\r\n }\r\n\r\n public put(\r\n url: string,\r\n data: T,\r\n config?: RequestConfig,\r\n ): AxiosPromise {\r\n return instance.put(replaceParams(url, config), data, config);\r\n }\r\n\r\n public post(\r\n url: string,\r\n data: T,\r\n config?: RequestConfig,\r\n ): AxiosPromise {\r\n return instance.post(replaceParams(url, config), data, config);\r\n }\r\n}\r\n\r\nexport const apiService = new ApiService();\r\n","import React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n Button,\r\n Theme,\r\n} from '@mui/material';\r\nimport ArrowForwardIosIcon from '@mui/icons-material/ArrowForwardIos';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { ReactJSXElement } from '@emotion/react/types/jsx-namespace';\r\n\r\nimport { ModalProps } from '../../Stores/ModalStore';\r\nimport { FZAGPalette } from '../AppTheme';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n title: {\r\n '&.MuiTypography-root': {\r\n fontFamily: 'Open Sans, Helvetica Neue, sans-serif',\r\n color: FZAGPalette.text.grey,\r\n fontSize: '14px',\r\n fontWeight: 400,\r\n },\r\n },\r\n btn: {\r\n '&.MuiButton-root': {\r\n fontFamily: 'Open Sans, Helvetica Neue, sans-serif',\r\n fontSize: '14px',\r\n fontWeight: 400,\r\n textTransform: 'none',\r\n padding: '0 10px',\r\n '&:last-of-type': {\r\n color: FZAGPalette.text.grey,\r\n textDecoration: 'underline',\r\n },\r\n '& .MuiSvgIcon-root': {\r\n fontSize: '10px',\r\n },\r\n },\r\n },\r\n content: {\r\n '&.MuiDialogContentText-root': {\r\n fontFamily: 'Open Sans, Helvetica Neue, sans-serif',\r\n color: FZAGPalette.text.grey,\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n '& span': {\r\n display: 'block',\r\n },\r\n '& :last-child': {\r\n marginTop: '16px',\r\n },\r\n },\r\n '& .MuiLink-root': {\r\n color: FZAGPalette.link.navy,\r\n textDecoration: `underline ${FZAGPalette.link.navy}`,\r\n },\r\n },\r\n}));\r\n\r\ntype ConfirmationDialogProps = ModalProps & {\r\n title?: string;\r\n content: ReactJSXElement;\r\n submitButtonText?: string;\r\n cancelButtonText?: string;\r\n};\r\n\r\nexport const ConfirmationModal: React.FC = observer(\r\n ({ title, content, submitButtonText, cancelButtonText, ...props }) => {\r\n const styles = useStyles();\r\n\r\n return (\r\n \r\n {title && (\r\n \r\n {title}\r\n \r\n )}\r\n \r\n \r\n {content}\r\n \r\n \r\n \r\n }\r\n variant=\"contained\"\r\n className={styles.btn}\r\n >\r\n {submitButtonText}\r\n \r\n \r\n \r\n \r\n );\r\n },\r\n);\r\n","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { Link } from '@mui/material';\r\n\r\nimport { authService, configService } from '../../index';\r\nimport { ConfirmationModal } from './ConfirmationModal';\r\nimport { ModalProps } from '../../Stores/ModalStore';\r\n\r\nexport const PrivacyPolicyModal: React.FC = observer(\r\n ({ ...props }) => {\r\n const { onAcceptPrivacyPolicy } = authService;\r\n const { privacyUrl } = configService.appConfig;\r\n\r\n const handleAccept = () => {\r\n if (props.onSubmit) {\r\n props.onSubmit();\r\n }\r\n onAcceptPrivacyPolicy();\r\n };\r\n\r\n const handleClose = () => {\r\n if (props.onClose) {\r\n props.onClose();\r\n }\r\n authService.onCancelPrivacyPolicy();\r\n };\r\n\r\n const renderContent = () => (\r\n <>\r\n Bitte lesen Sie die Datenschutzbestimmungen durch.\r\n \r\n Wenn Sie einverstanden sind, bitten wir Sie diese zu akzeptieren.\r\n \r\n \r\n Beim Klicken auf \"Akzeptieren & weiter\" bestätige ich die{' '}\r\n \r\n Datenschutzbestimmungen\r\n {' '}\r\n gelesen zu haben.\r\n \r\n \r\n );\r\n\r\n return (\r\n \r\n );\r\n },\r\n);\r\n","import { makeAutoObservable } from 'mobx';\r\nimport { Log, User, UserManager } from 'oidc-client';\r\n\r\nimport { configService, modalStore } from '../index';\r\nimport { apiService } from './ApiService/ApiService';\r\nimport { api } from './ApiService/helpers';\r\nimport { URLS } from './ApiService/urls';\r\nimport { Config, Token, UserProfile } from './types';\r\nimport { PrivacyPolicyModal } from '../Components/Modals/PrivacyPolicyModal';\r\n\r\nconst ACCESS_TOKEN_ACCESSOR = 'access_token';\r\n\r\nexport class AuthService {\r\n public userManager: UserManager;\r\n public user: UserProfile | null = null;\r\n\r\n public loading: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n this.userManager = new UserManager(\r\n AuthService.getAuthSettings(configService.appConfig),\r\n );\r\n Log.logger = console;\r\n Log.level = Log.INFO;\r\n }\r\n\r\n static clearUserData = () => {\r\n localStorage.removeItem(ACCESS_TOKEN_ACCESSOR);\r\n };\r\n\r\n public async init() {\r\n try {\r\n this.loading = true;\r\n await configService.getConfiguration();\r\n if (!this.user) {\r\n await this.getUserData();\r\n }\r\n if (this.user && !this.user?.hasAcceptedDisclaimer) {\r\n await modalStore.showModal(PrivacyPolicyModal);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n this.loading = false;\r\n }\r\n }\r\n\r\n public updateConfig() {\r\n this.userManager = new UserManager(\r\n AuthService.getAuthSettings(configService.appConfig),\r\n );\r\n }\r\n\r\n private static getAuthSettings(config: Config) {\r\n return {\r\n authority: config.authority,\r\n client_id: config.clientId,\r\n redirect_uri: `${config.appRoot}/signin-callback.html`,\r\n includeIdTokenInSilentRenew: false,\r\n silent_redirect_uri: `${config.appRoot}/silent-renew.html`,\r\n post_logout_redirect_uri: `${config.appRoot}`,\r\n automaticRedirectAfterSignOut: true,\r\n response_type: 'code',\r\n scope: config.clientScope,\r\n };\r\n }\r\n\r\n public setUser(user: UserProfile | null) {\r\n return (this.user = user);\r\n }\r\n\r\n public getUser(): Promise {\r\n return this.userManager.getUser();\r\n }\r\n\r\n public getUserData(): Promise {\r\n return this.getUser().then((user: any) => {\r\n if (user) {\r\n return this.getUserProfile({\r\n accessToken: user.access_token,\r\n idToken: user.id_token,\r\n });\r\n } else {\r\n console.log('You are not logged in.');\r\n return this.login();\r\n }\r\n });\r\n }\r\n\r\n public setToken = (currentToken: string) => {\r\n localStorage.setItem(ACCESS_TOKEN_ACCESSOR, currentToken);\r\n };\r\n\r\n public getAuthToken = () => {\r\n return localStorage.getItem(ACCESS_TOKEN_ACCESSOR);\r\n };\r\n\r\n public login(): Promise {\r\n return this.userManager.signinRedirect();\r\n }\r\n\r\n public getUserProfile = async (token: Token) => {\r\n try {\r\n const { data } = await apiService.post(\r\n api(URLS.users),\r\n token,\r\n {},\r\n );\r\n\r\n if (data) {\r\n this.setToken(data.accessToken);\r\n this.setUser(data);\r\n console.log('User has been successfully loaded from BD.');\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n public renewToken(): Promise {\r\n return this.userManager\r\n .signinSilent()\r\n .then((user: any) => {\r\n return this.getUserProfile({\r\n accessToken: user.access_token,\r\n idToken: user.id_token,\r\n });\r\n })\r\n .then(() => {\r\n console.log('Token has been successfully renewed.');\r\n return this.user;\r\n })\r\n .catch((error: Error) => {\r\n console.error(`Error in renew token ${error}`);\r\n this.login();\r\n });\r\n }\r\n\r\n public logout = async () => {\r\n await apiService.put(api(URLS.logout), {}, {});\r\n\r\n AuthService.clearUserData();\r\n\r\n // this.userManager.removeUser().catch((reason) => {\r\n // console.error(reason);\r\n // });\r\n // this.userManager.clearStaleState();\r\n \r\n await this.userManager.signoutRedirect().catch((reason) => {\r\n console.error(reason);\r\n });\r\n }\r\n\r\n public onAcceptPrivacyPolicy = async () => {\r\n try {\r\n await apiService.put(api(URLS.acceptDisclaimer), {}, {});\r\n AuthService.clearUserData();\r\n await this.getUserData();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n public onRevokePrivacyPolicy = async () => {\r\n try {\r\n const { data } = await apiService.put<{}, { redirectToUrl: string }>(\r\n api(URLS.revokeDisclaimer),\r\n {},\r\n {},\r\n );\r\n\r\n await this.logout();\r\n setTimeout(() => (window.location.href = data?.redirectToUrl), 0);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n public onCancelPrivacyPolicy = async () => {\r\n window.location.href =\r\n configService.appConfig.disclaimerCancelRedirectUrl;\r\n };\r\n\r\n public isUserHasDocumentPermissions = () => {\r\n return this.user?.hasDocumentPermissions;\r\n };\r\n}\r\n","import { makeAutoObservable } from 'mobx';\r\nimport { authService } from '../index';\r\nimport { URLS } from './ApiService/urls';\r\nimport { Config } from './types';\r\n\r\nexport class ConfigService {\r\n appConfig: Config = {\r\n environment: '',\r\n clientScope: '',\r\n appRoot: '',\r\n clientId: '',\r\n authority: '',\r\n disclaimerCancelRedirectUrl: '',\r\n applicationDisplayName: '',\r\n helpPageUrl: '',\r\n privacyUrl: '',\r\n contactInfo: {\r\n title: '',\r\n text: '',\r\n },\r\n filterInfo: {\r\n dialogButtonText: '',\r\n dialogTitleLabel: '',\r\n dialogApplyButtonText: '',\r\n dialogCancelButtonText: '',\r\n },\r\n introductionInfo: {\r\n title: '',\r\n fileDownloads: [],\r\n textParagraphs: [],\r\n },\r\n searchInfo: {\r\n searchInputText: '',\r\n resultsCountText: '',\r\n documentsPerPageText: '',\r\n noResultsText: '',\r\n columnHeaderDocumentNameText: '',\r\n columnHeaderHierarchiesText: '',\r\n columnHeaderNotificationText: '',\r\n columnHeaderLastChangesText: '',\r\n hideHierarchyColumn: false,\r\n },\r\n deactivateInfo: {\r\n notificationText: '',\r\n deactivateButtonText: '',\r\n cancelButtonText: '',\r\n },\r\n profileInfo: {\r\n profileButtonText: '',\r\n logoutButtonText: '',\r\n helpButtonText: '',\r\n customerPortalUrl: '',\r\n },\r\n footerInfo: {\r\n privacyButtonText: '',\r\n deactivateButtonText: '',\r\n companyText: '',\r\n },\r\n noDocumentPermissionsInfo: {\r\n title: '',\r\n message: '',\r\n },\r\n inactiveUserInfo: {\r\n title: '',\r\n message: '',\r\n },\r\n };\r\n loading: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n async getConfiguration() {\r\n try {\r\n this.loading = true;\r\n const response = await fetch(URLS.config);\r\n\r\n const responseData = await response.json();\r\n const appRoot = window.location.origin;\r\n\r\n this.appConfig = { ...responseData, appRoot: appRoot };\r\n\r\n authService.updateConfig();\r\n document.title = this.appConfig.applicationDisplayName;\r\n this.loading = false;\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n}\r\n","export const DEFAULT_THROTTLE_MS = 300;\r\nexport const DEFAULT_DESKTOP_PAGE_SIZE = 20;\r\nexport const DEFAULT_MOBILE_PAGE_SIZE = 5;\r\n\r\nexport const DEFAULT_PAGE = 0;\r\n\r\nexport const MOBILE_DEVICES =\r\n 'Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini';\r\n\r\nexport const FILE_URLS = {\r\n privacyPolicy:\r\n 'https://www.flughafen-zuerich.ch/-/jssmedia/airport/portal/dokumente/business/airlines-and-handling/flight-operations/bodenabfertigung/Datenschutz-Flugplatzhandbuch-Flughafen-Zuerich.pdf',\r\n};\r\n","import { MOBILE_DEVICES } from './constants';\r\nimport { Hierarchy, HierarchyDTO } from './types';\r\n\r\nexport const uniqueId = () => `id_${Math.random().toFixed(10)}`;\r\n\r\nexport function downloadFileBlob(fileName: string, fileBlobURL: string) {\r\n const anchor = document.createElement('a');\r\n\r\n document.body.appendChild(anchor);\r\n\r\n anchor.href = fileBlobURL;\r\n anchor.download = fileName;\r\n\r\n anchor.click();\r\n anchor.remove();\r\n}\r\n\r\nexport const sortBy = (arr: any[], property: string) => {\r\n return arr.slice(0).sort(function (a: any, b: any) {\r\n return a[property] > b[property] ? 1 : a[property] < b[property] ? -1 : 0;\r\n });\r\n};\r\n\r\nexport const checkIsMobileOrTablet = () => {\r\n const devices = new RegExp(MOBILE_DEVICES, 'i');\r\n const isIOS =\r\n /iPad|iPhone|iPod/.test(navigator.platform) ||\r\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1);\r\n\r\n return devices.test(navigator.userAgent) || isIOS;\r\n};\r\n\r\nexport const renameObjectFields = (arr?: HierarchyDTO[]): Hierarchy[] => {\r\n if (!arr?.length) {\r\n return [];\r\n }\r\n return arr.map((data) => {\r\n return {\r\n value: data.id,\r\n label: data.name,\r\n children: renameObjectFields(data?.childNodes),\r\n };\r\n });\r\n};\r\n\r\nexport const findId = (id: string, arr: Hierarchy[]): Hierarchy | any => {\r\n return arr.reduce((a, item) => {\r\n if (a) {\r\n return a;\r\n }\r\n if (item.value === id) {\r\n return item;\r\n }\r\n if (item.children) {\r\n return findId(id, item.children);\r\n }\r\n return null;\r\n }, null);\r\n};\r\n","import { makeAutoObservable, reaction, runInAction } from 'mobx';\r\nimport { debounce } from '@mui/material';\r\nimport {\r\n Document,\r\n Documents,\r\n DocumentsRequest,\r\n Hierarchy,\r\n HierarchyDropdownTree,\r\n HierarchyDTO,\r\n SendNotificationsRequest,\r\n SortModel,\r\n} from './types';\r\nimport { api } from '../Services/ApiService/helpers';\r\nimport { URLS } from '../Services/ApiService/urls';\r\nimport { apiService } from '../Services';\r\nimport {\r\n DEFAULT_DESKTOP_PAGE_SIZE,\r\n DEFAULT_MOBILE_PAGE_SIZE,\r\n DEFAULT_PAGE,\r\n DEFAULT_THROTTLE_MS,\r\n} from './constants';\r\nimport {\r\n checkIsMobileOrTablet,\r\n downloadFileBlob,\r\n renameObjectFields,\r\n} from './helpers';\r\n\r\nclass DocumentsStore {\r\n public data: Document[] = [];\r\n public pageCount: number = 1;\r\n public totalItemsCount: number = 0;\r\n public pageSize = checkIsMobileOrTablet()\r\n ? DEFAULT_MOBILE_PAGE_SIZE\r\n : DEFAULT_DESKTOP_PAGE_SIZE;\r\n public page = DEFAULT_PAGE;\r\n public hierarchies: Hierarchy[] = [];\r\n public searchValue: string = '';\r\n public filter: string[] = [];\r\n public isFilterReset: boolean = false;\r\n public isWithSendNotificationsDocs: boolean = false;\r\n public loading: boolean = false;\r\n public sortModel: SortModel[] = [];\r\n private _handleSearch: () => void;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n reaction(\r\n () => this.sortModel,\r\n async () => {\r\n await this.fetchDocuments();\r\n },\r\n );\r\n reaction(\r\n () => this.page,\r\n async () => {\r\n await this.fetchDocuments();\r\n },\r\n );\r\n reaction(\r\n () => this.pageSize,\r\n async () => {\r\n await this.fetchDocuments();\r\n },\r\n );\r\n this._handleSearch = debounce<() => void>(\r\n this.fetchDocuments,\r\n DEFAULT_THROTTLE_MS,\r\n );\r\n }\r\n\r\n public get documents() {\r\n return [...this.data];\r\n }\r\n\r\n public get isResetButtonExist() {\r\n return this.searchValue || !!this.filter?.length;\r\n }\r\n\r\n public init = async () => {\r\n await Promise.all([this.fetchDocuments(true), this.fetchHierarchies()]);\r\n };\r\n\r\n public fetchDocuments = async (isInit: boolean = false) => {\r\n try {\r\n this.loading = true;\r\n\r\n const { data } = await apiService.post(\r\n api(URLS.documents),\r\n {\r\n searchText: this.searchValue,\r\n inHierarchies: this.filter,\r\n onlyWithSendNotifications: this.isWithSendNotificationsDocs,\r\n documentsOrder: isInit ? [] : this.sortModel,\r\n },\r\n\r\n { params: { page: this.page, itemsPerPage: this.pageSize } },\r\n );\r\n\r\n runInAction(() => {\r\n this.data = data.result;\r\n this.pageCount = data.totalPagesCount;\r\n this.totalItemsCount = data.totalItemsCount;\r\n this.loading = false;\r\n });\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n public fetchHierarchies = async () => {\r\n try {\r\n const { data } = await apiService.get(\r\n api(URLS.hierarchies),\r\n {},\r\n );\r\n this.hierarchies = renameObjectFields(data);\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n runInAction(() => {\r\n this.loading = false;\r\n });\r\n }\r\n };\r\n\r\n public onSetSortModel = (model: SortModel[]) => {\r\n this.sortModel = model;\r\n };\r\n\r\n public onCheckSendNotifications = async (\r\n id: string | number,\r\n isChecked: boolean,\r\n ) => {\r\n try {\r\n await apiService.put(\r\n api(URLS.sendNotifications),\r\n { sendNotifications: isChecked },\r\n { replacePathParams: { id } },\r\n );\r\n this.fetchDocuments();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n public onSearch = (value: string) => {\r\n this.searchValue = value;\r\n this._handleSearch();\r\n };\r\n\r\n public onFilter = (\r\n isChecked: boolean,\r\n filterValue: HierarchyDropdownTree,\r\n ) => {\r\n let filterIds: string[] = [];\r\n const collectIds = (array: Hierarchy[]) => {\r\n array?.forEach?.((item) => {\r\n if (!item) return;\r\n if (!isChecked) {\r\n this.filter = this.filter.filter((it) => it !== item.value);\r\n } else {\r\n filterIds.push(item.value);\r\n }\r\n if (item.children) {\r\n collectIds(item.children);\r\n }\r\n });\r\n };\r\n\r\n const parent = filterValue;\r\n if (parent?.children) {\r\n collectIds(parent?.children);\r\n }\r\n if (!isChecked) {\r\n this.filter = this.filter.filter((item) => item !== filterValue.value);\r\n } else {\r\n filterIds.push(parent?.value);\r\n this.filter = [...this.filter, ...filterIds];\r\n }\r\n };\r\n\r\n public onFilterByDocsWithSendNotifications = (isChecked: boolean) => {\r\n this.isWithSendNotificationsDocs = isChecked;\r\n this.fetchDocuments();\r\n };\r\n\r\n public onHandlePageChange = (page: number) => {\r\n this.page = page;\r\n };\r\n\r\n public onHandlePageSizeChange = (pageSize: number) => {\r\n this.pageSize = pageSize;\r\n };\r\n\r\n public onHandleDownloadHandBook = async (identifier: string) => {\r\n await this._downloadFile(URLS.downloadHandBook, { identifier });\r\n };\r\n\r\n public onHandleDownloadDocument = async (id: string | number) => {\r\n await this._downloadFile(URLS.downloadFile, { id });\r\n };\r\n\r\n private _downloadFile = async (\r\n url: string,\r\n pathParams: { [key: string]: string | number },\r\n ) => {\r\n try {\r\n const response = await apiService.get(api(url), {\r\n responseType: 'arraybuffer',\r\n replacePathParams: pathParams,\r\n });\r\n var fileName = response.headers['content-disposition']\r\n .split('filename=')[1]\r\n .split(';')[0];\r\n // Filenames with a space in them are provided with surounding Double-Quotes: \"my name.csv\" --> This has to be removed to get the correct file-name\r\n if (fileName.indexOf('\"') > -1) {\r\n fileName = fileName.replaceAll('\"', '');\r\n }\r\n\r\n const fileData = response.data;\r\n\r\n const blob = new Blob([fileData], {\r\n type: 'application/octet-stream',\r\n });\r\n const blobUrl = window.URL.createObjectURL(blob);\r\n downloadFileBlob(fileName, blobUrl);\r\n window.URL.revokeObjectURL(blobUrl);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n };\r\n\r\n public resetFilter = () => {\r\n this.isFilterReset = true;\r\n this.filter = [];\r\n this.searchValue = '';\r\n this.isWithSendNotificationsDocs = false;\r\n this.isFilterReset = false;\r\n this.fetchDocuments();\r\n };\r\n}\r\nexport const documentsStore = new DocumentsStore();\r\n","import * as React from 'react';\r\nimport { Typography, Button, Card, CardContent } from '@mui/material';\r\nimport PictureAsPdfIcon from '@mui/icons-material/PictureAsPdf';\r\nimport { Theme } from '@mui/material/styles';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { documentsStore } from '../Stores/DocumentsStore';\r\nimport { configService } from '../index';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n card: {\r\n minHeight: '179px',\r\n height: '100%',\r\n padding: '16px',\r\n '& .MuiTypography-root': {\r\n '&:first-of-type': {\r\n fontWeight: 600,\r\n },\r\n marginBottom: '28px',\r\n },\r\n '& .MuiCardContent-root': {\r\n padding: '16px 0',\r\n [theme.breakpoints.down('sm')]: {\r\n padding: '16px 0 24px 0',\r\n },\r\n },\r\n '& .MuiButton-root': {\r\n marginTop: '14px',\r\n padding: '0 16px',\r\n },\r\n '& .MuiSvgIcon-root': {\r\n width: '24px',\r\n height: '24px',\r\n },\r\n },\r\n}));\r\n\r\nexport const Introduction: React.FC = () => {\r\n const styles = useStyles();\r\n const { title, textParagraphs, fileDownloads } =\r\n configService.appConfig.introductionInfo;\r\n\r\n return (\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n \r\n {textParagraphs?.map((paragraph: string, index: number) => (\r\n \r\n
\r\n
\r\n ))}\r\n
\r\n\r\n {fileDownloads?.map((btn) => (\r\n \r\n documentsStore.onHandleDownloadHandBook(btn.identifier)\r\n }\r\n >\r\n \r\n   {btn.displayName}\r\n \r\n ))}\r\n
\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Checkbox, IconButton, Tooltip, Typography } from '@mui/material';\r\nimport { GridCellParams } from '@mui/x-data-grid';\r\nimport InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';\r\nimport DownloadIcon from '@mui/icons-material/Download';\r\n\r\nimport { configService } from '../../index';\r\nimport { Derivation } from '../../Stores/types';\r\n\r\nexport const getColumns = ({\r\n onCheck,\r\n onDownload,\r\n styles,\r\n}: {\r\n onCheck: (id: number | string, isChecked: boolean) => void;\r\n onDownload: (id: number | string) => void;\r\n styles: any;\r\n}) => {\r\n const { searchInfo } = configService.appConfig;\r\n const {\r\n columnHeaderDocumentNameText,\r\n columnHeaderLastChangesText,\r\n columnHeaderNotificationText,\r\n columnHeaderHierarchiesText,\r\n hideHierarchyColumn,\r\n } = searchInfo;\r\n\r\n return [\r\n {\r\n field: 'derivations',\r\n headerName: '',\r\n width: 10,\r\n editable: false,\r\n sortable: false,\r\n renderCell: (params: GridCellParams) => (\r\n
\r\n {params.value.map((item: Derivation, index: number) => {\r\n if (index > 4) {\r\n return null;\r\n }\r\n return (\r\n \r\n {item.fileExtension}\r\n
\r\n );\r\n })}\r\n \r\n ),\r\n },\r\n {\r\n field: 'fileName',\r\n headerName: columnHeaderDocumentNameText,\r\n minWidth: 170,\r\n flex: 0.4,\r\n renderCell: (params: GridCellParams) => (\r\n <>\r\n {params.value}\r\n <>\r\n {params.row.description && (\r\n \r\n \r\n Beschreibung\r\n \r\n \r\n {params.row.description}\r\n \r\n \r\n }\r\n disableFocusListener\r\n placement={'bottom-start'}\r\n classes={{ tooltip: styles.infoTooltip }}\r\n >\r\n \r\n \r\n )}\r\n onDownload(params.id)}\r\n >\r\n \r\n \r\n \r\n \r\n ),\r\n },\r\n {\r\n field: 'hierarchyNames',\r\n headerName: columnHeaderHierarchiesText,\r\n minWidth: 170,\r\n flex: 0.4,\r\n editable: false,\r\n sortable: false,\r\n hide: hideHierarchyColumn,\r\n renderCell: (params: GridCellParams) => {\r\n return (\r\n
\r\n {params.value.map((val: string, index: number) => (\r\n
{val}
\r\n ))}\r\n
\r\n );\r\n },\r\n },\r\n {\r\n field: 'sendNotification',\r\n headerName: columnHeaderNotificationText,\r\n minWidth: 120,\r\n flex: 0.1,\r\n editable: false,\r\n renderCell: (params: GridCellParams) => (\r\n ) =>\r\n onCheck(params.id, e.target.checked)\r\n }\r\n />\r\n ),\r\n },\r\n {\r\n field: 'uploaded',\r\n headerName: columnHeaderLastChangesText,\r\n type: 'date',\r\n minWidth: 120,\r\n flex: 0.1,\r\n editable: false,\r\n renderCell: (params: GridCellParams) => (\r\n
{new Date(params.value).toLocaleDateString()}
\r\n ),\r\n },\r\n ];\r\n};\r\n","import * as React from 'react';\r\nimport { useEffect } from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport { DataGrid, GridSortItem } from '@mui/x-data-grid';\r\nimport { Theme, alpha } from '@mui/material';\r\nimport { makeStyles } from '@mui/styles';\r\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';\r\n\r\nimport { FZAGPalette } from '../AppTheme';\r\nimport { documentsStore } from '../../Stores/DocumentsStore';\r\nimport { SortModel } from '../../Stores/types';\r\nimport { Spinner } from '../Spinner';\r\nimport { getColumns } from './columns';\r\nimport { configService } from '../../index';\r\n\r\nconst defaultSortModel = [\r\n {\r\n field: 'filename',\r\n sort: 'desc',\r\n },\r\n {\r\n field: 'uploaded',\r\n sort: 'desc',\r\n },\r\n];\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n wrapper: {\r\n width: 'calc( 100% - 12px )',\r\n margin: '6px 6px 0 6px',\r\n backgroundColor: theme.palette.common.white,\r\n },\r\n grid: {\r\n '& .MuiDataGrid-virtualScrollerRenderZone': {\r\n position: 'relative',\r\n },\r\n '& .MuiDataGrid-virtualScrollerContent': {\r\n height: 'max-content !important',\r\n },\r\n '& .MuiDataGrid-row': {\r\n maxHeight: 'max-content !important',\r\n color: FZAGPalette.text.grey,\r\n },\r\n '&.MuiDataGrid-root .MuiDataGrid-cell': {\r\n padding: '4px 0',\r\n maxHeight: 'max-content !important',\r\n fontSize: '14px',\r\n fontWeight: 400,\r\n paddingLeft: '15px!important',\r\n '&:focus, &:focus-within': {\r\n outline: 'none',\r\n },\r\n },\r\n '& .MuiDataGrid-columnHeaderTitle': {\r\n fontSize: '14px',\r\n color: FZAGPalette.text.grey,\r\n fontWeight: 400,\r\n },\r\n '& .MuiDataGrid-row .MuiDataGrid-cell': {\r\n '&:first-of-type': {\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n },\r\n },\r\n '& .MuiCheckbox-root .MuiSvgIcon-root': {\r\n width: '24px',\r\n height: '24px',\r\n fill: FZAGPalette.text.grey,\r\n },\r\n '& .Mui-checked.MuiCheckbox-root .MuiSvgIcon-root': {\r\n fill: theme.palette.primary.main,\r\n },\r\n '& .MuiTablePagination-selectLabel, & .MuiTablePagination-displayedRows': {\r\n fontSize: '12px',\r\n color: alpha(theme.palette.common.black, 0.54),\r\n },\r\n '& .MuiTablePagination-select': {\r\n fontSize: '12px',\r\n color: FZAGPalette.text.grey,\r\n },\r\n '& .MuiDataGrid-cell--withRenderer': {\r\n '&>*': {\r\n lineHeight: 1.4,\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n verticalAlign: 'middle',\r\n '& *': {\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n verticalAlign: 'middle',\r\n },\r\n },\r\n },\r\n '& .MuiDataGrid-overlay': {\r\n top: '66px !important',\r\n },\r\n '&.MuiDataGrid-root .MuiDataGrid-columnHeader .MuiDataGrid-iconButtonContainer':\r\n {\r\n width: 'auto',\r\n visibility: 'visible',\r\n },\r\n '& .MuiDataGrid-columnHeader .MuiIconButton-root': {\r\n '& .MuiSvgIcon-root': {\r\n width: '18px',\r\n height: '18px',\r\n opacity: 0.3,\r\n },\r\n '& .MuiDataGrid-sortIcon': {\r\n opacity: 0.8,\r\n },\r\n },\r\n },\r\n infoTooltip: {\r\n '&.MuiTooltip-tooltip': {\r\n minWidth: '200px',\r\n maxWidth: 'max-content',\r\n padding: '10px',\r\n whiteSpace: 'pre-wrap',\r\n [theme.breakpoints.down('sm')]: {\r\n maxWidth: '300px',\r\n },\r\n },\r\n },\r\n infoTitle: {\r\n '&.MuiTypography-root': {\r\n fontWeight: 500,\r\n fontSize: '15px',\r\n marginBottom: '5px',\r\n },\r\n },\r\n description: {\r\n '&.MuiTypography-root': {\r\n fontSize: '12px',\r\n lineHeight: 1,\r\n padding: '2px 0',\r\n },\r\n },\r\n infoIcon: {\r\n color: FZAGPalette.grey.smog,\r\n },\r\n derivations: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n fileExtension: {\r\n width: '24px',\r\n height: '24px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n backgroundColor: FZAGPalette.grey.smog,\r\n color: FZAGPalette.common.white,\r\n fontSize: '8px',\r\n fontWeight: 600,\r\n fontFamily: 'monospace',\r\n '&:not(:last-of-type)': {\r\n marginBottom: '5px',\r\n },\r\n },\r\n}));\r\n\r\nconst CustomUnsortedIcon = () => ;\r\n\r\nexport const DataTable: React.FC = observer(() => {\r\n const styles = useStyles();\r\n const {\r\n documents,\r\n init,\r\n onCheckSendNotifications,\r\n page,\r\n loading,\r\n sortModel,\r\n onSetSortModel,\r\n totalItemsCount,\r\n pageSize,\r\n onHandlePageChange,\r\n onHandlePageSizeChange,\r\n onHandleDownloadDocument,\r\n } = documentsStore;\r\n const { searchInfo } = configService.appConfig;\r\n const { noResultsText, documentsPerPageText } = searchInfo;\r\n\r\n useEffect(() => {\r\n init();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const onHandleCheckSendNotifications = (\r\n id: string | number,\r\n isChecked: boolean,\r\n ) => {\r\n onCheckSendNotifications(id, isChecked);\r\n };\r\n\r\n const onHandleDownload = (id: string | number) => {\r\n onHandleDownloadDocument(id);\r\n };\r\n\r\n const handleSortModelChange = (model: SortModel[] | any) =>\r\n onSetSortModel(model);\r\n\r\n return (\r\n <>\r\n {loading && }\r\n
\r\n onHandlePageSizeChange(pageSize)}\r\n localeText={{\r\n noRowsLabel: `${noResultsText}`,\r\n noResultsOverlayLabel: `${noResultsText}`,\r\n MuiTablePagination: {\r\n labelRowsPerPage: `${documentsPerPageText}`,\r\n labelDisplayedRows: ({ from, to, count }) =>\r\n `${from}-${to} von ${count}`,\r\n },\r\n }}\r\n components={{\r\n ColumnUnsortedIcon: CustomUnsortedIcon,\r\n }}\r\n />\r\n
\r\n \r\n );\r\n});\r\n","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport clsx from 'clsx';\r\nimport { Theme } from '@mui/material/styles';\r\nimport InputBase from '@mui/material/InputBase';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { Box } from '@mui/system';\r\nimport { FZAGPalette } from './AppTheme';\r\nimport { documentsStore } from '../Stores/DocumentsStore';\r\nimport { configService } from '../index';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n block: {\r\n position: 'relative',\r\n flexBasis: '100%',\r\n height: '42px',\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: theme.palette.common.white,\r\n '&:hover': {\r\n backgroundColor: theme.palette.common.white,\r\n },\r\n marginRight: theme.spacing(1.5),\r\n marginLeft: theme.spacing(1),\r\n transition: 'all .3s ease-in-out',\r\n [theme.breakpoints.down('md')]: {\r\n width: '100%',\r\n flexBasis: 'auto',\r\n order: 1,\r\n marginBottom: '10px',\r\n marginRight: 0,\r\n },\r\n },\r\n shortBlock: {\r\n [theme.breakpoints.up('md')]: {\r\n flexBasis: '300px !important',\r\n },\r\n },\r\n searchIconWrapper: {\r\n height: '100%',\r\n position: 'absolute',\r\n zIndex: '10',\r\n pointerEvents: 'none',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: theme.spacing(0, 2),\r\n '& .MuiSvgIcon-root': {\r\n width: '20px',\r\n fill: FZAGPalette.grey.mountain,\r\n },\r\n },\r\n input: {\r\n width: '100%',\r\n height: '100%',\r\n color: 'inherit',\r\n boxShadow:\r\n '0 2px 1px -1px rgb(0 0 0 / 20%), 0 1px 1px 0 rgb(0 0 0 / 14%), 0 1px 3px 0 rgb(0 0 0 / 12%)',\r\n '& .MuiInputBase-input': {\r\n height: '100%',\r\n fontSize: '15px',\r\n padding: 0,\r\n paddingLeft: `${theme.spacing(6)}`,\r\n '&::placeholder': {\r\n color: FZAGPalette.text.lightGrey,\r\n opacity: 1,\r\n },\r\n '&::-webkit-input-placeholder': {\r\n color: FZAGPalette.text.lightGrey,\r\n opacity: 1,\r\n },\r\n '&::-moz-placeholder': {\r\n color: FZAGPalette.text.lightGrey,\r\n opacity: 1,\r\n },\r\n '&:-ms-input-placeholder': {\r\n color: FZAGPalette.text.lightGrey,\r\n opacity: 1,\r\n },\r\n '&:-moz-placeholder': {\r\n color: FZAGPalette.text.lightGrey,\r\n opacity: 1,\r\n },\r\n },\r\n },\r\n}));\r\n\r\nexport const Search: React.FC<{ className?: string }> = observer((props) => {\r\n const styles = useStyles();\r\n const { searchValue, onSearch } = documentsStore;\r\n const { searchInfo } = configService.appConfig;\r\n const { searchInputText } = searchInfo;\r\n\r\n const [isOnFocus, setIsOnFocus] = React.useState(false);\r\n\r\n const handleSearch = (event: React.ChangeEvent) => {\r\n onSearch(event.target.value);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n setIsOnFocus(true)}\r\n onBlur={() => setIsOnFocus(false)}\r\n className={styles.input}\r\n placeholder={searchInputText || 'Suchen'}\r\n inputProps={{ 'aria-label': 'search' }}\r\n onChange={handleSearch}\r\n value={searchValue}\r\n />\r\n \r\n );\r\n});\r\n","import * as React from 'react';\r\nimport { styled } from '@mui/material/styles';\r\nimport TreeView, { TreeViewProps } from '@mui/lab/TreeView';\r\nimport TreeItem, { TreeItemProps, treeItemClasses } from '@mui/lab/TreeItem';\r\nimport Collapse from '@mui/material/Collapse';\r\nimport { useSpring, animated } from '@react-spring/web';\r\nimport { TransitionProps } from '@mui/material/transitions';\r\nimport { documentsStore } from '../Stores/DocumentsStore';\r\nimport { Hierarchy } from '../Stores/types';\r\nimport { Checkbox, FormControlLabel } from '@mui/material';\r\nimport RemoveIcon from '@mui/icons-material/Remove';\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport { FZAGPalette } from './AppTheme';\r\nimport { observer } from 'mobx-react';\r\n\r\nfunction TransitionComponent(props: TransitionProps) {\r\n const style = useSpring({\r\n from: {\r\n opacity: 0,\r\n transform: 'translate3d(20px,0,0)',\r\n },\r\n to: {\r\n opacity: props.in ? 1 : 0,\r\n transform: `translate3d(${props.in ? 0 : 20}px,0,0)`,\r\n },\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nconst StyledTreeView = styled((props: TreeViewProps) => (\r\n \r\n))(({ theme }) => ({\r\n [`&>.${treeItemClasses.root}`]: {\r\n [`&>.${treeItemClasses.content}`]: {\r\n justifyContent: 'space-between',\r\n borderBottom: `1px solid ${FZAGPalette.grey.middleLight}`,\r\n '&>.MuiTreeItem-label': {\r\n '& .MuiTypography-root': {\r\n fontWeight: 600,\r\n },\r\n },\r\n [`&>.${treeItemClasses.iconContainer}`]: {\r\n order: 0,\r\n '& .MuiSvgIcon-root': {\r\n width: '20px',\r\n height: '20px',\r\n color: FZAGPalette.common.violet,\r\n },\r\n },\r\n },\r\n },\r\n}));\r\n\r\nconst StyledTreeItem = styled((props: TreeItemProps) => (\r\n \r\n))(({ theme }) => ({\r\n [`& .${treeItemClasses.iconContainer}`]: {\r\n '& .close': {\r\n opacity: 0.3,\r\n },\r\n },\r\n [`& .${treeItemClasses.group}`]: {\r\n marginLeft: 15,\r\n paddingLeft: 18,\r\n },\r\n [`& .${treeItemClasses.content}`]: {\r\n padding: 0,\r\n '& .MuiSvgIcon-root': {\r\n color: FZAGPalette.grey.mountain,\r\n },\r\n },\r\n [`& .${treeItemClasses.label}`]: {\r\n height: '28px',\r\n lineHeight: 1,\r\n alignItems: 'flex-start',\r\n '& .MuiTypography-root': {\r\n fontSize: '12px',\r\n },\r\n '& .MuiSvgIcon-root': {\r\n width: '20px',\r\n height: '20px',\r\n color: FZAGPalette.grey.dust,\r\n },\r\n '& *': {\r\n height: '100%',\r\n },\r\n },\r\n}));\r\n\r\nexport const ChaptersTree = observer(() => {\r\n const { hierarchies, filter, onFilter } = documentsStore;\r\n\r\n const renderTree = (nodes: Hierarchy) => (\r\n onFilter(event.target.checked, nodes)}\r\n onClick={(e) => e.stopPropagation()}\r\n />\r\n }\r\n label={<>{nodes.label}}\r\n key={nodes.value}\r\n />\r\n }\r\n >\r\n {Array.isArray(nodes.children)\r\n ? nodes.children.map((node) => renderTree(node))\r\n : null}\r\n \r\n );\r\n\r\n return (\r\n }\r\n defaultExpandIcon={}\r\n multiSelect={true}\r\n sx={{ flexGrow: 1, overflowY: 'auto' }}\r\n >\r\n {!!hierarchies?.length &&\r\n hierarchies?.map((hierarchy) => renderTree(hierarchy))}\r\n \r\n );\r\n});\r\n","import { action, makeAutoObservable } from 'mobx';\r\nimport { uniqueId } from './helpers';\r\n\r\nexport enum DialogActionType {\r\n cancel,\r\n submit,\r\n close,\r\n}\r\n\r\nexport interface ModalProps {\r\n onClose?: () => void;\r\n onSubmit?: (data?: unknown) => void;\r\n}\r\n\r\nexport class Modal {\r\n id = uniqueId();\r\n // @ts-ignore\r\n Component: React.ComponentType;\r\n props?: Omit;\r\n}\r\n\r\nexport class ModalStore {\r\n modalList: Array> = [];\r\n isLoading: boolean = false;\r\n\r\n private _modalPromises: Array<{\r\n resolve: (value: any) => void;\r\n reject: (value: any) => void;\r\n }> = [];\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n @action\r\n showModal(\r\n Component: React.ComponentType,\r\n props?: Omit,\r\n ) {\r\n const modal = new Modal();\r\n\r\n modal.Component = Component;\r\n modal.props = props;\r\n\r\n this.modalList.push(modal);\r\n\r\n return new Promise<{ operation: DialogActionType; payload: S }>(\r\n (resolve, reject) => this._modalPromises.push({ resolve, reject }),\r\n );\r\n }\r\n\r\n @action.bound\r\n closeModal(operation = DialogActionType.close, payload?: any) {\r\n const promise = this._modalPromises.pop();\r\n const result = { operation, payload };\r\n if (promise) {\r\n if (operation === DialogActionType.cancel) {\r\n promise.reject(result);\r\n } else if (operation === DialogActionType.submit) {\r\n promise.resolve(result);\r\n }\r\n } else {\r\n console.log('There are no promises in the list of modals');\r\n }\r\n\r\n this.modalList.pop();\r\n }\r\n\r\n @action.bound\r\n closeAllModal() {\r\n while (this.modalList.length) {\r\n this.closeModal();\r\n }\r\n }\r\n}\r\n","import React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n Button,\r\n Theme,\r\n IconButton,\r\n} from '@mui/material';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { ReactJSXElement } from '@emotion/react/types/jsx-namespace';\r\n\r\nimport { ModalProps } from '../../Stores/ModalStore';\r\nimport { FZAGPalette } from '../AppTheme';\r\nimport { ChaptersTree } from '../ChaptersTree';\r\nimport { documentsStore } from '../../Stores/DocumentsStore';\r\nimport { configService } from '../../index';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n modal: {\r\n '& .MuiPaper-root': {\r\n maxWidth: '90vw',\r\n width: '90vw',\r\n height: '90vh',\r\n '& .MuiDialogContent-root': {\r\n padding: '0 14px 14px',\r\n },\r\n },\r\n },\r\n title: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n '&.MuiTypography-root': {\r\n fontFamily: 'Open Sans, Helvetica Neue, sans-serif',\r\n color: FZAGPalette.common.black,\r\n fontSize: '16px',\r\n fontWeight: 600,\r\n background: FZAGPalette.grey.light,\r\n padding: '0 0 0 24px',\r\n },\r\n },\r\n btn: {\r\n '&.MuiButton-root': {\r\n fontFamily: 'Open Sans, Helvetica Neue, sans-serif',\r\n fontSize: '14px',\r\n fontWeight: 400,\r\n textTransform: 'none',\r\n padding: '0 5px',\r\n '&:first-of-type': {\r\n color: FZAGPalette.text.grey,\r\n marginRight: '10px',\r\n },\r\n '& .MuiSvgIcon-root': {\r\n fontSize: '10px',\r\n },\r\n },\r\n },\r\n content: {\r\n '&.MuiDialogContentText-root': {\r\n fontFamily: 'Open Sans, Helvetica Neue, sans-serif',\r\n color: FZAGPalette.text.grey,\r\n fontSize: '12px',\r\n lineHeight: '20px',\r\n marginTop: '20px',\r\n '& span': {\r\n display: 'flex',\r\n alignItems: 'center',\r\n },\r\n },\r\n '& .MuiLink-root': {\r\n color: FZAGPalette.link.navy,\r\n textDecoration: `underline ${FZAGPalette.link.navy}`,\r\n },\r\n },\r\n closeButton: {\r\n color: FZAGPalette.grey.mountain,\r\n padding: 0,\r\n '& .MuiSvgIcon-root': {\r\n width: '18px',\r\n },\r\n },\r\n actions: {\r\n margin: '16px',\r\n },\r\n}));\r\n\r\ntype ChaptersTreeModalProps = ModalProps & {\r\n content?: ReactJSXElement;\r\n};\r\n\r\nexport const ChaptersTreeModal: React.FC = observer(\r\n ({ content, ...props }) => {\r\n const styles = useStyles();\r\n const { dialogTitleLabel, dialogApplyButtonText, dialogCancelButtonText } =\r\n configService.appConfig.filterInfo;\r\n\r\n return (\r\n \r\n \r\n {dialogTitleLabel}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n documentsStore.fetchDocuments();\r\n props?.onSubmit && props?.onSubmit();\r\n }}\r\n variant=\"contained\"\r\n className={styles.btn}\r\n >\r\n {dialogApplyButtonText}\r\n \r\n \r\n \r\n );\r\n },\r\n);\r\n","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport clsx from 'clsx';\r\nimport { makeStyles } from '@mui/styles';\r\nimport AddIcon from '@mui/icons-material/Add';\r\nimport FilterAltIcon from '@mui/icons-material/FilterAlt';\r\nimport { Theme } from '@mui/material/styles';\r\nimport { Box, Button, IconButton, Typography } from '@mui/material';\r\nimport { FZAGPalette } from './AppTheme';\r\nimport { Search } from './Search';\r\nimport { documentsStore } from '../Stores/DocumentsStore';\r\nimport { configService, modalStore } from '../index';\r\nimport { Clear } from '@mui/icons-material';\r\nimport { ChaptersTreeModal } from './Modals/ChaptersTreeModal';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n searchBar: {\r\n minHeight: '56px',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n flexDirection: 'column',\r\n backgroundColor: FZAGPalette.blue.light,\r\n padding: '0 16px',\r\n [theme.breakpoints.up('md')]: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n },\r\n },\r\n title: {\r\n flex: 1,\r\n padding: '10px 0',\r\n '&.MuiTypography-root': {\r\n fontSize: '20px',\r\n fontWeight: 600,\r\n color: theme.palette.common.white,\r\n },\r\n },\r\n controls: {\r\n display: 'flex',\r\n width: '50%',\r\n flexDirection: 'row',\r\n justifyContent: 'flex-end',\r\n alignItems: 'center',\r\n margin: '10px 0',\r\n '& .MuiInputBase-root .MuiInputBase-input': {\r\n fontSize: '14px',\r\n },\r\n [theme.breakpoints.down('lg')]: {\r\n width: '75%',\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n width: '100%',\r\n flexDirection: 'column',\r\n alignItems: 'flex-end',\r\n },\r\n },\r\n treeButton: {\r\n '&.MuiButton-root': {\r\n minWidth: '183px',\r\n height: '42px',\r\n backgroundColor: FZAGPalette.primary.main,\r\n boxShadow: FZAGPalette.boxShadow.button,\r\n cursor: 'pointer',\r\n whiteSpace: 'nowrap',\r\n '&:hover': {\r\n backgroundColor: FZAGPalette.blue.light,\r\n boxShadow: FZAGPalette.boxShadow.buttonHover,\r\n },\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n order: 2,\r\n },\r\n },\r\n filterIconActive: {\r\n color: FZAGPalette.common.white,\r\n },\r\n filterIcon: {\r\n color: FZAGPalette.grey.light,\r\n opacity: 0.3,\r\n },\r\n resetButton: {\r\n width: '32px',\r\n height: '32px',\r\n color: theme.palette.text.primary,\r\n boxShadow: FZAGPalette.boxShadow.button,\r\n cursor: 'pointer',\r\n '& .MuiSvgIcon-root': {\r\n width: '20px',\r\n height: '20px',\r\n fill: FZAGPalette.text.grey,\r\n },\r\n '&.MuiButtonBase-root': {\r\n background: theme.palette.common.white,\r\n marginLeft: '12px',\r\n '&:hover': {\r\n background: FZAGPalette.grey.light,\r\n },\r\n [theme.breakpoints.down('md')]: {\r\n margin: '-41px 0 10px',\r\n },\r\n },\r\n },\r\n}));\r\n\r\nexport const SearchBar: React.FC = observer(() => {\r\n const styles = useStyles();\r\n const { totalItemsCount, resetFilter, isResetButtonExist } = documentsStore;\r\n const { dialogButtonText } = configService.appConfig.filterInfo;\r\n const { searchInfo } = configService.appConfig;\r\n const { resultsCountText } = searchInfo;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n {`${totalItemsCount} ${resultsCountText}`}\r\n \r\n \r\n \r\n \r\n }\r\n startIcon={\r\n \r\n }\r\n onClick={async () => await modalStore.showModal(ChaptersTreeModal)}\r\n >\r\n {dialogButtonText}\r\n \r\n {isResetButtonExist && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n});\r\n","import * as React from 'react';\r\nimport { Typography, Card, CardContent, Box } from '@mui/material';\r\nimport { Theme } from '@mui/material/styles';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { configService } from '../index';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n box: {\r\n display: 'flex',\r\n flex: 1,\r\n padding: '0 8px 16px 8px',\r\n },\r\n card: {\r\n padding: '16px',\r\n '&.MuiPaper-root': {\r\n width: '100%',\r\n },\r\n '& .MuiTypography-root': {\r\n '&:first-of-type': {\r\n fontWeight: 600,\r\n marginBottom: '28px',\r\n },\r\n },\r\n '& .MuiCardContent-root': {\r\n padding: '16px 0',\r\n '&:last-child': {\r\n paddingBottom: 0,\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n padding: '16px 0 24px 0',\r\n },\r\n },\r\n },\r\n}));\r\n\r\nexport const NoPermissionsCard: React.FC = () => {\r\n const styles = useStyles();\r\n const { title, message } = configService.appConfig.noDocumentPermissionsInfo;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n\r\n \r\n {message}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { Typography, Card, CardContent, Box } from '@mui/material';\r\nimport { Theme } from '@mui/material/styles';\r\nimport { makeStyles } from '@mui/styles';\r\nimport { configService } from '../index';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n box: {\r\n display: 'flex',\r\n flex: 1,\r\n padding: '0 8px 16px 8px',\r\n },\r\n card: {\r\n padding: '16px',\r\n '&.MuiPaper-root': {\r\n width: '100%',\r\n },\r\n '& .MuiTypography-root': {\r\n '&:first-of-type': {\r\n fontWeight: 600,\r\n marginBottom: '28px',\r\n },\r\n },\r\n '& .MuiCardContent-root': {\r\n padding: '16px 0',\r\n '&:last-child': {\r\n paddingBottom: 0,\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n padding: '16px 0 24px 0',\r\n },\r\n },\r\n },\r\n}));\r\n\r\nexport const InactiveUserCard: React.FC = () => {\r\n const styles = useStyles();\r\n const { title, message } = configService.appConfig.inactiveUserInfo;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { Grid, Box } from '@mui/material';\r\nimport { Contact } from './Contact';\r\nimport { Introduction } from './Introduction';\r\nimport { DataTable } from './DataTable/DataTable';\r\nimport { SearchBar } from './SearchBar';\r\nimport { authService } from '../index';\r\nimport { NoPermissionsCard } from './NoPermissionsCard';\r\nimport { InactiveUserCard } from './InactiveUserCard';\r\n\r\nexport const Layout: React.FC = () => {\r\n const { user } = authService;\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {user?.isInactive ? () : (\r\n user?.hasDocumentPermissions ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n )\r\n )\r\n }\r\n \r\n );\r\n};\r\n","import * as React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport { authService, configService } from '../../index';\r\nimport { ModalProps } from '../../Stores/ModalStore';\r\nimport { ConfirmationModal } from './ConfirmationModal';\r\n\r\nexport const DeactivationWarningModal: React.FC = observer(\r\n ({ ...props }) => {\r\n const { onRevokePrivacyPolicy } = authService;\r\n const { deactivateInfo } = configService.appConfig;\r\n const { notificationText, deactivateButtonText, cancelButtonText } =\r\n deactivateInfo;\r\n\r\n const handleSubmit = () => {\r\n if (props.onSubmit) {\r\n props.onSubmit();\r\n }\r\n onRevokePrivacyPolicy();\r\n };\r\n\r\n const renderContent = () => <>{notificationText};\r\n\r\n return (\r\n \r\n );\r\n },\r\n);\r\n","import * as React from 'react';\r\nimport { Box, Link, Toolbar, Typography, Theme } from '@mui/material';\r\nimport { makeStyles } from '@mui/styles';\r\n\r\nimport { FZAGPalette } from './AppTheme';\r\nimport { configService, modalStore } from '../index';\r\nimport { DeactivationWarningModal } from './Modals/DeactivationWarningModal';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n footer: {\r\n height: 'max-content',\r\n backgroundColor: FZAGPalette.grey.light,\r\n padding: theme.spacing(4),\r\n [theme.breakpoints.down('sm')]: {\r\n padding: theme.spacing(3),\r\n },\r\n },\r\n toolbar: {\r\n width: '100%',\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n '&.MuiToolbar-root': {\r\n height: '100%',\r\n padding: 0,\r\n [theme.breakpoints.down('md')]: {\r\n flexDirection: 'column',\r\n alignItems: 'flex-start',\r\n },\r\n },\r\n },\r\n appLogo: {\r\n width: '140px',\r\n pointerEvents: 'none',\r\n marginRight: '32px',\r\n [theme.breakpoints.down('sm')]: {\r\n marginBottom: '16px',\r\n },\r\n },\r\n imageLinkBlock: {\r\n display: 'flex',\r\n '& .MuiLink-root': {\r\n textAlign: 'center',\r\n color: FZAGPalette.text.grey,\r\n marginRight: '32px',\r\n textDecoration: 'none',\r\n '&:hover': {\r\n color: FZAGPalette.link.navy,\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n '&:first-of-type': {\r\n marginBottom: '6px',\r\n },\r\n },\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n flexDirection: 'column',\r\n },\r\n },\r\n links: {\r\n display: 'inline-flex',\r\n flexWrap: 'wrap',\r\n },\r\n inactivation: {\r\n fontSize: '14px',\r\n color: FZAGPalette.text.grey,\r\n '&:hover': {\r\n cursor: 'pointer',\r\n color: FZAGPalette.link.navy,\r\n },\r\n },\r\n copyright: {\r\n '&.MuiTypography-root': {\r\n fontSize: '12px',\r\n color: FZAGPalette.text.lightGrey,\r\n [theme.breakpoints.down('md')]: {\r\n marginTop: '24px',\r\n },\r\n [theme.breakpoints.down('sm')]: {\r\n marginTop: '32px',\r\n },\r\n },\r\n },\r\n}));\r\n\r\nexport const Footer: React.FC = () => {\r\n const styles = useStyles();\r\n const { footerInfo } = configService.appConfig;\r\n const { privacyButtonText, deactivateButtonText, companyText } = footerInfo;\r\n\r\n const handleRevokePrivacyPolicy = async () => {\r\n await modalStore.showModal(DeactivationWarningModal);\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \"fzag-logo\"\r\n
\r\n \r\n {privacyButtonText}\r\n \r\n \r\n {deactivateButtonText}\r\n
\r\n \r\n
\r\n \r\n {companyText}\r\n \r\n
\r\n
\r\n );\r\n};\r\n","import React from 'react';\r\nimport { observer } from 'mobx-react';\r\n\r\nimport { DialogActionType } from '../../Stores/ModalStore';\r\nimport { modalStore } from '../../index';\r\n\r\n// @ts-ignore\r\nexport const Modals: any = observer(() => {\r\n const onClose = () => modalStore.closeModal(DialogActionType.close);\r\n\r\n const onCancel = () => modalStore.closeModal(DialogActionType.cancel);\r\n\r\n const onSubmit = (data?: any) =>\r\n modalStore.closeModal(DialogActionType.submit, data);\r\n\r\n if (!modalStore.modalList?.length) return null;\r\n\r\n return modalStore.modalList.map((modal) => {\r\n const ModalComponent = modal.Component;\r\n\r\n return (\r\n \r\n );\r\n });\r\n});\r\n","import React, { Component } from 'react';\r\nimport { observer } from 'mobx-react';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport { withStyles, StyleRules, StyledComponentProps } from '@mui/styles';\r\nimport Box from '@mui/material/Box';\r\n\r\nimport { authService } from './index';\r\nimport { AppTheme, FZAGPalette } from './Components/AppTheme';\r\nimport { Spinner } from './Components/Spinner';\r\nimport { Header } from './Components/Header';\r\nimport { Layout } from './Components/Layout';\r\nimport { Footer } from './Components/Footer';\r\nimport { Modals } from './Components/Modals/Modals';\r\nimport './App.css';\r\n\r\nconst styles: StyleRules = {\r\n main: {\r\n minHeight: '100vh',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flex: 1,\r\n backgroundColor: FZAGPalette.grey.dark,\r\n },\r\n};\r\n\r\n@observer\r\nclass App extends Component {\r\n async componentDidMount() {\r\n await authService.init();\r\n }\r\n\r\n render() {\r\n const { user } = authService;\r\n\r\n if (!user) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n {user?.hasAcceptedDisclaimer && (\r\n \r\n
\r\n \r\n