erikaraujo/filament-enum-attributes
| Install | |
|---|---|
composer require erikaraujo/filament-enum-attributes |
|
| Latest Version: | 1.0.0 |
| PHP: | ^8.1 |
| License: | MIT |
| Last Updated: | Feb 13, 2024 |
| Links: | GitHub · Packagist |
Filament Enum Attributes
Enum traits to allow the use of attributes in Filament Enums.
Installation
You can install the package via composer:
composer require erikaraujo/filament-enum-attributes
Usage
First, you need to import and use the Enum traits in your Filament enum class:
use HasColorAttribute;
use HasIconAttribute;
use HasLabelAttribute;
use HasDescriptionAttribute;
Or you can import all traits by simply doing:
use HasFilamentEnumAttributes;
Now, instead of coding the default filament get methods (getColor(), getIcon() and getLabel()) as per the documentation, you may simply use the #[Color], #[Icon] and #[Label] attributes in your enum cases.
See example below:
enum Suit: string implements HasColor, HasIcon, HasLabel, HasDescription
{
use HasColorAttribute;
use HasIconAttribute;
use HasLabelAttribute;
use HasDescriptionAttribute;
#[Color(['gray', 'warning'])]
case Clubs = 'clubs';
#[
Color('warning'),
Label('Shine bright'),
]
case Diamonds = 'diamonds';
#[Color('gray')]
#[Label('Club')]
#[Icon('heroicon-o-heart')]
case Hearts = 'hearts';
#[Description('The upside down black heart.')]
case Spades = 'spades';
Make sure everything is imported:
use ErikAraujo\FilamentEnumAttributes\Attributes\Color;
use ErikAraujo\FilamentEnumAttributes\Attributes\Icon;
use ErikAraujo\FilamentEnumAttributes\Attributes\Label;
use ErikAraujo\FilamentEnumAttributes\Concerns\HasColorAttribute;
use ErikAraujo\FilamentEnumAttributes\Concerns\HasIconAttribute;
use ErikAraujo\FilamentEnumAttributes\Concerns\HasLabelAttribute;
use ErikAraujo\FilamentEnumAttributes\Concerns\HasDescriptionAttribute;
You can also pass a boolean translate param to both the Label and Description attributes if you want to translate the string using the laravel helper.
So, the following:
#[Description('descriptions.suits.spades')]
Will be evaluated as __('descriptions.suits.spades').
Testing
To execute the tests, just run the composer scriopt:
composer test
If you want to check on the coverage, run:
composer test:coverage:html
Contributing
Please see CONTRIBUTING for details.
License
The MIT License (MIT). Please see License File for more information.