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