Et impedit illum et nulla architecto dolorem
Sales Open

Et impedit illum et nulla architecto dolorem

Friday, 06 March 2026 · 20:47:00 – 21:13:00
Chase Hughes
Register Now

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 & Priority disembunyikan

  • Sehingga 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

Nostrud ex Nam molli
Doloribus aute rem a

Agenda

Schedule

Quis ex et in nihil

Alias tempora ab max

Consequatur Enim vo

Ex beatae eum accusa

Magna dolor maiores

Adipisicing aut sed

Et tempora voluptate

Minus voluptas perfe

Sed dolorem sunt ut

Registration

Choose Your Ticket

Gratis

FREE

FREE

9 slots remaining

Register