Farby štítkov a prezentácia
K dispozícii od verzie 1.1.0. Pre badge a stavové štítky môže enum priradiť každému prípadu farbu implementovaním RoundlyConsulting\Enums\Contracts\HasColor. presentation() potom vráti jeden prípad ako DTO EnumPresentation a presentations() všetky prípady v poradí deklarácie:
use RoundlyConsulting\Enums\Attributes\TranslatedLabels;
use RoundlyConsulting\Enums\Contracts\HasColor;
use RoundlyConsulting\Enums\Helpers;
#[TranslatedLabels]
enum OrderStatus: string implements HasColor
{
use Helpers;
case Pending = 'pending';
case Shipped = 'shipped';
public function color(): string
{
return match ($this) {
self::Pending => 'warning',
self::Shipped => 'success',
};
}
}
OrderStatus::Shipped->presentation(); // EnumPresentation {value: 'shipped', label: 'Na ceste', color: 'success'}
OrderStatus::presentations(); // Collection<int, EnumPresentation>, every case in declaration order
OrderStatus::presentations()->toJson(); // [{"value":"pending","label":"…","color":"warning"}, …]- Farba je ľubovoľný reťazec, ktorému rozumie váš frontend — variant badge, CSS trieda či hex kód. Balík ju len odovzdá ďalej a nikdy ju neinterpretuje.
- HasColor je rozhranie, nie metóda traitu, takže enum, ktorý už má metódu color() s iným návratovým typom, funguje ďalej: v prezentáciách má color: null, kým rozhranie neimplementuje.
- presentation() použije hodnotu backed enumu (pri čistom enume názov prípadu) v natívnom type, takže int zostane intom, a pre popis readable(), takže platia preložené popisy aj prepísané readable(). presentations() zavolá presentation() pre každý prípad.
- Bez HasColor je color null.
- options() si pre selecty zachová tvar {value, label, name}; keď potrebujete farbu, použite presentations().
DTO EnumPresentation
| Člen | Typ | Hodnota |
|---|---|---|
value | string|int | Hodnota backed enumu v natívnom type — pri čistom enume názov prípadu. |
label | string | readable() — preložený popis. |
color | ?string | color() pri HasColor, inak null. |
toArray() | array | ['value' => ..., 'label' => ..., 'color' => ...] |
jsonSerialize() | array | To isté ako toArray(). |
RoundlyConsulting\Enums\DataTransferObjects\EnumPresentation je final readonly trieda, ktorá implementuje Arrayable a JsonSerializable: toArray() aj json_encode() vždy vrátia presne value, label a color v tomto poradí, takže presentations() môžete odovzdať priamo do JSON odpovede alebo ako prop pre Inertia.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.