A Filament plugin to manage user preferences.
✨ Help support the maintenance of this package by sponsoring me.
Install the package via composer:
composer require sakanjo/filament-auth-preferences
<?php
// ...
use SaKanjo\FilamentAuthPreferences\AuthPreferencesPlugin;
use App\Filament\Presets\MyPreset;
public function panel(Panel $panel): Panel
{
return $panel
->plugin(
AuthPreferencesPlugin::make()
->preset(MyPreset::make())
);
}
Presets are the core of the plugin, allows you to create different preferences with no limit.
The package comes with a default preset that you can use out of the box.
PanelPreset
TablePreset
You can create your own custom preset by extending the SaKanjo\FilamentAuthPreferences\Presets\Preset
class.
<?php
namespace App\Filament\Presets;
use Filament\Facades\Filament;
use Filament\Forms;
use SaKanjo\FilamentAuthPreferences\Presets\Preset;
class MyPreset extends Preset
{
public static function data(): array
{
$panel = Filament::getCurrentPanel();
return [
'brandName' => $panel->getBrandName(),
'topNavigation' => $panel->hasTopNavigation(),
];
}
public static function schema(): array
{
return [
Forms\Components\TextInput::make('brandName'),
Forms\Components\Toggle::make('topNavigation'),
];
}
public static function apply(array $data): void
{
$panel = Filament::getCurrentPanel();
foreach ($data as $method => $value) {
match ($method) {
'brandName' => $panel->brandName($value),
'topNavigation' => $panel->topNavigation($value),
default => null
};
}
}
}
namespace App\Filament\Admin\Resources;
use function SaKanjo\FilamentAuthPreferences\prefers;
class UserResource extends Resource {
// ...
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('created_at')
->visible(prefers('to_show_timestamps', true))
->dateTime(),
Tables\Columns\TextColumn::make('updated_at')
->visible(prefers('to_show_timestamps', true))
->dateTime(),
]);
}
}
Do you like this project? Support it by donating
Click the "💖 Sponsor" at the top of this repo.
MIT License © 2023-PRESENT Salah Kanjo