Skip to content

Commit 1acafcd

Browse files
committed
Event Section is responsive in all devices
1 parent 5e0bf3f commit 1acafcd

File tree

6 files changed

+115
-9
lines changed

6 files changed

+115
-9
lines changed

src/Components/landingpage/announcement.jsx

Lines changed: 66 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ import Row from "react-bootstrap/Row";
44
import Col from "react-bootstrap/Col";
55
import eventimg from "../../assets/LandingPage/pr-1.jpg";
66
import Button from "./button";
7+
import { useState, useEffect } from "react";
8+
import { ChevronLeft, ChevronRight } from "react-bootstrap-icons";
9+
10+
711
function Announcement() {
812
const AnnouncementArray = [
913
{
@@ -15,30 +19,77 @@ function Announcement() {
1519
{
1620
title: "event title",
1721
image: eventimg,
18-
date: "2050",
22+
date: "2054",
1923
venue: "Google Meet",
2024
},
2125
{
2226
title: "event title",
2327
image: eventimg,
24-
date: "2050",
28+
date: "2051",
2529
venue: "Google Meet",
2630
},
2731
{
2832
title: "event title",
2933
image: eventimg,
30-
date: "2050",
34+
date: "2052",
35+
venue: "Google Meet",
36+
},
37+
{
38+
title: "event title",
39+
image: eventimg,
40+
date: "2055",
3141
venue: "Google Meet",
3242
},
3343
];
3444

45+
46+
const [currentIndex, setCurrentIndex] = useState(0);
47+
const [itemsToShow, setItemsToShow] = useState(4);
48+
49+
const totalItems = AnnouncementArray.length;
50+
51+
52+
useEffect(() => {
53+
const handleResize = () => {
54+
const screenWidth = window.innerWidth;
55+
if (screenWidth < 576) {
56+
setItemsToShow(1);
57+
} else if (screenWidth < 992) {
58+
setItemsToShow(2);
59+
}else if (screenWidth < 1280) {
60+
setItemsToShow(3);
61+
}
62+
else {
63+
setItemsToShow(4);
64+
}
65+
};
66+
67+
handleResize();
68+
window.addEventListener('resize', handleResize);
69+
70+
return () => window.removeEventListener('resize', handleResize);
71+
}, []);
72+
73+
const nextItem = () => {
74+
setCurrentIndex((prevIndex) => (prevIndex + itemsToShow) % totalItems);
75+
};
76+
77+
const prevItem = () => {
78+
setCurrentIndex((prevIndex) => (prevIndex - itemsToShow + totalItems) % totalItems);
79+
};
80+
81+
const itemsToDisplay = [];
82+
for (let i = 0; i < itemsToShow; i++) {
83+
itemsToDisplay.push(AnnouncementArray[(currentIndex + i) % totalItems]);
84+
}
85+
3586
return (
3687
<>
3788
<Container className="Announcement">
3889
<Title title={"ANNOUNCEMENTS"} head={"Our Upcoming Events"} />
3990
<Row>
40-
{AnnouncementArray.map((item, index) => (
41-
<Col md={3} key={index} className="Announcement-individual">
91+
{itemsToDisplay.map((item, index) => (
92+
<Col key={index} className="Announcement-individual">
4293
<img src={item.image} className="Announcement-individual__image" alt={`image of ${item.title}`} />
4394
<div style={{padding:'1rem 0rem'}}>
4495
<h2 className="Announcement-individual__title">{item.title}</h2>
@@ -49,6 +100,16 @@ function Announcement() {
49100
</Col>
50101
))}
51102
</Row>
103+
<Row>
104+
<div className="Announcement-row2">
105+
<button onClick={prevItem} className="Announcement-row2__button">
106+
<ChevronLeft />
107+
</button>
108+
<button onClick={nextItem} className="Announcement-row2__button" >
109+
<ChevronRight />
110+
</button>
111+
</div>
112+
</Row>
52113
</Container>
53114
</>
54115
);

src/Components/landingpage/programs.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ const ProgramArray = [
3535
<Title title={"Our Programs"} head={"What We Offer"} />
3636
<Row>
3737
{ProgramArray.map((program , index) => (
38-
<Col md={4} className="Program">
38+
<Col lg={4} md={6} sm={12} className="Program">
3939
<img src={program.image} alt="Image for program" />
4040
<div className="Program-caption">
4141
{program.icon && <program.icon className="Program-icons"/>}

src/Styles/App.css

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282
justify-content: center;
8383
}
8484

85-
.herobutton, .eventbutton {
85+
.herobutton, .Announcement-row2__button, .eventbutton {
8686
height: 3rem;
8787
padding: 0.5rem 1rem;
8888
text-align: center;
@@ -93,7 +93,7 @@
9393
background-color: #000080;
9494
border: none;
9595
}
96-
.herobutton:hover, .eventbutton:hover {
96+
.herobutton:hover, .Announcement-row2__button:hover, .eventbutton:hover {
9797
color: #000080;
9898
background-color: white;
9999
}
@@ -225,6 +225,12 @@
225225
width: 3rem;
226226
}
227227

228+
@media screen and (max-width: 768px) {
229+
.Program {
230+
display: flex;
231+
justify-content: center;
232+
}
233+
}
228234
.Announcement-individual {
229235
padding: 1.5rem;
230236
overflow: hidden;
@@ -237,6 +243,20 @@
237243
text-transform: capitalize;
238244
font-size: 1rem;
239245
}
246+
.Announcement-row2 {
247+
display: flex;
248+
justify-content: center;
249+
gap: 1rem;
250+
}
251+
.Announcement-row2 {
252+
display: none;
253+
}
254+
255+
@media screen and (max-width: 993px) {
256+
.Announcement-row2 {
257+
display: flex;
258+
}
259+
}
240260
.Partners .carousel-indicators button {
241261
display: none;
242262
}

src/Styles/App.css.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Styles/LandingPage/_Announcement.scss

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,22 @@
1818
@extend .About-MissionVision__description;
1919
}
2020
}
21+
&-row2{
22+
display: flex;
23+
justify-content: center;
24+
gap: 1rem;
25+
&__button{
26+
@extend .herobutton;
27+
}
28+
}
29+
}
30+
31+
.Announcement-row2{
32+
display: none;
33+
}
34+
35+
@media screen and (max-width:993px) {
36+
.Announcement-row2{
37+
display: flex;
38+
}
2139
}

src/Styles/LandingPage/_Program.scss

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,10 @@
3030
width: 3rem;
3131
}
3232
}
33+
34+
@media screen and (max-width:768px) {
35+
.Program{
36+
display: flex;
37+
justify-content: center;
38+
}
39+
}

0 commit comments

Comments
 (0)