<form class="performance-filter-form">

    <div class="container-fluid">
        <div class="row my-2">
            <div class="col-12 col-md-4 px-1 ps-md-2 pe-md-3">
                <div class="d-grid gap-2">
                    <label id="label-date" aria-labels="section-date">
                        Date
                    </label>
                </div>
                <div id="section-date" class="container-fluid">
                    <div class="row my-2">
                        <div class="col-6 border-end border-secondary border-2 pb-2">
                            <label for="date" class="form-label">From</label>
                            <input type="date" class="form-control" id="date" name="date" value="" size="60" maxlength="128" placeholder="">
                        </div>
                        <div class="col-6 pb-2">
                            <label for="date" class="form-label">To</label>
                            <input type="date" class="form-control" id="date" name="date" value="" size="60" maxlength="128" placeholder="">
                        </div>
                    </div>
                </div>
                <div class="d-grid gap-2">
                    <label id="label-time" aria-labels="section-time">
                        Time
                    </label>
                </div>
                <div id="section-time" class="container-fluid">
                    <div class="row my-2">
                        <div class="col-6 border-end border-secondary border-2 pb-2">
                            <label for="time" class="form-label">From</label>
                            <input type="time" class="form-control" id="time" name="time" value="" size="60" maxlength="128" placeholder="">
                        </div>
                        <div class="col-6 pb-2">
                            <label for="time" class="form-label">To</label>
                            <input type="time" class="form-control" id="time" name="time" value="" size="60" maxlength="128" placeholder="">
                        </div>
                    </div>
                </div>
            </div>

            <hr class="my-2 d-md-none">

            <div class="col-12 col-md-4 px-1 ps-md-3 pe-md-3 border-start border-secondary border-2 border-md-down-none">
                <div class="d-grid gap-2">
                    <label id="label-performance-location" class="filter-form__heading chevron chevron-down" data-bs-toggle="collapse" data-bs-target="#section-performance-location" aria-expanded="false" aria-controls="section-performance-location">
                        Location
                    </label>
                </div>
                <div id="section-performance-location" class="my-2 collapse d-md-block" aria-labelledby="label-performance-location">
                    <div id="edit-type" class="form-boolean-group form-checkboxes"><input type="checkbox" class="btn-check" id="location-edinburgh" name="location-edinburgh" value=""><label for="location-edinburgh" class=" btn btn-primary d-inline-block my-1 me-1">Edinburgh</label><input type="checkbox" class="btn-check" id="location-london" name="location-london" value=""><label for="location-london" class=" btn btn-primary d-inline-block my-1 me-1">London</label><input type="checkbox" class="btn-check" id="location-pleasance-courtyard" name="location-pleasance-courtyard" value=""><label for="location-pleasance-courtyard" class=" btn btn-primary d-inline-block my-1 me-1">Pleasance Courtyard</label><input type="checkbox" class="btn-check" id="location-main-house" name="location-main-house" value=""><label for="location-main-house" class=" btn btn-primary d-inline-block my-1 me-1">Main House</label></div>
                </div>
            </div>

            <hr class="my-2 d-md-none">

            <div class="col-12 col-md-4 d-flex flex-column justify-content-between border-start border-2 border-secondary border-md-down-none px-1 ps-md-3 pe-md-2">
                <div>
                    <p class="d-grid my-2">
                        <input type="checkbox" class="btn-check" id="checkbox-day-today" name="checkbox-day-today" value="">
                        <label for="checkbox-day-today" class=" btn btn-primary d-inline-block my-1 me-1">Today</label>
                        <input type="checkbox" class="btn-check" id="checkbox-day-tomorrow" name="checkbox-day-tomorrow" value="">
                        <label for="checkbox-day-tomorrow" class=" btn btn-primary d-inline-block my-1 me-1">Tomorrow</label>
                    </p>
                </div>
                <div>
                    <p class="d-grid gap-2 my-2">
                        <button type="submit" class="btn btn-apply chevron order-2" id="button" name="button">Apply filters</button>
                        <button type="submit" class="btn btn-primary order-1" id="button" name="button">Clear filters</button>
                    </p>
                </div>
            </div>
        </div>
    </div>

