fix: re-render sidebar when module config loads
- Convert sidebar.js IIFE to window.renderSidebar() so it can be re-rendered - Call window.renderSidebar(data) from app-init.js after fetching modules - Ensures sidebar reflects actual tenant module config, not stale localStorage
This commit is contained in:
@@ -190,6 +190,9 @@
|
|||||||
if (data) {
|
if (data) {
|
||||||
localStorage.setItem('pos_modules', JSON.stringify(data));
|
localStorage.setItem('pos_modules', JSON.stringify(data));
|
||||||
window.POS_USER.modules = data;
|
window.POS_USER.modules = data;
|
||||||
|
if (typeof window.renderSidebar === 'function') {
|
||||||
|
window.renderSidebar(data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}).catch(function() {});
|
}).catch(function() {});
|
||||||
} catch(e) {}
|
} catch(e) {}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* Replaces existing sidebar in each page with a consistent, themed version.
|
* Replaces existing sidebar in each page with a consistent, themed version.
|
||||||
* Uses i18n t() for all labels when available.
|
* Uses i18n t() for all labels when available.
|
||||||
*/
|
*/
|
||||||
(function() {
|
window.renderSidebar = function(modulesOverride) {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
// i18n helper — falls back to raw string if i18n.js not loaded
|
// i18n helper — falls back to raw string if i18n.js not loaded
|
||||||
@@ -18,9 +18,13 @@
|
|||||||
var currentLang = localStorage.getItem('pos_lang') || 'es';
|
var currentLang = localStorage.getItem('pos_lang') || 'es';
|
||||||
|
|
||||||
var modules = {};
|
var modules = {};
|
||||||
try {
|
if (modulesOverride && typeof modulesOverride === 'object') {
|
||||||
modules = JSON.parse(localStorage.getItem('pos_modules') || '{}');
|
modules = modulesOverride;
|
||||||
} catch(e) { modules = {}; }
|
} else {
|
||||||
|
try {
|
||||||
|
modules = JSON.parse(localStorage.getItem('pos_modules') || '{}');
|
||||||
|
} catch(e) { modules = {}; }
|
||||||
|
}
|
||||||
|
|
||||||
function moduleEnabled(key) {
|
function moduleEnabled(key) {
|
||||||
// Default to true if not configured yet
|
// Default to true if not configured yet
|
||||||
@@ -135,10 +139,6 @@
|
|||||||
if (main) main.classList.add('pos-main-offset');
|
if (main) main.classList.add('pos-main-offset');
|
||||||
|
|
||||||
// ── Tablet/mobile: sidebar toggle + overlay ─────────────────────
|
// ── Tablet/mobile: sidebar toggle + overlay ─────────────────────
|
||||||
// Creates a hamburger button + overlay for screens < 1024px.
|
|
||||||
// The CSS in pos-glass.css hides the sidebar by default on tablets
|
|
||||||
// and shows it as a slide-in drawer when .open is added.
|
|
||||||
|
|
||||||
var sidebar = document.querySelector('.pos-sidebar, .sidebar, #sidebar');
|
var sidebar = document.querySelector('.pos-sidebar, .sidebar, #sidebar');
|
||||||
var overlay = document.getElementById('sidebar-overlay');
|
var overlay = document.getElementById('sidebar-overlay');
|
||||||
|
|
||||||
@@ -193,5 +193,7 @@
|
|||||||
|
|
||||||
// Reveal sidebar smoothly after replacement to avoid flash/stun
|
// Reveal sidebar smoothly after replacement to avoid flash/stun
|
||||||
document.body.classList.add('sidebar-ready');
|
document.body.classList.add('sidebar-ready');
|
||||||
|
};
|
||||||
|
|
||||||
})();
|
// Initial render
|
||||||
|
window.renderSidebar();
|
||||||
|
|||||||
Reference in New Issue
Block a user