@erpsquad/common 1.10.8-test → 1.10.9-test
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/{ai-summary-D9QajB4_.js → ai-summary-4NVNEHfi.js} +2 -2
- package/dist/chunks/{ai-summary-D9QajB4_.js.map → ai-summary-4NVNEHfi.js.map} +1 -1
- package/dist/chunks/{ai-summary-FqAUpafL.esm.js → ai-summary-f8clWLbW.esm.js} +65 -44
- package/dist/chunks/{ai-summary-FqAUpafL.esm.js.map → ai-summary-f8clWLbW.esm.js.map} +1 -1
- package/dist/chunks/{android-12-switch-BVabRCje.esm.js → android-12-switch-BUbQYnRQ.esm.js} +53 -35
- package/dist/chunks/{android-12-switch-BVabRCje.esm.js.map → android-12-switch-BUbQYnRQ.esm.js.map} +1 -1
- package/dist/chunks/android-12-switch-CphTHRb8.js +2 -0
- package/dist/chunks/{android-12-switch-DMaoWQwq.js.map → android-12-switch-CphTHRb8.js.map} +1 -1
- package/dist/chunks/{appbar-6Ucw59ku.js → appbar-C6Es9HGk.js} +2 -2
- package/dist/chunks/{appbar-6Ucw59ku.js.map → appbar-C6Es9HGk.js.map} +1 -1
- package/dist/chunks/{appbar-mDf1LZ0u.esm.js → appbar-CKrHdx9n.esm.js} +2 -2
- package/dist/chunks/{appbar-mDf1LZ0u.esm.js.map → appbar-CKrHdx9n.esm.js.map} +1 -1
- package/dist/chunks/{default-data-CwLgBvlI.esm.js → default-data-BsZWgQGR.esm.js} +3 -3
- package/dist/chunks/{default-data-CwLgBvlI.esm.js.map → default-data-BsZWgQGR.esm.js.map} +1 -1
- package/dist/chunks/{default-data-D2cqOmp4.js → default-data-Dsjlvwev.js} +2 -2
- package/dist/chunks/{default-data-D2cqOmp4.js.map → default-data-Dsjlvwev.js.map} +1 -1
- package/dist/chunks/{fullScreen-VlXxoepU.js → fullScreen-BBpaDn-A.js} +2 -2
- package/dist/chunks/{fullScreen-VlXxoepU.js.map → fullScreen-BBpaDn-A.js.map} +1 -1
- package/dist/chunks/{fullScreen-B9d2_kak.esm.js → fullScreen-Dn-3Tkwm.esm.js} +2 -2
- package/dist/chunks/{fullScreen-B9d2_kak.esm.js.map → fullScreen-Dn-3Tkwm.esm.js.map} +1 -1
- package/dist/chunks/index-B9CFxEZ9.js +2 -0
- package/dist/chunks/index-B9CFxEZ9.js.map +1 -0
- package/dist/chunks/{index-iPYNYnNP.esm.js → index-wf5q5BST.esm.js} +73 -66
- package/dist/chunks/{index-iPYNYnNP.esm.js.map → index-wf5q5BST.esm.js.map} +1 -1
- package/dist/chunks/{migration-utils-TYitNMC7.js → migration-utils-9IXhe_fj.js} +2 -2
- package/dist/chunks/{migration-utils-TYitNMC7.js.map → migration-utils-9IXhe_fj.js.map} +1 -1
- package/dist/chunks/{migration-utils-BRjncD-b.esm.js → migration-utils-DGoEzQUj.esm.js} +2 -2
- package/dist/chunks/{migration-utils-BRjncD-b.esm.js.map → migration-utils-DGoEzQUj.esm.js.map} +1 -1
- package/dist/chunks/{sidebar-DJREtRnK.js → sidebar-B3SExDRU.js} +2 -2
- package/dist/chunks/{sidebar-DJREtRnK.js.map → sidebar-B3SExDRU.js.map} +1 -1
- package/dist/chunks/{sidebar-D_3INLNa.esm.js → sidebar-n9Y25HU-.esm.js} +2 -2
- package/dist/chunks/{sidebar-D_3INLNa.esm.js.map → sidebar-n9Y25HU-.esm.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-CUf5Onkp.js → sidebarScreen-Dxb_e58p.js} +2 -2
- package/dist/chunks/{sidebarScreen-CUf5Onkp.js.map → sidebarScreen-Dxb_e58p.js.map} +1 -1
- package/dist/chunks/{sidebarScreen-CLjYZOzQ.esm.js → sidebarScreen-_Zt2pSOx.esm.js} +3 -3
- package/dist/chunks/{sidebarScreen-CLjYZOzQ.esm.js.map → sidebarScreen-_Zt2pSOx.esm.js.map} +1 -1
- package/dist/components/index.esm.js +121 -103
- package/dist/components/index.js +1 -1
- package/dist/index.esm.js +218 -200
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/layout/index.esm.js +2 -2
- package/dist/layout/index.js +1 -1
- package/dist/src/components/index.d.ts +18 -1
- package/dist/utils/index.esm.js +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/views/index.esm.js +5 -5
- package/dist/views/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/android-12-switch-DMaoWQwq.js +0 -2
- package/dist/chunks/index-BQ2NBHDS.js +0 -2
- package/dist/chunks/index-BQ2NBHDS.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebar-D_3INLNa.esm.js","sources":["../../src/assets/dynamic-svg-icon/dynamic-svg-icon.tsx","../../src/components/sidebar/sidebar.tsx"],"sourcesContent":["import React, { useState, useEffect, useMemo } from 'react';\r\nimport { useTheme } from '@mui/material';\r\nimport SvgIcon from '@mui/material/SvgIcon';\r\n\r\n// Fixed DynamicSvgIcon without dangerouslySetInnerHTML conflict\r\nconst DynamicSvgIcon = ({ \r\n svgPath, \r\n sx = {}, \r\n color = 'inherit', \r\n fontSize = 'medium',\r\n ...props \r\n}) => {\r\n const [svgContent, setSvgContent] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(false);\r\n const theme = useTheme();\r\n\r\n // Get the actual color value from theme\r\n const getColorValue = (colorProp) => {\r\n if (colorProp === 'inherit') return 'currentColor';\r\n if (colorProp === 'primary') return theme.palette.primary.main;\r\n if (colorProp === 'secondary') return theme.palette.secondary.main;\r\n if (colorProp === 'action') return theme.palette.action.active;\r\n if (colorProp === 'disabled') return theme.palette.action.disabled;\r\n if (colorProp === 'error') return theme.palette.error.main;\r\n if (colorProp === 'info') return theme.palette.info.main;\r\n if (colorProp === 'success') return theme.palette.success.main;\r\n if (colorProp === 'warning') return theme.palette.warning.main;\r\n if (colorProp === 'grey') return theme.palette.grey.main;\r\n return colorProp; // Assume it's a custom color value\r\n };\r\n\r\n const actualColor = getColorValue(color);\r\n\r\n useEffect(() => {\r\n if (!svgPath) return;\r\n\r\n const fetchSvg = async () => {\r\n try {\r\n setLoading(true);\r\n setError(false);\r\n \r\n const response = await fetch(svgPath);\r\n if (!response.ok) throw new Error('Failed to fetch SVG');\r\n \r\n const svgText = await response.text();\r\n setSvgContent(svgText);\r\n } catch (err) {\r\n console.error('Error loading SVG:', err);\r\n setError(true);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n fetchSvg();\r\n }, [svgPath]);\r\n\r\n // Parse SVG content and create React elements\r\n const svgElements = useMemo(() => {\r\n if (!svgContent) return null;\r\n\r\n try {\r\n // Create a temporary DOM element to parse the SVG\r\n const parser = new DOMParser();\r\n const svgDoc = parser.parseFromString(svgContent, 'image/svg+xml');\r\n const svgElement = svgDoc.querySelector('svg');\r\n \r\n if (!svgElement) return null;\r\n\r\n // Convert SVG children to React elements\r\n const convertToReactElement = (element, index = 0) => {\r\n const tagName = element.tagName.toLowerCase();\r\n const props = {};\r\n \r\n // Copy attributes\r\n Array.from(element.attributes).forEach(attr => {\r\n let propName = attr.name;\r\n \r\n // Convert attribute names to React props\r\n if (propName === 'class') propName = 'className';\r\n if (propName.includes('-')) {\r\n propName = propName.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());\r\n }\r\n \r\n let propValue = attr.value;\r\n \r\n // Apply color overrides\r\n if (actualColor && actualColor !== 'currentColor') {\r\n if (propName === 'fill' && propValue !== 'none') {\r\n propValue = actualColor;\r\n }\r\n if (propName === 'stroke' && propValue !== 'none') {\r\n propValue = actualColor;\r\n }\r\n }\r\n \r\n props[propName] = propValue;\r\n });\r\n\r\n props.key = index;\r\n\r\n // Handle children\r\n const children = Array.from(element.children).map((child, childIndex) =>\r\n convertToReactElement(child, `${index}-${childIndex}`)\r\n );\r\n\r\n // Handle text content\r\n if (element.childNodes.length === 1 && element.childNodes[0].nodeType === 3) {\r\n children.push(element.textContent);\r\n }\r\n\r\n return React.createElement(tagName, props, children.length > 0 ? children : null);\r\n };\r\n\r\n // Convert all children of the SVG element\r\n return Array.from(svgElement.children).map((child, index) =>\r\n convertToReactElement(child, index)\r\n );\r\n } catch (err) {\r\n console.error('Error parsing SVG:', err);\r\n return null;\r\n }\r\n }, [svgContent, actualColor]);\r\n\r\n if (loading) {\r\n return (\r\n <SvgIcon \r\n sx={{ \r\n width: 24, \r\n height: 24,\r\n ...sx \r\n }}\r\n color={color}\r\n fontSize={fontSize}\r\n {...props}\r\n >\r\n <circle cx=\"12\" cy=\"12\" r=\"8\" fill=\"currentColor\" opacity=\"0.3\" />\r\n </SvgIcon>\r\n );\r\n }\r\n\r\n if (error || !svgElements) {\r\n return (\r\n <SvgIcon \r\n sx={{ \r\n width: 24, \r\n height: 24,\r\n ...sx \r\n }}\r\n color={color}\r\n fontSize={fontSize}\r\n {...props}\r\n >\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\" />\r\n </SvgIcon>\r\n );\r\n }\r\n\r\n return (\r\n <SvgIcon \r\n sx={{ \r\n color: actualColor,\r\n fill:'none',\r\n ...sx \r\n }}\r\n fontSize={fontSize}\r\n fontWeight={500}\r\n viewBox='0 0 16 16'\r\n {...props}\r\n >\r\n {svgElements}\r\n </SvgIcon>\r\n );\r\n};\r\n\r\nexport { DynamicSvgIcon };\r\nexport default DynamicSvgIcon","/* eslint-disable unused-imports/no-unused-vars */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\r\nimport { matchRoutes, useLocation, useNavigate } from 'react-router-dom'\r\n\r\nimport { styled, Theme, CSSObject } from '@mui/material/styles'\r\nimport MuiDrawer from '@mui/material/Drawer'\r\nimport List from '@mui/material/List'\r\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft'\r\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight'\r\nimport ListItem from '@mui/material/ListItem'\r\nimport ListItemButton from '@mui/material/ListItemButton'\r\nimport ListItemIcon from '@mui/material/ListItemIcon'\r\nimport IconExpandLess from '@mui/icons-material/ExpandLess'\r\nimport IconExpandMore from '@mui/icons-material/ExpandMore'\r\nimport Typography from '@mui/material/Typography'\r\nimport Box from '@mui/material/Box'\r\nimport { Icon, IconButton, Popover, Paper, ClickAwayListener } from '@mui/material'\r\nimport Collapse from '@mui/material/Collapse'\r\n\r\nimport Text from '../typography/typography'\r\nimport images from '../../assets/images'\r\n\r\nimport './sidebar.scss'\r\nimport SearchBar from '../search-bar/search-bar'\r\nimport Tooltip from '../tooltip/Tooltip'\r\nimport { useLanguage } from '../../hooks/useLangauge'\r\nimport DynamicSvgIcon from '../../assets/dynamic-svg-icon/dynamic-svg-icon'\r\nimport { Search, SearchStatus } from '../icons'\r\nimport { Pathname } from '../../constants/pathnames'\r\nimport { getApiConfig } from '@/utils'\r\n\r\n// Types\r\ninterface MenuItem {\r\n\tlabel: string\r\n\tlink: string\r\n\ticon?: string\r\n\tsubmenu?: MenuItem[]\r\n\tconnectedRoutes?: string[]\r\n}\r\n\r\ninterface CollapsedSubmenuState {\r\n\topen: boolean\r\n\tanchorEl: HTMLElement | null\r\n\tmenu: MenuItem | null\r\n\tbreadcrumb: MenuItem[]\r\n}\r\n\r\nlet drawerWidth: any\r\n\r\nconst openedMixin = (theme: Theme): CSSObject => ({\r\n\twidth: drawerWidth,\r\n\ttransition: theme.transitions.create('width', {\r\n\t\teasing: theme.transitions.easing.sharp,\r\n\t\tduration: theme.transitions.duration.enteringScreen,\r\n\t}),\r\n\toverflowX: 'hidden',\r\n\tdisplay: 'flex',\r\n\tflexDirection: 'column',\r\n\tjustifyContent: 'space-between',\r\n\tborderRight: `1px solid ${theme.palette.theme?.secondary[200]}`,\r\n\tbackgroundColor: theme.palette.theme?.secondary[100],\r\n})\r\n\r\nconst closedMixin = (theme: Theme): CSSObject => ({\r\n\ttransition: theme.transitions.create('width', {\r\n\t\teasing: theme.transitions.easing.sharp,\r\n\t\tduration: theme.transitions.duration.leavingScreen,\r\n\t}),\r\n\toverflowX: 'hidden',\r\n\twidth: `calc(${theme.spacing(7)} + 1px)`,\r\n\t[theme.breakpoints.up('sm')]: {\r\n\t\twidth: `calc(${theme.spacing(8)} + 1px)`,\r\n\t},\r\n\tborderRight: `1px solid ${theme.palette.theme?.secondary[200]}`,\r\n\tbackgroundColor: theme.palette.theme?.secondary[100],\r\n})\r\n\r\nconst Drawer = styled(MuiDrawer, {\r\n\tshouldForwardProp: (prop) => prop !== 'open',\r\n})(({ theme, open }) => ({\r\n\twidth: drawerWidth,\r\n\tflexShrink: 0,\r\n\twhiteSpace: 'nowrap',\r\n\tboxSizing: 'border-box',\r\n\t'.MuiDrawer-paper': {\r\n\t\tbackgroundColor: theme?.palette?.theme?.secondary?.[100],\r\n\t\toverflow: 'visible !important',\r\n\t\tzIndex: 1201,\r\n\t},\r\n\t...(open && {\r\n\t\t...openedMixin(theme),\r\n\t\t'& .MuiDrawer-paper': openedMixin(theme),\r\n\t}),\r\n\t...(!open && {\r\n\t\t...closedMixin(theme),\r\n\t\t'& .MuiDrawer-paper': closedMixin(theme),\r\n\t}),\r\n}))\r\n\r\nconst DrawerHeader = styled('div')(({ theme }) => ({\r\n\tdisplay: 'flex',\r\n\talignItems: 'center',\r\n\tjustifyContent: 'center',\r\n\tpadding: theme.spacing(0, 2),\r\n\t...theme.mixins.toolbar,\r\n\tminHeight: 64,\r\n}))\r\n\r\nconst SubmenuPopover = styled(Paper)(({ theme }) => ({\r\n\tminWidth: 250,\r\n\tmaxWidth: 350,\r\n\tmaxHeight: '80vh',\r\n\toverflowY: 'auto',\r\n\tbackgroundColor: theme.palette.theme?.secondary?.[100] || theme.palette.background.paper,\r\n\tborderRadius: 12,\r\n\tboxShadow: '0 8px 32px rgba(0, 0, 0, 0.12)',\r\n\tborder: `1px solid ${theme.palette.theme?.secondary?.[200] || theme.palette.divider}`,\r\n\t'&.MuiPaper-root': {\r\n\t\ttransformOrigin: 'top left',\r\n\t},\r\n\t'&::-webkit-scrollbar': {\r\n\t\twidth: 6,\r\n\t},\r\n\t'&::-webkit-scrollbar-track': {\r\n\t\tbackgroundColor: 'transparent',\r\n\t},\r\n\t'&::-webkit-scrollbar-thumb': {\r\n\t\tbackgroundColor: 'rgba(0, 0, 0, 0.2)',\r\n\t\tborderRadius: 3,\r\n\t},\r\n}))\r\n\r\nconst BreadcrumbContainer = styled(Box)(({ theme }) => ({\r\n\tpadding: theme.spacing(1, 2),\r\n\tborderBottom: `1px solid ${theme.palette.theme?.secondary?.[200] || theme.palette.divider}`,\r\n\tbackgroundColor: theme.palette.theme?.secondary?.[50] || theme.palette.grey[50],\r\n}))\r\n\r\n// Enhanced CollapsedSubmenu component with nested support\r\nconst CollapsedSubmenu: React.FC<{\r\n\tmenu: MenuItem\r\n\tanchorEl: HTMLElement | null\r\n\topen: boolean\r\n\tonClose: () => void\r\n\tonItemClick: (item: MenuItem) => void\r\n\tonSubmenuClick: (item: MenuItem, event: React.MouseEvent<HTMLElement>) => void\r\n\tgetActiveClassIf: (paths: string[] | string) => boolean\r\n\tbreadcrumb: MenuItem[]\r\n\tonBreadcrumbClick: (item: MenuItem, index: number) => void\r\n}> = ({\r\n\tmenu,\r\n\tanchorEl,\r\n\topen,\r\n\tonClose,\r\n\tonItemClick,\r\n\tonSubmenuClick,\r\n\tgetActiveClassIf,\r\n\tbreadcrumb,\r\n\tonBreadcrumbClick,\r\n}) => {\r\n\t\tconst renderBreadcrumb = () => {\r\n\t\t\tif (breadcrumb.length <= 1) return null\r\n\r\n\t\t\treturn (\r\n\t\t\t\t<BreadcrumbContainer>\r\n\t\t\t\t\t<Box sx={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap', gap: 0.5 }}>\r\n\t\t\t\t\t\t{breadcrumb.map((item, index) => (\r\n\t\t\t\t\t\t\t<React.Fragment key={index}>\r\n\t\t\t\t\t\t\t\t{index > 0 && <ChevronRightIcon sx={{ fontSize: 14, color: 'theme.secondary.400' }} />}\r\n\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\tvariant=\"caption\"\r\n\t\t\t\t\t\t\t\t\tonClick={() => onBreadcrumbClick(item, index)}\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcursor: index < breadcrumb.length - 1 ? 'pointer' : 'default',\r\n\t\t\t\t\t\t\t\t\t\tcolor: index < breadcrumb.length - 1 ? 'primary.main' : 'theme.secondary.600',\r\n\t\t\t\t\t\t\t\t\t\tfontWeight: index === breadcrumb.length - 1 ? 600 : 400,\r\n\t\t\t\t\t\t\t\t\t\tfontSize: '0.75rem',\r\n\t\t\t\t\t\t\t\t\t\t'&:hover':\r\n\t\t\t\t\t\t\t\t\t\t\tindex < breadcrumb.length - 1\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\ttextDecoration: 'underline',\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: {},\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{item.label}\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t</React.Fragment>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</BreadcrumbContainer>\r\n\t\t\t)\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t<ClickAwayListener onClickAway={onClose}>\r\n\t\t\t\t<Popover\r\n\t\t\t\t\topen={open}\r\n\t\t\t\t\tanchorEl={anchorEl}\r\n\t\t\t\t\tonClose={onClose}\r\n\t\t\t\t\tanchorOrigin={{\r\n\t\t\t\t\t\tvertical: 'center',\r\n\t\t\t\t\t\thorizontal: 'right',\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransformOrigin={{\r\n\t\t\t\t\t\tvertical: 'center',\r\n\t\t\t\t\t\thorizontal: 'left',\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tPaperComponent={SubmenuPopover}\r\n\t\t\t\t\televation={1}\r\n\t\t\t\t\tdisableRestoreFocus\r\n\t\t\t\t\tdisableAutoFocus\r\n\t\t\t\t\tdisableEnforceFocus\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tml: 0.5,\r\n\t\t\t\t\t\t'& .MuiPopover-paper': {\r\n\t\t\t\t\t\t\t// overflow: 'visible',\r\n\t\t\t\t\t\t\tmarginTop: 0,\r\n\t\t\t\t\t\t\tpointerEvents: 'auto',\r\n\t\t\t\t\t\t\t// border: '1px solid',\r\n\t\t\t\t\t\t\t// borderColor: 'theme.secondary.200',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransitionDuration={200}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t{renderBreadcrumb()}\r\n\r\n\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\tvariant=\"subtitle2\"\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tpx: 2,\r\n\t\t\t\t\t\t\t\t\tpy: 1,\r\n\t\t\t\t\t\t\t\t\tfontWeight: 600,\r\n\t\t\t\t\t\t\t\t\tcolor: 'theme.secondary.1000',\r\n\t\t\t\t\t\t\t\t\tborderBottom: breadcrumb.length > 1 ? 'none' : '1px solid',\r\n\t\t\t\t\t\t\t\t\tborderColor: 'theme.secondary.200',\r\n\t\t\t\t\t\t\t\t\tmb: 0.5,\r\n\t\t\t\t\t\t\t\t\tfontSize: '0.875rem',\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\t\t{menu.label}\r\n\t\t\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t\t\t<List component=\"div\" sx={{ py: 0 }}>\r\n\t\t\t\t\t\t\t\t{menu.submenu?.map((subItem: MenuItem, index: number) => {\r\n\t\t\t\t\t\t\t\t\tconst isActive = getActiveClassIf([...(subItem?.connectedRoutes || []), ...[subItem.link]])\r\n\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t<ListItem key={index} disablePadding>\r\n\t\t\t\t\t\t\t\t\t\t\t<ListItemButton\r\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (subItem.submenu?.length) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSubmenuClick(subItem, e)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonItemClick(subItem)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClose()\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\tselected={isActive}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={(theme) => ({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tminHeight: 32,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// px: 2,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// py: 0.75,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: 1.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// mx: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tmb: 0.25,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tposition: 'relative',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t'&.Mui-selected': {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.theme?.primary[100],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'primary.main',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'& .MuiListItemIcon-root': {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'primary.main',\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\t'&.Mui-selected:hover': {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.theme?.primary[200],\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\t'&:hover': {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.04)',\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>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{subItem.icon && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ListItemIcon sx={{ minWidth: 32 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc={subItem.icon}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talt={subItem.label + ' icon'}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// width={20}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// height={20}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ opacity: 0.8 }}\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</ListItemIcon>\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Text\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype={'s3'}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tweight=\"normal\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor={'theme.secondary.1000'}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tflexGrow: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: '0.875rem',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlineHeight: 1.4,\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{subItem.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t{subItem.submenu?.length > 0 && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ChevronRightIcon\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: 18,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'theme.secondary.500',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tml: 1,\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</ListItemButton>\r\n\t\t\t\t\t\t\t\t\t\t</ListItem>\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</List>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Popover>\r\n\t\t\t</ClickAwayListener>\r\n\t\t)\r\n\t}\r\n\r\ninterface SidebarProps {\r\n\twidth: number\r\n\topen: boolean\r\n\tmenu: MenuItem[]\r\n\ttheme: any\r\n\tforcedOpen: boolean\r\n\thandleMouseEnter: () => void\r\n\thandleMouseLeave: () => void\r\n\thandleDrawerClose: () => void\r\n\thandleDrawerOpen: () => void\r\n\tdashboardPath?: string\r\n}\r\n\r\nexport const Sidebar: React.FC<SidebarProps> = (props) => {\r\n\tconst navigate = useNavigate()\r\n\tconst currentLocation = useLocation()\r\n\tconst { currentLanguage } = useLanguage()\r\n\tconst isRtl = useMemo(() => currentLanguage?.direction === 'rtl', [currentLanguage])\r\n\tconst [collapsedSubmenuState, setCollapsedSubmenuState] = useState<CollapsedSubmenuState>({\r\n\t\topen: false,\r\n\t\tanchorEl: null,\r\n\t\tmenu: null,\r\n\t\tbreadcrumb: [],\r\n\t})\r\n\r\n\tconst [menus, setMenus] = useState<MenuItem[]>([])\r\n\tconst [search, setSearch] = useState<string>('')\r\n\tconst [openSubmenuArray, setOpenSubmenuArray] = useState<string[]>([])\r\n\tconst [isOpenSearchTooltop, setIsOpenSearchTooltop] = useState<boolean>(false)\r\n\r\n\t// Enhanced active class checker\r\n\tconst getActiveClassIf = useCallback(\r\n\t\t(paths: string[] | string) => {\r\n\t\t\tconst shouldMatch: { path: string }[] = Array.isArray(paths)\r\n\t\t\t\t? paths.map((path: string) => ({ path }))\r\n\t\t\t\t: [{ path: paths }]\r\n\r\n\t\t\treturn Boolean(matchRoutes(shouldMatch, currentLocation))\r\n\t\t},\r\n\t\t[currentLocation]\r\n\t)\r\n\r\n\t// Find if any submenu item is active (for parent selection when collapsed)\r\n\tconst isSubmenuActive = useCallback(\r\n\t\t(menu: MenuItem): boolean => {\r\n\t\t\tif (!menu.submenu?.length) return false\r\n\r\n\t\t\tfor (const subItem of menu.submenu) {\r\n\t\t\t\tconst isActive = getActiveClassIf([...(subItem?.connectedRoutes || []), ...[subItem.link]])\r\n\r\n\t\t\t\tif (isActive || isSubmenuActive(subItem)) {\r\n\t\t\t\t\treturn true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t[getActiveClassIf]\r\n\t)\r\n\r\n\t// Get all menu paths for a menu item (including nested)\r\n\tconst getAllMenuPaths = useCallback((menu: MenuItem): string[] => {\r\n\t\tconst paths: string[] = []\r\n\r\n\t\tif (menu.link) {\r\n\t\t\tpaths.push(menu.link)\r\n\t\t}\r\n\r\n\t\tif (menu.connectedRoutes?.length) {\r\n\t\t\tpaths.push(...menu.connectedRoutes)\r\n\t\t}\r\n\r\n\t\tif (menu.submenu?.length) {\r\n\t\t\tmenu.submenu.forEach((subItem) => {\r\n\t\t\t\tpaths.push(...getAllMenuPaths(subItem))\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\treturn paths\r\n\t}, [])\r\n\r\n\t// Enhanced collapsed menu click handler\r\n\tconst handleCollapsedMenuClick = useCallback(\r\n\t\t(event: React.MouseEvent<HTMLElement>, menu: MenuItem) => {\r\n\t\t\tevent.stopPropagation()\r\n\r\n\t\t\tif (!props.open && menu.submenu?.length > 0) {\r\n\t\t\t\tif (collapsedSubmenuState.open && collapsedSubmenuState.menu?.label === menu.label) {\r\n\t\t\t\t\tsetCollapsedSubmenuState({\r\n\t\t\t\t\t\topen: false,\r\n\t\t\t\t\t\tanchorEl: null,\r\n\t\t\t\t\t\tmenu: null,\r\n\t\t\t\t\t\tbreadcrumb: [],\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetCollapsedSubmenuState({\r\n\t\t\t\t\t\topen: true,\r\n\t\t\t\t\t\tanchorEl: event.currentTarget,\r\n\t\t\t\t\t\tmenu: menu,\r\n\t\t\t\t\t\tbreadcrumb: [menu],\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[props.open, collapsedSubmenuState]\r\n\t)\r\n\r\n\t// Handle submenu navigation in collapsed mode\r\n\tconst handleCollapsedSubmenuClick = useCallback((item: MenuItem, event: React.MouseEvent<HTMLElement>) => {\r\n\t\tif (item.submenu?.length) {\r\n\t\t\tsetCollapsedSubmenuState((prev) => ({\r\n\t\t\t\t...prev,\r\n\t\t\t\tmenu: item,\r\n\t\t\t\tbreadcrumb: [...prev.breadcrumb, item],\r\n\t\t\t}))\r\n\t\t}\r\n\t}, [])\r\n\r\n\t// Handle breadcrumb navigation\r\n\tconst handleBreadcrumbClick = useCallback((item: MenuItem, index: number) => {\r\n\t\tsetCollapsedSubmenuState((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\tmenu: item,\r\n\t\t\tbreadcrumb: prev.breadcrumb.slice(0, index + 1),\r\n\t\t}))\r\n\t}, [])\r\n\r\n\tconst handleCollapsedSubmenuClose = useCallback(() => {\r\n\t\tsetCollapsedSubmenuState({\r\n\t\t\topen: false,\r\n\t\t\tanchorEl: null,\r\n\t\t\tmenu: null,\r\n\t\t\tbreadcrumb: [],\r\n\t\t})\r\n\t}, [])\r\n\r\n\tconst handleSubmenuItemClick = useCallback(\r\n\t\t(item: MenuItem) => {\r\n\t\t\tnavigate(item.link)\r\n\t\t},\r\n\t\t[navigate]\r\n\t)\r\n\r\n\t// Enhanced menu click handler\r\n\tconst handleMenuClick = useCallback(\r\n\t\t(menu: MenuItem, parent: MenuItem | null, index: number) => {\r\n\t\t\tif (!props.open && menu.submenu?.length > 0) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (!menu.submenu?.length) {\r\n\t\t\t\tnavigate(menu.link)\r\n\t\t\t\tif (!parent) {\r\n\t\t\t\t\tsetOpenSubmenuArray([])\r\n\t\t\t\t}\r\n\t\t\t} else if (menu.submenu?.length && menu.submenu[index]?.link) {\r\n\t\t\t\tnavigate(`${menu.link}${menu.submenu[index].link}`)\r\n\t\t\t} else {\r\n\t\t\t\tconst menuKey = `${parent?.label || ''}-${menu.label}`\r\n\r\n\t\t\t\tif (openSubmenuArray.includes(menuKey)) {\r\n\t\t\t\t\tif (parent) {\r\n\t\t\t\t\t\tconst newSubArray = openSubmenuArray.filter((f) => f !== menuKey)\r\n\t\t\t\t\t\tsetOpenSubmenuArray([...newSubArray])\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetOpenSubmenuArray([])\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (parent) {\r\n\t\t\t\t\t\tsetOpenSubmenuArray([...openSubmenuArray, menuKey])\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetOpenSubmenuArray([menuKey])\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[props.open, navigate, openSubmenuArray]\r\n\t)\r\n\r\n\t// Enhanced search functionality\r\n\tconst filterMenuOnSearch = useCallback((menu: MenuItem[], search: string): MenuItem[] => {\r\n\t\treturn menu\r\n\t\t\t.filter((m: MenuItem) => {\r\n\t\t\t\tif (m?.label?.toLowerCase()?.includes(search)) {\r\n\t\t\t\t\treturn m\r\n\t\t\t\t} else if (m?.submenu?.length) {\r\n\t\t\t\t\tm.submenu = filterMenuOnSearch(m?.submenu, search)\r\n\t\t\t\t\treturn m.submenu?.length > 0 ? m : null\r\n\t\t\t\t}\r\n\t\t\t\treturn null\r\n\t\t\t})\r\n\t\t\t.filter(Boolean)\r\n\t}, [])\r\n\r\n\tconst handleSidebarSearch = useCallback(\r\n\t\t(search: string) => {\r\n\t\t\tif (!search) {\r\n\t\t\t\tsetMenus(props.menu || [])\r\n\t\t\t} else {\r\n\t\t\t\tconst searchTerm = search.toLowerCase()\r\n\t\t\t\tconst menuItems = props?.menu ? JSON.parse(JSON.stringify(props.menu)) : []\r\n\t\t\t\tconst filteredMenu = filterMenuOnSearch(menuItems, searchTerm)\r\n\t\t\t\tsetMenus(filteredMenu)\r\n\t\t\t}\r\n\t\t},\r\n\t\t[props.menu, filterMenuOnSearch]\r\n\t)\r\n\r\n\tconst handleOpenSearchTooltip = useCallback(() => setIsOpenSearchTooltop(true), []);\r\n\tconst handleCloseSearchTooltip = useCallback(() => setIsOpenSearchTooltop(false), []);\r\n\r\n\t// Enhanced menu renderer with better nested support\r\n\tconst renderMenu = useCallback(\r\n\t\t(menus: MenuItem[], parent: MenuItem | null, level: number) => {\r\n\t\t\treturn menus?.map((menu: MenuItem, index: number) => {\r\n\t\t\t\tconst menuKey = `${parent?.label || ''}-${menu.label}`\r\n\t\t\t\tconst isMenuActive = getActiveClassIf([...(menu?.connectedRoutes || []), ...[menu.link]])\r\n\r\n\t\t\t\t// Check if any nested submenu is active (for collapsed state parent selection)\r\n\t\t\t\tconst hasActiveSubmenu = !props.open && isSubmenuActive(menu)\r\n\t\t\t\tconst shouldHighlightParent = isMenuActive || hasActiveSubmenu\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Tooltip\r\n\t\t\t\t\t\ttitle={menu.label}\r\n\t\t\t\t\t\tplacement=\"right\"\r\n\t\t\t\t\t\tarrow\r\n\t\t\t\t\t\tkey={`${menu.label}-${index}`}\r\n\t\t\t\t\t\tdisableHoverListener={props.open}\r\n\t\t\t\t\t\tdisableFocusListener={props.open}\r\n\t\t\t\t\t\tdisableTouchListener={props.open}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<ListItem\r\n\t\t\t\t\t\t\tdisablePadding\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tdisplay: 'block',\r\n\t\t\t\t\t\t\t\t// mb: 0.5,\r\n\t\t\t\t\t\t\t\t...(isRtl && {\r\n\t\t\t\t\t\t\t\t\tpadding: 0,\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\t\t<ListItemButton\r\n\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\tif (!props.open && menu.submenu?.length > 0) {\r\n\t\t\t\t\t\t\t\t\t\thandleCollapsedMenuClick(e, menu)\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\thandleMenuClick(menu, parent, menu?.submenu ? -1 : index)\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\tselected={shouldHighlightParent}\r\n\t\t\t\t\t\t\t\tsx={(theme) => ({\r\n\t\t\t\t\t\t\t\t\tminHeight: props.open ? 32 : 32,\r\n\t\t\t\t\t\t\t\t\tjustifyContent: props.open ? 'initial' : 'center',\r\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\tborderRadius: 2,\r\n\t\t\t\t\t\t\t\t\tgap: 1,\r\n\t\t\t\t\t\t\t\t\t// mx: props.open ? 1 : 0.5,\r\n\t\t\t\t\t\t\t\t\t// px: props.open ? 2 : 1,\r\n\t\t\t\t\t\t\t\t\t// py: 1,\r\n\t\t\t\t\t\t\t\t\tposition: 'relative',\r\n\t\t\t\t\t\t\t\t\ttransition: 'all 0.2s ease-in-out',\r\n\r\n\t\t\t\t\t\t\t\t\t'&.Mui-selected': {\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.theme?.primary[100],\r\n\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.theme?.primary[800],\r\n\t\t\t\t\t\t\t\t\t\t'& .MuiListItemIcon-root': {\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.theme?.primary[800],\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t'& .MuiTypography-root': {\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.theme?.primary[800],\r\n\t\t\t\t\t\t\t\t\t\t\tfontWeight: 500,\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\t'&.Mui-selected:hover': {\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.theme?.primary[200],\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: props.open ? 'rgba(0, 0, 0, 0.04)' : 'rgba(0, 0, 0, 0.08)',\r\n\t\t\t\t\t\t\t\t\t\ttransform: props.open ? 'none' : 'scale(1.02)',\r\n\t\t\t\t\t\t\t\t\t},\r\n\r\n\t\t\t\t\t\t\t\t\t...(!props.open &&\r\n\t\t\t\t\t\t\t\t\t\tmenu.submenu?.length > 0 && {\r\n\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t\t\t\t\t\t'&::after': {\r\n\t\t\t\t\t\t\t\t\t\t\tcontent: '\"\"',\r\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\t\t\t\t\t\t\t...(isRtl\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\tleft: 8,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderRight: '5px solid',\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: {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tright: 8,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderLeft: '5px solid',\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\ttop: '25%',\r\n\t\t\t\t\t\t\t\t\t\t\ttransform: 'translateY(-50%)',\r\n\t\t\t\t\t\t\t\t\t\t\twidth: 0,\r\n\t\t\t\t\t\t\t\t\t\t\theight: 0,\r\n\t\t\t\t\t\t\t\t\t\t\tborderTop: '4px solid transparent',\r\n\t\t\t\t\t\t\t\t\t\t\tborderBottom: '4px solid transparent',\r\n\t\t\t\t\t\t\t\t\t\t\tborderColor: 'currentColor transparent transparent transparent',\r\n\t\t\t\t\t\t\t\t\t\t\topacity: 0.7,\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\t\t<ListItemIcon\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tminWidth: props.open ? 'auto' : 0,\r\n\t\t\t\t\t\t\t\t\t\t// mr: props.open ? 1 : 'auto',\r\n\t\t\t\t\t\t\t\t\t\t...(isRtl ? { ml: 0 } : {}),\r\n\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\t\ttransition: 'all 0.2s ease-in-out',\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{menu.icon ? (\r\n\t\t\t\t\t\t\t\t\t\t<DynamicSvgIcon svgPath={menu.icon} color={shouldHighlightParent ? 'primary' : 'grey'} fontSize={props.open ? 'small' : 'medium'} />\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t<ChevronRightIcon\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: props.open ? 24 : 28,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttransition: 'all 0.2s ease-in-out',\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</ListItemIcon>\r\n\r\n\t\t\t\t\t\t\t\t{props.open && (\r\n\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\t\t\tflexGrow: 1,\r\n\t\t\t\t\t\t\t\t\t\t\tposition: 'relative',\r\n\t\t\t\t\t\t\t\t\t\t\toverflow: 'hidden',\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\t\t<Text\r\n\t\t\t\t\t\t\t\t\t\t\ttype={'s3'}\r\n\t\t\t\t\t\t\t\t\t\t\tweight={level === 0 ? 'medium' : 'normal'}\r\n\t\t\t\t\t\t\t\t\t\t\tcolor={'theme.secondary.1000'}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tflexGrow: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\tpl: level * 1.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: level === 0 ? '0.875rem' : '0.8125rem',\r\n\t\t\t\t\t\t\t\t\t\t\t\tlineHeight: 1.4,\r\n\t\t\t\t\t\t\t\t\t\t\t\twhiteSpace: 'nowrap',\r\n\t\t\t\t\t\t\t\t\t\t\t\toverflow: 'hidden',\r\n\t\t\t\t\t\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\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\t\t{menu.label}\r\n\t\t\t\t\t\t\t\t\t\t</Text>\r\n\r\n\t\t\t\t\t\t\t\t\t\t{menu.submenu?.length > 0 && (\r\n\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tml: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransition: 'transform 0.2s ease-in-out',\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\t{openSubmenuArray.includes(menuKey) ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<IconExpandLess\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: 20,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'theme.secondary.600',\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<IconExpandMore\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: 20,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'theme.secondary.600',\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</Box>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</ListItemButton>\r\n\r\n\t\t\t\t\t\t\t{openSubmenuArray.includes(menuKey) && menu.submenu?.length > 0 && props.open && (\r\n\t\t\t\t\t\t\t\t<Collapse in={openSubmenuArray.includes(menuKey)} timeout=\"auto\" unmountOnExit>\r\n\t\t\t\t\t\t\t\t\t<List component=\"div\" disablePadding sx={{ mt: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t{renderMenu(menu.submenu, menu, level + 1)}\r\n\t\t\t\t\t\t\t\t\t</List>\r\n\t\t\t\t\t\t\t\t</Collapse>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</ListItem>\r\n\t\t\t\t\t</Tooltip>\r\n\t\t\t\t)\r\n\t\t\t})\r\n\t\t},\r\n\t\t[props.open, openSubmenuArray, getActiveClassIf, handleCollapsedMenuClick, handleMenuClick, isSubmenuActive, isRtl]\r\n\t)\r\n\r\n\t// Enhanced useEffect for auto-expanding active menus\r\n\tuseEffect(() => {\r\n\t\thandleSidebarSearch(search)\r\n\r\n\t\tif (props.menu?.length) {\r\n\t\t\tconst expandedMenus: string[] = []\r\n\r\n\t\t\tconst checkAndExpandMenu = (menuItems: MenuItem[], parentLabel = '') => {\r\n\t\t\t\tmenuItems.forEach((menu) => {\r\n\t\t\t\t\tif (menu?.submenu?.length) {\r\n\t\t\t\t\t\tconst menuKey = `${parentLabel}-${menu.label}`\r\n\t\t\t\t\t\tconst allPaths = getAllMenuPaths(menu)\r\n\r\n\t\t\t\t\t\tif (getActiveClassIf(allPaths)) {\r\n\t\t\t\t\t\t\texpandedMenus.push(menuKey)\r\n\t\t\t\t\t\t\tcheckAndExpandMenu(menu.submenu, menu.label)\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\tcheckAndExpandMenu(props.menu)\r\n\t\t\tsetOpenSubmenuArray(expandedMenus)\r\n\t\t}\r\n\t}, [getActiveClassIf, handleSidebarSearch, props.menu, search, getAllMenuPaths])\r\n\r\n\tuseEffect(() => {\r\n\t\tif (props.open) {\r\n\t\t\thandleCollapsedSubmenuClose()\r\n\t\t}\r\n\t}, [props.open, handleCollapsedSubmenuClose])\r\n\r\n\tdrawerWidth = props.width\r\n\r\n\tconst appLogo = getApiConfig().appLogo || images.logo\r\n\tconst appFavicon = getApiConfig().appFavicon || images.favicon\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Drawer\r\n\t\t\t\tvariant=\"permanent\"\r\n\t\t\t\topen={props.open}\r\n\t\t\t\tanchor={document.body.dir === 'rtl' ? 'right' : 'left'}\r\n\t\t\t\tonMouseEnter={props.handleMouseEnter}\r\n\t\t\t\tonMouseLeave={props.handleMouseLeave}\r\n\t\t\t>\r\n\t\t\t\t<Box\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\tflexDirection: 'column',\r\n\t\t\t\t\t\theight: '100%',\r\n\t\t\t\t\t\tbackgroundColor: 'grey.100',\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{/* Header */}\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={(theme) => ({\r\n\t\t\t\t\t\t\tborderBottom: `1px solid ${theme.palette.theme?.secondary?.[200] || theme.palette.divider}`,\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<DrawerHeader>\r\n\t\t\t\t\t\t\t<img\r\n\t\t\t\t\t\t\t\tsrc={props.open ? appLogo : appFavicon}\r\n\t\t\t\t\t\t\t\talt={props.open ? 'logo' : 'favicon'}\r\n\t\t\t\t\t\t\t\twidth={!props.open && 40}\r\n\t\t\t\t\t\t\t\theight={55}\r\n\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\ttransition: 'all 0.3s ease-in-out',\r\n\t\t\t\t\t\t\t\t\tfilter: 'brightness(1.1)',\r\n\t\t\t\t\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tonClick={() => navigate(props.dashboardPath || Pathname.DASHBOARD)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</DrawerHeader>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t{/* Search Bar */}\r\n\t\t\t\t\t{props.open ? (\r\n\t\t\t\t\t\t<Box sx={{ px: 1.5, py: 1.5, borderBottom: '1px solid', borderColor: 'theme.secondary.200' }}>\r\n\t\t\t\t\t\t\t<SearchBar className=\"sidebar-search\" handleSearch={setSearch} placeholder=\"Search menu...\" value={search} sx={{ '&.MuiTextField-root': { backgroundColor: 'grey.200', border: '1px solid', borderColor: 'grey.200', borderRadius: 1 } }} />\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<ClickAwayListener onClickAway={handleCloseSearchTooltip}>\r\n\t\t\t\t\t\t\t<Box sx={{ p: 1, pb: 0, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\r\n\t\t\t\t\t\t\t\t<Tooltip\r\n\t\t\t\t\t\t\t\t\ttitle={\r\n\t\t\t\t\t\t\t\t\t\t<SearchBar\r\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"sidebar-search\"\r\n\t\t\t\t\t\t\t\t\t\t\thandleSearch={setSearch}\r\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Search menu...\"\r\n\t\t\t\t\t\t\t\t\t\t\tvalue={search}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{ '&.MuiTextField-root': { backgroundColor: 'transparent' } }}\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\tplacement=\"right\"\r\n\t\t\t\t\t\t\t\t\tarrow\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tp: 0,\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: 'grey.200',\r\n\t\t\t\t\t\t\t\t\t\tborder: '1px solid',\r\n\t\t\t\t\t\t\t\t\t\tborderColor: 'grey.300',\r\n\t\t\t\t\t\t\t\t\t\t'& .MuiTooltip-arrow': {\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: 'grey.300',\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tml: '8px !important'\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\topen={isOpenSearchTooltop}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<IconButton color='inherit' sx={{ borderRadius: 2, p: 1.5, backgroundColor: isOpenSearchTooltop ? 'grey.200' : 'inherit' }} onClick={handleOpenSearchTooltip}>\r\n\t\t\t\t\t\t\t\t\t\t{search.trim() ? <SearchStatus /> : <Search />}\r\n\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</ClickAwayListener>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{/* Menu List */}\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tflexGrow: 1,\r\n\t\t\t\t\t\t\toverflowY: 'auto',\r\n\t\t\t\t\t\t\tpy: 1,\r\n\t\t\t\t\t\t\t'&::-webkit-scrollbar': {\r\n\t\t\t\t\t\t\t\twidth: 6,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t'&::-webkit-scrollbar-track': {\r\n\t\t\t\t\t\t\t\tbackgroundColor: 'transparent',\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t'&::-webkit-scrollbar-thumb': {\r\n\t\t\t\t\t\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.2)',\r\n\t\t\t\t\t\t\t\tborderRadius: 3,\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\t<List className=\"sidebar-list\" sx={{ p: 0 }}>\r\n\t\t\t\t\t\t\t{renderMenu(menus, null, 0)}\r\n\t\t\t\t\t\t</List>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t{/* Footer */}\r\n\t\t\t\t\t{props.open && (\r\n\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tborderTop: '1px solid',\r\n\t\t\t\t\t\t\t\tborderColor: 'theme.secondary.200',\r\n\t\t\t\t\t\t\t\tbackgroundColor: 'rgba(255, 255, 255, 0.5)',\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tpadding: '.75rem 1.5rem',\r\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\talignItems: 'self-start',\r\n\t\t\t\t\t\t\t\t\tgap: 0.5,\r\n\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\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\t\t<Typography\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: 'theme.secondary.600',\r\n\t\t\t\t\t\t\t\t\t\tfontSize: '.85rem',\r\n\t\t\t\t\t\t\t\t\t\tfontWeight: 500,\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\tCrafted with\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t<Icon\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: 'theme.error.500',\r\n\t\t\t\t\t\t\t\t\t\twidth: '1rem',\r\n\t\t\t\t\t\t\t\t\t\theight: '1rem',\r\n\t\t\t\t\t\t\t\t\t\tfontSize: '.75rem',\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</Icon>\r\n\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: 'theme.secondary.600',\r\n\t\t\t\t\t\t\t\t\t\tfontSize: '.75rem',\r\n\t\t\t\t\t\t\t\t\t\tfontWeight: 500,\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<img src={images.erp_logo} />\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\t\t\t</Drawer>\r\n\t\t\t<IconButton\r\n\t\t\t\tsize=\"small\"\r\n\t\t\t\tonClick={() => (props.forcedOpen ? props.handleDrawerClose() : props.handleDrawerOpen())}\r\n\t\t\t\tclassName={isRtl ? 'drawer-expand-btn_rtl' : 'drawer-expand-btn'}\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tml: 'auto',\r\n\t\t\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.04)',\r\n\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\tbackgroundColor: 'grey.100',\r\n\t\t\t\t\t},\r\n\t\t\t\t\t// transition: 'all 0.2s ease-in-out',\r\n\t\t\t\t\twidth: '30px',\r\n\t\t\t\t\theight: '30px',\r\n\t\t\t\t\tborderRadius: `8px`,\r\n\t\t\t\t\tborderTopLeftRadius: 0,\r\n\t\t\t\t\tborderBottomLeftRadius: 0,\r\n\t\t\t\t\tborderColor: 'grey.500',\r\n\t\t\t\t\t...(isRtl\r\n\t\t\t\t\t\t? !props.forcedOpen\r\n\t\t\t\t\t\t\t? { right: '63px !important', left: 'auto' }\r\n\t\t\t\t\t\t\t: { right: '299px', left: 'auto' }\r\n\t\t\t\t\t\t: !props.forcedOpen\r\n\t\t\t\t\t\t\t? { left: '63px !important', right: 'auto' }\r\n\t\t\t\t\t\t\t: { left: '299px', right: 'auto' }),\r\n\t\t\t\t\ttransition: 'all 0.3s ease-in-out',\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{props.theme.direction === 'rtl' ? (\r\n\t\t\t\t\tprops.forcedOpen ? (\r\n\t\t\t\t\t\t<ChevronRightIcon fontSize=\"small\" />\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<ChevronLeftIcon fontSize=\"small\" />\r\n\t\t\t\t\t)\r\n\t\t\t\t) : props.forcedOpen ? (\r\n\t\t\t\t\t<ChevronLeftIcon fontSize=\"small\" />\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<ChevronRightIcon fontSize=\"small\" />\r\n\t\t\t\t)}\r\n\t\t\t</IconButton>\r\n\t\t\t{/* Collapsed Submenu Popover */}\r\n\t\t\t{collapsedSubmenuState.menu && (\r\n\t\t\t\t<CollapsedSubmenu\r\n\t\t\t\t\tmenu={collapsedSubmenuState.menu}\r\n\t\t\t\t\tanchorEl={collapsedSubmenuState.anchorEl}\r\n\t\t\t\t\topen={collapsedSubmenuState.open}\r\n\t\t\t\t\tonClose={handleCollapsedSubmenuClose}\r\n\t\t\t\t\tonItemClick={handleSubmenuItemClick}\r\n\t\t\t\t\tonSubmenuClick={handleCollapsedSubmenuClick}\r\n\t\t\t\t\tgetActiveClassIf={getActiveClassIf}\r\n\t\t\t\t\tbreadcrumb={collapsedSubmenuState.breadcrumb}\r\n\t\t\t\t\tonBreadcrumbClick={handleBreadcrumbClick}\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 Sidebar\r\n"],"names":["props","React","Typography","_a","Text","search","menus","_b","IconExpandMore"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sidebar-n9Y25HU-.esm.js","sources":["../../src/assets/dynamic-svg-icon/dynamic-svg-icon.tsx","../../src/components/sidebar/sidebar.tsx"],"sourcesContent":["import React, { useState, useEffect, useMemo } from 'react';\r\nimport { useTheme } from '@mui/material';\r\nimport SvgIcon from '@mui/material/SvgIcon';\r\n\r\n// Fixed DynamicSvgIcon without dangerouslySetInnerHTML conflict\r\nconst DynamicSvgIcon = ({ \r\n svgPath, \r\n sx = {}, \r\n color = 'inherit', \r\n fontSize = 'medium',\r\n ...props \r\n}) => {\r\n const [svgContent, setSvgContent] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(false);\r\n const theme = useTheme();\r\n\r\n // Get the actual color value from theme\r\n const getColorValue = (colorProp) => {\r\n if (colorProp === 'inherit') return 'currentColor';\r\n if (colorProp === 'primary') return theme.palette.primary.main;\r\n if (colorProp === 'secondary') return theme.palette.secondary.main;\r\n if (colorProp === 'action') return theme.palette.action.active;\r\n if (colorProp === 'disabled') return theme.palette.action.disabled;\r\n if (colorProp === 'error') return theme.palette.error.main;\r\n if (colorProp === 'info') return theme.palette.info.main;\r\n if (colorProp === 'success') return theme.palette.success.main;\r\n if (colorProp === 'warning') return theme.palette.warning.main;\r\n if (colorProp === 'grey') return theme.palette.grey.main;\r\n return colorProp; // Assume it's a custom color value\r\n };\r\n\r\n const actualColor = getColorValue(color);\r\n\r\n useEffect(() => {\r\n if (!svgPath) return;\r\n\r\n const fetchSvg = async () => {\r\n try {\r\n setLoading(true);\r\n setError(false);\r\n \r\n const response = await fetch(svgPath);\r\n if (!response.ok) throw new Error('Failed to fetch SVG');\r\n \r\n const svgText = await response.text();\r\n setSvgContent(svgText);\r\n } catch (err) {\r\n console.error('Error loading SVG:', err);\r\n setError(true);\r\n } finally {\r\n setLoading(false);\r\n }\r\n };\r\n\r\n fetchSvg();\r\n }, [svgPath]);\r\n\r\n // Parse SVG content and create React elements\r\n const svgElements = useMemo(() => {\r\n if (!svgContent) return null;\r\n\r\n try {\r\n // Create a temporary DOM element to parse the SVG\r\n const parser = new DOMParser();\r\n const svgDoc = parser.parseFromString(svgContent, 'image/svg+xml');\r\n const svgElement = svgDoc.querySelector('svg');\r\n \r\n if (!svgElement) return null;\r\n\r\n // Convert SVG children to React elements\r\n const convertToReactElement = (element, index = 0) => {\r\n const tagName = element.tagName.toLowerCase();\r\n const props = {};\r\n \r\n // Copy attributes\r\n Array.from(element.attributes).forEach(attr => {\r\n let propName = attr.name;\r\n \r\n // Convert attribute names to React props\r\n if (propName === 'class') propName = 'className';\r\n if (propName.includes('-')) {\r\n propName = propName.replace(/-([a-z])/g, (match, letter) => letter.toUpperCase());\r\n }\r\n \r\n let propValue = attr.value;\r\n \r\n // Apply color overrides\r\n if (actualColor && actualColor !== 'currentColor') {\r\n if (propName === 'fill' && propValue !== 'none') {\r\n propValue = actualColor;\r\n }\r\n if (propName === 'stroke' && propValue !== 'none') {\r\n propValue = actualColor;\r\n }\r\n }\r\n \r\n props[propName] = propValue;\r\n });\r\n\r\n props.key = index;\r\n\r\n // Handle children\r\n const children = Array.from(element.children).map((child, childIndex) =>\r\n convertToReactElement(child, `${index}-${childIndex}`)\r\n );\r\n\r\n // Handle text content\r\n if (element.childNodes.length === 1 && element.childNodes[0].nodeType === 3) {\r\n children.push(element.textContent);\r\n }\r\n\r\n return React.createElement(tagName, props, children.length > 0 ? children : null);\r\n };\r\n\r\n // Convert all children of the SVG element\r\n return Array.from(svgElement.children).map((child, index) =>\r\n convertToReactElement(child, index)\r\n );\r\n } catch (err) {\r\n console.error('Error parsing SVG:', err);\r\n return null;\r\n }\r\n }, [svgContent, actualColor]);\r\n\r\n if (loading) {\r\n return (\r\n <SvgIcon \r\n sx={{ \r\n width: 24, \r\n height: 24,\r\n ...sx \r\n }}\r\n color={color}\r\n fontSize={fontSize}\r\n {...props}\r\n >\r\n <circle cx=\"12\" cy=\"12\" r=\"8\" fill=\"currentColor\" opacity=\"0.3\" />\r\n </SvgIcon>\r\n );\r\n }\r\n\r\n if (error || !svgElements) {\r\n return (\r\n <SvgIcon \r\n sx={{ \r\n width: 24, \r\n height: 24,\r\n ...sx \r\n }}\r\n color={color}\r\n fontSize={fontSize}\r\n {...props}\r\n >\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\" />\r\n </SvgIcon>\r\n );\r\n }\r\n\r\n return (\r\n <SvgIcon \r\n sx={{ \r\n color: actualColor,\r\n fill:'none',\r\n ...sx \r\n }}\r\n fontSize={fontSize}\r\n fontWeight={500}\r\n viewBox='0 0 16 16'\r\n {...props}\r\n >\r\n {svgElements}\r\n </SvgIcon>\r\n );\r\n};\r\n\r\nexport { DynamicSvgIcon };\r\nexport default DynamicSvgIcon","/* eslint-disable unused-imports/no-unused-vars */\r\n/* eslint-disable @typescript-eslint/no-unused-vars */\r\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\r\nimport { matchRoutes, useLocation, useNavigate } from 'react-router-dom'\r\n\r\nimport { styled, Theme, CSSObject } from '@mui/material/styles'\r\nimport MuiDrawer from '@mui/material/Drawer'\r\nimport List from '@mui/material/List'\r\nimport ChevronLeftIcon from '@mui/icons-material/ChevronLeft'\r\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight'\r\nimport ListItem from '@mui/material/ListItem'\r\nimport ListItemButton from '@mui/material/ListItemButton'\r\nimport ListItemIcon from '@mui/material/ListItemIcon'\r\nimport IconExpandLess from '@mui/icons-material/ExpandLess'\r\nimport IconExpandMore from '@mui/icons-material/ExpandMore'\r\nimport Typography from '@mui/material/Typography'\r\nimport Box from '@mui/material/Box'\r\nimport { Icon, IconButton, Popover, Paper, ClickAwayListener } from '@mui/material'\r\nimport Collapse from '@mui/material/Collapse'\r\n\r\nimport Text from '../typography/typography'\r\nimport images from '../../assets/images'\r\n\r\nimport './sidebar.scss'\r\nimport SearchBar from '../search-bar/search-bar'\r\nimport Tooltip from '../tooltip/Tooltip'\r\nimport { useLanguage } from '../../hooks/useLangauge'\r\nimport DynamicSvgIcon from '../../assets/dynamic-svg-icon/dynamic-svg-icon'\r\nimport { Search, SearchStatus } from '../icons'\r\nimport { Pathname } from '../../constants/pathnames'\r\nimport { getApiConfig } from '@/utils'\r\n\r\n// Types\r\ninterface MenuItem {\r\n\tlabel: string\r\n\tlink: string\r\n\ticon?: string\r\n\tsubmenu?: MenuItem[]\r\n\tconnectedRoutes?: string[]\r\n}\r\n\r\ninterface CollapsedSubmenuState {\r\n\topen: boolean\r\n\tanchorEl: HTMLElement | null\r\n\tmenu: MenuItem | null\r\n\tbreadcrumb: MenuItem[]\r\n}\r\n\r\nlet drawerWidth: any\r\n\r\nconst openedMixin = (theme: Theme): CSSObject => ({\r\n\twidth: drawerWidth,\r\n\ttransition: theme.transitions.create('width', {\r\n\t\teasing: theme.transitions.easing.sharp,\r\n\t\tduration: theme.transitions.duration.enteringScreen,\r\n\t}),\r\n\toverflowX: 'hidden',\r\n\tdisplay: 'flex',\r\n\tflexDirection: 'column',\r\n\tjustifyContent: 'space-between',\r\n\tborderRight: `1px solid ${theme.palette.theme?.secondary[200]}`,\r\n\tbackgroundColor: theme.palette.theme?.secondary[100],\r\n})\r\n\r\nconst closedMixin = (theme: Theme): CSSObject => ({\r\n\ttransition: theme.transitions.create('width', {\r\n\t\teasing: theme.transitions.easing.sharp,\r\n\t\tduration: theme.transitions.duration.leavingScreen,\r\n\t}),\r\n\toverflowX: 'hidden',\r\n\twidth: `calc(${theme.spacing(7)} + 1px)`,\r\n\t[theme.breakpoints.up('sm')]: {\r\n\t\twidth: `calc(${theme.spacing(8)} + 1px)`,\r\n\t},\r\n\tborderRight: `1px solid ${theme.palette.theme?.secondary[200]}`,\r\n\tbackgroundColor: theme.palette.theme?.secondary[100],\r\n})\r\n\r\nconst Drawer = styled(MuiDrawer, {\r\n\tshouldForwardProp: (prop) => prop !== 'open',\r\n})(({ theme, open }) => ({\r\n\twidth: drawerWidth,\r\n\tflexShrink: 0,\r\n\twhiteSpace: 'nowrap',\r\n\tboxSizing: 'border-box',\r\n\t'.MuiDrawer-paper': {\r\n\t\tbackgroundColor: theme?.palette?.theme?.secondary?.[100],\r\n\t\toverflow: 'visible !important',\r\n\t\tzIndex: 1201,\r\n\t},\r\n\t...(open && {\r\n\t\t...openedMixin(theme),\r\n\t\t'& .MuiDrawer-paper': openedMixin(theme),\r\n\t}),\r\n\t...(!open && {\r\n\t\t...closedMixin(theme),\r\n\t\t'& .MuiDrawer-paper': closedMixin(theme),\r\n\t}),\r\n}))\r\n\r\nconst DrawerHeader = styled('div')(({ theme }) => ({\r\n\tdisplay: 'flex',\r\n\talignItems: 'center',\r\n\tjustifyContent: 'center',\r\n\tpadding: theme.spacing(0, 2),\r\n\t...theme.mixins.toolbar,\r\n\tminHeight: 64,\r\n}))\r\n\r\nconst SubmenuPopover = styled(Paper)(({ theme }) => ({\r\n\tminWidth: 250,\r\n\tmaxWidth: 350,\r\n\tmaxHeight: '80vh',\r\n\toverflowY: 'auto',\r\n\tbackgroundColor: theme.palette.theme?.secondary?.[100] || theme.palette.background.paper,\r\n\tborderRadius: 12,\r\n\tboxShadow: '0 8px 32px rgba(0, 0, 0, 0.12)',\r\n\tborder: `1px solid ${theme.palette.theme?.secondary?.[200] || theme.palette.divider}`,\r\n\t'&.MuiPaper-root': {\r\n\t\ttransformOrigin: 'top left',\r\n\t},\r\n\t'&::-webkit-scrollbar': {\r\n\t\twidth: 6,\r\n\t},\r\n\t'&::-webkit-scrollbar-track': {\r\n\t\tbackgroundColor: 'transparent',\r\n\t},\r\n\t'&::-webkit-scrollbar-thumb': {\r\n\t\tbackgroundColor: 'rgba(0, 0, 0, 0.2)',\r\n\t\tborderRadius: 3,\r\n\t},\r\n}))\r\n\r\nconst BreadcrumbContainer = styled(Box)(({ theme }) => ({\r\n\tpadding: theme.spacing(1, 2),\r\n\tborderBottom: `1px solid ${theme.palette.theme?.secondary?.[200] || theme.palette.divider}`,\r\n\tbackgroundColor: theme.palette.theme?.secondary?.[50] || theme.palette.grey[50],\r\n}))\r\n\r\n// Enhanced CollapsedSubmenu component with nested support\r\nconst CollapsedSubmenu: React.FC<{\r\n\tmenu: MenuItem\r\n\tanchorEl: HTMLElement | null\r\n\topen: boolean\r\n\tonClose: () => void\r\n\tonItemClick: (item: MenuItem) => void\r\n\tonSubmenuClick: (item: MenuItem, event: React.MouseEvent<HTMLElement>) => void\r\n\tgetActiveClassIf: (paths: string[] | string) => boolean\r\n\tbreadcrumb: MenuItem[]\r\n\tonBreadcrumbClick: (item: MenuItem, index: number) => void\r\n}> = ({\r\n\tmenu,\r\n\tanchorEl,\r\n\topen,\r\n\tonClose,\r\n\tonItemClick,\r\n\tonSubmenuClick,\r\n\tgetActiveClassIf,\r\n\tbreadcrumb,\r\n\tonBreadcrumbClick,\r\n}) => {\r\n\t\tconst renderBreadcrumb = () => {\r\n\t\t\tif (breadcrumb.length <= 1) return null\r\n\r\n\t\t\treturn (\r\n\t\t\t\t<BreadcrumbContainer>\r\n\t\t\t\t\t<Box sx={{ display: 'flex', alignItems: 'center', flexWrap: 'wrap', gap: 0.5 }}>\r\n\t\t\t\t\t\t{breadcrumb.map((item, index) => (\r\n\t\t\t\t\t\t\t<React.Fragment key={index}>\r\n\t\t\t\t\t\t\t\t{index > 0 && <ChevronRightIcon sx={{ fontSize: 14, color: 'theme.secondary.400' }} />}\r\n\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\tvariant=\"caption\"\r\n\t\t\t\t\t\t\t\t\tonClick={() => onBreadcrumbClick(item, index)}\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcursor: index < breadcrumb.length - 1 ? 'pointer' : 'default',\r\n\t\t\t\t\t\t\t\t\t\tcolor: index < breadcrumb.length - 1 ? 'primary.main' : 'theme.secondary.600',\r\n\t\t\t\t\t\t\t\t\t\tfontWeight: index === breadcrumb.length - 1 ? 600 : 400,\r\n\t\t\t\t\t\t\t\t\t\tfontSize: '0.75rem',\r\n\t\t\t\t\t\t\t\t\t\t'&:hover':\r\n\t\t\t\t\t\t\t\t\t\t\tindex < breadcrumb.length - 1\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\ttextDecoration: 'underline',\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: {},\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{item.label}\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t</React.Fragment>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</BreadcrumbContainer>\r\n\t\t\t)\r\n\t\t}\r\n\r\n\t\treturn (\r\n\t\t\t<ClickAwayListener onClickAway={onClose}>\r\n\t\t\t\t<Popover\r\n\t\t\t\t\topen={open}\r\n\t\t\t\t\tanchorEl={anchorEl}\r\n\t\t\t\t\tonClose={onClose}\r\n\t\t\t\t\tanchorOrigin={{\r\n\t\t\t\t\t\tvertical: 'center',\r\n\t\t\t\t\t\thorizontal: 'right',\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransformOrigin={{\r\n\t\t\t\t\t\tvertical: 'center',\r\n\t\t\t\t\t\thorizontal: 'left',\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tPaperComponent={SubmenuPopover}\r\n\t\t\t\t\televation={1}\r\n\t\t\t\t\tdisableRestoreFocus\r\n\t\t\t\t\tdisableAutoFocus\r\n\t\t\t\t\tdisableEnforceFocus\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tml: 0.5,\r\n\t\t\t\t\t\t'& .MuiPopover-paper': {\r\n\t\t\t\t\t\t\t// overflow: 'visible',\r\n\t\t\t\t\t\t\tmarginTop: 0,\r\n\t\t\t\t\t\t\tpointerEvents: 'auto',\r\n\t\t\t\t\t\t\t// border: '1px solid',\r\n\t\t\t\t\t\t\t// borderColor: 'theme.secondary.200',\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t}}\r\n\t\t\t\t\ttransitionDuration={200}\r\n\t\t\t\t>\r\n\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t{renderBreadcrumb()}\r\n\r\n\t\t\t\t\t\t<Box>\r\n\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\tvariant=\"subtitle2\"\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tpx: 2,\r\n\t\t\t\t\t\t\t\t\tpy: 1,\r\n\t\t\t\t\t\t\t\t\tfontWeight: 600,\r\n\t\t\t\t\t\t\t\t\tcolor: 'theme.secondary.1000',\r\n\t\t\t\t\t\t\t\t\tborderBottom: breadcrumb.length > 1 ? 'none' : '1px solid',\r\n\t\t\t\t\t\t\t\t\tborderColor: 'theme.secondary.200',\r\n\t\t\t\t\t\t\t\t\tmb: 0.5,\r\n\t\t\t\t\t\t\t\t\tfontSize: '0.875rem',\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\t\t{menu.label}\r\n\t\t\t\t\t\t\t</Typography>\r\n\r\n\t\t\t\t\t\t\t<List component=\"div\" sx={{ py: 0 }}>\r\n\t\t\t\t\t\t\t\t{menu.submenu?.map((subItem: MenuItem, index: number) => {\r\n\t\t\t\t\t\t\t\t\tconst isActive = getActiveClassIf([...(subItem?.connectedRoutes || []), ...[subItem.link]])\r\n\r\n\t\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t\t<ListItem key={index} disablePadding>\r\n\t\t\t\t\t\t\t\t\t\t\t<ListItemButton\r\n\t\t\t\t\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (subItem.submenu?.length) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonSubmenuClick(subItem, e)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonItemClick(subItem)\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClose()\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\tselected={isActive}\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={(theme) => ({\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tminHeight: 32,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// px: 2,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// py: 0.75,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderRadius: 1.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t// mx: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tmb: 0.25,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tposition: 'relative',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t'&.Mui-selected': {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.theme?.primary[100],\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'primary.main',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t'& .MuiListItemIcon-root': {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'primary.main',\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\t'&.Mui-selected:hover': {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.theme?.primary[200],\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\t'&:hover': {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.04)',\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>\r\n\t\t\t\t\t\t\t\t\t\t\t\t{subItem.icon && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ListItemIcon sx={{ minWidth: 32 }}>\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc={subItem.icon}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\talt={subItem.label + ' icon'}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// width={20}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// height={20}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{ opacity: 0.8 }}\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</ListItemIcon>\r\n\t\t\t\t\t\t\t\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t<Text\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype={'s3'}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tweight=\"normal\"\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcolor={'theme.secondary.1000'}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tflexGrow: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: '0.875rem',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlineHeight: 1.4,\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{subItem.label}\r\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t{subItem.submenu?.length > 0 && (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<ChevronRightIcon\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: 18,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'theme.secondary.500',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tml: 1,\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</ListItemButton>\r\n\t\t\t\t\t\t\t\t\t\t</ListItem>\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</List>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t</Box>\r\n\t\t\t\t</Popover>\r\n\t\t\t</ClickAwayListener>\r\n\t\t)\r\n\t}\r\n\r\ninterface SidebarProps {\r\n\twidth: number\r\n\topen: boolean\r\n\tmenu: MenuItem[]\r\n\ttheme: any\r\n\tforcedOpen: boolean\r\n\thandleMouseEnter: () => void\r\n\thandleMouseLeave: () => void\r\n\thandleDrawerClose: () => void\r\n\thandleDrawerOpen: () => void\r\n\tdashboardPath?: string\r\n}\r\n\r\nexport const Sidebar: React.FC<SidebarProps> = (props) => {\r\n\tconst navigate = useNavigate()\r\n\tconst currentLocation = useLocation()\r\n\tconst { currentLanguage } = useLanguage()\r\n\tconst isRtl = useMemo(() => currentLanguage?.direction === 'rtl', [currentLanguage])\r\n\tconst [collapsedSubmenuState, setCollapsedSubmenuState] = useState<CollapsedSubmenuState>({\r\n\t\topen: false,\r\n\t\tanchorEl: null,\r\n\t\tmenu: null,\r\n\t\tbreadcrumb: [],\r\n\t})\r\n\r\n\tconst [menus, setMenus] = useState<MenuItem[]>([])\r\n\tconst [search, setSearch] = useState<string>('')\r\n\tconst [openSubmenuArray, setOpenSubmenuArray] = useState<string[]>([])\r\n\tconst [isOpenSearchTooltop, setIsOpenSearchTooltop] = useState<boolean>(false)\r\n\r\n\t// Enhanced active class checker\r\n\tconst getActiveClassIf = useCallback(\r\n\t\t(paths: string[] | string) => {\r\n\t\t\tconst shouldMatch: { path: string }[] = Array.isArray(paths)\r\n\t\t\t\t? paths.map((path: string) => ({ path }))\r\n\t\t\t\t: [{ path: paths }]\r\n\r\n\t\t\treturn Boolean(matchRoutes(shouldMatch, currentLocation))\r\n\t\t},\r\n\t\t[currentLocation]\r\n\t)\r\n\r\n\t// Find if any submenu item is active (for parent selection when collapsed)\r\n\tconst isSubmenuActive = useCallback(\r\n\t\t(menu: MenuItem): boolean => {\r\n\t\t\tif (!menu.submenu?.length) return false\r\n\r\n\t\t\tfor (const subItem of menu.submenu) {\r\n\t\t\t\tconst isActive = getActiveClassIf([...(subItem?.connectedRoutes || []), ...[subItem.link]])\r\n\r\n\t\t\t\tif (isActive || isSubmenuActive(subItem)) {\r\n\t\t\t\t\treturn true\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn false\r\n\t\t},\r\n\t\t[getActiveClassIf]\r\n\t)\r\n\r\n\t// Get all menu paths for a menu item (including nested)\r\n\tconst getAllMenuPaths = useCallback((menu: MenuItem): string[] => {\r\n\t\tconst paths: string[] = []\r\n\r\n\t\tif (menu.link) {\r\n\t\t\tpaths.push(menu.link)\r\n\t\t}\r\n\r\n\t\tif (menu.connectedRoutes?.length) {\r\n\t\t\tpaths.push(...menu.connectedRoutes)\r\n\t\t}\r\n\r\n\t\tif (menu.submenu?.length) {\r\n\t\t\tmenu.submenu.forEach((subItem) => {\r\n\t\t\t\tpaths.push(...getAllMenuPaths(subItem))\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\treturn paths\r\n\t}, [])\r\n\r\n\t// Enhanced collapsed menu click handler\r\n\tconst handleCollapsedMenuClick = useCallback(\r\n\t\t(event: React.MouseEvent<HTMLElement>, menu: MenuItem) => {\r\n\t\t\tevent.stopPropagation()\r\n\r\n\t\t\tif (!props.open && menu.submenu?.length > 0) {\r\n\t\t\t\tif (collapsedSubmenuState.open && collapsedSubmenuState.menu?.label === menu.label) {\r\n\t\t\t\t\tsetCollapsedSubmenuState({\r\n\t\t\t\t\t\topen: false,\r\n\t\t\t\t\t\tanchorEl: null,\r\n\t\t\t\t\t\tmenu: null,\r\n\t\t\t\t\t\tbreadcrumb: [],\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsetCollapsedSubmenuState({\r\n\t\t\t\t\t\topen: true,\r\n\t\t\t\t\t\tanchorEl: event.currentTarget,\r\n\t\t\t\t\t\tmenu: menu,\r\n\t\t\t\t\t\tbreadcrumb: [menu],\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[props.open, collapsedSubmenuState]\r\n\t)\r\n\r\n\t// Handle submenu navigation in collapsed mode\r\n\tconst handleCollapsedSubmenuClick = useCallback((item: MenuItem, event: React.MouseEvent<HTMLElement>) => {\r\n\t\tif (item.submenu?.length) {\r\n\t\t\tsetCollapsedSubmenuState((prev) => ({\r\n\t\t\t\t...prev,\r\n\t\t\t\tmenu: item,\r\n\t\t\t\tbreadcrumb: [...prev.breadcrumb, item],\r\n\t\t\t}))\r\n\t\t}\r\n\t}, [])\r\n\r\n\t// Handle breadcrumb navigation\r\n\tconst handleBreadcrumbClick = useCallback((item: MenuItem, index: number) => {\r\n\t\tsetCollapsedSubmenuState((prev) => ({\r\n\t\t\t...prev,\r\n\t\t\tmenu: item,\r\n\t\t\tbreadcrumb: prev.breadcrumb.slice(0, index + 1),\r\n\t\t}))\r\n\t}, [])\r\n\r\n\tconst handleCollapsedSubmenuClose = useCallback(() => {\r\n\t\tsetCollapsedSubmenuState({\r\n\t\t\topen: false,\r\n\t\t\tanchorEl: null,\r\n\t\t\tmenu: null,\r\n\t\t\tbreadcrumb: [],\r\n\t\t})\r\n\t}, [])\r\n\r\n\tconst handleSubmenuItemClick = useCallback(\r\n\t\t(item: MenuItem) => {\r\n\t\t\tnavigate(item.link)\r\n\t\t},\r\n\t\t[navigate]\r\n\t)\r\n\r\n\t// Enhanced menu click handler\r\n\tconst handleMenuClick = useCallback(\r\n\t\t(menu: MenuItem, parent: MenuItem | null, index: number) => {\r\n\t\t\tif (!props.open && menu.submenu?.length > 0) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tif (!menu.submenu?.length) {\r\n\t\t\t\tnavigate(menu.link)\r\n\t\t\t\tif (!parent) {\r\n\t\t\t\t\tsetOpenSubmenuArray([])\r\n\t\t\t\t}\r\n\t\t\t} else if (menu.submenu?.length && menu.submenu[index]?.link) {\r\n\t\t\t\tnavigate(`${menu.link}${menu.submenu[index].link}`)\r\n\t\t\t} else {\r\n\t\t\t\tconst menuKey = `${parent?.label || ''}-${menu.label}`\r\n\r\n\t\t\t\tif (openSubmenuArray.includes(menuKey)) {\r\n\t\t\t\t\tif (parent) {\r\n\t\t\t\t\t\tconst newSubArray = openSubmenuArray.filter((f) => f !== menuKey)\r\n\t\t\t\t\t\tsetOpenSubmenuArray([...newSubArray])\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetOpenSubmenuArray([])\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tif (parent) {\r\n\t\t\t\t\t\tsetOpenSubmenuArray([...openSubmenuArray, menuKey])\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tsetOpenSubmenuArray([menuKey])\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[props.open, navigate, openSubmenuArray]\r\n\t)\r\n\r\n\t// Enhanced search functionality\r\n\tconst filterMenuOnSearch = useCallback((menu: MenuItem[], search: string): MenuItem[] => {\r\n\t\treturn menu\r\n\t\t\t.filter((m: MenuItem) => {\r\n\t\t\t\tif (m?.label?.toLowerCase()?.includes(search)) {\r\n\t\t\t\t\treturn m\r\n\t\t\t\t} else if (m?.submenu?.length) {\r\n\t\t\t\t\tm.submenu = filterMenuOnSearch(m?.submenu, search)\r\n\t\t\t\t\treturn m.submenu?.length > 0 ? m : null\r\n\t\t\t\t}\r\n\t\t\t\treturn null\r\n\t\t\t})\r\n\t\t\t.filter(Boolean)\r\n\t}, [])\r\n\r\n\tconst handleSidebarSearch = useCallback(\r\n\t\t(search: string) => {\r\n\t\t\tif (!search) {\r\n\t\t\t\tsetMenus(props.menu || [])\r\n\t\t\t} else {\r\n\t\t\t\tconst searchTerm = search.toLowerCase()\r\n\t\t\t\tconst menuItems = props?.menu ? JSON.parse(JSON.stringify(props.menu)) : []\r\n\t\t\t\tconst filteredMenu = filterMenuOnSearch(menuItems, searchTerm)\r\n\t\t\t\tsetMenus(filteredMenu)\r\n\t\t\t}\r\n\t\t},\r\n\t\t[props.menu, filterMenuOnSearch]\r\n\t)\r\n\r\n\tconst handleOpenSearchTooltip = useCallback(() => setIsOpenSearchTooltop(true), []);\r\n\tconst handleCloseSearchTooltip = useCallback(() => setIsOpenSearchTooltop(false), []);\r\n\r\n\t// Enhanced menu renderer with better nested support\r\n\tconst renderMenu = useCallback(\r\n\t\t(menus: MenuItem[], parent: MenuItem | null, level: number) => {\r\n\t\t\treturn menus?.map((menu: MenuItem, index: number) => {\r\n\t\t\t\tconst menuKey = `${parent?.label || ''}-${menu.label}`\r\n\t\t\t\tconst isMenuActive = getActiveClassIf([...(menu?.connectedRoutes || []), ...[menu.link]])\r\n\r\n\t\t\t\t// Check if any nested submenu is active (for collapsed state parent selection)\r\n\t\t\t\tconst hasActiveSubmenu = !props.open && isSubmenuActive(menu)\r\n\t\t\t\tconst shouldHighlightParent = isMenuActive || hasActiveSubmenu\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Tooltip\r\n\t\t\t\t\t\ttitle={menu.label}\r\n\t\t\t\t\t\tplacement=\"right\"\r\n\t\t\t\t\t\tarrow\r\n\t\t\t\t\t\tkey={`${menu.label}-${index}`}\r\n\t\t\t\t\t\tdisableHoverListener={props.open}\r\n\t\t\t\t\t\tdisableFocusListener={props.open}\r\n\t\t\t\t\t\tdisableTouchListener={props.open}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<ListItem\r\n\t\t\t\t\t\t\tdisablePadding\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tdisplay: 'block',\r\n\t\t\t\t\t\t\t\t// mb: 0.5,\r\n\t\t\t\t\t\t\t\t...(isRtl && {\r\n\t\t\t\t\t\t\t\t\tpadding: 0,\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\t\t<ListItemButton\r\n\t\t\t\t\t\t\t\tonClick={(e) => {\r\n\t\t\t\t\t\t\t\t\tif (!props.open && menu.submenu?.length > 0) {\r\n\t\t\t\t\t\t\t\t\t\thandleCollapsedMenuClick(e, menu)\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\thandleMenuClick(menu, parent, menu?.submenu ? -1 : index)\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\tselected={shouldHighlightParent}\r\n\t\t\t\t\t\t\t\tsx={(theme) => ({\r\n\t\t\t\t\t\t\t\t\tminHeight: props.open ? 32 : 32,\r\n\t\t\t\t\t\t\t\t\tjustifyContent: props.open ? 'initial' : 'center',\r\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\tborderRadius: 2,\r\n\t\t\t\t\t\t\t\t\tgap: 1,\r\n\t\t\t\t\t\t\t\t\t// mx: props.open ? 1 : 0.5,\r\n\t\t\t\t\t\t\t\t\t// px: props.open ? 2 : 1,\r\n\t\t\t\t\t\t\t\t\t// py: 1,\r\n\t\t\t\t\t\t\t\t\tposition: 'relative',\r\n\t\t\t\t\t\t\t\t\ttransition: 'all 0.2s ease-in-out',\r\n\r\n\t\t\t\t\t\t\t\t\t'&.Mui-selected': {\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.theme?.primary[100],\r\n\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.theme?.primary[800],\r\n\t\t\t\t\t\t\t\t\t\t'& .MuiListItemIcon-root': {\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.theme?.primary[800],\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t'& .MuiTypography-root': {\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: theme.palette.theme?.primary[800],\r\n\t\t\t\t\t\t\t\t\t\t\tfontWeight: 500,\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\t'&.Mui-selected:hover': {\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: theme.palette.theme?.primary[200],\r\n\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: props.open ? 'rgba(0, 0, 0, 0.04)' : 'rgba(0, 0, 0, 0.08)',\r\n\t\t\t\t\t\t\t\t\t\ttransform: props.open ? 'none' : 'scale(1.02)',\r\n\t\t\t\t\t\t\t\t\t},\r\n\r\n\t\t\t\t\t\t\t\t\t...(!props.open &&\r\n\t\t\t\t\t\t\t\t\t\tmenu.submenu?.length > 0 && {\r\n\t\t\t\t\t\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t\t\t\t\t\t'&::after': {\r\n\t\t\t\t\t\t\t\t\t\t\tcontent: '\"\"',\r\n\t\t\t\t\t\t\t\t\t\t\tposition: 'absolute',\r\n\t\t\t\t\t\t\t\t\t\t\t...(isRtl\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\tleft: 8,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderRight: '5px solid',\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: {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tright: 8,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tborderLeft: '5px solid',\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\ttop: '25%',\r\n\t\t\t\t\t\t\t\t\t\t\ttransform: 'translateY(-50%)',\r\n\t\t\t\t\t\t\t\t\t\t\twidth: 0,\r\n\t\t\t\t\t\t\t\t\t\t\theight: 0,\r\n\t\t\t\t\t\t\t\t\t\t\tborderTop: '4px solid transparent',\r\n\t\t\t\t\t\t\t\t\t\t\tborderBottom: '4px solid transparent',\r\n\t\t\t\t\t\t\t\t\t\t\tborderColor: 'currentColor transparent transparent transparent',\r\n\t\t\t\t\t\t\t\t\t\t\topacity: 0.7,\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\t\t<ListItemIcon\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tminWidth: props.open ? 'auto' : 0,\r\n\t\t\t\t\t\t\t\t\t\t// mr: props.open ? 1 : 'auto',\r\n\t\t\t\t\t\t\t\t\t\t...(isRtl ? { ml: 0 } : {}),\r\n\t\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\r\n\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\t\ttransition: 'all 0.2s ease-in-out',\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{menu.icon ? (\r\n\t\t\t\t\t\t\t\t\t\t<DynamicSvgIcon svgPath={menu.icon} color={shouldHighlightParent ? 'primary' : 'grey'} fontSize={props.open ? 'small' : 'medium'} />\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t<ChevronRightIcon\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: props.open ? 24 : 28,\r\n\t\t\t\t\t\t\t\t\t\t\t\ttransition: 'all 0.2s ease-in-out',\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</ListItemIcon>\r\n\r\n\t\t\t\t\t\t\t\t{props.open && (\r\n\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\t\t\tflexGrow: 1,\r\n\t\t\t\t\t\t\t\t\t\t\tposition: 'relative',\r\n\t\t\t\t\t\t\t\t\t\t\toverflow: 'hidden',\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\t\t<Text\r\n\t\t\t\t\t\t\t\t\t\t\ttype={'s3'}\r\n\t\t\t\t\t\t\t\t\t\t\tweight={level === 0 ? 'medium' : 'normal'}\r\n\t\t\t\t\t\t\t\t\t\t\tcolor={'theme.secondary.1000'}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\tflexGrow: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\tpl: level * 1.5,\r\n\t\t\t\t\t\t\t\t\t\t\t\tfontSize: level === 0 ? '0.875rem' : '0.8125rem',\r\n\t\t\t\t\t\t\t\t\t\t\t\tlineHeight: 1.4,\r\n\t\t\t\t\t\t\t\t\t\t\t\twhiteSpace: 'nowrap',\r\n\t\t\t\t\t\t\t\t\t\t\t\toverflow: 'hidden',\r\n\t\t\t\t\t\t\t\t\t\t\t\ttextOverflow: 'ellipsis',\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\t\t{menu.label}\r\n\t\t\t\t\t\t\t\t\t\t</Text>\r\n\r\n\t\t\t\t\t\t\t\t\t\t{menu.submenu?.length > 0 && (\r\n\t\t\t\t\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tml: 1,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\ttransition: 'transform 0.2s ease-in-out',\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\t{openSubmenuArray.includes(menuKey) ? (\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t<IconExpandLess\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: 20,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'theme.secondary.600',\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<IconExpandMore\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfontSize: 20,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor: 'theme.secondary.600',\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</Box>\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</ListItemButton>\r\n\r\n\t\t\t\t\t\t\t{openSubmenuArray.includes(menuKey) && menu.submenu?.length > 0 && props.open && (\r\n\t\t\t\t\t\t\t\t<Collapse in={openSubmenuArray.includes(menuKey)} timeout=\"auto\" unmountOnExit>\r\n\t\t\t\t\t\t\t\t\t<List component=\"div\" disablePadding sx={{ mt: 0.5 }}>\r\n\t\t\t\t\t\t\t\t\t\t{renderMenu(menu.submenu, menu, level + 1)}\r\n\t\t\t\t\t\t\t\t\t</List>\r\n\t\t\t\t\t\t\t\t</Collapse>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</ListItem>\r\n\t\t\t\t\t</Tooltip>\r\n\t\t\t\t)\r\n\t\t\t})\r\n\t\t},\r\n\t\t[props.open, openSubmenuArray, getActiveClassIf, handleCollapsedMenuClick, handleMenuClick, isSubmenuActive, isRtl]\r\n\t)\r\n\r\n\t// Enhanced useEffect for auto-expanding active menus\r\n\tuseEffect(() => {\r\n\t\thandleSidebarSearch(search)\r\n\r\n\t\tif (props.menu?.length) {\r\n\t\t\tconst expandedMenus: string[] = []\r\n\r\n\t\t\tconst checkAndExpandMenu = (menuItems: MenuItem[], parentLabel = '') => {\r\n\t\t\t\tmenuItems.forEach((menu) => {\r\n\t\t\t\t\tif (menu?.submenu?.length) {\r\n\t\t\t\t\t\tconst menuKey = `${parentLabel}-${menu.label}`\r\n\t\t\t\t\t\tconst allPaths = getAllMenuPaths(menu)\r\n\r\n\t\t\t\t\t\tif (getActiveClassIf(allPaths)) {\r\n\t\t\t\t\t\t\texpandedMenus.push(menuKey)\r\n\t\t\t\t\t\t\tcheckAndExpandMenu(menu.submenu, menu.label)\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\tcheckAndExpandMenu(props.menu)\r\n\t\t\tsetOpenSubmenuArray(expandedMenus)\r\n\t\t}\r\n\t}, [getActiveClassIf, handleSidebarSearch, props.menu, search, getAllMenuPaths])\r\n\r\n\tuseEffect(() => {\r\n\t\tif (props.open) {\r\n\t\t\thandleCollapsedSubmenuClose()\r\n\t\t}\r\n\t}, [props.open, handleCollapsedSubmenuClose])\r\n\r\n\tdrawerWidth = props.width\r\n\r\n\tconst appLogo = getApiConfig().appLogo || images.logo\r\n\tconst appFavicon = getApiConfig().appFavicon || images.favicon\r\n\r\n\treturn (\r\n\t\t<>\r\n\t\t\t<Drawer\r\n\t\t\t\tvariant=\"permanent\"\r\n\t\t\t\topen={props.open}\r\n\t\t\t\tanchor={document.body.dir === 'rtl' ? 'right' : 'left'}\r\n\t\t\t\tonMouseEnter={props.handleMouseEnter}\r\n\t\t\t\tonMouseLeave={props.handleMouseLeave}\r\n\t\t\t>\r\n\t\t\t\t<Box\r\n\t\t\t\t\tsx={{\r\n\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\tflexDirection: 'column',\r\n\t\t\t\t\t\theight: '100%',\r\n\t\t\t\t\t\tbackgroundColor: 'grey.100',\r\n\t\t\t\t\t}}\r\n\t\t\t\t>\r\n\t\t\t\t\t{/* Header */}\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={(theme) => ({\r\n\t\t\t\t\t\t\tborderBottom: `1px solid ${theme.palette.theme?.secondary?.[200] || theme.palette.divider}`,\r\n\t\t\t\t\t\t})}\r\n\t\t\t\t\t>\r\n\t\t\t\t\t\t<DrawerHeader>\r\n\t\t\t\t\t\t\t<img\r\n\t\t\t\t\t\t\t\tsrc={props.open ? appLogo : appFavicon}\r\n\t\t\t\t\t\t\t\talt={props.open ? 'logo' : 'favicon'}\r\n\t\t\t\t\t\t\t\twidth={!props.open && 40}\r\n\t\t\t\t\t\t\t\theight={55}\r\n\t\t\t\t\t\t\t\tstyle={{\r\n\t\t\t\t\t\t\t\t\ttransition: 'all 0.3s ease-in-out',\r\n\t\t\t\t\t\t\t\t\tfilter: 'brightness(1.1)',\r\n\t\t\t\t\t\t\t\t\tcursor: 'pointer',\r\n\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\tonClick={() => navigate(props.dashboardPath || Pathname.DASHBOARD)}\r\n\t\t\t\t\t\t\t/>\r\n\t\t\t\t\t\t</DrawerHeader>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t{/* Search Bar */}\r\n\t\t\t\t\t{props.open ? (\r\n\t\t\t\t\t\t<Box sx={{ px: 1.5, py: 1.5, borderBottom: '1px solid', borderColor: 'theme.secondary.200' }}>\r\n\t\t\t\t\t\t\t<SearchBar className=\"sidebar-search\" handleSearch={setSearch} placeholder=\"Search menu...\" value={search} sx={{ '&.MuiTextField-root': { backgroundColor: 'grey.200', border: '1px solid', borderColor: 'grey.200', borderRadius: 1 } }} />\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<ClickAwayListener onClickAway={handleCloseSearchTooltip}>\r\n\t\t\t\t\t\t\t<Box sx={{ p: 1, pb: 0, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>\r\n\t\t\t\t\t\t\t\t<Tooltip\r\n\t\t\t\t\t\t\t\t\ttitle={\r\n\t\t\t\t\t\t\t\t\t\t<SearchBar\r\n\t\t\t\t\t\t\t\t\t\t\tclassName=\"sidebar-search\"\r\n\t\t\t\t\t\t\t\t\t\t\thandleSearch={setSearch}\r\n\t\t\t\t\t\t\t\t\t\t\tplaceholder=\"Search menu...\"\r\n\t\t\t\t\t\t\t\t\t\t\tvalue={search}\r\n\t\t\t\t\t\t\t\t\t\t\tsx={{ '&.MuiTextField-root': { backgroundColor: 'transparent' } }}\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\tplacement=\"right\"\r\n\t\t\t\t\t\t\t\t\tarrow\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tp: 0,\r\n\t\t\t\t\t\t\t\t\t\tbackgroundColor: 'grey.200',\r\n\t\t\t\t\t\t\t\t\t\tborder: '1px solid',\r\n\t\t\t\t\t\t\t\t\t\tborderColor: 'grey.300',\r\n\t\t\t\t\t\t\t\t\t\t'& .MuiTooltip-arrow': {\r\n\t\t\t\t\t\t\t\t\t\t\tcolor: 'grey.300',\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\tml: '8px !important'\r\n\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\topen={isOpenSearchTooltop}\r\n\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t<IconButton color='inherit' sx={{ borderRadius: 2, p: 1.5, backgroundColor: isOpenSearchTooltop ? 'grey.200' : 'inherit' }} onClick={handleOpenSearchTooltip}>\r\n\t\t\t\t\t\t\t\t\t\t{search.trim() ? <SearchStatus /> : <Search />}\r\n\t\t\t\t\t\t\t\t\t</IconButton>\r\n\t\t\t\t\t\t\t\t</Tooltip>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</ClickAwayListener>\r\n\t\t\t\t\t)}\r\n\r\n\t\t\t\t\t{/* Menu List */}\r\n\t\t\t\t\t<Box\r\n\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\tflexGrow: 1,\r\n\t\t\t\t\t\t\toverflowY: 'auto',\r\n\t\t\t\t\t\t\tpy: 1,\r\n\t\t\t\t\t\t\t'&::-webkit-scrollbar': {\r\n\t\t\t\t\t\t\t\twidth: 6,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t'&::-webkit-scrollbar-track': {\r\n\t\t\t\t\t\t\t\tbackgroundColor: 'transparent',\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t'&::-webkit-scrollbar-thumb': {\r\n\t\t\t\t\t\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.2)',\r\n\t\t\t\t\t\t\t\tborderRadius: 3,\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\t<List className=\"sidebar-list\" sx={{ p: 0 }}>\r\n\t\t\t\t\t\t\t{renderMenu(menus, null, 0)}\r\n\t\t\t\t\t\t</List>\r\n\t\t\t\t\t</Box>\r\n\r\n\t\t\t\t\t{/* Footer */}\r\n\t\t\t\t\t{props.open && (\r\n\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\tborderTop: '1px solid',\r\n\t\t\t\t\t\t\t\tborderColor: 'theme.secondary.200',\r\n\t\t\t\t\t\t\t\tbackgroundColor: 'rgba(255, 255, 255, 0.5)',\r\n\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t<Box\r\n\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\tpadding: '.75rem 1.5rem',\r\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\t\t\t\t\talignItems: 'self-start',\r\n\t\t\t\t\t\t\t\t\tgap: 0.5,\r\n\t\t\t\t\t\t\t\t\tjustifyContent: 'center',\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\t\t<Typography\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: 'theme.secondary.600',\r\n\t\t\t\t\t\t\t\t\t\tfontSize: '.85rem',\r\n\t\t\t\t\t\t\t\t\t\tfontWeight: 500,\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\tCrafted with\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t\t<Icon\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: 'theme.error.500',\r\n\t\t\t\t\t\t\t\t\t\twidth: '1rem',\r\n\t\t\t\t\t\t\t\t\t\theight: '1rem',\r\n\t\t\t\t\t\t\t\t\t\tfontSize: '.75rem',\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</Icon>\r\n\t\t\t\t\t\t\t\t<Typography\r\n\t\t\t\t\t\t\t\t\tsx={{\r\n\t\t\t\t\t\t\t\t\t\tcolor: 'theme.secondary.600',\r\n\t\t\t\t\t\t\t\t\t\tfontSize: '.75rem',\r\n\t\t\t\t\t\t\t\t\t\tfontWeight: 500,\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<img src={images.erp_logo} />\r\n\t\t\t\t\t\t\t\t</Typography>\r\n\t\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t\t</Box>\r\n\t\t\t\t\t)}\r\n\t\t\t\t</Box>\r\n\t\t\t</Drawer>\r\n\t\t\t<IconButton\r\n\t\t\t\tsize=\"small\"\r\n\t\t\t\tonClick={() => (props.forcedOpen ? props.handleDrawerClose() : props.handleDrawerOpen())}\r\n\t\t\t\tclassName={isRtl ? 'drawer-expand-btn_rtl' : 'drawer-expand-btn'}\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tml: 'auto',\r\n\t\t\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.04)',\r\n\t\t\t\t\t'&:hover': {\r\n\t\t\t\t\t\tbackgroundColor: 'grey.100',\r\n\t\t\t\t\t},\r\n\t\t\t\t\t// transition: 'all 0.2s ease-in-out',\r\n\t\t\t\t\twidth: '30px',\r\n\t\t\t\t\theight: '30px',\r\n\t\t\t\t\tborderRadius: `8px`,\r\n\t\t\t\t\tborderTopLeftRadius: 0,\r\n\t\t\t\t\tborderBottomLeftRadius: 0,\r\n\t\t\t\t\tborderColor: 'grey.500',\r\n\t\t\t\t\t...(isRtl\r\n\t\t\t\t\t\t? !props.forcedOpen\r\n\t\t\t\t\t\t\t? { right: '63px !important', left: 'auto' }\r\n\t\t\t\t\t\t\t: { right: '299px', left: 'auto' }\r\n\t\t\t\t\t\t: !props.forcedOpen\r\n\t\t\t\t\t\t\t? { left: '63px !important', right: 'auto' }\r\n\t\t\t\t\t\t\t: { left: '299px', right: 'auto' }),\r\n\t\t\t\t\ttransition: 'all 0.3s ease-in-out',\r\n\t\t\t\t}}\r\n\t\t\t>\r\n\t\t\t\t{props.theme.direction === 'rtl' ? (\r\n\t\t\t\t\tprops.forcedOpen ? (\r\n\t\t\t\t\t\t<ChevronRightIcon fontSize=\"small\" />\r\n\t\t\t\t\t) : (\r\n\t\t\t\t\t\t<ChevronLeftIcon fontSize=\"small\" />\r\n\t\t\t\t\t)\r\n\t\t\t\t) : props.forcedOpen ? (\r\n\t\t\t\t\t<ChevronLeftIcon fontSize=\"small\" />\r\n\t\t\t\t) : (\r\n\t\t\t\t\t<ChevronRightIcon fontSize=\"small\" />\r\n\t\t\t\t)}\r\n\t\t\t</IconButton>\r\n\t\t\t{/* Collapsed Submenu Popover */}\r\n\t\t\t{collapsedSubmenuState.menu && (\r\n\t\t\t\t<CollapsedSubmenu\r\n\t\t\t\t\tmenu={collapsedSubmenuState.menu}\r\n\t\t\t\t\tanchorEl={collapsedSubmenuState.anchorEl}\r\n\t\t\t\t\topen={collapsedSubmenuState.open}\r\n\t\t\t\t\tonClose={handleCollapsedSubmenuClose}\r\n\t\t\t\t\tonItemClick={handleSubmenuItemClick}\r\n\t\t\t\t\tonSubmenuClick={handleCollapsedSubmenuClick}\r\n\t\t\t\t\tgetActiveClassIf={getActiveClassIf}\r\n\t\t\t\t\tbreadcrumb={collapsedSubmenuState.breadcrumb}\r\n\t\t\t\t\tonBreadcrumbClick={handleBreadcrumbClick}\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 Sidebar\r\n"],"names":["props","React","Typography","_a","Text","search","menus","_b","IconExpandMore"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";const e=require("react/jsx-runtime"),t=require("react"),a=require("@mui/material/styles"),r=require("@mui/material/Box"),n=require("./appbar-
|
|
2
|
-
//# sourceMappingURL=sidebarScreen-
|
|
1
|
+
"use strict";const e=require("react/jsx-runtime"),t=require("react"),a=require("@mui/material/styles"),r=require("@mui/material/Box"),n=require("./appbar-C6Es9HGk.js"),o=require("./sidebar-B3SExDRU.js"),i=require("./mui.constants-BRJ6xCYX.js"),s=require("./useLangauge-p2qKwusp.js"),l=require("./api-DG3x2G1d.js"),d=require("react-router-dom"),u=require("./common-wRWMk0Fs.js"),c="_is_drawer_open";exports.SidebarLayout=w=>{const g=a.useTheme(),{currentLanguage:m}=s.useLanguage(),h=t.useMemo(()=>"rtl"===(null==m?void 0:m.direction),[m]),[p,f]=t.useState(!0),[S,v]=t.useState(!1),[x,y]=t.useState(!1),j=d.useLocation(),b=t.useMemo(()=>j.pathname,[j.pathname]),q=p||!p&&S,O=t.useCallback(()=>{f(!0),v(!1);try{window.localStorage.setItem(c,"true")}catch(e){console.warn("Failed to save drawer state to localStorage:",e)}},[]),_=t.useCallback(()=>{f(!1),window.localStorage.setItem("_is_drawer_open","false")},[]),[I,L]=t.useState(null),k=t.useCallback(async()=>{var e,t;const a=u.getToken(),r={"x-token":a["x-token"],"x-timezone":String(a["x-timezone"])},n=await l.getV1Settings(r),o=n&&(null==(t=null==(e=null==n?void 0:n.data)?void 0:e.settings)?void 0:t[0])||null;L(o),localStorage.setItem("wip_settings_data",JSON.stringify(o))},[]);t.useEffect(()=>{(null==b?void 0:b.includes("manufacturing"))&&k()},[k,b]);const[C,D]=t.useState(w.menu);t.useEffect(()=>{if(I&&Array.isArray(null==w?void 0:w.menu)){console.log("wipSettingsData: ",I);const e=w.menu.filter(e=>(null==I?void 0:I.enable_production_planning)?e:"Plans"!==e.label);D(e)}},[I,w.menu]);const E=t.useCallback(()=>{!p&&x&&(v(!1),window.localStorage.setItem(c,"false"))},[p,x]),A=t.useCallback(()=>{p?_():O()},[p,_,O]);return t.useEffect(()=>{(()=>{try{if("undefined"!=typeof window&&window.localStorage){const e=window.localStorage.getItem(c);f("true"===e),v(!1),y(!0)}else f(!0),y(!0)}catch(e){console.warn("Failed to read drawer state from localStorage:",e),f(!0),y(!0)}})()},[]),t.useEffect(()=>{const e=()=>{try{if("undefined"!=typeof window&&window.localStorage){const e="true"===window.localStorage.getItem(c);e!==p&&(f(e),v(!1))}}catch(e){console.warn("Failed to sync drawer state on window focus:",e)}};return window.addEventListener("focus",e),()=>{window.removeEventListener("focus",e)}},[p]),x?e.jsxs(r,{sx:{display:"flex",minHeight:"100vh",direction:h?"rtl":"ltr"},children:[e.jsx(n.AppBarWrapper,{open:p,handleDrawerOpen:O,handleDrawerClose:_,toggleDrawer:A,width:i.drawerWidth,forcedOpen:p,hoverOpen:S}),e.jsx(o.Sidebar,{open:p,forcedOpen:p,hoverOpen:S,handleDrawerClose:_,handleDrawerOpen:O,toggleDrawer:A,width:i.drawerWidth,theme:g,menu:C,handleMouseEnter:()=>{p||(setOpen(!0),window.localStorage.setItem(c,"true"))},handleMouseLeave:E,isInitialized:x,dashboardPath:w.dashboardPath}),e.jsx(n.ActivityArea,{isDrawerOpen:q,drawerWidth:i.drawerWidth,forcedOpen:p,children:w.children})]}):e.jsx(r,{sx:{display:"flex",minHeight:"100vh",alignItems:"center",justifyContent:"center"},children:e.jsx(r,{children:"Loading..."})})};
|
|
2
|
+
//# sourceMappingURL=sidebarScreen-Dxb_e58p.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebarScreen-CUf5Onkp.js","sources":["../../src/layout/sidebarScreen/sidebarScreen.tsx"],"sourcesContent":["import { useEffect, useState, useCallback, useMemo } from 'react';\r\n\r\nimport { useTheme } from '@mui/material/styles';\r\nimport Box from '@mui/material/Box';\r\n\r\nimport AppBar from '../../components/appbar/appbar';\r\nimport SideBar from '../../components/sidebar/sidebar';\r\nimport ActivityArea from '../../components/activityArea/activityArea';\r\n\r\nimport drawerWidth from '../../constants/mui.constants';\r\n// const drawerWidth = 240;\r\nimport { useLanguage } from '../../hooks/useLangauge';\r\nimport { getToken } from '@/utils';\r\nimport { getV1Settings } from '../../api-client/api.manufacturing/api';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\n// Local storage key for drawer state\r\nconst DRAWER_STATE_KEY = '_is_drawer_open';\r\n\r\n// Interface for better type safety\r\nexport interface ISidebarLayoutProps {\r\n\tmenu: any[];\r\n\tchildren: React.ReactNode;\r\n\tdashboardPath?: string;\r\n}\r\n\r\nexport const SidebarLayout = (props: ISidebarLayoutProps) => {\r\n\tconst theme = useTheme();\r\n\tconst { currentLanguage } = useLanguage();\r\n\tconst isRtl = useMemo(\r\n\t\t() => currentLanguage?.direction === 'rtl',\r\n\t\t[currentLanguage]\r\n\t);\r\n\t// Enhanced state management\r\n\tconst [forcedOpen, setForcedOpen] = useState(true);\r\n\tconst [hoverOpen, setHoverOpen] = useState(false);\r\n\tconst [isInitialized, setIsInitialized] = useState(false);\r\n\tconst location = useLocation();\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\r\n\t// Memoized computed state for actual drawer open status\r\n\tconst isDrawerOpen = forcedOpen || (!forcedOpen && hoverOpen);\r\n\r\n\t// Enhanced drawer control functions with better state management\r\n\tconst handleDrawerOpen = useCallback(() => {\r\n\t\tsetForcedOpen(true);\r\n\t\tsetHoverOpen(false); // Clear hover state when forcing open\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn('Failed to save drawer state to localStorage:', error);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst handleDrawerClose = useCallback(() => {\r\n\t\tsetForcedOpen(false);\r\n\t\twindow.localStorage.setItem('_is_drawer_open', 'false');\r\n\t}, []);\r\n\r\n\tconst [wipSettingsData, setWipSettingsData] = useState<any>(null);\r\n\r\n\tconst getSettings = useCallback(async () => {\r\n\t\t// getToken returns { \"x-token\": string; \"x-timezone\": number }, but API expects string type for \"x-timezone\"\r\n\t\tconst tokenData = getToken();\r\n\t\tconst apiParams = {\r\n\t\t\t'x-token': tokenData['x-token'],\r\n\t\t\t'x-timezone': String(tokenData['x-timezone'])\r\n\t\t};\r\n\t\tconst response = await getV1Settings(apiParams);\r\n\t\t// The \"data\" property may not exist on GetV1SettingsResponses, so check existence safely\r\n\t\tconst data = (response && (response as any)?.data?.settings?.[0]) || null;\r\n\t\tsetWipSettingsData(data);\r\n\t\tlocalStorage.setItem('wip_settings_data', JSON.stringify(data));\r\n\t}, []);\r\n\tuseEffect(() => {\r\n\t\tif(curPathName?.includes('manufacturing')) {\r\n\t\t\tgetSettings();\r\n\t\t}\r\n\t}, [getSettings, curPathName]);\r\n\r\n\tconst [manufacturingSubmenu, setManufacturingSubmenu] = useState<any>(\r\n\t\tprops.menu\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (wipSettingsData && Array.isArray(props?.menu)) {\r\n\t\t\tconsole.log('wipSettingsData: ', wipSettingsData);\r\n\t\t\tconst _new = props.menu.filter((item) => {\r\n\t\t\t\tif (!wipSettingsData?.enable_production_planning) {\r\n\t\t\t\t\treturn item.label !== 'Plans';\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tsetManufacturingSubmenu(_new);\r\n\t\t}\r\n\t}, [wipSettingsData, props.menu]);\r\n\t// const module_type = '';\r\n\r\n\tconst handleMouseEnter = () => {\r\n\t\tif (!forcedOpen) {\r\n\t\t\tsetOpen(true);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleMouseLeave = useCallback(() => {\r\n\t\tif (!forcedOpen && isInitialized) {\r\n\t\t\tsetHoverOpen(false);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'false');\r\n\t\t}\r\n\t}, [forcedOpen, isInitialized]);\r\n\r\n\t// Toggle function for programmatic control\r\n\tconst toggleDrawer = useCallback(() => {\r\n\t\tif (forcedOpen) {\r\n\t\t\thandleDrawerClose();\r\n\t\t} else {\r\n\t\t\thandleDrawerOpen();\r\n\t\t}\r\n\t}, [forcedOpen, handleDrawerClose, handleDrawerOpen]);\r\n\r\n\t// Enhanced initialization with error handling\r\n\tuseEffect(() => {\r\n\t\tconst initializeDrawerState = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\tsetHoverOpen(false); // Ensure hover state is reset\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Fallback for environments without localStorage\r\n\t\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to read drawer state from localStorage:', error);\r\n\t\t\t\t// Fallback to default state\r\n\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\tsetIsInitialized(true);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tinitializeDrawerState();\r\n\t}, []);\r\n\r\n\t// Handle window focus to sync state across tabs\r\n\tuseEffect(() => {\r\n\t\tconst handleWindowFocus = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tif (shouldBeOpen !== forcedOpen) {\r\n\t\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\t\tsetHoverOpen(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to sync drawer state on window focus:', error);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twindow.addEventListener('focus', handleWindowFocus);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener('focus', handleWindowFocus);\r\n\t\t};\r\n\t}, [forcedOpen]);\r\n\r\n\t// Prevent rendering until initialization is complete\r\n\tif (!isInitialized) {\r\n\t\treturn (\r\n\t\t\t<Box\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\tminHeight: '100vh',\r\n\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\tjustifyContent: 'center'\r\n\t\t\t\t}}>\r\n\t\t\t\t{/* Optional loading indicator */}\r\n\t\t\t\t<Box>Loading...</Box>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{\r\n\t\t\t\tdisplay: 'flex',\r\n\t\t\t\tminHeight: '100vh',\r\n\t\t\t\tdirection: isRtl ? 'rtl' : 'ltr'\r\n\t\t\t}}>\r\n\t\t\t<AppBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t/>\r\n\r\n\t\t\t<SideBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\ttheme={theme}\r\n\t\t\t\tmenu={manufacturingSubmenu}\r\n\t\t\t\thandleMouseEnter={handleMouseEnter}\r\n\t\t\t\thandleMouseLeave={handleMouseLeave}\r\n\t\t\t\tisInitialized={isInitialized}\r\n\t\t\t\tdashboardPath={props.dashboardPath}\r\n\t\t\t/>\r\n\r\n\t\t\t<ActivityArea\r\n\t\t\t\tisDrawerOpen={isDrawerOpen}\r\n\t\t\t\tdrawerWidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}>\r\n\t\t\t\t{props.children}\r\n\t\t\t</ActivityArea>\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default SidebarLayout;\r\n"],"names":["DRAWER_STATE_KEY","props","theme","useTheme","currentLanguage","useLanguage","isRtl","useMemo","direction","forcedOpen","setForcedOpen","useState","hoverOpen","setHoverOpen","isInitialized","setIsInitialized","location","useLocation","curPathName","pathname","isDrawerOpen","handleDrawerOpen","useCallback","window","localStorage","setItem","error","console","warn","handleDrawerClose","wipSettingsData","setWipSettingsData","getSettings","async","tokenData","getToken","apiParams","String","response","getV1Settings","data","_b","_a","settings","JSON","stringify","useEffect","includes","manufacturingSubmenu","setManufacturingSubmenu","menu","Array","isArray","log","_new","filter","item","enable_production_planning","label","handleMouseLeave","toggleDrawer","savedState","getItem","initializeDrawerState","handleWindowFocus","shouldBeOpen","addEventListener","removeEventListener","jsxs","Box","sx","display","minHeight","children","jsx","AppBar","open","width","drawerWidth","SideBar","handleMouseEnter","setOpen","dashboardPath","ActivityArea","alignItems","justifyContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sidebarScreen-Dxb_e58p.js","sources":["../../src/layout/sidebarScreen/sidebarScreen.tsx"],"sourcesContent":["import { useEffect, useState, useCallback, useMemo } from 'react';\r\n\r\nimport { useTheme } from '@mui/material/styles';\r\nimport Box from '@mui/material/Box';\r\n\r\nimport AppBar from '../../components/appbar/appbar';\r\nimport SideBar from '../../components/sidebar/sidebar';\r\nimport ActivityArea from '../../components/activityArea/activityArea';\r\n\r\nimport drawerWidth from '../../constants/mui.constants';\r\n// const drawerWidth = 240;\r\nimport { useLanguage } from '../../hooks/useLangauge';\r\nimport { getToken } from '@/utils';\r\nimport { getV1Settings } from '../../api-client/api.manufacturing/api';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\n// Local storage key for drawer state\r\nconst DRAWER_STATE_KEY = '_is_drawer_open';\r\n\r\n// Interface for better type safety\r\nexport interface ISidebarLayoutProps {\r\n\tmenu: any[];\r\n\tchildren: React.ReactNode;\r\n\tdashboardPath?: string;\r\n}\r\n\r\nexport const SidebarLayout = (props: ISidebarLayoutProps) => {\r\n\tconst theme = useTheme();\r\n\tconst { currentLanguage } = useLanguage();\r\n\tconst isRtl = useMemo(\r\n\t\t() => currentLanguage?.direction === 'rtl',\r\n\t\t[currentLanguage]\r\n\t);\r\n\t// Enhanced state management\r\n\tconst [forcedOpen, setForcedOpen] = useState(true);\r\n\tconst [hoverOpen, setHoverOpen] = useState(false);\r\n\tconst [isInitialized, setIsInitialized] = useState(false);\r\n\tconst location = useLocation();\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\r\n\t// Memoized computed state for actual drawer open status\r\n\tconst isDrawerOpen = forcedOpen || (!forcedOpen && hoverOpen);\r\n\r\n\t// Enhanced drawer control functions with better state management\r\n\tconst handleDrawerOpen = useCallback(() => {\r\n\t\tsetForcedOpen(true);\r\n\t\tsetHoverOpen(false); // Clear hover state when forcing open\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn('Failed to save drawer state to localStorage:', error);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst handleDrawerClose = useCallback(() => {\r\n\t\tsetForcedOpen(false);\r\n\t\twindow.localStorage.setItem('_is_drawer_open', 'false');\r\n\t}, []);\r\n\r\n\tconst [wipSettingsData, setWipSettingsData] = useState<any>(null);\r\n\r\n\tconst getSettings = useCallback(async () => {\r\n\t\t// getToken returns { \"x-token\": string; \"x-timezone\": number }, but API expects string type for \"x-timezone\"\r\n\t\tconst tokenData = getToken();\r\n\t\tconst apiParams = {\r\n\t\t\t'x-token': tokenData['x-token'],\r\n\t\t\t'x-timezone': String(tokenData['x-timezone'])\r\n\t\t};\r\n\t\tconst response = await getV1Settings(apiParams);\r\n\t\t// The \"data\" property may not exist on GetV1SettingsResponses, so check existence safely\r\n\t\tconst data = (response && (response as any)?.data?.settings?.[0]) || null;\r\n\t\tsetWipSettingsData(data);\r\n\t\tlocalStorage.setItem('wip_settings_data', JSON.stringify(data));\r\n\t}, []);\r\n\tuseEffect(() => {\r\n\t\tif(curPathName?.includes('manufacturing')) {\r\n\t\t\tgetSettings();\r\n\t\t}\r\n\t}, [getSettings, curPathName]);\r\n\r\n\tconst [manufacturingSubmenu, setManufacturingSubmenu] = useState<any>(\r\n\t\tprops.menu\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (wipSettingsData && Array.isArray(props?.menu)) {\r\n\t\t\tconsole.log('wipSettingsData: ', wipSettingsData);\r\n\t\t\tconst _new = props.menu.filter((item) => {\r\n\t\t\t\tif (!wipSettingsData?.enable_production_planning) {\r\n\t\t\t\t\treturn item.label !== 'Plans';\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tsetManufacturingSubmenu(_new);\r\n\t\t}\r\n\t}, [wipSettingsData, props.menu]);\r\n\t// const module_type = '';\r\n\r\n\tconst handleMouseEnter = () => {\r\n\t\tif (!forcedOpen) {\r\n\t\t\tsetOpen(true);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleMouseLeave = useCallback(() => {\r\n\t\tif (!forcedOpen && isInitialized) {\r\n\t\t\tsetHoverOpen(false);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'false');\r\n\t\t}\r\n\t}, [forcedOpen, isInitialized]);\r\n\r\n\t// Toggle function for programmatic control\r\n\tconst toggleDrawer = useCallback(() => {\r\n\t\tif (forcedOpen) {\r\n\t\t\thandleDrawerClose();\r\n\t\t} else {\r\n\t\t\thandleDrawerOpen();\r\n\t\t}\r\n\t}, [forcedOpen, handleDrawerClose, handleDrawerOpen]);\r\n\r\n\t// Enhanced initialization with error handling\r\n\tuseEffect(() => {\r\n\t\tconst initializeDrawerState = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\tsetHoverOpen(false); // Ensure hover state is reset\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Fallback for environments without localStorage\r\n\t\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to read drawer state from localStorage:', error);\r\n\t\t\t\t// Fallback to default state\r\n\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\tsetIsInitialized(true);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tinitializeDrawerState();\r\n\t}, []);\r\n\r\n\t// Handle window focus to sync state across tabs\r\n\tuseEffect(() => {\r\n\t\tconst handleWindowFocus = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tif (shouldBeOpen !== forcedOpen) {\r\n\t\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\t\tsetHoverOpen(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to sync drawer state on window focus:', error);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twindow.addEventListener('focus', handleWindowFocus);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener('focus', handleWindowFocus);\r\n\t\t};\r\n\t}, [forcedOpen]);\r\n\r\n\t// Prevent rendering until initialization is complete\r\n\tif (!isInitialized) {\r\n\t\treturn (\r\n\t\t\t<Box\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\tminHeight: '100vh',\r\n\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\tjustifyContent: 'center'\r\n\t\t\t\t}}>\r\n\t\t\t\t{/* Optional loading indicator */}\r\n\t\t\t\t<Box>Loading...</Box>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{\r\n\t\t\t\tdisplay: 'flex',\r\n\t\t\t\tminHeight: '100vh',\r\n\t\t\t\tdirection: isRtl ? 'rtl' : 'ltr'\r\n\t\t\t}}>\r\n\t\t\t<AppBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t/>\r\n\r\n\t\t\t<SideBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\ttheme={theme}\r\n\t\t\t\tmenu={manufacturingSubmenu}\r\n\t\t\t\thandleMouseEnter={handleMouseEnter}\r\n\t\t\t\thandleMouseLeave={handleMouseLeave}\r\n\t\t\t\tisInitialized={isInitialized}\r\n\t\t\t\tdashboardPath={props.dashboardPath}\r\n\t\t\t/>\r\n\r\n\t\t\t<ActivityArea\r\n\t\t\t\tisDrawerOpen={isDrawerOpen}\r\n\t\t\t\tdrawerWidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}>\r\n\t\t\t\t{props.children}\r\n\t\t\t</ActivityArea>\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default SidebarLayout;\r\n"],"names":["DRAWER_STATE_KEY","props","theme","useTheme","currentLanguage","useLanguage","isRtl","useMemo","direction","forcedOpen","setForcedOpen","useState","hoverOpen","setHoverOpen","isInitialized","setIsInitialized","location","useLocation","curPathName","pathname","isDrawerOpen","handleDrawerOpen","useCallback","window","localStorage","setItem","error","console","warn","handleDrawerClose","wipSettingsData","setWipSettingsData","getSettings","async","tokenData","getToken","apiParams","String","response","getV1Settings","data","_b","_a","settings","JSON","stringify","useEffect","includes","manufacturingSubmenu","setManufacturingSubmenu","menu","Array","isArray","log","_new","filter","item","enable_production_planning","label","handleMouseLeave","toggleDrawer","savedState","getItem","initializeDrawerState","handleWindowFocus","shouldBeOpen","addEventListener","removeEventListener","jsxs","Box","sx","display","minHeight","children","jsx","AppBar","open","width","drawerWidth","SideBar","handleMouseEnter","setOpen","dashboardPath","ActivityArea","alignItems","justifyContent"],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { useMemo, useState, useCallback, useEffect } from "react";
|
|
3
3
|
import { useTheme } from "@mui/material/styles";
|
|
4
4
|
import Box from "@mui/material/Box";
|
|
5
|
-
import { a as AppBarWrapper, A as ActivityArea } from "./appbar-
|
|
6
|
-
import { S as Sidebar } from "./sidebar-
|
|
5
|
+
import { a as AppBarWrapper, A as ActivityArea } from "./appbar-CKrHdx9n.esm.js";
|
|
6
|
+
import { S as Sidebar } from "./sidebar-n9Y25HU-.esm.js";
|
|
7
7
|
import { d as drawerWidth } from "./mui.constants-BFBzxaiA.esm.js";
|
|
8
8
|
import { u as useLanguage } from "./useLangauge-CmXInHk1.esm.js";
|
|
9
9
|
import { l as getV1Settings } from "./api-BPKwvlkQ.esm.js";
|
|
@@ -199,4 +199,4 @@ const SidebarLayout = (props) => {
|
|
|
199
199
|
export {
|
|
200
200
|
SidebarLayout as S
|
|
201
201
|
};
|
|
202
|
-
//# sourceMappingURL=sidebarScreen-
|
|
202
|
+
//# sourceMappingURL=sidebarScreen-_Zt2pSOx.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebarScreen-CLjYZOzQ.esm.js","sources":["../../src/layout/sidebarScreen/sidebarScreen.tsx"],"sourcesContent":["import { useEffect, useState, useCallback, useMemo } from 'react';\r\n\r\nimport { useTheme } from '@mui/material/styles';\r\nimport Box from '@mui/material/Box';\r\n\r\nimport AppBar from '../../components/appbar/appbar';\r\nimport SideBar from '../../components/sidebar/sidebar';\r\nimport ActivityArea from '../../components/activityArea/activityArea';\r\n\r\nimport drawerWidth from '../../constants/mui.constants';\r\n// const drawerWidth = 240;\r\nimport { useLanguage } from '../../hooks/useLangauge';\r\nimport { getToken } from '@/utils';\r\nimport { getV1Settings } from '../../api-client/api.manufacturing/api';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\n// Local storage key for drawer state\r\nconst DRAWER_STATE_KEY = '_is_drawer_open';\r\n\r\n// Interface for better type safety\r\nexport interface ISidebarLayoutProps {\r\n\tmenu: any[];\r\n\tchildren: React.ReactNode;\r\n\tdashboardPath?: string;\r\n}\r\n\r\nexport const SidebarLayout = (props: ISidebarLayoutProps) => {\r\n\tconst theme = useTheme();\r\n\tconst { currentLanguage } = useLanguage();\r\n\tconst isRtl = useMemo(\r\n\t\t() => currentLanguage?.direction === 'rtl',\r\n\t\t[currentLanguage]\r\n\t);\r\n\t// Enhanced state management\r\n\tconst [forcedOpen, setForcedOpen] = useState(true);\r\n\tconst [hoverOpen, setHoverOpen] = useState(false);\r\n\tconst [isInitialized, setIsInitialized] = useState(false);\r\n\tconst location = useLocation();\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\r\n\t// Memoized computed state for actual drawer open status\r\n\tconst isDrawerOpen = forcedOpen || (!forcedOpen && hoverOpen);\r\n\r\n\t// Enhanced drawer control functions with better state management\r\n\tconst handleDrawerOpen = useCallback(() => {\r\n\t\tsetForcedOpen(true);\r\n\t\tsetHoverOpen(false); // Clear hover state when forcing open\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn('Failed to save drawer state to localStorage:', error);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst handleDrawerClose = useCallback(() => {\r\n\t\tsetForcedOpen(false);\r\n\t\twindow.localStorage.setItem('_is_drawer_open', 'false');\r\n\t}, []);\r\n\r\n\tconst [wipSettingsData, setWipSettingsData] = useState<any>(null);\r\n\r\n\tconst getSettings = useCallback(async () => {\r\n\t\t// getToken returns { \"x-token\": string; \"x-timezone\": number }, but API expects string type for \"x-timezone\"\r\n\t\tconst tokenData = getToken();\r\n\t\tconst apiParams = {\r\n\t\t\t'x-token': tokenData['x-token'],\r\n\t\t\t'x-timezone': String(tokenData['x-timezone'])\r\n\t\t};\r\n\t\tconst response = await getV1Settings(apiParams);\r\n\t\t// The \"data\" property may not exist on GetV1SettingsResponses, so check existence safely\r\n\t\tconst data = (response && (response as any)?.data?.settings?.[0]) || null;\r\n\t\tsetWipSettingsData(data);\r\n\t\tlocalStorage.setItem('wip_settings_data', JSON.stringify(data));\r\n\t}, []);\r\n\tuseEffect(() => {\r\n\t\tif(curPathName?.includes('manufacturing')) {\r\n\t\t\tgetSettings();\r\n\t\t}\r\n\t}, [getSettings, curPathName]);\r\n\r\n\tconst [manufacturingSubmenu, setManufacturingSubmenu] = useState<any>(\r\n\t\tprops.menu\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (wipSettingsData && Array.isArray(props?.menu)) {\r\n\t\t\tconsole.log('wipSettingsData: ', wipSettingsData);\r\n\t\t\tconst _new = props.menu.filter((item) => {\r\n\t\t\t\tif (!wipSettingsData?.enable_production_planning) {\r\n\t\t\t\t\treturn item.label !== 'Plans';\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tsetManufacturingSubmenu(_new);\r\n\t\t}\r\n\t}, [wipSettingsData, props.menu]);\r\n\t// const module_type = '';\r\n\r\n\tconst handleMouseEnter = () => {\r\n\t\tif (!forcedOpen) {\r\n\t\t\tsetOpen(true);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleMouseLeave = useCallback(() => {\r\n\t\tif (!forcedOpen && isInitialized) {\r\n\t\t\tsetHoverOpen(false);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'false');\r\n\t\t}\r\n\t}, [forcedOpen, isInitialized]);\r\n\r\n\t// Toggle function for programmatic control\r\n\tconst toggleDrawer = useCallback(() => {\r\n\t\tif (forcedOpen) {\r\n\t\t\thandleDrawerClose();\r\n\t\t} else {\r\n\t\t\thandleDrawerOpen();\r\n\t\t}\r\n\t}, [forcedOpen, handleDrawerClose, handleDrawerOpen]);\r\n\r\n\t// Enhanced initialization with error handling\r\n\tuseEffect(() => {\r\n\t\tconst initializeDrawerState = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\tsetHoverOpen(false); // Ensure hover state is reset\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Fallback for environments without localStorage\r\n\t\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to read drawer state from localStorage:', error);\r\n\t\t\t\t// Fallback to default state\r\n\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\tsetIsInitialized(true);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tinitializeDrawerState();\r\n\t}, []);\r\n\r\n\t// Handle window focus to sync state across tabs\r\n\tuseEffect(() => {\r\n\t\tconst handleWindowFocus = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tif (shouldBeOpen !== forcedOpen) {\r\n\t\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\t\tsetHoverOpen(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to sync drawer state on window focus:', error);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twindow.addEventListener('focus', handleWindowFocus);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener('focus', handleWindowFocus);\r\n\t\t};\r\n\t}, [forcedOpen]);\r\n\r\n\t// Prevent rendering until initialization is complete\r\n\tif (!isInitialized) {\r\n\t\treturn (\r\n\t\t\t<Box\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\tminHeight: '100vh',\r\n\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\tjustifyContent: 'center'\r\n\t\t\t\t}}>\r\n\t\t\t\t{/* Optional loading indicator */}\r\n\t\t\t\t<Box>Loading...</Box>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{\r\n\t\t\t\tdisplay: 'flex',\r\n\t\t\t\tminHeight: '100vh',\r\n\t\t\t\tdirection: isRtl ? 'rtl' : 'ltr'\r\n\t\t\t}}>\r\n\t\t\t<AppBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t/>\r\n\r\n\t\t\t<SideBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\ttheme={theme}\r\n\t\t\t\tmenu={manufacturingSubmenu}\r\n\t\t\t\thandleMouseEnter={handleMouseEnter}\r\n\t\t\t\thandleMouseLeave={handleMouseLeave}\r\n\t\t\t\tisInitialized={isInitialized}\r\n\t\t\t\tdashboardPath={props.dashboardPath}\r\n\t\t\t/>\r\n\r\n\t\t\t<ActivityArea\r\n\t\t\t\tisDrawerOpen={isDrawerOpen}\r\n\t\t\t\tdrawerWidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}>\r\n\t\t\t\t{props.children}\r\n\t\t\t</ActivityArea>\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default SidebarLayout;\r\n"],"names":["AppBar","SideBar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sidebarScreen-_Zt2pSOx.esm.js","sources":["../../src/layout/sidebarScreen/sidebarScreen.tsx"],"sourcesContent":["import { useEffect, useState, useCallback, useMemo } from 'react';\r\n\r\nimport { useTheme } from '@mui/material/styles';\r\nimport Box from '@mui/material/Box';\r\n\r\nimport AppBar from '../../components/appbar/appbar';\r\nimport SideBar from '../../components/sidebar/sidebar';\r\nimport ActivityArea from '../../components/activityArea/activityArea';\r\n\r\nimport drawerWidth from '../../constants/mui.constants';\r\n// const drawerWidth = 240;\r\nimport { useLanguage } from '../../hooks/useLangauge';\r\nimport { getToken } from '@/utils';\r\nimport { getV1Settings } from '../../api-client/api.manufacturing/api';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\n// Local storage key for drawer state\r\nconst DRAWER_STATE_KEY = '_is_drawer_open';\r\n\r\n// Interface for better type safety\r\nexport interface ISidebarLayoutProps {\r\n\tmenu: any[];\r\n\tchildren: React.ReactNode;\r\n\tdashboardPath?: string;\r\n}\r\n\r\nexport const SidebarLayout = (props: ISidebarLayoutProps) => {\r\n\tconst theme = useTheme();\r\n\tconst { currentLanguage } = useLanguage();\r\n\tconst isRtl = useMemo(\r\n\t\t() => currentLanguage?.direction === 'rtl',\r\n\t\t[currentLanguage]\r\n\t);\r\n\t// Enhanced state management\r\n\tconst [forcedOpen, setForcedOpen] = useState(true);\r\n\tconst [hoverOpen, setHoverOpen] = useState(false);\r\n\tconst [isInitialized, setIsInitialized] = useState(false);\r\n\tconst location = useLocation();\r\n\tconst curPathName = useMemo(() => location.pathname, [location.pathname])\r\n\r\n\t// Memoized computed state for actual drawer open status\r\n\tconst isDrawerOpen = forcedOpen || (!forcedOpen && hoverOpen);\r\n\r\n\t// Enhanced drawer control functions with better state management\r\n\tconst handleDrawerOpen = useCallback(() => {\r\n\t\tsetForcedOpen(true);\r\n\t\tsetHoverOpen(false); // Clear hover state when forcing open\r\n\t\ttry {\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t} catch (error) {\r\n\t\t\tconsole.warn('Failed to save drawer state to localStorage:', error);\r\n\t\t}\r\n\t}, []);\r\n\r\n\tconst handleDrawerClose = useCallback(() => {\r\n\t\tsetForcedOpen(false);\r\n\t\twindow.localStorage.setItem('_is_drawer_open', 'false');\r\n\t}, []);\r\n\r\n\tconst [wipSettingsData, setWipSettingsData] = useState<any>(null);\r\n\r\n\tconst getSettings = useCallback(async () => {\r\n\t\t// getToken returns { \"x-token\": string; \"x-timezone\": number }, but API expects string type for \"x-timezone\"\r\n\t\tconst tokenData = getToken();\r\n\t\tconst apiParams = {\r\n\t\t\t'x-token': tokenData['x-token'],\r\n\t\t\t'x-timezone': String(tokenData['x-timezone'])\r\n\t\t};\r\n\t\tconst response = await getV1Settings(apiParams);\r\n\t\t// The \"data\" property may not exist on GetV1SettingsResponses, so check existence safely\r\n\t\tconst data = (response && (response as any)?.data?.settings?.[0]) || null;\r\n\t\tsetWipSettingsData(data);\r\n\t\tlocalStorage.setItem('wip_settings_data', JSON.stringify(data));\r\n\t}, []);\r\n\tuseEffect(() => {\r\n\t\tif(curPathName?.includes('manufacturing')) {\r\n\t\t\tgetSettings();\r\n\t\t}\r\n\t}, [getSettings, curPathName]);\r\n\r\n\tconst [manufacturingSubmenu, setManufacturingSubmenu] = useState<any>(\r\n\t\tprops.menu\r\n\t);\r\n\r\n\tuseEffect(() => {\r\n\t\tif (wipSettingsData && Array.isArray(props?.menu)) {\r\n\t\t\tconsole.log('wipSettingsData: ', wipSettingsData);\r\n\t\t\tconst _new = props.menu.filter((item) => {\r\n\t\t\t\tif (!wipSettingsData?.enable_production_planning) {\r\n\t\t\t\t\treturn item.label !== 'Plans';\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn item;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tsetManufacturingSubmenu(_new);\r\n\t\t}\r\n\t}, [wipSettingsData, props.menu]);\r\n\t// const module_type = '';\r\n\r\n\tconst handleMouseEnter = () => {\r\n\t\tif (!forcedOpen) {\r\n\t\t\tsetOpen(true);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'true');\r\n\t\t}\r\n\t};\r\n\r\n\tconst handleMouseLeave = useCallback(() => {\r\n\t\tif (!forcedOpen && isInitialized) {\r\n\t\t\tsetHoverOpen(false);\r\n\t\t\twindow.localStorage.setItem(DRAWER_STATE_KEY, 'false');\r\n\t\t}\r\n\t}, [forcedOpen, isInitialized]);\r\n\r\n\t// Toggle function for programmatic control\r\n\tconst toggleDrawer = useCallback(() => {\r\n\t\tif (forcedOpen) {\r\n\t\t\thandleDrawerClose();\r\n\t\t} else {\r\n\t\t\thandleDrawerOpen();\r\n\t\t}\r\n\t}, [forcedOpen, handleDrawerClose, handleDrawerOpen]);\r\n\r\n\t// Enhanced initialization with error handling\r\n\tuseEffect(() => {\r\n\t\tconst initializeDrawerState = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\tsetHoverOpen(false); // Ensure hover state is reset\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Fallback for environments without localStorage\r\n\t\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\t\tsetIsInitialized(true);\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to read drawer state from localStorage:', error);\r\n\t\t\t\t// Fallback to default state\r\n\t\t\t\tsetForcedOpen(true);\r\n\t\t\t\tsetIsInitialized(true);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tinitializeDrawerState();\r\n\t}, []);\r\n\r\n\t// Handle window focus to sync state across tabs\r\n\tuseEffect(() => {\r\n\t\tconst handleWindowFocus = () => {\r\n\t\t\ttry {\r\n\t\t\t\tif (typeof window !== 'undefined' && window.localStorage) {\r\n\t\t\t\t\tconst savedState = window.localStorage.getItem(DRAWER_STATE_KEY);\r\n\t\t\t\t\tconst shouldBeOpen = savedState === 'true';\r\n\r\n\t\t\t\t\tif (shouldBeOpen !== forcedOpen) {\r\n\t\t\t\t\t\tsetForcedOpen(shouldBeOpen);\r\n\t\t\t\t\t\tsetHoverOpen(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\tconsole.warn('Failed to sync drawer state on window focus:', error);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\twindow.addEventListener('focus', handleWindowFocus);\r\n\r\n\t\treturn () => {\r\n\t\t\twindow.removeEventListener('focus', handleWindowFocus);\r\n\t\t};\r\n\t}, [forcedOpen]);\r\n\r\n\t// Prevent rendering until initialization is complete\r\n\tif (!isInitialized) {\r\n\t\treturn (\r\n\t\t\t<Box\r\n\t\t\t\tsx={{\r\n\t\t\t\t\tdisplay: 'flex',\r\n\t\t\t\t\tminHeight: '100vh',\r\n\t\t\t\t\talignItems: 'center',\r\n\t\t\t\t\tjustifyContent: 'center'\r\n\t\t\t\t}}>\r\n\t\t\t\t{/* Optional loading indicator */}\r\n\t\t\t\t<Box>Loading...</Box>\r\n\t\t\t</Box>\r\n\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t<Box\r\n\t\t\tsx={{\r\n\t\t\t\tdisplay: 'flex',\r\n\t\t\t\tminHeight: '100vh',\r\n\t\t\t\tdirection: isRtl ? 'rtl' : 'ltr'\r\n\t\t\t}}>\r\n\t\t\t<AppBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t/>\r\n\r\n\t\t\t<SideBar\r\n\t\t\t\topen={forcedOpen}\r\n\t\t\t\tforcedOpen={forcedOpen}\r\n\t\t\t\thoverOpen={hoverOpen}\r\n\t\t\t\thandleDrawerClose={handleDrawerClose}\r\n\t\t\t\thandleDrawerOpen={handleDrawerOpen}\r\n\t\t\t\ttoggleDrawer={toggleDrawer}\r\n\t\t\t\twidth={drawerWidth}\r\n\t\t\t\ttheme={theme}\r\n\t\t\t\tmenu={manufacturingSubmenu}\r\n\t\t\t\thandleMouseEnter={handleMouseEnter}\r\n\t\t\t\thandleMouseLeave={handleMouseLeave}\r\n\t\t\t\tisInitialized={isInitialized}\r\n\t\t\t\tdashboardPath={props.dashboardPath}\r\n\t\t\t/>\r\n\r\n\t\t\t<ActivityArea\r\n\t\t\t\tisDrawerOpen={isDrawerOpen}\r\n\t\t\t\tdrawerWidth={drawerWidth}\r\n\t\t\t\tforcedOpen={forcedOpen}>\r\n\t\t\t\t{props.children}\r\n\t\t\t</ActivityArea>\r\n\t\t</Box>\r\n\t);\r\n};\r\n\r\nexport default SidebarLayout;\r\n"],"names":["AppBar","SideBar"],"mappings":"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"}
|