</form>
<form class="performance-filter-form">

  <div class="container-fluid">
    <div class="row my-2">
      <div class="col-12 col-md-4 px-1 ps-md-2 pe-md-3">
        <div class="d-grid gap-2">
          <label id="label-date" aria-labels="section-date">
            Date
          </label>
        </div>
        <div id="section-date" class="container-fluid">
          <div class="row my-2">
            <div class="col-6 border-end border-secondary border-2 pb-2">
              {% render "@input-date" with { "title": "From" } %}
            </div>
            <div class="col-6 pb-2">
              {% render "@input-date" with { "title": "To" } %}
            </div>
          </div>
        </div>
        <div class="d-grid gap-2">
          <label id="label-time" aria-labels="section-time">
            Time
          </label>
        </div>
        <div id="section-time" class="container-fluid">
          <div class="row my-2">
            <div class="col-6 border-end border-secondary border-2 pb-2">
              {% render "@input-time" with { "title": "From" } %}
            </div>
            <div class="col-6 pb-2">
              {% render "@input-time" with { "title": "To" } %}
            </div>
          </div>
        </div>
      </div>

      <hr class="my-2 d-md-none">

      <div class="col-12 col-md-4 px-1 ps-md-3 pe-md-3 border-start border-secondary border-2 border-md-down-none">
        <div class="d-grid gap-2">
          <label id="label-performance-location" class="filter-form__heading chevron chevron-down" data-bs-toggle="collapse" data-bs-target="#section-performance-location" aria-expanded="false" aria-controls="section-performance-location">
            Location
          </label>
        </div>
        <div id="section-performance-location" class="my-2 collapse d-md-block" aria-labelledby="label-performance-location">
          {% apply spaceless %}
          <div id="edit-type" class="form-boolean-group form-checkboxes">
            {% render "@input-checkbox" with { "id": "location-edinburgh", "toggle": true, "inline": true, "title": "Edinburgh" } %}
            {% render "@input-checkbox" with { "id": "location-london", "toggle": true, "inline": true, "title": "London" } %}
            {% render "@input-checkbox" with { "id": "location-pleasance-courtyard", "toggle": true, "inline": true, "title": "Pleasance Courtyard" } %}
            {% render "@input-checkbox" with { "id": "location-main-house", "toggle": true, "inline": true, "title": "Main House" } %}
          </div>
          {% endapply %}
        </div>
      </div>

      <hr class="my-2 d-md-none">

      <div class="col-12 col-md-4 d-flex flex-column justify-content-between border-start border-2 border-secondary border-md-down-none px-1 ps-md-3 pe-md-2">
        <div>
          <p class="d-grid my-2">
            {% render '@input-checkbox' with { "id": "checkbox-day-today", "title": "Today", "toggle": true, 'checked': true}%}
            {% render '@input-checkbox' with { "id": "checkbox-day-tomorrow", "title": "Tomorrow", "toggle": true }%}
          </p>
        </div>
        <div>
          <p class="d-grid gap-2 my-2">
            <button type="submit" class="btn btn-apply chevron order-2" id="button" name="button">Apply filters</button>
            <button type="submit" class="btn btn-primary order-1" id="button" name="button">Clear filters</button>
          </p>
        </div>
      </div>
    </div>
  </div>

</form>
/* No context defined. */
  • Content:
    export const performanceFilterForm = (form) => {
      updateStatus(form);
    
      const toggles = form.querySelectorAll('input.btn-check');
    
      toggles.forEach((element) => {
        element.addEventListener('change', (event, ) => {
          updateStatus(form, event.target);
        });
      });
    }
    
    const updateStatus = (form, targetElement) => {
      const today = form.querySelector('input#checkbox-day-today');
      const tomorrow = form.querySelector('input#checkbox-day-tomorrow');
    
      if (targetElement) {
        if ((targetElement == tomorrow) && today.checked) {
          today.checked = false;
        }
    
        if ((targetElement == today) && tomorrow.checked) {
          tomorrow.checked = false;
        }
      }
    
      const dateElements = form.querySelectorAll('input[type=date], input[type=time]');
    
      let dateElementStatus = (today.checked || tomorrow.checked);
    
      toggleDateElements(dateElements, dateElementStatus);
    }
    
    const toggleDateElements = (dateElements, status) => {
      dateElements.forEach((element, key, parent) => {
        element.readOnly = status;
      });
    }
  • URL: /components/raw/performance-filter-form/performance-filter-form.js
  • Filesystem Path: src/components/02-structures/filter/performance-filter-form/performance-filter-form.js
  • Size: 1 KB

No notes defined.