Group::make()->schema([
Select::make('projectId')
->label('Project')
->options(function () {
return Cache::remember('projects', 60, function() {
return Project::all()->pluck('name', 'id');
});
})
->searchable()
->preload()
->required(),
Select::make('taskId')
->label('Task')
->options(function () {
return Cache::remember('tasks', 60, function() {
return Task::all()->pluck('name', 'id');
});
})
->searchable()
->preload()
->required(),
Textarea::make('notes')
->required()
->rows(4)
->columnSpan(2),
TextInput::make('starts_at')
->required()
->numeric()
->maxLength(4)
->minLength(4)
->live(debounce: 500)
->afterStateUpdated(function (Set $set, ?string $state){
if (strlen($state) === 4) {
return $set('starts_at', $this->formatTime($state));
}
}),
TextInput::make('ends_at')
->required()
->numeric()
->maxLength(4)
->minLength(4)
->live(debounce: 500)
->afterStateUpdated(function (Set $set, ?string $state){
if (strlen($state) === 4) {
return $set('ends_at', $this->formatTime($state));
}
}),
])->columns(2)
Group::make()->schema([
Select::make('projectId')
->label('Project')
->options(function () {
return Cache::remember('projects', 60, function() {
return Project::all()->pluck('name', 'id');
});
})
->searchable()
->preload()
->required(),
Select::make('taskId')
->label('Task')
->options(function () {
return Cache::remember('tasks', 60, function() {
return Task::all()->pluck('name', 'id');
});
})
->searchable()
->preload()
->required(),
Textarea::make('notes')
->required()
->rows(4)
->columnSpan(2),
TextInput::make('starts_at')
->required()
->numeric()
->maxLength(4)
->minLength(4)
->live(debounce: 500)
->afterStateUpdated(function (Set $set, ?string $state){
if (strlen($state) === 4) {
return $set('starts_at', $this->formatTime($state));
}
}),
TextInput::make('ends_at')
->required()
->numeric()
->maxLength(4)
->minLength(4)
->live(debounce: 500)
->afterStateUpdated(function (Set $set, ?string $state){
if (strlen($state) === 4) {
return $set('ends_at', $this->formatTime($state));
}
}),
])->columns(2)