diff --git a/src/components/common/GlobalOffcanvas.jsx b/src/components/common/GlobalOffcanvas.jsx
new file mode 100644
index 00000000..bcca92bb
--- /dev/null
+++ b/src/components/common/GlobalOffcanvas.jsx
@@ -0,0 +1,52 @@
+import React, { useEffect, useRef } from "react";
+import { useFab } from "../../Context/FabContext";
+
+const GlobalOffcanvas = () => {
+ const { offcanvas, setIsOffcanvasOpen } = useFab();
+ const offcanvasRef = useRef();
+
+ useEffect(() => {
+ const el = offcanvasRef.current;
+ const bsOffcanvas = new bootstrap.Offcanvas(el);
+
+ const handleShow = () => setIsOffcanvasOpen(true);
+ const handleHide = () => setIsOffcanvasOpen(false);
+
+ el.addEventListener("show.bs.offcanvas", handleShow);
+ el.addEventListener("hidden.bs.offcanvas", handleHide);
+
+ return () => {
+ el.removeEventListener("show.bs.offcanvas", handleShow);
+ el.removeEventListener("hidden.bs.offcanvas", handleHide);
+ };
+ }, []);
+
+ return (
+
+
+
+ {offcanvas.title}
+
+
+
+
+ {offcanvas.content ||
No content
}
+
+
+ );
+};
+
+export default GlobalOffcanvas;
diff --git a/src/components/common/OffcanvasTrigger.jsx b/src/components/common/OffcanvasTrigger.jsx
new file mode 100644
index 00000000..3c74fb14
--- /dev/null
+++ b/src/components/common/OffcanvasTrigger.jsx
@@ -0,0 +1,26 @@
+import { createPortal } from "react-dom";
+import { useFab } from "../../Context/FabContext";
+
+const OffcanvasTrigger = () => {
+ const { openOffcanvas, offcanvas, showTrigger } = useFab();
+
+ if (!showTrigger || !offcanvas.content) return null;
+
+ const btn = (
+ openOffcanvas(offcanvas.title, offcanvas.content)}
+ role="button"
+ style={{
+ top: "25%",
+ right: "0%",
+ cursor: "pointer",
+ zIndex: 1056,
+ }}
+ />
+ );
+
+ return createPortal(btn, document.body);
+};
+
+export default OffcanvasTrigger;
diff --git a/src/layouts/HomeLayout.jsx b/src/layouts/HomeLayout.jsx
index 34639ee0..d43de172 100644
--- a/src/layouts/HomeLayout.jsx
+++ b/src/layouts/HomeLayout.jsx
@@ -7,6 +7,8 @@ import Footer from "../components/Layout/Footer";
import FloatingMenu from "../components/common/FloatingMenu";
import { FabProvider } from "../Context/FabContext";
import { useSelector } from "react-redux";
+import OffcanvasTrigger from "../components/common/OffcanvasTrigger";
+import GlobalOffcanvas from "../components/common/GlobalOffcanvas";
const HomeLayout = () => {
const loggedUser = useSelector((store) => store.globalVariables.loginUser);
@@ -34,9 +36,11 @@ const HomeLayout = () => {
+
+
);