@php /** * Card de filtro elegante e padronizado para listagens CMS. * * Colapsável sob demanda: exibe busca + botões sempre visíveis; * filtros avançados (período + campos customizados via slot) ficam * ocultos por padrão, expandidos via toggle. * * Uso básico: * @component('v2-cms::partials.filter-card', [ * 'searchPlaceholder' => 'Buscar por nome, e-mail ou CPF...', * 'searchValue' => request('search', ''), * 'action' => route('v2.module.cms.index'), * 'showDateRange' => true, * 'dateFrom' => request('date_from', ''), * 'dateTo' => request('date_to', ''), * ]) *
* *
* @endcomponent * * @param string $searchPlaceholder Placeholder do campo de busca * @param string|null $searchValue Valor atual da busca (default: request('search')) * @param string|null $action Action do form (default: url()->current()) * @param string $method Método HTTP (default: GET) * @param bool $showDateRange Exibe campos de período (date_from / date_to) * @param string|null $dateFrom Valor do campo date_from * @param string|null $dateTo Valor do campo date_to * @param bool $expandByDefault Inicia expandido (mostrando filtros avançados) * @param string|null $searchName Nome do campo de busca (default: 'search') */ $searchPlaceholder = $searchPlaceholder ?? 'Buscar por termo... (suporta regex)'; $searchValue = $searchValue ?? request('search', ''); $searchName = $searchName ?? 'search'; $action = $action ?? url()->current(); $method = $method ?? 'GET'; $showDateRange = $showDateRange ?? false; $dateFrom = $dateFrom ?? request('date_from', ''); $dateTo = $dateTo ?? request('date_to', ''); $expandByDefault = $expandByDefault ?? false; $hasAdvancedSlots = $slot !== ''; $hasAdvanced = $showDateRange || $hasAdvancedSlots; // Determina se deve iniciar expandido $hasActiveFilters = !empty($searchValue) || !empty($dateFrom) || !empty($dateTo); $showExpanded = $expandByDefault || $hasActiveFilters; $collapseId = 'filter-advanced-' . md5($action . $searchName); @endphp
@push('js') @endpush