PageLayout.php 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Enums;
  3. use App\Filament\Resources\Pages\Schemas\LayoutForms;
  4. use App\ViewModels\Pages as ViewModels;
  5. enum PageLayout: string
  6. {
  7. case Default = 'default';
  8. case FrontPage = 'front_page';
  9. public function label(): string
  10. {
  11. return match($this) {
  12. self::Default => 'Default',
  13. self::FrontPage => 'Front Page',
  14. };
  15. }
  16. public function route(): string
  17. {
  18. return match($this) {
  19. self::Default => 'Default',
  20. self::FrontPage => 'Front Page',
  21. };
  22. }
  23. public function handlerClass(): string
  24. {
  25. return match($this) {
  26. self::Default => '',
  27. self::FrontPage => '',
  28. };
  29. }
  30. public function formClass(): string
  31. {
  32. return match($this) {
  33. self::Default => '',
  34. self::FrontPage => '',
  35. };
  36. }
  37. public static function selectOptions(): array
  38. {
  39. $options = [];
  40. foreach (self::cases() as $case) {
  41. $options[$case->value] = $case->label();
  42. }
  43. return $options;
  44. }
  45. public static function isValid(string $layout): bool
  46. {
  47. foreach (self::cases() as $case) {
  48. if ($case->value === $layout) {
  49. return true;
  50. }
  51. }
  52. return false;
  53. }
  54. }