11import  {  useState ,  useEffect  }  from  "react" ; 
2- import  {  PacmanLoader  }  from  "react-spinners" ; 
2+ //  import { PacmanLoader } from "react-spinners";
33import  {  eventsMap  as  eventsList  }  from  "../fakeData" ; 
44import  "./events.css" ; 
55
@@ -12,70 +12,117 @@ function EventsList() {
1212} 
1313export  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+ 
1582function  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