Skip to content

Commit f5a8de9

Browse files
committed
individual collapse
1 parent e3426b7 commit f5a8de9

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

src/activity/events/EventsList.js

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,25 @@ function EventsList() {
1313
export default EventsList;
1414

1515
function ListEvents() {
16-
const [isCollapse, setCollapse] = useState(false);
17-
const [index, setIndex] = useState(null);
16+
const [isCollapse, setCollapse] = useState({});
1817

19-
function handleClick(id) {
20-
setCollapse(!isCollapse);
21-
setIndex(id);
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+
*/
24+
function handleCollapse(id) {
25+
setCollapse(prevCollapsed => ({
26+
...prevCollapsed,
27+
[id]: !prevCollapsed[id],
28+
}));
2229
console.log("Clicked", isCollapse);
2330
console.log(id);
2431
}
2532

33+
// Handle loading state
34+
// TODO: Modify effect to await fetch API
2635
const [isLoading, setLoading] = useState(false);
2736
useEffect(() => {
2837
setLoading(true);
@@ -37,7 +46,7 @@ function ListEvents() {
3746
key={singleEvent.id}
3847
className="event"
3948
type="button"
40-
onClick={() => handleClick(singleEvent.id)}
49+
onClick={() => handleCollapse(singleEvent.id)}
4150
>
4251
<div className="event-date">
4352
<p id="month">{singleEvent.month}</p>
@@ -46,16 +55,14 @@ function ListEvents() {
4655
<div className="event-info">
4756
<h3 id="title">{singleEvent.title}</h3>
4857

49-
{isCollapse &&
50-
singleEvent.id === index &&
58+
{isCollapse[singleEvent.id] &&
5159
(isLoading ? (
5260
<PacmanLoader
5361
cssOverride={{
5462
margin: 10,
5563
}}
5664
size={30}
5765
color="orange"
58-
loadding={isLoading}
5966
/>
6067
) : (
6168
<div className="event-expand">

0 commit comments

Comments
 (0)