Et impedit illum et nulla architecto dolorem
Karena sekarang:
Section::make(__('Location Details'))
->columnSpan(3)
->columns(3)
Maka saat role staff, layout jadi kurang ideal karena:
Section tetap 3 kolom penuh
Tapi
Assignment & PrioritydisembunyikanSehingga layout jadi tidak seimbang
Kita buat Location Details responsive berdasarkan role.
✅ Solusi: Dynamic columnSpan & columns untuk Staff
Ubah bagian Location Details menjadi seperti ini:
Section::make(__('Location Details'))
->description(__('Specify where the maintenance is needed'))
->icon('heroicon-o-map-pin')
->columnSpan(fn () => Auth::user()?->hasRole('staff') ? 2 : 3)
->columns(fn () => Auth::user()?->hasRole('staff') ? 2 : 3)
->schema([
Select::make('building')
->label(__('Building'))
->placeholder(__('Select building'))
->options(TicketBuilding::class)
->native(false)
->required(),
Select::make('floor')
->label(__('Floor'))
->placeholder(__('Select floor'))
->options(TicketFloor::class)
->native(false)
->required(),
TextInput::make('room')
->label(__('Room / Area'))
->placeholder(__('e.g., Room 101, Lobby, etc.'))
->maxLength(255)
->columnSpan(fn () => Auth::user()?->hasRole('staff') ? 2 : 1),
])
🎯 Hasilnya Sekarang
👤 Jika BUKAN staff:
Ticket Information → 2 kolom
Assignment & Priority → 1 kolom
Location Details → full 3 kolom
Isi Location → 3 kolom sejajar
👷 Jika staff:
Assignment & Priority → hidden
Ticket Information → tetap 2 kolom
Location Details → hanya 2 kolom (lebih proporsional)
Room field melebar 2 kolom supaya tidak terlalu sempit
🔥 Alternatif Lebih Clean (Best Practice)
Supaya tidak berkali-kali cek Auth::user()?->hasRole('staff'), simpan dulu ke variable:
Di awal method:
$isStaff = Auth::user()?->hasRole('staff') ?? false;
Lalu pakai:
->columnSpan(fn () => $isStaff ? 2 : 3)
Lebih bersih dan mudah dibaca.
Kalau kamu mau, saya bisa bantu refactor seluruh TicketForm supaya layoutnya benar-benar optimal untuk:
Staff
Admin
Super Admin
Tanpa conditional berulang-ulang.
Perks
What You'll Get
Agenda
Schedule
Alias tempora ab max
Consequatur Enim vo
Magna dolor maiores
Adipisicing aut sed
Minus voluptas perfe
Sed dolorem sunt ut
Registration