aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--frontend/src/components/Sidebar.tsx41
1 files changed, 22 insertions, 19 deletions
diff --git a/frontend/src/components/Sidebar.tsx b/frontend/src/components/Sidebar.tsx
index 71b79be..8216cff 100644
--- a/frontend/src/components/Sidebar.tsx
+++ b/frontend/src/components/Sidebar.tsx
@@ -1,4 +1,4 @@
1import React from 'react'; 1import React, { useCallback } from 'react';
2import { Link, useLocation } from 'react-router-dom'; 2import { Link, useLocation } from 'react-router-dom';
3 3
4import { 4import {
@@ -39,22 +39,7 @@ const Sidebar: React.FC<SidebarProps> = ({
39 const location = useLocation(); 39 const location = useLocation();
40 const path = location.pathname; 40 const path = location.pathname;
41 41
42 const handle_sidebar_click = (clicked_sidebar_idx: number) => { 42 const _handle_sidebar_hide = useCallback(() => {
43 const btn = document.querySelectorAll('button.sidebar-button');
44 if (isSidebarOpen) {
45 setSidebarOpen(false);
46 _handle_sidebar_hide();
47 }
48 // clusterfuck
49 btn.forEach((e, i) => {
50 btn[i].classList.remove('sidebar-button-selected');
51 btn[i].classList.add('sidebar-button-deselected');
52 });
53 btn[clicked_sidebar_idx].classList.add('sidebar-button-selected');
54 btn[clicked_sidebar_idx].classList.remove('sidebar-button-deselected');
55 };
56
57 const _handle_sidebar_hide = () => {
58 var btn = document.querySelectorAll( 43 var btn = document.querySelectorAll(
59 'button.sidebar-button' 44 'button.sidebar-button'
60 ) as NodeListOf<HTMLElement>; 45 ) as NodeListOf<HTMLElement>;
@@ -115,7 +100,25 @@ const Sidebar: React.FC<SidebarProps> = ({
115 side.style.zIndex = '0'; 100 side.style.zIndex = '0';
116 }, 300); 101 }, 300);
117 } 102 }
118 }; 103 }, [isSidebarOpen, profile]);
104
105 const handle_sidebar_click = useCallback(
106 (clicked_sidebar_idx: number) => {
107 const btn = document.querySelectorAll('button.sidebar-button');
108 if (isSidebarOpen) {
109 setSidebarOpen(false);
110 _handle_sidebar_hide();
111 }
112 // clusterfuck
113 btn.forEach((e, i) => {
114 btn[i].classList.remove('sidebar-button-selected');
115 btn[i].classList.add('sidebar-button-deselected');
116 });
117 btn[clicked_sidebar_idx].classList.add('sidebar-button-selected');
118 btn[clicked_sidebar_idx].classList.remove('sidebar-button-deselected');
119 },
120 [isSidebarOpen, _handle_sidebar_hide]
121 );
119 122
120 const _handle_sidebar_lock = () => { 123 const _handle_sidebar_lock = () => {
121 if (!isSidebarLocked) { 124 if (!isSidebarLocked) {
@@ -147,7 +150,7 @@ const Sidebar: React.FC<SidebarProps> = ({
147 } else if (path.includes('about')) { 150 } else if (path.includes('about')) {
148 handle_sidebar_click(6); 151 handle_sidebar_click(6);
149 } 152 }
150 }, [path]); 153 }, [path, handle_sidebar_click]);
151 154
152 return ( 155 return (
153 <div id="sidebar"> 156 <div id="sidebar">