ToggleCollapseButton.tsx 819 B

123456789101112131415161718192021222324
  1. import { memo, useCallback } from 'react';
  2. import { useCollapsedContentsOpened, useCollapsedMode } from '~/stores/ui';
  3. import styles from './ToggleCollapseButton.module.scss';
  4. export const ToggleCollapseButton = memo((): JSX.Element => {
  5. const { data: isCollapsedMode, mutate: mutateCollapsedMode } = useCollapsedMode();
  6. const { mutate: mutateCollapsedContentsOpened } = useCollapsedContentsOpened();
  7. const toggle = useCallback(() => {
  8. mutateCollapsedMode(!isCollapsedMode);
  9. mutateCollapsedContentsOpened(false);
  10. }, [isCollapsedMode, mutateCollapsedContentsOpened, mutateCollapsedMode]);
  11. return (
  12. <button type="button" className={`btn btn-primary ${styles['btn-toggle-collapse']} p-2`} onClick={toggle}>
  13. <span className="material-icons fs-2">first_page</span>
  14. </button>
  15. );
  16. });