Add dismiss button to progress widget completion state

Shows an × button in the top-right of the completion card so users can
permanently hide the widget once they've seen the success message. Dismissal
is stored in localStorage (same pattern as the collapse state) so it persists
across page loads without requiring a DB migration. The widget hides itself
on the next load before any layout is shown, avoiding a flash.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-28 21:37:53 -04:00
parent 45441c1d07
commit 73df72ab97
2 changed files with 36 additions and 11 deletions
@@ -1,11 +1,20 @@
(function () {
var STORAGE_KEY = 'shopProgressCollapsed';
var STORAGE_KEY = 'shopProgressCollapsed';
var DISMISSED_KEY = 'shopProgressDismissed';
var widget = document.getElementById('shopProgressWidget');
if (!widget) return;
var body = document.getElementById('shopProgressBody');
var toggle = document.getElementById('shopProgressToggle');
var chevron = document.getElementById('shopProgressChevron');
// Hide permanently if user dismissed the completion state
try {
if (localStorage.getItem(DISMISSED_KEY) === '1') {
widget.style.display = 'none';
return;
}
} catch (e) { }
var body = document.getElementById('shopProgressBody');
var toggle = document.getElementById('shopProgressToggle');
var chevron = document.getElementById('shopProgressChevron');
function setCollapsed(collapsed) {
body.style.display = collapsed ? 'none' : '';
@@ -14,7 +23,7 @@
try { localStorage.setItem(STORAGE_KEY, collapsed ? '1' : '0'); } catch (e) { }
}
// Restore on load
// Restore collapse state on load
try {
if (localStorage.getItem(STORAGE_KEY) === '1') setCollapsed(true);
} catch (e) { }
@@ -22,4 +31,13 @@
toggle.addEventListener('click', function () {
setCollapsed(body.style.display === 'none' ? false : true);
});
// Dismiss button — completion state only
var dismiss = document.getElementById('shopProgressDismiss');
if (dismiss) {
dismiss.addEventListener('click', function () {
widget.style.display = 'none';
try { localStorage.setItem(DISMISSED_KEY, '1'); } catch (e) { }
});
}
}());