Skip to content

Commit 7e46242

Browse files
authored
Update certManager.js
1 parent 858e90d commit 7e46242

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

web/certManager.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ async function init() {
1111
const certs = parseCertTable(md);
1212
renderCertCards(certs);
1313
renderUpdates(md);
14+
15+
setupUpdatesToggle(); // <-- initialise toggle after updates rendered
1416
} catch (err) {
1517
console.error(err);
1618
const certList = document.getElementById("certList");
@@ -183,6 +185,55 @@ function renderUpdates(md) {
183185
.join("");
184186
}
185187

188+
/* ---------- Updates toggle (collapsible) ---------- */
189+
190+
function setupUpdatesToggle() {
191+
const updatesBox = document.getElementById("updates");
192+
const toggleBtn = document.getElementById("updatesToggle");
193+
const updatesInner = document.getElementById("updatesInner");
194+
if (!updatesBox || !toggleBtn || !updatesInner) return;
195+
196+
// default collapsed state on first load (change if you want expanded by default)
197+
const storageKey = "prostore_updates_expanded";
198+
// If no saved state, default to collapsed (true)
199+
const saved = localStorage.getItem(storageKey);
200+
const initialCollapsed = saved === null ? true : (saved === "false" ? false : (saved === "true" ? false : true)); // keep collapsed if missing
201+
// simplified: if saved === "1" expand, else collapse: but we used true/false strings for clarity
202+
203+
// Utility to set state
204+
function setCollapsed(collapsed, skipSave = false) {
205+
if (collapsed) {
206+
updatesBox.classList.add("collapsed");
207+
updatesBox.classList.remove("expanded");
208+
toggleBtn.setAttribute("aria-expanded", "false");
209+
toggleBtn.classList.remove("rotated"); // caret shows ^
210+
} else {
211+
updatesBox.classList.remove("collapsed");
212+
updatesBox.classList.add("expanded");
213+
toggleBtn.setAttribute("aria-expanded", "true");
214+
toggleBtn.classList.add("rotated"); // caret flips to look like v
215+
}
216+
if (!skipSave) localStorage.setItem(storageKey, (!collapsed).toString());
217+
}
218+
219+
// init
220+
setCollapsed(initialCollapsed, true);
221+
222+
// click handler
223+
toggleBtn.addEventListener("click", () => {
224+
const isCollapsed = updatesBox.classList.contains("collapsed");
225+
setCollapsed(!isCollapsed);
226+
});
227+
228+
// keyboard support
229+
toggleBtn.addEventListener("keydown", (e) => {
230+
if (e.key === "Enter" || e.key === " ") {
231+
e.preventDefault();
232+
toggleBtn.click();
233+
}
234+
});
235+
}
236+
186237
/* ---------- Modal ---------- */
187238
function openModal(c) {
188239
const modal = document.getElementById("certModal");

0 commit comments

Comments
 (0)