This is an automated email from the ASF dual-hosted git repository. ppawar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/atlas.git
The following commit(s) were added to refs/heads/master by this push: new afb661d90 ATLAS-5075 : React UI :Once you scroll down, the Atlas logo and global search in the sidebar disappears. (#407) afb661d90 is described below commit afb661d90aecc01916a8ac6d1caa72d5b10efd73 Author: farhank31 <111185778+farhan...@users.noreply.github.com> AuthorDate: Thu Jul 24 12:37:13 2025 +0530 ATLAS-5075 : React UI :Once you scroll down, the Atlas logo and global search in the sidebar disappears. (#407) Co-authored-by: Farhan Khan <farhan.k...@freestoninfotech.com> --- dashboard/src/styles/sidebar.scss | 1 - dashboard/src/views/Layout/Layout.tsx | 2 +- dashboard/src/views/SideBar/SideBarBody.tsx | 265 ++++++++++++++++------------ 3 files changed, 152 insertions(+), 116 deletions(-) diff --git a/dashboard/src/styles/sidebar.scss b/dashboard/src/styles/sidebar.scss index ed7df3a8a..4f6fbb583 100644 --- a/dashboard/src/styles/sidebar.scss +++ b/dashboard/src/styles/sidebar.scss @@ -164,7 +164,6 @@ .sidebar-wrapper { background: #034858 !important; - position: fixed; top: 20px; height: 100%; overflow-y: auto; diff --git a/dashboard/src/views/Layout/Layout.tsx b/dashboard/src/views/Layout/Layout.tsx index 48e82aaa5..57546794e 100644 --- a/dashboard/src/views/Layout/Layout.tsx +++ b/dashboard/src/views/Layout/Layout.tsx @@ -70,7 +70,7 @@ const Layout: React.FC = () => { crossTab: true, throttle: 1000, eventsThrottle: 1000, - startOnMount: true + startOnMount: true, }); const handleStillHere = () => { setOpenSessionModal(false); diff --git a/dashboard/src/views/SideBar/SideBarBody.tsx b/dashboard/src/views/SideBar/SideBarBody.tsx index 1ea6f54b8..2ecc98d63 100644 --- a/dashboard/src/views/SideBar/SideBarBody.tsx +++ b/dashboard/src/views/SideBar/SideBarBody.tsx @@ -22,7 +22,7 @@ import { useState, ChangeEvent, lazy, - useRef + useRef, } from "react"; import atlasLogo from "/img/atlas_logo.svg"; import { @@ -31,7 +31,7 @@ import { RouteObject, useLocation, useNavigate, - useRoutes + useRoutes, } from "react-router-dom"; import Drawer from "@mui/material/Drawer"; import CssBaseline from "@mui/material/CssBaseline"; @@ -76,16 +76,16 @@ const Main = styled("main", { shouldForwardProp: (prop) => prop !== "open" })<{ padding: theme.spacing(3), transition: theme.transitions.create("margin", { easing: theme.transitions.easing.sharp, - duration: theme.transitions.duration.leavingScreen + duration: theme.transitions.duration.leavingScreen, }), marginLeft: `-${defaultDrawerWidth}`, ...(open && { transition: theme.transitions.create("margin", { easing: theme.transitions.easing.easeOut, - duration: theme.transitions.duration.enteringScreen + duration: theme.transitions.duration.enteringScreen, }), - marginLeft: 0 - }) + marginLeft: 0, + }), })); const DrawerHeader = styled("div")(({ theme }) => ({ @@ -93,7 +93,7 @@ const DrawerHeader = styled("div")(({ theme }) => ({ alignItems: "center", padding: theme.spacing(0, 1), ...theme.mixins.toolbar, - marginBottom: "1rem" + marginBottom: "1rem", })); const SideBarBody = (props: { @@ -118,6 +118,7 @@ const SideBarBody = (props: { const [position, setPosition] = useState<string | number>(defaultDrawerWidth); const draggerRef = useRef<HTMLDivElement>(null); + const headerRef = useRef<HTMLDivElement>(null); const windowWidth = window.innerWidth; const minPosition = 300; const maxPosition = windowWidth * 0.6; @@ -167,7 +168,7 @@ const SideBarBody = (props: { path: PathAssociateWithModule[ key as keyof typeof PathAssociateWithModule ][0], - element: routes + element: routes, }; }); @@ -188,7 +189,7 @@ const SideBarBody = (props: { minHeight: "calc(100vh - 64px)", minWidth: "30px", ...(open == false && { - transform: `translateX(calc(-${position} + 30px)) !important` + transform: `translateX(calc(-${position} + 30px)) !important`, }), ...(open == false && { visibility: "visible !important" }), @@ -200,38 +201,44 @@ const SideBarBody = (props: { top: "0", transition: "none !important", ...(open == false && { - transform: `translateX(30px) !important` + transform: `translateX(30px) !important`, }), - ...(open == false && { visibility: "visible !important" }) - } + ...(open == false && { visibility: "visible !important" }), + }, }} PaperProps={{ - style: { width: position, minWidth: "30px" } + style: { width: position, minWidth: "30px" }, }} variant="persistent" anchor="left" open={open} > - <Paper - className="sidebar-wrapper" + <Stack sx={{ - width: open ? position : "100%", - - ...(open == false && { - overflow: "hidden" - }) + height: "100vh", + width: "100%", + backgroundColor: "#034858", }} > {open && ( - <DrawerHeader> - <Stack gap="2rem" width="100%"> + <DrawerHeader + ref={headerRef} + sx={{ + position: "sticky", + top: 0, + zIndex: 10, + backgroundColor: "#034858", + flexShrink: 0, + }} + > + <Stack gap="1.5rem" width="100%" marginTop="1rem"> <img src={atlasLogo} alt="Atlas logo" onClick={() => { navigate( { - pathname: "/search" + pathname: "/search", }, { replace: true } ); @@ -241,7 +248,7 @@ const SideBarBody = (props: { /> <Paper sx={{ - width: "100%" + width: "100%", }} className="sidebar-searchbar" > @@ -264,80 +271,85 @@ const SideBarBody = (props: { </Stack> </DrawerHeader> )} - <div - className="sidebar-treeview-container" - data-cy="r_entityTreeRender" + <Paper + className="sidebar-wrapper" + sx={{ + flex: 1, + overflow: "hidden auto", + paddingBottom: "0px", // Account for bottom toggle button + ...(open == false && { + overflow: "hidden", + }), + }} > - <Suspense - fallback={ - <Stack className="tree-item-loader-box"> - <CircularProgress size="small" className="tree-item-loader" /> - </Stack> - } + <div + className="sidebar-treeview-container" + data-cy="r_entityTreeRender" > - <EntitiesTree - sideBarOpen={open} - loading={loading} - searchTerm={searchTerm} - /> - </Suspense> - </div> + <Suspense + fallback={ + <Stack className="tree-item-loader-box"> + <CircularProgress + size="small" + className="tree-item-loader" + /> + </Stack> + } + > + <EntitiesTree + sideBarOpen={open} + loading={loading} + searchTerm={searchTerm} + /> + </Suspense> + </div> - <div - className="sidebar-treeview-container" - data-cy="r_classificationTreeRender" - > - <Suspense - fallback={ - <Stack className="tree-item-loader-box"> - <CircularProgress size="small" className="tree-item-loader" /> - </Stack> - } + <div + className="sidebar-treeview-container" + data-cy="r_classificationTreeRender" > - <ClassificationTree - sideBarOpen={open} - loading={loader} - searchTerm={searchTerm} - /> - </Suspense> - </div> + <Suspense + fallback={ + <Stack className="tree-item-loader-box"> + <CircularProgress + size="small" + className="tree-item-loader" + /> + </Stack> + } + > + <ClassificationTree + sideBarOpen={open} + loading={loader} + searchTerm={searchTerm} + /> + </Suspense> + </div> - <div - className="sidebar-treeview-container" - data-cy="r_businessMetadataTreeRender" - > - <Suspense - fallback={ - <Stack className="tree-item-loader-box"> - <CircularProgress size="small" className="tree-item-loader" /> - </Stack> - } + <div + className="sidebar-treeview-container" + data-cy="r_businessMetadataTreeRender" > - <BusinessMetadataTree - sideBarOpen={open} - searchTerm={searchTerm} - /> - </Suspense> - </div> + <Suspense + fallback={ + <Stack className="tree-item-loader-box"> + <CircularProgress + size="small" + className="tree-item-loader" + /> + </Stack> + } + > + <BusinessMetadataTree + sideBarOpen={open} + searchTerm={searchTerm} + /> + </Suspense> + </div> - <div - className="sidebar-treeview-container" - data-cy="r_glossaryTreeRender" - > - <Suspense - fallback={ - <Stack className="tree-item-loader-box"> - <CircularProgress size="small" className="tree-item-loader" /> - </Stack> - } - > - <GlossaryTree sideBarOpen={open} searchTerm={searchTerm} /> - </Suspense> - </div> - {relationshipSearch && ( <div className="sidebar-treeview-container" - data-cy="r_relationshipTreeRender" + data-cy="r_glossaryTreeRender" > <Suspense fallback={ @@ -349,35 +361,60 @@ const SideBarBody = (props: { </Stack> } > - <RelationshipsTree sideBarOpen={open} searchTerm={searchTerm} /> + <GlossaryTree sideBarOpen={open} searchTerm={searchTerm} /> </Suspense> </div> - )} + {relationshipSearch && ( + <div + className="sidebar-treeview-container" + data-cy="r_relationshipTreeRender" + > + <Suspense + fallback={ + <Stack className="tree-item-loader-box"> + <CircularProgress + size="small" + className="tree-item-loader" + /> + </Stack> + } + > + <RelationshipsTree + sideBarOpen={open} + searchTerm={searchTerm} + /> + </Suspense> + </div> + )} - <div - className="sidebar-treeview-container" - data-cy="r_customFilterTreeRender" - > - <Suspense - fallback={ - <Stack className="tree-item-loader-box"> - <CircularProgress size="small" className="tree-item-loader" /> - </Stack> - } + <div + className="sidebar-treeview-container" + data-cy="r_customFilterTreeRender" > - <CustomFiltersTree sideBarOpen={open} searchTerm={searchTerm} /> - </Suspense> - </div> + <Suspense + fallback={ + <Stack className="tree-item-loader-box"> + <CircularProgress + size="small" + className="tree-item-loader" + /> + </Stack> + } + > + <CustomFiltersTree sideBarOpen={open} searchTerm={searchTerm} /> + </Suspense> + </div> + </Paper> <div style={{ - width: "inherit", + width: "100%", textAlign: "right", padding: "8px", - position: "fixed", + position: "sticky", bottom: "0px", zIndex: "9", left: "0", - background: "#034858" + background: "#034858", }} > <IconButton size="medium" onClick={() => handleDrawerOpen()}> @@ -394,19 +431,19 @@ const SideBarBody = (props: { )} </IconButton> </div> - </Paper> + </Stack> </Drawer> <Main open={open} sx={{ ...(open == false && { - marginLeft: `calc(-${position} + 60px) !important` + marginLeft: `calc(-${position} + 60px) !important`, }), margin: "0", overflowX: "auto", background: "#f5f5f5", - padding: "0" + padding: "0", }} > <Stack height="auto" minHeight="100%"> @@ -417,7 +454,7 @@ const SideBarBody = (props: { backgroundColor: "white", height: "56px", alignItems: "center", - padding: "16px" + padding: "16px", }} > <Suspense fallback={null}> @@ -432,7 +469,7 @@ const SideBarBody = (props: { padding: "16px", display: "flex", flex: "1", - flexDirection: "column" + flexDirection: "column", }} > {matched || location.pathname.includes("!") ? ( @@ -444,7 +481,7 @@ const SideBarBody = (props: { top: 0, width: "100%", height: "calc(100vh - 88px)", - position: "relative" + position: "relative", }} > <CircularProgress @@ -455,7 +492,7 @@ const SideBarBody = (props: { position: "absolute", left: "50%", top: "50%", - transform: "translate(-50%, -50%)" + transform: "translate(-50%, -50%)", }} /> </div>