mirror of
https://github.com/cpvalente/ontime.git
synced 2026-08-20 14:39:06 +00:00
refactor: remove unnecessary handler
This commit is contained in:
committed by
Carlos Valente
parent
ac52b3f0c1
commit
30e290c320
@@ -1,4 +1,4 @@
|
|||||||
import { memo, PropsWithChildren, useRef } from 'react';
|
import { memo, PropsWithChildren } from 'react';
|
||||||
import { createPortal } from 'react-dom';
|
import { createPortal } from 'react-dom';
|
||||||
import { Link, useLocation } from 'react-router-dom';
|
import { Link, useLocation } from 'react-router-dom';
|
||||||
import {
|
import {
|
||||||
@@ -19,7 +19,6 @@ import { IoSwapVertical } from '@react-icons/all-files/io5/IoSwapVertical';
|
|||||||
|
|
||||||
import { isLocalhost } from '../../../externals';
|
import { isLocalhost } from '../../../externals';
|
||||||
import { navigatorConstants } from '../../../viewerConfig';
|
import { navigatorConstants } from '../../../viewerConfig';
|
||||||
import useClickOutside from '../../hooks/useClickOutside';
|
|
||||||
import { useElectronEvent } from '../../hooks/useElectronEvent';
|
import { useElectronEvent } from '../../hooks/useElectronEvent';
|
||||||
import useInfo from '../../hooks-query/useInfo';
|
import useInfo from '../../hooks-query/useInfo';
|
||||||
import { useClientStore } from '../../stores/clientStore';
|
import { useClientStore } from '../../stores/clientStore';
|
||||||
@@ -48,12 +47,8 @@ function NavigationMenu(props: NavigationMenuProps) {
|
|||||||
const { mirror, toggleMirror } = useViewOptionsStore();
|
const { mirror, toggleMirror } = useViewOptionsStore();
|
||||||
const location = useLocation();
|
const location = useLocation();
|
||||||
|
|
||||||
const menuRef = useRef<HTMLDivElement | null>(null);
|
|
||||||
|
|
||||||
useClickOutside(menuRef, () => onClose);
|
|
||||||
|
|
||||||
return createPortal(
|
return createPortal(
|
||||||
<div id='navigation-menu-portal' ref={menuRef}>
|
<div id='navigation-menu-portal'>
|
||||||
<RenameClientModal id={id} name={name} isOpen={isOpenRename} onClose={onCloseRename} />
|
<RenameClientModal id={id} name={name} isOpen={isOpenRename} onClose={onCloseRename} />
|
||||||
<Drawer placement='left' onClose={onClose} isOpen={isOpen} variant='ontime' data-testid='navigation__menu'>
|
<Drawer placement='left' onClose={onClose} isOpen={isOpen} variant='ontime' data-testid='navigation__menu'>
|
||||||
<DrawerOverlay />
|
<DrawerOverlay />
|
||||||
|
|||||||
@@ -1,25 +0,0 @@
|
|||||||
import { RefObject, useEffect } from 'react';
|
|
||||||
|
|
||||||
type ClickOutsideEventHandler = (event: MouseEvent) => void;
|
|
||||||
|
|
||||||
export default function useClickOutside<T extends HTMLElement = HTMLElement>(
|
|
||||||
ref: RefObject<T>,
|
|
||||||
callback: ClickOutsideEventHandler,
|
|
||||||
) {
|
|
||||||
useEffect(() => {
|
|
||||||
function handleClick(event: MouseEvent) {
|
|
||||||
const element = ref?.current;
|
|
||||||
|
|
||||||
// Do nothing if clicking ref's element or descendent element
|
|
||||||
if (!element || element.contains(event.target as Node)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
callback(event);
|
|
||||||
}
|
|
||||||
|
|
||||||
document.addEventListener('click', handleClick);
|
|
||||||
return () => {
|
|
||||||
document.removeEventListener('click', handleClick);
|
|
||||||
};
|
|
||||||
}, [ref, callback]);
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user