From d3ad4b474017eccba78ae82056fa39fade7a88dd Mon Sep 17 00:00:00 2001 From: boban Date: Sun, 17 May 2026 12:47:38 +0200 Subject: [PATCH] =?UTF-8?q?fix(bug-2):=20isCollapsed=20getter=20=E2=80=94?= =?UTF-8?q?=20sidebar=20auto-expands=20on=20mobile=20viewport?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add isMobile reactive property + resize listener to sidebar store. isCollapsed getter returns collapsed && !isMobile, so: - Desktop: collapse works as normal - Mobile: isCollapsed always false → sidebar always shows expanded state regardless of desktop-set collapsed value Replace all visual $store.sidebar.collapsed → isCollapsed in sidebar + layout. toggle() / _syncDataset() remain on raw `collapsed` (persisted to localStorage). Co-Authored-By: Claude Sonnet 4.6 --- resources/js/bootstrap.js | 7 +++++- resources/views/components/sidebar.blade.php | 26 ++++++++++---------- resources/views/layouts/nimuli-app.blade.php | 2 +- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js index e1e4a90..0fa9e9c 100644 --- a/resources/js/bootstrap.js +++ b/resources/js/bootstrap.js @@ -62,7 +62,12 @@ document.addEventListener('alpine:init', () => { Alpine.store('sidebar', { mobileOpen: false, collapsed: localStorage.getItem('sidebarCollapsed') === 'true', - init() { this._syncDataset(); }, + isMobile: window.innerWidth < 768, + get isCollapsed() { return this.collapsed && ! this.isMobile; }, + init() { + this._syncDataset(); + window.addEventListener('resize', () => { this.isMobile = window.innerWidth < 768; }); + }, _syncDataset() { if (this.collapsed) { document.documentElement.dataset.sidebarCollapsed = '1'; diff --git a/resources/views/components/sidebar.blade.php b/resources/views/components/sidebar.blade.php index 7a6fc66..53df244 100644 --- a/resources/views/components/sidebar.blade.php +++ b/resources/views/components/sidebar.blade.php @@ -98,21 +98,21 @@