|
|
|
@ -1,4 +1,10 @@ |
|
|
|
|
import React, { ReactNode, ComponentType } from "react"; |
|
|
|
|
import React, { |
|
|
|
|
ReactNode, |
|
|
|
|
ComponentType, |
|
|
|
|
useState, |
|
|
|
|
//useRef,
|
|
|
|
|
//useEffect,
|
|
|
|
|
} from "react"; |
|
|
|
|
import styles from "./OrganizedContent.module.css"; |
|
|
|
|
|
|
|
|
|
export interface LinkProps { |
|
|
|
@ -28,12 +34,27 @@ interface ChildProps { |
|
|
|
|
link: Link; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
interface MobileProps { |
|
|
|
|
open: boolean; |
|
|
|
|
setOpen: React.Dispatch<React.SetStateAction<boolean>>; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
interface MenuProps { |
|
|
|
|
open: boolean; |
|
|
|
|
setOpen: React.Dispatch<React.SetStateAction<boolean>>; |
|
|
|
|
childProps: ChildProps; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
export const OrganizedContent = ({ |
|
|
|
|
headings, |
|
|
|
|
currentIndex, |
|
|
|
|
link: Link, |
|
|
|
|
children, |
|
|
|
|
}: Props) => { |
|
|
|
|
const [open, setOpen] = useState(false); |
|
|
|
|
//const node = useRef();
|
|
|
|
|
//useOnClickOutside(node, () => setOpen(false));
|
|
|
|
|
|
|
|
|
|
const isReadAll = headings[currentIndex].title === "Read All"; |
|
|
|
|
|
|
|
|
|
const readAllContent = headings |
|
|
|
@ -51,6 +72,17 @@ export const OrganizedContent = ({ |
|
|
|
|
link: Link, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const mobileProps: MobileProps = { |
|
|
|
|
open: open, |
|
|
|
|
setOpen: setOpen, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const menuProps: MenuProps = { |
|
|
|
|
open: open, |
|
|
|
|
setOpen: setOpen, |
|
|
|
|
childProps: childProps, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
|
<div className={styles.organizedContent}> |
|
|
|
|
<Nav {...childProps} /> |
|
|
|
@ -65,6 +97,10 @@ export const OrganizedContent = ({ |
|
|
|
|
</> |
|
|
|
|
)} |
|
|
|
|
</div> |
|
|
|
|
<div> |
|
|
|
|
<Burger {...mobileProps} /> |
|
|
|
|
<Menu {...menuProps} /> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
); |
|
|
|
|
}; |
|
|
|
@ -162,3 +198,27 @@ const Footer = ({ headings, currentIndex, link: Link }: ChildProps) => { |
|
|
|
|
</div> |
|
|
|
|
); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const Burger = ({ open, setOpen }: MobileProps) => { |
|
|
|
|
const line1 = open ? styles.burgerLineOpen1 : styles.burgerLineClosed1; |
|
|
|
|
const line2 = open ? styles.burgerLineOpen2 : styles.burgerLineClosed2; |
|
|
|
|
const line3 = open ? styles.burgerLineOpen3 : styles.burgerLineClosed3; |
|
|
|
|
return ( |
|
|
|
|
<div className={styles.burger} onClick={() => setOpen(!open)}> |
|
|
|
|
<div className={line1} /> |
|
|
|
|
<div className={line2} /> |
|
|
|
|
<div className={line3} /> |
|
|
|
|
</div> |
|
|
|
|
); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const Menu = ({ open, childProps }: MenuProps) => { |
|
|
|
|
const mobileNav = open |
|
|
|
|
? styles.mobileNav |
|
|
|
|
: styles.mobileNav + " " + styles.mobileNavClosed; |
|
|
|
|
return ( |
|
|
|
|
<div className={mobileNav}> |
|
|
|
|
<Nav {...childProps} /> |
|
|
|
|
</div> |
|
|
|
|
); |
|
|
|
|
}; |
|
|
|
|