ffhs / filament-package_ffhs_approvals
This is my package filament-package_ffhs_approvals
Package info
github.com/ffhs/filament-package_ffhs_approvals
pkg:composer/ffhs/filament-package_ffhs_approvals
Requires
- php: ^8.2
- filament/filament: ^4.0
- laravel/framework: ^11|^12.0
- spatie/laravel-package-tools: ^1.15.0
- spatie/laravel-permission: ^6.21
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.0
- nunomaduro/collision: ^8.0
- orchestra/testbench: ^9.9
- pestphp/pest: ^3.7
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^2.0
- phpstan/phpstan-phpunit: ^2.0
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2026-02-26 10:34:21 UTC
README
This package allows you to easily implement approval workflows in your Filament-powered Laravel application. You can
define approval logic per model, specify who can approve (based on roles, permissions, or user logic), and expose
powerful UI actions using Filament’s Infolist components.
Features:
- ✅ Native PHP Enums for status handling
- 🔁 Define multiple approval flows per model
- 👥 Role-, user-, and permission-based approval logic
- 🧩 Seamless integration with Filament Actions and Forms
- 🎨 Customize icons, labels, tooltips, colors per status
- 🛡️ Control button visibility and approval flow states based on business logic
- 🔔 Built-in confirmation prompts and notifications
- 🧱 Fully expandable
Versions
| Filament Version | Package Version |
|---|---|
| 3.x | ^1.0.0 |
| 4.x | ^2.0.0 |
| 5.x | --- |
Documentation
You can find the full documentation here.
Preview
(The lower section are the Approvals)
Installation
You can install the package via composer:
composer require ffhs/filament-package_ffhs_approvals
You can publish the config file with:
php artisan vendor:publish --tag="filament-package_ffhs_approvals-config"
You can publish and run the migrations with:
php artisan vendor:publish --tag="filament-package_ffhs_approvals-migrations"
php artisan migrate
Usage
1. Define Approval Status Enum
Create a PHP Enum implementing HasApprovalStatuses:
use Ffhs\Approvals\Contracts\HasApprovalStatuses; enum MyApprovalStatus: string implements HasApprovalStatuses { case APPROVED = 'approved'; case INCOMPLETE = 'incomplete'; case DENIED = 'denied'; public static function getApprovedStatuses(): array { return [self::APPROVED]; } public static function getDeniedStatuses(): array { return [self::DENIED]; } public static function getPendingStatuses(): array { return [self::INCOMPLETE]; } }
2. Define Approval Flow in Model
Implement Approvable and use the HasApprovals trait:
namespace App\Models; class MyModel extends Model implements Approvable{ use HasApprovals; public function getApprovalFlows(): array { return [ 'management_approved' => SimpleApprovalFlow::make() ->approvalStatus(ApplicationApprovalStatus::cases()) ->aprovalBy([ SimpleApprovalBy::make('employee') ->any(), SimpleApprovalBy::make('manager') ->permission('can_approve_for_manager'), SimpleApprovalBy::make('hr') ->role('hr_role') ->atLeast(2) ]) ]; } }
3. Basic Filament Action Usage
Render the approval action in your Filament resource or view:
// MyModelView.php ApprovalActions::make('managment_aproved')
Testing
composer install ./vendor/bin/testbench vendor:publish --tag="filament-package_ffhs_custom_forms-migrations" ./vendor/bin/testbench workbench:build ./vendor/bin/pest test
Credits
License
The MIT License (MIT). Please see License File for more information.

