mirror of
https://github.com/bubblecup-12/VogelSocialMedia.git
synced 2025-07-06 15:18:48 +00:00
make it better
This commit is contained in:
parent
56e8f80245
commit
7c6f60f8a5
3 changed files with 50 additions and 15 deletions
3
code/frontend/public/assets/icons/x.svg
Normal file
3
code/frontend/public/assets/icons/x.svg
Normal file
|
@ -0,0 +1,3 @@
|
|||
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M30 10L10 30M10 10L30 30" stroke="#1E1E1E" stroke-width="3.5" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
After Width: | Height: | Size: 223 B |
|
@ -4,6 +4,12 @@
|
|||
--Rotkehlchen-orange-default: #e79a0e;
|
||||
}
|
||||
|
||||
.outest-container {
|
||||
display: grid;
|
||||
grid-template-rows: auto auto;
|
||||
grid-template-columns: 1fr; /* 1 Spalte */
|
||||
align-content: end;
|
||||
}
|
||||
.base-header {
|
||||
width: 100vw;
|
||||
display: flex;
|
||||
|
@ -30,7 +36,16 @@
|
|||
text-align: center;
|
||||
}
|
||||
|
||||
.base-header-icon {
|
||||
@media (min-width: 768px) {
|
||||
.menu-container {
|
||||
align-items: end;
|
||||
justify-content: end;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.header-icon {
|
||||
margin: 40px;
|
||||
display: flex;
|
||||
width: 30px;
|
||||
|
|
|
@ -1,41 +1,58 @@
|
|||
import "./Header.css";
|
||||
import React, { useState } from "react";
|
||||
import React, { useState, useRef, useEffect } from "react";
|
||||
|
||||
|
||||
// TODO: Dinge so umstrukturieren, dass der State für das offene menü in Header ist und das Menü auch in Header, sodass es mit width 100% die volle breite einnehmen kann
|
||||
|
||||
function Header() {
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
const iconRef = useRef<HTMLImageElement>(null);
|
||||
|
||||
const toggleMenu = () => {
|
||||
setIsOpen(isOpen? false : true);
|
||||
setIsOpen(!isOpen);
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="outest-container" >
|
||||
<header className="base-header">
|
||||
<div className="base-header-icon"> <img src='/assets/icons/feather_black.svg' alt="featherIcon" /> </div>
|
||||
<p className="header-title small-title">
|
||||
Feather Feed
|
||||
</p>
|
||||
<div className="base-header-icon"> <img src='/assets/icons/three_menu_stripes_black.svg' alt="x" onClick={toggleMenu}/> </div>
|
||||
<div className="header-icon"> {isOpen? <img src='/assets/icons/x.svg' alt="x" ref={iconRef} onClick={toggleMenu}/> : <img src='/assets/icons/three_menu_stripes_black.svg' alt="x" onClick={toggleMenu} />} </div>
|
||||
</header>
|
||||
<MenuButton isOpen={isOpen}/>
|
||||
</>
|
||||
<Menu isOpen={isOpen} toggleMenu={toggleMenu} setIsOpen={setIsOpen} iconRef={iconRef}/>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
function MenuButton({isOpen}: any) {
|
||||
|
||||
return (
|
||||
<div style={{ position: "relative", display: "inline-block", width: "100vw"}}>
|
||||
function Menu({isOpen, toggleMenu, setIsOpen, iconRef}: any) {
|
||||
const menuRef = useRef<HTMLDivElement>(null);
|
||||
|
||||
useEffect(() => {
|
||||
function handleClickOutside(event: MouseEvent) {
|
||||
if (menuRef.current && !menuRef.current.contains(event.target as Node) && !iconRef.current.contains(event.target as Node)) {
|
||||
setIsOpen(false);
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener("mousedown", handleClickOutside);
|
||||
return () => {
|
||||
document.removeEventListener("mousedown", handleClickOutside);
|
||||
};
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<div className="menu-container">
|
||||
{isOpen && (
|
||||
<div className="menu">
|
||||
<div style={{ padding: "8px", cursor: "pointer" }}>🔧 Einstellung</div>
|
||||
<div style={{ padding: "8px", cursor: "pointer" }}>📁 Öffnen</div>
|
||||
<div style={{ padding: "8px", cursor: "pointer" }}>❌ Schließen</div>
|
||||
<div className="menu" ref={menuRef}>
|
||||
<div className="menu-item">Home</div>
|
||||
<div className="menu-item">Login</div>
|
||||
<div className="menu-item">Sign up</div>
|
||||
<div className="menu-item">Feed</div>
|
||||
<div className="menu-item">Create Post</div>
|
||||
<div className="menu-item">About</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue