Settings: Seitenbreite mit localStorage-Persistierung und Reset
- Settings-Page mit Range-Slider für Seitenbreite (600-1800px) - JSON-basierter localStorage-Key 'settings' (zukunftssicher) - applySettings() beim App-Start für sofortige Wiederherstellung - Reset-Button mit Confirm-Dialog setzt alle Settings auf Defaults - Sanfte Breitenübergänge via --transition-duration
This commit is contained in:
1 parent
38fb5d4de1
commit
d83a6f60ef
7 files changed
+160
-7
No files matched your search
@@ -0,0 +1,64 @@
|
||||
// ── Settings Page ──
|
||||
|
||||
const SETTINGS_KEY = 'settings';
|
||||
|
||||
const SETTINGS_DEFAULTS = {
|
||||
pageWidth: 900
|
||||
};
|
||||
|
||||
function loadSettings() {
|
||||
try {
|
||||
const raw = localStorage.getItem(SETTINGS_KEY);
|
||||
if (raw) return Object.assign({}, SETTINGS_DEFAULTS, JSON.parse(raw));
|
||||
} catch (_) {}
|
||||
return Object.assign({}, SETTINGS_DEFAULTS);
|
||||
}
|
||||
|
||||
function saveSettings(settings) {
|
||||
localStorage.setItem(SETTINGS_KEY, JSON.stringify(settings));
|
||||
}
|
||||
|
||||
function resetSettings() {
|
||||
localStorage.removeItem(SETTINGS_KEY);
|
||||
}
|
||||
|
||||
function applySettings() {
|
||||
const s = loadSettings();
|
||||
document.documentElement.style.setProperty('--page-width', s.pageWidth + 'px');
|
||||
}
|
||||
|
||||
// Apply on load
|
||||
applySettings();
|
||||
|
||||
registerPage('settings', {
|
||||
init() {
|
||||
const slider = document.getElementById('settingPageWidth');
|
||||
const display = document.getElementById('settingPageWidthValue');
|
||||
const resetBtn = document.getElementById('settingsResetBtn');
|
||||
|
||||
const s = loadSettings();
|
||||
slider.value = s.pageWidth;
|
||||
display.textContent = s.pageWidth + 'px';
|
||||
|
||||
slider.addEventListener('input', () => {
|
||||
display.textContent = slider.value + 'px';
|
||||
});
|
||||
|
||||
slider.addEventListener('change', () => {
|
||||
const s = loadSettings();
|
||||
s.pageWidth = parseInt(slider.value, 10);
|
||||
saveSettings(s);
|
||||
applySettings();
|
||||
});
|
||||
|
||||
resetBtn.addEventListener('click', () => {
|
||||
if (!confirm('Alle Einstellungen auf Standard zurücksetzen?')) return;
|
||||
resetSettings();
|
||||
applySettings();
|
||||
// Update UI
|
||||
slider.value = SETTINGS_DEFAULTS.pageWidth;
|
||||
display.textContent = SETTINGS_DEFAULTS.pageWidth + 'px';
|
||||
});
|
||||
},
|
||||
destroy() {}
|
||||
});
|
||||
Reference in new issue
Block a user