From 2acf85185292012c21009dc104b13720b7932244 Mon Sep 17 00:00:00 2001
From: lsprr <16653744+lsprr@users.noreply.github.com>
Date: Sun, 5 Nov 2023 15:55:38 -0500
Subject: [PATCH] Refactor: Split Sidebar into Menu and SocialMedia components
for modularity
- Created separate Menu and SocialMedia components from the Sidebar.
- Enhanced accessibility features in Menu.js, Sidebar.js, SubMenu.js, and SocialMedia.js.
- Adjusted NavLink components to improve keyboard navigation accessibility.
- Cleaned up and isolated component responsibilities for clarity and maintenance.
---
apps/OpenSign/src/components/sidebar/Menu.js | 21 ++++
.../src/components/sidebar/Sidebar.js | 106 ++++++------------
.../src/components/sidebar/SocialMedia.js | 27 +++++
.../src/components/sidebar/SubMenu.js | 44 ++++++--
4 files changed, 115 insertions(+), 83 deletions(-)
create mode 100644 apps/OpenSign/src/components/sidebar/Menu.js
create mode 100644 apps/OpenSign/src/components/sidebar/SocialMedia.js
diff --git a/apps/OpenSign/src/components/sidebar/Menu.js b/apps/OpenSign/src/components/sidebar/Menu.js
new file mode 100644
index 000000000..459451b23
--- /dev/null
+++ b/apps/OpenSign/src/components/sidebar/Menu.js
@@ -0,0 +1,21 @@
+import React from "react";
+import { NavLink } from "react-router-dom";
+
+const Menu = ({ item, isOpen, closeSidebar }) => {
+ return (
+
+
+
+ {item.title}
+
+
+ )
+}
+
+export default Menu;
\ No newline at end of file
diff --git a/apps/OpenSign/src/components/sidebar/Sidebar.js b/apps/OpenSign/src/components/sidebar/Sidebar.js
index 1d0ff7ed8..85ac268ec 100644
--- a/apps/OpenSign/src/components/sidebar/Sidebar.js
+++ b/apps/OpenSign/src/components/sidebar/Sidebar.js
@@ -1,115 +1,77 @@
import React, { useState, useEffect } from "react";
-import { Link, NavLink } from "react-router-dom";
+
+import Menu from './Menu';
import Submenu from "./SubMenu";
-import dp from "../../assets/images/dp.png";
+import SocialMedia from './SocialMedia';
+
import Parse from "parse";
+import dp from "../../assets/images/dp.png";
+
const Sidebar = ({ isOpen, closeSidebar }) => {
+ const [menuList, setmenuList] = useState([]);
let username = localStorage.getItem("username");
const image = localStorage.getItem("profileImg") || dp;
const tenantname = localStorage.getItem("TenantName");
- const [menuList, setmenuList] = useState([]);
useEffect(() => {
if (localStorage.getItem("accesstoken")) {
menuItem();
}
}, []);
+
const menuItem = async () => {
const parseBaseUrl = localStorage.getItem("baseUrl");
const parseAppId = localStorage.getItem("parseAppId");
+
try {
Parse.serverURL = parseBaseUrl;
Parse.initialize(parseAppId);
var sideMenu = Parse.Object.extend("w_menu");
var query = new Parse.Query(sideMenu);
query.equalTo("objectId", localStorage.getItem("defaultmenuid"));
-
+
const results = await query.first();
const resultjson = results.toJSON();
- // console.log("resultjson ", resultjson);
let result = resultjson;
setmenuList(result.menuItems);
} catch (e) {
console.error("Problem", e);
}
+
};
return (
-
-

+
-
{username && username}
-
- {tenantname && tenantname}
+
{username}
+
+ {tenantname}
-
- {menuList.length > 0 && (
- <>
- {menuList.map((item) =>
- !item.children ? (
- - closeSidebar()}>
-
-
-
- {item.title}
-
-
-
- ) : (
-
- {item.children.map((item) => (
- - closeSidebar()} className="pl-6 md:pl-8 hover:bg-[#eef1f5] cursor-pointer">
-
-
-
- {item.title}
-
-
-
- ))}
-
- )
- )}
- >
- )}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
);
};
diff --git a/apps/OpenSign/src/components/sidebar/SocialMedia.js b/apps/OpenSign/src/components/sidebar/SocialMedia.js
new file mode 100644
index 000000000..813c47e15
--- /dev/null
+++ b/apps/OpenSign/src/components/sidebar/SocialMedia.js
@@ -0,0 +1,27 @@
+import React from "react";
+import { NavLink } from "react-router-dom";
+
+const SocialMedia = () => {
+ return (
+
+
+
+ OpenSign's Github
+
+
+
+ OpenSign's LinkedIn
+
+
+
+ OpenSign's Twitter
+
+
+
+ OpenSign's Discord
+
+
+ )
+}
+
+export default SocialMedia;
\ No newline at end of file
diff --git a/apps/OpenSign/src/components/sidebar/SubMenu.js b/apps/OpenSign/src/components/sidebar/SubMenu.js
index 6b3d59582..3b3adac42 100644
--- a/apps/OpenSign/src/components/sidebar/SubMenu.js
+++ b/apps/OpenSign/src/components/sidebar/SubMenu.js
@@ -1,30 +1,52 @@
import React, { useState } from "react";
+import { NavLink } from "react-router-dom";
-const Submenu = ({ icon, title, children }) => {
- const [isOpen, setIsOpen] = useState(false);
+const Submenu = ({ item, closeSidebar }) => {
+ const [submenuOpen, setSubmenuOpen] = useState(false);
+ const { title, icon, children } = item;
const toggleSubmenu = () => {
- setIsOpen(!isOpen);
+ setSubmenuOpen(!submenuOpen);
};
return (
-
+
- {isOpen && }
-
+ {submenuOpen && (
+
+ )}
+
);
};