1+ < div class ="meetup-dates-container ">
2+ {% assign unique_dates = "" | split: "" %}
3+ {% assign now = "now" | date: "%Y-%m-%d 00:00:00" | date: "%s" | plus: 0 %}
4+ {% for meetup in meetups %}
5+ {% assign date = meetup.date | date: "%s" | plus: 0 %}
6+ {% if date > = now %}
7+ {% assign formatted_date = meetup.date | date: "%Y%m" %}
8+ {% unless unique_dates contains formatted_date %}
9+ < div class ="meetup-date-clip "
10+ title ="{{ meetup.date | date: '%B %Y' }} "
11+ onclick ="toggleByYearMonth(`{{ meetup.date | date: '%Y%m' }}`, this) ">
12+ {{ meetup.date | date: "%B %Y" }}
13+ </ div >
14+ {% assign unique_dates = unique_dates | push: formatted_date %}
15+ {% endunless %}
16+ {% endif %}
17+ {% endfor %}
18+ </ div >
19+
20+ < script >
21+ function toggleByYearMonth ( yearMonthToShow , element ) {
22+ const isElementSelected = element . classList . contains ( 'selected' ) ;
23+ if ( isElementSelected ) {
24+ showAllMeetups ( ) ;
25+ element . classList . remove ( 'selected' ) ;
26+ } else {
27+ showMeetups ( yearMonthToShow ) ;
28+
29+ const clips = document . querySelectorAll ( '.meetup-date-clip' ) ;
30+ clips . forEach ( clip => clip . classList . remove ( 'selected' ) ) ;
31+ element . classList . add ( 'selected' ) ;
32+ }
33+ }
34+
35+ function showAllMeetups ( ) {
36+ const meetups = document . getElementsByClassName ( 'meetup-item' ) ;
37+ Array . from ( meetups ) . forEach ( meetup => {
38+ meetup . style . display = 'block' ;
39+ } ) ;
40+ }
41+
42+ function showMeetups ( yearMonth ) {
43+ const meetups = document . getElementsByClassName ( 'meetup-item' ) ;
44+ Array . from ( meetups ) . forEach ( meetup => {
45+ if ( meetup . classList . contains ( yearMonth ) ) {
46+ meetup . style . display = 'block' ;
47+ } else {
48+ meetup . style . display = 'none' ;
49+ }
50+ } ) ;
51+ }
52+ </ script >
53+
54+ < style >
55+ .meetup-dates-container {
56+ display : flex;
57+ flex-wrap : wrap;
58+ gap : 12px ;
59+ margin-bottom : 24px ;
60+ white-space : nowrap;
61+ }
62+
63+ .meetup-date-clip {
64+ color : # 444 ;
65+ background-color : white;
66+ padding : 4px 16px ;
67+ border-radius : 24px ;
68+ white-space : nowrap;
69+ & : hover {
70+ background-color : # f0f0f0 ;
71+ cursor : pointer;
72+ }
73+ & .selected {
74+ background-color : # c72c41 ;
75+ color : white;
76+ }
77+ }
78+ </ style >
0 commit comments