{"version":3,"sources":["theme/variants.js","api/fetcher.js","pages/components/Snackbar.js","i18n/imports/index.js","i18n/index.js","api/debounce.js","pages/components/EnhancedTableHead.js","pages/components/ExportToExcel.js","pages/components/Search.js","api/files.js","pages/components/PriorityChip.js","redux/constants.js","pages/components/StatusChip.js","pages/components/Buttons.js","pages/auth/Page404.js","pages/components/ChooseFile.js","pages/pages/Tickets.js","api/index.js","layouts/Auth.js","components/Footer.js","components/Header.js","components/Loader.js","components/Async.js","routes/index.js","components/Sidebar.js","layouts/Dashboard.js","layouts/PrivacyPolicy.js","routes/Routes.js","theme/typography.js","theme/overrides.js","theme/breakpoints.js","theme/props.js","theme/shadows.js","theme/index.js","App.js","redux/reducers/tasksHeadCellsReducer.js","redux/reducers/ticketsHeadCellsReducer.js","redux/reducers/recurrentInvoicesReducer.js","redux/reducers/invoiceCreditHeadCellsReducer.js","redux/reducers/customerAccountHeadCellsReducer.js","redux/reducers/contractHeadCellsReducer.js","redux/reducers/rowsPerPageReducer.js","redux/reducers/servicesPricesHeadCellsReducer.js","redux/reducers/productSheetHeadCellsReducer.js","redux/reducers/index.js","redux/reducers/themeReducers.js","redux/store/index.js","index.js"],"names":["variants","name","palette","primary","main","contrastText","secondary","grey","header","color","background","search","indicator","green","sidebar","brand","footer","online","category","fontWeight","badge","body","fetcher","signal","method","route","content","arguments","length","undefined","options","headers","Accept","mode","isLoggedIn","concat","getToken","JSON","stringify","fetch","API_URL","then","res","status","Promise","reject","get","indexOf","json","text","catch","err","console","log","removeToken","window","location","useFetch","_useState","useState","_useState2","_slicedToArray","response","setResponse","useEffect","abortController","AbortController","abort","CustomSnackbar","_ref","message","action","ButtonProps","SnackbarProps","customParameters","React","createElement","Snackbar","Object","assign","anchorOrigin","vertical","horizontal","autoHideDuration","Fragment","Button","size","IconButton","onClick","onClose","CloseIcon","Alert","severity","type","variant","useCustomSnackbar","snackbar","useSnackbar","useMemo","showMessage","handleAction","_objectSpread","showInfo","showWarning","showError","showSuccess","langs","FRA","ENU","resources","i18n","use","LanguageDetector","initReactI18next","init","imports","key","dict","translationKey","Translations","elem","langKey","translation","toLowerCase","includes","compileImports","translations","fallbackLng","interpolation","escapeValue","debounce","callback","wait","immediate","timeout","_arguments","_this","callNow","next","apply","clearTimeout","setTimeout","EnhancedTableHead","props","order","orderBy","onRequestSort","headCells","t","useTranslation","TableHead","TableRow","map","headCell","_headCell$active","property","active","TableCell","id","align","alignment","padding","disablePadding","sortDirection","TableSortLabel","direction","event","trim","split","join","ExcelFile","ReactExport","ExcelSheet","ExcelColumn","ExportExcel","TrimId","str","values","title","Tooltip","filename","element","Icon","data","filter","item","label","value","col","LinkedContractor","FirstName","LastName","CAStatus","ContractOwnerFirstName","ContractOwnerLastName","Date","toLocaleDateString","ContractorLastName","ContractorFirstName","SearchIcon","styled","MuiSearchIcon","_templateObject","_taggedTemplateLiteral","Search","searchFilterChanging","searchShowing","setSearchShowing","_useState3","_useState4","searchFilter","setSearchFilter","InputLabel","Input","autoFocus","onBlur","placeholder","onKeyUp","e","onChange","target","_arrayBufferToBase64","buffer","binary","bytes","Uint8Array","len","byteLength","i","String","fromCharCode","btoa","PriorityChip","priority","rest","_objectWithoutProperties","_excluded","blue","borderColor","orange","red","Chip","style","icon","FontAwesomeIcon","farCircle","faAdjust","rotation","fasCircle","EmergencyIcon","BlockingIcon","warn","library","add","SET_THEME","SET_TASKS_HEAD_CELLS","SET_TICKETS_HEAD_CELLS","SET_RECURRENT_INVOICES_HEAD_CELLS","SET_INVOICE_CREDIT_HEAD_CELLS","SET_CUSTOMER_ACCOUNT_HEAD_CELLS","SET_CONTRACT_HEAD_CELLS","SET_PRODUCT_SHEETS_HEAD_CELLS","SET_SERVICE_PRICES_HEAD_CELLS","SET_ROWS_PER_PAGE","StatusChip","ButtonNoText","LoadingButton","forwardRef","ref","endIcon","startIcon","loading","iconPosition","buttonProps","_excluded2","CircularProgress","disabled","children","LoadingButtonWithIcon","_excluded3","_excluded4","ButtonWithIcon","_excluded7","_excluded8","defaultProps","MuiButton","spacing","Wrapper","div","theme","breakpoints","up","Page404","history","useHistory","Helmet","Typography","component","gutterBottom","goBack","mt","ChooseFile","fileToUpload","setFileToUpload","uploadLoading","setUploadLoading","Box","DropzoneArea","showFileNamesInPreview","showFileNames","filesLimit","dropzoneText","Name","getFileAddedMessage","fileName","getFileRemovedMessage","getFileLimitExceedMessage","getDropRejectMessage","rejectedFile","acceptedFiles","maxFileSize","file","fileType","some","acceptedType","RegExp","replace","test","checkFileType","files","reader","FileReader","onload","result","Bytes","readAsArrayBuffer","ToolbarTitle","Spacer","_templateObject2","Divider","MuiDivider","Grid","MuiGrid","StyledTableRow","withStyles","root","backgroundColor","hover","descendingComparator","a","b","valueA","valueB","TableColumnPicker","headCellsHandler","FormGroup","FormControlLabel","control","CustomCheckBox","updateHandler","isActive","setIsActive","Checkbox","checked","EnhancedTable","rows","pathname","setOrder","_useState5","_useState6","setOrderBy","_useState7","_useState8","page","setPage","_useState9","_useState10","searchFilteredRows","setSearchFilteredRows","_useState11","_useState12","dialog","setDialog","dispatch","useDispatch","setHeadCells","cells","types","payload","useSelector","state","ticketsHeadCellsReducer","rowsPerPage","rowsPerPageReducer","setRowsPerPage","_useState13","_useState14","filteredRows","setFilteredRows","_useState15","statusList","filterTicketsArray","useCallback","array","Array","isArray","Status","isCellShowing","cellId","tickets","Paper","Toolbar","_rows$tickets","filteredArray","row","words","found","forEach","word","Title","No","ContactName","AssignedContactName","SettingsIcon","TableContainer","Table","rowCount","TableBody","comparator","stabilizedThis","el","index","sort","stableSort","getComparator","slice","tabIndex","Priority","boxShadow","href","Category","creationDate","CreationDate","getTime","toLocaleString","mr","mb","_toConsumableArray","Skeleton","colSpan","TablePagination","rowsPerPageOptions","count","onChangePage","newPage","onChangeRowsPerPage","parseInt","Dialog","open","DialogTitle","DialogContent","DialogActions","NewTicketDialog","_ref2","_newTicket$Category$C","_newTicket$Category","setOpen","_useState17","_useState18","priorities","setPriorities","_useState19","_useState20","categories","setCategories","error","_useState21","Description","Message","IsDraft","_useState22","newTicket","setNewTicket","handleTicketChange","prop","find","obj","Code","_defineProperty","handleTicketDialogClose","_useState23","_useState24","setLoading","maxWidth","fullWidth","container","pt","xs","htmlFor","required","Select","labelId","MenuItem","whiteSpace","TextField","multiline","ticketNo","push","finally","Tickets","_useState25","_useState26","newTicketDialogOpen","setNewTicketDialogOpen","substring","_useState27","_useState28","_useState29","_useState30","justify","dislay","Add","NewTicketButton","_useState31","_useState32","config","apiUrl","hostname","sessionStorage","getItem","setItem","confirm","KEY","hasFailedBefore","setToken","token","localStorage","alert","removeItem","parseJwt","base64","jsonPayload","decodeURIComponent","atob","c","charCodeAt","toString","parse","userMenuFilter","menu","_ref3","_ref4","_ref5","_userMenu$ZenServices","_ref6","_userMenu$ZenProductS","userMenu","Menu","defaultValue","ZenTickets","PracticeTickets","ZenTasks","PracticeTasks","ZenRecurrentInvoices","PracticeRecurrentInvoices","ZenInvoiceAndCreditMemos","PracticeInvoiceAndCreditMemos","ZenCustomerAccountEntries","PracticeCustomerAccount","ZenServicesPrices","ZenContracts","PracticeContracts","ZenProductSheets","PracticeInfraAccess","GlobalStyle","createGlobalStyle","Root","Auth","CssBaseline","common","white","Link","MuiLink","MuiTypography","_templateObject3","Footer","alignItems","to","textAlign","getFullYear","AppBar","MuiAppBar","shadows","MuiIconButton","Flag","img","UserButton","_templateObject4","AccountIcon","AccountCircle","_templateObject5","LanguageMenu","anchorMenu","setAnchorMenu","setLanguage","lng","changeLanguage","closeMenu","Boolean","currentTarget","src","alt","anchorEl","UserMenu","withRouter","_parseJwt","AccFirstName","AccLogin","username","height","RouterLink","connect","withTheme","onDrawerToggle","position","elevation","Hidden","mdUp","MenuIcon","Loader","m","sleep","r","asyncComponent","importComponent","AsyncComponent","_React$Component","_inherits","_super","_createSuper","_classCallCheck","call","_createClass","_componentDidMount","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_yield$importComponen","wrap","_context","prev","sent","default","this","setState","stop","C","Component","faFileSignature","faUserClock","SignIn","async","ResetPassword","Page500","PageNetworkError","PrivacyPolicy","Profile","Umbrella","TicketDetails","TicketsCategory","Tasks","TaskDetails","RecurrentInvoices","InvoiceCreditNotes","CustomerAccountEntryList","Contracts","ServicePrices","ProductSheets","authRoutes","path","Users","privacyPolicyRoutes","profileRoutes","User","createTicketRoute","umbrellaRoutes","DashboardIcon","isHome","ticketsList","TicketIcon","tasksList","FeedbackIcon","taskDetails","ticketDetails","recurrentInvoices","StorageIcon","invoiceCreditNotes","ReceiptIcon","customerAccountEntryList","contracts","servicePrices","productSheets","ListAltIcon","dashboard","auth","privacy","NavLink","RouterNavLink","innerRef","Drawer","MuiDrawer","Scrollbar","PerfectScrollbar","List","MuiList","Items","Brand","ListItem","typography","h5","fontSize","fontWeightMedium","fontFamily","_templateObject6","fontWeightRegular","activeClassName","darken","CategoryText","ListItemText","_templateObject7","body1","CategoryIconLess","ExpandLess","_templateObject8","rgba","CategoryIconMore","ExpandMore","_templateObject9","_templateObject10","LinkText","_templateObject11","LinkBadge","_templateObject12","fontWeightBold","CategoryBadge","_templateObject13","SidebarSection","_templateObject14","Logo","_templateObject15","SidebarCategory","isOpen","isCollapsable","SidebarLink","button","dense","exact","staticContext","pathName","_routes","routes","containsHome","initOpenRoutes","openRoutes","setOpenRoutes","cloneElement","keys","toggle","Collapse","in","unmountOnExit","AppContent","MuiPaper","MainContent","withWidth","width","mobileOpen","setMobileOpen","handleDrawerToggle","implementation","Sidebar","PaperProps","smDown","Header","p","isWidthUp","Privacy","renderRoute","Layout","requiresAuth","Redirect","childRoutes","Route","render","Routes","SnackbarProvider","SnackbarComponent","Router","Switch","PrivacyPolicyLayout","privacyRoutes","DashboardLayout","dashboardRoutes","AuthLayout","useNextVariants","fontWeightLight","h1","lineHeight","h2","h3","h4","h6","subtitle1","subtitle2","body2","textTransform","overrides","MuiCardHeader","marginTop","marginRight","MuiPickersDay","day","MuiPickersYear","MuiPickersCalendar","transitionContainer","MuiPickersCalendarHeader","iconButton","switchHeader","marginBottom","MuiPickersClock","margin","MuiPickersClockNumber","clockNumber","left","MuiPickerDTHeader","dateHeader","timeHeader","MuiPickersTimePicker","hourMinuteLabel","MuiPickersToolbar","toolbar","sm","md","lg","xl","MuiButtonBase","disableRipple","titleTypographyProps","createShadow","px","themes","lang","locale","frFR","enUS","createMuiTheme","store","themeReducer","_useTranslation","selectedTheme","maTheme","currentTheme","language","titleTemplate","defaultTitle","StylesProvider","injectFirst","MuiPickersUtilsProvider","utils","DateFnsUtils","MuiThemeProvider","ThemeProvider","initialTasksHeadCells","bold","initialTicketsHeadCells","initialRecurrentInvoicesHeadCells","initialInvoiceCreditHeadCells","initialCustomerAccountHeadCells","initialContractHeadCells","initialRowsPerPage","initialServicesPricesHeadCells","initialProductSheetHeadCells","combineReducers","actions","tasksHeadCellsReducer","recurrentInvoicesReducer","invoiceCreditHeadCellsReducer","customerAccountHeadCellsReducer","contractHeadCellsReducer","productSheetHeadCellsReducer","servicesPricesHeadCellsReducer","persistConfig","storage","persistedReducer","persistReducer","rootReducer","createStore","__REDUX_DEVTOOLS_EXTENSION__","persistStore","ReactDOM","Provider","App","document","getElementById"],"mappings":"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","file":"static/js/main.a454c645.chunk.js","sourcesContent":["import { green, grey } from \"@material-ui/core/colors\";\r\n\r\nconst greenVariant = {\r\n name: \"Green\",\r\n palette: {\r\n primary: {\r\n main: \"#62b852\",\r\n contrastText: \"#FFF\"\r\n },\r\n secondary: {\r\n main: grey[500],\r\n contrastText: \"#FFF\"\r\n }\r\n },\r\n header: {\r\n color: grey[500],\r\n background: \"#FFF\",\r\n search: {\r\n color: grey[800]\r\n },\r\n indicator: {\r\n background: green[400]\r\n }\r\n },\r\n sidebar: {\r\n color: \"#FFF\",\r\n background: green[500],\r\n header: {\r\n color: \"#FFF\",\r\n background: \"#62b852\",\r\n brand: {\r\n color: \"#FFFFFF\"\r\n }\r\n },\r\n footer: {\r\n color: \"#FFF\",\r\n background: \"#62b852\",\r\n online: {\r\n background: \"#FFF\"\r\n }\r\n },\r\n category: {\r\n fontWeight: 400\r\n },\r\n badge: {\r\n color: \"#000\",\r\n background: \"#FFF\"\r\n }\r\n },\r\n body: {\r\n background: \"#F7F9FC\"\r\n },\r\n footer: {\r\n color: grey[800]\r\n }\r\n};\r\n\r\nconst variants = [\r\n greenVariant\r\n];\r\n\r\nexport default variants;\r\n","import { useEffect, useState } from \"react\";\r\nimport { API_URL, getToken, isLoggedIn, removeToken } from \"./\";\r\n\r\nexport const fetcher = (signal, method, route, content = null) => {\r\n\tconst options = {\r\n\t\tsignal: signal,\r\n\t\tmethod: method,\r\n\t\theaders: {\r\n\t\t\tAccept: \"application/json\",\r\n\t\t},\r\n\t\tmode: \"cors\",\r\n\t};\r\n\r\n\tif (isLoggedIn()) {\r\n\t\toptions.headers[\"Authorization\"] = `Bearer ${getToken()}`;\r\n\t}\r\n\r\n\tif (content !== null) {\r\n\t\toptions.headers[\"Content-Type\"] = \"application/json\";\r\n\t\toptions.body = JSON.stringify(content);\r\n\t}\r\n\r\n\treturn fetch(`${API_URL}${route}`, options)\r\n\t\t.then((res) => {\r\n\t\t\tif (res.status === 401 && isLoggedIn()) return Promise.reject(\"INVALID_TOKEN\");\r\n\r\n\t\t\tif (res.status === 500) return Promise.reject(\"UNKNOWN_ERROR\");\r\n\r\n\t\t\tif ((res.status < 200 || res.status >= 300) && res.status !== 401)\r\n\t\t\t\treturn Promise.reject(\"UNKNOWN_ERROR\");\r\n\r\n\t\t\tif (res.status === 204) return res.status;\r\n\r\n\t\t\tif (res.headers.get(\"Content-Type\").indexOf(\"application/json\") !== -1)\r\n\t\t\t\treturn res.json();\r\n\r\n\t\t\treturn res.status === 200 ? res.text() : res.status;\r\n\t\t})\r\n\t\t.catch((err) => {\r\n\t\t\tconsole.log(err);\r\n\r\n\t\t\tif (err === \"INVALID_TOKEN\") {\r\n\t\t\t\tremoveToken();\r\n\t\t\t\twindow.location = \"/\";\r\n\t\t\t} else if (err === \"UNKNOWN_ERROR\") {\r\n\t\t\t\twindow.location = \"/500\";\r\n\t\t\t} else if (err.name !== \"AbortError\") {\r\n\t\t\t\twindow.location = \"/networkerror\";\r\n\t\t\t}\r\n\r\n\t\t\treturn Promise.reject();\r\n\t\t});\r\n};\r\n\r\nconst useFetch = (method, route, content = null) => {\r\n\tconst [response, setResponse] = useState();\r\n\r\n\tuseEffect(() => {\r\n\t\tconst abortController = new AbortController();\r\n\t\tconst signal = abortController.signal;\r\n\r\n\t\tfetcher(signal, method, route, content).then((res) => setResponse(res));\r\n\r\n\t\treturn () => abortController.abort();\r\n\t}, [method, route, content]);\r\n\r\n\treturn response;\r\n};\r\n\r\nexport default useFetch;\r\n","import { Button, IconButton, Snackbar } from \"@material-ui/core\";\r\nimport { Close as CloseIcon } from \"@material-ui/icons\";\r\nimport { Alert } from \"@material-ui/lab\";\r\nimport { useSnackbar } from \"material-ui-snackbar-provider\";\r\nimport PropTypes from \"prop-types\";\r\nimport React from \"react\";\r\n\r\nexport function CustomSnackbar({\r\n\tmessage,\r\n\taction,\r\n\tButtonProps,\r\n\tSnackbarProps,\r\n\tcustomParameters\r\n}) {\r\n\treturn (\r\n\t\t\r\n\t\t\t\t\t{action != null && (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t>\r\n\t\t\t\r\n\t\t\t\t{message}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\nCustomSnackbar.propTypes = {\r\n\tmessage: PropTypes.string,\r\n\taction: PropTypes.string,\r\n\tButtonProps: PropTypes.object,\r\n\tSnackbarProps: PropTypes.object,\r\n\tcustomParameters: PropTypes.shape({\r\n\t\ttype: PropTypes.oneOf([\"error\", \"warning\", \"info\", \"success\"])\r\n\t})\r\n};\r\n\r\nexport function useCustomSnackbar() {\r\n\tconst snackbar = useSnackbar();\r\n\r\n\treturn React.useMemo(() => {\r\n\t\tconst showMessage = type => (\r\n\t\t\tmessage,\r\n\t\t\taction,\r\n\t\t\thandleAction,\r\n\t\t\tcustomParameters\r\n\t\t) =>\r\n\t\t\tsnackbar.showMessage(message, action, handleAction, {\r\n\t\t\t\t...customParameters,\r\n\t\t\t\ttype\r\n\t\t\t});\r\n\t\treturn {\r\n\t\t\t...snackbar,\r\n\t\t\tshowMessage: showMessage(\"info\"),\r\n\t\t\tshowInfo: showMessage(\"info\"),\r\n\t\t\tshowWarning: showMessage(\"warning\"),\r\n\t\t\tshowError: showMessage(\"error\"),\r\n\t\t\tshowSuccess: showMessage(\"success\")\r\n\t\t};\r\n\t}, [snackbar]);\r\n}\r\n","// Déclaration statique de tout les fichiers JSON pour que le compilateur React les mettent dans le bundle final\r\n\r\nimport LangActivityAccountEntry from './LangActivityAccountEntry.json';\r\nimport LangActivityReport from './LangActivityReport.json';\r\nimport LangCharge from './LangCharge.json';\r\nimport LangCommercialAgreement from './LangCommercialAgreement.json';\r\nimport LangContact from './LangContact.json';\r\nimport LangContractor from './LangContractor.json';\r\nimport LangContracts from './LangContracts.json';\r\nimport LangCustomer from './LangCustomer.json';\r\nimport LangCustomerAccountEntry from './LangCustomerAccountEntry.json';\r\nimport LangDashboard from './LangDashboard.json';\r\nimport LangGeneral from './LangGeneral.json';\r\nimport LangInfraAccess from './LangInfraAccess.json';\r\nimport LangInvoiceCreditNotes from './LangInvoiceCreditNotes.json';\r\nimport LangInvoiceRequest from './LangInvoiceRequest.json';\r\nimport LangLogin from './LangLogin.json';\r\nimport LangRecurrentInvoice from './LangRecurrentInvoice.json';\r\nimport LangSalesInvoiced from './LangSalesInvoiced.json';\r\nimport LangSettings from './LangSettings.json';\r\nimport LangTasks from './LangTasks.json';\r\nimport LangTickets from './LangTickets.json';\r\nimport LangTicketsCategory from './LangTicketsCategory.json';\r\nimport LangTraining from './LangTraining.json';\r\nimport LangWage from './LangWage.json';\r\nimport LangWorkContract from './LangWorkContract.json';\r\nimport LangServicePrices from './LangServicePrices.json';\r\nimport LangProductSheets from './LangProductSheets.json';\r\n\r\nexport default {\r\n\tlangs: {\r\n\t\tFRA: 'fr',\r\n\t\tENU: 'en'\r\n\t},\r\n\tresources: [\r\n\t\tLangActivityAccountEntry,\r\n\t\tLangActivityReport,\r\n\t\tLangCharge,\r\n\t\tLangCommercialAgreement,\r\n\t\tLangContact,\r\n\t\tLangContractor,\r\n\t\tLangContracts,\r\n\t\tLangCustomer,\r\n\t\tLangCustomerAccountEntry,\r\n\t\tLangDashboard,\r\n\t\tLangGeneral,\r\n\t\tLangInfraAccess,\r\n\t\tLangInvoiceCreditNotes,\r\n\t\tLangInvoiceRequest,\r\n\t\tLangLogin,\r\n\t\tLangRecurrentInvoice,\r\n\t\tLangSalesInvoiced,\r\n\t\tLangSettings,\r\n\t\tLangTasks,\r\n\t\tLangTickets,\r\n\t\tLangTicketsCategory,\r\n\t\tLangTraining,\r\n\t\tLangWage,\r\n\t\tLangWorkContract,\r\n\t\tLangServicePrices,\r\n\t\tLangProductSheets,\r\n\t]\r\n};\r\n","import i18n from \"i18next\";\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport imports from './imports';\r\nimport translations from \"./translations.json\";\r\n\r\nconst debugDuplicateStrings = false;\r\nconst debugSpecificString = undefined;\r\n\r\n// Import des ressources de traduction de CWA\r\n// !! Si des clés de traduction sont en doublon dans les imports, seule la dernière rencontrés est conservée\r\n// !! Si des clés de traduction sont en doublon entre les traductions de ce projet et les imports, les imports prennent le dessus\r\nconst compileImports = (imports, res) => {\r\n\tconst langs = imports.langs;\r\n\r\n\tfor (const key in imports.resources) {\r\n\t\tconst dict = imports.resources[key];\r\n\r\n\t\tfor (const translationKey in dict.Translations) {\r\n\t\t\tconst elem = dict.Translations[translationKey];\r\n\r\n\t\t\tfor (const langKey in langs) {\r\n\t\t\t\tconst translation = elem[langKey];\r\n\r\n\t\t\t\tif (debugDuplicateStrings &&\r\n\t\t\t\t\tres[langs[langKey]].translation[translationKey] !== undefined &&\r\n\t\t\t\t\tres[langs[langKey]].translation[translationKey] !== translation) {\r\n\t\t\t\t\tconsole.log(`\"${translationKey}\"\\nAvant :\\n\\t\"${res[langs[langKey]].translation[translationKey]}\"\\nAprès :\\n\\t\"${translation}\"`);\r\n\t\t\t\t} else if (translationKey.toLowerCase().includes(debugSpecificString)) {\r\n\t\t\t\t\tconsole.log(`\"${translationKey}\"\\nAvant :\\n\\t\"${res[langs[langKey]].translation[translationKey]}\"\\nAprès :\\n\\t\"${translation}\"`);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tres[langs[langKey]].translation[translationKey] = translation;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn res;\r\n};\r\n\r\ni18n\r\n\t.use(LanguageDetector)\r\n\t.use(initReactI18next)\r\n\t.init({\r\n\t\tresources: compileImports(imports, translations),\r\n\t\tfallbackLng: 'fr',\r\n\r\n\t\tinterpolation: {\r\n\t\t\tescapeValue: false,\r\n\t\t}\r\n\t});\r\n\r\nexport default i18n;\r\n","// https://gist.github.com/beaucharman/1f93fdd7c72860736643d1ab274fee1a\r\nexport default function debounce(callback, wait, immediate = false) {\r\n\tlet timeout = null;\r\n\r\n\treturn function() {\r\n\t\tconst callNow = immediate && !timeout;\r\n\t\tconst next = () => callback.apply(this, arguments);\r\n\r\n\t\tclearTimeout(timeout);\r\n\t\ttimeout = setTimeout(next, wait);\r\n\r\n\t\tif (callNow) next();\r\n\t}\r\n}\r\n","import { TableCell, TableHead, TableRow, TableSortLabel } from \"@material-ui/core\";\r\nimport React from \"react\";\r\n\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nfunction EnhancedTableHead(props) {\r\n\tconst { order, orderBy, onRequestSort, headCells } = props;\r\n\tconst createSortHandler = (property) => (event) => {\r\n\t\tonRequestSort(event, property);\r\n\t};\r\n\r\n\tconst { t } = useTranslation();\r\n\r\n\tconst PascalToKebab = (str) =>\r\n\t\tstr\r\n\t\t\t.trim()\r\n\t\t\t.split(/(?=[A-Z])/)\r\n\t\t\t.join(\"-\")\r\n\t\t\t.toLowerCase();\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{headCells.map((headCell) =>\r\n\t\t\t\t\theadCell?.active ?? true ? (\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{t(PascalToKebab(headCell.id))}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t) : null\r\n\t\t\t\t)}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default EnhancedTableHead;\r\n","import React from \"react\";\r\nimport ReactExport from \"react-export-excel\";\r\n\r\nimport {\r\n IconButton,\r\n Tooltip\r\n} from \"@material-ui/core\";\r\n\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nimport * as Icon from \"react-feather\";\r\n\r\n\r\nconst ExcelFile = ReactExport.ExcelFile;\r\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\n\r\nexport default function ExportExcel(props) {\r\n const { t } = useTranslation();\r\n \r\n const TrimId = str => str.trim().split(/(?=[A-Z])/).join('-').toLowerCase();\r\n\r\n\r\n const {values, headers, title} = props;\r\n return (\r\n \r\n }>\r\n \r\n {headers.filter(item => {\r\n if(item.id !== \"\" && item.active === true ){\r\n return item;\r\n }\r\n return false;\r\n }).map(header => {\r\n if(header.id === \"LinkedContractor\"){\r\n return col.LinkedContractor.FirstName + \" \" + col.LinkedContractor.LastName}/>\r\n } else if (header.id === \"CAStatus\"){\r\n return {\r\n let value = \"\";\r\n switch(col.CAStatus){\r\n case 0:\r\n value = t('status-initialized');\r\n break;\r\n case 1:\r\n value = t('status-sent');\r\n break;\r\n case 2:\r\n value = t('status-active');\r\n break;\r\n case 3:\r\n value = t('status-extended');\r\n break;\r\n case 4:\r\n value = t('status-end');\r\n break;\r\n case 5:\r\n value = t('status-done');\r\n break;\r\n case 6:\r\n value = t('status-monitor');\r\n break;\r\n default:\r\n console.log(\"Wrong value in CAStatus\");\r\n }\r\n return value;\r\n }}/>\r\n }else if(header.id === \"ContractOwnerFirstName\"){\r\n return { \r\n if(col.ContractOwnerFirstName !== null){\r\n return col.ContractOwnerFirstName + \" \" + col.ContractOwnerLastName;\r\n }else{\r\n return \"\";\r\n }\r\n }}/>\r\n }else if(header.id.includes(\"Date\")){\r\n return { \r\n return new Date(col[header.id]).toLocaleDateString();\r\n }}/>\r\n }\r\n else if(header.id === \"ContractorFirstName\"){\r\n return {\r\n return col.ContractorLastName + \" \" + col.ContractorFirstName;\r\n }}/>\r\n }\r\n else{\r\n return \r\n }\r\n })}\r\n \r\n \r\n \r\n );\r\n}","import React, { useState } from \"react\";\r\nimport styled from \"styled-components\";\r\n\r\nimport {\r\n Input, \r\n InputLabel,\r\n IconButton\r\n} from \"@material-ui/core\";\r\n\r\n\r\nimport {\r\n Search as MuiSearchIcon\r\n} from \"@material-ui/icons\";\r\n\r\nconst SearchIcon = styled(MuiSearchIcon)`\r\n vertical-align: middle;\r\n`\r\n\r\n\r\nfunction Search(props){\r\n const {searchFilterChanging} = props;\r\n const [searchShowing, setSearchShowing] = useState(false);\r\n // const [focused, setFocused] = useState(false);\r\n const [searchFilter, setSearchFilter] = useState(\"\");\r\n\r\n const handleFilterChanging = (value) => {\r\n setSearchFilter(value);\r\n searchFilterChanging(value);\r\n }\r\n\r\n const handleButtonClick = () => {\r\n setSearchShowing(!searchShowing);\r\n } \r\n const onEscape = () => {\r\n setSearchShowing(!searchShowing);\r\n setSearchFilter(\"\");\r\n searchFilterChanging(\"\");\r\n } \r\n \r\n const handleFocusLost = () => {\r\n if(searchFilter === \"\"){\r\n setSearchShowing(false);\r\n }\r\n }\r\n\r\n return(\r\n <>\r\n \r\n \r\n \r\n \r\n {searchShowing ? \r\n e.key === \"Escape\" && onEscape()}\r\n value={searchFilter} \r\n onChange={e => handleFilterChanging(e.target.value)}/> : null }\r\n \r\n \r\n )\r\n}\r\n\r\n\r\nexport default Search;","export const _arrayBufferToBase64 = ( buffer ) => {\r\n\tvar binary = '';\r\n\tvar bytes = new Uint8Array( buffer );\r\n\tvar len = bytes.byteLength;\r\n\tfor (var i = 0; i < len; i++) {\r\n\t\t\tbinary += String.fromCharCode( bytes[ i ] );\r\n\t}\r\n\treturn window.btoa( binary );\r\n}\r\n","import { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { faCircle as farCircle } from '@fortawesome/free-regular-svg-icons';\r\nimport { faAdjust, faCircle as fasCircle } from '@fortawesome/free-solid-svg-icons';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { Chip } from '@material-ui/core';\r\nimport { blue, green, orange, red } from \"@material-ui/core/colors\";\r\nimport {\r\n\tNotificationImportant as EmergencyIcon,\r\n\tRadioButtonChecked as BlockingIcon\r\n} from '@material-ui/icons';\r\nimport React from 'react';\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\n\r\nlibrary.add(fasCircle, farCircle, faAdjust);\r\n\r\nexport default function PriorityChip(props) {\r\n\tconst { t } = useTranslation();\r\n\tconst { priority, ...rest } = props;\r\n\tlet color = {};\r\n\r\n\tif (priority === undefined || priority === \"\")\r\n\t\treturn null;\r\n\r\n\tswitch(priority) {\r\n\t\tcase 0: case \"Low\": color.color = blue[500], color.borderColor = blue[500]; break;\r\n\t\tcase 1: case \"Normal\": color.color = green[800], color.borderColor = green[800]; break;\r\n\t\tcase 2: case \"High\": color.color = orange[500], color.borderColor = orange[500]; break;\r\n\t\tcase 3: case \"Emergency\": color.color = red[500], color.borderColor = red[500]; break;\r\n\t\tcase 4: case \"Blocking\": color.color = red[700], color.borderColor = red[700]; break;\r\n\t}\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tswitch(priority) {\r\n\t\t\t\t\tcase 0: case \"Low\": return ();\r\n\t\t\t\t\tcase 1: case \"Normal\": return ();\r\n\t\t\t\t\tcase 2: case \"High\": return ();\r\n\t\t\t\t\tcase 3: case \"Emergency\": return ();\r\n\t\t\t\t\tcase 4: case \"Blocking\": return ();\r\n\t\t\t\t\tdefault: console.warn(`Unhandled priority \"${priority}\" in PriorityChip.js!`);\r\n\t\t\t\t}\r\n\t\t\t})()}\r\n\t\t\tlabel={(() => {\r\n\t\t\t\tswitch(priority) {\r\n\t\t\t\t\tcase 0: case \"Low\": return t('priority-low');\r\n\t\t\t\t\tcase 1: case \"Normal\": return t('priority-normal');\r\n\t\t\t\t\tcase 2: case \"High\": return t('priority-high');\r\n\t\t\t\t\tcase 3: case \"Emergency\": return t('priority-emergency');\r\n\t\t\t\t\tcase 4: case \"Blocking\": return t('priority-blocking');\r\n\t\t\t\t\tdefault: console.warn(`Unhandled priority \"${priority}\" in PriorityChip.js!`);\r\n\t\t\t\t}\r\n\t\t\t})()}\r\n\t\t>\r\n\t);\r\n}\r\n","export const SET_THEME = \"SET_THEME\";\r\nexport const SET_TASKS_HEAD_CELLS = \"SET_TASKS_HEAD_CELLS\";\r\nexport const SET_TICKETS_HEAD_CELLS = \"SET_TICKETS_HEAD_CELLS\";\r\nexport const SET_RECURRENT_INVOICES_HEAD_CELLS =\r\n\t\"SET_RECURRENT_INVOICES_HEAD_CELLS\";\r\nexport const SET_INVOICE_CREDIT_HEAD_CELLS = \"SET_INVOICE_CREDIT_HEAD_CELLS\";\r\nexport const SET_CUSTOMER_ACCOUNT_HEAD_CELLS =\r\n\t\"SET_CUSTOMER_ACCOUNT_HEAD_CELLS\";\r\nexport const SET_CONTRACT_HEAD_CELLS = \"SET_CONTRACT_HEAD_CELLS\";\r\nexport const SET_PRODUCT_SHEETS_HEAD_CELLS = \"SET_PRODUCT_SHEETS_HEAD_CELLS\";\r\nexport const SET_SERVICE_PRICES_HEAD_CELLS = \"SET_SERVICE_PRICES_HEAD_CELLS\";\r\nexport const SET_ROWS_PER_PAGE = \"SET_ROWS_PER_PAGE\";\r\n","import { Chip } from '@material-ui/core';\r\nimport { blue, green, grey, orange, red } from \"@material-ui/core/colors\";\r\nimport React from 'react';\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nexport default function StatusChip(props) {\r\n\tconst { t } = useTranslation();\r\n\tconst { status, ...rest } = props;\r\n\tlet color = { background: \"\", color: \"#FFF\" };\r\n\r\n\tif (status === undefined || status === \"\")\r\n\t\treturn null;\r\n\r\n\tswitch(status) {\r\n\t\tcase 0: case \"Draft_copy\": color.background = grey[700]; break;\r\n\t\tcase 1: case \"Open\": color.background = blue[500]; break;\r\n\t\tcase 2: case \"Pending\": color.background = green[500]; break;\r\n\t\tcase 3: case \"In_Progress\": color.background = orange[500]; break;\r\n\t\tcase 4: case \"Closed\": color.color = grey[600]; break;\r\n\t\tcase 5: case \"Improvement\": color.background = red[500]; break;\r\n\t\tdefault:\r\n\t\t\tcolor.background = \" white\";\r\n\t\t\tconsole.warn(`Unhandled status \"${status}\" in StatusChip.js!`);\r\n\t}\r\n\r\n\treturn (\r\n\t\t {\r\n\t\t\t\tswitch(status) {\r\n\t\t\t\t\tcase 0: case \"Draft_copy\": return t('ticket-draft_copy');\r\n\t\t\t\t\tcase 1: case \"Open\": return t('ticket-open');\r\n\t\t\t\t\tcase 2: case \"Pending\": return t('ticket-pending');\r\n\t\t\t\t\tcase 3: case \"In_Progress\": return t('ticket-in_progress');\r\n\t\t\t\t\tcase 4: case \"Closed\": return t('ticket-closed');\r\n\t\t\t\t\tcase 5: case \"Improvement\": return t('ticket-improvement');\r\n\t\t\t\t\tdefault: console.warn(`Unhandled status \"${status}\" in StatusChip.js!`);\r\n\t\t\t\t}\r\n\t\t\t})()}\r\n\t\t\tvariant={status === \"Closed\" ? \"outlined\" : \"default\"}\r\n\t\t>\r\n\t);\r\n}\r\n","import { Button, CircularProgress, IconButton as MuiIconButton } from \"@material-ui/core\";\r\nimport PropTypes from \"prop-types\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\nimport Tooltip from \"./Tooltip\";\r\n\r\nconst ButtonNoText = styled(Button)`\r\n\t& .MuiButton-startIcon,\r\n\t& .MuiButton-endIcon {\r\n\t\tmargin: 0 auto;\r\n\t}\r\n`;\r\n\r\nexport const LoadingButton = React.forwardRef((props, ref) => {\r\n\t// On ne récupère que ce dont on à besoins\r\n\tconst { loading, ...rest } = props;\r\n\tlet { iconPosition, ...buttonProps } = rest;\r\n\tlet endIcon, startIcon;\r\n\r\n\tif (iconPosition === \"end\") {\r\n\t\tendIcon = loading ? : null;\r\n\t} else {\r\n\t\tstartIcon = loading ? : null;\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t);\r\n});\r\n\r\nexport const LoadingButtonWithIcon = React.forwardRef((props, ref) => {\r\n\t// On ne récupère que ce dont on à besoins\r\n\tconst { loading, icon, ...rest } = props;\r\n\tlet { iconPosition, startIcon, endIcon, ...buttonProps } = rest;\r\n\r\n\tif (iconPosition === \"end\") {\r\n\t\tendIcon = loading ? : icon;\r\n\t} else {\r\n\t\tstartIcon = loading ? : icon;\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t);\r\n});\r\n\r\nexport const LoadingIconButton = React.forwardRef((props, ref) => {\r\n\t// On ne récupère que ce dont on à besoins\r\n\t// Si l'IconButton fait parti d'un ButtonGroup, la prop fullWidth est automatiquement assigné à faux,\r\n\t// ce qui génère une erreur dans la console. Pour la supprimer, il sufft de ne pas tenir compte de cette prop\r\n\tconst { loading, icon, title, fullWidth, ...rest } = props; // eslint-disable-line no-unused-vars\r\n\r\n\tlet loadingIcon = loading ? : icon;\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{loadingIcon}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n});\r\n\r\nexport const IconButton = React.forwardRef((props, ref) => {\r\n\t// On ne récupère que ce dont on à besoins\r\n\t// Si l'IconButton fait parti d'un ButtonGroup, la prop fullWidth est automatiquement assigné à faux,\r\n\t// ce qui génère une erreur dans la console. Pour la supprimer, il sufft de ne pas tenir compte de cette prop\r\n\tconst { icon, title, fullWidth, ...rest } = props; // eslint-disable-line no-unused-vars\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t{icon}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n});\r\n\r\nexport const ButtonWithIcon = React.forwardRef((props, ref) => {\r\n\t// On ne récupère que ce dont on à besoins\r\n\tconst { icon, ...rest } = props;\r\n\tlet { iconPosition, startIcon, endIcon, ...buttonProps } = rest;\r\n\r\n\tif (iconPosition === \"end\") {\r\n\t\tendIcon = icon;\r\n\t} else {\r\n\t\tstartIcon = icon;\r\n\t}\r\n\r\n\treturn ;\r\n});\r\n\r\nLoadingButton.propTypes = {\r\n\tloading: PropTypes.bool.isRequired,\r\n\ticonPosition: PropTypes.oneOf([\"start\", \"end\"]),\r\n\t...Button.propTypes,\r\n};\r\nLoadingButton.defaultProps = {\r\n\ticonPosition: \"start\",\r\n};\r\n\r\nLoadingButtonWithIcon.propTypes = {\r\n\tloading: PropTypes.bool.isRequired,\r\n\ticon: PropTypes.node.isRequired,\r\n\ticonPosition: PropTypes.oneOf([\"start\", \"end\"]),\r\n\t...Button.propTypes,\r\n};\r\nLoadingButtonWithIcon.defaultProps = {\r\n\ticonPosition: \"start\",\r\n};\r\n\r\nButtonWithIcon.propTypes = {\r\n\ticon: PropTypes.node.isRequired,\r\n\ticonPosition: PropTypes.oneOf([\"start\", \"end\"]),\r\n\t...Button.propTypes,\r\n};\r\nButtonWithIcon.defaultProps = {\r\n\ticonPosition: \"start\",\r\n};\r\n\r\nLoadingIconButton.propTypes = {\r\n\tloading: PropTypes.bool.isRequired,\r\n\ticon: PropTypes.node.isRequired,\r\n\ttitle: PropTypes.node.isRequired,\r\n\t...IconButton.propTypes,\r\n};\r\nIconButton.propTypes = {\r\n\ticon: PropTypes.node.isRequired,\r\n\ttitle: PropTypes.node.isRequired,\r\n\t...IconButton.propTypes,\r\n};\r\n","import React from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport styled from \"styled-components\";\r\n\r\nimport Helmet from \"react-helmet\";\r\n\r\nimport { Button as MuiButton, Typography } from \"@material-ui/core\";\r\nimport { spacing } from \"@material-ui/system\";\r\n\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst Button = styled(MuiButton)(spacing);\r\n\r\nconst Wrapper = styled.div`\r\n\tpadding: ${(props) => props.theme.spacing(6)}px;\r\n\ttext-align: center;\r\n\tbackground: transparent;\r\n\r\n\t${(props) => props.theme.breakpoints.up(\"md\")} {\r\n\t\tpadding: ${(props) => props.theme.spacing(10)}px;\r\n\t}\r\n`;\r\n\r\nfunction Page404() {\r\n\tconst history = useHistory();\r\n\r\n\tconst { t } = useTranslation();\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{\"404\"}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{t(\"not-found\")}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t{t(\"not-found-p\")}\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default Page404;\r\n","import { Box } from \"@material-ui/core\";\r\nimport { _arrayBufferToBase64 } from \"api/files\";\r\nimport { DropzoneArea } from \"material-ui-dropzone\";\r\nimport React, { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nfunction ChooseFile({ fileToUpload, setFileToUpload }) {\r\n\tconst { t } = useTranslation();\r\n\tconst [uploadLoading, setUploadLoading] = useState(false);\r\n\r\n\tfunction checkFileType(acceptedFiles, file) {\r\n\t\tconst fileType = file.type;\r\n\t\treturn acceptedFiles.some((acceptedType) => {\r\n\t\t\tconst acceptedTypeRegex = new RegExp(acceptedType.replace(\"*\", \".*\"), \"i\");\r\n\t\t\treturn acceptedTypeRegex.test(fileType);\r\n\t\t});\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t `Fichier ${fileName} ajouté avec succès.`}\r\n\t\t\t\tgetFileRemovedMessage={(fileName) => `Fichier ${fileName} supprimé.`}\r\n\t\t\t\tgetFileLimitExceedMessage={(filesLimit) =>\r\n\t\t\t\t\t`Trop de fichiers sélectionnés, seulement ${filesLimit} autorisé`\r\n\t\t\t\t}\r\n\t\t\t\tgetDropRejectMessage={(rejectedFile, acceptedFiles, maxFileSize) => {\r\n\t\t\t\t\tconsole.log({ rejectedFile, acceptedFiles, maxFileSize });\r\n\r\n\t\t\t\t\tif (rejectedFile.size > maxFileSize)\r\n\t\t\t\t\t\treturn `Le fichier ${rejectedFile.name} est trop volumineux.`;\r\n\t\t\t\t\telse if (!checkFileType(acceptedFiles, rejectedFile))\r\n\t\t\t\t\t\treturn `Le fichier ${rejectedFile.name} n'est pas au bon format.`;\r\n\t\t\t\t\telse return `Le fichier ${rejectedFile.name} à été rejeté.`;\r\n\t\t\t\t}}\r\n\t\t\t\tonChange={(files) => {\r\n\t\t\t\t\tif (files.length !== 1) {\r\n\t\t\t\t\t\tsetFileToUpload({ ...fileToUpload, Name: \"\", Bytes: \"\" });\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst { name } = files[0];\r\n\r\n\t\t\t\t\tconst reader = new FileReader();\r\n\t\t\t\t\treader.onload = function (event) {\r\n\t\t\t\t\t\tconst bytes = _arrayBufferToBase64(event.target.result);\r\n\t\t\t\t\t\tsetFileToUpload({\r\n\t\t\t\t\t\t\t...fileToUpload,\r\n\t\t\t\t\t\t\tName: name,\r\n\t\t\t\t\t\t\tBytes: bytes,\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tsetUploadLoading(false);\r\n\t\t\t\t\t};\r\n\t\t\t\t\treader.readAsArrayBuffer(files[0]);\r\n\t\t\t\t\tsetUploadLoading(true);\r\n\t\t\t\t}}\r\n\t\t\t/>\r\n\t\t\t{uploadLoading &&
Loading...
}\r\n\t\t
\r\n\t);\r\n}\r\n\r\nexport default ChooseFile;\r\n","import {\r\n\tCheckbox,\r\n\tDialog,\r\n\tDialogActions,\r\n\tDialogContent,\r\n\tDialogTitle,\r\n\tFormControlLabel,\r\n\tFormGroup,\r\n\tIconButton,\r\n\tInput,\r\n\tInputLabel,\r\n\tMenuItem,\r\n\tButton as MuiButton,\r\n\tDivider as MuiDivider,\r\n\tGrid as MuiGrid,\r\n\tPaper,\r\n\tSelect,\r\n\tTable,\r\n\tTableBody,\r\n\tTableCell,\r\n\tTableContainer,\r\n\tTablePagination,\r\n\tTableRow,\r\n\tTextField,\r\n\tToolbar,\r\n\tTooltip,\r\n\tTypography,\r\n} from \"@material-ui/core\";\r\nimport { blue, green, orange, red } from \"@material-ui/core/colors\";\r\nimport { Add, Settings as SettingsIcon } from \"@material-ui/icons\";\r\nimport { Alert, Skeleton } from \"@material-ui/lab\";\r\nimport { withStyles } from \"@material-ui/styles\";\r\nimport { spacing } from \"@material-ui/system\";\r\nimport { LoadingButton } from \"pages/components/Buttons\";\r\nimport ChooseFile from \"pages/components/ChooseFile\";\r\nimport { useCustomSnackbar } from \"pages/components/Snackbar\";\r\nimport React, { useCallback, useEffect, useState } from \"react\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport styled from \"styled-components\";\r\nimport debounce from \"../../api/debounce\";\r\nimport { fetcher, default as useFetch } from \"../../api/fetcher\";\r\nimport * as types from \"../../redux/constants\";\r\nimport variants from \"../../theme/variants\";\r\nimport EnhancedTableHead from \"../components/EnhancedTableHead\";\r\nimport ExportExcel from \"../components/ExportToExcel\";\r\nimport PriorityChip from \"../components/PriorityChip\";\r\nimport Search from \"../components/Search\";\r\nimport StatusChip from \"../components/StatusChip\";\r\n\r\nconst ToolbarTitle = styled.div`\r\n\tmin-width: 150px;\r\n`;\r\n\r\nconst Spacer = styled.div`\r\n\tflex: 1 1 20%;\r\n`;\r\n\r\nconst Divider = styled(MuiDivider)(spacing);\r\nconst Button = styled(MuiButton)(spacing);\r\nconst Grid = styled(MuiGrid)(spacing);\r\n\r\nconst StyledTableRow = withStyles((theme) => ({\r\n\troot: {\r\n\t\t\"&:nth-of-type(odd)\": {\r\n\t\t\tbackgroundColor: theme.palette.action.hover,\r\n\t\t},\r\n\t},\r\n}))(TableRow);\r\n\r\nfunction descendingComparator(a, b, orderBy) {\r\n\tif (b[orderBy] === undefined) return 0;\r\n\r\n\tif (typeof a[orderBy] !== \"string\" && typeof a[orderBy] !== \"number\" && a[orderBy] !== null) {\r\n\t\tif (b[orderBy].FirstName < a[orderBy].FirstName) return -1;\r\n\t\tif (b[orderBy].FirstName > a[orderBy].FirstName) return 1;\r\n\t} else {\r\n\t\tlet valueA = a[orderBy],\r\n\t\t\tvalueB = b[orderBy];\r\n\r\n\t\tif (a[orderBy] === null) valueA = \"\";\r\n\t\telse if (b[orderBy] === null) valueB = \"\";\r\n\t\tif (valueB < valueA) return -1;\r\n\t\tif (valueB > valueA) return 1;\r\n\t}\r\n\r\n\treturn 0;\r\n}\r\n\r\nfunction getComparator(order, orderBy) {\r\n\treturn order === \"desc\" ? (a, b) => descendingComparator(a, b, orderBy) : (a, b) => -descendingComparator(a, b, orderBy);\r\n}\r\n\r\nfunction stableSort(array, comparator) {\r\n\tif (!Array.isArray(array)) return [];\r\n\r\n\tconst stabilizedThis = array.map((el, index) => [el, index]);\r\n\tstabilizedThis.sort((a, b) => {\r\n\t\tconst order = comparator(a[0], b[0]);\r\n\t\tif (order !== 0) return order;\r\n\t\treturn a[1] - b[1];\r\n\t});\r\n\treturn stabilizedThis.map((el) => el[0]);\r\n}\r\n\r\nfunction TableColumnPicker(props) {\r\n\tconst { headCells, headCellsHandler } = props;\r\n\tconst { t } = useTranslation();\r\n\r\n\t// Récupération automatique de la traduction selon l'id\r\n\tconst trad = (key) =>\r\n\t\tt(\r\n\t\t\tkey\r\n\t\t\t\t.trim()\r\n\t\t\t\t.split(/(?=[A-Z])/)\r\n\t\t\t\t.join(\"-\")\r\n\t\t\t\t.toLowerCase()\r\n\t\t);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{headCells.map((headCell) =>\r\n\t\t\t\theadCell.id !== \"\" ? (\r\n\t\t\t\t\t}\r\n\t\t\t\t\t/>\r\n\t\t\t\t) : null\r\n\t\t\t)}\r\n\t\t\r\n\t);\r\n}\r\n\r\nfunction CustomCheckBox(props) {\r\n\tconst { headCell, updateHandler } = props;\r\n\tconst [isActive, setIsActive] = useState(headCell.active);\r\n\r\n\tconst handleChange = () => {\r\n\t\theadCell.active = !isActive;\r\n\t\tsetIsActive(headCell.active);\r\n\t\tupdateHandler();\r\n\t};\r\n\r\n\treturn ;\r\n}\r\n\r\nfunction EnhancedTable({ rows, pathname }) {\r\n\tconst [order, setOrder] = useState(\"desc\");\r\n\tconst [orderBy, setOrderBy] = useState(\"CreationDate\");\r\n\tconst [page, setPage] = useState(0);\r\n\tconst [searchFilteredRows, setSearchFilteredRows] = useState();\r\n\tconst [dialog, setDialog] = useState(false);\r\n\r\n\tconst { t } = useTranslation();\r\n\r\n\t// Les méthodes Redux se substituent aux methodes du useState pour conserver une compatibilité\r\n\t// avec les composants qui y font réference (EnhancedTable)\r\n\t// [headCells, setHeadCells] est remplacé par un 'state Redux', il est initialisé par le 'reducer'\r\n\tconst dispatch = useDispatch();\r\n\tconst setHeadCells = (cells) => dispatch({ type: types.SET_TICKETS_HEAD_CELLS, payload: cells });\r\n\tconst headCells = useSelector((state) => state.ticketsHeadCellsReducer);\r\n\t// const [headCells, setHeadCells] = useState([\r\n\t// \t{ id: 'No', alignment: 'left', active:true },\r\n\t// \t{ id: 'Category', alignment: 'left', active:true },\r\n\t// \t{ id: 'Title', alignment: 'left', active:true },\r\n\t// \t{ id: 'CreationDate', alignment: 'left', active:true },\r\n\t// \t{ id: 'Priority', alignment: 'left', active:true },\r\n\t// \t{ id: 'Status', alignment: 'left', active:true },\r\n\t// \t{ id: 'ContactName', alignment: 'left', active:true },\r\n\t// \t{ id: 'AssignedTo', alignment: 'left', active:true },\r\n\t// ]);\r\n\r\n\t// const [rowsPerPage, setRowsPerPage] = useState(25);\r\n\t// implementation redux / redux-persist pour le nombre de lignes affichées\r\n\tconst rowsPerPage = useSelector((state) => state.rowsPerPageReducer);\r\n\tconst setRowsPerPage = (rows) => dispatch({ type: types.SET_ROWS_PER_PAGE, payload: rows });\r\n\r\n\tconst [filteredRows, setFilteredRows] = useState();\r\n\tconst [statusList] = useState([\r\n\t\t{\r\n\t\t\tid: 0,\r\n\t\t\tlabel: \"Draft_copy\",\r\n\t\t\tactive: pathname.length === 0 || pathname === \"/draft%20copy\" || pathname === \"/%3C%3Eclosed\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 1,\r\n\t\t\tlabel: \"Open\",\r\n\t\t\tactive: pathname.length === 0 || pathname === \"/open\" || pathname === \"/%3C%3Eclosed\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 2,\r\n\t\t\tlabel: \"Pending\",\r\n\t\t\tactive: pathname.length === 0 || pathname === \"/pending\" || pathname === \"/%3C%3Eclosed\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 3,\r\n\t\t\tlabel: \"In_Progress\",\r\n\t\t\tactive: pathname.length === 0 || pathname === \"/in%20progress\" || pathname === \"/%3C%3Eclosed\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 4,\r\n\t\t\tlabel: \"Closed\",\r\n\t\t\tactive: pathname.length === 0 || pathname === \"/closed\",\r\n\t\t},\r\n\t\t{\r\n\t\t\tid: 5,\r\n\t\t\tlabel: \"Improvement\",\r\n\t\t\tactive: pathname.length === 0 || pathname === \"/improvement\" || pathname === \"/%3C%3Eclosed\",\r\n\t\t},\r\n\t]);\r\n\r\n\tconst filterTicketsArray = useCallback(\r\n\t\t(array) => {\r\n\t\t\tif (!Array.isArray(array)) return [];\r\n\r\n\t\t\tconst filtered = array.filter((item) => {\r\n\t\t\t\tfor (let i = 0; i < statusList.length; i++) {\r\n\t\t\t\t\tif (\r\n\t\t\t\t\t\tstatusList[i].label === item.Status || // => Selon le label du status\r\n\t\t\t\t\t\tstatusList[i].id === item.Status\r\n\t\t\t\t\t)\r\n\t\t\t\t\t\t// => Selon ID de l'enum\r\n\t\t\t\t\t\treturn statusList[i][\"active\"];\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t});\r\n\r\n\t\t\treturn filtered;\r\n\t\t},\r\n\t\t[statusList]\r\n\t);\r\n\r\n\tfunction handleSearchFilterChanging(filter) {\r\n\t\tlet filteredArray = rows?.tickets?.filter((row) => {\r\n\t\t\tconst words = filter.split(\" \");\r\n\t\t\tlet found = true;\r\n\r\n\t\t\twords.forEach((word) => {\r\n\t\t\t\tif (word !== \"\") {\r\n\t\t\t\t\tlet search = row?.Title.toLowerCase() + row?.No.toLowerCase() + row.ContactName.toLowerCase() + row?.AssignedContactName.toLowerCase();\r\n\r\n\t\t\t\t\tif (!search.includes(word.toLowerCase())) found = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\treturn found;\r\n\t\t});\r\n\t\tsetSearchFilteredRows(filteredArray);\r\n\t}\r\n\r\n\tfunction isCellShowing(cellId) {\r\n\t\tfor (let i = 0; i < headCells.length; i++) {\r\n\t\t\tif (headCells[i][\"id\"] === cellId) return headCells[i][\"active\"];\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\tfunction handleTableHeadSettingsClick() {\r\n\t\tsetDialog(!dialog);\r\n\t}\r\n\r\n\tfunction handleHeadCellsChange() {\r\n\t\tsetHeadCells(headCells.map((item) => item));\r\n\t}\r\n\r\n\tfunction handleRequestSort(event, property) {\r\n\t\tconst isAsc = orderBy === property && order === \"asc\";\r\n\t\tsetOrder(isAsc ? \"desc\" : \"asc\");\r\n\t\tsetOrderBy(property);\r\n\t}\r\n\r\n\tfunction handleChangePage(event, newPage) {\r\n\t\tsetPage(newPage);\r\n\t}\r\n\r\n\tfunction handleChangeRowsPerPage(event) {\r\n\t\tsetRowsPerPage(parseInt(event.target.value, 10));\r\n\t\tsetPage(0);\r\n\t}\r\n\r\n\tif (searchFilteredRows === undefined && filteredRows === undefined && rows !== undefined) {\r\n\t\tsetFilteredRows(rows);\r\n\t\tsetSearchFilteredRows(rows);\r\n\t}\r\n\r\n\tuseEffect(() => {\r\n\t\tif (rows === undefined) return;\r\n\r\n\t\tsetFilteredRows(filterTicketsArray(rows?.tickets));\r\n\t\tsetSearchFilteredRows(filterTicketsArray(rows?.tickets));\r\n\r\n\t\t// console.log({ rows, filteredRows, searchFilteredRows, statusList });\r\n\t}, [rows, filterTicketsArray]);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{t(\"tickets\")}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{(() => {\r\n\t\t\t\t\t\t\t\tif (searchFilteredRows?.length > 0) {\r\n\t\t\t\t\t\t\t\t\treturn stableSort(searchFilteredRows, getComparator(order, orderBy))\r\n\t\t\t\t\t\t\t\t\t\t.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\r\n\t\t\t\t\t\t\t\t\t\t.map((row, index) => {\r\n\t\t\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\t\t {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tswitch (row?.Priority) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 0:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase \"Low\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \"inset -4px 0 0 4px white, inset 0 0 0 4px \" + blue[500],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 1:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase \"Normal\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \"inset -4px 0 0 4px white, inset 0 0 0 4px \" + green[800],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase \"High\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \"inset -4px 0 0 4px white, inset 0 0 0 4px \" + orange[500],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase \"Emergency\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \"inset -4px 0 0 4px white, inset 0 0 0 4px \" + red[500],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 4:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase \"Blocking\":\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tboxShadow: \"inset -4px 0 0 4px white, inset 0 0 0 4px \" + red[700],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.warn(`Unhandled priority \"${row?.Priority}\" in Tickets.js!`);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t})()}\r\n\t\t\t\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{isCellShowing(\"No\") ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{row.No}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{isCellShowing(\"Category\") ? {row?.Category} : null}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{isCellShowing(\"Title\") ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{row.Title}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{isCellShowing(\"CreationDate\") ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{(() => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet creationDate = new Date(row.CreationDate);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (creationDate.getTime() >= 0) return creationDate.toLocaleString();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\telse return null;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t})()}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{isCellShowing(\"Priority\") ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{isCellShowing(\"Status\") ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t) : null}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{isCellShowing(\"ContactName\") ? {row.ContactName} : null}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{isCellShowing(\"AssignedTo\") ? {row.AssignedContactName} : null}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t} else if (rows === undefined) {\r\n\t\t\t\t\t\t\t\t\treturn [...Array(rowsPerPage)].map((e, i) => (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t));\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{t(\"no-data\")}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t})()}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t setDialog(!dialog)}>\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{t(\"display-settings\")}\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n}\r\n\r\nfunction NewTicketDialog({ open, setOpen }) {\r\n\tconst { t } = useTranslation();\r\n\tconst snackbar = useCustomSnackbar();\r\n\tconst history = useHistory();\r\n\r\n\t// #region Annulation des requêtes fetch lors de la fin de vie du composant\r\n\tconst abortController = new AbortController();\r\n\tconst signal = abortController.signal;\r\n\r\n\tuseEffect(() => {\r\n\t\treturn () => abortController.abort();\r\n\t}, []); // eslint-disable-line react-hooks/exhaustive-deps\r\n\t// #endregion Annulation des requêtes fetch lors de la fin de vie du composant\r\n\r\n\t// Données de la requête\r\n\tconst [priorities, setPriorities] = useState();\r\n\tconst [categories, setCategories] = useState();\r\n\r\n\t// On ne fait la requête que quand le dialog est ouvert pour la première fois\r\n\tuseEffect(() => {\r\n\t\tif (open === true && priorities === undefined) {\r\n\t\t\tfetcher(signal, \"GET\", \"ticket/categories\")\r\n\t\t\t\t.then((data) => {\r\n\t\t\t\t\tsetPriorities(data?.priorities);\r\n\t\t\t\t\tsetCategories(data?.categories);\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t\tsnackbar.showError(t(\"errorDuringRequest\"));\r\n\t\t\t\t});\r\n\t\t}\r\n\t}, [open, priorities]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n\t// Ticket\r\n\tconst [newTicket, setNewTicket] = useState({\r\n\t\tTitle: \"\",\r\n\t\tCategory: { No: \"\", Description: \"\" },\r\n\t\tPriority: \"\",\r\n\t\tMessage: \"\",\r\n\t\tIsDraft: false,\r\n\t\t// Document\r\n\t\tName: \"\",\r\n\t\tBytes: \"\",\r\n\t});\r\n\r\n\tconst handleTicketChange = (prop) => (event) => {\r\n\t\tif (prop === \"IsDraft\") setNewTicket({ ...newTicket, IsDraft: !newTicket.IsDraft });\r\n\t\telse if (prop === \"Category\") {\r\n\t\t\tsetNewTicket({\r\n\t\t\t\t...newTicket,\r\n\t\t\t\tCategory: categories.find((obj) => obj.Code == event.target.value),\r\n\t\t\t});\r\n\t\t} else setNewTicket({ ...newTicket, [prop]: event.target.value });\r\n\t};\r\n\r\n\tconst handleTicketDialogClose = () => {\r\n\t\tsetOpen(false);\r\n\t};\r\n\r\n\tconst [loading, setLoading] = useState(false);\r\n\tconst handleTicketDialogValidateClick = () => {\r\n\t\tif (!validRequest()) {\r\n\t\t\tsnackbar.showError(\"Il manque des champs obligatoires !\");\r\n\t\t} else {\r\n\t\t\tlet route = newTicket.Bytes !== \"\" ? \"ticket/with-doc\" : \"ticket\";\r\n\r\n\t\t\tsetLoading(true);\r\n\t\t\tfetcher(undefined, \"POST\", route, {\r\n\t\t\t\t...newTicket,\r\n\t\t\t\tCategory: newTicket.Category.Code,\r\n\t\t\t})\r\n\t\t\t\t.then((data) => {\r\n\t\t\t\t\tif (data === 204) {\r\n\t\t\t\t\t\tsnackbar.showError(\"Échec de la création du ticket, veuillez réessayer après un bref délai.\");\r\n\t\t\t\t\t} else if (!!data?.ticketNo || data?.indexOf(\"TK\") === 0) {\r\n\t\t\t\t\t\tlet ticketNo = data?.ticketNo || data;\r\n\t\t\t\t\t\thistory.push(`/tickets/${ticketNo}${!!data?.message ? `?err=${data?.message}` : \"\"}`);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tsetOpen(false);\r\n\t\t\t\t})\r\n\t\t\t\t.catch((err) => {\r\n\t\t\t\t\tconsole.error(err);\r\n\t\t\t\t\tsnackbar.showError(`Une erreur est survenue lors de la requête : ${err.message}.`);\r\n\t\t\t\t})\r\n\t\t\t\t.finally(() => {\r\n\t\t\t\t\tsetLoading(false);\r\n\t\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tfunction validRequest() {\r\n\t\treturn (\r\n\t\t\t[newTicket.Title, newTicket.Category.Description, newTicket.Priority, newTicket.Message].indexOf(\"\") === -1 &&\r\n\t\t\ttypeof newTicket.IsDraft === \"boolean\"\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{t(\"ticket-create-dialog-title\")}\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{t(\"title\")}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{t(\"category\")}\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{(() => {\r\n\t\t\t\t\t\t\t\t\tif (Array.isArray(categories) && categories.length > 0) {\r\n\t\t\t\t\t\t\t\t\t\treturn categories.map((category, index) => (\r\n\t\t\t\t\t\t\t\t\t\t\t{`${category.Code} - ${category.Description}`}\r\n\t\t\t\t\t\t\t\t\t\t));\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\treturn ;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t})()}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t{t(\"priority\")}\r\n\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{\"Pour optimiser le traitement de votre demande, merci de joindre dans la mesure du possible des captures écrans et un cas concret avec \" +\r\n\t\t\t\t\t\t\t\t\t\"les éléments suivants :\\n\" +\r\n\t\t\t\t\t\t\t\t\t\"Documents concernées\\n\" +\r\n\t\t\t\t\t\t\t\t\t\"Résultat obtenu et/ou attendu\"}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tlabel={t(\"is-draft\")}\r\n\t\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{t(\"validate\")}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default function Tickets() {\r\n\tconst { t } = useTranslation();\r\n\r\n\t// Dialog de création d'un ticket\r\n\tconst [newTicketDialogOpen, setNewTicketDialogOpen] = useState(false);\r\n\r\n\t// Filtre de l'état selon l'URL\r\n\tconst pathname = location.pathname.replace(\"/tickets\", \"\"); // => \"/open\" || \"\"\r\n\tlet filter = \"\";\r\n\tif (pathname.indexOf(\"/\") === 0) filter = `?filter=${pathname.substring(1)}`;\r\n\r\n\t// Données du tableau et de la requête\r\n\tconst rows = useFetch(\"get\", `ticket${filter}`);\r\n\tconst [priorities, setPriorities] = useState([\"\"]);\r\n\tconst [categories, setCategories] = useState([{ No: 0 }]);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (rows !== undefined && rows !== 204) {\r\n\t\t\tsetPriorities(rows?.priorities);\r\n\t\t\tsetCategories(rows?.categories);\r\n\t\t}\r\n\t}, [rows]);\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{t(\"tickets\")}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\n// Boutton ouvrant un dialog de création de ticket, dédié à l'utilisation dans la \r\nexport const NewTicketButton = function () {\r\n\tconst { t } = useTranslation();\r\n\r\n\tconst [newTicketDialogOpen, setNewTicketDialogOpen] = useState(false);\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n};\r\n","// L'URL de l'API peut être modifiée dans le fichier public/config.js\r\nexport const API_URL = window.config.apiUrl;\r\n\r\n// Vérification de l'URL du proxy en production\r\n// Sauf cas extrême, l'URL ne DOIT PAS pointer sur localhost\r\nif (\r\n\tAPI_URL.indexOf(\"localhost\") > -1 &&\r\n\tlocation.hostname !== \"localhost\" &&\r\n\tsessionStorage.getItem(\"localhost\") !== \"true\"\r\n) {\r\n\tsessionStorage.setItem(\r\n\t\t\"localhost\",\r\n\t\tconfirm(\r\n\t\t\t'L\\'API est configuré en local ! Cela peut provoquer des erreurs réseau.\\nCliquez sur \"OK\" pour ne plus voir ce message.'\r\n\t\t)\r\n\t);\r\n}\r\n\r\nconst KEY = \"API_TOKEN\";\r\n\r\nlet hasFailedBefore = false;\r\n\r\nexport function setToken(token) {\r\n\ttry {\r\n\t\treturn localStorage.setItem(KEY, token);\r\n\t} catch (err) {\r\n\t\tconsole.log({ hasFailedBefore });\r\n\t\tif (!hasFailedBefore) {\r\n\t\t\thasFailedBefore = true;\r\n\t\t\talert(\r\n\t\t\t\t\"Notre site internet n’utilise que des cookies fonctionnels permettant de vous proposer l’accès à nos services.\\nVeuillez les activer pour pouvoir vous connecter.\"\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function getToken() {\r\n\ttry {\r\n\t\treturn localStorage.getItem(KEY);\r\n\t} catch (err) {\r\n\t\tif (!hasFailedBefore) {\r\n\t\t\tconsole.log({ hasFailedBefore });\r\n\t\t\thasFailedBefore = true;\r\n\t\t\talert(\r\n\t\t\t\t\"Notre site internet n’utilise que des cookies fonctionnels permettant de vous proposer l’accès à nos services.\\nVeuillez les activer pour pouvoir vous connecter.\"\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport const isLoggedIn = () =>\r\n\tgetToken() !== \"\" && getToken() !== null && getToken() !== undefined;\r\n\r\nexport const removeToken = () => localStorage.removeItem(KEY);\r\n\r\n// https://stackoverflow.com/a/38552302/5077092\r\nexport const parseJwt = (token) => {\r\n\t// Récupération du token automatique\r\n\tif (typeof token !== \"string\") token = getToken();\r\n\r\n\t// Si la personne est connecté\r\n\tif (token !== null) {\r\n\t\tvar base64Url = token.split(\".\")[1];\r\n\t\tvar base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n\t\tvar jsonPayload = decodeURIComponent(\r\n\t\t\twindow\r\n\t\t\t\t.atob(base64)\r\n\t\t\t\t.split(\"\")\r\n\t\t\t\t.map(function (c) {\r\n\t\t\t\t\treturn \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\r\n\t\t\t\t})\r\n\t\t\t\t.join(\"\")\r\n\t\t);\r\n\t\treturn JSON.parse(jsonPayload);\r\n\t} else return null;\r\n};\r\n\r\n// Permet d'afficher ou non des catégories dans le menu principal\r\nexport const userMenuFilter = (menu) => {\r\n\t// SUPER IMPORTANT !\r\n\t// Si personne n'est connecté, on ne peux pas récupérer de token, ni\r\n\t// de userMenu ! On renvois alors vrai partout de manière temporaire\r\n\t// Si on renvoyais false, la page d'acceuil ne serais même pas visible !\r\n\tif (!isLoggedIn()) return true;\r\n\r\n\t// On récupère le userMenu stocké dans le token\r\n\t// Par defaut, si l'API est en localhost, on affiche le menu\r\n\tconst userMenu = parseJwt().Menu;\r\n\tconst defaultValue = window.config.apiUrl.includes(\"localhost\");\r\n\tconst debugMenu = false;\r\n\r\n\tswitch (menu.id) {\r\n\t\tcase \"ticket\":\r\n\t\tcase \"tickets\":\r\n\t\t\tif (debugMenu)\r\n\t\t\t\tconsole.log({\r\n\t\t\t\t\tdefaultValue,\r\n\t\t\t\t\tid: menu.id,\r\n\t\t\t\t\tisVisible: userMenu?.ZenTickets,\r\n\t\t\t\t});\r\n\t\t\treturn (\r\n\t\t\t\t(userMenu?.ZenTickets || userMenu?.PracticeTickets) ?? defaultValue\r\n\t\t\t);\r\n\t\tcase \"task\":\r\n\t\tcase \"tasks\":\r\n\t\t\tif (debugMenu)\r\n\t\t\t\tconsole.log({\r\n\t\t\t\t\tdefaultValue,\r\n\t\t\t\t\tid: menu.id,\r\n\t\t\t\t\tisVisible: userMenu?.ZenTasks,\r\n\t\t\t\t});\r\n\t\t\treturn (userMenu?.ZenTasks || userMenu?.PracticeTasks) ?? defaultValue;\r\n\t\tcase \"recurrent-invoices\":\r\n\t\t\tif (debugMenu)\r\n\t\t\t\tconsole.log({\r\n\t\t\t\t\tdefaultValue,\r\n\t\t\t\t\tid: menu.id,\r\n\t\t\t\t\tisVisible: userMenu?.ZenRecurrentInvoices,\r\n\t\t\t\t});\r\n\t\t\treturn (\r\n\t\t\t\t(userMenu?.ZenRecurrentInvoices ||\r\n\t\t\t\t\tuserMenu?.PracticeRecurrentInvoices) ??\r\n\t\t\t\tdefaultValue\r\n\t\t\t);\r\n\t\tcase \"invoice-credit-notes\":\r\n\t\t\tif (debugMenu)\r\n\t\t\t\tconsole.log({\r\n\t\t\t\t\tdefaultValue,\r\n\t\t\t\t\tid: menu.id,\r\n\t\t\t\t\tisVisible: userMenu?.ZenInvoiceAndCreditMemos,\r\n\t\t\t\t});\r\n\t\t\treturn (\r\n\t\t\t\t(userMenu?.ZenInvoiceAndCreditMemos ||\r\n\t\t\t\t\tuserMenu?.PracticeInvoiceAndCreditMemos) ??\r\n\t\t\t\tdefaultValue\r\n\t\t\t);\r\n\t\tcase \"customer-account\":\r\n\t\t\tif (debugMenu)\r\n\t\t\t\tconsole.log({\r\n\t\t\t\t\tdefaultValue,\r\n\t\t\t\t\tid: menu.id,\r\n\t\t\t\t\tisVisible: userMenu?.ZenCustomerAccountEntries,\r\n\t\t\t\t});\r\n\t\t\treturn (\r\n\t\t\t\t(userMenu?.ZenCustomerAccountEntries ||\r\n\t\t\t\t\tuserMenu?.PracticeCustomerAccount) ??\r\n\t\t\t\tdefaultValue\r\n\t\t\t);\r\n\t\tcase \"service-prices-menu-title\":\r\n\t\t\tif (debugMenu)\r\n\t\t\t\tconsole.log({\r\n\t\t\t\t\tdefaultValue,\r\n\t\t\t\t\tid: menu.id,\r\n\t\t\t\t\tisVisible: userMenu?.ZenServicesPrices,\r\n\t\t\t\t});\r\n\t\t\treturn userMenu?.ZenServicesPrices ?? defaultValue;\r\n\t\tcase \"contracts-menu-title\":\r\n\t\t\tif (debugMenu)\r\n\t\t\t\tconsole.log({\r\n\t\t\t\t\tdefaultValue,\r\n\t\t\t\t\tid: menu.id,\r\n\t\t\t\t\tisVisible: userMenu?.ZenContracts,\r\n\t\t\t\t});\r\n\t\t\treturn (\r\n\t\t\t\t(userMenu?.ZenContracts || userMenu?.PracticeContracts) ?? defaultValue\r\n\t\t\t);\r\n\t\tcase \"product-sheets-menu-title\":\r\n\t\t\tif (debugMenu)\r\n\t\t\t\tconsole.log({\r\n\t\t\t\t\tdefaultValue,\r\n\t\t\t\t\tid: menu.id,\r\n\t\t\t\t\tisVisible: userMenu?.ZenProductSheets,\r\n\t\t\t\t});\r\n\t\t\treturn userMenu?.ZenProductSheets ?? defaultValue;\r\n\t\tcase \"infra-access\":\r\n\t\t\tif (debugMenu)\r\n\t\t\t\tconsole.log({\r\n\t\t\t\t\tdefaultValue,\r\n\t\t\t\t\tid: menu.id,\r\n\t\t\t\t\tisVisible: userMenu?.PracticeInfraAccess,\r\n\t\t\t\t});\r\n\t\t\treturn userMenu?.PracticeInfraAccess || defaultValue;\r\n\r\n\t\t// Les routes dont ont aura toujours besoins\r\n\t\tcase \"umbrella\":\r\n\t\tcase \"profile\":\r\n\t\t\tif (debugMenu) console.log({ id: menu.id });\r\n\t\t\treturn true;\r\n\r\n\t\tdefault:\r\n\t\t\tconsole.warn(\r\n\t\t\t\t`Menu with id: \"${menu.id}\" was not found when applying userMenuFilter. By default, it will be shown.`\r\n\t\t\t);\r\n\t\t\treturn true;\r\n\t}\r\n};\r\n","import React from \"react\";\r\nimport styled, { createGlobalStyle } from \"styled-components\";\r\n\r\nimport { CssBaseline } from \"@material-ui/core\";\r\n\r\nconst GlobalStyle = createGlobalStyle`\r\n html,\r\n body,\r\n #root {\r\n height: 100%;\r\n }\r\n\r\n body {\r\n background: ${props => props.theme.body.background};\r\n }\r\n`;\r\n\r\nconst Root = styled.div`\r\n max-width: 520px;\r\n margin: 0 auto;\r\n justify-content: center;\r\n align-items: center;\r\n display: flex;\r\n min-height: 100%;\r\n`;\r\n\r\nfunction Auth({ children }) {\r\n return (\r\n \r\n \r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport default Auth;\r\n","import {\r\n\tGrid,\r\n\t// Hidden,\r\n\t// List,\r\n\r\n\t// ListItem as MuiListItem, ListItemText,\r\n\r\n\tTypography as MuiTypography\r\n} from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport styled from \"styled-components\";\r\n\r\n\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { Link as MuiLink } from \"react-router-dom\";\r\n\r\nconst Wrapper = styled.div`\r\n padding: ${props => props.theme.spacing(4) / 2}px\r\n ${props => props.theme.spacing(4)}px;\r\n background: ${props => props.theme.palette.common.white};\r\n position: relative;\r\n`;\r\n\r\n// const ListItem = styled(MuiListItem)`\r\n// display: inline-block;\r\n// width: auto;\r\n// padding-left: ${props => props.theme.spacing(2)}px;\r\n// padding-right: ${props => props.theme.spacing(2)}px;\r\n\r\n// &,\r\n// &:hover,\r\n// &:active {\r\n// color: #000;\r\n// }\r\n// `;\r\n\r\nconst Link = styled(MuiLink)`\r\n color: ${props => props.theme.footer.color};\r\n`;\r\n\r\nconst Typography = styled(MuiTypography)`\r\n color: ${props => props.theme.footer.color};\r\n`;\r\n\r\nfunction Footer() {\r\n const { t } = useTranslation();\r\n\r\n return (\r\n \r\n \r\n\t\t\t\t\r\n\t\t\t\t\t{t('privacy-policy')}\r\n\t\t\t\t\r\n \r\n\t\t\t\t\t{`© ${new Date().getFullYear()} - Europe Tech Group`}\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Footer;\r\n","import React, { useState } from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { Link as RouterLink, useHistory, withRouter } from \"react-router-dom\";\r\nimport styled, { withTheme } from \"styled-components\";\r\n\r\nimport { parseJwt, removeToken } from \"../api\";\r\n\r\nimport { AppBar as MuiAppBar, Button, Grid, Hidden, IconButton as MuiIconButton, Menu, MenuItem, Toolbar } from \"@material-ui/core\";\r\n\r\nimport { AccountCircle, Menu as MenuIcon } from \"@material-ui/icons\";\r\n\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nimport i18n from \"../i18n\";\r\n\r\nconst AppBar = styled(MuiAppBar)`\r\n\tbackground: ${(props) => props.theme.header.background};\r\n\tcolor: ${(props) => props.theme.header.color};\r\n\tbox-shadow: ${(props) => props.theme.shadows[1]};\r\n`;\r\n\r\nconst IconButton = styled(MuiIconButton)`\r\n\tmargin: 0 ${(props) => props.theme.spacing(2)}px;\r\n\r\n\tsvg {\r\n\t\twidth: 22px;\r\n\t\theight: 22px;\r\n\t}\r\n`;\r\n\r\nconst Flag = styled.img`\r\n\tborder-radius: 50%;\r\n\twidth: 22px;\r\n\theight: 22px;\r\n`;\r\n\r\nconst UserButton = styled(Button)`\r\n\tfont-size: 15px;\r\n\theight: 40px;\r\n`;\r\n\r\nconst AccountIcon = styled(AccountCircle)`\r\n\theight: 28px;\r\n\twidth: 28px;\r\n`;\r\n\r\nfunction LanguageMenu() {\r\n\tconst [anchorMenu, setAnchorMenu] = useState(null);\r\n\r\n\tconst { t } = useTranslation();\r\n\r\n\tconst toggleMenu = (event) => {\r\n\t\tsetAnchorMenu(event.currentTarget);\r\n\t};\r\n\r\n\tconst setLanguage = (lng) => {\r\n\t\ti18n.changeLanguage(lng);\r\n\t\tcloseMenu();\r\n\t};\r\n\r\n\tconst closeMenu = () => {\r\n\t\tsetAnchorMenu(null);\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t setLanguage(\"en\")}>{\"English\"}\r\n\t\t\t\t setLanguage(\"fr\")}>{\"Français\"}\r\n\t\t\t\r\n\t\t\r\n\t);\r\n}\r\n\r\nconst UserMenu = withRouter(() => {\r\n\tconst { t } = useTranslation();\r\n\tconst history = useHistory();\r\n\r\n\tconst [anchorMenu, setAnchorMenu] = useState(null);\r\n\r\n\tconst toggleMenu = (event) => {\r\n\t\tsetAnchorMenu(event.currentTarget);\r\n\t};\r\n\r\n\tconst closeMenu = () => {\r\n\t\tsetAnchorMenu(null);\r\n\t};\r\n\r\n\tconst logout = () => {\r\n\t\tremoveToken();\r\n\t\thistory.push(\"/auth/login\");\r\n\t};\r\n\r\n\t// Récupération du nom de l'utilisateur (si disponible)\r\n\tconst { AccFirstName, AccLogin } = parseJwt();\r\n\tvar username = AccFirstName || AccLogin || \"\";\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t} height={30}>\r\n\t\t\t\t{username}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t history.push(\"/profil\")}>\r\n\t\t\t\t\t{t(\"profile\")}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{t(\"disconnect\")}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t);\r\n});\r\n\r\nconst Header = ({ onDrawerToggle }) => (\r\n\t\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\r\n);\r\n\r\nexport default connect()(withTheme(Header));\r\n","import React from \"react\";\r\nimport styled from \"styled-components\";\r\n\r\nimport { CircularProgress } from \"@material-ui/core\";\r\n\r\nconst Root = styled.div`\r\n justify-content: center;\r\n align-items: center;\r\n display: flex;\r\n min-height: 100%;\r\n`;\r\n\r\nfunction Loader() {\r\n return (\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Loader;\r\n","import React from \"react\";\r\n\r\nimport Loader from \"./Loader\";\r\n\r\nconst sleep = m => new Promise(r => setTimeout(r, m));\r\n\r\nexport default function asyncComponent(importComponent) {\r\n class AsyncComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n component: null\r\n };\r\n }\r\n\r\n async componentDidMount() {\r\n await sleep(150);\r\n\r\n const { default: component } = await importComponent();\r\n\r\n this.setState({\r\n component: component\r\n });\r\n }\r\n\r\n render() {\r\n const C = this.state.component;\r\n\r\n return C ? : \r\n }\r\n }\r\n\r\n return AsyncComponent;\r\n}\r\n","import {\r\n\tConfirmationNumber as TicketIcon,\r\n\tDashboard as DashboardIcon,\r\n\tFeedback as FeedbackIcon,\r\n\tReceipt as ReceiptIcon,\r\n\tStorage as StorageIcon,\r\n} from \"@material-ui/icons\";\r\nimport { userMenuFilter } from \"api\";\r\nimport React from \"react\";\r\nimport { User, Users } from \"react-feather\";\r\nimport async from \"../components/Async\";\r\n\r\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\r\nimport { faFileSignature, faUserClock } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport ListAltIcon from \"@material-ui/icons/ListAlt\";\r\nimport { NewTicketButton } from \"../pages/pages/Tickets\";\r\nlibrary.add(faFileSignature, faUserClock);\r\n\r\n// Auth components\r\nconst SignIn = async(() => import(\"../pages/auth/SignIn\"));\r\nconst ResetPassword = async(() => import(\"../pages/auth/ResetPassword\"));\r\nconst Page404 = async(() => import(\"../pages/auth/Page404\"));\r\nconst Page500 = async(() => import(\"../pages/auth/Page500\"));\r\nconst PageNetworkError = async(() => import(\"../pages/auth/PageNetworkError\"));\r\nconst PrivacyPolicy = async(() => import(\"../pages/pages/PrivacyPolicy\"));\r\n\r\n// Pages components\r\nconst Profile = async(() => import(\"../pages/pages/Profile\"));\r\nconst Umbrella = async(() => import(\"../pages/pages/Umbrella\"));\r\nconst Tickets = async(() => import(\"../pages/pages/Tickets\"));\r\nconst TicketDetails = async(() => import(\"../pages/pages/TicketDetails\"));\r\nconst TicketsCategory = async(() => import(\"../pages/pages/TicketsCategory\"));\r\nconst Tasks = async(() => import(\"../pages/pages/TasksList\"));\r\nconst TaskDetails = async(() => import(\"../pages/pages/TaskDetails\"));\r\nconst RecurrentInvoices = async(() => import(\"../pages/pages/RecurrentInvoicesList\"));\r\nconst InvoiceCreditNotes = async(() => import(\"../pages/pages/InvoiceCreditNotes\"));\r\nconst CustomerAccountEntryList = async(() => import(\"../pages/pages/CustomerAccountEntryList\"));\r\nconst Contracts = async(() => import(\"../pages/pages/Contracts\"));\r\nconst ServicePrices = async(() => import(\"../pages/pages/ServicePrices\"));\r\nconst ProductSheets = async(() => import(\"../pages/pages/ProductSheets\"));\r\n\r\nconst authRoutes = {\r\n\tid: \"Auth\",\r\n\tpath: \"/auth\",\r\n\ticon: ,\r\n\tchildren: [\r\n\t\t{\r\n\t\t\tpath: \"/auth/login\",\r\n\t\t\tname: \"Connexion\",\r\n\t\t\tcomponent: SignIn,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/auth/reset-password\",\r\n\t\t\tname: \"Reset Password\",\r\n\t\t\tcomponent: ResetPassword,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/404\",\r\n\t\t\tname: \"Page non trouvée\",\r\n\t\t\tcomponent: Page404,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/500\",\r\n\t\t\tname: \"Erreur interne\",\r\n\t\t\tcomponent: Page500,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/networkerror\",\r\n\t\t\tname: \"Erreur réseau\",\r\n\t\t\tcomponent: PageNetworkError,\r\n\t\t},\r\n\t],\r\n};\r\n\r\nconst privacyPolicyRoutes = {\r\n\tid: \"privacy\",\r\n\tpath: \"/privacy-policy\",\r\n\tcomponent: PrivacyPolicy,\r\n\tchildren: null,\r\n};\r\n\r\nconst profileRoutes = {\r\n\tid: \"profile\",\r\n\tpath: \"/profil\",\r\n\ticon: ,\r\n\tcomponent: Profile,\r\n\tchildren: null,\r\n};\r\n\r\nconst createTicketRoute = {\r\n\tid: \"ticket\",\r\n\ttype: \"button\",\r\n\tcomponent: ,\r\n};\r\n\r\nconst umbrellaRoutes = {\r\n\tid: \"umbrella\",\r\n\tpath: \"/\",\r\n\ticon: ,\r\n\tcomponent: Umbrella,\r\n\tchildren: null,\r\n\tisHome: true,\r\n};\r\n\r\nconst ticketsList = {\r\n\tid: \"tickets\",\r\n\tpath: \"/tickets\",\r\n\ticon: ,\r\n\tchildren: [\r\n\t\t{\r\n\t\t\tpath: \"/tickets/<>closed\",\r\n\t\t\tname: \"ticket-not-closed\",\r\n\t\t\tcomponent: Tickets,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tickets/draft copy\",\r\n\t\t\tname: \"ticket-draft_copy\",\r\n\t\t\tcomponent: Tickets,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tickets/open\",\r\n\t\t\tname: \"ticket-open\",\r\n\t\t\tcomponent: Tickets,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tickets/pending\",\r\n\t\t\tname: \"ticket-pending\",\r\n\t\t\tcomponent: Tickets,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tickets/in progress\",\r\n\t\t\tname: \"ticket-in_progress\",\r\n\t\t\tcomponent: Tickets,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tickets/closed\",\r\n\t\t\tname: \"ticket-closed\",\r\n\t\t\tcomponent: Tickets,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tickets\",\r\n\t\t\tname: \"tickets-all\",\r\n\t\t\tcomponent: Tickets,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tickets-category\",\r\n\t\t\tname: \"tickets-category\",\r\n\t\t\tcomponent: TicketsCategory,\r\n\t\t},\r\n\t],\r\n};\r\n\r\nconst tasksList = {\r\n\tid: \"tasks\",\r\n\tpath: \"/tasks\",\r\n\ticon: ,\r\n\tcomponent: Tasks,\r\n\tchildren: [\r\n\t\t{\r\n\t\t\tpath: \"/tasks/initialized\",\r\n\t\t\tname: \"task-initialized\",\r\n\t\t\tcomponent: Tasks,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tasks/signature\",\r\n\t\t\tname: \"task-signature\",\r\n\t\t\tcomponent: Tasks,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tasks/in progress\",\r\n\t\t\tname: \"task-in_progress\",\r\n\t\t\tcomponent: Tasks,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tasks/delivered in test\",\r\n\t\t\tname: \"task-delivered_in_test\",\r\n\t\t\tcomponent: Tasks,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tasks/customer validated\",\r\n\t\t\tname: \"task-customer_validated\",\r\n\t\t\tcomponent: Tasks,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tasks/in production\",\r\n\t\t\tname: \"task-in_production\",\r\n\t\t\tcomponent: Tasks,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tasks/denied\",\r\n\t\t\tname: \"task-denied\",\r\n\t\t\tcomponent: Tasks,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tasks/billable\",\r\n\t\t\tname: \"tasks-billable\",\r\n\t\t\tcomponent: Tasks,\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: \"/tasks\",\r\n\t\t\tname: \"tasks-all\",\r\n\t\t\tcomponent: Tasks,\r\n\t\t},\r\n\t],\r\n};\r\n\r\nconst taskDetails = {\r\n\tid: \"task\",\r\n\tpath: \"/task\",\r\n\ticon: ,\r\n\tcomponent: TaskDetails,\r\n\tchildren: null,\r\n};\r\n\r\nconst ticketDetails = {\r\n\tid: \"ticket\",\r\n\tpath: \"/tickets/:no\",\r\n\ticon: ,\r\n\tcomponent: TicketDetails,\r\n\tchildren: null,\r\n};\r\n\r\nconst recurrentInvoices = {\r\n\tid: \"recurrent-invoices\",\r\n\tpath: \"/recurrent-invoices\",\r\n\ticon: ,\r\n\tcomponent: RecurrentInvoices,\r\n\tchildren: null,\r\n};\r\n\r\nconst invoiceCreditNotes = {\r\n\tid: \"invoice-credit-notes\",\r\n\tpath: \"/invoice-credit-notes\",\r\n\ticon: ,\r\n\tcomponent: InvoiceCreditNotes,\r\n\tchildren: null,\r\n};\r\n\r\nconst customerAccountEntryList = {\r\n\tid: \"customer-account\",\r\n\tpath: \"/customer-account\",\r\n\ticon: ,\r\n\tcomponent: CustomerAccountEntryList,\r\n\tchildren: null,\r\n};\r\n\r\nconst contracts = {\r\n\tid: \"contracts-menu-title\",\r\n\tpath: \"/contracts\",\r\n\ticon: ,\r\n\tcomponent: Contracts,\r\n\tchildren: null,\r\n};\r\n\r\nconst servicePrices = {\r\n\tid: \"service-prices-menu-title\",\r\n\tpath: \"/service-prices\",\r\n\ticon: ,\r\n\tcomponent: ServicePrices,\r\n\tchildren: null,\r\n};\r\n\r\nconst productSheets = {\r\n\tid: \"product-sheets-menu-title\",\r\n\tpath: \"/product-sheets\",\r\n\ticon: ,\r\n\tcomponent: ProductSheets,\r\n\tchildren: null,\r\n};\r\n\r\nexport const dashboard = [\r\n\tumbrellaRoutes,\r\n\tprofileRoutes,\r\n\tticketsList,\r\n\tticketDetails,\r\n\ttasksList,\r\n\ttaskDetails,\r\n\trecurrentInvoices,\r\n\tinvoiceCreditNotes,\r\n\tcustomerAccountEntryList,\r\n\tservicePrices,\r\n\tcontracts,\r\n\tproductSheets,\r\n].filter(userMenuFilter);\r\n\r\nexport const auth = [authRoutes];\r\n\r\nexport const privacy = [privacyPolicyRoutes];\r\n\r\nexport default [\r\n\tcreateTicketRoute,\r\n\tumbrellaRoutes,\r\n\tticketsList,\r\n\ttasksList,\r\n\trecurrentInvoices,\r\n\tinvoiceCreditNotes,\r\n\tcustomerAccountEntryList,\r\n\tservicePrices,\r\n\tcontracts,\r\n\tproductSheets,\r\n].filter(userMenuFilter);\r\n","import { Chip, Collapse, Drawer as MuiDrawer, List as MuiList, ListItem, ListItemText, Typography } from \"@material-ui/core\";\r\nimport { ExpandLess, ExpandMore } from \"@material-ui/icons\";\r\nimport { userMenuFilter } from \"api\";\r\nimport { darken, rgba } from \"polished\";\r\nimport React, { useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport PerfectScrollbar from \"react-perfect-scrollbar\";\r\nimport { NavLink as RouterNavLink, withRouter } from \"react-router-dom\";\r\nimport styled from \"styled-components\";\r\nimport routes from \"../routes/index\";\r\nimport \"../vendor/perfect-scrollbar.css\";\r\n\r\nconst NavLink = React.forwardRef((props, ref) => );\r\n\r\nconst Drawer = styled(MuiDrawer)`\r\n\tborder-right: 0;\r\n\r\n\t> div {\r\n\t\tborder-right: 0;\r\n\t}\r\n`;\r\n\r\nconst Scrollbar = styled(PerfectScrollbar)`\r\n\tbackground-color: ${(props) => props.theme.sidebar.background};\r\n\tborder-right: 1px solid rgba(0, 0, 0, 0.12);\r\n`;\r\n\r\nconst List = styled(MuiList)`\r\n\tbackground-color: ${(props) => props.theme.sidebar.background};\r\n`;\r\n\r\nconst Items = styled.div`\r\n\tpadding-top: ${(props) => props.theme.spacing(2.5)}px;\r\n\tpadding-bottom: ${(props) => props.theme.spacing(2.5)}px;\r\n`;\r\n\r\nconst Brand = styled(ListItem)`\r\n\tfont-size: ${(props) => props.theme.typography.h5.fontSize};\r\n\tfont-weight: ${(props) => props.theme.typography.fontWeightMedium};\r\n\tcolor: ${(props) => props.theme.sidebar.header.color};\r\n\tbackground-color: ${(props) => props.theme.sidebar.header.background};\r\n\tfont-family: ${(props) => props.theme.typography.fontFamily};\r\n\tmin-height: 56px;\r\n\tpadding-left: ${(props) => props.theme.spacing(6)}px;\r\n\tpadding-right: ${(props) => props.theme.spacing(6)}px;\r\n\r\n\t${(props) => props.theme.breakpoints.up(\"sm\")} {\r\n\t\tmin-height: 64px;\r\n\t}\r\n`;\r\n\r\nconst Category = styled(ListItem)`\r\n\tpadding-top: ${(props) => props.theme.spacing(3)}px;\r\n\tpadding-bottom: ${(props) => props.theme.spacing(3)}px;\r\n\tpadding-left: ${(props) => props.theme.spacing(6)}px;\r\n\tpadding-right: ${(props) => props.theme.spacing(5)}px;\r\n\tfont-weight: ${(props) => props.theme.typography.fontWeightRegular};\r\n\r\n\tsvg {\r\n\t\tcolor: ${(props) => props.theme.sidebar.color};\r\n\t\tfont-size: 20px;\r\n\t\twidth: 20px;\r\n\t\theight: 20px;\r\n\t\topacity: 0.5;\r\n\t}\r\n\r\n\t&:hover {\r\n\t\tbackground: rgba(0, 0, 0, 0.08);\r\n\t}\r\n\r\n\t&.${(props) => props.activeClassName} {\r\n\t\tbackground-color: ${(props) => darken(0.05, props.theme.sidebar.background)};\r\n\r\n\t\tspan {\r\n\t\t\tcolor: ${(props) => props.theme.sidebar.color};\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nconst CategoryText = styled(ListItemText)`\r\n\tmargin: 0;\r\n\tspan {\r\n\t\tcolor: ${(props) => props.theme.sidebar.color};\r\n\t\tfont-size: ${(props) => props.theme.typography.body1.fontSize}px;\r\n\t\tfont-weight: ${(props) => props.theme.sidebar.category.fontWeight};\r\n\t\tpadding: 0 ${(props) => props.theme.spacing(4)}px;\r\n\t}\r\n`;\r\n\r\nconst CategoryIconLess = styled(ExpandLess)`\r\n\tcolor: ${(props) => rgba(props.theme.sidebar.color, 0.5)};\r\n`;\r\n\r\nconst CategoryIconMore = styled(ExpandMore)`\r\n\tcolor: ${(props) => rgba(props.theme.sidebar.color, 0.5)};\r\n`;\r\n\r\nconst Link = styled(ListItem)`\r\n\tpadding-left: ${(props) => props.theme.spacing(15)}px;\r\n\tpadding-top: ${(props) => props.theme.spacing(2)}px;\r\n\tpadding-bottom: ${(props) => props.theme.spacing(2)}px;\r\n\r\n\tspan {\r\n\t\tcolor: ${(props) => rgba(props.theme.sidebar.color, 0.7)};\r\n\t}\r\n\r\n\t&:hover span {\r\n\t\tcolor: ${(props) => rgba(props.theme.sidebar.color, 0.9)};\r\n\t}\r\n\r\n\t&.${(props) => props.activeClassName} {\r\n\t\tbackground-color: ${(props) => darken(0.06, props.theme.sidebar.background)};\r\n\r\n\t\tspan {\r\n\t\t\tcolor: ${(props) => props.theme.sidebar.color};\r\n\t\t}\r\n\t}\r\n`;\r\n\r\nconst LinkText = styled(ListItemText)`\r\n\tcolor: ${(props) => props.theme.sidebar.color};\r\n\tspan {\r\n\t\tfont-size: ${(props) => props.theme.typography.body1.fontSize}px;\r\n\t}\r\n\tmargin-top: 0;\r\n\tmargin-bottom: 0;\r\n`;\r\n\r\nconst LinkBadge = styled(Chip)`\r\n\tfont-size: 11px;\r\n\tfont-weight: ${(props) => props.theme.typography.fontWeightBold};\r\n\theight: 20px;\r\n\tposition: absolute;\r\n\tright: 12px;\r\n\ttop: 8px;\r\n\tbackground: ${(props) => props.theme.sidebar.badge.background};\r\n\r\n\tspan.MuiChip-label,\r\n\tspan.MuiChip-label:hover {\r\n\t\tcursor: pointer;\r\n\t\tcolor: ${(props) => props.theme.sidebar.badge.color};\r\n\t\tpadding-left: ${(props) => props.theme.spacing(2)}px;\r\n\t\tpadding-right: ${(props) => props.theme.spacing(2)}px;\r\n\t}\r\n`;\r\n\r\nconst CategoryBadge = styled(LinkBadge)`\r\n\ttop: 12px;\r\n`;\r\n\r\nconst SidebarSection = styled(Typography)`\r\n\tcolor: ${(props) => props.theme.sidebar.color};\r\n\tpadding: ${(props) => props.theme.spacing(4)}px ${(props) => props.theme.spacing(6)}px ${(props) => props.theme.spacing(1)}px;\r\n\topacity: 0.9;\r\n\tdisplay: block;\r\n`;\r\n\r\nconst Logo = styled.img`\r\n\theight: 42px;\r\n\tmargin: auto;\r\n`;\r\n\r\nfunction SidebarCategory({ name, icon, isOpen, isCollapsable, badge, ...rest }) {\r\n\treturn (\r\n\t\t\r\n\t\t\t{icon}\r\n\t\t\t{name}\r\n\t\t\t{isCollapsable ? isOpen ? : : null}\r\n\t\t\t{badge ? : \"\"}\r\n\t\t\r\n\t);\r\n}\r\n\r\nfunction SidebarLink({ name, to, badge }) {\r\n\treturn (\r\n\t\t\r\n\t\t\t{name}\r\n\t\t\t{badge ? : \"\"}\r\n\t\t\r\n\t);\r\n}\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nfunction Sidebar({ staticContext, location, ...rest }) {\r\n\tconst { t } = useTranslation();\r\n\r\n\tconst initOpenRoutes = () => {\r\n\t\t/* Open collapse element that matches current url */\r\n\t\tconst pathName = location.pathname;\r\n\r\n\t\tlet _routes = {};\r\n\r\n\t\troutes.forEach((route, index) => {\r\n\t\t\tconst isActive = pathName.indexOf(route.path) === 0;\r\n\t\t\tconst isOpen = route.open;\r\n\t\t\tconst isHome = route.containsHome && pathName === \"/\" ? true : false;\r\n\r\n\t\t\t_routes = Object.assign({}, _routes, { [index]: isActive || isOpen || isHome });\r\n\t\t});\r\n\r\n\t\treturn _routes;\r\n\t};\r\n\r\n\tconst [openRoutes, setOpenRoutes] = useState(() => initOpenRoutes());\r\n\r\n\tconst toggle = (index) => {\r\n\t\t// Collapse all elements\r\n\t\tObject.keys(openRoutes).forEach((item) => openRoutes[index] || setOpenRoutes((openRoutes) => Object.assign({}, openRoutes, { [item]: false })));\r\n\r\n\t\t// Toggle selected element\r\n\t\tsetOpenRoutes((openRoutes) => Object.assign({}, openRoutes, { [index]: !openRoutes[index] }));\r\n\t};\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{routes.filter(userMenuFilter).map((category, index) => (\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t{category.header ? {category.header} : null}\r\n\r\n\t\t\t\t\t\t\t\t{category?.type === \"button\" ? (\r\n\t\t\t\t\t\t\t\t\tReact.cloneElement(category?.component)\r\n\t\t\t\t\t\t\t\t) : category.children ? (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t toggle(index)}\r\n\t\t\t\t\t\t\t\t\t\t/>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t{category.children.map((route, index) => (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t{/*\r\n \r\n \r\n \r\n \r\n \r\n \r\n Déconnexion\r\n \r\n \r\n \r\n */}\r\n\t\t\r\n\t);\r\n}\r\n\r\nexport default withRouter(Sidebar);\r\n","import {\r\n\tCssBaseline, Hidden,\r\n\tPaper as MuiPaper,\r\n\twithWidth\r\n} from \"@material-ui/core\";\r\nimport { isWidthUp } from \"@material-ui/core/withWidth\";\r\nimport { spacing } from \"@material-ui/system\";\r\nimport React, { useState } from \"react\";\r\nimport styled, { createGlobalStyle } from \"styled-components\";\r\nimport Footer from \"../components/Footer\";\r\nimport Header from \"../components/Header\";\r\nimport Sidebar from \"../components/Sidebar\";\r\n\r\nconst drawerWidth = 260;\r\n\r\nconst GlobalStyle = createGlobalStyle`\r\n\thtml,\r\n\tbody,\r\n\t#root {\r\n\t\theight: 100%;\r\n\t}\r\n\r\n\tbody {\r\n\t\tbackground: ${props => props.theme.body.background};\r\n\t}\r\n\r\n\t.MuiCardHeader-action .MuiIconButton-root {\r\n\t\tpadding: 4px;\r\n\t\twidth: 28px;\r\n\t\theight: 28px;\r\n\t}\r\n`;\r\n\r\nconst Root = styled.div`\r\n\tdisplay: flex;\r\n\tmin-height: 100vh;\r\n`;\r\n\r\nconst Drawer = styled.div`\r\n\t${props => props.theme.breakpoints.up(\"md\")} {\r\n\t\twidth: ${drawerWidth}px;\r\n\t\tflex-shrink: 0;\r\n\t}\r\n`;\r\n\r\nconst AppContent = styled.div`\r\n\tflex: 1;\r\n\tdisplay: flex;\r\n\tflex-direction: column;\r\n`;\r\n\r\nconst Paper = styled(MuiPaper)(spacing);\r\n\r\nconst MainContent = styled(Paper)`\r\n\tflex: 1;\r\n\tbackground: ${props => props.theme.body.background};\r\n\r\n\t@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\r\n\t\tflex: none;\r\n\t}\r\n\r\n\t.MuiPaper-root .MuiPaper-root {\r\n\t\tbox-shadow: none;\r\n\t}\r\n`;\r\n\r\nconst Dashboard = ({children, routes, width}) => {\r\n\tconst [mobileOpen, setMobileOpen] = useState(false);\r\n\r\n\tconst handleDrawerToggle = () => {\r\n\t\tsetMobileOpen(!mobileOpen);\r\n\t};\r\n\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t{children}\r\n\t\t\t\t\r\n\t\t\t\t