{{-- Faceted filter sidebar (ТЗ §19). GET form: checkboxes for select/multiselect, two number inputs for a range. Submitting reloads with ?f[...] applied. Оформление — по UI-kit редизайна: панель с хайрлайном, чекбоксы 16px, поля 36px, длинный список значений сворачивается после шести. --}} @php($hasFilters = ! empty($selected) || ! empty($price)) @php($rub = fn ($v) => $v !== null ? number_format((float) $v, 0, '.', ' ') : null) @php($collapseAfter = 6)
{{-- Preserve the current sort across a filter submit. --}} @if (($sort ?? 'default') !== 'default') @endif
Фильтры @if ($hasFilters) Сбросить @endif
{{-- Цена — первой: ей пользуются чаще любой характеристики. Подсказки в полях — цены «от» и «до» по всему разделу. --}}
Цена, ₽
—
@foreach ($facets as $facet)
{{ $facet['name'] }}@if ($facet['unit']), {{ $facet['unit'] }}@endif
@if ($facet['type'] === 'number')
—
@else {{-- Отмеченные значения держим видимыми и в свёрнутом списке — иначе выбранный фильтр прячется, и его не снять. --}} @php($values = collect($facet['values']))
@foreach ($values as $i => $value) @php($hidden = $i >= $collapseAfter && ! $value['selected']) @endforeach @php($hiddenCount = $values->slice($collapseAfter)->reject(fn ($v) => $v['selected'])->count()) @if ($hiddenCount > 0) @endif
@endif
@endforeach