Skip to content

Commit 84da7c8

Browse files
authored
Add Month Filter To Meetup Page (#739)
* Remove conditional website link from meetup.html * feat: add meetup date filter and update meetup display * style: update meetup date clip color to #444 * fix: enable wrapping for meetup dates container layout
1 parent 859b2e4 commit 84da7c8

File tree

3 files changed

+97
-19
lines changed

3 files changed

+97
-19
lines changed

_includes/meetup.html

+18-19
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
1-
<dt>
2-
{% if meetup.url %}
3-
<a href="{{ meetup.url }}">{{ meetup.name }}</a>
4-
{% else %}
5-
<a>{{ meetup.name }}</a>
6-
{% endif %}
7-
8-
{% if meetup.status %}
9-
<div class="status" data-phrase="{{ meetup.status }}"></div>
10-
{% endif %}
11-
</dt>
12-
13-
<dd>
14-
<ul>
15-
<li>{{ meetup.date | date: "%B %-d, %Y" }}</li>
16-
<li>{{ meetup.location }}</li>
1+
<div class="meetup-item {{ meetup.date | date: '%Y%m' }}">
2+
<dt>
173
{% if meetup.url %}
18-
<li><a href="{{ meetup.url }}">Website</a></li>
4+
<a href="{{ meetup.url }}">{{ meetup.name }}</a>
5+
{% else %}
6+
<a>{{ meetup.name }}</a>
7+
{% endif %}
8+
9+
{% if meetup.status %}
10+
<div class="status" data-phrase="{{ meetup.status }}"></div>
1911
{% endif %}
20-
</ul>
21-
</dd>
12+
</dt>
13+
14+
<dd>
15+
<ul>
16+
<li>{{ meetup.date | date: "%B %-d, %Y" }}</li>
17+
<li>{{ meetup.location }}</li>
18+
</ul>
19+
</dd>
20+
</div>

_includes/meetup_dates_filter.html

+78
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
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>

meetups/index.html

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
<dl>
66
{% assign now = "now" | date: "%Y-%m-%d 00:00:00" | date: "%s" | plus: 0 %}
77
{% assign meetups = site.data.meetups | sort: "date" %}
8+
{% include meetup_dates_filter.html %}
89
{% for meetup in meetups %}
910
{% assign date = meetup.date | date: "%s" | plus: 0 %}
1011
{% if date >= now %}

0 commit comments

Comments
 (0)