1- import React , { useState , useEffect } from "react" ;
2- import "photoswipe/dist/photoswipe.css" ;
1+ import { useState , useEffect } from "react" ;
2+ // import { PacmanLoader } from "react-spinners";
3+ import { IconButton , Tooltip } from "@mui/material" ;
4+ import { KeyboardArrowDown } from "@mui/icons-material" ;
35import { Gallery , Item } from "react-photoswipe-gallery" ;
46import { eventsMap as eventsList } from "../fakeData" ;
57import "./events.css" ;
8+ import "photoswipe/dist/photoswipe.css" ;
69
7- function EventsList ( ) {
8- return (
9- < div className = "events-list" >
10- < ListEvents />
11- </ div >
12- ) ;
13- }
14- export default EventsList ;
15-
16- // Before Collapsed Components
10+ // Before expanding components
1711function EventDate ( month , date ) {
1812 return (
1913 < div className = "event-date" >
@@ -33,7 +27,7 @@ function EventHeader(title, time, location) {
3327 ) ;
3428}
3529
36- // Collapsed Contents
30+ // Expanded Contents
3731function EventDetails ( description , meetingUrl ) {
3832 return (
3933 < div className = "details" >
@@ -83,41 +77,65 @@ function EventPosters(posterImages) {
8377 ) ;
8478}
8579
80+ function ExpandButton ( buttonState , isExpanded ) {
81+ return (
82+ < div className = "expand-button" >
83+ < Tooltip
84+ title = { ! isExpanded ? "expand" : "collapse" }
85+ fontSize = "large"
86+ placement = "top"
87+ sx = { { fontSize : "16px" } }
88+ arrow
89+ >
90+ < IconButton type = "button" onClick = { buttonState } >
91+ < KeyboardArrowDown
92+ id = { isExpanded ? "open" : "closed" }
93+ fontSize = "large"
94+ />
95+ </ IconButton >
96+ </ Tooltip >
97+ </ div >
98+ ) ;
99+ }
100+
86101// Render List
87- function ListEvents ( ) {
88- const [ isCollapse , setCollapse ] = useState ( { } ) ;
102+ function EventsList ( ) {
103+ const [ isExpanded , setExpand ] = useState ( { } ) ;
89104
90- function handleCollapse ( id ) {
91- setCollapse ( prevCollapsed => ( {
92- ...prevCollapsed ,
93- [ id ] : ! prevCollapsed [ id ] ,
105+ function handleExpansion ( id ) {
106+ setExpand ( prevExpanded => ( {
107+ ...prevExpanded ,
108+ [ id ] : ! prevExpanded [ id ] ,
94109 } ) ) ;
95110 }
96111
97- return eventsList . map ( singleEvent => {
98- return (
99- < div tabIndex = { singleEvent . id } role = "button" className = "event" >
100- < div className = "event-header" >
101- { EventDate ( singleEvent . month , singleEvent . day ) }
102- { EventHeader (
103- singleEvent . title ,
104- singleEvent . time ,
105- singleEvent . location ,
106- ) }
107- < div className = "expand-button" >
108- < button
109- type = "button"
110- onClick = { ( ) => handleCollapse ( singleEvent . id ) }
111- />
112- </ div >
113- </ div >
114- { isCollapse [ singleEvent . id ] && (
115- < div className = "event-expand" >
116- { EventDetails ( singleEvent . description , singleEvent . meetingUrl ) }
117- { EventPosters ( singleEvent . images ) }
112+ return (
113+ < div className = "events-list" >
114+ { eventsList . map ( singleEvent => {
115+ return (
116+ < div tabIndex = { singleEvent . id } role = "button" className = "event" >
117+ < div className = "event-header" >
118+ { EventDate ( singleEvent . month , singleEvent . day ) }
119+ { EventHeader (
120+ singleEvent . title ,
121+ singleEvent . time ,
122+ singleEvent . location ,
123+ ) }
124+ { ExpandButton (
125+ ( ) => handleExpansion ( singleEvent . id ) ,
126+ isExpanded [ singleEvent . id ] ,
127+ ) }
128+ </ div >
129+ { isExpanded [ singleEvent . id ] && (
130+ < div className = "event-expand" >
131+ { EventDetails ( singleEvent . description , singleEvent . meetingUrl ) }
132+ { EventPosters ( singleEvent . images ) }
133+ </ div >
134+ ) }
118135 </ div >
119- ) }
120- </ div >
121- ) ;
122- } ) ;
136+ ) ;
137+ } ) }
138+ </ div >
139+ ) ;
123140}
141+ export default EventsList ;
0 commit comments