Beboost

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)   // disable

StatusComment

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 color
  • RecordPageWithStatus — hooks into afterSave/afterCreate to persist the status change and fire a status-changed event

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?

On this page