import { useEffect, useRef } from 'react'; import { Trip } from 'models'; import { secondsToTimeString } from 'lib/util'; import styles from './Sidebar.module.css'; interface Props { trips: Trip[]; currentTrip: Trip; asideOpen: boolean; handleClose: () => void; setCurrentTrip: (trip: Trip) => void; } export default function Sidebar({ trips, currentTrip, asideOpen, handleClose, setCurrentTrip, }: Props): JSX.Element { const wrapperRef = useRef(null); useEffect(() => { function handleClickOutside(e: MouseEvent) { if (wrapperRef.current && !wrapperRef.current.contains(e.target)) { handleClose(); } } document.addEventListener('mousedown', handleClickOutside); return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, [wrapperRef]); function handleTripChange(trip: Trip): void { setCurrentTrip(trip); handleClose(); } return ( ); }