diff --git a/app/components/layout.js b/app/components/layout.js index d21faf98..250328a0 100644 --- a/app/components/layout.js +++ b/app/components/layout.js @@ -1,5 +1,6 @@ import '../styles/Layout.module.css'; import Footer from './footer'; +import NewMenubar from './newMenuBar'; import Menubar from './menubar'; import { useRouter } from 'next/router'; @@ -7,7 +8,8 @@ function Layout(props) { const { pathname } = useRouter(); return ( <> - + {/**/} + {props.children}
{/* announcement component here*/} diff --git a/app/components/newMenuBar.js b/app/components/newMenuBar.js new file mode 100644 index 00000000..c731e7ef --- /dev/null +++ b/app/components/newMenuBar.js @@ -0,0 +1,273 @@ +import { useEffect, useRef, useState } from 'react'; +import { Navbar, Nav, Container, Col, Row, Offcanvas } from 'react-bootstrap'; +import styles from '../styles/Menubar.module.css'; +import { FirebaseAuthMenuButton } from './auth/firebase'; +import BrandLogo from './brandlogo'; + +const ArrowIcon = () => { + return ( + + + + ); +}; + +const MobileNav = ({ nav_Items }) => { + const [dropDown, setDropDown] = useState({ show: false, _id: 0 }); + + return ( + + + +
+ + +
+
+ + + Rocket Chat Community + + + {nav_Items?.map((nav_Item) => + nav_Item.url ? ( +
+ { + setDropDown({ show: false, _id: 0 }); + }} + > + + + {nav_Item.label} + + + +
+ ) : ( +
+ { + if (dropDown._id === nav_Item.id) { + setDropDown({ show: false, _id: 0 }); + } else { + setDropDown({ show: true, _id: nav_Item.id }); + } + }} + > + + {nav_Item.label} + + + {nav_Item.sub_menus?.length > 1 && ( + + + + )} + + + {dropDown._id === nav_Item.id && dropDown.show ? ( +
+
+ {nav_Item.sub_menus.map( + (item) => + item.parent_id === null && ( + <> + + {nav_Item.sub_menus.map( + (subItem) => + subItem.parent_id === item.id && ( + + ) + )} + + ) + )} +
+
+ ) : ( + '' + )} +
+ ) + )} +
+
+ +
+ +
+
+
+
+ ); +}; + +const DesktopNav = ({ nav_Items }) => { + const [isShown, setIsShown] = useState(0); + const clickRef = useRef(null); + + const handleClickOutside = (event) => { + if (clickRef.current && !clickRef.current.contains(event.target)) { + setIsShown(false); + } + }; + + useEffect(() => { + document.addEventListener('click', handleClickOutside, true); + return () => { + document.removeEventListener('click', handleClickOutside, true); + }; + }, []); + + return ( + + + +
+ +
+
+ ); +}; + +export default function NewMenubar(props) { + return ( + + + + + ); +} diff --git a/app/styles/Menubar.module.css b/app/styles/Menubar.module.css index 1b06045e..c8cb9759 100644 --- a/app/styles/Menubar.module.css +++ b/app/styles/Menubar.module.css @@ -108,12 +108,57 @@ top: 0; } +.rotate { + transform: rotate(-180deg); + transition: all 0.1s; +} +.navbar_subitems { + position: absolute; + transform: translate(-5rem, 30px); + background-color: white; + padding: 0rem; + max-width: 36rem; + z-index: 10; +} + +.navbar_subitems_items { + padding: 1rem 1rem 1rem 2rem; + width: 18rem; +} + +.subItemLinks { + cursor: pointer; + + text-decoration: none; + color: black; +} + +.color { + color: red; +} + +.arrow { + margin-left: 80%; +} + +.arrowRotate { + margin-left: 80%; + transform: rotate(180deg); +} +.navbar_item_hover:hover { + cursor: pointer; + color: red; +} + +.dropdown { + cursor: pointer; +} + .toggler_bar::before{ transform: rotate(45deg); top: 0 } - .threedots:after { content: "\2807"; font-size: 30px; @@ -141,4 +186,5 @@ .dropdown_menu_item { color: black; text-decoration: none; -} \ No newline at end of file +} + diff --git a/cms/src/api/sub-menu/content-types/sub-menu/schema.json b/cms/src/api/sub-menu/content-types/sub-menu/schema.json index a1497273..d5111aba 100644 --- a/cms/src/api/sub-menu/content-types/sub-menu/schema.json +++ b/cms/src/api/sub-menu/content-types/sub-menu/schema.json @@ -16,6 +16,9 @@ }, "url": { "type": "string" + }, + "parent_id": { + "type": "integer" } } }