Refactor penanganan menu pada sidebar

- Mengurutkan tampilan menu berdasarkan section priority.
- Menambahkan validasi untuk memastikan `$menus` didefinisikan.
- Merapikan logika iterasi dan heading dengan pendekatan yang lebih efisien.
This commit is contained in:
Daeng Deni Mardaeni 2024-12-29 21:14:24 +07:00
parent 091da9832e
commit eae476b2ec

View File

@ -39,33 +39,42 @@
</div> </div>
</div> </div>
@php @php
$headingSystem = 0; $headingOtorisasi = 0;
$headingMain = 0; $headingMain = 0;
$headingMaster = 0; $headingMaster = 0;
$headingSystem = 0;
// Ensure $menus is defined and is an object
$menus = isset($menus) ? json_decode(json_encode($menus)) : new stdClass;
// Define the order of sections
$sectionOrder = ['main','otorisator', 'master', 'system'];
@endphp @endphp
@php $menus = json_decode(json_encode($menus)); @endphp
@foreach($menus as $key => $value) @foreach($sectionOrder as $section)
@foreach($value as $menu) @if(!empty($menus->$section))
@if($key=='main') @if($section == 'otorisator' && $headingOtorisasi == 0)
@if($headingMain == 0) <div class="menu-item pt-2.25 pb-px">
<span class="menu-heading uppercase text-2sm font-semibold text-gray-500 pl-[10px] pr-[10px]">
Otorisator
</span>
</div>
@php $headingOtorisasi = 1; @endphp
@elseif($section == 'main' && $headingMain == 0)
<div class="menu-item pt-2.25 pb-px"> <div class="menu-item pt-2.25 pb-px">
<span class="menu-heading uppercase text-2sm font-semibold text-gray-500 pl-[10px] pr-[10px]"> <span class="menu-heading uppercase text-2sm font-semibold text-gray-500 pl-[10px] pr-[10px]">
Apps Apps
</span> </span>
</div> </div>
@php $headingMain = 1; @endphp @php $headingMain = 1; @endphp
@endif @elseif($section == 'master' && $headingMaster == 0)
@elseif($key=='master')
@if($headingMaster == 0)
<div class="menu-item pt-2.25 pb-px"> <div class="menu-item pt-2.25 pb-px">
<span class="menu-heading uppercase text-2sm font-semibold text-gray-500 pl-[10px] pr-[10px]"> <span class="menu-heading uppercase text-2sm font-semibold text-gray-500 pl-[10px] pr-[10px]">
Master Data Master Data
</span> </span>
</div> </div>
@php $headingMaster = 1; @endphp @php $headingMaster = 1; @endphp
@endif @elseif($section == 'system' && $headingSystem == 0)
@elseif($key=='system')
@if($headingSystem == 0)
<div class="menu-item pt-2.25 pb-px"> <div class="menu-item pt-2.25 pb-px">
<span class="menu-heading uppercase text-2sm font-semibold text-gray-500 pl-[10px] pr-[10px]"> <span class="menu-heading uppercase text-2sm font-semibold text-gray-500 pl-[10px] pr-[10px]">
Systems Systems
@ -73,7 +82,8 @@
</div> </div>
@php $headingSystem = 1; @endphp @php $headingSystem = 1; @endphp
@endif @endif
@endif
@foreach($menus->$section as $menu)
@if(auth()->user()->hasRole($menu->roles)) @if(auth()->user()->hasRole($menu->roles))
@if(isset($menu->sub)) @if(isset($menu->sub))
<div class="menu-item {{ request()->routeIs($menu->path) || request()->routeIs($menu->path.'.*') ? 'show' : '' }}" data-menu-item-toggle="accordion" data-menu-item-trigger="click"> <div class="menu-item {{ request()->routeIs($menu->path) || request()->routeIs($menu->path.'.*') ? 'show' : '' }}" data-menu-item-toggle="accordion" data-menu-item-trigger="click">
@ -128,6 +138,7 @@
@endif @endif
@endif @endif
@endforeach @endforeach
@endif
@endforeach @endforeach
</div> </div>
</div> </div>