Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

ConfigureCompanyDefault.php 2.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace App\Listeners;
  3. use App\Enums\Font;
  4. use App\Enums\MaxContentWidth;
  5. use App\Enums\ModalWidth;
  6. use App\Enums\PrimaryColor;
  7. use App\Enums\RecordsPerPage;
  8. use App\Enums\TableSortDirection;
  9. use App\Models\Company;
  10. use Filament\Actions\Action;
  11. use Filament\Actions\MountableAction;
  12. use Filament\Events\TenantSet;
  13. use Filament\Facades\Filament;
  14. use Filament\Support\Facades\FilamentColor;
  15. use Filament\Tables\Table;
  16. class ConfigureCompanyDefault
  17. {
  18. /**
  19. * Handle the event.
  20. */
  21. public function handle(TenantSet $event): void
  22. {
  23. /** @var Company $company */
  24. $company = $event->getTenant();
  25. $paginationPageOptions = RecordsPerPage::caseValues();
  26. $defaultPaginationPageOption = $company->appearance->records_per_page->value ?? RecordsPerPage::DEFAULT;
  27. $defaultSort = $company->appearance->table_sort_direction->value ?? TableSortDirection::DEFAULT;
  28. $stripedTables = $company->appearance->is_table_striped ?? false;
  29. $defaultPrimaryColor = $company->appearance->primary_color ?? PrimaryColor::from(PrimaryColor::DEFAULT);
  30. $modalWidth = $company->appearance->modal_width->value ?? ModalWidth::DEFAULT;
  31. $maxContentWidth = $company->appearance->max_content_width->value ?? MaxContentWidth::DEFAULT;
  32. $defaultFont = $company->appearance->font->value ?? Font::DEFAULT;
  33. $hasTopNavigation = $company->appearance->has_top_navigation ?? false;
  34. Table::configureUsing(static function (Table $table) use ($paginationPageOptions, $defaultSort, $stripedTables, $defaultPaginationPageOption): void {
  35. $table
  36. ->paginationPageOptions($paginationPageOptions)
  37. ->defaultSort(column: 'id', direction: $defaultSort)
  38. ->striped($stripedTables)
  39. ->defaultPaginationPageOption($defaultPaginationPageOption);
  40. }, isImportant: true);
  41. MountableAction::configureUsing(static function (MountableAction $action) use ($modalWidth): void {
  42. $action->modalWidth($modalWidth);
  43. }, isImportant: true);
  44. $defaultColor = FilamentColor::register([
  45. 'primary' => $defaultPrimaryColor->getColor(),
  46. ]);
  47. FilamentColor::swap($defaultColor);
  48. Filament::getDefaultPanel()
  49. ->font($defaultFont)
  50. ->brandName($company->name)
  51. ->topNavigation($hasTopNavigation)
  52. ->maxContentWidth($maxContentWidth);
  53. }
  54. }