Skip to content

howdu/filament-record-switcher

Repository files navigation

Resource title navigation dropdown with search for Filament

Latest Version on Packagist GitHub Tests Action Status Total Downloads

Screenshot

Subtly convert the page title into a dropdown navigation that's displayed on click.

It works similar to Filament's global search but only shows results for the current resource.

Installation

You can install the package via composer:

composer require howdu/filament-record-switcher

Optionally, you can publish the views using

php artisan vendor:publish --tag="filament-record-switcher-views"

Usage

  1. Register plugin inside your PanelProvider(s). E.g app/Filament/Providers/AdminPanelProvider.php
use Howdu\FilamentRecordSwitcher\FilamentRecordSwitcherPlugin;

class AdminPanelProvider extends PanelProvider
{
    public function panel(Panel $panel): Panel
    {
        return $panel
            // ...
            ->plugin(
                FilamentRecordSwitcherPlugin::make(),
            );
    }
}
  1. Add the HasRecordSwitcher trait to each of your edit record Page. E.g app/Filament/Resources/Category/Pages/EditCategory.php
use Howdu\FilamentRecordSwitcher\Filament\Concerns\HasRecordSwitcher;

class EditCategory extends EditRecord
{
    use HasRecordSwitcher;
}

Note: this trail will overwrite the getHeading() method if you've overwritten it in your Page you need to overwrite getRecordTitle() instead.

  1. Check your Resource class e.g CategoryResource has the record title attribute set which's used as the label in the select dropdown.
protected static ?string $recordTitleAttribute = 'title';
  1. Finally publish plugin assets.
php artisan filament:assets

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.