43 lines
1.0 KiB
PHP
43 lines
1.0 KiB
PHP
<?php
|
|
|
|
namespace App\View\Components;
|
|
|
|
use App\Models\Category;
|
|
use App\Models\Language;
|
|
use Closure;
|
|
use Illuminate\Contracts\View\View;
|
|
use Illuminate\View\Component;
|
|
|
|
class CategorySelector extends Component
|
|
{
|
|
|
|
public $categories;
|
|
|
|
/**f
|
|
* Create a new component instance.
|
|
*/
|
|
public function __construct(
|
|
public string $section,
|
|
public array $selected = [],
|
|
public bool $required = true,
|
|
public bool $news = false
|
|
)
|
|
{
|
|
$this->categories = Category::query()
|
|
->where(function ($query) {
|
|
$query->whereJsonContains('restricted_to', $this->section)
|
|
->orWhereNull('restricted_to');
|
|
})
|
|
->orderBy('name')
|
|
->get();
|
|
}
|
|
|
|
/**
|
|
* Get the view / contents that represent the component.
|
|
*/
|
|
public function render(): View|Closure|string
|
|
{
|
|
return $this->news === true ? view('components.news-category-selector' ) : view('components.category-selector');
|
|
}
|
|
}
|