From 095cab1847b54674662e129c4224832faa372ded Mon Sep 17 00:00:00 2001
From: Piyush-Linux
Date: Mon, 18 Mar 2024 12:46:38 +0530
Subject: [PATCH 1/5] feat: skeleton loading
---
package.json | 1 +
src/components/shared/index.js | 1 +
src/components/shared/skeleton/Skeleton.css | 15 ++++++++++
src/components/shared/skeleton/Skeleton.jsx | 31 ++++++++++++++++++++
src/pages/clubs/Clubs.jsx | 26 +++++++++++++----
src/pages/events/all/Events.jsx | 32 ++++++++++++++++++---
6 files changed, 97 insertions(+), 9 deletions(-)
create mode 100644 src/components/shared/skeleton/Skeleton.css
create mode 100644 src/components/shared/skeleton/Skeleton.jsx
diff --git a/package.json b/package.json
index 82bb6e69..11616513 100644
--- a/package.json
+++ b/package.json
@@ -50,6 +50,7 @@
"react-helmet-async": "^2.0.4",
"react-hook-form": "^7.49.3",
"react-icons": "^4.10.1",
+ "react-loading-skeleton": "^3.4.0",
"react-redux": "^9.1.0",
"react-router-dom": "^6.11.2",
"react-scripts": "^5.0.1",
diff --git a/src/components/shared/index.js b/src/components/shared/index.js
index 668310a6..18dab934 100644
--- a/src/components/shared/index.js
+++ b/src/components/shared/index.js
@@ -9,3 +9,4 @@ export { default as Loading } from "./loading/Loading";
export { default as Modal } from "./modal/Modal";
export { default as Navbar } from "./navbar/Navbar";
export { default as ProfileCompletion } from "./profileCompletion/ProfileCompletion";
+export { default as SkeletonCard } from "./skeleton/Skeleton";
diff --git a/src/components/shared/skeleton/Skeleton.css b/src/components/shared/skeleton/Skeleton.css
new file mode 100644
index 00000000..34227f56
--- /dev/null
+++ b/src/components/shared/skeleton/Skeleton.css
@@ -0,0 +1,15 @@
+
+.skeleton-container{
+ margin:1em;
+ padding: 1em;
+ border-radius: 15px;
+ background-color: #f5f6fa;
+}
+.skeleton-footer{
+ display: flex;
+ justify-content: space-between;
+ /* padding-right: 1em; */
+ margin-top: 2em;
+ position: relative;
+ bottom: 0;
+}
\ No newline at end of file
diff --git a/src/components/shared/skeleton/Skeleton.jsx b/src/components/shared/skeleton/Skeleton.jsx
new file mode 100644
index 00000000..46afa7a9
--- /dev/null
+++ b/src/components/shared/skeleton/Skeleton.jsx
@@ -0,0 +1,31 @@
+import React from "react";
+import "./Skeleton.css";
+import "react-loading-skeleton/dist/skeleton.css";
+import Skeleton, { SkeletonTheme } from "react-loading-skeleton";
+
+const SkeletonCard = () => {
+ return (
+
+
+
+
+ {/* Image */}
+
+
+ {/* Tags */}
+
+
+
+ {/* Button */}
+
+
+
+
+
+
+
+
+ );
+};
+
+export default SkeletonCard;
diff --git a/src/pages/clubs/Clubs.jsx b/src/pages/clubs/Clubs.jsx
index 1739ee5c..4fe34d92 100644
--- a/src/pages/clubs/Clubs.jsx
+++ b/src/pages/clubs/Clubs.jsx
@@ -1,6 +1,6 @@
-import React, { useEffect } from "react";
+import React, { useState, useEffect } from "react";
import useSWR from "swr";
-import { Footer, Navbar } from "../../components/shared";
+import { Footer, Navbar, SkeletonCard } from "../../components/shared";
import ClubCard from "../../components/shared/cards/club/ClubCard";
import { clubEndpoints } from "../../static/ApiEndpoints";
import ComponentHelmet from "../../utils/ComponentHelmet";
@@ -9,8 +9,12 @@ import "./Clubs.css";
const Clubs = () => {
const { data: clubs } = useSWR(clubEndpoints.all, fetcher);
+ let [loading, setLoading] = useState(true);
useEffect(() => {
+ setTimeout(() => {
+ setLoading(false);
+ }, 5000);
window.scrollTo(0, 0);
}, []);
@@ -22,9 +26,21 @@ const Clubs = () => {
- {clubs?.map((club, id) => (
-
- ))}
+ {loading ? (
+
+ {" "}
+ {" "}
+ {" "}
+
+ ) : (
+ clubs?.map((club, id) =>
)
+ )}
diff --git a/src/pages/events/all/Events.jsx b/src/pages/events/all/Events.jsx
index cb6059ac..a433134f 100644
--- a/src/pages/events/all/Events.jsx
+++ b/src/pages/events/all/Events.jsx
@@ -4,7 +4,12 @@ import { useSelector } from "react-redux";
import useSWR from "swr";
import { EventsCard } from "../../../components/private";
import CreateEvents from "../../../components/private/events/create/CreateEvents";
-import { Button, Footer, Navbar } from "../../../components/shared";
+import {
+ Button,
+ Footer,
+ Navbar,
+ SkeletonCard,
+} from "../../../components/shared";
import { eventEndpoints } from "../../../static/ApiEndpoints";
import ComponentHelmet from "../../../utils/ComponentHelmet";
import fetcher from "../../../utils/Fetcher";
@@ -16,7 +21,12 @@ const Events = () => {
const userType = useSelector((state) => state.user.userType);
// const isLoggedIn = useSelector((state) => state.auth.isLoggedIn);
+ let [loading, setLoading] = useState(true);
+
useEffect(() => {
+ setTimeout(() => {
+ setLoading(false);
+ }, 1000);
window.scrollTo(0, 0);
}, []);
@@ -45,9 +55,23 @@ const Events = () => {
)}
- {events?.map((event, id) => (
-
- ))}
+ {/*
*/}
+ {/* loading?
: */}
+ {loading ? (
+
+ {" "}
+ {" "}
+ {" "}
+
+ ) : (
+ events?.map((event, id) =>
)
+ )}
From 501654ae9b48e8962256d1374e9d8f957c10e47c Mon Sep 17 00:00:00 2001
From: Piyush
Date: Sat, 30 Mar 2024 14:56:13 +0530
Subject: [PATCH 2/5] Update src/pages/events/all/Events.jsx
Co-authored-by: Tinesh Nehete <74779225+Tineshnehete@users.noreply.github.com>
---
src/pages/events/all/Events.jsx | 3 ---
1 file changed, 3 deletions(-)
diff --git a/src/pages/events/all/Events.jsx b/src/pages/events/all/Events.jsx
index 503fd1ac..7033b505 100644
--- a/src/pages/events/all/Events.jsx
+++ b/src/pages/events/all/Events.jsx
@@ -23,9 +23,6 @@ const Events = () => {
let [loading, setLoading] = useState(true);
useEffect(() => {
- setTimeout(() => {
- setLoading(false);
- }, 1000);
window.scrollTo(0, 0);
}, []);
From f804a696a005205946eda6ae271bcfa5a0bf8c01 Mon Sep 17 00:00:00 2001
From: Piyush
Date: Sat, 30 Mar 2024 14:56:31 +0530
Subject: [PATCH 3/5] Update src/pages/clubs/Clubs.jsx
Co-authored-by: Tinesh Nehete <74779225+Tineshnehete@users.noreply.github.com>
---
src/pages/clubs/Clubs.jsx | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/pages/clubs/Clubs.jsx b/src/pages/clubs/Clubs.jsx
index 4fe34d92..d0b0cdd2 100644
--- a/src/pages/clubs/Clubs.jsx
+++ b/src/pages/clubs/Clubs.jsx
@@ -8,8 +8,7 @@ import fetcher from "../../utils/Fetcher";
import "./Clubs.css";
const Clubs = () => {
- const { data: clubs } = useSWR(clubEndpoints.all, fetcher);
- let [loading, setLoading] = useState(true);
+ const { data: clubs, isLoading:loading } = useSWR(clubEndpoints.all, fetcher);
useEffect(() => {
setTimeout(() => {
From b5e332430e0fe35c9251b5f5c215b109fd4b5dc8 Mon Sep 17 00:00:00 2001
From: Piyush
Date: Sat, 30 Mar 2024 14:57:53 +0530
Subject: [PATCH 4/5] Update src/pages/clubs/Clubs.jsx
Co-authored-by: Tinesh Nehete <74779225+Tineshnehete@users.noreply.github.com>
---
src/pages/clubs/Clubs.jsx | 3 ---
1 file changed, 3 deletions(-)
diff --git a/src/pages/clubs/Clubs.jsx b/src/pages/clubs/Clubs.jsx
index d0b0cdd2..219ff1d2 100644
--- a/src/pages/clubs/Clubs.jsx
+++ b/src/pages/clubs/Clubs.jsx
@@ -11,9 +11,6 @@ const Clubs = () => {
const { data: clubs, isLoading:loading } = useSWR(clubEndpoints.all, fetcher);
useEffect(() => {
- setTimeout(() => {
- setLoading(false);
- }, 5000);
window.scrollTo(0, 0);
}, []);
From a4df718a73f26b4200ac93b477f46d40e860832d Mon Sep 17 00:00:00 2001
From: Piyush-Linux
Date: Sat, 30 Mar 2024 15:05:10 +0530
Subject: [PATCH 5/5] feat: event page skeleton loading
---
src/pages/events/all/Events.jsx | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/pages/events/all/Events.jsx b/src/pages/events/all/Events.jsx
index 7033b505..44a773bb 100644
--- a/src/pages/events/all/Events.jsx
+++ b/src/pages/events/all/Events.jsx
@@ -16,12 +16,13 @@ import fetcher from "../../../utils/Fetcher";
import "./Events.scss";
const Events = () => {
- const { data: events } = useSWR(eventEndpoints.all, fetcher);
+ const { data: events, isLoading: loading } = useSWR(
+ eventEndpoints.all,
+ fetcher,
+ );
const [showCreateModal, setshowCreateModal] = useState(false);
const userType = useSelector((state) => state.user.userType);
- let [loading, setLoading] = useState(true);
-
useEffect(() => {
window.scrollTo(0, 0);
}, []);
@@ -57,7 +58,6 @@ const Events = () => {
{/*
*/}
- {/* loading?
: */}
{loading ? (