Logging
Track and display status change history
StatusSelect
A select field that lists available statuses for the current model. Options the user cannot transition to are automatically disabled based on transition rules.
use Beboost\StatusManagement\Filament\Forms\Components\StatusSelect;
StatusSelect::make()Modifiers
// Hide statuses the user cannot transition to (instead of showing them disabled)
StatusSelect::make()->hideDisabledOptions()
// Control the icon shown inside each option
StatusSelect::make()->optionIcon() // enable (uses status icon)
StatusSelect::make()->optionIcon(false) // disable
// Control the icon color inside each option
StatusSelect::make()->optionIconColor() // enable (uses status color)
StatusSelect::make()->optionIconColor(false) // disableStatusComment
A textarea that becomes required automatically when the selected status has the Require Comment flag enabled. Place it after StatusSelect in your schema.
use Beboost\StatusManagement\Filament\Forms\Components\StatusComment;
StatusComment::make()The field watches the current StatusSelect value and switches the required rule dynamically — no extra configuration needed.
Example
StatusSelect::make(),
StatusComment::make(),Activity Log
Renders the status change history for the current record directly inside a form. Extends Filament's Field.
use Beboost\StatusManagement\Filament\Forms\Components\ActivityLog;
ActivityLog::make('activity_log')Modifiers
// Number of entries shown per page (default: 3)
ActivityLog::make('activity_log')->perPage(5)
// Max height of the log container (default: 450px)
ActivityLog::make('activity_log')->maxHeight('600px')Example
ActivityLog::make('activity_log')->label('Status History')->perPage(5)RecordSubheading
Shows the current status as a subheading on the Edit/Create page header. Uses two traits:
StatusSubheading— renders the subheading with the status name, icon, and colorRecordPageWithStatus— hooks intoafterSave/afterCreateto persist the status change and fire astatus-changedevent
Add both traits to your EditRecord page:
use Beboost\StatusManagement\Filament\Resources\Pages\StatusSubheading;
use Beboost\StatusManagement\Filament\Resources\Pages\RecordPageWithStatus;
use Filament\Resources\Pages\EditRecord;
class EditOrder extends EditRecord
{
use StatusSubheading;
use RecordPageWithStatus;
protected static string $resource = OrderResource::class;
}RecordPageWithStatus is required whenever you use StatusSelect in a form — it is responsible for actually saving the selected status after the record is saved.
How is this guide?