@@ -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