ece-docs-components 1.0.72 → 1.0.73
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/cjs/components/SidebarV2.js +16 -16
- package/dist/cjs/components/SidebarV2.js.map +1 -1
- package/dist/cjs/node_modules/domhandler/lib/index.js +1 -1
- package/dist/cjs/node_modules/html-dom-parser/lib/index.js +1 -1
- package/dist/esm/_virtual/index10.js +2 -2
- package/dist/esm/_virtual/index8.js +2 -2
- package/dist/esm/components/SidebarV2.d.ts +3 -3
- package/dist/esm/components/SidebarV2.js +16 -16
- package/dist/esm/components/SidebarV2.js.map +1 -1
- package/dist/esm/node_modules/dom-serializer/lib/index.js +1 -1
- package/dist/esm/node_modules/domhandler/lib/index.js +1 -1
- package/dist/esm/node_modules/domutils/lib/index.js +1 -1
- package/dist/esm/node_modules/html-dom-parser/lib/index.js +1 -1
- package/dist/esm/node_modules/style-to-object/cjs/index.js +1 -1
- package/package.json +1 -1
|
@@ -101,21 +101,21 @@ const SidebarItem = ({ isOpen, isAdmin, item, onNavigate, expandedSet, setExpand
|
|
|
101
101
|
onExpand(new Set(expandedSet));
|
|
102
102
|
}
|
|
103
103
|
};
|
|
104
|
-
const isActive = currentPath.includes(item.
|
|
105
|
-
currentPath.includes(item.
|
|
104
|
+
const isActive = currentPath.includes(item.url) ||
|
|
105
|
+
currentPath.includes(item.title.toLowerCase());
|
|
106
106
|
return (jsxRuntime.jsxs(material.Box, { sx: { mb: depth > 0 ? 0 : 1 }, children: [jsxRuntime.jsxs(MenuItemButton, { disableRipple: true, isOpen: isOpen, onClick: () => {
|
|
107
|
-
if (item.
|
|
108
|
-
onNavigate(item.
|
|
109
|
-
else if (item.
|
|
107
|
+
if (item.url)
|
|
108
|
+
onNavigate(item.url);
|
|
109
|
+
else if (item.items)
|
|
110
110
|
toggleExpand();
|
|
111
|
-
}, isActive: isActive, title: !isOpen ? item.
|
|
111
|
+
}, isActive: isActive, title: !isOpen ? item.title : undefined, sx: {
|
|
112
112
|
...(depth > 0 && {
|
|
113
113
|
pl: nestedPadding,
|
|
114
114
|
}),
|
|
115
|
-
}, children: [item.icon && (jsxRuntime.jsx(IconWrapper, { isOpen: isOpen, sx: { ml: isOpen ? 2 : 0 }, children: item.icon })), isOpen && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.ListItemText, { primary: item.
|
|
115
|
+
}, children: [item.icon && (jsxRuntime.jsx(IconWrapper, { isOpen: isOpen, sx: { ml: isOpen ? 2 : 0 }, children: item.icon })), isOpen && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(material.ListItemText, { primary: item.title, slotProps: {
|
|
116
116
|
primary: {
|
|
117
117
|
style: { textDecoration: isActive ? "underline" : "" },
|
|
118
|
-
width: 180 - nestedPadding - (item.
|
|
118
|
+
width: 180 - nestedPadding - (item.items ? 32 : 0),
|
|
119
119
|
...(depth > 0
|
|
120
120
|
? {
|
|
121
121
|
fontSize: "0.875rem",
|
|
@@ -125,9 +125,9 @@ const SidebarItem = ({ isOpen, isAdmin, item, onNavigate, expandedSet, setExpand
|
|
|
125
125
|
fontWeight: 700,
|
|
126
126
|
}),
|
|
127
127
|
},
|
|
128
|
-
}, sx: { flex: 1, ml: 1 } }), item.
|
|
128
|
+
}, sx: { flex: 1, ml: 1 } }), item.items && item.items.length > 0 && (jsxRuntime.jsx(material.IconButton, { onClick: (e) => {
|
|
129
129
|
e.stopPropagation();
|
|
130
|
-
if (item.
|
|
130
|
+
if (item.items)
|
|
131
131
|
toggleExpand();
|
|
132
132
|
}, disableRipple: true, sx: {
|
|
133
133
|
ml: 0.5,
|
|
@@ -142,17 +142,17 @@ const SidebarItem = ({ isOpen, isAdmin, item, onNavigate, expandedSet, setExpand
|
|
|
142
142
|
color: "#4D3019",
|
|
143
143
|
transition: "transform 0.1s",
|
|
144
144
|
transform: isExpanded() ? "rotate(90deg)" : "rotate(0deg)",
|
|
145
|
-
} }) }))] }))] }), isExpanded() && isOpen && (jsxRuntime.jsx(material.Collapse, { in: true, timeout: "auto", children: jsxRuntime.jsx(material.List, { sx: { p: 0, mt: 0.5 }, children: item.
|
|
146
|
-
item.
|
|
145
|
+
} }) }))] }))] }), isExpanded() && isOpen && (jsxRuntime.jsx(material.Collapse, { in: true, timeout: "auto", children: jsxRuntime.jsx(material.List, { sx: { p: 0, mt: 0.5 }, children: item.items &&
|
|
146
|
+
item.items.map((child) => (jsxRuntime.jsx(SidebarItem, { currentPath: currentPath, expandedSet: expandedSet, setExpand: onExpand, isOpen: isOpen, isAdmin: isAdmin, item: child, onNavigate: onNavigate, depth: depth + 1 }, child.id))) }) }))] }));
|
|
147
147
|
};
|
|
148
148
|
const SidebarV2 = ({ isOpen, onToggle, centreName = "Centre name goes here \n across two lines", onNavigate, items, isAdmin, currentPath, }) => {
|
|
149
149
|
const findExpandItems = (items) => {
|
|
150
150
|
for (const item of items) {
|
|
151
|
-
const isActive = currentPath.includes(item.
|
|
152
|
-
currentPath.includes(item.
|
|
151
|
+
const isActive = currentPath.includes(item.url) ||
|
|
152
|
+
currentPath.includes(item.title.toLowerCase());
|
|
153
153
|
if (isActive) {
|
|
154
|
-
return item.
|
|
155
|
-
? [item.id, ...findExpandItems(item.
|
|
154
|
+
return item.items
|
|
155
|
+
? [item.id, ...findExpandItems(item.items)]
|
|
156
156
|
: [item.id];
|
|
157
157
|
}
|
|
158
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarV2.js","sources":["../../../../src/components/SidebarV2.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\r\nimport {\r\n Box,\r\n IconButton,\r\n Typography,\r\n List,\r\n ListItemButton,\r\n ListItemText,\r\n Collapse,\r\n styled,\r\n} from \"@mui/material\";\r\nimport { useTheme } from \"../ThemeProvider\";\r\nimport {\r\n ChevronRightRounded,\r\n KeyboardDoubleArrowLeftRounded,\r\n KeyboardDoubleArrowRightRounded,\r\n} from \"@mui/icons-material\";\r\n\r\nconst EXPANDED_WIDTH = \"288px\";\r\nconst COLLAPSED_WIDTH_SMALL = \"80px\";\r\nconst COLLAPSED_WIDTH_DEFAULT = \"64px\";\r\n\r\nexport enum Visibility {\r\n Admin = \"Admin\",\r\n Contributor = \"Contributor\",\r\n Community = \"Community\",\r\n}\r\n\r\nexport interface MenuItem {\r\n id: string | number;\r\n label: string;\r\n icon?: React.ReactNode;\r\n visibility?: Visibility;\r\n path?: string;\r\n children?: MenuItem[];\r\n}\r\n\r\nconst SidebarContainer = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\",\r\n})<{ isOpen: boolean }>(({ theme, isOpen }) => ({\r\n height: \"100vh\",\r\n position: \"sticky\",\r\n top: 0,\r\n paddingLeft: 0,\r\n overflow: \"hidden\",\r\n backgroundColor: \"#fff\",\r\n borderRight: `1px solid ${theme.palette.dark.main}1A`,\r\n flexShrink: 0,\r\n transition: \"all 0.15s ease-out\",\r\n width: isOpen ? EXPANDED_WIDTH : COLLAPSED_WIDTH_DEFAULT,\r\n zIndex: 50,\r\n [theme.breakpoints.down(\"md\")]: {\r\n position: \"fixed\",\r\n left: isOpen ? 0 : `-${EXPANDED_WIDTH}`,\r\n width: EXPANDED_WIDTH,\r\n },\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: isOpen ? EXPANDED_WIDTH : COLLAPSED_WIDTH_SMALL,\r\n },\r\n}));\r\n\r\nconst ToggleButton = styled(IconButton)(({ theme }) => ({\r\n width: 40,\r\n height: 40,\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: \"#4D3019\",\r\n color: \"#fff\",\r\n \"&:hover\": {\r\n backgroundColor: \"#3d2614\",\r\n },\r\n}));\r\n\r\nconst MenuItemButton = styled(ListItemButton, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\" && prop !== \"isActive\",\r\n})<{ isActive?: boolean; isOpen: boolean }>(({ theme, isActive, isOpen }) => ({\r\n borderRadius: isOpen\r\n ? `0 ${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0`\r\n : theme.shape.borderRadius,\r\n paddingLeft: 0,\r\n paddingRight: isOpen ? theme.spacing(2) : 0,\r\n marginRight: isOpen ? 8 : 0,\r\n minHeight: 64,\r\n justifyContent: isOpen ? \"flex-start\" : \"center\",\r\n backgroundClip: \"padding-box\",\r\n backgroundOrigin: \"border-box\",\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}0D`,\r\n },\r\n ...(isActive && {\r\n backgroundColor: `${theme.palette.primary.main}1A`,\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}1A`,\r\n },\r\n }),\r\n}));\r\n\r\nconst IconWrapper = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\",\r\n})<{ isOpen: boolean }>(({ theme, isOpen }) => ({\r\n width: isOpen ? 32 : 40,\r\n height: isOpen ? 32 : 40,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: \"transparent\",\r\n}));\r\n\r\nconst SidebarItem = ({\r\n isOpen,\r\n isAdmin,\r\n item,\r\n onNavigate,\r\n expandedSet,\r\n setExpand: onExpand,\r\n depth = 0,\r\n currentPath,\r\n}: {\r\n isOpen: boolean;\r\n isAdmin: boolean;\r\n item: MenuItem;\r\n onNavigate: (path: string) => void;\r\n expandedSet: Set<string | number>;\r\n setExpand: React.Dispatch<React.SetStateAction<Set<string | number>>>;\r\n depth?: number;\r\n currentPath: string;\r\n}) => {\r\n // Check visibility based on visibility state and isAdmin prop\r\n const isVisible =\r\n item.visibility === Visibility.Admin\r\n ? !!isAdmin\r\n : item.visibility === Visibility.Contributor || !item.visibility;\r\n if (!isVisible) {\r\n return null;\r\n }\r\n\r\n const theme = useTheme();\r\n const nestedPadding = 3 + depth;\r\n\r\n const isExpanded = () => expandedSet.has(item.id);\r\n\r\n const toggleExpand = () => {\r\n if (!isExpanded()) {\r\n onExpand(new Set([...expandedSet, item.id]));\r\n } else {\r\n expandedSet.delete(item.id);\r\n onExpand(new Set(expandedSet));\r\n }\r\n };\r\n\r\n const isActive =\r\n currentPath.includes(item.path as string) ||\r\n currentPath.includes(item.label.toLowerCase() as string);\r\n\r\n return (\r\n <Box sx={{ mb: depth > 0 ? 0 : 1 }}>\r\n <MenuItemButton\r\n disableRipple\r\n isOpen={isOpen}\r\n onClick={() => {\r\n if (item.path) onNavigate(item.path);\r\n else if (item.children) toggleExpand();\r\n }}\r\n isActive={isActive}\r\n title={!isOpen ? item.label : undefined}\r\n sx={{\r\n ...(depth > 0 && {\r\n pl: nestedPadding,\r\n }),\r\n }}\r\n >\r\n {item.icon && (\r\n <IconWrapper isOpen={isOpen} sx={{ ml: isOpen ? 2 : 0 }}>\r\n {item.icon}\r\n </IconWrapper>\r\n )}\r\n {isOpen && (\r\n <>\r\n <ListItemText\r\n primary={item.label}\r\n slotProps={{\r\n primary: {\r\n style: { textDecoration: isActive ? \"underline\" : \"\" },\r\n width: 180 - nestedPadding - (item.children ? 32 : 0),\r\n ...(depth > 0\r\n ? {\r\n fontSize: \"0.875rem\",\r\n }\r\n : {\r\n fontSize: \"1rem\",\r\n fontWeight: 700,\r\n }),\r\n },\r\n }}\r\n sx={{ flex: 1, ml: 1 }}\r\n />\r\n {item.children && item.children.length > 0 && (\r\n <IconButton\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (item.children) toggleExpand();\r\n }}\r\n disableRipple\r\n sx={{\r\n ml: 0.5,\r\n borderRadius: 1,\r\n width: 32,\r\n height: 32,\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}1F`,\r\n },\r\n }}\r\n >\r\n <ChevronRightRounded\r\n sx={{\r\n fontSize: 16,\r\n color: \"#4D3019\",\r\n transition: \"transform 0.1s\",\r\n transform: isExpanded() ? \"rotate(90deg)\" : \"rotate(0deg)\",\r\n }}\r\n />\r\n </IconButton>\r\n )}\r\n </>\r\n )}\r\n </MenuItemButton>\r\n {isExpanded() && isOpen && (\r\n <Collapse in={true} timeout=\"auto\">\r\n <List sx={{ p: 0, mt: 0.5 }}>\r\n {item.children &&\r\n item.children.map((child) => (\r\n <SidebarItem\r\n key={child.id}\r\n currentPath={currentPath}\r\n expandedSet={expandedSet}\r\n setExpand={onExpand}\r\n isOpen={isOpen}\r\n isAdmin={isAdmin}\r\n item={child}\r\n onNavigate={onNavigate}\r\n depth={depth + 1}\r\n />\r\n ))}\r\n </List>\r\n </Collapse>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport const SidebarV2 = ({\r\n isOpen,\r\n onToggle,\r\n centreName = \"Centre name goes here \\n across two lines\",\r\n onNavigate,\r\n items,\r\n isAdmin,\r\n currentPath,\r\n}: {\r\n isOpen: boolean;\r\n onToggle: () => void;\r\n items: MenuItem[];\r\n centreName?: string;\r\n onNavigate: (path: string) => void;\r\n isAdmin: boolean;\r\n currentPath: string;\r\n}) => {\r\n const findExpandItems = (items: MenuItem[]): (string | number)[] => {\r\n for (const item of items) {\r\n const isActive =\r\n currentPath.includes(item.path as string) ||\r\n currentPath.includes(item.label.toLowerCase() as string);\r\n if (isActive) {\r\n return item.children\r\n ? [item.id, ...findExpandItems(item.children)]\r\n : [item.id];\r\n }\r\n }\r\n return [];\r\n };\r\n\r\n const theme = useTheme();\r\n const [expandedSet, setExpanded] = useState<Set<string | number>>(\r\n () => new Set(findExpandItems(items)),\r\n );\r\n\r\n return (\r\n <>\r\n {isOpen && (\r\n <Box\r\n sx={{\r\n position: \"fixed\",\r\n inset: 0,\r\n bgcolor: \"rgba(0, 0, 0, 0.5)\",\r\n zIndex: 40,\r\n display: { xs: \"block\", md: \"none\" },\r\n }}\r\n onClick={onToggle}\r\n />\r\n )}\r\n <SidebarContainer isOpen={isOpen}>\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", height: \"100%\" }}>\r\n {/* Sidebar Header */}\r\n {isOpen ? (\r\n <Box\r\n sx={{\r\n px: 2,\r\n py: 3,\r\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\r\n flexShrink: 0,\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n width: EXPANDED_WIDTH,\r\n }}\r\n >\r\n <Typography\r\n variant=\"h6\"\r\n sx={{\r\n width: \"180px\",\r\n fontSize: \"18px\",\r\n fontWeight: 700,\r\n color: \"#4D3019\",\r\n lineHeight: 1.3,\r\n whiteSpace: \"pre-line\",\r\n flex: 1,\r\n pr: 2,\r\n }}\r\n >\r\n {centreName ?? \"Centre Name\"}\r\n </Typography>\r\n\r\n <ToggleButton\r\n onClick={() => onToggle()}\r\n sx={{ ml: \"auto\" }}\r\n aria-label=\"Collapse sidebar\"\r\n >\r\n <KeyboardDoubleArrowLeftRounded sx={{ fontSize: 20 }} />\r\n </ToggleButton>\r\n </Box>\r\n ) : (\r\n <Box\r\n sx={{\r\n px: 1,\r\n py: 3,\r\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <ToggleButton onClick={onToggle} aria-label=\"Expand sidebar\">\r\n <KeyboardDoubleArrowRightRounded sx={{ fontSize: 20 }} />\r\n </ToggleButton>\r\n </Box>\r\n )}\r\n\r\n {/* Sidebar Items */}\r\n <Box\r\n sx={{\r\n flex: 1,\r\n overflowY: \"auto\",\r\n px: isOpen ? 0 : 1,\r\n py: 3,\r\n }}\r\n >\r\n <List sx={{ p: 0 }}>\r\n {items.map((item) => (\r\n <SidebarItem\r\n currentPath={currentPath}\r\n key={item.id}\r\n expandedSet={expandedSet}\r\n setExpand={setExpanded}\r\n isOpen={isOpen}\r\n isAdmin={isAdmin}\r\n item={item}\r\n onNavigate={onNavigate}\r\n />\r\n ))}\r\n </List>\r\n </Box>\r\n </Box>\r\n </SidebarContainer>\r\n </>\r\n );\r\n};\r\n"],"names":["Visibility","styled","Box","IconButton","ListItemButton","useTheme","_jsxs","_jsx","ListItemText","ChevronRightRounded","Collapse","List","useState","Typography","KeyboardDoubleArrowLeftRounded","KeyboardDoubleArrowRightRounded"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SidebarV2.js","sources":["../../../../src/components/SidebarV2.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\r\nimport {\r\n Box,\r\n IconButton,\r\n Typography,\r\n List,\r\n ListItemButton,\r\n ListItemText,\r\n Collapse,\r\n styled,\r\n} from \"@mui/material\";\r\nimport { useTheme } from \"../ThemeProvider\";\r\nimport {\r\n ChevronRightRounded,\r\n KeyboardDoubleArrowLeftRounded,\r\n KeyboardDoubleArrowRightRounded,\r\n} from \"@mui/icons-material\";\r\n\r\nconst EXPANDED_WIDTH = \"288px\";\r\nconst COLLAPSED_WIDTH_SMALL = \"80px\";\r\nconst COLLAPSED_WIDTH_DEFAULT = \"64px\";\r\n\r\nexport enum Visibility {\r\n Admin = \"Admin\",\r\n Contributor = \"Contributor\",\r\n Community = \"Community\",\r\n}\r\n\r\nexport interface MenuItem {\r\n id: string | number;\r\n title: string;\r\n icon?: React.ReactNode;\r\n visibility?: Visibility;\r\n url?: string;\r\n items?: MenuItem[];\r\n}\r\n\r\nconst SidebarContainer = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\",\r\n})<{ isOpen: boolean }>(({ theme, isOpen }) => ({\r\n height: \"100vh\",\r\n position: \"sticky\",\r\n top: 0,\r\n paddingLeft: 0,\r\n overflow: \"hidden\",\r\n backgroundColor: \"#fff\",\r\n borderRight: `1px solid ${theme.palette.dark.main}1A`,\r\n flexShrink: 0,\r\n transition: \"all 0.15s ease-out\",\r\n width: isOpen ? EXPANDED_WIDTH : COLLAPSED_WIDTH_DEFAULT,\r\n zIndex: 50,\r\n [theme.breakpoints.down(\"md\")]: {\r\n position: \"fixed\",\r\n left: isOpen ? 0 : `-${EXPANDED_WIDTH}`,\r\n width: EXPANDED_WIDTH,\r\n },\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: isOpen ? EXPANDED_WIDTH : COLLAPSED_WIDTH_SMALL,\r\n },\r\n}));\r\n\r\nconst ToggleButton = styled(IconButton)(({ theme }) => ({\r\n width: 40,\r\n height: 40,\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: \"#4D3019\",\r\n color: \"#fff\",\r\n \"&:hover\": {\r\n backgroundColor: \"#3d2614\",\r\n },\r\n}));\r\n\r\nconst MenuItemButton = styled(ListItemButton, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\" && prop !== \"isActive\",\r\n})<{ isActive?: boolean; isOpen: boolean }>(({ theme, isActive, isOpen }) => ({\r\n borderRadius: isOpen\r\n ? `0 ${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0`\r\n : theme.shape.borderRadius,\r\n paddingLeft: 0,\r\n paddingRight: isOpen ? theme.spacing(2) : 0,\r\n marginRight: isOpen ? 8 : 0,\r\n minHeight: 64,\r\n justifyContent: isOpen ? \"flex-start\" : \"center\",\r\n backgroundClip: \"padding-box\",\r\n backgroundOrigin: \"border-box\",\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}0D`,\r\n },\r\n ...(isActive && {\r\n backgroundColor: `${theme.palette.primary.main}1A`,\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}1A`,\r\n },\r\n }),\r\n}));\r\n\r\nconst IconWrapper = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\",\r\n})<{ isOpen: boolean }>(({ theme, isOpen }) => ({\r\n width: isOpen ? 32 : 40,\r\n height: isOpen ? 32 : 40,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: \"transparent\",\r\n}));\r\n\r\nconst SidebarItem = ({\r\n isOpen,\r\n isAdmin,\r\n item,\r\n onNavigate,\r\n expandedSet,\r\n setExpand: onExpand,\r\n depth = 0,\r\n currentPath,\r\n}: {\r\n isOpen: boolean;\r\n isAdmin: boolean;\r\n item: MenuItem;\r\n onNavigate: (path: string) => void;\r\n expandedSet: Set<string | number>;\r\n setExpand: React.Dispatch<React.SetStateAction<Set<string | number>>>;\r\n depth?: number;\r\n currentPath: string;\r\n}) => {\r\n // Check visibility based on visibility state and isAdmin prop\r\n const isVisible =\r\n item.visibility === Visibility.Admin\r\n ? !!isAdmin\r\n : item.visibility === Visibility.Contributor || !item.visibility;\r\n if (!isVisible) {\r\n return null;\r\n }\r\n\r\n const theme = useTheme();\r\n const nestedPadding = 3 + depth;\r\n\r\n const isExpanded = () => expandedSet.has(item.id);\r\n\r\n const toggleExpand = () => {\r\n if (!isExpanded()) {\r\n onExpand(new Set([...expandedSet, item.id]));\r\n } else {\r\n expandedSet.delete(item.id);\r\n onExpand(new Set(expandedSet));\r\n }\r\n };\r\n\r\n const isActive =\r\n currentPath.includes(item.url as string) ||\r\n currentPath.includes(item.title.toLowerCase() as string);\r\n\r\n return (\r\n <Box sx={{ mb: depth > 0 ? 0 : 1 }}>\r\n <MenuItemButton\r\n disableRipple\r\n isOpen={isOpen}\r\n onClick={() => {\r\n if (item.url) onNavigate(item.url);\r\n else if (item.items) toggleExpand();\r\n }}\r\n isActive={isActive}\r\n title={!isOpen ? item.title : undefined}\r\n sx={{\r\n ...(depth > 0 && {\r\n pl: nestedPadding,\r\n }),\r\n }}\r\n >\r\n {item.icon && (\r\n <IconWrapper isOpen={isOpen} sx={{ ml: isOpen ? 2 : 0 }}>\r\n {item.icon}\r\n </IconWrapper>\r\n )}\r\n {isOpen && (\r\n <>\r\n <ListItemText\r\n primary={item.title}\r\n slotProps={{\r\n primary: {\r\n style: { textDecoration: isActive ? \"underline\" : \"\" },\r\n width: 180 - nestedPadding - (item.items ? 32 : 0),\r\n ...(depth > 0\r\n ? {\r\n fontSize: \"0.875rem\",\r\n }\r\n : {\r\n fontSize: \"1rem\",\r\n fontWeight: 700,\r\n }),\r\n },\r\n }}\r\n sx={{ flex: 1, ml: 1 }}\r\n />\r\n {item.items && item.items.length > 0 && (\r\n <IconButton\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (item.items) toggleExpand();\r\n }}\r\n disableRipple\r\n sx={{\r\n ml: 0.5,\r\n borderRadius: 1,\r\n width: 32,\r\n height: 32,\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}1F`,\r\n },\r\n }}\r\n >\r\n <ChevronRightRounded\r\n sx={{\r\n fontSize: 16,\r\n color: \"#4D3019\",\r\n transition: \"transform 0.1s\",\r\n transform: isExpanded() ? \"rotate(90deg)\" : \"rotate(0deg)\",\r\n }}\r\n />\r\n </IconButton>\r\n )}\r\n </>\r\n )}\r\n </MenuItemButton>\r\n {isExpanded() && isOpen && (\r\n <Collapse in={true} timeout=\"auto\">\r\n <List sx={{ p: 0, mt: 0.5 }}>\r\n {item.items &&\r\n item.items.map((child) => (\r\n <SidebarItem\r\n key={child.id}\r\n currentPath={currentPath}\r\n expandedSet={expandedSet}\r\n setExpand={onExpand}\r\n isOpen={isOpen}\r\n isAdmin={isAdmin}\r\n item={child}\r\n onNavigate={onNavigate}\r\n depth={depth + 1}\r\n />\r\n ))}\r\n </List>\r\n </Collapse>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport const SidebarV2 = ({\r\n isOpen,\r\n onToggle,\r\n centreName = \"Centre name goes here \\n across two lines\",\r\n onNavigate,\r\n items,\r\n isAdmin,\r\n currentPath,\r\n}: {\r\n isOpen: boolean;\r\n onToggle: () => void;\r\n items: MenuItem[];\r\n centreName?: string;\r\n onNavigate: (path: string) => void;\r\n isAdmin: boolean;\r\n currentPath: string;\r\n}) => {\r\n const findExpandItems = (items: MenuItem[]): (string | number)[] => {\r\n for (const item of items) {\r\n const isActive =\r\n currentPath.includes(item.url as string) ||\r\n currentPath.includes(item.title.toLowerCase() as string);\r\n if (isActive) {\r\n return item.items\r\n ? [item.id, ...findExpandItems(item.items)]\r\n : [item.id];\r\n }\r\n }\r\n return [];\r\n };\r\n\r\n const theme = useTheme();\r\n const [expandedSet, setExpanded] = useState<Set<string | number>>(\r\n () => new Set(findExpandItems(items)),\r\n );\r\n\r\n return (\r\n <>\r\n {isOpen && (\r\n <Box\r\n sx={{\r\n position: \"fixed\",\r\n inset: 0,\r\n bgcolor: \"rgba(0, 0, 0, 0.5)\",\r\n zIndex: 40,\r\n display: { xs: \"block\", md: \"none\" },\r\n }}\r\n onClick={onToggle}\r\n />\r\n )}\r\n <SidebarContainer isOpen={isOpen}>\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", height: \"100%\" }}>\r\n {/* Sidebar Header */}\r\n {isOpen ? (\r\n <Box\r\n sx={{\r\n px: 2,\r\n py: 3,\r\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\r\n flexShrink: 0,\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n width: EXPANDED_WIDTH,\r\n }}\r\n >\r\n <Typography\r\n variant=\"h6\"\r\n sx={{\r\n width: \"180px\",\r\n fontSize: \"18px\",\r\n fontWeight: 700,\r\n color: \"#4D3019\",\r\n lineHeight: 1.3,\r\n whiteSpace: \"pre-line\",\r\n flex: 1,\r\n pr: 2,\r\n }}\r\n >\r\n {centreName ?? \"Centre Name\"}\r\n </Typography>\r\n\r\n <ToggleButton\r\n onClick={() => onToggle()}\r\n sx={{ ml: \"auto\" }}\r\n aria-label=\"Collapse sidebar\"\r\n >\r\n <KeyboardDoubleArrowLeftRounded sx={{ fontSize: 20 }} />\r\n </ToggleButton>\r\n </Box>\r\n ) : (\r\n <Box\r\n sx={{\r\n px: 1,\r\n py: 3,\r\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <ToggleButton onClick={onToggle} aria-label=\"Expand sidebar\">\r\n <KeyboardDoubleArrowRightRounded sx={{ fontSize: 20 }} />\r\n </ToggleButton>\r\n </Box>\r\n )}\r\n\r\n {/* Sidebar Items */}\r\n <Box\r\n sx={{\r\n flex: 1,\r\n overflowY: \"auto\",\r\n px: isOpen ? 0 : 1,\r\n py: 3,\r\n }}\r\n >\r\n <List sx={{ p: 0 }}>\r\n {items.map((item) => (\r\n <SidebarItem\r\n currentPath={currentPath}\r\n key={item.id}\r\n expandedSet={expandedSet}\r\n setExpand={setExpanded}\r\n isOpen={isOpen}\r\n isAdmin={isAdmin}\r\n item={item}\r\n onNavigate={onNavigate}\r\n />\r\n ))}\r\n </List>\r\n </Box>\r\n </Box>\r\n </SidebarContainer>\r\n </>\r\n );\r\n};\r\n"],"names":["Visibility","styled","Box","IconButton","ListItemButton","useTheme","_jsxs","_jsx","ListItemText","ChevronRightRounded","Collapse","List","useState","Typography","KeyboardDoubleArrowLeftRounded","KeyboardDoubleArrowRightRounded"],"mappings":"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"}
|
|
@@ -6,11 +6,11 @@ export declare enum Visibility {
|
|
|
6
6
|
}
|
|
7
7
|
export interface MenuItem {
|
|
8
8
|
id: string | number;
|
|
9
|
-
|
|
9
|
+
title: string;
|
|
10
10
|
icon?: React.ReactNode;
|
|
11
11
|
visibility?: Visibility;
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
url?: string;
|
|
13
|
+
items?: MenuItem[];
|
|
14
14
|
}
|
|
15
15
|
export declare const SidebarV2: ({ isOpen, onToggle, centreName, onNavigate, items, isAdmin, currentPath, }: {
|
|
16
16
|
isOpen: boolean;
|
|
@@ -99,21 +99,21 @@ const SidebarItem = ({ isOpen, isAdmin, item, onNavigate, expandedSet, setExpand
|
|
|
99
99
|
onExpand(new Set(expandedSet));
|
|
100
100
|
}
|
|
101
101
|
};
|
|
102
|
-
const isActive = currentPath.includes(item.
|
|
103
|
-
currentPath.includes(item.
|
|
102
|
+
const isActive = currentPath.includes(item.url) ||
|
|
103
|
+
currentPath.includes(item.title.toLowerCase());
|
|
104
104
|
return (jsxs(Box, { sx: { mb: depth > 0 ? 0 : 1 }, children: [jsxs(MenuItemButton, { disableRipple: true, isOpen: isOpen, onClick: () => {
|
|
105
|
-
if (item.
|
|
106
|
-
onNavigate(item.
|
|
107
|
-
else if (item.
|
|
105
|
+
if (item.url)
|
|
106
|
+
onNavigate(item.url);
|
|
107
|
+
else if (item.items)
|
|
108
108
|
toggleExpand();
|
|
109
|
-
}, isActive: isActive, title: !isOpen ? item.
|
|
109
|
+
}, isActive: isActive, title: !isOpen ? item.title : undefined, sx: {
|
|
110
110
|
...(depth > 0 && {
|
|
111
111
|
pl: nestedPadding,
|
|
112
112
|
}),
|
|
113
|
-
}, children: [item.icon && (jsx(IconWrapper, { isOpen: isOpen, sx: { ml: isOpen ? 2 : 0 }, children: item.icon })), isOpen && (jsxs(Fragment, { children: [jsx(ListItemText, { primary: item.
|
|
113
|
+
}, children: [item.icon && (jsx(IconWrapper, { isOpen: isOpen, sx: { ml: isOpen ? 2 : 0 }, children: item.icon })), isOpen && (jsxs(Fragment, { children: [jsx(ListItemText, { primary: item.title, slotProps: {
|
|
114
114
|
primary: {
|
|
115
115
|
style: { textDecoration: isActive ? "underline" : "" },
|
|
116
|
-
width: 180 - nestedPadding - (item.
|
|
116
|
+
width: 180 - nestedPadding - (item.items ? 32 : 0),
|
|
117
117
|
...(depth > 0
|
|
118
118
|
? {
|
|
119
119
|
fontSize: "0.875rem",
|
|
@@ -123,9 +123,9 @@ const SidebarItem = ({ isOpen, isAdmin, item, onNavigate, expandedSet, setExpand
|
|
|
123
123
|
fontWeight: 700,
|
|
124
124
|
}),
|
|
125
125
|
},
|
|
126
|
-
}, sx: { flex: 1, ml: 1 } }), item.
|
|
126
|
+
}, sx: { flex: 1, ml: 1 } }), item.items && item.items.length > 0 && (jsx(IconButton, { onClick: (e) => {
|
|
127
127
|
e.stopPropagation();
|
|
128
|
-
if (item.
|
|
128
|
+
if (item.items)
|
|
129
129
|
toggleExpand();
|
|
130
130
|
}, disableRipple: true, sx: {
|
|
131
131
|
ml: 0.5,
|
|
@@ -140,17 +140,17 @@ const SidebarItem = ({ isOpen, isAdmin, item, onNavigate, expandedSet, setExpand
|
|
|
140
140
|
color: "#4D3019",
|
|
141
141
|
transition: "transform 0.1s",
|
|
142
142
|
transform: isExpanded() ? "rotate(90deg)" : "rotate(0deg)",
|
|
143
|
-
} }) }))] }))] }), isExpanded() && isOpen && (jsx(Collapse, { in: true, timeout: "auto", children: jsx(List, { sx: { p: 0, mt: 0.5 }, children: item.
|
|
144
|
-
item.
|
|
143
|
+
} }) }))] }))] }), isExpanded() && isOpen && (jsx(Collapse, { in: true, timeout: "auto", children: jsx(List, { sx: { p: 0, mt: 0.5 }, children: item.items &&
|
|
144
|
+
item.items.map((child) => (jsx(SidebarItem, { currentPath: currentPath, expandedSet: expandedSet, setExpand: onExpand, isOpen: isOpen, isAdmin: isAdmin, item: child, onNavigate: onNavigate, depth: depth + 1 }, child.id))) }) }))] }));
|
|
145
145
|
};
|
|
146
146
|
const SidebarV2 = ({ isOpen, onToggle, centreName = "Centre name goes here \n across two lines", onNavigate, items, isAdmin, currentPath, }) => {
|
|
147
147
|
const findExpandItems = (items) => {
|
|
148
148
|
for (const item of items) {
|
|
149
|
-
const isActive = currentPath.includes(item.
|
|
150
|
-
currentPath.includes(item.
|
|
149
|
+
const isActive = currentPath.includes(item.url) ||
|
|
150
|
+
currentPath.includes(item.title.toLowerCase());
|
|
151
151
|
if (isActive) {
|
|
152
|
-
return item.
|
|
153
|
-
? [item.id, ...findExpandItems(item.
|
|
152
|
+
return item.items
|
|
153
|
+
? [item.id, ...findExpandItems(item.items)]
|
|
154
154
|
: [item.id];
|
|
155
155
|
}
|
|
156
156
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarV2.js","sources":["../../../../src/components/SidebarV2.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\r\nimport {\r\n Box,\r\n IconButton,\r\n Typography,\r\n List,\r\n ListItemButton,\r\n ListItemText,\r\n Collapse,\r\n styled,\r\n} from \"@mui/material\";\r\nimport { useTheme } from \"../ThemeProvider\";\r\nimport {\r\n ChevronRightRounded,\r\n KeyboardDoubleArrowLeftRounded,\r\n KeyboardDoubleArrowRightRounded,\r\n} from \"@mui/icons-material\";\r\n\r\nconst EXPANDED_WIDTH = \"288px\";\r\nconst COLLAPSED_WIDTH_SMALL = \"80px\";\r\nconst COLLAPSED_WIDTH_DEFAULT = \"64px\";\r\n\r\nexport enum Visibility {\r\n Admin = \"Admin\",\r\n Contributor = \"Contributor\",\r\n Community = \"Community\",\r\n}\r\n\r\nexport interface MenuItem {\r\n id: string | number;\r\n label: string;\r\n icon?: React.ReactNode;\r\n visibility?: Visibility;\r\n path?: string;\r\n children?: MenuItem[];\r\n}\r\n\r\nconst SidebarContainer = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\",\r\n})<{ isOpen: boolean }>(({ theme, isOpen }) => ({\r\n height: \"100vh\",\r\n position: \"sticky\",\r\n top: 0,\r\n paddingLeft: 0,\r\n overflow: \"hidden\",\r\n backgroundColor: \"#fff\",\r\n borderRight: `1px solid ${theme.palette.dark.main}1A`,\r\n flexShrink: 0,\r\n transition: \"all 0.15s ease-out\",\r\n width: isOpen ? EXPANDED_WIDTH : COLLAPSED_WIDTH_DEFAULT,\r\n zIndex: 50,\r\n [theme.breakpoints.down(\"md\")]: {\r\n position: \"fixed\",\r\n left: isOpen ? 0 : `-${EXPANDED_WIDTH}`,\r\n width: EXPANDED_WIDTH,\r\n },\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: isOpen ? EXPANDED_WIDTH : COLLAPSED_WIDTH_SMALL,\r\n },\r\n}));\r\n\r\nconst ToggleButton = styled(IconButton)(({ theme }) => ({\r\n width: 40,\r\n height: 40,\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: \"#4D3019\",\r\n color: \"#fff\",\r\n \"&:hover\": {\r\n backgroundColor: \"#3d2614\",\r\n },\r\n}));\r\n\r\nconst MenuItemButton = styled(ListItemButton, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\" && prop !== \"isActive\",\r\n})<{ isActive?: boolean; isOpen: boolean }>(({ theme, isActive, isOpen }) => ({\r\n borderRadius: isOpen\r\n ? `0 ${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0`\r\n : theme.shape.borderRadius,\r\n paddingLeft: 0,\r\n paddingRight: isOpen ? theme.spacing(2) : 0,\r\n marginRight: isOpen ? 8 : 0,\r\n minHeight: 64,\r\n justifyContent: isOpen ? \"flex-start\" : \"center\",\r\n backgroundClip: \"padding-box\",\r\n backgroundOrigin: \"border-box\",\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}0D`,\r\n },\r\n ...(isActive && {\r\n backgroundColor: `${theme.palette.primary.main}1A`,\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}1A`,\r\n },\r\n }),\r\n}));\r\n\r\nconst IconWrapper = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\",\r\n})<{ isOpen: boolean }>(({ theme, isOpen }) => ({\r\n width: isOpen ? 32 : 40,\r\n height: isOpen ? 32 : 40,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: \"transparent\",\r\n}));\r\n\r\nconst SidebarItem = ({\r\n isOpen,\r\n isAdmin,\r\n item,\r\n onNavigate,\r\n expandedSet,\r\n setExpand: onExpand,\r\n depth = 0,\r\n currentPath,\r\n}: {\r\n isOpen: boolean;\r\n isAdmin: boolean;\r\n item: MenuItem;\r\n onNavigate: (path: string) => void;\r\n expandedSet: Set<string | number>;\r\n setExpand: React.Dispatch<React.SetStateAction<Set<string | number>>>;\r\n depth?: number;\r\n currentPath: string;\r\n}) => {\r\n // Check visibility based on visibility state and isAdmin prop\r\n const isVisible =\r\n item.visibility === Visibility.Admin\r\n ? !!isAdmin\r\n : item.visibility === Visibility.Contributor || !item.visibility;\r\n if (!isVisible) {\r\n return null;\r\n }\r\n\r\n const theme = useTheme();\r\n const nestedPadding = 3 + depth;\r\n\r\n const isExpanded = () => expandedSet.has(item.id);\r\n\r\n const toggleExpand = () => {\r\n if (!isExpanded()) {\r\n onExpand(new Set([...expandedSet, item.id]));\r\n } else {\r\n expandedSet.delete(item.id);\r\n onExpand(new Set(expandedSet));\r\n }\r\n };\r\n\r\n const isActive =\r\n currentPath.includes(item.path as string) ||\r\n currentPath.includes(item.label.toLowerCase() as string);\r\n\r\n return (\r\n <Box sx={{ mb: depth > 0 ? 0 : 1 }}>\r\n <MenuItemButton\r\n disableRipple\r\n isOpen={isOpen}\r\n onClick={() => {\r\n if (item.path) onNavigate(item.path);\r\n else if (item.children) toggleExpand();\r\n }}\r\n isActive={isActive}\r\n title={!isOpen ? item.label : undefined}\r\n sx={{\r\n ...(depth > 0 && {\r\n pl: nestedPadding,\r\n }),\r\n }}\r\n >\r\n {item.icon && (\r\n <IconWrapper isOpen={isOpen} sx={{ ml: isOpen ? 2 : 0 }}>\r\n {item.icon}\r\n </IconWrapper>\r\n )}\r\n {isOpen && (\r\n <>\r\n <ListItemText\r\n primary={item.label}\r\n slotProps={{\r\n primary: {\r\n style: { textDecoration: isActive ? \"underline\" : \"\" },\r\n width: 180 - nestedPadding - (item.children ? 32 : 0),\r\n ...(depth > 0\r\n ? {\r\n fontSize: \"0.875rem\",\r\n }\r\n : {\r\n fontSize: \"1rem\",\r\n fontWeight: 700,\r\n }),\r\n },\r\n }}\r\n sx={{ flex: 1, ml: 1 }}\r\n />\r\n {item.children && item.children.length > 0 && (\r\n <IconButton\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (item.children) toggleExpand();\r\n }}\r\n disableRipple\r\n sx={{\r\n ml: 0.5,\r\n borderRadius: 1,\r\n width: 32,\r\n height: 32,\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}1F`,\r\n },\r\n }}\r\n >\r\n <ChevronRightRounded\r\n sx={{\r\n fontSize: 16,\r\n color: \"#4D3019\",\r\n transition: \"transform 0.1s\",\r\n transform: isExpanded() ? \"rotate(90deg)\" : \"rotate(0deg)\",\r\n }}\r\n />\r\n </IconButton>\r\n )}\r\n </>\r\n )}\r\n </MenuItemButton>\r\n {isExpanded() && isOpen && (\r\n <Collapse in={true} timeout=\"auto\">\r\n <List sx={{ p: 0, mt: 0.5 }}>\r\n {item.children &&\r\n item.children.map((child) => (\r\n <SidebarItem\r\n key={child.id}\r\n currentPath={currentPath}\r\n expandedSet={expandedSet}\r\n setExpand={onExpand}\r\n isOpen={isOpen}\r\n isAdmin={isAdmin}\r\n item={child}\r\n onNavigate={onNavigate}\r\n depth={depth + 1}\r\n />\r\n ))}\r\n </List>\r\n </Collapse>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport const SidebarV2 = ({\r\n isOpen,\r\n onToggle,\r\n centreName = \"Centre name goes here \\n across two lines\",\r\n onNavigate,\r\n items,\r\n isAdmin,\r\n currentPath,\r\n}: {\r\n isOpen: boolean;\r\n onToggle: () => void;\r\n items: MenuItem[];\r\n centreName?: string;\r\n onNavigate: (path: string) => void;\r\n isAdmin: boolean;\r\n currentPath: string;\r\n}) => {\r\n const findExpandItems = (items: MenuItem[]): (string | number)[] => {\r\n for (const item of items) {\r\n const isActive =\r\n currentPath.includes(item.path as string) ||\r\n currentPath.includes(item.label.toLowerCase() as string);\r\n if (isActive) {\r\n return item.children\r\n ? [item.id, ...findExpandItems(item.children)]\r\n : [item.id];\r\n }\r\n }\r\n return [];\r\n };\r\n\r\n const theme = useTheme();\r\n const [expandedSet, setExpanded] = useState<Set<string | number>>(\r\n () => new Set(findExpandItems(items)),\r\n );\r\n\r\n return (\r\n <>\r\n {isOpen && (\r\n <Box\r\n sx={{\r\n position: \"fixed\",\r\n inset: 0,\r\n bgcolor: \"rgba(0, 0, 0, 0.5)\",\r\n zIndex: 40,\r\n display: { xs: \"block\", md: \"none\" },\r\n }}\r\n onClick={onToggle}\r\n />\r\n )}\r\n <SidebarContainer isOpen={isOpen}>\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", height: \"100%\" }}>\r\n {/* Sidebar Header */}\r\n {isOpen ? (\r\n <Box\r\n sx={{\r\n px: 2,\r\n py: 3,\r\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\r\n flexShrink: 0,\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n width: EXPANDED_WIDTH,\r\n }}\r\n >\r\n <Typography\r\n variant=\"h6\"\r\n sx={{\r\n width: \"180px\",\r\n fontSize: \"18px\",\r\n fontWeight: 700,\r\n color: \"#4D3019\",\r\n lineHeight: 1.3,\r\n whiteSpace: \"pre-line\",\r\n flex: 1,\r\n pr: 2,\r\n }}\r\n >\r\n {centreName ?? \"Centre Name\"}\r\n </Typography>\r\n\r\n <ToggleButton\r\n onClick={() => onToggle()}\r\n sx={{ ml: \"auto\" }}\r\n aria-label=\"Collapse sidebar\"\r\n >\r\n <KeyboardDoubleArrowLeftRounded sx={{ fontSize: 20 }} />\r\n </ToggleButton>\r\n </Box>\r\n ) : (\r\n <Box\r\n sx={{\r\n px: 1,\r\n py: 3,\r\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <ToggleButton onClick={onToggle} aria-label=\"Expand sidebar\">\r\n <KeyboardDoubleArrowRightRounded sx={{ fontSize: 20 }} />\r\n </ToggleButton>\r\n </Box>\r\n )}\r\n\r\n {/* Sidebar Items */}\r\n <Box\r\n sx={{\r\n flex: 1,\r\n overflowY: \"auto\",\r\n px: isOpen ? 0 : 1,\r\n py: 3,\r\n }}\r\n >\r\n <List sx={{ p: 0 }}>\r\n {items.map((item) => (\r\n <SidebarItem\r\n currentPath={currentPath}\r\n key={item.id}\r\n expandedSet={expandedSet}\r\n setExpand={setExpanded}\r\n isOpen={isOpen}\r\n isAdmin={isAdmin}\r\n item={item}\r\n onNavigate={onNavigate}\r\n />\r\n ))}\r\n </List>\r\n </Box>\r\n </Box>\r\n </SidebarContainer>\r\n </>\r\n );\r\n};\r\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SidebarV2.js","sources":["../../../../src/components/SidebarV2.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\r\nimport {\r\n Box,\r\n IconButton,\r\n Typography,\r\n List,\r\n ListItemButton,\r\n ListItemText,\r\n Collapse,\r\n styled,\r\n} from \"@mui/material\";\r\nimport { useTheme } from \"../ThemeProvider\";\r\nimport {\r\n ChevronRightRounded,\r\n KeyboardDoubleArrowLeftRounded,\r\n KeyboardDoubleArrowRightRounded,\r\n} from \"@mui/icons-material\";\r\n\r\nconst EXPANDED_WIDTH = \"288px\";\r\nconst COLLAPSED_WIDTH_SMALL = \"80px\";\r\nconst COLLAPSED_WIDTH_DEFAULT = \"64px\";\r\n\r\nexport enum Visibility {\r\n Admin = \"Admin\",\r\n Contributor = \"Contributor\",\r\n Community = \"Community\",\r\n}\r\n\r\nexport interface MenuItem {\r\n id: string | number;\r\n title: string;\r\n icon?: React.ReactNode;\r\n visibility?: Visibility;\r\n url?: string;\r\n items?: MenuItem[];\r\n}\r\n\r\nconst SidebarContainer = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\",\r\n})<{ isOpen: boolean }>(({ theme, isOpen }) => ({\r\n height: \"100vh\",\r\n position: \"sticky\",\r\n top: 0,\r\n paddingLeft: 0,\r\n overflow: \"hidden\",\r\n backgroundColor: \"#fff\",\r\n borderRight: `1px solid ${theme.palette.dark.main}1A`,\r\n flexShrink: 0,\r\n transition: \"all 0.15s ease-out\",\r\n width: isOpen ? EXPANDED_WIDTH : COLLAPSED_WIDTH_DEFAULT,\r\n zIndex: 50,\r\n [theme.breakpoints.down(\"md\")]: {\r\n position: \"fixed\",\r\n left: isOpen ? 0 : `-${EXPANDED_WIDTH}`,\r\n width: EXPANDED_WIDTH,\r\n },\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: isOpen ? EXPANDED_WIDTH : COLLAPSED_WIDTH_SMALL,\r\n },\r\n}));\r\n\r\nconst ToggleButton = styled(IconButton)(({ theme }) => ({\r\n width: 40,\r\n height: 40,\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: \"#4D3019\",\r\n color: \"#fff\",\r\n \"&:hover\": {\r\n backgroundColor: \"#3d2614\",\r\n },\r\n}));\r\n\r\nconst MenuItemButton = styled(ListItemButton, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\" && prop !== \"isActive\",\r\n})<{ isActive?: boolean; isOpen: boolean }>(({ theme, isActive, isOpen }) => ({\r\n borderRadius: isOpen\r\n ? `0 ${theme.shape.borderRadius}px ${theme.shape.borderRadius}px 0`\r\n : theme.shape.borderRadius,\r\n paddingLeft: 0,\r\n paddingRight: isOpen ? theme.spacing(2) : 0,\r\n marginRight: isOpen ? 8 : 0,\r\n minHeight: 64,\r\n justifyContent: isOpen ? \"flex-start\" : \"center\",\r\n backgroundClip: \"padding-box\",\r\n backgroundOrigin: \"border-box\",\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}0D`,\r\n },\r\n ...(isActive && {\r\n backgroundColor: `${theme.palette.primary.main}1A`,\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}1A`,\r\n },\r\n }),\r\n}));\r\n\r\nconst IconWrapper = styled(Box, {\r\n shouldForwardProp: (prop) => prop !== \"isOpen\",\r\n})<{ isOpen: boolean }>(({ theme, isOpen }) => ({\r\n width: isOpen ? 32 : 40,\r\n height: isOpen ? 32 : 40,\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n backgroundColor: \"transparent\",\r\n}));\r\n\r\nconst SidebarItem = ({\r\n isOpen,\r\n isAdmin,\r\n item,\r\n onNavigate,\r\n expandedSet,\r\n setExpand: onExpand,\r\n depth = 0,\r\n currentPath,\r\n}: {\r\n isOpen: boolean;\r\n isAdmin: boolean;\r\n item: MenuItem;\r\n onNavigate: (path: string) => void;\r\n expandedSet: Set<string | number>;\r\n setExpand: React.Dispatch<React.SetStateAction<Set<string | number>>>;\r\n depth?: number;\r\n currentPath: string;\r\n}) => {\r\n // Check visibility based on visibility state and isAdmin prop\r\n const isVisible =\r\n item.visibility === Visibility.Admin\r\n ? !!isAdmin\r\n : item.visibility === Visibility.Contributor || !item.visibility;\r\n if (!isVisible) {\r\n return null;\r\n }\r\n\r\n const theme = useTheme();\r\n const nestedPadding = 3 + depth;\r\n\r\n const isExpanded = () => expandedSet.has(item.id);\r\n\r\n const toggleExpand = () => {\r\n if (!isExpanded()) {\r\n onExpand(new Set([...expandedSet, item.id]));\r\n } else {\r\n expandedSet.delete(item.id);\r\n onExpand(new Set(expandedSet));\r\n }\r\n };\r\n\r\n const isActive =\r\n currentPath.includes(item.url as string) ||\r\n currentPath.includes(item.title.toLowerCase() as string);\r\n\r\n return (\r\n <Box sx={{ mb: depth > 0 ? 0 : 1 }}>\r\n <MenuItemButton\r\n disableRipple\r\n isOpen={isOpen}\r\n onClick={() => {\r\n if (item.url) onNavigate(item.url);\r\n else if (item.items) toggleExpand();\r\n }}\r\n isActive={isActive}\r\n title={!isOpen ? item.title : undefined}\r\n sx={{\r\n ...(depth > 0 && {\r\n pl: nestedPadding,\r\n }),\r\n }}\r\n >\r\n {item.icon && (\r\n <IconWrapper isOpen={isOpen} sx={{ ml: isOpen ? 2 : 0 }}>\r\n {item.icon}\r\n </IconWrapper>\r\n )}\r\n {isOpen && (\r\n <>\r\n <ListItemText\r\n primary={item.title}\r\n slotProps={{\r\n primary: {\r\n style: { textDecoration: isActive ? \"underline\" : \"\" },\r\n width: 180 - nestedPadding - (item.items ? 32 : 0),\r\n ...(depth > 0\r\n ? {\r\n fontSize: \"0.875rem\",\r\n }\r\n : {\r\n fontSize: \"1rem\",\r\n fontWeight: 700,\r\n }),\r\n },\r\n }}\r\n sx={{ flex: 1, ml: 1 }}\r\n />\r\n {item.items && item.items.length > 0 && (\r\n <IconButton\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n if (item.items) toggleExpand();\r\n }}\r\n disableRipple\r\n sx={{\r\n ml: 0.5,\r\n borderRadius: 1,\r\n width: 32,\r\n height: 32,\r\n \"&:hover\": {\r\n backgroundColor: `${theme.palette.primary.main}1F`,\r\n },\r\n }}\r\n >\r\n <ChevronRightRounded\r\n sx={{\r\n fontSize: 16,\r\n color: \"#4D3019\",\r\n transition: \"transform 0.1s\",\r\n transform: isExpanded() ? \"rotate(90deg)\" : \"rotate(0deg)\",\r\n }}\r\n />\r\n </IconButton>\r\n )}\r\n </>\r\n )}\r\n </MenuItemButton>\r\n {isExpanded() && isOpen && (\r\n <Collapse in={true} timeout=\"auto\">\r\n <List sx={{ p: 0, mt: 0.5 }}>\r\n {item.items &&\r\n item.items.map((child) => (\r\n <SidebarItem\r\n key={child.id}\r\n currentPath={currentPath}\r\n expandedSet={expandedSet}\r\n setExpand={onExpand}\r\n isOpen={isOpen}\r\n isAdmin={isAdmin}\r\n item={child}\r\n onNavigate={onNavigate}\r\n depth={depth + 1}\r\n />\r\n ))}\r\n </List>\r\n </Collapse>\r\n )}\r\n </Box>\r\n );\r\n};\r\n\r\nexport const SidebarV2 = ({\r\n isOpen,\r\n onToggle,\r\n centreName = \"Centre name goes here \\n across two lines\",\r\n onNavigate,\r\n items,\r\n isAdmin,\r\n currentPath,\r\n}: {\r\n isOpen: boolean;\r\n onToggle: () => void;\r\n items: MenuItem[];\r\n centreName?: string;\r\n onNavigate: (path: string) => void;\r\n isAdmin: boolean;\r\n currentPath: string;\r\n}) => {\r\n const findExpandItems = (items: MenuItem[]): (string | number)[] => {\r\n for (const item of items) {\r\n const isActive =\r\n currentPath.includes(item.url as string) ||\r\n currentPath.includes(item.title.toLowerCase() as string);\r\n if (isActive) {\r\n return item.items\r\n ? [item.id, ...findExpandItems(item.items)]\r\n : [item.id];\r\n }\r\n }\r\n return [];\r\n };\r\n\r\n const theme = useTheme();\r\n const [expandedSet, setExpanded] = useState<Set<string | number>>(\r\n () => new Set(findExpandItems(items)),\r\n );\r\n\r\n return (\r\n <>\r\n {isOpen && (\r\n <Box\r\n sx={{\r\n position: \"fixed\",\r\n inset: 0,\r\n bgcolor: \"rgba(0, 0, 0, 0.5)\",\r\n zIndex: 40,\r\n display: { xs: \"block\", md: \"none\" },\r\n }}\r\n onClick={onToggle}\r\n />\r\n )}\r\n <SidebarContainer isOpen={isOpen}>\r\n <Box sx={{ display: \"flex\", flexDirection: \"column\", height: \"100%\" }}>\r\n {/* Sidebar Header */}\r\n {isOpen ? (\r\n <Box\r\n sx={{\r\n px: 2,\r\n py: 3,\r\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\r\n flexShrink: 0,\r\n position: \"relative\",\r\n display: \"flex\",\r\n flexDirection: \"row\",\r\n alignItems: \"center\",\r\n width: EXPANDED_WIDTH,\r\n }}\r\n >\r\n <Typography\r\n variant=\"h6\"\r\n sx={{\r\n width: \"180px\",\r\n fontSize: \"18px\",\r\n fontWeight: 700,\r\n color: \"#4D3019\",\r\n lineHeight: 1.3,\r\n whiteSpace: \"pre-line\",\r\n flex: 1,\r\n pr: 2,\r\n }}\r\n >\r\n {centreName ?? \"Centre Name\"}\r\n </Typography>\r\n\r\n <ToggleButton\r\n onClick={() => onToggle()}\r\n sx={{ ml: \"auto\" }}\r\n aria-label=\"Collapse sidebar\"\r\n >\r\n <KeyboardDoubleArrowLeftRounded sx={{ fontSize: 20 }} />\r\n </ToggleButton>\r\n </Box>\r\n ) : (\r\n <Box\r\n sx={{\r\n px: 1,\r\n py: 3,\r\n borderBottom: `1px solid ${theme.palette.dark.main}1A`,\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n }}\r\n >\r\n <ToggleButton onClick={onToggle} aria-label=\"Expand sidebar\">\r\n <KeyboardDoubleArrowRightRounded sx={{ fontSize: 20 }} />\r\n </ToggleButton>\r\n </Box>\r\n )}\r\n\r\n {/* Sidebar Items */}\r\n <Box\r\n sx={{\r\n flex: 1,\r\n overflowY: \"auto\",\r\n px: isOpen ? 0 : 1,\r\n py: 3,\r\n }}\r\n >\r\n <List sx={{ p: 0 }}>\r\n {items.map((item) => (\r\n <SidebarItem\r\n currentPath={currentPath}\r\n key={item.id}\r\n expandedSet={expandedSet}\r\n setExpand={setExpanded}\r\n isOpen={isOpen}\r\n isAdmin={isAdmin}\r\n item={item}\r\n onNavigate={onNavigate}\r\n />\r\n ))}\r\n </List>\r\n </Box>\r\n </Box>\r\n </SidebarContainer>\r\n </>\r\n );\r\n};\r\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as lib } from '../../../_virtual/
|
|
1
|
+
import { __exports as lib } from '../../../_virtual/index10.js';
|
|
2
2
|
import { __require as requireLib$1 } from '../../domelementtype/lib/index.js';
|
|
3
3
|
import { __require as requireLib$2 } from '../../entities/lib/index.js';
|
|
4
4
|
import { __require as requireForeignNames } from './foreignNames.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { __exports as lib } from '../../../_virtual/
|
|
1
|
+
import { __exports as lib } from '../../../_virtual/index9.js';
|
|
2
2
|
import { __require as requireStringify } from './stringify.js';
|
|
3
3
|
import { __require as requireTraversal } from './traversal.js';
|
|
4
4
|
import { __require as requireManipulation } from './manipulation.js';
|