<?php
namespace App\Http\Livewire;
use App\Enum\TransportEnum;
use App\Models\Booking;
use App\Models\RoomDetail;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Concerns\InteractsWithForms;
use Filament\Forms\Contracts\HasForms;
use Filament\Forms\Form;
use Filament\Forms\Get;
use Livewire\Component;
class TransportDetails extends Component implements HasForms
{
use InteractsWithForms;
public $data = [];
public Booking $booking;
public function mount($id)
{
$this->booking = RoomDetail::find($id)->room->booking;
$this->form->fill();
}
public function form(Form $form): Form
{
return $form
->statePath('data')
->schema([
Section::make('Transport Details')
->schema([
Select::make('transport_method')
->live()
->options(TransportEnum::class)
->required(),
]),
Section::make('Car Details')
->visible(fn(Get $get) => $get('transport_method') == TransportEnum::DRIVING->value)
->schema([
TextInput::make('car_make_model')
->required(),
TextInput::make('car_numberplate')
->required(),
Select::make('driving_to_campus')
->options([
'yes' => 'Yes',
'no' => 'No',
])
->required(),
Select::make('requires_transport_from_campus')
->options([
'yes' => 'Yes',
'no' => 'No',
])
->required(),
])
]);
}
public function render()
{
return view('livewire.transport_details');
}
}
<?php
namespace App\Http\Livewire;
use App\Enum\TransportEnum;
use App\Models\Booking;
use App\Models\RoomDetail;
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Concerns\InteractsWithForms;
use Filament\Forms\Contracts\HasForms;
use Filament\Forms\Form;
use Filament\Forms\Get;
use Livewire\Component;
class TransportDetails extends Component implements HasForms
{
use InteractsWithForms;
public $data = [];
public Booking $booking;
public function mount($id)
{
$this->booking = RoomDetail::find($id)->room->booking;
$this->form->fill();
}
public function form(Form $form): Form
{
return $form
->statePath('data')
->schema([
Section::make('Transport Details')
->schema([
Select::make('transport_method')
->live()
->options(TransportEnum::class)
->required(),
]),
Section::make('Car Details')
->visible(fn(Get $get) => $get('transport_method') == TransportEnum::DRIVING->value)
->schema([
TextInput::make('car_make_model')
->required(),
TextInput::make('car_numberplate')
->required(),
Select::make('driving_to_campus')
->options([
'yes' => 'Yes',
'no' => 'No',
])
->required(),
Select::make('requires_transport_from_campus')
->options([
'yes' => 'Yes',
'no' => 'No',
])
->required(),
])
]);
}
public function render()
{
return view('livewire.transport_details');
}
}