Skip to content

Commit e587899

Browse files
KianNHkodster28
authored andcommitted
[Docs Site] Align filter/load more logic in changelog (#21753)
* [Docs Site] Align filter/load more logic in changelog * fix button visibility * Update src/pages/changelog/index.astro * Update src/pages/changelog/index.astro --------- Co-authored-by: Kody Jackson <[email protected]>
1 parent 19e4050 commit e587899

File tree

1 file changed

+22
-67
lines changed

1 file changed

+22
-67
lines changed

src/pages/changelog/index.astro

Lines changed: 22 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ const props = {
8989
<div class="flex items-center justify-center">
9090
<button
9191
id="changelogs-next-button"
92-
class="h-12 cursor-pointer rounded bg-cl1-brand-orange px-6 font-medium text-cl1-black"
92+
class="bg-cl1-brand-orange text-cl1-black h-12 cursor-pointer rounded px-6 font-medium"
9393
>
9494
Load more items
9595
</button>
@@ -114,37 +114,26 @@ const props = {
114114

115115
filter?.addEventListener("change", updateFilter);
116116

117-
button?.addEventListener("click", () => {
118-
const entries = [
119-
...document.querySelectorAll<HTMLElement>("[data-products]"),
120-
];
121-
122-
if (!entries) return;
123-
124-
const value = filter!.value;
125-
126-
const hidden = entries
127-
.filter((e) => {
128-
if (e.style.display !== "none") {
129-
return false;
130-
}
131-
132-
if (value === "all") {
133-
return true;
134-
}
135-
136-
if (!e.dataset.products) {
137-
return false;
138-
}
117+
function filterByProduct(e: HTMLElement, value: string): boolean {
118+
if (value === "all") {
119+
return true;
120+
}
139121

140-
const products: string[] = JSON.parse(e.dataset.products);
122+
if (!e.dataset.products) {
123+
return false;
124+
}
141125

142-
if (products.includes(value)) {
143-
return true;
144-
}
126+
const products: string[] = JSON.parse(e.dataset.products);
127+
return products.includes(value);
128+
}
145129

146-
return false;
147-
})
130+
button?.addEventListener("click", () => {
131+
const hidden = [
132+
...document.querySelectorAll<HTMLElement>("[data-products]"),
133+
]
134+
.filter(
135+
(e) => e.style.display === "none" && filterByProduct(e, filter!.value),
136+
)
148137
.slice(0, 10);
149138

150139
hidden.forEach((e) => (e.style.display = ""));
@@ -162,24 +151,8 @@ const props = {
162151
const value = filter!.value;
163152

164153
const filtered = entries
165-
.filter((e) => {
166-
if (value === "all") {
167-
return true;
168-
}
169-
170-
if (!e.dataset.products) {
171-
return false;
172-
}
173-
174-
const products: string[] = JSON.parse(e.dataset.products);
175-
176-
if (products.includes(value)) {
177-
return true;
178-
}
179-
180-
return false;
181-
})
182-
.slice(0, 5);
154+
.filter((e) => filterByProduct(e, value))
155+
.slice(0, 10);
183156

184157
for (const entry of entries) {
185158
const show = filtered.includes(entry);
@@ -211,30 +184,12 @@ const props = {
211184

212185
if (entries.length === 0) return;
213186

214-
const filtered = entries.filter((p) => {
215-
const value = filter!.value;
216-
217-
if (value === "all") {
218-
return true;
219-
}
220-
221-
if (!p.dataset.products) {
222-
return false;
223-
}
224-
225-
const products: string[] = JSON.parse(p.dataset.products);
226-
227-
if (!products.includes(value)) {
228-
return false;
229-
}
230-
231-
return true;
232-
});
187+
const filtered = entries.filter((p) => filterByProduct(p, filter!.value));
233188

234189
const visible = filtered.filter((p) => p.style.display !== "none");
235190
const hidden = filtered.length - visible.length;
236191

237-
if (hidden >= 10) {
192+
if (hidden > 0) {
238193
button!.style.display = "";
239194
} else {
240195
button!.style.display = "none";

0 commit comments

Comments
 (0)