diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-04-29 12:13:34 +0200 | 
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-04-29 18:30:05 +0200 | 
| commit | 7e16f500cb7bc0cfd8bafbf6bb1555704f771231 (patch) | |
| tree | bfc2b4a475cb06a787e2c4bdf284165644e82952 /src/components/Toolbar/Toolbar.tsx | |
| parent | 5324664e87bedfaa01ba62c0c847ef5b861e69b3 (diff) | |
chore: remove old pages, components, helpers and types
Since I'm using new components, I will also rewrite the GraphQL queries
so it is easier to start from scratch.
Diffstat (limited to 'src/components/Toolbar/Toolbar.tsx')
| -rw-r--r-- | src/components/Toolbar/Toolbar.tsx | 162 | 
1 files changed, 0 insertions, 162 deletions
| diff --git a/src/components/Toolbar/Toolbar.tsx b/src/components/Toolbar/Toolbar.tsx deleted file mode 100644 index 17f9ef9..0000000 --- a/src/components/Toolbar/Toolbar.tsx +++ /dev/null @@ -1,162 +0,0 @@ -import { ButtonToolbar } from '@components/Buttons'; -import MainNav from '@components/MainNav/MainNav'; -import Spinner from '@components/Spinner/Spinner'; -import dynamic from 'next/dynamic'; -import { RefObject, useCallback, useEffect, useRef, useState } from 'react'; -import styles from './Toolbar.module.scss'; - -const DynamicSearchForm = dynamic( -  () => import('@components/SearchForm/SearchForm'), -  { -    loading: () => <Spinner />, -  } -); - -const DynamicSettings = dynamic(() => import('@components/Settings/Settings'), { -  loading: () => <Spinner />, -}); - -const Toolbar = () => { -  const [isNavOpened, setIsNavOpened] = useState<boolean>(false); -  const [isSearchOpened, setIsSearchOpened] = useState<boolean>(false); -  const [isSettingsOpened, setIsSettingsOpened] = useState<boolean>(false); -  const mainNavRef = useRef<HTMLDivElement>(null); -  const searchBtnRef = useRef<HTMLButtonElement>(null); -  const searchModalRef = useRef<HTMLDivElement>(null); -  const settingsBtnRef = useRef<HTMLButtonElement>(null); -  const settingsModalRef = useRef<HTMLDivElement>(null); - -  useEffect(() => { -    if (isNavOpened) { -      setIsSearchOpened(false); -      setIsSettingsOpened(false); -    } -  }, [isNavOpened]); - -  useEffect(() => { -    if (isSearchOpened) { -      setIsNavOpened(false); -      setIsSettingsOpened(false); -    } -  }, [isSearchOpened]); - -  useEffect(() => { -    if (isSettingsOpened) { -      setIsNavOpened(false); -      setIsSearchOpened(false); -    } -  }, [isSettingsOpened]); - -  const isClickOutside = ( -    ref: RefObject<HTMLDivElement>, -    target: EventTarget -  ) => { -    return ref.current && !ref.current.contains(target as Node); -  }; - -  const isToggleBtn = (ref: RefObject<HTMLDivElement>, target: EventTarget) => { -    return ( -      ref.current && -      ref.current.previousElementSibling && -      ref.current.previousElementSibling.contains(target as Node) -    ); -  }; - -  const isSearchBtn = useCallback((target: HTMLElement) => { -    return ( -      target === searchBtnRef.current || searchBtnRef.current?.contains(target) -    ); -  }, []); - -  const isSettingsBtn = useCallback((target: HTMLElement) => { -    return ( -      target === settingsBtnRef.current || -      settingsBtnRef.current?.contains(target) -    ); -  }, []); - -  const handleVisibility = useCallback( -    (e: MouseEvent | FocusEvent) => { -      let ref: RefObject<HTMLDivElement> | null = null; -      if (isNavOpened) ref = mainNavRef; -      if (isSearchOpened) ref = searchModalRef; -      if (isSettingsOpened) ref = settingsModalRef; - -      if (!ref || !ref.current || !ref.current.id) return; -      if (!isClickOutside(ref, e.target as Node)) return; -      if (isToggleBtn(ref, e.target as Node)) return; - -      if ( -        ref.current.id === 'main-nav' && -        !isSettingsBtn(e.target as HTMLElement) && -        !isSearchBtn(e.target as HTMLElement) -      ) { -        setIsNavOpened(false); -      } - -      if ( -        ref.current.id === 'search-modal' && -        !isSettingsBtn(e.target as HTMLElement) -      ) -        setIsSearchOpened(false); -      if ( -        ref.current.id === 'settings-modal' && -        !isSearchBtn(e.target as HTMLElement) -      ) -        setIsSettingsOpened(false); -    }, -    [isNavOpened, isSearchOpened, isSettingsOpened, isSearchBtn, isSettingsBtn] -  ); - -  useEffect(() => { -    document.addEventListener('mousedown', handleVisibility); -    document.addEventListener('focusin', handleVisibility); - -    return () => { -      document.removeEventListener('mousedown', handleVisibility); -      document.removeEventListener('focusin', handleVisibility); -    }; -  }, [handleVisibility]); - -  const searchClasses = `${styles.menu} ${ -    isSearchOpened ? styles['menu--opened'] : styles['menu--closed'] -  }`; - -  const settingsClasses = `${styles.menu} ${ -    isSettingsOpened ? styles['menu--opened'] : styles['menu--closed'] -  }`; - -  return ( -    <div className={styles.wrapper}> -      <MainNav -        ref={mainNavRef} -        isOpened={isNavOpened} -        setIsOpened={setIsNavOpened} -      /> -      <ButtonToolbar -        ref={searchBtnRef} -        type="search" -        isActivated={isSearchOpened} -        setIsActivated={setIsSearchOpened} -      /> -      <div id="search-modal" className={searchClasses} ref={searchModalRef}> -        <DynamicSearchForm isOpened={isSearchOpened} /> -      </div> -      <ButtonToolbar -        ref={settingsBtnRef} -        type="settings" -        isActivated={isSettingsOpened} -        setIsActivated={setIsSettingsOpened} -      /> -      <div -        id="settings-modal" -        className={settingsClasses} -        ref={settingsModalRef} -      > -        <DynamicSettings /> -      </div> -    </div> -  ); -}; - -export default Toolbar; | 
