@@ -87,17 +87,34 @@ const props = {
8787 "#changelogs-next-filter",
8888 );
8989
90- filter?.addEventListener("change", () => {
90+ const button = document.querySelector<HTMLButtonElement>(
91+ "#changelogs-next-button",
92+ );
93+
94+ const url = new URL(window.location.href);
95+
96+ if (filter && url.searchParams.has("product")) {
97+ filter.value = url.searchParams.get("product")!;
98+ updateFilter();
99+ }
100+
101+ filter?.addEventListener("change", updateFilter);
102+
103+ button?.addEventListener("click", () => {
91104 const entries = [
92105 ...document.querySelectorAll<HTMLElement>("[data-products]"),
93106 ];
94107
95108 if (!entries) return;
96109
97- const value = filter.value;
110+ const value = filter! .value;
98111
99- const filtered = entries
112+ const hidden = entries
100113 .filter((e) => {
114+ if (e.style.display !== "none") {
115+ return false;
116+ }
117+
101118 if (value === "all") {
102119 return true;
103120 }
@@ -114,26 +131,14 @@ const props = {
114131
115132 return false;
116133 })
117- .slice(0, 5);
118-
119- for (const entry of entries) {
120- const show = filtered.includes(entry);
134+ .slice(0, 10);
121135
122- if (show) {
123- entry.style.display = "";
124- } else {
125- entry.style.display = "none";
126- }
127- }
136+ hidden.forEach((e) => (e.style.display = ""));
128137
129138 hideButton();
130139 });
131140
132- const button = document.querySelector<HTMLButtonElement>(
133- "#changelogs-next-button",
134- );
135-
136- button?.addEventListener("click", () => {
141+ function updateFilter() {
137142 const entries = [
138143 ...document.querySelectorAll<HTMLElement>("[data-products]"),
139144 ];
@@ -142,12 +147,8 @@ const props = {
142147
143148 const value = filter!.value;
144149
145- const hidden = entries
150+ const filtered = entries
146151 .filter((e) => {
147- if (e.style.display !== "none") {
148- return false;
149- }
150-
151152 if (value === "all") {
152153 return true;
153154 }
@@ -164,12 +165,30 @@ const props = {
164165
165166 return false;
166167 })
167- .slice(0, 10 );
168+ .slice(0, 5 );
168169
169- hidden.forEach((e) => (e.style.display = ""));
170+ for (const entry of entries) {
171+ const show = filtered.includes(entry);
172+
173+ if (show) {
174+ entry.style.display = "";
175+ } else {
176+ entry.style.display = "none";
177+ }
178+ }
179+
180+ const url = new URL(window.location.href);
181+
182+ if (value === "all") {
183+ url.searchParams.delete("product");
184+ } else {
185+ url.searchParams.set("product", value);
186+ }
187+
188+ history.replaceState(null, "", url.href);
170189
171190 hideButton();
172- });
191+ }
173192
174193 function hideButton() {
175194 const entries = [
0 commit comments