@@ -10,59 +10,104 @@ import RssFeedIcon from "../../assets/images/socialIcons/rss-sign.svg";
1010
1111const Meetups = ( { data, pageContext } ) => {
1212 const [ active , setActive ] = useState ( "all" ) ;
13+
1314 const sortEvents = ( nodes ) => {
14- return nodes . slice ( ) . sort ( ( first , second ) => new Date ( second . frontmatter . date . replace ( / ( s t | n d | r d | t h ) , / g, "" ) ) - new Date ( first . frontmatter . date . replace ( / ( s t | n d | r d | t h ) , / g, "" ) ) ) ;
15+ return nodes
16+ . slice ( )
17+ . sort (
18+ ( first , second ) =>
19+ new Date ( second . frontmatter . date . replace ( / ( s t | n d | r d | t h ) , / g, "" ) ) -
20+ new Date ( first . frontmatter . date . replace ( / ( s t | n d | r d | t h ) , / g, "" ) ) ,
21+ ) ;
1522 } ;
1623
1724 return (
1825 < MeetupStyle >
19- < PageHeader title = "Events" path = "Community/Events" img = { RssFeedIcon } feedlink = "/events/feed.xml" / >
20- < h2 className = "event-subhead" > Join Layer5 at these events </ h2 >
21- < UpcomingEvents data = { data . allUpcoming } />
22- < Container >
23- < div className = "filterBtns" >
24- < Button className = { active == "all" ? "active" : "" } onClick = { ( ) => setActive ( "all" ) } title = "All" />
25- < Button className = { active == "events" ? "active" : "" } onClick = { ( ) => setActive ( "events" ) } title = "Events" />
26- < Button className = { active == "workshops" ? "active" : "" } onClick = { ( ) => setActive ( "workshops" ) } title = "Workshops" / >
27- < Button className = { active == "meetups" ? "active" : "" } onClick = { ( ) => setActive ( "meetups" ) } title = "MeetUps" />
28- </ div >
29- < div >
30- < Row style = { {
31- flexWrap : "wrap "
32- } }
26+ < main >
27+ < PageHeader
28+ title = "Events"
29+ path = "Community/Events"
30+ img = { RssFeedIcon }
31+ feedlink = "/events/feed.xml"
32+ />
33+ < h2 className = "event-subhead" > Join Layer5 at these events </ h2 >
34+ < UpcomingEvents data = { data . allUpcoming } />
35+ < Container >
36+ < div
37+ className = "filterBtns"
38+ role = "group "
39+ aria-label = "Filter events by type"
3340 >
34- { active == "all" ? sortEvents ( data . allCategories . nodes ) . map ( category => {
35- return (
36- < Col $xs = { 12 } $sm = { 6 } $lg = { 4 } key = { category . id } >
37- < Card frontmatter = { category . frontmatter } fields = { category . fields } />
38- </ Col >
39- ) ;
40- } ) : < > </ > }
41- { active == "events" ? sortEvents ( data . allEvents . nodes ) . map ( event => {
42- return (
43- < Col $xs = { 12 } $sm = { 6 } $lg = { 4 } key = { event . id } >
44- < Card frontmatter = { event . frontmatter } fields = { event . fields } />
45- </ Col >
46- ) ;
47- } ) : < > </ > }
48- { active == "workshops" ? sortEvents ( data . allWorkshops . nodes ) . map ( workshop => {
49- return (
50- < Col $xs = { 12 } $sm = { 6 } $lg = { 4 } key = { workshop . id } >
51- < Card frontmatter = { workshop . frontmatter } fields = { workshop . fields } />
52- </ Col >
53- ) ;
54- } ) : < > </ > }
55- { active == "meetups" ? sortEvents ( data . allMeetups . nodes ) . map ( meetup => {
56- return (
57- < Col $xs = { 12 } $sm = { 6 } $lg = { 4 } key = { meetup . id } >
58- < Card frontmatter = { meetup . frontmatter } fields = { meetup . fields } />
59- </ Col >
60- ) ;
61- } ) : < > </ > }
62- </ Row >
63- </ div >
64- { active == "all" ? < Pager pageContext = { pageContext } text = { "Events" } /> : < > </ > }
65- </ Container >
41+ < Button
42+ className = { active === "all" ? "active" : "" }
43+ onClick = { ( ) => setActive ( "all" ) }
44+ title = "All"
45+ aria-pressed = { active === "all" }
46+ />
47+ < Button
48+ className = { active === "events" ? "active" : "" }
49+ onClick = { ( ) => setActive ( "events" ) }
50+ title = "Events"
51+ aria-pressed = { active === "events" }
52+ />
53+ < Button
54+ className = { active === "workshops" ? "active" : "" }
55+ onClick = { ( ) => setActive ( "workshops" ) }
56+ title = "Workshops"
57+ aria-pressed = { active === "workshops" }
58+ />
59+ < Button
60+ className = { active === "meetups" ? "active" : "" }
61+ onClick = { ( ) => setActive ( "meetups" ) }
62+ title = "MeetUps"
63+ aria-pressed = { active === "meetups" }
64+ />
65+ </ div >
66+ < div >
67+ < Row style = { { flexWrap : "wrap" } } >
68+ { active === "all" &&
69+ sortEvents ( data . allCategories . nodes ) . map ( ( category ) => (
70+ < Col $xs = { 12 } $sm = { 6 } $lg = { 4 } key = { category . id } >
71+ < Card
72+ frontmatter = { category . frontmatter }
73+ fields = { category . fields }
74+ />
75+ </ Col >
76+ ) ) }
77+ { active === "events" &&
78+ sortEvents ( data . allEvents . nodes ) . map ( ( event ) => (
79+ < Col $xs = { 12 } $sm = { 6 } $lg = { 4 } key = { event . id } >
80+ < Card
81+ frontmatter = { event . frontmatter }
82+ fields = { event . fields }
83+ />
84+ </ Col >
85+ ) ) }
86+ { active === "workshops" &&
87+ sortEvents ( data . allWorkshops . nodes ) . map ( ( workshop ) => (
88+ < Col $xs = { 12 } $sm = { 6 } $lg = { 4 } key = { workshop . id } >
89+ < Card
90+ frontmatter = { workshop . frontmatter }
91+ fields = { workshop . fields }
92+ />
93+ </ Col >
94+ ) ) }
95+ { active === "meetups" &&
96+ sortEvents ( data . allMeetups . nodes ) . map ( ( meetup ) => (
97+ < Col $xs = { 12 } $sm = { 6 } $lg = { 4 } key = { meetup . id } >
98+ < Card
99+ frontmatter = { meetup . frontmatter }
100+ fields = { meetup . fields }
101+ />
102+ </ Col >
103+ ) ) }
104+ </ Row >
105+ </ div >
106+ { active === "all" && (
107+ < Pager pageContext = { pageContext } text = { "Events" } />
108+ ) }
109+ </ Container >
110+ </ main >
66111 </ MeetupStyle >
67112 ) ;
68113} ;
0 commit comments