fix(builder): forzar layout template estable y desactivar free-drag auto

This commit is contained in:
komkida91
2026-03-01 14:35:58 +01:00
parent d18a92d017
commit 40738cc65b

View File

@@ -3068,11 +3068,7 @@ const state = {
const keepRubro = normalizeRubro(state.settings.business_rubro || SERVER_RUBRO || "restaurante");
state.blocks = [];
state.settings = { ...defaultSettings, business_rubro: keepRubro };
if (BUILDER_MODE === "ub24"){
state.settings.free_drag = false;
} else {
state.settings.free_drag = keepRubro === "restaurante";
}
state.settings.free_drag = false;
selectedBlockId = null;
renderInspector();
renderPreview();
@@ -3100,20 +3096,9 @@ const state = {
state.blocks.forEach(b=>{ if (!b.page) b.page = "home"; });
state.settings.free_drag = false;
} else {
const savedFreeDrag = typeof state.settings.free_drag === "boolean" ? state.settings.free_drag : false;
if (!savedFreeDrag){
state.settings.free_drag = false;
} else {
// Compatibilidad: si un sitio viene marcado como free_drag pero no tiene posiciones
// reales, volvemos a flujo normal para evitar superposicion de bloques.
state.settings.free_drag = hasMeaningfulFreeDragPositions(state.blocks);
}
if (state.settings.free_drag){
if (!hasMeaningfulFreeDragPositions(state.blocks) || hasSevereFreeDragOverlap(state.blocks)){
applyStackedFreeDragLayout(state.blocks);
}
normalizeDuplicatedFreeDragPositions(state.blocks);
}
// Mantener layout tipo template estable por defecto en builder web.
// Evita superposiciones y bloqueos al agregar nuevos bloques.
state.settings.free_drag = false;
}
selectedBlockId = null;
wireSidebar();
@@ -3136,15 +3121,8 @@ const state = {
const t = templates[key];
state.settings = { ...state.settings, ...t.settings };
state.settings.business_rubro = normalizeRubro(key);
if (BUILDER_MODE === "ub24"){
state.settings.free_drag = false;
} else {
state.settings.free_drag = state.settings.business_rubro === "restaurante";
}
state.settings.free_drag = false;
state.blocks = t.blocks.map(b=>({ ...b, id: makeId(), page: (BUILDER_MODE==="ub24" ? "home" : b.page) }));
if (state.settings.free_drag){
applyStackedFreeDragLayout(state.blocks);
}
selectedBlockId = null;
renderInspector(); renderPreview();
wireSettings();