Components
Infolist component
One infolist entry is shipped. It calls $record->timeline() and requires HasTimeline.
use Relaticle\ActivityLog\Filament\Infolists\Components\ActivityLog;
ActivityLog::make('activity')
->heading('Activity')
->groupByDate() // bucket by today / this week / older (default: true)
->perPage(20) // Livewire page size (default: 3)
->emptyState('No activity yet.') // custom empty-state message
->infiniteScroll(true) // false renders a "Load more" button (default: true)
->columnSpanFull();
Pagination UX: infiniteScroll(bool)
The infiniteScroll() fluent flag switches the bottom control:
true(default) - renders awire:intersectsentinel; the next page loads automatically as the user scrolls (Livewire 4).false- renders aLoad morebutton the user clicks.
Relation manager
A read-only relation manager renders the activity log as a tab on the resource's view/edit page:
use Relaticle\ActivityLog\Filament\RelationManagers\ActivityLogRelationManager;
public static function getRelations(): array
{
return [
ActivityLogRelationManager::class,
];
}
canViewForRecord() always returns true. It declares a dummy HasOne relationship so it doesn't write to the DB - the page just hosts the Livewire component.
The relation manager carries a protected static bool $infiniteScroll = true that is forwarded to the Livewire component. Flip it from a service provider if you want the opposite UX:
ActivityLogRelationManager::$infiniteScroll = false;
Header action
Show the activity log in a slide-over modal from any resource table or page header:
use Relaticle\ActivityLog\Filament\Actions\ActivityLogAction;
protected function getHeaderActions(): array
{
return [
ActivityLogAction::make(),
];
}
The action opens a 2XL slide-over with the Livewire component. Customize label/icon/modal width as with any Filament action.