Skip to content

Commit b74ea6d

Browse files
committed
add mini image, expand button
1 parent f5a8de9 commit b74ea6d

File tree

3 files changed

+229
-124
lines changed

3 files changed

+229
-124
lines changed

src/activity/events/EventsList.js

Lines changed: 98 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useState, useEffect } from "react";
2-
import { PacmanLoader } from "react-spinners";
2+
// import { PacmanLoader } from "react-spinners";
33
import { eventsMap as eventsList } from "../fakeData";
44
import "./events.css";
55

@@ -12,70 +12,117 @@ function EventsList() {
1212
}
1313
export default EventsList;
1414

15+
function EventDate(month, date) {
16+
// const [isMobile, setIsMobile] = useState(false);
17+
// const [screenSize, getDimension] = useState({
18+
// dynamicWidth: window.innerWidth,
19+
// });
20+
21+
// const setDimension = () => {
22+
// getDimension({ dynamicWidth: window.innerWidth });
23+
// };
24+
25+
// useEffect(() => {
26+
// window.addEventListener("resize", setDimension);
27+
// if (screenSize.dynamicWidth <= 630) {
28+
// setIsMobile(true);
29+
// } else {
30+
// setIsMobile(false);
31+
// }
32+
// return () => {
33+
// window.removeEventListener("resize", setDimension);
34+
// };
35+
// });
36+
// <div className={!isMobile ? "event-date" : "event-date responsive"}>
37+
return (
38+
<div className="event-date">
39+
<p id="month">{month}</p>
40+
<p id="day">{date}</p>
41+
</div>
42+
);
43+
}
44+
45+
function EventHeader(title, time, location) {
46+
return (
47+
<div className="event-info">
48+
<h3 id="title">{title}</h3>
49+
<p id="important">Time: {time}</p>
50+
<p id="important">Location: {location}</p>
51+
</div>
52+
);
53+
}
54+
55+
function EventDetails(description, image, meetingUrl) {
56+
return (
57+
<div className="event-expand">
58+
<div className="details">
59+
<p>👨‍🔬{description}</p>
60+
<p>🔥{description}</p>
61+
<p>☄️{description}</p>
62+
<p>
63+
👉 Zoom link:
64+
<a id="meeting-link" href={meetingUrl}>
65+
{meetingUrl}
66+
</a>
67+
</p>
68+
<p>🥳🥳🥳 Check out our posters!!!</p>
69+
</div>
70+
<ul className="poster-list">
71+
<li>
72+
<input className="poster-img" type="image" src={image} alt="text" />
73+
</li>
74+
<li>
75+
<input className="poster-img" type="image" src={image} alt="text" />
76+
</li>
77+
</ul>
78+
</div>
79+
);
80+
}
81+
1582
function ListEvents() {
1683
const [isCollapse, setCollapse] = useState({});
84+
// const [isLoading, setLoading] = useState(false);
1785

18-
/**
19-
* @param {string} id
20-
* Store state as list of pair (id, collapseState)
21-
* The function stores individually collapsed state
22-
* for each event item whenever a click event happens
23-
*/
2486
function handleCollapse(id) {
2587
setCollapse(prevCollapsed => ({
2688
...prevCollapsed,
2789
[id]: !prevCollapsed[id],
2890
}));
29-
console.log("Clicked", isCollapse);
30-
console.log(id);
91+
// setLoading(true);
3192
}
3293

33-
// Handle loading state
34-
// TODO: Modify effect to await fetch API
35-
const [isLoading, setLoading] = useState(false);
36-
useEffect(() => {
37-
setLoading(true);
38-
setTimeout(() => {
39-
setLoading(false);
40-
}, 2000);
41-
}, []);
94+
// useEffect(() => {
95+
// setTimeout(() => {
96+
// setLoading(false);
97+
// }, 1500);
98+
// }, [isCollapse]);
4299

43100
return eventsList.map(singleEvent => {
44101
return (
45-
<button
46-
key={singleEvent.id}
47-
className="event"
48-
type="button"
49-
onClick={() => handleCollapse(singleEvent.id)}
50-
>
51-
<div className="event-date">
52-
<p id="month">{singleEvent.month}</p>
53-
<p id="day">{singleEvent.day}</p>
54-
</div>
55-
<div className="event-info">
56-
<h3 id="title">{singleEvent.title}</h3>
57-
58-
{isCollapse[singleEvent.id] &&
59-
(isLoading ? (
60-
<PacmanLoader
61-
cssOverride={{
62-
margin: 10,
63-
}}
64-
size={30}
65-
color="orange"
66-
/>
67-
) : (
68-
<div className="event-expand">
69-
<img src={singleEvent.image} alt="event" />
70-
<p>Details: </p>
71-
<p>{singleEvent.description}</p>
72-
</div>
73-
))}
74-
75-
<p id="important">Time: {singleEvent.time}</p>
76-
<p id="important">Location: {singleEvent.location}</p>
102+
<div tabIndex={singleEvent.id} role="button" className="event">
103+
<div className="event-header">
104+
{EventDate(singleEvent.month, singleEvent.day)}
105+
{EventHeader(
106+
singleEvent.title,
107+
singleEvent.time,
108+
singleEvent.location,
109+
)}
110+
<div className="expand-button">
111+
<button
112+
type="button"
113+
onClick={() => handleCollapse(singleEvent.id)}
114+
>
115+
{/* <ArrowDropDown color="success" fontSize="large"/> */}
116+
</button>
117+
</div>
77118
</div>
78-
</button>
119+
{isCollapse[singleEvent.id] &&
120+
EventDetails(
121+
singleEvent.description,
122+
singleEvent.image,
123+
singleEvent.meetingUrl,
124+
)}
125+
</div>
79126
);
80127
});
81128
}

0 commit comments

Comments
 (0)