Browse Source

add handleDropdownToggle

moekumasaka 1 year ago
parent
commit
62d1aca592
1 changed files with 10 additions and 2 deletions
  1. 10 2
      apps/app/src/client/components/CustomNavigation/CustomNav.tsx

+ 10 - 2
apps/app/src/client/components/CustomNavigation/CustomNav.tsx

@@ -42,10 +42,17 @@ export const CustomNavDropdown = (props: CustomNavDropdownProps): JSX.Element =>
 
 
   const { Icon, i18n } = navTabMapping[activeTab];
   const { Icon, i18n } = navTabMapping[activeTab];
 
 
+  const [isDropdownOpen, setIsDropdownOpen] = useState(false);
+
+  const handleDropdownToggle = () => {
+    setIsDropdownOpen(prev => !prev);
+  };
+
   const menuItemClickHandler = useCallback((key) => {
   const menuItemClickHandler = useCallback((key) => {
     if (onNavSelected != null) {
     if (onNavSelected != null) {
       onNavSelected(key);
       onNavSelected(key);
     }
     }
+    setIsDropdownOpen(false);
   }, [onNavSelected]);
   }, [onNavSelected]);
 
 
   return (
   return (
@@ -55,13 +62,14 @@ export const CustomNavDropdown = (props: CustomNavDropdownProps): JSX.Element =>
         type="button"
         type="button"
         data-bs-toggle="dropdown"
         data-bs-toggle="dropdown"
         aria-haspopup="true"
         aria-haspopup="true"
-        aria-expanded="false"
+        aria-expanded={isDropdownOpen}
+        onClick={handleDropdownToggle}
       >
       >
         <span className="float-start">
         <span className="float-start">
           { Icon != null && <Icon /> } {i18n}
           { Icon != null && <Icon /> } {i18n}
         </span>
         </span>
       </button>
       </button>
-      <div className={`dropdown-menu dropdown-menu-right ${styles['dropdown-menu']}`}>
+      <div className={`dropdown-menu dropdown-menu-right ${isDropdownOpen ? 'show' : ''} ${styles['dropdown-menu']}`}>
         {Object.entries(navTabMapping).map(([key, value]) => {
         {Object.entries(navTabMapping).map(([key, value]) => {
 
 
           const isActive = activeTab === key;
           const isActive = activeTab === key;