@props([ 'title' => null, 'action' => null, 'active' => [], 'paginator' => null, 'advancedOpen' => false, ]) @php // `GET` é o único método: o filtro é URL compartilhável/recarregável e não muta nada. O alvo // (`action`) é a **rota** da tela — “limpar” volta para ela sem perder o caminho, e remover um // filtro preserva os demais parâmetros da query (inclusive ordenação/paginação futura). $target = $action ?? url()->current(); $query = request()->query(); unset($query['page']); $chips = []; foreach (is_array($active) ? $active : [] as $filter) { if (! is_array($filter) || ! isset($filter['key'], $filter['label'])) { continue; } $rest = $query; unset($rest[$filter['key']]); $chips[] = [ 'label' => (string) $filter['label'], 'value' => (string) ($filter['value'] ?? ''), 'url' => (string) ($filter['url'] ?? ($target.($rest === [] ? '' : '?'.http_build_query($rest)))), ]; } $total = is_object($paginator) ? (int) $paginator->total() : 0; $from = $total > 0 ? (int) ($paginator->firstItem() ?? 0) : 0; $to = $total > 0 ? (int) ($paginator->lastItem() ?? 0) : 0; $lastPage = is_object($paginator) ? (int) $paginator->lastPage() : 1; $currentPage = is_object($paginator) ? (int) $paginator->currentPage() : 1; @endphp