import ChevronDownIcon from '@heroicons/react/24/outline/ChevronDownIcon'; import { useEffect, useState } from 'react'; import { NavLink, useLocation } from 'react-router-dom'; import { useSelector } from 'react-redux'; function SidebarSubmenu({ submenu, name, icon, closeMobileSidebar }) { const location = useLocation(); const [isExpanded, setIsExpanded] = useState(false); // ดึง Role จาก Redux const userRole = useSelector(state => state.auth.role); // ฟังก์ชันตรวจสอบสิทธิ์ const canAccess = (requiredRole) => { // userRole ที่มาจาก Redux ควรเป็นตัวพิมพ์ใหญ่แล้ว if (!requiredRole) return true; const allowedRoles = Array.isArray(requiredRole) ? requiredRole : [requiredRole]; return allowedRoles.includes(userRole); }; // เปิด Submenu หาก Path ปัจจุบันอยู่ใน Submenu นั้น useEffect(() => { // ตรวจสอบว่ามีเมนูย่อยใดที่ผู้ใช้เข้าถึงได้และเป็น Path ปัจจุบันหรือไม่ const isActive = submenu.some( // ใช้ userRole ใน canAccess m => canAccess(m.requiredRole) && m.path === location.pathname ); if (isActive) { setIsExpanded(true); } }, [location.pathname, submenu, userRole]); return (