The easiest way to shout announcements in filament!
You can install the package via composer:
composer require rupadana/filament-announce
# Laravel 11 and higher
php artisan make:notifications-table
# Laravel 10
php artisan notifications:table
Run migration
php artisan migrate
Optionally, you can publish the views using
php artisan vendor:publish --tag="filament-announce-views"
publish config
php artisan vendor:publish --tag="filament-announce-config"
return [
'navigation' => [
'group' => '',
'sort' => 1
],
'can_access' => [
'role' => ['super_admin']
]
];
You must enable Announce by adding FilamentAnnouncePlugin
class to your Filament Panel's plugin() or plugins([]) method:
use Rupadana\FilamentAnnounce\FilamentAnnouncePlugin;
use Filament\Support\Colors\Color;
class CustomersPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
...
->plugin(
FilamentAnnouncePlugin::make()
->pollingInterval('30s') // optional, by default it is set to null
->defaultColor(Color::Blue) // optional, by default it is set to "primary"
)
}
}
To override the plugins announcementResource with your own custom resource, you should append usingResource
method when registering the plugin:
use Rupadana\FilamentAnnounce\FilamentAnnouncePlugin;
use Filament\Support\Colors\Color;
class CustomersPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
...
->plugin(
FilamentAnnouncePlugin::make()
->usingResource(MyCustomAnnouncementResource::class)
->pollingInterval('30s') // optional, by default it is set to null
->defaultColor(Color::Blue) // optional, by default it is set to "primary"
)
}
}
Now you can announce whatever to users:
use App\Models\User;
use Rupadana\FilamentAnnounce\Announce;
Announce::make()
->title('Big News!')
->icon('heroicon-o-megaphone')
->body('Filament can now show very important message to specific users!')
->disableCloseButton() // Optional, if you want ur announcement discloseable
->announceTo(User::all());
By default, the alignments will be start
and you might want to adjust them:
use App\Models\User;
use Filament\Support\Enums\Alignment;
use Rupadana\FilamentAnnounce\Announce;
Announce::make()
->title('Big News!')
->icon('heroicon-o-megaphone')
->body('Filament can now show very important message to specific users!')
->alignment(Alignment::Center) // this will set both title and body alignments (common alignment)
->titleAlignment(Alignment::Start) // this will set title alignment and take precedence over common alignment methods
->bodyAlignment(Alignment::Start) // this will set body alignment and take precedence over common alignment methods
->actions([
Action::make('view')
->button(),
Action::make('undo')
->color('gray'),
])
->announceTo(User::all());
You can also use alignStart()
, alignCenter()
, alignEnd()
, alignJustify()
, alignBetween()
, alignLeft()
and alignRight()
for your convenience.
Since Announce extends Filament Notification, you can add Filament Notification Actions to your announcements:
use App\Models\User;
use Rupadana\FilamentAnnounce\Announce;
Announce::make()
->title('Big News!')
->icon('heroicon-o-megaphone')
->body('Filament can now show very important message to specific users!')
->actions([
Action::make('view')
->button(),
Action::make('undo')
->color('gray'),
])
->announceTo(User::all());
Read more about Notification Action.
- Can add actions to every announcement
- Provide a resource/action to send announcement
- Add banner-like implementations for global announcement
- Set end date or time so it will disapear automaticly
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
The MIT License (MIT). Please see License File for more information.