Skip to content

A Filament widget that encloses multiple widgets.

License

Notifications You must be signed in to change notification settings

PWMatthew/multi-widget

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Multi Widget

filament-multi-widget-art

Latest Version on Packagist Total Downloads

Filament Multi Widget adds a new type of widget to your Filament application. The Multi Widget allows you to combine multiple widgets into a single widget, that can be switched using tabs. This plugin helps clean up your Filament dashboard.

filament-multi-widget-art

Installation

You can install the package via composer:

Plugin Version Filament Version PHP Version
1.x 2.x > 8.0
2.x 3.x > 8.1
composer require kenepa/multi-widget

Usage

Create a new Multi Widget by extending the Kenepa\MultiWidget\MultiWidget class.

// app/Filament/Widgets/UserMultiWidget.php

class UserMultiWidget extends MultiWidget
{
    public array $widgets = [
        MySubmittedComments::class,
        MySubmittedFeedback::class,
        MySubscriptions::class,
    ];
}

The $widgets property contains the classes of all the widgets that should be added to your Multi Widget. These are normal Filament widgets that you created.
The Multi Widget above will now render as follows:

In case your widget is displayed a second time on the dashboard, make sure the widget is not automatically added to the dashboard again. Check the discoverWidgets() function in your adminPanelProvider.php file.

Using custom labels for tabs

By default, the label name is generated based on the class name. If you want to customize the label for the tab, add the getDisplayName() method to your widget.

// app/Filament/Widgets/ProductSales.php

class ProductSales extends BaseWidget
{
   // Some widget content...
   
    public function getDisplayName(): string {
        return "Custom name";
    }
}

Persist tabs in session

To persist the tabs in the user's session, use the shouldPersistMultiWidgetTabsInSession() method:

// app/Filament/Widgets/UserMultiWidget.php

class UserMultiWidget extends MultiWidget
{
    public array $widgets = [
        MySubmittedComments::class,
        MySubmittedFeedback::class,
        MySubscriptions::class,
    ];
    
    public function shouldPersistMultiWidgetTabsInSession(): bool
    {
        return true;
    }
}

License

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

About

A Filament widget that encloses multiple widgets.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 85.8%
  • Blade 14.2%