Skip to content

Commit 89467b6

Browse files
committed
Adds filters back to Headless CMS page
1 parent b0f74ae commit 89467b6

File tree

5 files changed

+46
-9
lines changed

5 files changed

+46
-9
lines changed

.eleventy.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,13 @@ module.exports = function(eleventyConfig) {
9292
});
9393

9494
eleventyConfig.addFilter('unique', (array) => {
95-
return [...new Set(array)];
95+
let caseInsensitive = {};
96+
for(let val of array) {
97+
if(typeof val === "string") {
98+
caseInsensitive[val.toLowerCase()] = val;
99+
}
100+
}
101+
return Object.values(caseInsensitive);
96102
});
97103

98104
// Get a random selection of items from an array

src/css/tailwind.css

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,8 @@ details[open] .summary-swap-open {
316316
}
317317

318318
/* Filters */
319+
.filter-opensource--hide,
320+
.filter-typeofcms--hide,
319321
.filter-language--hide,
320322
.filter-template--hide,
321323
.filter-license--hide {

src/site/_includes/components/cards.njk

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
{% macro repo(item, loopIndex, githubData) %}
22
<div id="{{item.id}}" class="generator-card flex flex-col h-full"
3-
data-filter-template="{%- if item.data.templates %}{{ item.data.templates | join(",") | lower }}{% endif %}"
4-
data-filter-language="{%- if item.data.language %}{{ item.data.language | join(",") | lower }}{% endif %}"
5-
data-filter-license="{%- if item.data.license %}{{ item.data.license | join(",") | lower }}{% endif %}">
3+
{%- if item.data.typeofcms %} data-filter-typeofcms="{{ item.data.typeofcms | lower }}"{% endif %}
4+
{%- if item.data.opensource %} data-filter-opensource="{{ item.data.opensource | lower }}"{% endif %}
5+
{%- if item.data.templates %} data-filter-template="{{ item.data.templates | join(",") | lower }}"{% endif %}
6+
{%- if item.data.language %} data-filter-language="{{ item.data.language | join(",") | lower }}"{% endif %}
7+
{%- if item.data.license %} data-filter-license="{{ item.data.license | join(",") | lower }}"{% endif %}>
68
<a href="{{ item.url }}" class="flex-grow block border-0 bg-white text-gray-700 rounded-t-lg last:rounded-b-lg">
79
<div class="text-xl md:text-2xl lg:text-3xl font-bold text-ellipsis text-black bg-gradient-to-b border-b border-black rounded-t-lg p-4
810
{%- if loopIndex % 4 === 0 %} bg-gradient-card-sunrise

src/site/headless-cms.njk

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,37 @@ layout: layouts/base.njk
1313
</section>
1414

1515
<section class="cards mt-12">
16-
<div class="grid gap-4 grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
17-
{% for item in collections.cms | sortTools(github) %}
18-
{{ cards.repo(item, loop.index0, github) }}
19-
{% endfor %}
20-
</div>
16+
<filter-container>
17+
<form class="pb-4">
18+
<div class="pb-2">
19+
<strong class="pr-4">Filter</strong>
20+
<span data-filter-results></span>
21+
</div>
22+
<label class="inline-flex pr-4 pb-2">
23+
<span class="sr-only">CMS Type</span>
24+
<select data-filter-bind="typeofcms" class="text-white py-1 rounded border border-white bg-transparent">
25+
<option selected value="">Any CMS Type</option>
26+
{%- for template in collections.cms | select("data.typeofcms") | unique | sort(false, false) %}
27+
<option value="{{ template | lower }}">{{ template }}</option>
28+
{%- endfor %}
29+
</select>
30+
</label>
31+
<label class="inline-flex pr-4 pb-2">
32+
<span class="sr-only">License</span>
33+
<select data-filter-bind="opensource" class="text-white py-1 rounded border border-white bg-transparent">
34+
<option selected value="">Any License</option>
35+
{%- for opensource in collections.cms | select("data.opensource") | unique | sort(true, false) %}
36+
<option value="{{ opensource | lower }}">{% if opensource == "No" %}Closed{% else %}Open{% endif %} source</option>
37+
{%- endfor %}
38+
</select>
39+
</label>
40+
</form>
41+
<div class="grid gap-4 grid-cols-1 md:grid-cols-2 lg:grid-cols-3">
42+
{% for item in collections.cms | sortTools(github) %}
43+
{{ cards.repo(item, loop.index0, github) }}
44+
{% endfor %}
45+
</div>
46+
</filter-container>
2147
</section>
2248

2349
<section class="mt-12">

src/site/headless-cms/gridly.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ twitter: GridlyCMS
55
typeofcms: "API Driven"
66
supportedgenerators:
77
- All
8+
opensource: No
89
description: A collaborative headless CMS for multilingual games-as-a-service projects with a powerful API, browser-based spreadsheet UI, and built-in functions to handle localization and frequent updates.
910

1011
---

0 commit comments

Comments
 (0)