templates/public/events/_filters.html.twig line 1
<aside class="filters-panel"><div class="filters-panel__header"><h3>Búsqueda</h3></div><form method="get" class="filters-form"><input type="hidden" name="view" value="{{ view|default('list') }}"><div class="filter-field filter-field--text"><label class="filter-label" for="filter-query">Nombre del curso</label><input class="filter-control filter-control--text" id="filter-query" type="text" name="q" value="{{ search }}"></div><div class="filter-field filter-field--select"><label class="filter-label" for="filter-modalidad">Modalidad</label><select class="filter-control filter-control--select" id="filter-modalidad" name="modalidad"><option value="">Todas</option>{% for m in modalidades %}<option value="{{ m.id }}"{{ modalidad and modalidad.id == m.id ? 'selected' : '' }}>{{ m.label }}</option>{% endfor %}</select></div><div class="filter-field filter-field--select"><label class="filter-label" for="filter-area-tematica">Área Temática</label><select class="filter-control filter-control--select" id="filter-area-tematica" name="areaTematica"><option value="">Todas</option>{% for a in areasTematicas %}<option value="{{ a.id }}"{{ areaTematica and areaTematica.id == a.id ? 'selected' : '' }}>{{ a.label }}</option>{% endfor %}</select></div><div class="filter-field filter-field--text"><label class="filter-label" for="filter-code">Código</label><input class="filter-control filter-control--text" id="filter-code" type="text" name="code" value="{{ code }}"></div><div class="filter-field filter-field--dates"><label class="filter-label" for="filter-start-from">Fecha de inicio</label><div class="double-field"><input class="filter-control filter-control--date" id="filter-start-from" type="date" name="start_from" value="{{ start_from }}" aria-label="Fecha de inicio desde"><input class="filter-control filter-control--date" id="filter-start-to" type="date" name="start_to" value="{{ start_to }}" aria-label="Fecha de inicio hasta"></div></div><div class="filter-field filter-field--range"><label class="filter-label" for="rangeMin">Duración (horas)</label><div class="range-values"><span id="minVal"></span><span>–</span><span id="maxVal"></span></div><div class="range-slider"><div class="range-track"></div><input type="range"id="rangeMin"name="durationFrom"min="{{ hoursRange.minHours }}"max="{{ hoursRange.maxHours }}"value="{{ app.request.get('durationFrom') ?? hoursRange.minHours }}"aria-label="Duración mínima"><input type="range"id="rangeMax"name="durationTo"min="{{ hoursRange.minHours }}"max="{{ hoursRange.maxHours }}"value="{{ app.request.get('durationTo') ?? hoursRange.maxHours }}"aria-label="Duración máxima"></div></div><div class="filter-field filter-field--checkbox"><div class="checkbox-filter"><input class="filter-checkbox"id="filter-open-inscription"type="checkbox"name="open_inscription"value="1"{{ app.request.get('open_inscription') ? 'checked' : '' }}><label class="checkbox-filter__text" for="filter-open-inscription">Solo cursos con inscripción abierta</label></div></div><div class="filter-buttons filter-actions"><button type="submit" class="btn-apply filter-button filter-button--primary">Buscar</button><a href="{{ path('public_events') }}" class="btn-clear filter-button filter-button--secondary">Limpiar</a></div></form></aside><script>const rangeMin = document.getElementById("rangeMin");const rangeMax = document.getElementById("rangeMax");const rangeTrack = document.querySelector(".range-track");const minVal = document.getElementById("minVal");const maxVal = document.getElementById("maxVal");const minGap = 0;const sliderMin = parseInt(rangeMin.min);const sliderMax = parseInt(rangeMin.max);function updateRange() {let minValue = parseInt(rangeMin.value);let maxValue = parseInt(rangeMax.value);if (maxValue - minValue <= minGap) {if (event?.target === rangeMin) {rangeMin.value = maxValue - minGap;minValue = rangeMin.value;} else {rangeMax.value = minValue + minGap;maxValue = rangeMax.value;}}minVal.textContent = minValue + ' h';maxVal.textContent = maxValue + ' h';const percent1 = ((minValue - sliderMin) / (sliderMax - sliderMin)) * 100;const percent2 = ((maxValue - sliderMin) / (sliderMax - sliderMin)) * 100;rangeTrack.style.background =`linear-gradient(to right,#dbe3e9 ${percent1}%,var(--color-primary) ${percent1}%,var(--color-primary) ${percent2}%,#dbe3e9 ${percent2}%)`;}rangeMin.addEventListener("input", updateRange);rangeMax.addEventListener("input", updateRange);updateRange();</script>