feat: improved user feedback

This commit is contained in:
2026-07-13 14:42:44 +02:00
parent 5805c96d57
commit e257436a5a
5 changed files with 150 additions and 21 deletions
+22 -1
View File
@@ -10,14 +10,35 @@ import { renderOutput } from './render.js';
const SECTIONS_STORAGE_KEY = 'sections-data';
// Guardar en localStorage no da ninguna señal por sí solo; este aviso breve
// confirma al usuario que sí ha ocurrido algo. Se reutiliza el mismo
// temporizador en clics seguidos para que no se oculte a mitad de un nuevo
// aviso si el usuario pulsa "Guardar" varias veces seguidas.
const saveToast = document.getElementById('save-toast');
let saveToastTimeout;
function showSaveToast() {
saveToast.classList.remove('hidden');
clearTimeout(saveToastTimeout);
saveToastTimeout = setTimeout(() => saveToast.classList.add('hidden'), 2000);
}
document.getElementById('save-pattern').addEventListener('click', () => {
const data = { sections: serializeSections(), pageSettings: serializePageSettings() };
localStorage.setItem(SECTIONS_STORAGE_KEY, JSON.stringify(data));
showSaveToast();
});
document.getElementById('load-pattern').addEventListener('click', () => {
const loadBtn = document.getElementById('load-pattern');
loadBtn.addEventListener('click', () => {
const raw = localStorage.getItem(SECTIONS_STORAGE_KEY);
if (!raw) return;
// Cargar sustituye todo lo que haya en pantalla sin posibilidad de
// deshacerlo, así que se confirma antes: podría haber cambios sin guardar.
if (!confirm(loadBtn.dataset.confirmMessage)) return;
const data = JSON.parse(raw);
buildSectionsFrom(data.sections || []);
applyPageSettings(data.pageSettings);