Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

Companies.php 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace App\Filament\Pages\Widgets\Companies\Tables;
  3. use App\Models\Company;
  4. use Closure;
  5. use Exception;
  6. use Filament\Tables;
  7. use Filament\Widgets\TableWidget as PageWidget;
  8. use Illuminate\Contracts\Support\Htmlable;
  9. use Illuminate\Database\Eloquent\Builder;
  10. use Illuminate\Database\Eloquent\Relations\Relation;
  11. class Companies extends PageWidget
  12. {
  13. protected int | string | array $columnSpan = 'full';
  14. protected static ?int $sort = 3;
  15. protected function getTableQuery(): Builder|Relation
  16. {
  17. return Company::query();
  18. }
  19. protected function getTableHeading(): string|Htmlable|Closure|null
  20. {
  21. return null;
  22. }
  23. /**
  24. * @throws Exception
  25. */
  26. protected function getTableFilters(): array
  27. {
  28. return [
  29. Tables\Filters\SelectFilter::make('name')
  30. ->label('Owner')
  31. ->searchable()
  32. ->relationship('owner', 'name'),
  33. Tables\Filters\TernaryFilter::make('personal_company')
  34. ->label('Personal Company')
  35. ];
  36. }
  37. protected function getTableColumns(): array
  38. {
  39. return [
  40. Tables\Columns\ViewColumn::make('owner.name')
  41. ->view('filament.components.companies.avatar-column')
  42. ->label('Owner')
  43. ->sortable()
  44. ->searchable()
  45. ->grow(false),
  46. Tables\Columns\TextColumn::make('name')
  47. ->label('Company')
  48. ->sortable()
  49. ->searchable(),
  50. Tables\Columns\TextColumn::make('users_count')
  51. ->label('Employees')
  52. ->counts('users')
  53. ->sortable(),
  54. Tables\Columns\IconColumn::make('personal_company')
  55. ->label('Personal Company')
  56. ->boolean()
  57. ->sortable()
  58. ->trueIcon('heroicon-o-badge-check')
  59. ->falseIcon('heroicon-o-x-circle')
  60. ->trueColor('primary')
  61. ->falseColor('secondary')
  62. ];
  63. }
  64. }