columns([ TextColumn::make('employee.full_name') ->label('Employee') ->searchable() ->sortable(), TextColumn::make('document_type') ->label('Type') ->badge() ->color(fn (DocumentType $state): string => $state->color()) ->formatStateUsing(fn (DocumentType $state): string => $state->label()) ->searchable() ->sortable(), TextColumn::make('title') ->searchable() ->sortable(), TextColumn::make('uploaded_at') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), TextColumn::make('created_at') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), TextColumn::make('updated_at') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), TextColumn::make('deleted_at') ->dateTime() ->sortable() ->toggleable(isToggledHiddenByDefault: true), ]) ->filters([ SelectFilter::make('document_type') ->label('Type') ->options(DocumentType::class), TrashedFilter::make(), ]) ->recordActions([ Action::make('download') ->label('Download') ->icon('heroicon-o-arrow-down-tray') ->visible(fn (EmployeeDocument $record): bool => filled($record->file_path)) ->action(function (EmployeeDocument $record) { $disk = Storage::disk(config('hr.file_uploads.disk')); return response()->download( $disk->path($record->file_path), basename($record->file_path), ); }), ViewAction::make(), EditAction::make(), ]) ->toolbarActions([ BulkActionGroup::make([ DeleteBulkAction::make(), ForceDeleteBulkAction::make(), RestoreBulkAction::make(), ]), ]); } }