sakanjo / filament-auth-preferences
A Filament plugin to manage user preferences.
Package info
github.com/sakanjo/filament-auth-preferences
pkg:composer/sakanjo/filament-auth-preferences
Fund package maintenance!
Requires
- php: ^8.4
- filament/filament: ^5.0
- rogervila/array-diff-multidimensional: ^2.1
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.1
- orchestra/testbench: ^10.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-livewire: ^4.0
- phpstan/phpstan: ^2.0
README
A Filament plugin to manage user preferences.
⨠Help support the maintenance of this package by sponsoring me.
Table of Contents
đĻ Install
Install the package via composer:
composer require sakanjo/filament-auth-preferences
đĻ Usage
<?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
Presets are the core of the plugin, allows you to create different preferences with no limit.
Default presets
The package comes with a default preset that you can use out of the box.
PanelPresetTablePreset
Creating custom preset
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 components(): 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
};
}
}
}
Functions
prefers
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(),
]);
}
}
đ Support the development
Do you like this project? Support it by donating
Click the "đ Sponsor" at the top of this repo.
ÂŠī¸ Credits
đ License
MIT License Š 2023-PRESENT Salah Kanjo
