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

ConfigureCompanyDefault.php 2.4KB

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